示例#1
0
    def test_convertFromMolecule(self):
        from moleculekit.molecule import mol_equal 

        mol = Molecule(self.benzamidine_mol2)
        sm = SmallMol(mol)

        assert mol_equal(sm, mol, exceptFields=['serial', 'name'], _logger=False)

        mol = Molecule(self.indole_mol2)
        sm = SmallMol(mol, force_reading=True)
        # Force reading writes to sdf which loses atomtypes and charges
        assert mol_equal(sm, mol, exceptFields=['serial', 'name', 'atomtype', 'charge'], _logger=False)
    def test_channels_with_metals(self):
        from moleculekit.home import home
        from moleculekit.molecule import Molecule, mol_equal
        from os.path import join

        ref_channels = np.load(
            join(home(dataDir='test-voxeldescriptors'), '1ATL_channels.npy'))

        ref_mol = Molecule(
            join(home(dataDir='test-voxeldescriptors'),
                 '1ATL_atomtyped.psf'))  # Need PSF to store the atomtypes!
        ref_mol.read(
            join(home(dataDir='test-voxeldescriptors'), '1ATL_atomtyped.pdb'))

        mol = Molecule(
            join(
                home(dataDir='test-voxeldescriptors'),
                '1ATL_prepared.psf'))  # Need PSF to store the correct charges!
        mol.read(
            join(home(dataDir='test-voxeldescriptors'), '1ATL_prepared.pdb'))

        channels, mol_atomtyped = getChannels(mol)

        assert np.array_equal(ref_channels, channels)
        assert mol_equal(mol_atomtyped, ref_mol)
示例#3
0
    def test_convertToMolecule(self):
        from moleculekit.molecule import mol_equal 

        sm = SmallMol(self.benzamidine_mol2)
        mol = sm.toMolecule(formalcharges=False)

        assert mol_equal(sm, mol, exceptFields=['serial', 'name'], _logger=False)
示例#4
0
def _singleMolfile(sims):
    from moleculekit.molecule import mol_equal
    from htmd.util import ensurelist
    if isinstance(sims, Molecule):
        return False, []
    elif isinstance(sims, np.ndarray):
        molfiles = []
        for s in sims:
            molfiles.append(tuple(ensurelist(s.molfile)))

        uqmolfiles = list(set(molfiles))

        if len(uqmolfiles) == 0:
            raise RuntimeError('No molfiles found in simlist')
        elif len(uqmolfiles) == 1:
            return True, uqmolfiles[0]
        elif len(
                uqmolfiles
        ) > 1:  # If more than one molfile load them and see if they are different Molecules
            ref = Molecule(uqmolfiles[0], _logger=False)
            for i in range(1, len(uqmolfiles)):
                mol = Molecule(uqmolfiles[i], _logger=False)
                if not mol_equal(ref, mol, exceptFields=['coords']):
                    return False, []
            return True, uqmolfiles[0]
    return False, []
示例#5
0
    def test_crystalpacking_biological_unit(self):
        from moleculekit.home import home
        from os.path import join
        from moleculekit.molecule import mol_equal

        mol = generateCrystalPacking('1out')
        refmol = Molecule(join(home(dataDir='test-crystalpacking'), '1out_packing.pdb'))
        assert mol_equal(mol, refmol, fieldPrecision={'coords': 1e-3})
示例#6
0
  def test_preparation(self):
      from moleculekit.home import home
      from moleculekit.molecule import Molecule, mol_equal
      from os import path
      mol = Molecule(path.join(home(dataDir='test-voxeldescriptors'), '1ATL.pdb'))
      ref = Molecule(path.join(home(dataDir='test-voxeldescriptors'), '1ATL_prepared.pdb'))
      mol2 = prepareProteinForAtomtyping(mol, verbose=False)
 
      assert mol_equal(mol2, ref, exceptFields=('coords',))
示例#7
0
    def test_convertFromMolecule(self):
        from moleculekit.molecule import mol_equal

        mol = Molecule(self.benzamidine_mol2)
        sm = SmallMol(mol)

        assert mol_equal(sm,
                         mol,
                         exceptFields=['serial', 'name'],
                         _logger=False)
示例#8
0
    def test_convertToMolecule(self):
        from moleculekit.molecule import mol_equal

        sm = SmallMol(self.benzamidine_mol2)
        mol = sm.toMolecule()

        assert mol_equal(sm,
                         mol,
                         exceptFields=["serial", "name"],
                         _logger=False)
示例#9
0
    def test_preparation(self):
        from moleculekit.home import home
        from moleculekit.molecule import Molecule, mol_equal
        from os import path

        mol = Molecule(path.join(home(dataDir="test-atomtyper"), "1ATL.pdb"))
        mol.remove('resname "0QI"')
        ref = Molecule(
            path.join(home(dataDir="test-atomtyper"), "1ATL_prepared.pdb"))
        mol2 = prepareProteinForAtomtyping(mol, pH=7.0, verbose=False)

        assert mol_equal(mol2, ref, exceptFields=("coords", ))
示例#10
0
def _monitoringThread():
    global pymolViewingMols
    global showing
    from pymol import cmd
    import time

    def _view(mol, viewname):
        topo = tempname(suffix=".cif")
        xtc = tempname(suffix=".xtc")
        mol.write(topo)
        mol.write(xtc)
        cmd.delete(viewname)
        cmd.load(topo, viewname)
        cmd.load_traj(xtc, viewname, state=1)
        cmd.dss()  # Guess SS
        os.remove(topo)
        os.remove(xtc)
        showing[viewname] = True

    curr_mols = {key: val.copy() for key, val in pymolViewingMols.items()}
    for viewname in curr_mols:
        _view(curr_mols[viewname], viewname)

    while True:
        # print("KEYS", curr_mols.keys())
        new_keys = np.setdiff1d(list(pymolViewingMols.keys()),
                                list(curr_mols.keys()))
        for viewname in new_keys:
            curr_mols[viewname] = pymolViewingMols[viewname].copy()
            _view(curr_mols[viewname], viewname)
            # print("viewed new mol")

        for viewname in curr_mols:
            if not mol_equal(curr_mols[viewname],
                             pymolViewingMols[viewname],
                             _logger=False):
                curr_mols[viewname] = pymolViewingMols[viewname].copy()
                _view(curr_mols[viewname], viewname)
                # print("updated existing mol")

        time.sleep(_checkFrequency)

        # Check if molecule which was showing before does not exist in viewer anymore
        # If it doesn't remove it from our lists here to clean-up
        pymol_objects = cmd.get_object_list("all")
        todelete = []
        for key in showing:
            if key not in pymol_objects:
                todelete.append(key)
        for key in todelete:
            del showing[key]
            del curr_mols[key]
            del pymolViewingMols[key]