# HG changeset patch
# User lnguyen
# Date 1505483749 14400
# Node ID 9135dad96527eb5a76044acd818aba358386f34f
planemo upload
diff -r 000000000000 -r 9135dad96527 link2reactome.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/link2reactome.py Fri Sep 15 09:55:49 2017 -0400
@@ -0,0 +1,91 @@
+import os
+import re
+import json
+import argparse
+
+CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
+
+def id_valid(identifiers):
+ res = []
+ remove = []
+ for id in identifiers:
+ id = id.split(";")[0]
+ if re.match("^[A-Za-z0-9_-]*$", id):
+ res.append(id)
+ else:
+ remove.append(id)
+ return res, remove
+
+def isnumber(format, n):
+ float_format = re.compile("^[\-]?[1-9][0-9]*\.?[0-9]+$")
+ int_format = re.compile("^[\-]?[1-9][0-9]*$")
+ test = ""
+ if format == "int":
+ test = re.match(int_format, n)
+ elif format == "float":
+ test = re.match(float_format, n)
+ if test:
+ return True
+ else:
+ return False
+
+def data_json(identifiers):
+ trash = []
+ if identifiers[1] == "list":
+ ids = "\n".join(id_valid(identifiers[0].split())[0])
+ #print(ids)
+ #print("curl -H \"Content-Type: text/plain\" -d \"$(printf '%s')\" -X POST --url www.reactome.org/AnalysisService/identifiers/projection/\?pageSize\=1\&page\=1" % ids)
+ 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()
+ if len(id_valid(identifiers[0].split())[1]) > 0:
+ trash = id_valid(identifiers[0].split())[1]
+ #elif identifiers[1] == "file":
+ #file = open(identifiers[0]).readlines()
+ #ids = "\n".join(id_valid(file)[0])
+ #print(ids)
+ #print("curl -H \"Content-Type: text/plain\" -d \"$(printf '%s')\" -X POST --url www.reactome.org/AnalysisService/identifiers/projection/\?pageSize\=1\&page\=1" % ids)
+ #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()
+ #if len(id_valid(file)[1]) > 0:
+ #trash = id_valid(file)[1]
+ elif identifiers[1] == "mq_file":
+ header = identifiers[2]
+ mq = open(identifiers[0]).readlines()
+ if isnumber("int", identifiers[3].replace("c", "")):
+ if header == "true":
+ idens = [x.split("\t")[int(identifiers[3].replace("c", ""))-1] for x in mq[1:]]
+ else:
+ idens = [x.split("\t")[int(identifiers[3].replace("c", ""))-1] for x in mq]
+ ids = "\n".join(id_valid(idens)[0])
+ #print(ids)
+ #print("curl -H \"Content-Type: text/plain\" -d \"$(printf '%s')\" -X POST --url www.reactome.org/AnalysisService/identifiers/projection/\?pageSize\=1\&page\=1" % ids)
+ 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()
+ if len(id_valid(idens)[1]) > 0:
+ trash = id_valid(idens)[1]
+ print(json_string)
+ return json_string, trash
+
+def write_output(filename, json_string, trash_file, trash):
+ template = open(os.path.join(CURRENT_DIR, "template.html"))
+ output = open(filename, "w")
+ for line in template:
+ if "{token}" in line:
+ line = line.replace("{token}", json.loads(json_string)["summary"]["token"])
+ output.write(line)
+ template.close()
+ output.close()
+
+ trash_out = open(trash_file, "w")
+ trash_out.write("\n".join(trash))
+ trash_out.close()
+
+def options():
+ parser = argparse.ArgumentParser()
+ argument = parser.add_argument("--json", nargs="+", required=True)
+ argument = parser.add_argument("--output", default="output.html")
+ argument = parser.add_argument("--trash", default="trash.txt")
+ args = parser.parse_args()
+ filename = args.output
+ json_string, trash = data_json(args.json)
+ write_output(filename, json_string, args.trash, trash)
+
+if __name__ == "__main__":
+ options()
diff -r 000000000000 -r 9135dad96527 link2reactome.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/link2reactome.xml Fri Sep 15 09:55:49 2017 -0400
@@ -0,0 +1,65 @@
+
Please click the button to execute the analysis:
+ + + +Please click the button to execute the analysis:
+ + + +