import requests, sys import xml.dom.minidom def get_protein_location(accession=None, gene=None, protein=None, organism=None): requestURL = 'https://www.ebi.ac.uk/proteins/api/proteins?offset=0&size=-1' if (accession is not None): requestURL = f'{requestURL}&accession={accession}' else: if (gene is not None): requestURL = f'{requestURL}&gene={gene}' elif (protein is not None): requestURL = f'{requestURL}&protein={protein}' else: raise ValueError('Either accession, gene, or protein must be specified in the search parameters') if organism is not None: requestURL = f'{requestURL}&organism={organism}' r = requests.get(requestURL, headers={"Accept": "application/xml"}) if not r.ok: r.raise_for_status() sys.exit() xml_doc = xml.dom.minidom.parseString(r.text) packages = xml_doc.getElementsByTagName('subcellularLocation') locations = [] for package in packages: locations.append(package.getElementsByTagName('location')[0].childNodes[0].data) return list(set(locations)) #def is_transcription_factor(accession=None, gene=None, protein=None, organism=None):