Hola,
Necesito ayuda / orientación para convertir un código de Python para publicar y obtener datos de un sitio web ( https://maayanlab.cloud/Enrichr/help#api ) diseñado para determinar si hay enriquecimiento en una lista de genes o en algunas vías biológicas. No estoy lo suficientemente familiarizado con la sintaxis necesaria para interactuar con la API REST usando la 'nueva solicitud HTTP' para lograr esto.
La capacidad de obtener información de esos servicios se fusionará en un complemento diseñado para realizar algunos análisis básicos de expresión génica. Estoy tratando de evitar tener que depender de Python dentro de JMP porque quiero evitar que los usuarios del complemento instalen Python en su máquina si no es necesario.
Paso 1: publicar una lista de genes en el servicio - El código de Python está debajo
importar json
solicitudes de importación
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 = 'Ejemplo de lista de genes'
payload = {
'lista': (Ninguno, genes_str),
'descripción': (Ninguno, descripción)
}
respuesta = solicitudes.post (ENRICHR_URL, archivos = carga útil)
si no respuesta, ok:
raise Exception ('Error al analizar la lista de genes')
datos = json.loads (texto de respuesta)
imprimir (datos)
Esto generará un userListId que se utilizará para recuperar los datos del análisis
Paso 2: obtenga una lista de vías biológicas que muestren algún enriquecimiento genético del servicio. El código de Python está a continuación:
importar json
importar peticiones
ENRICHR_URL = ' http://maayanlab.cloud/Enrichr/enrich '
query_string = '? userListId =% s & backgroundType =% s'
user_list_id = 363320
gene_set_library = 'KEGG_2015'
respuesta = solicitudes.get (ENRICHR_URL + query_string% (user_list_id, gene_set_library))
Si no respuesta.ok:
aumento Excepción( "Error al obtener resultados de enriquecimiento" )
datos = json.loads (texto de respuesta)
imprimir (datos)
En el ejemplo anterior, idealmente deberían suceder 3 cosas:
- (La solicitud HTTP debe recorrer varias bibliotecas de gene_set (gene_set_library = {"KEGG_2015", "Panther_2016", "WikiPathways_2016", "Reactome_2016"} // hay muchas más bibliotecas disponibles)
- El Json que se recupera no parece que se pueda analizar fácilmente y necesita tener encabezados ( Rango, nombre del término, valor p, puntaje Z, puntaje combinado, genes superpuestos, valor p ajustado, valor p antiguo, valor p antiguo ajustado) asociado con él
- Cada archivo Json recuperado debe concatenarse en una tabla JMP
Espero que haya alguien por ahí buscando un pequeño desafío y que esté dispuesto a intentarlo.
Atentamente,
Sébastien