docs: def _process_phendesc(self, limit):
          """
          The description of the resulting phenotypes
          with the genotype+environment
  
          :param limit:
          :return:
          """
          if self.test_mode:
              graph = self.testgraph
          else:
              graph = self.graph
          model = Model(graph)
          raw = '/'.join((self.rawdir, 'phendesc'))
          LOG.info("processing G2P")
  
          line_counter = 0
          with open(raw, 'r') as f:
              filereader = csv.reader(f, delimiter='\t', quotechar='\"')
              f.readline()  # read the header row; skip
              for line in filereader:
                  (
                      phendesc_id,
                      genotype_id,
                      environment_id,
                      description,
                      type_id,
                      pub_id) = line
                  # 1	2	1	Hemizygous males are wild type, homozygous males are sterile.	60466	209729
  
                  line_counter += 1
                  phendesc_key = phendesc_id
                  phendesc_id = self._makeInternalIdentifier('phendesc', phendesc_key)
  
                  # for now, just attach the description to the genotype
                  genotype_key = genotype_id
                  genotype_id = self.idhash['genotype'][genotype_key]
                  pub_key = pub_id
                  pub_id = self.idhash['publication'][pub_key]
  
                  environment_key = environment_id
                  environment_id = self.idhash['environment'][environment_key]
  
                  if self.test_mode and\
                          int(genotype_key) not in self.test_keys['genotype']:
                      continue
  
                  # TODO type id ==> ECO???
  
                  # just make associations with abnormal phenotype
                  # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                  # note this is not "abnormal phenotype" if that was what is wanted
                  # "phenotype": "FBcv:0001347" ~~>  "Phenotype": "UPHENO:0001001"
                  # but it is a near collision with an existing term
                  phenotype_id = self.localtt['phenotype']
                  assoc = G2PAssoc(graph, self.name, genotype_id, phenotype_id)
                  assoc.add_source(pub_id)
                  assoc.set_description(description)
                  assoc.set_environment(environment_id)
                  assoc.add_association_to_graph()
                  assoc_id = assoc.get_association_id()
                  model.addComment(assoc_id, phendesc_id)
  
                  if not self.test_mode and limit is not None and line_counter > limit:
                      break
  
          return