Example #1
0
 def setUp(self):
     enum = ScoringFunctionComponentNameEnum()
     predictive_property = create_predictive_property_component_regression()
     activity = create_activity_component_regression()
     qed_score = ComponentParameters(component_type=enum.QED_SCORE,
                                     name="qed_score_name",
                                     weight=1.,
                                     smiles=[],
                                     model_path="",
                                     specific_parameters={})
     custom_alerts = ComponentParameters(component_type=enum.CUSTOM_ALERTS,
                                         name="custom_alerts_name",
                                         weight=1.,
                                         smiles=["CCCOOO"],
                                         model_path="",
                                         specific_parameters={})
     matching_substructure = ComponentParameters(
         component_type=enum.MATCHING_SUBSTRUCTURE,
         name="matching_substructure_name",
         weight=1.,
         smiles=["*CCC"],
         model_path="",
         specific_parameters={})
     self.sf_instance = CustomSum(parameters=[
         activity, qed_score, custom_alerts, matching_substructure,
         predictive_property
     ])
Example #2
0
class Test_custom_sum(unittest.TestCase):

    def setUp(self):
        enum = ScoringFunctionComponentNameEnum()
        predictive_property = create_predictive_property_component_regression()
        activity = create_activity_component_regression()
        qed_score = ComponentParameters(component_type=enum.QED_SCORE,
                                        name="qed_score_name",
                                        weight=1.,
                                        smiles=[],
                                        model_path="",
                                        specific_parameters={})
        custom_alerts = ComponentParameters(component_type=enum.CUSTOM_ALERTS,
                                            name="custom_alerts_name",
                                            weight=1.,
                                            smiles=["CCCOOO"],
                                            model_path="",
                                            specific_parameters={})
        matching_substructure = ComponentParameters(component_type=enum.MATCHING_SUBSTRUCTURE,
                                                    name="matching_substructure_name",
                                                    weight=1.,
                                                    smiles=["*CCC"],
                                                    model_path="",
                                                    specific_parameters={})
        self.sf_instance = CustomSum(
            parameters=[activity, qed_score, custom_alerts, matching_substructure, predictive_property])

    def test_special_selectivity_multiplicative_no_sigm_trans_1(self):
        score = self.sf_instance.get_final_score(smiles=["O=S(=O)(c3ccc(n1nc(cc1c2ccc(cc2)C)C(F)(F)F)cc3)N"])
        self.assertAlmostEqual(score.total_score[0], 0.3631, 3)

    def test_special_selectivity_multiplicative_no_sigm_trans_3(self):
        score = self.sf_instance.get_final_score(smiles=["CCCOOOCCCOOO"])
        self.assertEqual(score.total_score, 0)
 def setUpClass(self):
     sf_enum = ScoringFunctionComponentNameEnum()
     csp_enum = ComponentSpecificParametersEnum()
     ts_parameters = ComponentParameters(
         component_type=sf_enum.NUM_HBD_LIPINSKI,
         name="NumHBD_Lipinski",
         weight=1.,
         smiles=[],
         model_path="",
         specific_parameters={csp_enum.TRANSFORMATION: False})
     self.sf_state = CustomSum(parameters=[ts_parameters])
Example #4
0
 def setUpClass(self):
     sf_enum = ScoringFunctionComponentNameEnum()
     csp_enum = ComponentSpecificParametersEnum()
     ts_parameters = ComponentParameters(
         component_type=sf_enum.NUM_ROTATABLE_BONDS,
         name="NumRotatableBonds",
         weight=1.,
         smiles=[],
         model_path="",
         specific_parameters={csp_enum.TRANSFORMATION: False})
     self.sf_state = CustomSum(parameters=[ts_parameters])
Example #5
0
 def setUpClass(self):
     sf_enum = ScoringFunctionComponentNameEnum()
     csp_enum = ComponentSpecificParametersEnum()
     ts_parameters = ComponentParameters(
         component_type=sf_enum.MOLECULAR_WEIGHT,
         name="MW",
         weight=1.,
         smiles=[],
         model_path="",
         specific_parameters={csp_enum.TRANSFORMATION: False})
     self.sf_state = CustomSum(parameters=[ts_parameters])
Example #6
0
    def setUpClass(self):
        sf_enum = ScoringFunctionComponentNameEnum()
        utils_general.set_default_device_cuda()
        self.log_path = MAIN_TEST_PATH

        if not os.path.isdir(self.log_path):
            os.makedirs(self.log_path)
        smiles = np.array(['CCC', 'CCCC', 'CCCCCC'])
        score = [0, 0.5, 1.]
        prior_likelihood = ts.tensor([0, 10, 100])

        prior = Model.load_from_file(RANDOM_PRIOR_PATH)
        config = InceptionConfiguration(smiles=smiles,
                                        memory_size=4,
                                        sample_size=4)
        scoring = ComponentParameters(
            component_type=sf_enum.JACCARD_DISTANCE,
            name="jaccard_distance",
            weight=1.,
            smiles=[
                "CONN", "O=S(=O)(c3ccc(n1nc(cc1c2ccc(cc2)C)C(F)(F)F)cc3)N"
            ],
            model_path="",
            specific_parameters={})
        scoringfunction = CustomSum(parameters=[scoring])
        self.inception_model = Inception(configuration=config,
                                         scoring_function=scoringfunction,
                                         prior=prior)

        self.inception_model.add(smiles, score, prior_likelihood)
Example #7
0
class Test_tpsa_score_with_double_sigmoid(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        sf_enum = ScoringFunctionComponentNameEnum()
        csp_enum = ComponentSpecificParametersEnum()
        tt_enum = TransformationTypeEnum()
        specific_parameters = {
            csp_enum.TRANSFORMATION: True,
            csp_enum.LOW: 2,
            csp_enum.HIGH: 5,
            csp_enum.TRANSFORMATION_TYPE: tt_enum.STEP
        }
        ts_parameters = ComponentParameters(
            component_type=sf_enum.NUM_ROTATABLE_BONDS,
            name="NumRotatableBonds",
            weight=1.,
            smiles=[],
            model_path="",
            specific_parameters=specific_parameters)
        self.sf_state = CustomSum(parameters=[ts_parameters])

    def test_num_rot_1(self):
        smiles = [
            "OC(=O)P(=O)(O)O", "C12C3C4C1C5C2C3C45", '[NH4+].[Cl-]',
            'n1cccc2ccccc12',
            'O=S(=O)(c3ccc(n1nc(cc1c2ccc(cc2)C)C(F)(F)F)cc3)N'
        ]
        values = np.array([0., 0., 0., 0., 1.])
        score = self.sf_state.get_final_score(smiles=smiles)
        npt.assert_array_equal(score.total_score, values)
class Test_tpsa_score_with_double_sigmoid(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        sf_enum = ScoringFunctionComponentNameEnum()
        csp_enum = ComponentSpecificParametersEnum()
        tt_enum = TransformationTypeEnum()
        specific_parameters = {
            csp_enum.TRANSFORMATION: True,
            csp_enum.LOW: 0,
            csp_enum.HIGH: 1,
            csp_enum.TRANSFORMATION_TYPE: tt_enum.STEP
        }
        ts_parameters = ComponentParameters(
            component_type=sf_enum.NUM_HBD_LIPINSKI,
            name="NumHBD_Lipinski",
            weight=1.,
            smiles=[],
            model_path="",
            specific_parameters=specific_parameters)
        self.sf_state = CustomSum(parameters=[ts_parameters])

    def test_hbd_1(self):
        smiles = ["C(=O)N", 'O=S(=O)(c3ccc(n1nc(cc1c2ccc(cc2)C)C(F)(F)F)cc3)N']
        values = np.array([1.0, 1.0])
        score = self.sf_state.get_final_score(smiles=smiles)
        npt.assert_array_equal(score.total_score, values)
Example #9
0
class Test_num_rings_score_no_transformation(unittest.TestCase):

    @classmethod
    def setUpClass(self):
        sf_enum = ScoringFunctionComponentNameEnum()
        csp_enum = ComponentSpecificParametersEnum()
        ts_parameters = ComponentParameters(component_type=sf_enum.NUM_RINGS,
                                            name="Number of Rings",
                                            weight=1.,
                                            smiles=[],
                                            model_path="",
                                            specific_parameters={
                                                csp_enum.TRANSFORMATION: False
                                            })
        self.sf_state = CustomSum(parameters=[ts_parameters])

    def test_num_rings_1(self):
        smiles = [
                  "C1=CC2=C(C=C1)C1=CC=CC=C21",
                  "C12C3C4C1C5C2C3C45",
                   '[NH4+].[Cl-]',
                  'n1cccc2ccccc12',
                  'O=S(=O)(c3ccc(n1nc(cc1c2ccc(cc2)C)C(F)(F)F)cc3)N'
                  ]
        values = np.array([3., 6., 0., 2., 3.])
        score = self.sf_state.get_final_score(smiles=smiles)
        npt.assert_array_almost_equal(score.total_score, values, 2)
Example #10
0
class Test_slogp_score_with_double_sigmoid(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        sf_enum = ScoringFunctionComponentNameEnum()
        csp_enum = ComponentSpecificParametersEnum()
        tt_enum = TransformationTypeEnum()
        specific_parameters = {
            csp_enum.TRANSFORMATION: True,
            csp_enum.LOW: 1,
            csp_enum.HIGH: 3,
            csp_enum.COEF_DIV: 3,
            csp_enum.COEF_SI: 10,
            csp_enum.COEF_SE: 10,
            csp_enum.TRANSFORMATION_TYPE: tt_enum.DOUBLE_SIGMOID
        }
        ts_parameters = ComponentParameters(
            component_type=sf_enum.SLOGP,
            name="SlogP",
            weight=1.,
            smiles=[],
            model_path="",
            specific_parameters=specific_parameters)
        self.sf_state = CustomSum(parameters=[ts_parameters])

    def test_slogp_1(self):
        smiles = [
            "OC(=O)P(=O)(O)O", "Cc1ccccc1N1C(=O)c2cc(S(N)(=O)=O)c(Cl)cc2NC1C",
            "N12CC3C(=NC4C(C=3)=CC=CC=4)C1=CC1=C(COC(=O)C1(O)CC)C2=O",
            "N12CC3C(=NC4C(C=3C(=O)O)=CC3=C(OCCO3)C=4)C1=CC1=C(COC(=O)C1(O)CC)C2=O",
            "FC1C=CC(CC(=NS(=O)(=O)C2C=CC(C)=CC=2)N2CCN(CC3C4C(=CC=CC=4)N=C4C=3CN3C4=CC4=C(COC(=O)C4(O)CC)C3=O)CC2)=CC=1"
        ]
        values = np.array([0.0, 0.9, 1.0, 1.0, 0.0])
        score = self.sf_state.get_final_score(smiles=smiles)
        npt.assert_array_almost_equal(score.total_score, values, 2)
Example #11
0
class Test_tpsa_score_with_double_sigmoid(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        sf_enum = ScoringFunctionComponentNameEnum()
        csp_enum = ComponentSpecificParametersEnum()
        tt_enum = TransformationTypeEnum()
        specific_parameters = {
            csp_enum.TRANSFORMATION: True,
            csp_enum.LOW: 0,
            csp_enum.HIGH: 135,
            csp_enum.COEF_DIV: 100,
            csp_enum.COEF_SI: 200,
            csp_enum.COEF_SE: 200,
            csp_enum.TRANSFORMATION_TYPE: tt_enum.DOUBLE_SIGMOID
        }
        ts_parameters = ComponentParameters(
            component_type=sf_enum.TPSA,
            name="TPSA",
            weight=1.,
            smiles=[],
            model_path="",
            specific_parameters=specific_parameters)
        self.sf_state = CustomSum(parameters=[ts_parameters])

    def test_tpsa_1(self):
        smiles = [
            "OC(=O)P(=O)(O)O", "C12C3C4C1C5C2C3C45", '[NH4+].[Cl-]',
            'n1cccc2ccccc12',
            'O=S(=O)(c3ccc(n1nc(cc1c2ccc(cc2)C)C(F)(F)F)cc3)N'
        ]
        values = np.array([1., 0.5, 1., 1., 1.])
        score = self.sf_state.get_final_score(smiles=smiles)
        npt.assert_array_almost_equal(score.total_score, values, 2)
Example #12
0
 def setUpClass(self):
     sf_enum = ScoringFunctionComponentNameEnum()
     csp_enum = ComponentSpecificParametersEnum()
     tt_enum = TransformationTypeEnum()
     specific_parameters = {
         csp_enum.TRANSFORMATION: True,
         csp_enum.LOW: 2,
         csp_enum.HIGH: 5,
         csp_enum.TRANSFORMATION_TYPE: tt_enum.STEP
     }
     ts_parameters = ComponentParameters(
         component_type=sf_enum.NUM_ROTATABLE_BONDS,
         name="NumRotatableBonds",
         weight=1.,
         smiles=[],
         model_path="",
         specific_parameters=specific_parameters)
     self.sf_state = CustomSum(parameters=[ts_parameters])
 def setUpClass(self):
     sf_enum = ScoringFunctionComponentNameEnum()
     csp_enum = ComponentSpecificParametersEnum()
     tt_enum = TransformationTypeEnum()
     specific_parameters = {
         csp_enum.TRANSFORMATION: True,
         csp_enum.LOW: 0,
         csp_enum.HIGH: 1,
         csp_enum.TRANSFORMATION_TYPE: tt_enum.STEP
     }
     ts_parameters = ComponentParameters(
         component_type=sf_enum.NUM_HBD_LIPINSKI,
         name="NumHBD_Lipinski",
         weight=1.,
         smiles=[],
         model_path="",
         specific_parameters=specific_parameters)
     self.sf_state = CustomSum(parameters=[ts_parameters])
Example #14
0
 def setUpClass(self):
     sf_enum = ScoringFunctionComponentNameEnum()
     csp_enum = ComponentSpecificParametersEnum()
     tt_enum = TransformationTypeEnum()
     specific_parameters = {
         csp_enum.TRANSFORMATION: True,
         csp_enum.LOW: 0,
         csp_enum.HIGH: 135,
         csp_enum.COEF_DIV: 100,
         csp_enum.COEF_SI: 200,
         csp_enum.COEF_SE: 200,
         csp_enum.TRANSFORMATION_TYPE: tt_enum.DOUBLE_SIGMOID
     }
     ts_parameters = ComponentParameters(
         component_type=sf_enum.TPSA,
         name="TPSA",
         weight=1.,
         smiles=[],
         model_path="",
         specific_parameters=specific_parameters)
     self.sf_state = CustomSum(parameters=[ts_parameters])
 def test_eval_add_2(self):
     sf_enum = ScoringFunctionComponentNameEnum()
     smiles = np.array(['CCC', 'CCCC', 'O=S(=O)(c3ccc(n1nc(cc1c2ccc(cc2)C)C(F)(F)F)cc3)N'])
     scoring = ComponentParameters(component_type=sf_enum.TANIMOTO_SIMILARITY,
                                   name="tanimoto_similarity",
                                   weight=1.,
                                   smiles=["CCC", "CC"],
                                   model_path="",
                                   specific_parameters={})
     scoringfunction = CustomSum(parameters=[scoring])
     prior = Model.load_from_file(RANDOM_PRIOR_PATH)
     self.inception_model.evaluate_and_add(smiles, scoringfunction, prior)
     self.assertEqual(len(self.inception_model.memory), 4)
     nt.assert_almost_equal(np.array(self.inception_model.memory['score'].values),
                            np.array([0.96, 0.9412, 0.9286, 0.0345]), 4)
class Test_hbd_score_no_transformation(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        sf_enum = ScoringFunctionComponentNameEnum()
        csp_enum = ComponentSpecificParametersEnum()
        ts_parameters = ComponentParameters(
            component_type=sf_enum.NUM_HBD_LIPINSKI,
            name="NumHBD_Lipinski",
            weight=1.,
            smiles=[],
            model_path="",
            specific_parameters={csp_enum.TRANSFORMATION: False})
        self.sf_state = CustomSum(parameters=[ts_parameters])

    def test_hbd_1(self):
        smiles = ["C(=O)N", 'O=S(=O)(c3ccc(n1nc(cc1c2ccc(cc2)C)C(F)(F)F)cc3)N']
        values = np.array([1., 1.])
        score = self.sf_state.get_final_score(smiles=smiles)
        npt.assert_array_equal(score.total_score, values)
Example #17
0
 def test_empty_eval_add_1(self):
     sf_enum = ScoringFunctionComponentNameEnum()
     smiles = np.array(['CCC', 'CCCC', 'CC', 'COO'])
     scoring = ComponentParameters(
         component_type=sf_enum.TANIMOTO_SIMILARITY,
         name="tanimoto_similarity",
         weight=1.,
         smiles=["CCC", "CC"],
         model_path="",
         specific_parameters={})
     scoringfunction = CustomSum(parameters=[scoring])
     prior = Model.load_from_file(RANDOM_PRIOR_PATH)
     self.inception_model.evaluate_and_add(smiles, scoringfunction, prior)
     self.assertEqual(len(self.inception_model.memory), 4)
     nt.assert_almost_equal(
         np.array(self.inception_model.memory['score'].values),
         np.array([1, 1, 0.6667, 0.1250]), 4)
     self.assertEqual(
         len(np.array(self.inception_model.memory['likelihood'].values)), 4)
Example #18
0
class Test_mw_score_no_transformation(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        sf_enum = ScoringFunctionComponentNameEnum()
        csp_enum = ComponentSpecificParametersEnum()
        ts_parameters = ComponentParameters(
            component_type=sf_enum.MOLECULAR_WEIGHT,
            name="MW",
            weight=1.,
            smiles=[],
            model_path="",
            specific_parameters={csp_enum.TRANSFORMATION: False})
        self.sf_state = CustomSum(parameters=[ts_parameters])

    def test_mw_1(self):
        smiles = [
            "[NH4+].[Cl-]", 'n1cccc2ccccc12',
            'O=S(=O)(c3ccc(n1nc(cc1c2ccc(cc2)C)C(F)(F)F)cc3)N'
        ]
        values = np.array([53.49, 129.16, 381.38])
        score = self.sf_state.get_final_score(smiles=smiles)
        npt.assert_array_almost_equal(score.total_score, values, 2)
Example #19
0
class Test_tpsa_score_no_transformation(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        sf_enum = ScoringFunctionComponentNameEnum()
        csp_enum = ComponentSpecificParametersEnum()
        ts_parameters = ComponentParameters(
            component_type=sf_enum.TPSA,
            name="TPSA",
            weight=1.,
            smiles=[],
            model_path="",
            specific_parameters={csp_enum.TRANSFORMATION: False})
        self.sf_state = CustomSum(parameters=[ts_parameters])

    def test_tpsa_1(self):
        smiles = [
            "OC(=O)P(=O)(O)O", "C12C3C4C1C5C2C3C45", '[NH4+].[Cl-]',
            'n1cccc2ccccc12',
            'O=S(=O)(c3ccc(n1nc(cc1c2ccc(cc2)C)C(F)(F)F)cc3)N'
        ]
        values = np.array([94.83, 0., 36.5, 12.89, 77.98])
        score = self.sf_state.get_final_score(smiles=smiles)
        npt.assert_array_almost_equal(score.total_score, values, 2)
Example #20
0
class Test_slogp_score_no_transformation(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        sf_enum = ScoringFunctionComponentNameEnum()
        csp_enum = ComponentSpecificParametersEnum()
        ts_parameters = ComponentParameters(
            component_type=sf_enum.SLOGP,
            name="SlogP",
            weight=1.,
            smiles=[],
            model_path="",
            specific_parameters={csp_enum.TRANSFORMATION: False})
        self.sf_state = CustomSum(parameters=[ts_parameters])

    def test_slogp_1(self):
        smiles = [
            "OC(=O)P(=O)(O)O", "Cc1ccccc1N1C(=O)c2cc(S(N)(=O)=O)c(Cl)cc2NC1C",
            "N12CC3C(=NC4C(C=3)=CC=CC=4)C1=CC1=C(COC(=O)C1(O)CC)C2=O",
            "N12CC3C(=NC4C(C=3C(=O)O)=CC3=C(OCCO3)C=4)C1=CC1=C(COC(=O)C1(O)CC)C2=O",
            "FC1C=CC(CC(=NS(=O)(=O)C2C=CC(C)=CC=2)N2CCN(CC3C4C(=CC=CC=4)N=C4C=3CN3C4=CC4=C(COC(=O)C4(O)CC)C3=O)CC2)=CC=1"
        ]
        values = np.array([-0.1579, 2.71412, 2.0796, 1.549, 4.67482])
        score = self.sf_state.get_final_score(smiles=smiles)
        npt.assert_array_almost_equal(score.total_score, values, 2)