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 c'è 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 farcela.
La capacità di ottenere informazioni da tali servizi verrà unita in un componente aggiuntivo 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 aggiuntivi installino Python sulla loro macchina se non è necessario.
Passaggio 1: inviare un elenco di geni al servizio - Il codice Python è sotto
importa json
richieste di importazione
ENRICHR_URL = ' http://maayanlab.cloud/Enrichr/addList '
geni_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'
carico utile = {
'elenco': (Nessuno, geni_str),
'descrizione': (Nessuno, descrizione)
}
risposta = request.post(ENRICHR_URL, files=payload)
se non risposta.ok:
raise Exception('Errore durante l'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: ottieni un elenco di percorsi biologici che mostrano un arricchimento genetico dal servizio - Il codice Python è qui sotto:
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'
risposta = richieste.get( ENRICHR_URL + query_string % (user_list_id, gene_set_library) )
Se non risposta.ok:
aumentare Eccezione( "Errore durante il recupero dei risultati dell'arricchimento" )
data = json.loads(response.text)
stampa(dati)
Nell'esempio sopra - 3 cose dovrebbero idealmente accadere:
- (La richiesta HTTP dovrebbe scorrere 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 corretto, vecchio valore p, vecchio valore p corretto) ad esso associato
- Ogni file Json recuperato deve essere concatenato in una tabella JMP
Spero che ci sia qualcuno là fuori che cerca una piccola sfida ed è disposto a provarci.
Distinti saluti,
Sebastiano