#!/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/#fromtypingimportCollection,Dict,List,Optional,Unionimportglomimportpypath.share.sessionassessionimportpypath.share.commonascommonimportpypath.utils.taxonomyastaxonomyimportpypath.resources.urlsasurlsimportpypath.inputs.ebiasebiimportpypath.inputs.commonasinputs_common_logger=session.Logger(name='proteins_input')VARIATION_SOURCE_TYPES=('large scale study','mixed','uniprot',)VARIATION_DB_TYPES=('1000Genomes','ClinVar','cosmic curated','dbSNP','ESP','ExAC','gnomAD','NCI-TCGA','NCI-TCGA Cosmic','TOPMed','UniProt',)VARIATION_CONSEQUENCE_TYPES=('frameshift','inframe deletion','insertion','missense','stop gained','stop lost',)
[docs]defvariants(organism:Union[str,int]=9606,qs:Optional[Dict]=None,sourcetype:Optional[Union[str,List[str]]]=('uniprot','mixed'),disease:Optional[Union[str,List[str]]]=None,consequencetype:Optional[Union[str,List[str]]]=None,fields:Optional[inputs_common.GlomFields]=None,feature_fields:Optional[inputs_common.GlomFields]=None,)->List[tuple]:_logger._log('Retrieving variant data from from EBI Proteins.')ncbi_tax_id=taxonomy.ensure_ncbi_tax_id(organism)ifnotncbi_tax_id:msg='Failed to recognize organism `{}`.'.format(organism)_logger.log(msg)raiseValueError(msg)qs=qsor{}qs['taxid']=ncbi_tax_idqs=dict((k,','.join(v)ifisinstance(v,Collection)elsev)fork,vinqs.items())forparamin('sourcetype','consequencetype','disease'):value=locals()[param]ifvalue:value=common.to_list(value)qs[param]=','.join(value)url=urls.urls['proteins']['url']%'variation'_fields={'uniprot':'accession','features':('features',[{'type':'type','begin':('begin',int),'end':('end',int),'consequence':'consequenceType','wild_residue':'wildType','mutated_residue':(glom.Coalesce('mutatedType',default=None)),'somatic':('somaticStatus',bool),'evidence':'sourceType',}]),}fields=inputs_common.glom_fields(fields)_fields.update(fields)feature_fields=inputs_common.glom_fields(feature_fields)_fields['features'][1][0].update(feature_fields)result=ebi.ebi_rest(url=url,qs=qs,fields=_fields,page_param='offset',size_param='size',by_page=False,paginate=True,)_logger._log('Finished retrieving variant data from from EBI Proteins.')returnresult