about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2024-01-16 06:29:13 +0300
committerFrederick Muriuki Muriithi2024-01-16 06:52:28 +0300
commitfc27d0447c189bfd9222c7e8ccc14074cfd6adce (patch)
treefeb36cc9c2fec2461af8a2b621429bbac70c8e0b
parentb7942002b2f40af965bd0ef9c9673fbaeb28a9e1 (diff)
downloadgn-uploader-fc27d0447c189bfd9222c7e8ccc14074cfd6adce.tar.gz
Provide defaults for various control variables
`na.strings` has a default value of "NA" as stated in
https://kbroman.org/qtl2/assets/vignettes/input_files.html#CSV_files
quote:

> Missing value codes will be specified in the control file (as
> na.strings, with default value "NA") and will apply across all
> files, so a missing value code for one file cannot be an allowed
> value in another file.

for `comment.char`

> The CSV files can include a header with a set of comment lines
> initiated by a value specified in the control file as comment.char
> (with default value "#").

for `sep`:

The default separator is expected to be the comma, as stated in
https://kbroman.org/qtl2/assets/vignettes/input_files.html#field-separator
quote:

> If the data files use a separator other than a comma ...
-rw-r--r--r_qtl/r_qtl2.py12
1 files changed, 7 insertions, 5 deletions
diff --git a/r_qtl/r_qtl2.py b/r_qtl/r_qtl2.py
index 13ac355..1755a05 100644
--- a/r_qtl/r_qtl2.py
+++ b/r_qtl/r_qtl2.py
@@ -24,16 +24,18 @@ def control_data(zfile: ZipFile) -> dict:
     if num_files > 1:
         raise InvalidFormat("Found more than one possible control file.")
 
-    return (json.loads(zfile.read(files[0]))
+    return {
+        "na.strings": ["NA"],
+        "comment.char": "#",
+        "sep": ",",
+        **(json.loads(zfile.read(files[0]))
             if files[0].endswith(".json")
             else yaml.safe_load(zfile.read(files[0])))
+    }
 
 def replace_na_strings(cdata, val):
     """Replace values indicated in `na.strings` with `None`."""
-    nastrings = cdata.get("na.strings")
-    if bool(nastrings):
-        return (None if val in nastrings else val)
-    return val
+    return (None if val in cdata.get("na.strings", ["NA"]) else val)
 
 def with_non_transposed(zfile: ZipFile,
                         member_key: str,