class_docstr: This is the QT Gui that can be used to manipulate
  the meta data in the Embedding Gui
  
  Assumes layout of the meta-data csv has an id followed
  by pairs of label + color columns
  
  id label0 color0 label1 color1 --- labelN colorN
  .  ...    ...    ...    ...    --- ...    ...
  .  ...    ...    ...    ...    --- ...    ...
docstr: View a composite image based
  on a subselection of the data
docstr_tok: ["View","a","composite","image","based","on","a","subselection","of","the","data"]
code: def __init__(self):
      """View a composite image based
      on a subselection of the data
      """
      super(MetaDataViewer, self).__init__()
      self.class_combo = QComboBox(self)
      main_layout = QVBoxLayout()
      form_layout = QFormLayout()
      form_layout.addRow(QLabel("Class:"), self.class_combo)
      self.meta_table = QTableWidget(self)
      self.meta_table.itemSelectionChanged.connect(
          self.on_change_select
      )
      main_layout.addLayout(form_layout)
      main_layout.addWidget(self.meta_table, 6)
      self.setLayout(main_layout)
      self.headers = None
      self.class_combo.currentIndexChanged[int].connect(self.on_class)
      self.meta_path = None
      self.label_series = None
      self.color_series = None
      self.labels = None
      self.string_labels = None
      self.on_color_change = None
      self.on_select = None
      self.dframe = None
  
file_path: nptsne/demos/ExtendedHSNEDemo/MetaDataViewer.py
imports: import pandas
  from PyQt5.QtWidgets import QWidget, QFormLayout, QVBoxLayout, QComboBox, QLabel, QTableWidget, QTableWidgetItem, QAbstractItemView, QHeaderView
  from PyQt5.QtCore import pyqtSlot
  from PyQt5.QtGui import QColor
label_desc: Use image node_id 1 to create a new MetaDataViewer object from inherited base classes: QWidget with example: obj = MetaDataViewer()