Source code for haddock.libs.libstructure

"""Molecular data structures."""
from functools import partial
from pathlib import Path
from typing import Any, Iterable, Optional


[docs]class Molecule: """ Input molecule, usually a PDB file. Parameters ---------- file_name : :external:py:class:`pathlib.Path` The path to the molecule file. segid : int, optional The ID of the segment. Defaults to ``None``. no_parent : boolean Whether to add the parent path ``..`` to the :py:attr:`haddock.libs.libstructure.Molecule.with_parent`. When set to true, the ``with_parent`` attribute returns the same as ``file_name``. """ def __init__(self, file_name: Path, segid: Optional[int] = None, no_parent: bool = False) -> None: # the rest of the code is too dependent on the Path API assert isinstance(file_name, Path), \ f"`file_name` must be pathlib.Path: {type(file_name)} given" self.file_name = file_name self.segid = segid if no_parent: self.with_parent = file_name else: self.with_parent = Path('..', file_name)
[docs]def make_molecules(paths: Iterable[Path], **kwargs: Any) -> list[Molecule]: """Get input molecules from the data stream.""" return list(map(partial(Molecule, **kwargs), paths))