docs: def _process_feature_pub(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
  
          raw = '/'.join((self.rawdir, 'feature_pub'))
          LOG.info("processing feature_pub")
  
          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:
                  (feature_pub_id, feature_id, pub_id) = line
                  # 1440    3175682 62137
                  # 2       3160606 99159
  
                  feature_key = feature_id
                  if self.test_mode and not (
                          int(feature_key)
                          in self.test_keys['gene'] + self.test_keys['allele'] and
                          int(pub_id) in self.test_keys['pub']):
                      continue
                  if feature_key not in self.idhash['feature']:
                      continue
                  feature_id = self.idhash['feature'][feature_key]
                  pub_key = pub_id
                  pub_id = self.idhash['publication'][pub_key]
  
                  graph.addTriple(pub_id, self.globaltt['mentions'], feature_id)
  
                  line_counter += 1
  
                  if not self.test_mode and limit is not None and line_counter > limit:
                      break
  
          return