about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlexanderKabui2022-11-09 03:19:23 +0300
committerAlexanderKabui2022-11-09 13:12:53 +0300
commit5b587876c144c9ab512b23b5be47f9378a0bd3b2 (patch)
tree38bf0db111f0cdb2f04b0c84eef5d2da5477ca49
parent48fa131aee8163755e45711e090229efd5ff26eb (diff)
downloadgenenetwork2-5b587876c144c9ab512b23b5be47f9378a0bd3b2.tar.gz
add filter checkers
-rw-r--r--wqflask/wqflask/correlation/show_corr_results.py73
1 files changed, 61 insertions, 12 deletions
diff --git a/wqflask/wqflask/correlation/show_corr_results.py b/wqflask/wqflask/correlation/show_corr_results.py
index bc3b4fd7..f279bcc3 100644
--- a/wqflask/wqflask/correlation/show_corr_results.py
+++ b/wqflask/wqflask/correlation/show_corr_results.py
@@ -73,23 +73,71 @@ def set_template_vars(start_vars, correlation_data):
 
     return correlation_data
 
-    min_expr = get_float(start_vars, 'min_expr')
-    p_range_lower = get_float(start_vars, 'p_range_lower', -1.0)
-    p_range_upper = get_float(start_vars, 'p_range_upper', 1.0)
 
-    if ('loc_chr' in start_vars and
-        'min_loc_mb' in start_vars and
-            'max_loc_mb' in start_vars):
+def apply_filters(target_trait, target_dataset, **filters):
+    def __p_val_filter__(p_lower, p_upper):
+        return not (float(trait.get('corr_coefficient', 0.0)) >= p_lower and
+                float(trait.get('corr_coefficient', 0.0)) <= p_upper)
 
-        location_chr = get_string(start_vars, 'loc_chr')
-        min_location_mb = get_int(start_vars, 'min_loc_mb')
-        max_location_mb = get_int(start_vars, 'max_loc_mb')
-    else:
-        location_chr = min_location_mb = max_location_mb = None
+    def __min_filter__(min_expr):
+        if (target_dataset['type'] in ["ProbeSet", "Publish"] and target_trait['mean']):
+            return (min_expr != None) and (float(target_trait['mean']) < min_expr)
+
+        return False
+
+    def __location_filter__(location_type, location_chr,
+                            min_location_mb, max_location_mb):
+
+        if target_dataset["type"] in ["ProbeSet", "'Geno"] and location_type == "gene":
+
+            return ((location_chr != None and (target_trait["chr"] != location_chr)
+                     or
+                     (min_location_mb != None) and (
+                     float(target_trait['mb']) < min_location_mb)
+                     or
+                     max_location_mb != None) and
+                    (float(target_trait['mb']) > float(max_location_mb)
+                     ))
+        elif target_dataset["type"] in ["ProbeSet", "Publish"]:
+            return ((location_chr != None and (target_trait["lrs_chr"] != location_chr)
+                     or
+                     (min_location_mb != None) and (
+                         float(target_trait['lrs_mb']) < float(min_location_mb))
+                     or
+                     (max_location_mb != None) and (
+                float(target_trait['lrs_mb']) > float(max_location_mb))
+            )
+            )
+
+        return True
+
+
+
+    # check if one of the condition is not met i.e One is True
+
+    return (__p_val_filter__(
+        filters.get("p_range_lower"),
+        filters.get("p_range_upper")
+    )
+        or
+        (
+            __min_filter__(
+                filters.get("min_expr")
+            )
+    )
+        or
+        __location_filter__(
+            filters.get("location_type"),
+            filters.get("location_chr"),
+            filters.get("min_location_mb"),
+            filters.get("max_location_mb")
+
+
+    )
+    )
 
 
 def get_user_filters(start_vars):
-    """ a user can filter the results based on different criterias"""
     (min_expr, p_min, p_max) = (
         get_float(start_vars, 'min_expr'),
         get_float(start_vars, 'p_range_lower', -1.0),
@@ -111,6 +159,7 @@ def get_user_filters(start_vars):
         "p_range_lower": p_min,
         "p_range_upper": p_max,
         "location_chr": location_chr,
+        "location_type": start_vars['location_type'],
         "min_location_mb": min_location_mb,
         "max_location_mb": max_location_mb