about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2024-02-02 14:22:06 +0300
committerFrederick Muriuki Muriithi2024-02-02 14:22:06 +0300
commitcb3851a91d63a29b808f44eb91c00df91641e380 (patch)
treea22e6aba2fe35026d7427c7dfae67dd17eafcbd1
parent2b8fd63af18e70b4c8c20a34a6dfa041e8a832b9 (diff)
downloadgn-uploader-cb3851a91d63a29b808f44eb91c00df91641e380.tar.gz
Ensure control file defaults are set up in code.
-rw-r--r--r_qtl/r_qtl2.py5
-rw-r--r--tests/r_qtl/test_files/empty_control_file_json.zipbin0 -> 251 bytes
-rw-r--r--tests/r_qtl/test_files/empty_control_file_yaml.zipbin0 -> 245 bytes
-rw-r--r--tests/r_qtl/test_r_qtl2_control_file.py38
4 files changed, 43 insertions, 0 deletions
diff --git a/r_qtl/r_qtl2.py b/r_qtl/r_qtl2.py
index 1755a05..9127dce 100644
--- a/r_qtl/r_qtl2.py
+++ b/r_qtl/r_qtl2.py
@@ -28,6 +28,11 @@ def control_data(zfile: ZipFile) -> dict:
         "na.strings": ["NA"],
         "comment.char": "#",
         "sep": ",",
+        **{
+            f"{key}_transposed": False for key in (
+                "geno", "founder_geno", "pheno", "covar", "phenocovar", "gmap",
+                "pmap", "phenose")
+        },
         **(json.loads(zfile.read(files[0]))
             if files[0].endswith(".json")
             else yaml.safe_load(zfile.read(files[0])))
diff --git a/tests/r_qtl/test_files/empty_control_file_json.zip b/tests/r_qtl/test_files/empty_control_file_json.zip
new file mode 100644
index 0000000..94cab39
--- /dev/null
+++ b/tests/r_qtl/test_files/empty_control_file_json.zip
Binary files differdiff --git a/tests/r_qtl/test_files/empty_control_file_yaml.zip b/tests/r_qtl/test_files/empty_control_file_yaml.zip
new file mode 100644
index 0000000..daf607f
--- /dev/null
+++ b/tests/r_qtl/test_files/empty_control_file_yaml.zip
Binary files differdiff --git a/tests/r_qtl/test_r_qtl2_control_file.py b/tests/r_qtl/test_r_qtl2_control_file.py
new file mode 100644
index 0000000..316307d
--- /dev/null
+++ b/tests/r_qtl/test_r_qtl2_control_file.py
@@ -0,0 +1,38 @@
+"""Test the parsing of control file"""
+from pathlib import Path
+
+import pytest
+from zipfile import ZipFile
+
+from r_qtl import r_qtl2 as rqtl2
+
+__DEFAULTS__ = {
+    "description": "Empty control file to test defaults",
+    "sep": ",",
+    "na.strings": ["NA"],
+    "comment.char": "#",
+    "geno_transposed": False,
+    "founder_geno_transposed": False,
+    "pheno_transposed": False,
+    "covar_transposed": False,
+    "phenocovar_transposed": False,
+    "gmap_transposed": False,
+    "pmap_transposed": False,
+    "phenose_transposed": False
+}
+
+@pytest.mark.unit_test
+@pytest.mark.parametrize(
+    "filepath,expected",
+    (("tests/r_qtl/test_files/empty_control_file_yaml.zip",
+      __DEFAULTS__),
+     ("tests/r_qtl/test_files/empty_control_file_json.zip",
+      __DEFAULTS__)))
+def test_defaults_are_set(filepath, expected):
+    """
+    GIVEN: path to a R/qtl2 bundle with an empty control file
+    WHEN: the control data is parsed
+    THEN: ensure all the defaults are set up correctly
+    """
+    with ZipFile(Path(filepath).absolute(), "r") as zfile:
+        assert rqtl2.control_data(zfile) == expected