Skip to main content
Glama
string_api.py7.9 kB
import requests class StringAPI: BASE_URL = "https://version-12-0.string-db.org/api" def __init__(self): self.session = requests.Session() def mapping_identifiers(self,identifiers,species,limit=1,echo_query=1,output_format = "json",caller_identity="lglab"): """Get STRING identifiers for list of genes""" method = "get_string_ids" params = { "identifiers" : "\r".join(identifiers), # your protein list "species" : species, # NCBI/STRING taxon identifier "limit" : limit, # only one (best) identifier per input protein "echo_query" : echo_query, # see your input identifiers in the output "caller_identity" : caller_identity # your app name } request_url = "/".join([self.BASE_URL, output_format, method]) results = self.session.post(request_url, data=params) # for line in results.text.strip().split("\n"): # l = line.split("\t") # input_identifier, string_identifier = l[0], l[2] # print("Input:", input_identifier, "STRING:", string_identifier, sep="\t") return results.text # def get_string_network_image(self, genes, species, output_format: str = "image", add_white_node=15,network_flavor="confidence",caller_identity="lglab"): # """Get network for list of genes""" # method = "network" # request_url = "/".join([self.BASE_URL, output_format, method]) # results = [] # for gene in genes: # params = { # "identifiers" : gene, # your protein # "species" : species, # NCBI/STRING taxon identifier # "add_white_nodes": add_white_node, # add 15 white nodes to my protein # "network_flavor": network_flavor, # show confidence links # "caller_identity" : caller_identity # your app name # } # result = self.session.post(request_url, params=params) # results.append(result.text) # return results # def link_to_network_on_string_webpage(self): # return None # def link_to_search_result_page(self): # return None def get_string_network_interaction(self,identifiers,species,required_score,add_nodes,network_type='functional',show_query_node_labels=0,output_format = "json",caller_identity="lglab"): method = "network" params = { "identifiers" : "%0d".join(identifiers), # your protein list "species" : species, # NCBI/STRING taxon identifier "required_score": required_score, "add_nodes":add_nodes, "network_type":network_type, "show_query_node_labels":show_query_node_labels, "caller_identity" : caller_identity # your app name } request_url = "/".join([self.BASE_URL, output_format, method]) results = self.session.post(request_url, data=params) return results.text def get_all_interaction_partners_of_the_protein_set(self,identifiers,species,limit,required_score,network_type='functional',output_format = "json",caller_identity="lglab"): method = "interaction_partners" params = { "identifiers" : "%0d".join(identifiers), # your protein list "species" : species, # NCBI/STRING taxon identifier "required_score": required_score, "limit":limit, "network_type":network_type, "caller_identity" : caller_identity # your app name } request_url = "/".join([self.BASE_URL, output_format, method]) results = self.session.post(request_url, data=params) return results.text def get_similarity_scores_of_the_protein_set(self,identifiers,species,output_format = "json",caller_identity="lglab"): method = "homology" params = { "identifiers" : "%0d".join(identifiers), # your protein list "species" : species, # NCBI/STRING taxon identifier "caller_identity" : caller_identity # your app name } request_url = "/".join([self.BASE_URL, output_format, method]) results = self.session.post(request_url, data=params) return results.text def get_best_similarity_hits_between_species(self,identifiers,species,species_b,output_format = "json",caller_identity="lglab"): method = "homology_best" params = { "identifiers" : "%0d".join(identifiers), # your protein list "species" : species, # NCBI/STRING taxon identifier "species_b": species_b, "caller_identity" : caller_identity # your app name } request_url = "/".join([self.BASE_URL, output_format, method]) results = self.session.post(request_url, data=params) return results.text def get_functional_enrichment(self,identifiers,background_string_identifiers,species,output_format = "json",caller_identity="lglab"): method = "enrichment" params = { "identifiers" : "%0d".join(identifiers), # your protein list "species" : species, # NCBI/STRING taxon identifier "background_string_identifiers": background_string_identifiers, "caller_identity" : caller_identity # your app name } request_url = "/".join([self.BASE_URL, output_format, method]) results = self.session.post(request_url, data=params) return results.text def get_functional_annotation(self,identifiers,species,allow_pubmed=0,only_pubmed=0,output_format = "json",caller_identity="lglab"): method = "functional_annotation" params = { "identifiers" : "%0d".join(identifiers), # your protein list "species" : species, # NCBI/STRING taxon identifier "allow_pubmed": allow_pubmed, "only_pubmed": only_pubmed, "caller_identity" : caller_identity # your app name } request_url = "/".join([self.BASE_URL, output_format, method]) results = self.session.post(request_url, data=params) return results.text # def get_enrichment_figure(self): # return None def get_ppi_enrichment(self, identifiers, species, output_format: str = "json", caller_identity="lglab",**kwargs): """Get protein-protein interaction enrichment for list of genes by their STRING identifiers""" request_url = "/".join([self.BASE_URL, output_format, "ppi_enrichment"]) params = { "identifiers" : "%0d".join(identifiers), # your proteins "species" : species, # NCBI/STRING taxon identifier "caller_identity" : caller_identity # your app name } return self.session.post(request_url, params=params).text # def valuesranks_enrichment_submit(self, data: Dict, api_key: str, output_format: str = "json"): # """Submit values/ranks enrichment analysis""" # request_url = "/".join([self.BASE_URL, output_format, "valuesranks_enrichment_submit"]) # params = {"api_key": api_key} # return self.session.post(request_url, params=params, json=data) # def valuesranks_enrichment_status(self, job_id: str, api_key: str, output_format: str = "json"): # """Check status of enrichment analysis""" # request_url = "/".join([self.BASE_URL, output_format, "valuesranks_enrichment_status"]) # params = {"api_key": api_key, "job_id": job_id} # return self.session.get(request_url, params=params) if __name__ == "__main__": # Initialize and run the server st = StringAPI() result = st.mapping_identifiers(genes=['DRD1','DRD2'],species=9606) print(result.text) result = st.get_ppi_enrichment(identifiers=['9606.ENSP00000377353','9606.ENSP00000354859'],species=9606) print(result.text)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/GENTEL-lab/OrigeneMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server