code: def read_tsv(self):
          
          logging.info('Parsing MOB-recon outputs')
          for sample in self.metadata:
              if os.path.isfile(sample[self.analysistype].contig_report):
                  # Read in the .tsv file with pandas. Skip the comment lines
                  df = pd.read_csv(sample[self.analysistype].contig_report, delimiter='\t')
                  for header in df:
                      # Remove any unwanted whitespace
                      clean_header = header.lstrip().rstrip()
                      # primary_key is the primary key, and value is the value of the cell for that key + header combo
                      for primary_key, value in df[header].items():
                          # Update the dictionary with the new data
                          try:
                              sample[self.analysistype].report_dict[primary_key].update({clean_header: value})
                          # Create the nested dictionary if it hasn't been created yet
                          except KeyError:
                              sample[self.analysistype].report_dict[primary_key] = dict()
                              sample[self.analysistype].report_dict[primary_key].update({clean_header: value})
docs: Read in the .tsv contig report file with pandas, and create a dictionary of all the headers: values