#!/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]defphosphoelm_enzyme_substrate(organism=9606,ltp_only=True):""" Downloads kinase-substrate interactions from phosphoELM. Returns list of dicts. :param int organism: NCBI Taxonomy ID. :param bool ltp_only: Include only low-throughput interactions. """result=[]non_digit=re.compile(r'[^\d.-]+')iforganismisNone:_organism=Noneeliforganismintaxonomy.phosphoelm_taxids:_organism=taxonomy.phosphoelm_taxids[organism]else:sys.stdout.write('\t:: Unknown organism: `%u`.\n'%organism)return[]url=urls.urls['p_elm']['url']c=curl.Curl(url,silent=False)data=c.resultdata=[nford,niniteritems(data)ifd.startswith(urls.urls['p_elm']['psites'])]data=data[0]iflen(data)>0else''data=[l.split('\t')forlindata.split('\n')]kinases=phosphoelm_kinases()deldata[0]forlindata:if(len(l)==9and(l[7]==_organismor_organismisNone)and(notltp_onlyorl[6]=='LTP')):l[1]=1if'-'notinl[0]elseint(l[0].split('-')[1])l[0]=l[0].split('-')[0]dell[-1]iflen(l[5])>0andl[5]inkinases:kinase=kinases[l[5]]result.append({'instance':None,'isoform':l[1],'resaa':l[3],'resnum':int(non_digit.sub('',l[2])),'start':None,'end':None,'substrate':l[0],'kinase':kinase,'references':l[4].split(';'),'experiment':l[6],'organism':l[7]})returnresult