Пример #1
0
 def test_run_residues(self, fp_class):
     fp_class.run(u.trajectory[0:1],
                  ligand_ag,
                  protein_ag,
                  residues="all",
                  progress=False)
     lig_id = ResidueId.from_string("LIG1.G")
     assert hasattr(fp_class, "ifp")
     assert len(fp_class.ifp) == 1
     res = ResidueId.from_string("LYS387.B")
     assert (lig_id, res) in fp_class.ifp[0].keys()
     fp_class.run(u.trajectory[1:2],
                  ligand_ag,
                  protein_ag,
                  residues=["ASP129.A"],
                  progress=False)
     assert hasattr(fp_class, "ifp")
     assert len(fp_class.ifp) == 1
     res = ResidueId.from_string("ASP129.A")
     assert (lig_id, res) in fp_class.ifp[0].keys()
     fp_class.run(u.trajectory[:3],
                  ligand_ag,
                  protein_ag,
                  residues=None,
                  progress=False)
     assert hasattr(fp_class, "ifp")
     assert len(fp_class.ifp) == 3
     assert len(fp_class.ifp[0]) > 1
     res = ResidueId.from_string("VAL201.A")
     assert (lig_id, res) in fp_class.ifp[0].keys()
     u.trajectory[0]
Пример #2
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")
Пример #3
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()
Пример #4
0
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
Пример #5
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
Пример #6
0
 def test_from_atom(self, name, number, chain):
     atom = Chem.Atom(1)
     mi = Chem.AtomPDBResidueInfo()
     if name:
         mi.SetResidueName(name)
     if number:
         mi.SetResidueNumber(number)
     if chain:
         mi.SetChainId(chain)
     atom.SetMonomerInfo(mi)
     resid = ResidueId.from_atom(atom)
     assert resid.name == name
     assert resid.number == number
     assert resid.chain == chain
Пример #7
0
def test_pocket_residues():
    resids = get_residues_near_ligand(ligand_mol, protein_mol)
    residues = [
        "TYR38.A", "TYR40.A", "GLN41.A", "VAL102.A", "SER106.A", "TYR109.A",
        "THR110.A", "TRP115.A", "TRP125.A", "LEU126.A", "ASP129.A", "ILE130.A",
        "THR131.A", "CYS133.A", "THR134.A", "ILE137.A", "ILE180.A", "GLU198.A",
        "CYS199.A", "VAL200.A", "VAL201.A", "ASN202.A", "THR203.A", "TYR208.A",
        "THR209.A", "VAL210.A", "TYR211.A", "SER212.A", "THR213.A", "VAL214.A",
        "GLY215.A", "ALA216.A", "PHE217.A", "TRP327.B", "PHE330.B", "PHE331.B",
        "ILE333.B", "SER334.B", "LEU335.B", "MET337.B", "PRO338.B", "LEU348.B",
        "ALA349.B", "ILE350.B", "PHE351.B", "ASP352.B", "PHE353.B", "PHE354.B",
        "THR355.B", "TRP356.B", "GLY358.B", "TYR359.B"
    ]
    for res in residues:
        r = ResidueId.from_string(res)
        assert r in resids
Пример #8
0
 def test_from_atom(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)
     name = name or "UNK"
     number = number or 0
     chain = chain or None
     assert resid.name == name
     assert resid.number == number
     assert resid.chain == chain
Пример #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
Пример #10
0
 def test_init_empty(self, name, number, chain):
     resid = ResidueId(name, number, chain)
     assert resid == ResidueId()
Пример #11
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]
Пример #12
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
Пример #13
0
 def test_init(self, mol):
     resid = ResidueId.from_atom(mol.GetAtomWithIdx(0))
     assert mol.resid == resid
Пример #14
0
 def test_repr(self, resid_str):
     resid = ResidueId.from_string(resid_str)
     expected = f"ResidueId({resid.name}, {resid.number}, {resid.chain})"
     assert repr(resid) == expected
Пример #15
0
 def test_lt(self, res1, res2):
     res1 = ResidueId.from_string(res1)
     res2 = ResidueId.from_string(res2)
     assert res1 < res2
Пример #16
0
 def test_from_string(self, resid_str, expected):
     resid = ResidueId.from_string(resid_str)
     assert resid == ResidueId(*expected)
Пример #17
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_
Пример #18
0
 def test_from_atom_no_mi(self):
     atom = Chem.Atom(1)
     resid = ResidueId.from_atom(atom)
     assert resid.name is None
     assert resid.number is None
     assert resid.chain is None
Пример #19
0
 def test_eq(self):
     name, number, chain = "ALA", 1, "A"
     res1 = ResidueId(name, number, chain)
     res2 = ResidueId(name, number, chain)
     assert res1 == res2