#!/usr/bin/env python# -*- coding: utf-8 -*-## This file is part of the `pypath` python module## Copyright 2014-2023# EMBL, EMBL-EBI, Uniklinik RWTH Aachen, Heidelberg University## Authors: see the file `README.rst`# Contact: Dénes Türei (turei.denes@gmail.com)## Distributed under the GPLv3 License.# See accompanying file LICENSE.txt or copy at# https://www.gnu.org/licenses/gpl-3.0.html## Website: https://pypath.omnipathdb.org/#fromfuture.utilsimportiteritemsimportreimportbs4importpypath.utils.taxonomyastaxonomyimportpypath.share.curlascurlimportpypath.resources.urlsasurls
[docs]defdbptm_enzyme_substrate(organism=9606):""" Downloads enzyme-substrate interactions from dbPTM. Returns list of dicts. """iforganismisNone:_organism=Noneeliforganismintaxonomy.dbptm_taxids:_organism=taxonomy.dbptm_taxids[organism]else:sys.stdout.write('\t:: Unknown organism: `%u`.\n'%organism)return[]url=urls.urls['dbptm']['old_table']c=curl.Curl(url,silent=False,large=True)data=[]hdr=next(c.result).strip().split('\t')forlinc.result:l=l.strip().split('\t')data.append(dict((key,(Noneifval==''elseval.split(';')ifkeyin{'references','kinase'}elseint(val)ifval.isdigit()elseval))forkey,valinzip(hdr,l)))returndata
[docs]defdbptm_enzyme_substrate_old(organism=9606):""" Downloads enzyme-substrate interactions from dbPTM. Returns list of dicts. """iforganismisNone:_organism=Noneeliforganismintaxonomy.dbptm_taxids:_organism=taxonomy.dbptm_taxids[organism]else:sys.stdout.write('\t:: Unknown organism: `%u`.\n'%organism)return[]result=[]byre=re.compile(r'.*by\s([A-Za-z0-9\s]+)\.*')andre=re.compile(r',|and')non_digit=re.compile(r'[^\d.-]+')forurlinurls.urls['dbptm']['urls']:c=curl.Curl(url,silent=False)extra=c.resultfork,datainiteritems(extra):data=[x.split('\t')forxindata.split('\n')]forlindata:iflen(l)>8:if_organism:mnemonic=l[0].split('_')[1].strip()ifmnemonic!=_organism:continueresnum=int(non_digit.sub('',l[2]))ptm=({'substrate':l[1],'typ':l[7].lower(),'resaa':l[8][6],'resnum':resnum,'instance':l[8].strip(),'references':l[4].split(';'),'databases':(l[5].split()[0],),'kinase':Noneifbyre.match(l[3])isNoneelse[i.strip()foriinandre.split(byre.match(l[3]).groups(1)[0])],'start':resnum-6,'end':resnum+6,})ifptm['kinase']isnotNone:if'autocatalysis'inptm['kinase']:ptm['kinase'].append(ptm['substrate'])ptm['kinase'].remove('autocatalysis')ptm['kinase']=[k.replace('host','').strip()forkinptm['kinase']]ptm['kinase']=[kforkinptm['kinase']iflen(k)>0]iflen(ptm['kinase'])==0:ptm['kinase']=Noneresult.append(ptm)returnresult