docs: def parse(self, limit=None):
          """
          Override Source.parse()
          Args:
              :param limit (int, optional) limit the number of rows processed
          Returns:
              :return None
          """
          if limit is not None:
              LOG.info("Only parsing first %d rows", limit)
  
          protein_paths = self._get_file_paths(self.tax_ids, 'protein_links')
          col = ['NCBI taxid', 'entrez', 'STRING']
          for taxon in protein_paths:
              ensembl = Ensembl(self.graph_type, self.are_bnodes_skized)
              string_file_path = '/'.join((
                  self.rawdir, protein_paths[taxon]['file']))
  
              with gzip.open(string_file_path, 'rb') as reader:
                  dataframe = pd.read_csv(reader, sep=r'\s+')
              p2gene_map = dict()
  
              if taxon in self.id_map_files:
                  LOG.info("Using string provided id_map files")
                  map_file = '/'.join((self.rawdir, self.id_map_files[taxon]['file']))
  
                  with gzip.open(map_file, 'rt') as reader:
                      line = next(reader).strip()
                      if line != '# NCBI taxid / entrez / STRING':
                          LOG.error(
                              'Expected Headers:\t%s\nRecived Headers:\t%s\n', col, line)
                          exit(-1)
  
                      for line in reader.readlines():
                          row = line.rstrip('\n').split('\t')
                          # tax = row[col.index(''NCBI taxid')].strip()
                          gene = row[col.index('entrez')].strip()
                          prot = row[col.index('STRING')].strip()
  
                          genes = gene.split('|')
                          p2gene_map[prot.replace(taxon + '.', '')] = [
                              "NCBIGene:" + entrez_id for entrez_id in genes]
              else:
                  LOG.info("Fetching ensembl proteins for taxon %s", taxon)
                  p2gene_map = ensembl.fetch_protein_gene_map(taxon)
                  for key in p2gene_map:
                      for phen, gene in enumerate(p2gene_map[key]):
                          p2gene_map[key][phen] = "ENSEMBL:{}".format(gene)
  
              LOG.info(
                  "Finished fetching ENSP ID mappings, fetched %i proteins",
                  len(p2gene_map))
  
              LOG.info(
                  "Fetching protein protein interactions for taxon %s", taxon)
  
              self._process_protein_links(dataframe, p2gene_map, taxon, limit)