annotate link2reactome.py @ 0:9135dad96527 draft default tip

planemo upload
author lnguyen
date Fri, 15 Sep 2017 09:55:49 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
1 import os
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
2 import re
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
3 import json
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
4 import argparse
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
5
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
6 CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
7
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
8 def id_valid(identifiers):
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
9 res = []
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
10 remove = []
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
11 for id in identifiers:
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
12 id = id.split(";")[0]
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
13 if re.match("^[A-Za-z0-9_-]*$", id):
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
14 res.append(id)
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
15 else:
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
16 remove.append(id)
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
17 return res, remove
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
18
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
19 def isnumber(format, n):
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
20 float_format = re.compile("^[\-]?[1-9][0-9]*\.?[0-9]+$")
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
21 int_format = re.compile("^[\-]?[1-9][0-9]*$")
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
22 test = ""
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
23 if format == "int":
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
24 test = re.match(int_format, n)
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
25 elif format == "float":
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
26 test = re.match(float_format, n)
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
27 if test:
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
28 return True
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
29 else:
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
30 return False
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
31
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
32 def data_json(identifiers):
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
33 trash = []
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
34 if identifiers[1] == "list":
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
35 ids = "\n".join(id_valid(identifiers[0].split())[0])
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
36 #print(ids)
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
37 #print("curl -H \"Content-Type: text/plain\" -d \"$(printf '%s')\" -X POST --url www.reactome.org/AnalysisService/identifiers/projection/\?pageSize\=1\&page\=1" % ids)
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
38 json_string = os.popen("curl -H \"Content-Type: text/plain\" -d \"$(printf '%s')\" -X POST --url www.reactome.org/AnalysisService/identifiers/projection/\?pageSize\=1\&page\=1" % ids).read()
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
39 if len(id_valid(identifiers[0].split())[1]) > 0:
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
40 trash = id_valid(identifiers[0].split())[1]
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
41 #elif identifiers[1] == "file":
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
42 #file = open(identifiers[0]).readlines()
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
43 #ids = "\n".join(id_valid(file)[0])
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
44 #print(ids)
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
45 #print("curl -H \"Content-Type: text/plain\" -d \"$(printf '%s')\" -X POST --url www.reactome.org/AnalysisService/identifiers/projection/\?pageSize\=1\&page\=1" % ids)
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
46 #json_string = os.popen("curl -H \"Content-Type: text/plain\" -d \"$(printf '%s')\" -X POST --url www.reactome.org/AnalysisService/identifiers/projection/\?pageSize\=1\&page\=1" % ids).read()
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
47 #if len(id_valid(file)[1]) > 0:
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
48 #trash = id_valid(file)[1]
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
49 elif identifiers[1] == "mq_file":
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
50 header = identifiers[2]
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
51 mq = open(identifiers[0]).readlines()
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
52 if isnumber("int", identifiers[3].replace("c", "")):
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
53 if header == "true":
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
54 idens = [x.split("\t")[int(identifiers[3].replace("c", ""))-1] for x in mq[1:]]
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
55 else:
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
56 idens = [x.split("\t")[int(identifiers[3].replace("c", ""))-1] for x in mq]
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
57 ids = "\n".join(id_valid(idens)[0])
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
58 #print(ids)
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
59 #print("curl -H \"Content-Type: text/plain\" -d \"$(printf '%s')\" -X POST --url www.reactome.org/AnalysisService/identifiers/projection/\?pageSize\=1\&page\=1" % ids)
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
60 json_string = os.popen("curl -H \"Content-Type: text/plain\" -d \"$(printf '%s')\" -X POST --url www.reactome.org/AnalysisService/identifiers/projection/\?pageSize\=1\&page\=1" % ids).read()
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
61 if len(id_valid(idens)[1]) > 0:
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
62 trash = id_valid(idens)[1]
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
63 print(json_string)
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
64 return json_string, trash
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
65
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
66 def write_output(filename, json_string, trash_file, trash):
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
67 template = open(os.path.join(CURRENT_DIR, "template.html"))
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
68 output = open(filename, "w")
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
69 for line in template:
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
70 if "{token}" in line:
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
71 line = line.replace("{token}", json.loads(json_string)["summary"]["token"])
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
72 output.write(line)
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
73 template.close()
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
74 output.close()
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
75
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
76 trash_out = open(trash_file, "w")
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
77 trash_out.write("\n".join(trash))
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
78 trash_out.close()
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
79
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
80 def options():
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
81 parser = argparse.ArgumentParser()
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
82 argument = parser.add_argument("--json", nargs="+", required=True)
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
83 argument = parser.add_argument("--output", default="output.html")
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
84 argument = parser.add_argument("--trash", default="trash.txt")
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
85 args = parser.parse_args()
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
86 filename = args.output
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
87 json_string, trash = data_json(args.json)
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
88 write_output(filename, json_string, args.trash, trash)
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
89
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
90 if __name__ == "__main__":
9135dad96527 planemo upload
lnguyen
parents:
diff changeset
91 options()