Esta función permite obtener un DataFrame con las siguientes columnas:
1. Enfermedades de estudio: enfermedades para las que buscamos fármacos de
reposicionamiento.
2. Fármacos candidatos: medicamentos candidatos de reposicionamiento para la
patología situada en su misma fila, pero en la columna 1.
3. Enfermedades candidatas: patologías asociadas a los fármacos situados en
su misma fila, pero en la columna 2.
Datos de entrada:
1. df_combinado: DataFrame con las siguientes columnas: enfermedades, fármacos,
tratamiento, dc, dc_mean, dc_std, dc_zscore, targets en módulo (el DataFrame
que se obtiene como resultado en la función targets_modulo.
2. nombre_enf: nombre de la enfermedad.
3. arch: archivo que contiene las relaciones entre fármacos y las patologías que
tratan
"""
#Filtro los datos para generar dos nuevos dataframes, uno con los datos de los fármacos que se empleen como tratamiento de la enfermedad (identificada por su nombre según nombre_enf), y otro con los datos para el resto de fármacos.
#Calculo los valores correspondiente al primer cuartil y al mínimo de la separación de los fármacos empleados como tratamiento al módulo de la enfermedad
ifnombre_enf=="Demencia":#si la enfermedad es Demencia
#filtro los fármacos tratamiento con una cercanía mayor o igual a la separación mínima de los fármacos tratamiento, que además no presenten ninguna de sus proteínas diana en el módulo de la enfermedad, y con un z-score de la separación al módulo de la enfermedad menor o igual a -0.15 (lo que indica qye son fármacos significativamente próximos al módulo).
(farmacos_no_tratamiento["Target en módulo"]=="No")&
(farmacos_no_tratamiento["dc_zscore"]<=-0.15)]
else:#si la enfermedad no es Demencia
#filtro los fármacos tratamiento con una cercanía mayor o igual al primer cuartil de la separación de los fármacos tratamiento, que además no presenten ninguna de sus proteínas diana en el módulo de la enfermedad, y con un z-score de la separación al módulo de la enfermedad menor o igual a -0.15 (lo que indica qye son fármacos significativamente próximos al módulo).
Esta función genera un DataFrame compuesto por seis columnas:
1. Enfermedades de estudio: enfermedades para las que buscamos fármacos de
reposicionamiento.
2. Fármacos candidatos: medicamentos candidatos de reposicionamiento para la
patología situada en su misma fila, pero en la columna 1.
3. Enfermedades candidatas: patologías asociadas a los fármacos situados en
su misma fila, pero en la columna 2.
4. SPL proyectada enf-gen: Shortest Path Length en la red proyectada de
enfermedades relacionadas en función de genes patológicos entre las enfermedades
de la columna 1 y 3 situadas en la misma fila.
5. SPL proyectada enf-dru: Shortest Path Length en la red proyectada de
enfermedades relacionadas en función de fármacos entre las enfermedades
de la columna 1 y 3 situadas en la misma fila.
6. SPL proyectada enf-sym: Shortest Path Length en la red proyectada de
enfermedades relacionadas en función de síntomas entre las enfermedades
de la columna 1 y 3 situadas en la misma fila.
Datos de entrada:
1. spl_files: lista con el nombre de los archivos que contienen el SPL entre
todos los nodos de cada red (values).
2. id_enfermedades: código identificador de las enfermedades.
3. arch_candidatos: archivo que relaciona en cada fila la enfermedad neurológica de
estudio, un fármaco candidato de reposicionamiento y una de las enfermedades que tratan
dicho fármaco.
"""
spls_gen=[]#lista en la que añadiré el SPL en la red proyectada de enfermedades - genes
spls_dru=[]#lista en la que añadiré el SPL en la red proyectada de enfermedades - fármacos
spls_sym=[]#lista en la que añadiré el SPL en la red proyectada de enfermedades - síntomas
spl_enfermedad_gen,spl_enfermedad_dru,spl_enfermedad_sym=spl_files#asocio cada elemento de la lista spl_files a una variable
df_resultados=arch_candidatos.copy()#copio el DataFrame con la información sobre los fármacos candidatos de reposicionamiento (arch_candidatos)
fori,enfermedadinenumerate(arch_candidatos["Enfermedades de estudio"]):#para cada enfermedad neurológica de estudio
id_enfermedad=id_enfermedades[enfermedad]#obtengo su id en el diccionario de identificadores de enfermedades
fila_gen=spl_enfermedad_gen.columns.get_loc(id_enfermedad)#localizo el id en el archivo de fármacos candidatos
columna_gen=arch_candidatos["Enfermedades candidatas"][i]#obtengo la enfermedad tratada por dicho fármaco en su misma fila
ifcolumna_geninspl_enfermedad_gen.columns.tolist():#si dicha enfermedad forma parte d ela red proyectada de enfermedades y genes
spls_gen.append(spl_enfermedad_gen.loc[fila_gen,columna_gen])#aádo a la lista spl_gen el SPL entre la enfermedad neurológica estudiada y la enfermedad tratada por el fármaco candidato de reposicionamiento. Para ello, localizo el SPL en la fila de la enfermedad estudiada y la columna de la enfermedad tratada por el fármaco.
else:
spls_gen.append("Unknown")#si la enfermedad tratada no está en la red pruyectada, añado "unknown" a la lista spl_gen
#repito el proceso anterior para la red proyectada de enfermedades - fármacos
# Filtrar las filas que incluyen enfermedades tratadas por fármacos candidatos de reposicionamiento para la enfermedad neurológica nombre_enf que se conecten a nombre_enf en la red proyectada enf-genes.
# Filtrar las filas que incluyen enfermedades tratadas por fármacos candidatos de reposicionamiento para la enfermedad neurológica nombre_enf que se conecten a nombre_enf en la red proyectada enf-fármacos.
# Filtrar las filas que incluyen enfermedades tratadas por fármacos candidatos de reposicionamiento para la enfermedad neurológica nombre_enf que se conecten a nombre_enf en la red proyectada enf-síntomas.
#listas en la que añadiré el número de enfermedades tratadas por cada fármaco candidato que pueden conectarse a nombre_enf en cada red proyectada.
enf_gen_lista=[]#conexión con nombre_enf en red proyectada enfermedades-genes.
enf_dru_lista=[]#conexión con nombre_enf en red proyectada enfermedades-fármacos.
enf_sym_lista=[]#conexión con nombre_enf en red proyectada enfermedades-síntomas.
#listas en la que añadiré el número total de enfermedades tratadas por cada fármaco candidato que pueden conectarse a nombre_enf al menos en una de las redes proyectadas
total_enf=[]
forfarmacoinlist(lista_candidatos):# para cada fármaco de la lista de candidatos de reposicionamiento para nombre_enf
#cuento el número de enfermedades tratadas por uno de los fármacos candidatos que pueden conectarse a nombre_enf en cada red proyectada
#el número de enfermedades para cada fármaco en cada caso se corresponde con el número de líneas en el que aparece dicho fármaco en los DataFrames filtrados
enf_gen=len(filt_gen[filt_gen["Fármacos candidatos"]==farmaco])#conexión con nombre_enf en red proyectada enfermedades-genes.
enf_dru=len(filt_dru[filt_dru["Fármacos candidatos"]==farmaco])#conexión con nombre_enf en red proyectada enfermedades-fármacos.
enf_sym=len(filt_sym[filt_sym["Fármacos candidatos"]==farmaco])#conexión con nombre_enf en red proyectada enfermedades-síntomas.
enf_total=len(filt_enf[filt_enf["Fármacos candidatos"]==farmaco])#total de enfermedades asociadas al fármaco
# añado los resultados a las listas correspondientes para cada fármaco