aboutsummaryrefslogtreecommitdiff
path: root/gn3/partial_correlations.py
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2021-10-18 05:47:45 +0300
committerBonfaceKilz2021-10-19 16:33:32 +0300
commitef7226bc188adf5dfd20e6daea291a3f2b14c156 (patch)
tree433cb2aa2959362098fbc8f6912b878d6765c5bf /gn3/partial_correlations.py
parent546b37e77c11c5268aa9510b9756f2ed4d60241d (diff)
downloadgenenetwork3-ef7226bc188adf5dfd20e6daea291a3f2b14c156.tar.gz
Migrate `export_informative` function
Issue: https://github.com/genenetwork/gn-gemtext-threads/blob/main/topics/gn1-migration-to-gn2/partial-correlations.gmi * gn3/partial_correlations.py: Implement a mostly, bug-compatible `export_informative` function as part of migrating the partial correlations feature over to GN3 from GN1 * tests/unit/test_partial_correlations.py: Implement tests to ensure the code work in a similar manner as that one in GN1.
Diffstat (limited to 'gn3/partial_correlations.py')
-rw-r--r--gn3/partial_correlations.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/gn3/partial_correlations.py b/gn3/partial_correlations.py
new file mode 100644
index 0000000..8c37886
--- /dev/null
+++ b/gn3/partial_correlations.py
@@ -0,0 +1,32 @@
+"""
+This module deals with partial correlations.
+
+It is an attempt to migrate over the partial correlations feature from
+GeneNetwork1.
+"""
+
+from functools import reduce
+
+def export_informative(trait_data: dict, inc_var: bool = False) -> tuple:
+ """
+ Export informative strain
+
+ This is a migration of the `exportInformative` function in
+ web/webqtl/base/webqtlTrait.py module in GeneNetwork1.
+
+ There is a chance that the original implementation has a bug, especially
+ dealing with the `inc_var` value. It the `inc_var` value is meant to control
+ the inclusion of the `variance` value, then the current implementation, and
+ that one in GN1 have a bug.
+ """
+ def __exporter__(acc, data_item):
+ if not inc_var or data_item["variance"] is not None:
+ return (
+ acc[0] + (data_item["sample_name"],),
+ acc[1] + (data_item["value"],),
+ acc[2] + (data_item["variance"],))
+ return acc
+ return reduce(
+ __exporter__,
+ filter(lambda td: td["value"] is not None, trait_data["data"].values()),
+ (tuple(), tuple(), tuple()))