Beispiel #1
0
    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')
Beispiel #2
0
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
Beispiel #3
0
    # 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])