docs: def _process_genes(self, limit=None):
          """
          This table provides the ZFIN gene id, the SO type of the gene,
          the gene symbol, and the NCBI Gene ID.
  
          Triples created:
          <gene id> a class
          <gene id> rdfs:label gene_symbol
          <gene id> equivalent class <ncbi_gene_id>
          :param limit:
          :return:
  
          """
  
          LOG.info("Processing genes")
          if self.test_mode:
              graph = self.testgraph
          else:
              graph = self.graph
          model = Model(graph)
          line_counter = 0
          raw = '/'.join((self.rawdir, self.files['gene']['file']))
          geno = Genotype(graph)
          with open(raw, 'r', encoding="iso-8859-1") as csvfile:
              filereader = csv.reader(csvfile, delimiter='\t', quotechar='\"')
              for row in filereader:
                  line_counter += 1
  
                  (gene_id, gene_so_id, gene_symbol, ncbi_gene_id
                   # , empty  # till next time
                  ) = row
  
                  if self.test_mode and gene_id not in self.test_ids['gene']:
                      continue
  
                  gene_id = 'ZFIN:' + gene_id.strip()
                  ncbi_gene_id = 'NCBIGene:' + ncbi_gene_id.strip()
  
                  self.id_label_map[gene_id] = gene_symbol
  
                  if not self.test_mode and limit is not None and line_counter > limit:
                      pass
                  else:
                      geno.addGene(gene_id, gene_symbol)
                      model.addEquivalentClass(gene_id, ncbi_gene_id)
  
          LOG.info("Done with genes")
          return