diff options
| -rw-r--r-- | gn3/api/rqtl2.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/gn3/api/rqtl2.py b/gn3/api/rqtl2.py new file mode 100644 index 0000000..e746918 --- /dev/null +++ b/gn3/api/rqtl2.py @@ -0,0 +1,38 @@ +""" File contains endpoints for rqlt2""" + +import subprocess +import uuid +import os +from flask import current_app +from flask import jsonify +from flask import Blueprint + +rqtl2 = Blueprint("rqtl2", __name__) + +@rqtl2.route("/compute", methods=["GET"]) +def compute(): + """Endpoint for computing QTL analysis using R/QTL2""" + wkdir = current_app.config.get("TMPDIR") + output_file = os.path.join(wkdir, "output.txt") + rscript_cmd = ( + f"Rscript ./scripts/rqtl2_wrapper.R " + f"-i /home/kabui/r_playground/meta_grav.json " + f"-d /home/kabui/r_playground " + f"-o /home/kabui/r_playground/rqtl_output.json " + f"--nperm 100 --threshold 1 --cores 0" + ) + process = subprocess.Popen( + rscript_cmd, shell=True, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT + ) + # TODO rethink where we write this file + with open(output_file, "a+") as file_handler: + for line in iter(process.stdout.readline, b""): + file_handler.write(line.decode("utf-8")) + process.stdout.close() + process.wait() + if process.returncode == 0: + return jsonify({"msg": "success", "results": "file_here"}) + else: + return jsonify({"msg": "fail", "error": "Process failed"}) |
