Example #1
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)
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 #3
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 #4
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)
Example #5
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 #6
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)
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 #8
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 #9
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 #10
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)