class_docstr: Class that performs the reading of the csv_input and select the lines
  according to the subject id if available
class_docstr_tok: ["Class","that","performs","the","reading","of","the","csv_input","and","select","the","lines","according","to","the","subject","id","if","available"]
code: def __init__(self, names=None):
      self.names = names
      self._paths = None
      self._labels = None
      self._df = None
      self.label_names = None
      self.n_samples_per_id = None
      self.dims = None
      self.data_param = None
      self._dims = None
      self._indexable_output = {}
      self.file_list = None
      self.subject_ids = None
      self._shapes = {}
      self._input_sources = None
      self.df_by_task = {}
      self.valid_by_task = {}
      self.pad_by_task = {}
      self.dims_by_task = {}
      self.type_by_task = {}
      self._dtypes = {}
      self.task_param = None
      super(CSVReader, self).__init__(name="csv_reader")
  
imports: import random
  import numpy
  import pandas
  import tensorflow
  from tensorflow.python.data.util import nest
  from niftynet.layer.base_layer import Layer
  from niftynet.io.image_reader import param_to_dict
label_desc: Use image node_id 1 to create a new CSVReader object from inherited base classes: Layer with example: obj = CSVReader(names)