code: def parse_qaml(self):
          
          logging.info('Parsing GenomeQAML outputs')
          # A dictionary to store the parsed excel file in a more readable format
          nesteddictionary = dict()
          # Use pandas to read in the CSV file, and convert the pandas data frame to a dictionary (.to_dict())
          dictionary = pandas.read_csv(self.qaml_report).to_dict()
          # Iterate through the dictionary - each header from the CSV file
          for header in dictionary:
              # Sample is the primary key, and value is the value of the cell for that primary key + header combination
              for sample, value in dictionary[header].items():
                  # Update the dictionary with the new data
                  try:
                      nesteddictionary[sample].update({header: value})
                  # Create the nested dictionary if it hasn't been created yet
                  except KeyError:
                      nesteddictionary[sample] = dict()
                      nesteddictionary[sample].update({header: value})
          # Get the results into the metadata object
          for sample in self.metadata:
              # Initialise the plasmid extractor genobject
              setattr(sample, self.analysistype, GenObject())
              # Initialise the list of all plasmids
              sample[self.analysistype].prediction = str()
              # Iterate through the dictionary of results
              for line in nesteddictionary:
                  # Extract the sample name from the dictionary
                  name = nesteddictionary[line]['Sample']
                  # Ensure that the names match
                  if name == sample.name:
                      # Append the plasmid name extracted from the dictionary to the list of plasmids
                      sample[self.analysistype].prediction = nesteddictionary[line]['Predicted_Class']
docs: Parse the GenomeQAML report, and populate metadata objects