Mercurial > repos > lnguyen > link2reactome
comparison link2reactome.py @ 0:9135dad96527 draft default tip
planemo upload
| author | lnguyen |
|---|---|
| date | Fri, 15 Sep 2017 09:55:49 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:9135dad96527 |
|---|---|
| 1 import os | |
| 2 import re | |
| 3 import json | |
| 4 import argparse | |
| 5 | |
| 6 CURRENT_DIR = os.path.dirname(os.path.abspath(__file__)) | |
| 7 | |
| 8 def id_valid(identifiers): | |
| 9 res = [] | |
| 10 remove = [] | |
| 11 for id in identifiers: | |
| 12 id = id.split(";")[0] | |
| 13 if re.match("^[A-Za-z0-9_-]*$", id): | |
| 14 res.append(id) | |
| 15 else: | |
| 16 remove.append(id) | |
| 17 return res, remove | |
| 18 | |
| 19 def isnumber(format, n): | |
| 20 float_format = re.compile("^[\-]?[1-9][0-9]*\.?[0-9]+$") | |
| 21 int_format = re.compile("^[\-]?[1-9][0-9]*$") | |
| 22 test = "" | |
| 23 if format == "int": | |
| 24 test = re.match(int_format, n) | |
| 25 elif format == "float": | |
| 26 test = re.match(float_format, n) | |
| 27 if test: | |
| 28 return True | |
| 29 else: | |
| 30 return False | |
| 31 | |
| 32 def data_json(identifiers): | |
| 33 trash = [] | |
| 34 if identifiers[1] == "list": | |
| 35 ids = "\n".join(id_valid(identifiers[0].split())[0]) | |
| 36 #print(ids) | |
| 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) | |
| 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() | |
| 39 if len(id_valid(identifiers[0].split())[1]) > 0: | |
| 40 trash = id_valid(identifiers[0].split())[1] | |
| 41 #elif identifiers[1] == "file": | |
| 42 #file = open(identifiers[0]).readlines() | |
| 43 #ids = "\n".join(id_valid(file)[0]) | |
| 44 #print(ids) | |
| 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) | |
| 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() | |
| 47 #if len(id_valid(file)[1]) > 0: | |
| 48 #trash = id_valid(file)[1] | |
| 49 elif identifiers[1] == "mq_file": | |
| 50 header = identifiers[2] | |
| 51 mq = open(identifiers[0]).readlines() | |
| 52 if isnumber("int", identifiers[3].replace("c", "")): | |
| 53 if header == "true": | |
| 54 idens = [x.split("\t")[int(identifiers[3].replace("c", ""))-1] for x in mq[1:]] | |
| 55 else: | |
| 56 idens = [x.split("\t")[int(identifiers[3].replace("c", ""))-1] for x in mq] | |
| 57 ids = "\n".join(id_valid(idens)[0]) | |
| 58 #print(ids) | |
| 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) | |
| 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() | |
| 61 if len(id_valid(idens)[1]) > 0: | |
| 62 trash = id_valid(idens)[1] | |
| 63 print(json_string) | |
| 64 return json_string, trash | |
| 65 | |
| 66 def write_output(filename, json_string, trash_file, trash): | |
| 67 template = open(os.path.join(CURRENT_DIR, "template.html")) | |
| 68 output = open(filename, "w") | |
| 69 for line in template: | |
| 70 if "{token}" in line: | |
| 71 line = line.replace("{token}", json.loads(json_string)["summary"]["token"]) | |
| 72 output.write(line) | |
| 73 template.close() | |
| 74 output.close() | |
| 75 | |
| 76 trash_out = open(trash_file, "w") | |
| 77 trash_out.write("\n".join(trash)) | |
| 78 trash_out.close() | |
| 79 | |
| 80 def options(): | |
| 81 parser = argparse.ArgumentParser() | |
| 82 argument = parser.add_argument("--json", nargs="+", required=True) | |
| 83 argument = parser.add_argument("--output", default="output.html") | |
| 84 argument = parser.add_argument("--trash", default="trash.txt") | |
| 85 args = parser.parse_args() | |
| 86 filename = args.output | |
| 87 json_string, trash = data_json(args.json) | |
| 88 write_output(filename, json_string, args.trash, trash) | |
| 89 | |
| 90 if __name__ == "__main__": | |
| 91 options() |
