diff --git a/tool_of_mapping_results_treatments.py b/tool_of_mapping_results_treatments.py new file mode 100644 index 0000000000000000000000000000000000000000..ff8148bc1b0a31e9b5fc2bfc0f7149a3a6d06180 --- /dev/null +++ b/tool_of_mapping_results_treatments.py @@ -0,0 +1,194 @@ +#!/usr/bin/env python +# coding: utf-8 + +# # D'une liste de métabolites par pathways à un récupitulatif + +# On part donc d'un tableur récapitulatif présentant en premiére ligne le nom des différents pathways retenues aprés filtrage par p-value inférieur à 0.05. Sur chaque colonne le nom des différents métabolites mapper dans cette voie. +# L'objectifs est de furnir un récapitulatifs des données présentants dans un premier temps dans combien de voies différentes un même métabolites à mapper puis dans un seccond temps un le pourcentage de recouvrement entre 2 voie métaboliques différentes. + +# In[1]: + + +from random import randint +import numpy as np +import csv + + +# In[2]: + + +def colonne(file, n, sep=";"): + with open(file,"r") as f: + r=csv.reader(f, delimiter = sep) + lignes=list(r) # variable interne non utilisable + res=[] + if (n < len(lignes[0])) and (n >= -len(lignes[0])): + for l in lignes : + res.append(l[n]) + return res + + +# In[3]: + + +Pathways_a_enlever=['Metabolic pathways','Biosynthesis of secondary metabolites','Microbial metabolism in diverse environments','Carbon metabolism''2-Oxocarboxylic acid metabolism','Fatty acid metabolism','Biosynthesis of amino acids','Nucleotide metabolism','Biosynthesis of nucleotide sugars','Biosynthesis of cofactors','Degradation of aromatic compounds','Carbohydrate metabolism','Energy metabolism','Lipid metabolism','Nucleotide metabolism','Amino acid metabolism','Metabolism of other amino acids','Glycan biosynthesis and metabolism','Metabolism of cofactors and vitamins','Metabolism of terpenoids and polyketides','Biosynthesis of other secondary metabolites','Xenobiotics biodegradation and metabolism','Chemical structure transformation maps','Genetic Information Processing','Transcription','Translation','Folding, sorting and degradation','Replication and repair','Information processing in viruses','Environmental Information Processing','Membrane transport','Signal transduction','Signaling molecules and interaction','Cellular Processes','Transport and catabolism','Cell growth and death','Cellular community - eukaryotes','Cellular community - prokaryotes','Cell motility','Immune system','Organismal Systems','Endocrine system','Circulatory system','Digestive system','Excretory system','Nervous system','Sensory system','Development and regeneration','Aging','Environmental adaptation','Human Diseases','Cancer: overview''Cancer: specific types','Infectious disease: viral','Infectious disease: bacterial','Infectious disease: parasitic','Immune disease','Neurodegenerative disease','Substance dependence','Cardiovascular disease','Endocrine and metabolic disease','Drug resistance: antimicrobial','Drug resistance: antineoplastic','Drug Development','Chronology: Antiinfectives','Chronology: Antineoplastics','Chronology: Nervous system agents','Chronology: Other drugs','Target-based classification: G protein-coupled receptors','Target-based classification: Nuclear receptors','Target-based classification: Ion channels','Target-based classification: Transporters','Target-based classification: Enzymes','Structure-based classification','Skeleton-based classification'] +def noms_pathways (file, sep=";") : + with open(file,'r') as file_csv: + csv_reader = csv.reader(file_csv, delimiter = sep) + liste_nom_pathways=[] + + for column in csv_reader: + liste_nom_pathways.append(column) + a_filtrer=liste_nom_pathways[0] + + i_a_e=[] + p_retires=[] + for compteur in range (len(a_filtrer)): + if a_filtrer[compteur] in Pathways_a_enlever: + i_a_e.append(compteur) + p_retires.append(a_filtrer[compteur]) + + print(i_a_e) + print(p_retires) + + for retirer in p_retires : + print(retirer) + a_filtrer.remove(retirer) + return (a_filtrer,i_a_e) + + + +# In[4]: + + +def traitement_des_pathways (file,sep=";"): + Tout_les_pathways,i_e= noms_pathways(file, sep=";") + Noms_des_Pathways,i_e=noms_pathways(file, sep=";") + + Nombre_de_pathways_totale=len(Tout_les_pathways) # variable interne + + indice_reel=0 + for p in range (Nombre_de_pathways_totale+len(i_e)):# création d'une variables pour chaque pathways + + if (p in i_e): + print(indice_reel) + else: + print(indice_reel) + transitoire=colonne(file, p, sep=";") + Tout_les_pathways[indice_reel]=transitoire[1:len(transitoire)] + print(Tout_les_pathways[indice_reel]) + indice_reel+=1 + + for b in range (Nombre_de_pathways_totale): # on veut garder que les métabolites + for r in range (len(Tout_les_pathways[b])) : + if(Tout_les_pathways[b][r]==''): + indice=b + Tout_les_pathways[b]=Tout_les_pathways[b][0:r] + break + + + tableau_de_resemblance=np.zeros([Nombre_de_pathways_totale,Nombre_de_pathways_totale]) + + P1=[] + P2=[] + longeur_P1=0 + longeur_P2=0 + for l in range(Nombre_de_pathways_totale): + for c in range(Nombre_de_pathways_totale) : + if (l==c): + tableau_de_resemblance[l,c]=len(Tout_les_pathways[c]) + else : + commun=0 + P1=Tout_les_pathways[l] + P2=Tout_les_pathways[c] + longeur_P1=len(Tout_les_pathways[l]) + longeur_P2=len(Tout_les_pathways[c]) + for m in range (min(longeur_P1, longeur_P2)): + if (longeur_P1< longeur_P2): + metabolite_recherche=P1[m] + if (metabolite_recherche in P2): + commun+=1 + else : + metabolite_recherche=P2[m] + if (metabolite_recherche in P1): + commun+=1 + tableau_de_resemblance[l,c]=commun + + tableau_approximatif=[] + + for line in tableau_de_resemblance: + tableau_approximatif.append(' '.join(map(str, line))) + + tableau_approximatif=np.array(tableau_approximatif) + tableau_approximatif + + ensemble_des_metabolites=[] + nombre_de_metabolites=[] + for q in range (Nombre_de_pathways_totale): + Path=Tout_les_pathways[q] + for w in range (len(Path)): + if (Path[w] in ensemble_des_metabolites): + place=ensemble_des_metabolites.index(Path[w]) + nombre_de_metabolites[place]+=1 + else: + ensemble_des_metabolites.append(Path[w]) + nombre_de_metabolites.append(1) + + Pathways_de_chaque_metabolites=[] + for met in range (len(ensemble_des_metabolites)): + Pathways_de_ce_metabolite=[] + Le_metabolite=ensemble_des_metabolites[met] + Pathways_de_ce_metabolite.append(Le_metabolite) + for avance in range (Nombre_de_pathways_totale): + if (Le_metabolite in Tout_les_pathways[avance]): + Pathways_de_ce_metabolite.append(Noms_des_Pathways[avance]) + Pathways_de_chaque_metabolites.append(Pathways_de_ce_metabolite) + + Frequences_des_metabolites=np.array([ensemble_des_metabolites, nombre_de_metabolites]) + + metabolites_in_multi_Pathways=[] + Valeurs_metabolites_in_multi_Pathways=[] + for g in range (len(nombre_de_metabolites)) : + if nombre_de_metabolites[g]>1 : + metabolites_in_multi_Pathways.append(ensemble_des_metabolites[g]) + Valeurs_metabolites_in_multi_Pathways.append(nombre_de_metabolites[g]) + metabolites_frequences_elevee=np.array([metabolites_in_multi_Pathways, Valeurs_metabolites_in_multi_Pathways]) + + return(Noms_des_Pathways,tableau_approximatif,Frequences_des_metabolites , metabolites_frequences_elevee,Pathways_de_chaque_metabolites) + + +# In[5]: + + +def traitement_totale_couverture_pathways_et_métabolites(file,Fichier1,Fichier2,Fichier3): + Noms_des_Pathways,tableau_de_resemblance,Frequences_des_metabolites , metabolites_frequences_elevee, Les_metabolites_et_leurs_pathways = traitement_des_pathways (file,sep=";") + + + Frequences_des_metabolites = np.array(Frequences_des_metabolites) + metabolites_frequences_elevee = np.array(metabolites_frequences_elevee) + arr = np.array(tableau_de_resemblance) + resemblance_des_pathways=[Noms_des_Pathways,arr] + Frequences_des_metabolites=[Frequences_des_metabolites , metabolites_frequences_elevee] + + + with open(Fichier1, 'w') as f: # possibiliter de rajouter des informations si nécessaires + writer = csv.writer(f) + writer.writerow(resemblance_des_pathways) + + + + with open(Fichier2, 'w') as g: + writers = csv.writer(g) + writers.writerow(Frequences_des_metabolites) + + with open(Fichier3, 'w') as h: + writers = csv.writer(h) + writers.writerow(Les_metabolites_et_leurs_pathways) + + +# In[1]: + + +# Ligne de commande pour obtenir les résultats : nécessite 1 fichier de résultat et 3 noms des fichiers de sorties +traitement_totale_couverture_pathways_et_métabolites("Resultats_Constructeur_KEGG_ID_KEGG_MAPPs_MetaBridge_en_forme_pour_le_programme.csv",'table_de_resemblance_Resultats_Constructeur_KEGG_ID_KEGG_MAPPs_MetaBridge_en_forme_pour_le_programme.csv','frequence_des_metabolites_Resultats_Constructeur_KEGG_ID_KEGG_MAPPs_MetaBridge_en_forme_pour_le_programme.csv','Metabolites_et_leurs_pathways_Resultats_Constructeur_KEGG_ID_KEGG_MAPPs_MetaBridge_en_forme_pour_le_programme.csv') +