Example #1
0
 def test_ccbmlib_descriptors(self):
     """Test ability to passthrough descriptors to ccbmlib."""
     mol_graph = MolFromSmiles("CCOCC")
     fprint_list = [
         "atom_pairs",
         "hashed_atom_pairs",
         "avalon",
         "maccs_keys",
         "morgan",
         "hashed_morgan",
         "rdkit_fingerprint",
         "torsions",
         "hashed_torsions",
     ]
     for desc in fprint_list:
         descriptor = Descriptor()
         descriptor.make_fingerprint(molecule_graph=mol_graph,
                                     fingerprint_type="ccbmlib:" + desc)
         self.assertTrue(
             descriptor.check_init(),
             "Expected Descriptor object to be initialized",
         )
         self.assertEqual(
             descriptor.label_,
             desc,
             "Expected label of descriptor initialized with "
             "{} to match the fingerprint".format(desc),
         )
Example #2
0
 def test_mordred_descriptors(self):
     """Test ability to passthrough descriptors to Mordred."""
     mol_graph = MolFromSmiles(
         "CC(C)C1=CC(=C(C(=C1)C(C)C)C2=CC=CC=C2P(C3CCCCC3)C4CCCCC4)C(C)C")
     for desc in ["MW", "LogEE_Dt", "BalabanJ"]:
         descriptor = Descriptor()
         descriptor.make_fingerprint(molecule_graph=mol_graph,
                                     fingerprint_type="mordred:" + desc)
         self.assertTrue(
             descriptor.check_init(),
             "Expected Descriptor object to be initialized",
         )
         self.assertEqual(
             descriptor.label_,
             desc,
             "Expected label of descriptor initialized with "
             "{} to match the fingerprint".format(desc),
         )
         self.assertIsInstance(
             descriptor.to_numpy(),
             np.ndarray,
             "Expected numpy.ndarray from to_numpy()",
         )
         with self.assertRaises(ValueError):
             descriptor.to_rdkit()
Example #3
0
    def test_descriptor_make_fingerprint(self):
        """
        Test to verify creation of Descriptor object by
        creating molecular fingerprints from the molecule graph.

        """
        mol_graph = MolFromSmiles("CCC")
        for fprint in SUPPORTED_FPRINTS:
            descriptor = Descriptor()
            descriptor.make_fingerprint(molecule_graph=mol_graph,
                                        fingerprint_type=fprint)
            self.assertTrue(
                descriptor.check_init(),
                "Expected Descriptor object to be initialized",
            )
            self.assertEqual(
                descriptor.label_,
                fprint,
                "Expected label of descriptor initialized with "
                "fingerprint to match the fingerprint",
            )
            self.assertIsInstance(
                descriptor.to_numpy(),
                np.ndarray,
                "Expected numpy.ndarray from to_numpy()",
            )
            self.assertIsInstance(
                descriptor.to_rdkit(),
                ExplicitBitVect,
                "Expected to_rdkit() to return "
                "ExplicitBitVect representation "
                f"of {fprint} fingerprint",
            )
Example #4
0
 def test_nonexistent_mordred_descriptors(self):
     """Test ability to pass through descriptors to Mordred."""
     mol_graph = MolFromSmiles("C")
     for desc in ["", "ReallyInvalidDescriptorName"]:
         descriptor = Descriptor()
         with self.assertRaises(MordredCalculatorError):
             descriptor.make_fingerprint(
                 molecule_graph=mol_graph,
                 fingerprint_type="mordred:" + desc,
             )
Example #5
0
 def test_bad_descriptors_padelpy_descriptors(self):
     """Test ability to pass through invalid descriptors to padelpy."""
     mol_graph = MolFromSmiles("C")
     for desc in ["", "ReallyInvalidDescriptorName"]:
         descriptor = Descriptor()
         with self.assertRaises(RuntimeError):
             descriptor.make_fingerprint(
                 molecule_graph=mol_graph,
                 fingerprint_type="padelpy:" + desc,
                 fingerprint_params={'timeout': 2},
             )
Example #6
0
 def test_exptl_descriptors(self):
     """Test ability to use experimental descriptors."""
     mol_graph = MolFromSmiles("CCOCC")
     fprint_list = [
         "maccs_keys",
         "atom-pair_fingerprint",
         "torsion_fingerprint",
     ]
     for desc in fprint_list:
         descriptor = Descriptor()
         descriptor.make_fingerprint(molecule_graph=mol_graph,
                                     fingerprint_type=desc)
         self.assertTrue(
             descriptor.check_init(),
             "Expected Descriptor object to be initialized",
         )
         self.assertEqual(
             descriptor.label_,
             desc,
             "Expected label of descriptor initialized with "
             "{} to match the fingerprint".format(desc),
         )
Example #7
0
 def test_padelpy_descriptors(self):
     """Test ability to passthrough descriptors to PadelPy."""
     mol_graph = MolFromSmiles("CCOCC")
     for desc in ["MATS7e", "Ti", "ATSC6p"]:
         descriptor = Descriptor()
         descriptor.make_fingerprint(molecule_graph=mol_graph,
                                     fingerprint_type="padelpy:" + desc)
         self.assertTrue(
             descriptor.check_init(),
             "Expected Descriptor object to be initialized",
         )
         self.assertEqual(
             descriptor.label_,
             desc,
             "Expected label of descriptor initialized with "
             "{} to match the fingerprint".format(desc),
         )
         self.assertIsInstance(
             descriptor.to_numpy(),
             np.ndarray,
             "Expected numpy.ndarray from to_numpy()",
         )
         with self.assertRaises(ValueError):
             descriptor.to_rdkit()
Example #8
0
    def test_topological_fprint_min_path_lesser_than_atoms(self):
        atomic_mols = [
            MolFromSmiles(smiles) for smiles in ['C', 'O', 'N', 'P']
        ]
        diatomic_mols = [
            MolFromSmiles(smiles) for smiles in ['CC', 'CO', 'CN', 'CP']
        ]
        triatomic_mols = [
            MolFromSmiles(smiles) for smiles in ['CCC', 'COO', 'CCN', 'CCP']
        ]
        min_path = 1
        for mol in atomic_mols:
            with self.assertRaises(InvalidConfigurationError):
                descriptor = Descriptor()
                descriptor.make_fingerprint(
                    molecule_graph=mol,
                    fingerprint_type='topological_fingerprint',
                    fingerprint_params={'min_path': min_path})
        for diatomic_mol in diatomic_mols:
            descriptor = Descriptor()
            try:
                descriptor.make_fingerprint(
                    molecule_graph=diatomic_mol,
                    fingerprint_type='topological_fingerprint',
                    fingerprint_params={'min_path': min_path})
            except InvalidConfigurationError:
                self.fail("Did not expect Descriptor to raise "
                          "InvalidConfigurationError")
        for triatomic_mol in triatomic_mols:
            descriptor = Descriptor()
            try:
                descriptor.make_fingerprint(
                    molecule_graph=triatomic_mol,
                    fingerprint_type='topological_fingerprint',
                    fingerprint_params={'min_path': min_path})
            except InvalidConfigurationError:
                self.fail("Did not expect Descriptor to raise "
                          "InvalidConfigurationError")

        min_path = 2
        for mol in atomic_mols:
            with self.assertRaises(InvalidConfigurationError):
                descriptor = Descriptor()
                descriptor.make_fingerprint(
                    molecule_graph=mol,
                    fingerprint_type='topological_fingerprint',
                    fingerprint_params={'min_path': min_path})
        for diatomic_mol in diatomic_mols:
            with self.assertRaises(InvalidConfigurationError):
                descriptor = Descriptor()
                descriptor.make_fingerprint(
                    molecule_graph=diatomic_mol,
                    fingerprint_type='topological_fingerprint',
                    fingerprint_params={'min_path': min_path})
        for triatomic_mol in triatomic_mols:
            descriptor = Descriptor()
            try:
                descriptor.make_fingerprint(
                    molecule_graph=triatomic_mol,
                    fingerprint_type='topological_fingerprint',
                    fingerprint_params={'min_path': min_path})
            except InvalidConfigurationError:
                self.fail("Did not expect Descriptor to raise "
                          "InvalidConfigurationError")

        min_path = 3
        for mol in atomic_mols:
            with self.assertRaises(InvalidConfigurationError):
                descriptor = Descriptor()
                descriptor.make_fingerprint(
                    molecule_graph=mol,
                    fingerprint_type='topological_fingerprint',
                    fingerprint_params={'min_path': min_path})
        for diatomic_mol in diatomic_mols:
            with self.assertRaises(InvalidConfigurationError):
                descriptor = Descriptor()
                descriptor.make_fingerprint(
                    molecule_graph=diatomic_mol,
                    fingerprint_type='topological_fingerprint',
                    fingerprint_params={'min_path': min_path})
        for triatomic_mol in triatomic_mols:
            with self.assertRaises(InvalidConfigurationError):
                descriptor = Descriptor()
                descriptor.make_fingerprint(
                    molecule_graph=triatomic_mol,
                    fingerprint_type='topological_fingerprint',
                    fingerprint_params={'min_path': min_path})