aboutsummaryrefslogtreecommitdiff
path: root/gn2/scripts/corr_compute.py
diff options
context:
space:
mode:
Diffstat (limited to 'gn2/scripts/corr_compute.py')
-rw-r--r--gn2/scripts/corr_compute.py77
1 files changed, 77 insertions, 0 deletions
diff --git a/gn2/scripts/corr_compute.py b/gn2/scripts/corr_compute.py
new file mode 100644
index 00000000..44dcac68
--- /dev/null
+++ b/gn2/scripts/corr_compute.py
@@ -0,0 +1,77 @@
+"""Compute the correlations."""
+
+import sys
+import json
+import pickle
+import pathlib
+import datetime
+
+from flask import g
+
+from gn2.wqflask import app
+from gn2.wqflask.user_session import UserSession
+from gn2.wqflask.correlation.show_corr_results import set_template_vars
+from gn2.wqflask.correlation.correlation_gn3_api import compute_correlation
+
+class UserSessionSimulator():
+
+ def __init__(self, user_id):
+ self._user_id = user_id
+
+ @property
+ def user_id(self):
+ return self._user_id
+
+error_types = {
+ "WrongCorrelationType": "Wrong Correlation Type",
+ "CalledProcessError": "Called Process Error"
+}
+
+def e_time():
+ return datetime.datetime.utcnow().isoformat()
+
+def compute(form):
+ import subprocess
+ try:
+ correlation_results = compute_correlation(form, compute_all=True)
+ except Exception as exc:
+ return {
+ "error-type": error_types[type(exc).__name__],
+ "error-message": exc.args[0]
+ }
+
+ return set_template_vars(form, correlation_results)
+
+if __name__ == "__main__":
+ ARGS_COUNT = 3
+ if len(sys.argv) < ARGS_COUNT:
+ print(f"{e_time()}: You need to pass the file with the picked form",
+ file=sys.stderr)
+ sys.exit(1)
+
+ if len(sys.argv) > ARGS_COUNT:
+ print(f"{e_time()}: Unknown arguments {sys.argv[ARGS_COUNT:]}",
+ file=sys.stderr)
+ sys.exit(1)
+
+ filepath = pathlib.Path(sys.argv[1])
+ if not filepath.exists():
+ print(f"File not found '{filepath}'", file=sys.stderr)
+ sys.exit(2)
+
+ with open(filepath, "rb") as pfile:
+ form = pickle.Unpickler(pfile).load()
+
+ with app.app_context():
+ g.user_session = UserSessionSimulator(sys.argv[2])
+ results = compute(form)
+
+ print(json.dumps(results), file=sys.stdout)
+
+ if "error-type" in results:
+ print(
+ f"{results['error-type']}: {results['error-message']}",
+ file=sys.stderr)
+ sys.exit(3)
+
+ sys.exit(0)