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.