docs: def _interpret_hits(self, results_list, base_list):
          '''Sort reads that hit multiple HMMs to the databases to which they had
          the highest bit score. Return a dictionary containing HMMs as keys, and 
          number of hits as the values.
          
          This function is set up so that the read names could easily be returned
          instead of numbers, for future development of GraftM
          
          Parameters
          ----------
          results_list: list
              Iterable if SequenceSearchResult objects. e.g.
                  [SequenceSearchResult_1, SequenceSearchResult_2, ...]
          
          base_list: list
              Iterable of the basenames for each sequence file provided to graftM
              e.g.
                  [sample_1, sample_2, ...]
                  
          Returns
          -------
          dictionary:
              Contains samples as entries. The value for each sample is another 
              dictionary with HMM as the key, and number of hits as values:
                  {"sample_1":{HMM_1: 12
                               HMM_2: 35
                               HMM_3: 1258
                               ...}
                   ...
                  }
              
          '''
          logging.debug("Sorting reads into HMMs by bit score")
          
          run_results = {}
  
          ########################################################################
          ################## - Sort reads to best hit db - #######################
          for base, results in zip(base_list, results_list): # For each sample
              search_results = {}
              for search in results():
                  search_list = list(
                                     search.each([SequenceSearchResult.QUERY_ID_FIELD,
                                                  SequenceSearchResult.ALIGNMENT_BIT_SCORE,
                                                  SequenceSearchResult.HMM_NAME_FIELD])
                                     )
                  for hit in search_list:
                      if hit[0] in search_results:
                          if float(hit[1]) > search_results[hit[0]][1]:
                              search_results[hit[0]] = [float(hit[1]), hit[2]]
                      else:
                          search_results[hit[0]] = [float(hit[1]), hit[2]]
              run_results[base] = search_results
          
          ########################################################################
          ################## - Gather counts for each db - #######################
          db_count = {}
          for run in run_results.keys():
              run_count = {}
              for entry in run_results[run].values():
                  key = entry[1]
                  if key in run_count:
                      run_count[key] += 1
                  else:
                      run_count[key] = 1
              db_count[run] = run_count
          
          return db_count