Beispiel #1
0
 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
Beispiel #3
0
 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
Beispiel #4
0
 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()
Beispiel #5
0
 def test_init_empty(self, name, number, chain):
     resid = ResidueId(name, number, chain)
     assert resid == ResidueId()
Beispiel #6
0
 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]
Beispiel #7
0
 def test_init(self, name, number, chain):
     resid = ResidueId(name, number, chain)
     assert resid.name == name
     assert resid.number == number
     assert resid.chain == chain
Beispiel #8
0
 def test_eq(self):
     name, number, chain = "ALA", 1, "A"
     res1 = ResidueId(name, number, chain)
     res2 = ResidueId(name, number, chain)
     assert res1 == res2
Beispiel #9
0
 def test_string_methods(self, resid_str, expected):
     resid = ResidueId.from_string(resid_str)
     assert resid == ResidueId(*expected)
     assert str(resid) == resid_str
Beispiel #10
0
 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_
Beispiel #11
0
 def test_from_string(self, resid_str, expected):
     resid = ResidueId.from_string(resid_str)
     assert resid == ResidueId(*expected)