blob: 9c9d67bd2b7b4f554583703bff143d819fa1bddf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
"""The R/qtl2 parsing and processing code."""
import json
import yaml
from pathlib import Path
from typing import List, Union
from zipfile import ZipFile, ZipInfo, is_zipfile
from quality_control.debug import __pk__
from r_qtl.errors import InvalidFormat
def control_data(zfile: ZipFile) -> dict:
"""Retrieve the control file from the zip file info."""
files = tuple(filename
for filename in zfile.namelist()
if (filename.endswith(".yaml") or filename.endswith(".json")))
num_files = len(files)
if num_files == 0:
raise InvalidFormat("Expected a json or yaml control file.")
if num_files > 1:
raise InvalidFormat("Found more than one possible control file.")
return (json.loads(zfile.read(files[0]))
if files[0].endswith(".json")
else yaml.safe_load(zfile.read(files[0])))
def read_r_qtl2_files(filepath: Path):
"""Read R/qtl2 format zip files."""
with ZipFile(filepath, "r") as zfile:
cf = control_data(zfile)
raise NotImplementedError("Implementation is incomplete.")
|