def test__string_output_format__binary(self) -> None: fprintr = CircularFPFeaturizer(output_format="sparse_string", fp_mode="binary_folded") fps_str = fprintr.fit_transform(self.smis) # using SMILES # Output shape self.assertEqual(self.n_mols, len(fps_str)) # Fingerprint matrix structure for i, mol in enumerate(self.mols): fps_ref = GetMorganFingerprintAsBitVect( mol, radius=fprintr.radius, useFeatures=fprintr.use_features_, useChirality=fprintr.use_chirality, nBits=fprintr.n_bits_ ) fp_i_from_str = eval("{" + fps_str[i] + "}") for idx in fps_ref.GetOnBits(): self.assertIn(idx, fp_i_from_str)
def test__folded_binary_fingerprints__ecfp(self) -> None: fprintr = CircularFPFeaturizer(fp_mode="binary_folded", n_bits_folded=512) fps_mat_smi = fprintr.fit_transform(self.smis) # using SMILES fps_mat_mol = fprintr.fit_transform(self.mols) # using Mol objects # Output shape self.assertEqual(fps_mat_smi.shape[0], self.n_mols) self.assertEqual(fps_mat_smi.shape[1], fprintr.n_bits_folded) self.assertEqual(fps_mat_mol.shape[0], self.n_mols) self.assertEqual(fps_mat_mol.shape[1], fprintr.n_bits_folded) # Fingerprint matrix structure for i, mol in enumerate(self.mols): fps_ref = GetMorganFingerprintAsBitVect(mol, radius=fprintr.radius, useFeatures=fprintr.use_features_, useChirality=fprintr.use_chirality, nBits=fprintr.n_bits_folded) on_bits = list(fps_ref.GetOnBits()) for j in range(fprintr.n_bits_folded): if j in on_bits: self.assertTrue(fps_mat_smi[i, j]) self.assertTrue(fps_mat_mol[i, j]) else: self.assertFalse(fps_mat_smi[i, j]) self.assertFalse(fps_mat_mol[i, j])