def project(self, mol): """ Project molecule. Parameters ---------- mol : :class:`Molecule <moleculekit.molecule.Molecule>` A :class:`Molecule <moleculekit.molecule.Molecule>` object to project. Returns ------- data : np.ndarray An array containing the projected data. """ getMolProp = lambda prop: self._getMolProp(mol, prop) sel1 = getMolProp('sel1') sel2 = getMolProp('sel2') if np.ndim(sel1) == 1 and np.ndim(sel2) == 1: # normal distances metric = pp_calcDistances(mol, sel1, sel2, self.metric, self.threshold, self.pbc, truncate=self.truncate) else: # minimum distances by groups metric = pp_calcMinDistances(mol, sel1, sel2, self.metric, self.threshold, pbc=self.pbc, truncate=self.truncate) return metric
def closestDistance(mol1, mol2): from moleculekit.projections.util import pp_calcMinDistances mol1 = mol1.copy() mol1.segid[:] = "X" mol2 = mol2.copy() mol2.segid[:] = "Y" mol1.append(mol2) sel1 = mol1.atomselect("segid X")[None, :] sel2 = mol1.atomselect("segid Y")[None, :] return pp_calcMinDistances(mol1, sel1, sel2, periodic=None).squeeze()