jfaustin's picture
add dockerfile and folding studio cli
44459bb
raw
history blame contribute delete
833 Bytes
"""Helper methods for reading input files."""
import re
from itertools import filterfalse, tee
from pathlib import Path
def partition_template_pdb_from_file(
custom_templates: list[str | Path],
) -> tuple[list[str], list[Path]]:
"""Partitions custom templates files from PDB codes and removes duplicates.
Inspired from `partition` function in itertools cookbook:
https://docs.python.org/dev/library/itertools.html#itertools-recipes
Args:
custom_templates (list[str | Path]): List of custom templates
Returns:
The list of PDB codes and the list of custom files.
"""
def pred(x):
return re.match(r"^[a-zA-Z0-9]{4}$", str(x))
t1, t2 = tee(custom_templates)
pdb_codes = filter(pred, t1)
custom_files = filterfalse(pred, t2)
return (pdb_codes, custom_files)