def test_GetFraggleSimilarity(self): q = Chem.MolFromSmiles( 'COc1cc(CN2CCC(NC(=O)c3cncc(C)c3)CC2)c(OC)c2ccccc12') m = Chem.MolFromSmiles( 'COc1cc(CN2CCC(NC(=O)c3ccccc3)CC2)c(OC)c2ccccc12') sim, match = FraggleSim.GetFraggleSimilarity(q, m) self.assertAlmostEqual(sim, 0.980, places=2) self.assertEqual(match, '[*]C1CCN(Cc2cc(OC)c3ccccc3c2OC)CC1') m = Chem.MolFromSmiles( 'COc1cc(CN2CCC(Nc3nc4ccccc4s3)CC2)c(OC)c2ccccc12') sim, match = FraggleSim.GetFraggleSimilarity(q, m) self.assertAlmostEqual(sim, 0.794, places=2) self.assertEqual(match, '[*]C1CCN(Cc2cc(OC)c3ccccc3c2OC)CC1') q = Chem.MolFromSmiles('COc1ccccc1') sim, match = FraggleSim.GetFraggleSimilarity(q, m) self.assertAlmostEqual(sim, 0.347, places=2) self.assertEqual(match, '[*]c1ccccc1') m = Chem.MolFromSmiles( 'COc1cc(CN2CCC(NC(=O)c3ccccc3)CC2)c(OC)c2ccccc12') sim, match = FraggleSim.GetFraggleSimilarity(q, m) self.assertAlmostEqual(sim, 0.266, places=2) self.assertEqual(match, '[*]c1ccccc1')
def generate_sim(base: str, smile: str): base = Chem.MolFromSmiles(base) smile = Chem.MolFromSmiles(smile) try: sim, match = FraggleSim.GetFraggleSimilarity(smile, base) except: return 0.0, None return sim, match
# test_mol_neu.SetProp("NScode", mol.GetProp("NScode")) reference_desalt.append(test_mol_neu) count = count+1 print("Reference Molecule Num: ", len(reference_desalt)) # Morganによる類似性評価 morgan_reference = [AllChem.GetMorganFingerprintAsBitVect(mol, 2, 2048) for mol in reference_desalt] #(mol,中心からの半径,bit数) morgan_query = [AllChem.GetMorganFingerprintAsBitVect(mol, 2, 2048) for mol in query] tanimoto = DataStructs.BulkTanimotoSimilarity(morgan_query[0], morgan_reference) # Fraggleによる類似性評価 fraggle_sim = [] fraggle_match = [] for (sim, match) in [FraggleSim.GetFraggleSimilarity(query[0], reference_desalt[i]) for i in range(len(reference_desalt))] : fraggle_sim.append(sim) fraggle_match.append(match) # 結果をPDFファイルに書き込み # img = Draw.MolsToGridImage(namiki[:16], molsPerRow=4, subImgSize=(300,200), legends=['Fraggle: {:.2f}'.format(i) for i in fraggle_similarity[:16]]) # img.save('./fraggle.pdf') # 結果をSDFファイルに書き込み sdf_filename = "./fraggle-result.sdf" writer = Chem.SDWriter(sdf_filename) query[0].SetProp("NScode", "2-17") #molオブジェクトにプロパティを付加する query[0].SetProp("Tanimoto_Sim", "1") query[0].SetProp("Fraggle_Sim", "1") writer.write(query[0])