diff --git a/src/qfit/structure/pdbfile.py b/src/qfit/structure/pdbfile.py index 0c1ae4a6..98fee2e3 100644 --- a/src/qfit/structure/pdbfile.py +++ b/src/qfit/structure/pdbfile.py @@ -1,5 +1,5 @@ from collections import defaultdict, namedtuple -import itertools as itl +import itertools from math import inf import logging @@ -156,10 +156,10 @@ def load_combined_atoms(*atom_lists): def load_atoms_from_labels(atom_labels): - atom_lines = [atom.format_atom_record_group().split('\n')[0] - for atom in atom_labels] + atom_lines = itertools.chain(*[atom.format_atom_record_group().split('\n') + for atom in atom_labels]) return iotbx.pdb.pdb_input(source_info="qfit_structure", - lines=atom_lines) + lines=list(atom_lines)) def write_mmcif(fname, structure): @@ -250,7 +250,7 @@ def format_line(cls, values): ) # Intersperse formatted values with spaces - line = itl.zip_longest(formatted_values, spaces, fillvalue="") + line = itertools.zip_longest(formatted_values, spaces, fillvalue="") line = "".join(flatten(line)) + "\n" return line diff --git a/tests/unit/test_structure.py b/tests/unit/test_structure.py index e63fbd8d..b606a801 100644 --- a/tests/unit/test_structure.py +++ b/tests/unit/test_structure.py @@ -127,6 +127,11 @@ def test_structure_extract_io_recycling(self): s2.tofile(pdb_tmp) s3 = Structure.fromfile(pdb_tmp) assert len(list(s3.single_conformer_residues)) == 2 + # sanity check for presence of ANISOUs + PDB2 = op.join(self.DATA, "..", "qfit_ligand_test", "5AGK.pdb") + s4 = Structure.fromfile(PDB2) + s5 = s4.combine(s3) + xrs = s5.to_xray_structure() def test_structure_pickle(self): PDB = op.join(self.DATA, "4ms6_tiny.pdb.gz")