Source code for cctk.pdb_file

from cctk import File
from cctk.helper_functions import get_symbol

[docs] class PDBFile(File): """ Generic class for all ``.pdb`` files. """
[docs] def __init__(self, molecule, title=None): pass
[docs] @classmethod def read_file(cls, filename): pass
[docs] @classmethod def write_molecule_to_file(cls, filename, molecule, num=1, append=False): """ Write a ``.pdb`` file, using object attributes. Args: filename (str): path to the new file molecule (Molecule): ``Molecule`` object num (int): model number append (Bool): whether to write to file normally or append """ text = f"MODEL {num}\n" for idx, Z in enumerate(molecule.atomic_numbers, start=1): line = molecule.get_vector(idx) symb = get_symbol(Z).upper() text += f"HETATM {idx:>4} {symb:<2} * 0 {line[0]:7.3f} {line[1]:7.3f} {line[2]:7.3f} 1.00 0.00 {symb:>2}\n" text += "ENDMDL\n" if append: super().append_to_file(filename, text) else: super().write_file(filename, text)
[docs] @classmethod def write_ensemble_to_trajectory(cls, filename, ensemble): """ Writes a ``ConformationalEnsemble`` to a trajectory file. Args: filename (str): where to write the file ensemble (Ensemble): ``Ensemble`` object to write """ for idx, molecule in enumerate(ensemble.molecules): if idx == 0: cls.write_molecule_to_file(filename, molecule, num=idx+1, append=False) else: cls.write_molecule_to_file(filename, molecule, num=idx+1, append=True)