Marty Oehme
446db080f6
Fix for new paths and restructure to have the from_yml and to_tsv functions in the same data loading file. Improved path behavior to resolve any paths to absolutes before loading.
39 lines
950 B
Python
39 lines
950 B
Python
import sys
|
|
from typing import cast
|
|
import yaml
|
|
from pathlib import Path
|
|
|
|
|
|
def _get_all_yml(path: Path) -> list:
|
|
"""Returns list of all yml files."""
|
|
return list(path.rglob(r"**/*.y*ml"))
|
|
|
|
|
|
def _read_yml(path: Path) -> dict | None:
|
|
try:
|
|
with open(path, "r") as f:
|
|
return yaml.safe_load(f)
|
|
except FileNotFoundError as e:
|
|
print(e)
|
|
return None
|
|
|
|
|
|
def load(yml_path: Path | str) -> list[dict]:
|
|
"""Main data process routine.
|
|
Extracts all necessary data from yaml files returns it.
|
|
"""
|
|
contents = [_read_yml(source) for source in _get_all_yml(Path(yml_path))]
|
|
if not contents:
|
|
return []
|
|
contents = cast(list[dict], contents)
|
|
for study in contents:
|
|
del study["annotation"]
|
|
return contents
|
|
|
|
|
|
if __name__ == "__main__":
|
|
if len(sys.argv) == 2:
|
|
res = load(Path(sys.argv[1]))
|
|
print(res)
|
|
else:
|
|
print("Please provide path to yml files.")
|