Пример #1
0
def test_parse_molecular_formula():
    formula = 'C6H9NOF2Cl2Br'
    parsed = parse_molecular_formula(formula)

    expected = [('C', 6), ('H', 9), ('N', 1), ('O', 1), ('F', 2), ('Cl', 2),
                ('Br', 1)]

    assert parsed == expected
    def __init__(self, molecular_formula: str) -> None:
        """
        Args:
            molecular_formula: target molecular formula
        """
        super().__init__()

        element_occurrences = parse_molecular_formula(molecular_formula)

        total_number_atoms = sum(element_tuple[1] for element_tuple in element_occurrences)

        # scoring functions for each element
        self.functions = [RdkitScoringFunction(descriptor=AtomCounter(element),
                                               score_modifier=GaussianModifier(mu=n_atoms, sigma=1.0))
                          for element, n_atoms in element_occurrences]

        # scoring functions for the total number of atoms
        self.functions.append(RdkitScoringFunction(descriptor=num_atoms,
                                                   score_modifier=GaussianModifier(mu=total_number_atoms, sigma=2.0)))
Пример #3
0
    def determine_scoring_functions(
            molecular_formula: str) -> List[RdkitScoringFunction]:
        element_occurrences = parse_molecular_formula(molecular_formula)

        total_number_atoms = sum(element_tuple[1]
                                 for element_tuple in element_occurrences)

        # scoring functions for each element
        functions = [
            RdkitScoringFunction(descriptor=AtomCounter(element),
                                 score_modifier=GaussianModifier(mu=n_atoms,
                                                                 sigma=1.0))
            for element, n_atoms in element_occurrences
        ]

        # scoring functions for the total number of atoms
        functions.append(
            RdkitScoringFunction(descriptor=num_atoms,
                                 score_modifier=GaussianModifier(
                                     mu=total_number_atoms, sigma=2.0)))

        return functions