docs: def _get_gene_history(self, limit):
          """
          Loops through the gene_history file and adds the old gene ids
          as deprecated classes, where the new gene id is the replacement for it.
          The old gene symbol is added as a synonym to the gene.
          :param limit:
          :return:
  
          """
          src_key = 'gene_history'
          if self.test_mode:
              graph = self.testgraph
          else:
              graph = self.graph
          model = Model(graph)
          LOG.info("Processing Gene records")
          line_counter = 0
          myfile = '/'.join((self.rawdir, self.files[src_key]['file']))
          LOG.info("FILE: %s", myfile)
          col = self.files[src_key]['columns']
          with gzip.open(myfile, 'rb') as tsv:
              row = tsv.readline().decode().strip().split('\t')
              row[0] = row[0][1:]  # strip comment
              if col != row:
                  LOG.info(
                      '%s\nExpected Headers:\t%s\nRecived Headers:\t %s\n',
                      src_key, col, row)
  
              for line in tsv:
                  # skip comments
                  row = line.decode().strip().split('\t')
                  if row[0][0] == '#':
                      continue
                  # (tax_num, gene_num, discontinued_num, discontinued_symbol,
                  # discontinued_date) = line.split('\t')
  
                  # set filter=None in init if you don't want to have a filter
                  # if self.id_filter is not None:
                  #     if ((self.id_filter == 'taxids' and \
                  #          (int(tax_num) not in self.tax_ids))
                  #             or (self.id_filter == 'geneids' and \
                  #                 (int(gene_num) not in self.gene_ids))):
                  #         continue
                  #  end filter
  
                  gene_num = row[col.index('GeneID')].strip()
                  discontinued_num = row[col.index('Discontinued_GeneID')].strip()
  
                  if gene_num == '-' or discontinued_num == '-':
                      continue
  
                  if self.test_mode and int(gene_num) not in self.gene_ids:
                      continue
  
                  tax_num = row[col.index('tax_id')].strip()
                  if not self.test_mode and tax_num not in self.tax_ids:
                      continue
  
                  line_counter += 1
                  gene_id = ':'.join(('NCBIGene', gene_num))
                  discontinued_gene_id = ':'.join(('NCBIGene', discontinued_num))
                  discontinued_symbol = row[col.index('Discontinued_Symbol')].strip()
                  # add the two genes
                  if self.class_or_indiv.get(gene_id) == 'C':
                      model.addClassToGraph(gene_id, None)
                      model.addClassToGraph(
                          discontinued_gene_id, discontinued_symbol)
  
                      # add the new gene id to replace the old gene id
                      model.addDeprecatedClass(discontinued_gene_id, [gene_id])
                  else:
                      model.addIndividualToGraph(gene_id, None)
                      model.addIndividualToGraph(
                          discontinued_gene_id, discontinued_symbol)
                      model.addDeprecatedIndividual(discontinued_gene_id, [gene_id])
  
                  # also add the old symbol as a synonym of the new gene
                  model.addSynonym(gene_id, discontinued_symbol)
  
                  if not self.test_mode and (limit is not None and line_counter > limit):
                      break
  
          return