示例#1
0
 def __init__(self, parameters: List[ComponentParameters], parallel=False):
     self.component_enum = ScoringFunctionComponentNameEnum()
     self.component_specific_parameters = ComponentSpecificParametersEnum()
     factory = ScoreComponentFactory(parameters)
     self.scoring_components = factory.create_score_components()
     if parallel:
         self.get_final_score = self._parallel_final_score
示例#2
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
     ])
示例#3
0
    def setUp(self):
        self.scaffold_enum = ScaffoldFilterEnum()
        self.sf_enum = ScoringFunctionComponentNameEnum()
        self.workfolders = [MAIN_TEST_PATH]
        # create a scaffold filter and fill it with a few entries
        smiles = [
            "O=S(=O)(c3ccc(n1nc(cc1c2ccc(cc2)C)C(F)(F)F)cc3)N", "CCC", "CCCCC",
            "CC"
        ]
        scores = np.array([1.0, 0.5, 0.4, 0.3])
        valid_idx = [0, 1, 2, 3]
        component_parameters = ComponentParameters(
            component_type=self.sf_enum.TANIMOTO_SIMILARITY,
            name="tanimoto_similarity",
            weight=1.,
            smiles=smiles,
            model_path="",
            specific_parameters={})
        component_score_summary = ComponentSummary(scores,
                                                   component_parameters)

        final_summary = FinalSummary(scores, smiles, valid_idx,
                                     [component_score_summary],
                                     [component_score_summary])

        sf_parameters = ScaffoldParameters(name=self.scaffold_enum.NO_FILTER,
                                           minscore=0.5,
                                           minsimilarity=0.4,
                                           nbmax=1)
        scaffold_filter_factory = ScaffoldFilterFactory()
        self.scaffold_filter = scaffold_filter_factory.load_scaffold_filter(
            sf_parameters)
        self.scaffold_filter.score(final_summary)
示例#4
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)
 def __init__(self, configuration: GeneralConfigurationEnvelope):
     super().__init__(configuration)
     self._rows = 2
     self._columns = 5
     self._sample_size = self._rows * self._columns
     self._sf_component_enum = ScoringFunctionComponentNameEnum()
     self._is_dev = ull._is_development_environment()
def create_custom_alerts_configuration():
    custom_alerts_list = [
        '[*;r7]',
        '[*;r8]',
        '[*;r9]',
        '[*;r10]',
        '[*;r11]',
        '[*;r12]',
        '[*;r13]',
        '[*;r14]',
        '[*;r15]',
        '[*;r16]',
        '[*;r17]',
        '[#8][#8]',
        '[#6;+]',
        '[#16][#16]',
        '[#7;!n][S;!$(S(=O)=O)]',
        '[#7;!n][#7;!n]',
        'C#C',
        'C(=[O,S])[O,S]',
        '[#7;!n][C;!$(C(=[O,N])[N,O])][#16;!s]',
        '[#7;!n][C;!$(C(=[O,N])[N,O])][#7;!n]',
        '[#7;!n][C;!$(C(=[O,N])[N,O])][#8;!o]',
        '[#8;!o][C;!$(C(=[O,N])[N,O])][#16;!s]',
        '[#8;!o][C;!$(C(=[O,N])[N,O])][#8;!o]',
        '[#16;!s][C;!$(C(=[O,N])[N,O])][#16;!s]']
    sf_enum = ScoringFunctionComponentNameEnum()
    parameters = ComponentParameters(component_type=sf_enum.CUSTOM_ALERTS,
                                     name="custom_alerts",
                                     weight=1.,
                                     smiles=custom_alerts_list,
                                     model_path="",
                                     specific_parameters={})
    return parameters
 def setUpClass(cls):
     enum = ScoringFunctionComponentNameEnum()
     parameters = ComponentParameters(component_type=enum.TANIMOTO_SIMILARITY,
                                      name="tanimoto_similarity",
                                      weight=1.,
                                      smiles=["CCC", "O=S(=O)(c3ccc(n1nc(cc1c2ccc(cc2)C)C(F)(F)F)cc3)N"],
                                      model_path="",
                                      specific_parameters={})
     cls.component = TanimotoSimilarity(parameters)
    def setUpClass(self):
        csp_enum = ComponentSpecificParametersEnum()
        transf_type = TransformationTypeEnum()
        sf_enum = ScoringFunctionComponentNameEnum()
        activity = create_activity_component_regression()
        activity.specific_parameters[
            csp_enum.TRANSFORMATION_TYPE] = transf_type.DOUBLE_SIGMOID
        activity.specific_parameters[csp_enum.COEF_DIV] = 100.
        activity.specific_parameters[csp_enum.COEF_SI] = 150.
        activity.specific_parameters[csp_enum.COEF_SE] = 150.
        off_activity = create_offtarget_activity_component_regression()

        delta_params = {
            "high": 3.0,
            "k": 0.25,
            "low": 0.0,
            "transformation": True,
            "transformation_type": "sigmoid"
        }

        selectivity = ComponentParameters(
            component_type=sf_enum.SELECTIVITY,
            name="desirability",
            weight=1.,
            smiles=[],
            model_path="",
            specific_parameters={
                "activity_model_path": activity.model_path,
                "offtarget_model_path": off_activity.model_path,
                "activity_specific_parameters":
                activity.specific_parameters.copy(),
                "offtarget_specific_parameters":
                off_activity.specific_parameters,
                "delta_transformation_parameters": delta_params
            })

        qed_score = ComponentParameters(component_type=sf_enum.QED_SCORE,
                                        name="qed_score",
                                        weight=1.,
                                        smiles=[],
                                        model_path="",
                                        specific_parameters={})
        matching_substructure = ComponentParameters(
            component_type=sf_enum.MATCHING_SUBSTRUCTURE,
            name="matching_substructure",
            weight=1.,
            smiles=["[*]n1cccc1CC"],
            model_path="",
            specific_parameters={})

        custom_alerts = create_custom_alerts_configuration()

        self.sf_state = CustomProduct(parameters=[
            activity, selectivity, qed_score, matching_substructure,
            custom_alerts
        ])
示例#9
0
    def setUpClass(self):
        utils_general.set_default_device_cuda()
        lm_enum = LoggingModeEnum()
        run_mode_enum = RunningModeEnum()
        sf_enum = ScoringFunctionNameEnum()
        sf_component_enum = ScoringFunctionComponentNameEnum()
        filter_enum = ScaffoldFilterEnum()
        self.workfolder = MAIN_TEST_PATH
        smiles = ["CCC", "c1ccccc1CCC"]
        ts_parameters = vars(
            ComponentParameters(
                name="tanimoto similarity",
                weight=1,
                smiles=smiles,
                model_path="",
                specific_parameters={},
                component_type=sf_component_enum.TANIMOTO_SIMILARITY))

        sf_parameters = ScoringFuncionParameters(name=sf_enum.CUSTOM_SUM,
                                                 parameters=[ts_parameters])
        scoring_function = ScoringFunctionFactory(sf_parameters)

        logging = ReinforcementLoggerConfiguration(
            sender="1",
            recipient=lm_enum.LOCAL,
            logging_path=f"{self.workfolder}/log",
            resultdir=self.workfolder,
            logging_frequency=0,
            job_name="unit_test_job")

        rl_config = ReinforcementLearningConfiguration(prior=RANDOM_PRIOR_PATH,
                                                       agent=RANDOM_PRIOR_PATH,
                                                       n_steps=3)

        scaffold_parameters = ScaffoldParameters(
            filter_enum.IDENTICAL_MURCKO_SCAFFOLD, 0.05, 25, 0.4)
        scaffold_filter = self._setup_scaffold_filter(scaffold_parameters)
        inception_config = InceptionConfiguration(smiles, 100, 10)
        inception = Inception(inception_config, scoring_function,
                              Model.load_from_file(rl_config.prior))
        parameters = ReinforcementLearningComponents(
            scoring_function=vars(scoring_function),
            diversity_filter=vars(scaffold_filter),
            reinforcement_learning=vars(rl_config),
            inception=vars(inception_config))
        configuration = GeneralConfigurationEnvelope(
            parameters=vars(parameters),
            logging=vars(logging),
            run_type=run_mode_enum.REINFORCEMENT_LEARNING,
            version="2.0")

        self.runner = ReinforcementRunner(configuration,
                                          config=rl_config,
                                          scaffold_filter=scaffold_filter,
                                          scoring_function=scoring_function,
                                          inception=inception)
示例#10
0
 def setUpClass(cls):
     sf_enum = ScoringFunctionComponentNameEnum()
     cls.matching_pattern = "XXXX"
     cls.parameters = ComponentParameters(
         component_type=sf_enum.MATCHING_SUBSTRUCTURE,
         name="matching_substructure",
         weight=1.,
         smiles=[cls.matching_pattern],
         model_path="",
         specific_parameters={})
示例#11
0
 def setUpClass(cls):
     sf_enum = ScoringFunctionComponentNameEnum()
     parameters = ComponentParameters(
         component_type=sf_enum.MATCHING_SUBSTRUCTURE,
         name="matching_substructure",
         weight=1.,
         smiles=["c1ccccc1"],
         model_path="",
         specific_parameters={})
     cls.component = MatchingSubstructure(parameters)
def create_predictive_property_component_classification():
    sf_enum = ScoringFunctionComponentNameEnum()
    specific_parameters = _specific_parameters_classifiaction_predictive_model()
    parameters = ComponentParameters(component_type=sf_enum.PREDICTIVE_PROPERTY,
                                     name="predictive_property_classification",
                                     weight=1.,
                                     smiles=[],
                                     model_path=ACTIVITY_CLASSIFICATION,
                                     specific_parameters=specific_parameters)
    return parameters
def create_activity_component_regression():
    sf_enum = ScoringFunctionComponentNameEnum()
    specific_parameters = _specific_parameters_regression_predictive_model()
    parameters = ComponentParameters(component_type=sf_enum.PREDICTIVE_PROPERTY,
                                     name="activity",
                                     weight=1.,
                                     smiles=[],
                                     model_path=ACTIVITY_REGRESSION,
                                     specific_parameters=specific_parameters)
    return parameters
示例#14
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])
示例#15
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])
示例#16
0
 def setUpClass(cls):
     sf_enum = ScoringFunctionComponentNameEnum()
     parameters = ComponentParameters(component_type=sf_enum.QED_SCORE,
                                      name="qed_score",
                                      weight=1.,
                                      smiles=[],
                                      model_path="",
                                      specific_parameters={})
     cls.component = QedScore(parameters)
     cls.smile = "C1CCCCCCCCC1"
     cls.mol = Chem.MolFromSmiles(cls.smile)
示例#17
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])
示例#18
0
 def setUpClass(self):
     sf_enum = ScoringFunctionComponentNameEnum()
     predictive_property = create_predictive_property_component_regression()
     activity = create_activity_component_regression()
     qed_score = ComponentParameters(component_type=sf_enum.QED_SCORE,
                                     name="qed_score_name",
                                     weight=1.,
                                     smiles=[],
                                     model_path="",
                                     specific_parameters={})
     self.sf_state = CustomProduct(parameters=[activity, qed_score, predictive_property])
 def setUpClass(cls):
     sf_enum = ScoringFunctionComponentNameEnum()
     parameters = ComponentParameters(
         component_type=sf_enum.JACCARD_DISTANCE,
         name="jaccard_distance",
         weight=1.,
         smiles=[
             "O=S(=O)(c3ccc(n1nc(cc1c2ccc(cc2)C)C(F)(F)F)cc3)N", "CCCCC"
         ],
         model_path="",
         specific_parameters={})
     cls.component = JaccardDistance(parameters)
示例#20
0
 def __init__(self, configuration: GeneralConfigurationEnvelope):
     super().__init__(configuration)
     self._summary_writer = SummaryWriter(
         log_dir=self._log_config.logging_path)
     self._summary_writer.add_text(
         'Legends',
         'The values under each compound are read as: [Agent; Prior; Target; Score]'
     )
     # _rows and _columns define the shape of the output grid of molecule images in tensorboard.
     self._rows = 4
     self._columns = 4
     self._sample_size = self._rows * self._columns
     self._sf_component_enum = ScoringFunctionComponentNameEnum()
     self._console_message_formatter = ConsoleMessage()
def create_offtarget_activity_component_regression():
    csp_enum = ComponentSpecificParametersEnum()
    sf_enum = ScoringFunctionComponentNameEnum()
    specific_parameters = _specific_parameters_regression_predictive_model()
    specific_parameters[csp_enum.HIGH] = 3
    specific_parameters[csp_enum.LOW] = 0
    specific_parameters[csp_enum.TRANSFORMATION] = False
    parameters = ComponentParameters(component_type=sf_enum.PREDICTIVE_PROPERTY,
                                     name="offtarget_activity",
                                     weight=1.,
                                     smiles=[],
                                     model_path=OFFTARGET_ACTIVITY_REGRESSION,
                                     specific_parameters=specific_parameters)
    return parameters
def create_offtarget_activity_component_classification():
    csp_enum = ComponentSpecificParametersEnum()
    sf_enum = ScoringFunctionComponentNameEnum()
    specific_parameters = _specific_parameters_classifiaction_predictive_model()
    specific_parameters[csp_enum.HIGH] = 3
    specific_parameters[csp_enum.LOW] = 0
    specific_parameters[csp_enum.TRANSFORMATION] = False
    parameters = ComponentParameters(component_type=sf_enum.PREDICTIVE_PROPERTY,
                                     name="predictive_property_classification",
                                     weight=1.,
                                     smiles=[],
                                     model_path=ACTIVITY_CLASSIFICATION,
                                     specific_parameters=specific_parameters)
    return parameters
示例#23
0
 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)
示例#24
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: 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])
示例#25
0
 def setUp(self):
     self.rm_enums = RunningModeEnum()
     self.cs_enum = ComponentSpecificParametersEnum()
     self.tf_enum = TransformationTypeEnum()
     self.sfc_enum = ScoringFunctionComponentNameEnum()
     self.lm_enum = LoggingModeEnum()
     self.parameters = create_activity_component_regression()
     log_conf = BaseLoggerConfiguration(
         sender="http://10.59.162.10:8081",
         recipient=self.lm_enum.LOCAL,
         logging_path=f"{MAIN_TEST_PATH}/log",
         job_name="model_validation_test",
         job_id="1")
     self.configuration_envelope = GeneralConfigurationEnvelope(
         parameters=vars(self.parameters),
         logging=vars(log_conf),
         run_type=self.rm_enums.VALIDATION,
         version="2.0")
示例#26
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])
示例#27
0
 def _default_scoring_component_registry(self) -> dict:
     enum = ScoringFunctionComponentNameEnum()
     component_map = {
         enum.MATCHING_SUBSTRUCTURE: MatchingSubstructure,
         enum.PREDICTIVE_PROPERTY: PredictivePropertyComponent,
         enum.TANIMOTO_SIMILARITY: TanimotoSimilarity,
         enum.JACCARD_DISTANCE: JaccardDistance,
         enum.CUSTOM_ALERTS: CustomAlerts,
         enum.QED_SCORE: QedScore,
         enum.MOLECULAR_WEIGHT: MolWeight,
         enum.TPSA: PSA,
         enum.NUM_ROTATABLE_BONDS: RotatableBonds,
         enum.NUM_HBD_LIPINSKI: HBD_Lipinski,
         enum.NUM_RINGS: NumRings,
         enum.SELECTIVITY: SelectivityComponent,
         enum.SA_SCORE: SASComponent
     }
     return component_map
示例#28
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)
示例#29
0
    def setUpClass(cls):
        csp_enum = ComponentSpecificParametersEnum()
        transf_type = TransformationTypeEnum()
        enum = ScoringFunctionComponentNameEnum()

        delta_params = {
            "high": 3.0,
            "k": 0.25,
            "low": 0.0,
            "transformation": True,
            "transformation_type": "sigmoid"
        }
        activity = create_activity_component_classification()
        activity.specific_parameters[
            csp_enum.TRANSFORMATION_TYPE] = transf_type.DOUBLE_SIGMOID
        activity.specific_parameters[csp_enum.COEF_DIV] = 100.
        activity.specific_parameters[csp_enum.COEF_SI] = 150.
        activity.specific_parameters[csp_enum.COEF_SE] = 150.

        off_activity = create_offtarget_activity_component_classification()

        selectivity = ComponentParameters(
            component_type=enum.SELECTIVITY,
            name="desirability",
            weight=1.,
            smiles=[],
            model_path="",
            specific_parameters={
                "activity_model_path":
                activity.model_path,
                "offtarget_model_path":
                off_activity.model_path,
                "activity_specific_parameters":
                activity.specific_parameters.copy(),
                "offtarget_specific_parameters":
                off_activity.specific_parameters.copy(),
                "delta_transformation_parameters":
                delta_params
            })

        cls.component = SelectivityComponent(parameters=selectivity)
示例#30
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])