diff options
author | Frederick Muriuki Muriithi | 2024-02-20 05:15:00 +0300 |
---|---|---|
committer | Frederick Muriuki Muriithi | 2024-02-20 05:15:00 +0300 |
commit | 8e692b0c372db3999dfc3989f361676c579fb9cd (patch) | |
tree | fb27e07761b00bb36a19988c539d58e99d672cab | |
parent | aefa19252cf0dfe1cc02b2f87a4f66dc807f4f74 (diff) | |
download | gn-uploader-8e692b0c372db3999dfc3989f361676c579fb9cd.tar.gz |
Stand-alone function to read control file
Add a function that, given the path to the zip file, will read the
control data. It creates its own context manager.
-rw-r--r-- | r_qtl/r_qtl2.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/r_qtl/r_qtl2.py b/r_qtl/r_qtl2.py index 96776b7..93b8c8e 100644 --- a/r_qtl/r_qtl2.py +++ b/r_qtl/r_qtl2.py @@ -318,3 +318,19 @@ def missing_value_codes_to_none(value: str, def replace_genotype_codes(value: str, genocodes: dict): """Convert genotype codes into values specified in control file.""" return genocodes.get(value, value) + +def read_control_file(zipfilepath: Union[str, Path]) -> dict: + """Read control data.""" + with ZipFile(str(zipfilepath), "r") as zfile: + # move `control_data` code here and replace existing function. + cdata = control_data(zfile) + return { + **cdata, + **{ + ftype: ([cdata[ftype]] + if isinstance(cdata[ftype], str) + else cdata[ftype]) + for ftype in FILE_TYPES + if bool(cdata.get(ftype)) + } + } |