From 6932f0dfea99d7586789ad8d925863bb0c6b517a Mon Sep 17 00:00:00 2001
From: local_comparaison <mathieu.umec@inrae.fr>
Date: Fri, 24 Nov 2023 16:40:05 +0100
Subject: [PATCH] changing shape

---
 Mapping_using_the_API.py | 102 ++++++++++++++++++++++-----------------
 1 file changed, 57 insertions(+), 45 deletions(-)

diff --git a/Mapping_using_the_API.py b/Mapping_using_the_API.py
index f75ec70..27a5bcc 100644
--- a/Mapping_using_the_API.py
+++ b/Mapping_using_the_API.py
@@ -3,15 +3,11 @@ import json
 from urllib import request, parse
 
 
-def send_request_to_Mapping_API(URL, metabolites_list, head,method='POST'):
+def send_request_to_Mapping_API(URL, data_json, head,method='POST'):
     """
     This function gives us the response of the api for the metabolites list
     """
-    if len(metabolites_list)==0 :
-        return("Stop")
-    data_for_request={"analytes": metabolites_list}
-    json_data = json.dumps(data_for_request).encode('utf-8')
-    req = request.Request(URL, data=json_data, headers=head, method='POST')
+    req = request.Request(URL, data=data_json, headers=head, method='POST')
     with request.urlopen(req) as response:
         result = response.read()
     out_data=result.decode('utf-8')
@@ -39,49 +35,65 @@ The out-file is compose of five columns pathwayName, pathwaySource, pathwayId, i
 A line is associated with a metabolite and a metabolic pathway
 
     """
-    API_Datas=send_request_to_Mapping_API('https://rampdb.nih.gov/api/pathways-from-analytes',metabolites_list,{'Accept': '*/*','Content-Type': 'application/json'})
-    if API_Datas=="Stop":
-        print (" Your metabolite list is empty. Please restart mapping with a non-empty metabolite list. Here's an example ['KEGG:C01157','hmdb:HMDB0000064','hmdb:HMDB0000148','chebi:16015']")
+    if len(metabolites_list)==0 :
+        return (" Your metabolite list is empty. Please restart mapping with a non-empty metabolite list. Here's an example ['KEGG:C01157','hmdb:HMDB0000064','hmdb:HMDB0000148','chebi:16015']")
     else:
-        len_out_api=len(API_Datas)
-        print(API_Datas[-3]+" metabolites were found")
-        index_begin_interest=API_Datas.find("[")
-        index_end_interest=API_Datas.find("]")
-        datas_to_treat=API_Datas[index_begin_interest:index_end_interest+1]
-        name_to_search=["pathwayName","pathwaySource","pathwayId","inputId"]
-        index = datas_to_treat.find("{")
-        index_begin_lines=[index]
-        while index != -1:
-            index+=1
-            index = datas_to_treat.find("{",index)
-            index_begin_lines.append(index)
-        index_begin_lines[-1]=len(datas_to_treat)
-        pathwayName=[]
-        inputId=[]
+        data_for_request={"analytes": metabolites_list}
+        json_data = json.dumps(data_for_request).encode('utf-8')
+        API_Datas=send_request_to_Mapping_API('https://rampdb.nih.gov/api/pathways-from-analytes',json_data,{'Accept': '*/*','Content-Type': 'application/json'})
+    len_out_api=len(API_Datas)
+    print(API_Datas[-3]+" metabolites were found")
+    index_begin_interest=API_Datas.find("[")
+    index_end_interest=API_Datas.find("]")
+    datas_to_treat=API_Datas[index_begin_interest:index_end_interest+1]
+    name_to_search=["pathwayName","pathwaySource","pathwayId","inputId"]
+    index = datas_to_treat.find("{")
+    index_begin_lines=[index]
+    while index != -1:
+        index+=1
+        index = datas_to_treat.find("{",index)
+        index_begin_lines.append(index)
+    index_begin_lines[-1]=len(datas_to_treat)
+    pathwayName=[]
+    inputId=[]
+    if infos=="all" :
+        pathwaySource=[]
+        pathwayId=[]
+        commonName=[]
+    for index_pos in range (len(index_begin_lines)-1):
+        one_line=datas_to_treat[index_begin_lines[index_pos]:index_begin_lines[index_pos+1]]
+        pathwayName.append(one_line[16:one_line.find("pathwaySource")-3])
+        inputId.append(one_line[one_line.find("inputId")+10:one_line.find("commonName")-3])
         if infos=="all" :
-            pathwaySource=[]
-            pathwayId=[]
-            commonName=[]
-        for index_pos in range (len(index_begin_lines)-1):
-            one_line=datas_to_treat[index_begin_lines[index_pos]:index_begin_lines[index_pos+1]]
-            pathwayName.append(one_line[16:one_line.find("pathwaySource")-3])
-            inputId.append(one_line[one_line.find("inputId")+10:one_line.find("commonName")-3])
-            if infos=="all" :
-                pathwaySource.append(one_line[one_line.find("pathwaySource")+16:one_line.find("pathwayId")-3])
-                pathwayId.append(one_line[one_line.find("pathwayId")+12:one_line.find("inputId")-3])
-                commonName.append(one_line[one_line.find("commonName")+13:len(one_line)-3])
+            pathwaySource.append(one_line[one_line.find("pathwaySource")+16:one_line.find("pathwayId")-3])
+            pathwayId.append(one_line[one_line.find("pathwayId")+12:one_line.find("inputId")-3])
+            commonName.append(one_line[one_line.find("commonName")+13:len(one_line)-3])
+
+    pathwayName.insert(0,"pathwayName")
+    pathwaySource.insert(0,"pathwaySource")
+    pathwayId.insert(0,"pathwayId")
+    inputId.insert(0,"inputId")
+    commonName.insert(0,"commonName")
+    list_result=[pathwayName, pathwaySource, pathwayId, inputId, commonName]
+    df_result=pd.DataFrame(data=list_result).transpose()
+    excel_file_writer(df_result,outfile, sheetname="Resultats du mapping")
 
-        pathwayName.insert(0,"pathwayName")
-        pathwaySource.insert(0,"pathwaySource")
-        pathwayId.insert(0,"pathwayId")
-        inputId.insert(0,"inputId")
-        commonName.insert(0,"commonName")
-        list_result=[pathwayName, pathwaySource, pathwayId, inputId, commonName]
-        df_result=pd.DataFrame(data=list_result).transpose()
-        excel_file_writer(df_result,outfile, sheetname="Resultats du mapping")
+def mapping_from_MA_API(metabolites_list, outfile):
+    if len(metabolites_list)==0 :
+        return (" Your metabolite list is empty. Please restart mapping with a non-empty metabolite list. Here's an example ['1,3-Diaminopropane','2-Ketobutyric acid','2-Hydroxybutyric acid']")
+    else:
+        headers = {'Content-Type':"application/json",'cache-control':"no-cache"}
+        metabo_data=''
+        for name in metabolites_list :
+            metabo_data=metabo_data+name+';'
+        payload = {"queryList": metabo_data,"inputType": "name"}
+        json_data = json.dumps(payload).encode('utf-8')
+        API_Datas=send_request_to_Mapping_API("https://www.xialab.ca/api/mapcompounds",json_data,headers)
+        print(API_Datas)
 
 if __name__ == "__main__":
-    met_L=["KEGG:C01157","hmdb:HMDB0000064","hmdb:HMDB0000148","chebi:16015"]
+    met_L=['1,3-Diaminopropane','2-Ketobutyric acid','2-Hydroxybutyric acid']
     inf="all" # all,only midfile
     outf="C:\\Users\\mumec\\Desktop\\fichier_mis_en_forme_programme_total\\API_RAMP_test.xlsx"
-    mapping_from_RAMP_API(met_L,outf)
\ No newline at end of file
+    #mapping_from_RAMP_API(met_L,outf)
+    mapping_from_MA_API(met_L,outf)
\ No newline at end of file
-- 
GitLab