aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMuriithi Frederick Muriuki2021-09-08 10:56:56 +0300
committerMuriithi Frederick Muriuki2021-09-08 10:56:56 +0300
commita718069c757bea9f7ecbaee25e23bd581750f906 (patch)
tree0d04f09fa39bee446968a494f3713281aa264476
parent3f323734fcf258d28f3f7d33fdc1518ef9ec24a8 (diff)
downloadgenenetwork3-a718069c757bea9f7ecbaee25e23bd581750f906.tar.gz
Ease search for traits and chromosomes
Issue: https://github.com/genenetwork/gn-gemtext-threads/blob/main/topics/gn1-migration-to-gn2/clustering.gmi * Return a dict of values rather than list for the traits and chromosomes to ease searching through the data.
-rw-r--r--gn3/computations/qtlreaper.py9
-rw-r--r--tests/unit/computations/test_qtlreaper.py92
2 files changed, 52 insertions, 49 deletions
diff --git a/gn3/computations/qtlreaper.py b/gn3/computations/qtlreaper.py
index 02d6572..5180853 100644
--- a/gn3/computations/qtlreaper.py
+++ b/gn3/computations/qtlreaper.py
@@ -110,12 +110,15 @@ def organise_reaper_main_results(parsed_results):
unique_chromosomes = {item["Chr"] for item in id_items}
return {
"ID": identifier,
- "chromosomes": [
+ "chromosomes": {_chr["Chr"]: _chr for _chr in [
__organise_by_chromosome(chromo, id_items)
- for chromo in sorted(unique_chromosomes)]}
+ for chromo in sorted(
+ unique_chromosomes, key=chromosome_sorter_key_fn)]}}
unique_ids = {res["ID"] for res in parsed_results}
- return [__organise_by_id(_id, parsed_results) for _id in sorted(unique_ids)]
+ return {
+ trait["ID"]: trait for trait in
+ [__organise_by_id(_id, parsed_results) for _id in sorted(unique_ids)]}
def parse_reaper_main_results(results_file):
"""
diff --git a/tests/unit/computations/test_qtlreaper.py b/tests/unit/computations/test_qtlreaper.py
index 1d7347f..495ed97 100644
--- a/tests/unit/computations/test_qtlreaper.py
+++ b/tests/unit/computations/test_qtlreaper.py
@@ -130,49 +130,49 @@ class TestQTLReaper(TestCase):
"pValue": 1.000
}
]),
- [{"ID": "T1",
- "chromosomes": [
- {"Chr": "1",
- "loci": [
- {
- "Locus": "rs31443144", "cM": 1.500, "Mb": 3.010,
- "LRS": 0.500, "Additive": -0.074, "pValue": 1.000
- },
- {
- "Locus": "rs6269442", "cM": 1.500, "Mb": 3.492,
- "LRS": 0.500, "Additive": -0.074, "pValue": 1.000
- },
- {
- "Locus": "rs32285189", "cM": 1.630, "Mb": 3.511,
- "LRS": 0.500, "Additive": -0.074, "pValue": 1.000
- },
- {
- "Locus": "rs258367496", "cM": 1.630, "Mb": 3.660,
- "LRS": 0.500, "Additive": -0.074, "pValue": 1.000
- },
- {
- "Locus": "rs32430919", "cM": 1.750, "Mb": 3.777,
- "LRS": 0.500, "Additive": -0.074, "pValue": 1.000
- },
- {
- "Locus": "rs36251697", "cM": 1.880, "Mb": 3.812,
- "LRS": 0.500, "Additive": -0.074, "pValue": 1.000
- },
- {
- "Locus": "rs30658298", "cM": 2.010, "Mb": 4.431,
- "LRS": 0.500, "Additive": -0.074, "pValue": 1.000
- }]},
- {"Chr": "2",
- "loci": [
- {
- "Locus": "rs51852623", "cM": 2.010, "Mb": 4.447,
- "LRS": 0.500, "Additive": -0.074, "pValue": 1.000
- },
- {
- "Locus": "rs31879829", "cM": 2.140, "Mb": 4.519,
- "LRS": 0.500, "Additive": -0.074, "pValue": 1.000
- },
- {
- "Locus": "rs36742481", "cM": 2.140, "Mb": 4.776,
- "LRS": 0.500, "Additive": -0.074, "pValue": 1.000
- }]}]}])
+ {"T1": {"ID": "T1",
+ "chromosomes": {
+ 1: {"Chr": 1,
+ "loci": [
+ {
+ "Locus": "rs31443144", "cM": 1.500, "Mb": 3.010,
+ "LRS": 0.500, "Additive": -0.074, "pValue": 1.000
+ },
+ {
+ "Locus": "rs6269442", "cM": 1.500, "Mb": 3.492,
+ "LRS": 0.500, "Additive": -0.074, "pValue": 1.000
+ },
+ {
+ "Locus": "rs32285189", "cM": 1.630, "Mb": 3.511,
+ "LRS": 0.500, "Additive": -0.074, "pValue": 1.000
+ },
+ {
+ "Locus": "rs258367496", "cM": 1.630, "Mb": 3.660,
+ "LRS": 0.500, "Additive": -0.074, "pValue": 1.000
+ },
+ {
+ "Locus": "rs32430919", "cM": 1.750, "Mb": 3.777,
+ "LRS": 0.500, "Additive": -0.074, "pValue": 1.000
+ },
+ {
+ "Locus": "rs36251697", "cM": 1.880, "Mb": 3.812,
+ "LRS": 0.500, "Additive": -0.074, "pValue": 1.000
+ },
+ {
+ "Locus": "rs30658298", "cM": 2.010, "Mb": 4.431,
+ "LRS": 0.500, "Additive": -0.074, "pValue": 1.000
+ }]},
+ 2: {"Chr": 2,
+ "loci": [
+ {
+ "Locus": "rs51852623", "cM": 2.010, "Mb": 4.447,
+ "LRS": 0.500, "Additive": -0.074, "pValue": 1.000
+ },
+ {
+ "Locus": "rs31879829", "cM": 2.140, "Mb": 4.519,
+ "LRS": 0.500, "Additive": -0.074, "pValue": 1.000
+ },
+ {
+ "Locus": "rs36742481", "cM": 2.140, "Mb": 4.776,
+ "LRS": 0.500, "Additive": -0.074, "pValue": 1.000
+ }]}}}})