Ciao,
Ho bisogno di aiuto / guida per convertire del codice Python da pubblicare e ottenere dati da un sito Web ( https://maayanlab.cloud/Enrichr/help#api ) progettato per determinare se esiste un arricchimento in un elenco di geni o in alcuni percorsi biologici. Non ho abbastanza familiarità con la sintassi necessaria per interagire con l'API REST utilizzando la "nuova richiesta HTTP" per eseguire questa operazione.
La possibilità di ottenere informazioni da tali servizi verrà incorporata in un addin progettato per eseguire alcune analisi di base dell'espressione genica. Sto cercando di evitare di dover fare affidamento su Python all'interno di JMP perché voglio evitare che gli utenti addin installino Python sulla loro macchina se non devono farlo.
Passaggio 1: inviare un elenco di geni al servizio - Il codice Python è di seguito
import json
richieste di importazione
ENRICHR_URL = ' http://maayanlab.cloud/Enrichr/addList '
genes_str = '\ n'.join ([
"PHF14", "RBM3", "MSL1", "PHF21A", "ARL10", "INSR", "JADE2", "P2RX7",
"LINC00662", "CCDC101", "PPM1B", "KANSL1L", "CRYZL1", "ANAPC16", "TMCC1",
"CDH8", "RBM11", "CNPY2", "HSPA1L", "CUL2", "PLBD2", "LARP7", "TECPR2",
"ZNF302", "CUX1", "MOB2", "CYTH2", "SEC22C", "EIF4E3", "ROBO2",
"ADAMTS9-AS2", "CXXC1", "LINC01314", "ATF7", "ATP5F1"
])
description = 'Esempio di elenco di geni'
payload = {
'list': (Nessuno, genes_str),
'descrizione': (Nessuno, descrizione)
}
risposta = richieste.post (ENRICHR_URL, file = carico utile)
se non risposta.ok:
raise Eccezione ('Errore nell'analisi dell'elenco dei geni')
data = json.loads (response.text)
stampa (dati)
Questo genererà un userListId che verrà utilizzato per recuperare i dati dall'analisi
Passaggio 2: ottenere un elenco di percorsi biologici che mostrano un certo arricchimento genico dal servizio - Il codice Python è di seguito:
importare json
importare richieste
ENRICHR_URL = ' http://maayanlab.cloud/Enrichr/enrich '
query_string = "? userListId =% s & backgroundType =% s"
user_list_id = 363320
gene_set_library = "KEGG_2015"
response = requests.get (ENRICHR_URL + query_string% (user_list_id, gene_set_library))
Se non response.ok:
aumentare Eccezione( "Errore durante il recupero dei risultati dell'arricchimento" )
data = json.loads (response.text)
stampa (dati)
Nell'esempio sopra, idealmente dovrebbero accadere 3 cose:
- (La richiesta HTTP dovrebbe essere in loop attraverso più librerie gene_set (gene_set_library = {"KEGG_2015", "Panther_2016", "WikiPathways_2016", "Reactome_2016"} // sono disponibili molte altre librerie)
- Il Json che viene recuperato non sembra essere facilmente analizzato e deve avere intestazioni ( Rango, nome del termine, valore P, punteggio Z, punteggio combinato, geni sovrapposti, valore p aggiustato, vecchio valore p, vecchio valore p aggiustato) associati ad esso
- Ogni file Json recuperato deve essere concatenato in una tabella JMP
Spero che ci sia qualcuno là fuori in cerca di una piccola sfida e disposto a provarci.
I migliori saluti,
Sebastien