chemprep.similarity

 1from rdkit import DataStructs
 2from .fingerprints import generate_fingerprint
 3
 4def get_available_similarity_metrics():
 5    """
 6    Returns a list of available similarity metrics.
 7    """
 8    return [
 9        "Tanimoto",
10        "Dice",
11        "Cosine",
12        "Sokal",
13        "Russel",
14        "RogotGoldberg",
15        "AllBit",
16        "Kulczynski",
17        "McConnaughey",
18        "Asymmetric",
19        "BraunBlanquet",
20    ]
21
22def calculate_similarity(smiles1: str, smiles2: str, fingerprint_type: str = "Morgan", similarity_metric: str = "Tanimoto"):
23    """
24    Calculates the similarity between two molecules.
25
26    Args:
27        smiles1: The SMILES string of the first molecule.
28        smiles2: The SMILES string of the second molecule.
29        fingerprint_type: The type of fingerprint to use.
30        similarity_metric: The similarity metric to use.
31
32    Returns:
33        The calculated similarity score.
34    """
35    fp1 = generate_fingerprint(smiles1, fingerprint_type)
36    fp2 = generate_fingerprint(smiles2, fingerprint_type)
37
38    if similarity_metric == "Tanimoto":
39        return DataStructs.TanimotoSimilarity(fp1, fp2)
40    elif similarity_metric == "Dice":
41        return DataStructs.DiceSimilarity(fp1, fp2)
42    elif similarity_metric == "Cosine":
43        return DataStructs.CosineSimilarity(fp1, fp2)
44    elif similarity_metric == "Sokal":
45        return DataStructs.SokalSimilarity(fp1, fp2)
46    elif similarity_metric == "Russel":
47        return DataStructs.RusselSimilarity(fp1, fp2)
48    elif similarity_metric == "RogotGoldberg":
49        return DataStructs.RogotGoldbergSimilarity(fp1, fp2)
50    elif similarity_metric == "AllBit":
51        return DataStructs.AllBitSimilarity(fp1, fp2)
52    elif similarity_metric == "Kulczynski":
53        return DataStructs.KulczynskiSimilarity(fp1, fp2)
54    elif similarity_metric == "McConnaughey":
55        return DataStructs.McConnaugheySimilarity(fp1, fp2)
56    elif similarity_metric == "Asymmetric":
57        return DataStructs.AsymmetricSimilarity(fp1, fp2)
58    elif similarity_metric == "BraunBlanquet":
59        return DataStructs.BraunBlanquetSimilarity(fp1, fp2)
60    else:
61        raise ValueError(f"Unsupported similarity metric: {similarity_metric}")
def get_available_similarity_metrics():
 5def get_available_similarity_metrics():
 6    """
 7    Returns a list of available similarity metrics.
 8    """
 9    return [
10        "Tanimoto",
11        "Dice",
12        "Cosine",
13        "Sokal",
14        "Russel",
15        "RogotGoldberg",
16        "AllBit",
17        "Kulczynski",
18        "McConnaughey",
19        "Asymmetric",
20        "BraunBlanquet",
21    ]

Returns a list of available similarity metrics.

def calculate_similarity( smiles1: str, smiles2: str, fingerprint_type: str = 'Morgan', similarity_metric: str = 'Tanimoto'):
23def calculate_similarity(smiles1: str, smiles2: str, fingerprint_type: str = "Morgan", similarity_metric: str = "Tanimoto"):
24    """
25    Calculates the similarity between two molecules.
26
27    Args:
28        smiles1: The SMILES string of the first molecule.
29        smiles2: The SMILES string of the second molecule.
30        fingerprint_type: The type of fingerprint to use.
31        similarity_metric: The similarity metric to use.
32
33    Returns:
34        The calculated similarity score.
35    """
36    fp1 = generate_fingerprint(smiles1, fingerprint_type)
37    fp2 = generate_fingerprint(smiles2, fingerprint_type)
38
39    if similarity_metric == "Tanimoto":
40        return DataStructs.TanimotoSimilarity(fp1, fp2)
41    elif similarity_metric == "Dice":
42        return DataStructs.DiceSimilarity(fp1, fp2)
43    elif similarity_metric == "Cosine":
44        return DataStructs.CosineSimilarity(fp1, fp2)
45    elif similarity_metric == "Sokal":
46        return DataStructs.SokalSimilarity(fp1, fp2)
47    elif similarity_metric == "Russel":
48        return DataStructs.RusselSimilarity(fp1, fp2)
49    elif similarity_metric == "RogotGoldberg":
50        return DataStructs.RogotGoldbergSimilarity(fp1, fp2)
51    elif similarity_metric == "AllBit":
52        return DataStructs.AllBitSimilarity(fp1, fp2)
53    elif similarity_metric == "Kulczynski":
54        return DataStructs.KulczynskiSimilarity(fp1, fp2)
55    elif similarity_metric == "McConnaughey":
56        return DataStructs.McConnaugheySimilarity(fp1, fp2)
57    elif similarity_metric == "Asymmetric":
58        return DataStructs.AsymmetricSimilarity(fp1, fp2)
59    elif similarity_metric == "BraunBlanquet":
60        return DataStructs.BraunBlanquetSimilarity(fp1, fp2)
61    else:
62        raise ValueError(f"Unsupported similarity metric: {similarity_metric}")

Calculates the similarity between two molecules.

Args: smiles1: The SMILES string of the first molecule. smiles2: The SMILES string of the second molecule. fingerprint_type: The type of fingerprint to use. similarity_metric: The similarity metric to use.

Returns: The calculated similarity score.