about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2022-10-05 07:00:51 +0300
committerFrederick Muriuki Muriithi2022-10-05 07:00:51 +0300
commit13289325fb22c4bc10b52414fb9755e7911795f3 (patch)
tree0adb91c9ec37480b0f03d0b1275cbab3aace3b83
parentfb4aa5d0a3a33f980b754cac3e69b8cbd63e3855 (diff)
downloadgenenetwork2-13289325fb22c4bc10b52414fb9755e7911795f3.tar.gz
Handle correlation error
* Handle the correlation error such that it gives the user a better
  message for the cause of the error, instead of displaying the
  exception.
-rw-r--r--wqflask/wqflask/correlation/exceptions.py4
-rw-r--r--wqflask/wqflask/views.py31
2 files changed, 28 insertions, 7 deletions
diff --git a/wqflask/wqflask/correlation/exceptions.py b/wqflask/wqflask/correlation/exceptions.py
index 8e9c8516..f4e2b72b 100644
--- a/wqflask/wqflask/correlation/exceptions.py
+++ b/wqflask/wqflask/correlation/exceptions.py
@@ -4,6 +4,10 @@ class WrongCorrelationType(Exception):
     """Raised when a correlation is requested for incompatible datasets."""
 
     def __init__(self, trait, target_dataset, corr_method):
+        corr_method = {
+            "lit": "Literature",
+            "tissue": "Tissue"
+        }[corr_method]
         message = (
             f"It is not possible to compute the '{corr_method}' correlations "
             f"between trait '{trait.name}' and the data in the "
diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py
index 4ea2d529..47f13b20 100644
--- a/wqflask/wqflask/views.py
+++ b/wqflask/wqflask/views.py
@@ -55,6 +55,7 @@ from wqflask.correlation.correlation_gn3_api import compute_correlation
 from wqflask.correlation.rust_correlation import compute_correlation_rust
 from wqflask.correlation_matrix import show_corr_matrix
 from wqflask.correlation import corr_scatter_plot
+from wqflask.correlation.exceptions import WrongCorrelationType
 from wqflask.ctl.gn3_ctl_analysis import run_ctl
 
 from wqflask.wgcna.gn3_wgcna import run_wgcna
@@ -812,10 +813,23 @@ def network_graph_page():
     else:
         return render_template("empty_collection.html", **{'tool': 'Network Graph'})
 
+def __handle_correlation_error__(exc):
+    return render_template(
+        "correlation_error_page.html",
+        error = {
+            "error-type": {
+                "WrongCorrelationType": "Wrong Correlation Type"
+            }[type(exc).__name__],
+            "error-message": exc.args[0]
+        })
 
 @app.route("/corr_compute", methods=('POST',))
 def corr_compute_page():
-    correlation_results = compute_correlation(request.form, compute_all=True)
+    try:
+        correlation_results = compute_correlation(
+            request.form, compute_all=True)
+    except WrongCorrelationType as exc:
+        return __handle_correlation_error__(exc)
 
     correlation_results = set_template_vars(request.form, correlation_results)
     return render_template("correlation_page.html", **correlation_results)
@@ -826,15 +840,18 @@ def test_corr_compute_page():
 
     start_vars = request.form
 
-    correlation_results = compute_correlation_rust(start_vars,
-                                                   start_vars["corr_type"],
-                                                   start_vars['corr_sample_method'],
-                                                   int(start_vars.get("corr_return_results", 500)),True)
+    try:
+        correlation_results = compute_correlation_rust(
+            start_vars,
+            start_vars["corr_type"],
+            start_vars['corr_sample_method'],
+            int(start_vars.get("corr_return_results", 500)),
+            True)
+    except WrongCorrelationType as exc:
+        return __handle_correlation_error__(exc)
 
     correlation_results = set_template_vars(request.form, correlation_results)
-
     return render_template("correlation_page.html", **correlation_results)
-    # return render_template("test_correlation_page.html", **correlation_data)
 
 
 @app.route("/corr_matrix", methods=('POST',))