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)
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)
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, []
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})
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',))
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)
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)
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", ))
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]