def test_from_rdkit(self): rdkit_mol = Molecule(ligand_rdkit) newmol = Molecule.from_rdkit(ligand_rdkit) assert rdkit_mol[0].resid == newmol[0].resid mol = Chem.MolFromSmiles("CCO") newmol = Molecule.from_rdkit(mol) assert newmol[0].resid == ResidueId("UNL", 1) newmol = Molecule.from_rdkit(mol, "FOO", 42, "A") assert newmol[0].resid == ResidueId("FOO", 42, "A")
class TestMolecule(TestBaseRDKitMol): @pytest.fixture(scope="class") def mol(self): return Molecule(rdkit_mol) def test_mapindex(self, mol): for atom in mol.GetAtoms(): assert atom.GetUnsignedProp("mapindex") == atom.GetIdx() def test_from_mda(self): rdkit_mol = Molecule(ligand_rdkit) mda_mol = Molecule.from_mda(u, "resname LIG") assert rdkit_mol[0].resid == mda_mol[0].resid assert (rdkit_mol.HasSubstructMatch(mda_mol) and mda_mol.HasSubstructMatch(rdkit_mol)) @pytest.mark.parametrize("key", [ 0, 42, -1, "LYS49.A", ResidueId("LYS", 49, "A") ]) def test_getitem(self, mol, key): assert mol[key].resid is mol.residues[key].resid def test_iter(self, mol): for i, r in enumerate(mol): assert r.resid == mol[i].resid def test_n_residues(self, mol): assert mol.n_residues == mol.residues.n_residues
def test_init(self, name, number, chain): resid = ResidueId(name, number, chain) name = name or "UNK" number = number or 0 chain = chain or None assert resid.name == name assert resid.number == number assert resid.chain == chain
def test_from_atom_empty(self, name, number, chain): atom = Chem.Atom(1) mi = Chem.AtomPDBResidueInfo() if name is not None: mi.SetResidueName(name) if number is not None: mi.SetResidueNumber(number) if chain is not None: mi.SetChainId(chain) atom.SetMonomerInfo(mi) resid = ResidueId.from_atom(atom) assert resid == ResidueId()
def test_init_empty(self, name, number, chain): resid = ResidueId(name, number, chain) assert resid == ResidueId()
def test_getitem(self, residues, ix, resid, resid_str): rg = ResidueGroup(residues) resid = ResidueId(*resid) assert rg[ix] == rg[resid] assert rg[ix] == rg[resid_str]
def test_init(self, name, number, chain): resid = ResidueId(name, number, chain) assert resid.name == name assert resid.number == number assert resid.chain == chain
def test_eq(self): name, number, chain = "ALA", 1, "A" res1 = ResidueId(name, number, chain) res2 = ResidueId(name, number, chain) assert res1 == res2
def test_string_methods(self, resid_str, expected): resid = ResidueId.from_string(resid_str) assert resid == ResidueId(*expected) assert str(resid) == resid_str
def test_generate(self, fp_class): ifp = fp_class.generate(ligand_mol, protein_mol) key = (ResidueId("LIG", 1, "G"), ResidueId("THR", 355, "B")) bv = ifp[key] assert isinstance(bv, np.ndarray) assert bv[0] is np.True_
def test_from_string(self, resid_str, expected): resid = ResidueId.from_string(resid_str) assert resid == ResidueId(*expected)