#!/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/#frompast.builtinsimportxrange,rangeimportreimportcollectionsimportbs4importpypath.share.curlascurlimportpypath.resources.urlsasurls
[docs]defelm_interactions():""" Downlods manually curated interactions from ELM. This is the gold standard set of ELM. """defnumber_or_none(value,typ=int):returntyp(value)ifvalue!='None'elseNone# UniProt ID with isoform e.g. O14754-1reupi=re.compile(r'([\w]{6,10})(?:-([0-9]{1,2}))?')retax=re.compile(r'"([0-9]+)"\([-:/,\.\[\]\(\)\w\s]+\)')ELMInteraction=collections.namedtuple('ELMInteraction',['motif_elm','domain_pfam','uniprot_motif','uniprot_domain','isoform_motif','isoform_domain','start_motif','end_motif','start_domain','end_domain','affinity_min','affinity_max','pubmeds','taxon_motif','taxon_domain',],)result=[]url=urls.urls['elm_int']['url']c=curl.Curl(url,silent=False,slow=True)data=c.resultdata=data.split('\n')deldata[0]forlindata:ifnotl:continuel=tuple(x.strip()forxinl.split('\t'))uniprot_mofif,isoform_motif=reupi.match(l[2]).groups()uniprot_domain,isoform_domain=reupi.match(l[3]).groups()result.append(ELMInteraction(motif_elm=l[0],domain_pfam=l[1],uniprot_motif=uniprot_mofif,uniprot_domain=uniprot_domain,isoform_motif=int(isoform_motif)ifisoform_motifelse1,isoform_domain=int(isoform_domain)ifisoform_domainelse1,start_motif=int(l[4]),end_motif=int(l[5]),start_domain=number_or_none(l[6]),end_domain=number_or_none(l[7]),affinity_min=number_or_none(l[8],float),affinity_max=number_or_none(l[9],float),pubmeds=tuple(map(int,l[10].split(',')))ifl[10]else(),taxon_motif=int(retax.match(l[11]).groups()[0]),taxon_domain=int(retax.match(l[12]).groups()[0]),))returnresult