def testSimilarityMapsMolDraw2D(self):
        # nothing really sensible to test here, just make sure things run
        mol = Chem.MolFromSmiles(
            'COc1cccc2cc(C(=O)NCCCCN3CCN(c4cccc5nccnc54)CC3)oc21')
        refmol = Chem.MolFromSmiles(
            'CCCN(CCCCN1CCN(c2ccccc2OC)CC1)Cc1ccc2ccccc2c1')
        d = Draw.MolDraw2DSVG(400, 400)
        d.ClearDrawing()
        _, maxWeight = sm.GetSimilarityMapForFingerprint(
            refmol,
            mol,
            lambda m, i: sm.GetMorganFingerprint(m, i, radius=2, fpType='bv'),
            draw2d=d)
        d.FinishDrawing()
        with open('similarityMap1_out.svg', 'w+') as outf:
            outf.write(d.GetDrawingText())

        # Github #2904: make sure we can provide our own colormap as a list:
        colors = [(0, 1, 0, 0.5), (1, 1, 1), (0, 0, 1, 0.5)]
        d = Draw.MolDraw2DSVG(400, 400)
        d.ClearDrawing()
        _, maxWeight = sm.GetSimilarityMapForFingerprint(
            refmol,
            mol,
            lambda m, i: sm.GetMorganFingerprint(m, i, radius=2, fpType='bv'),
            draw2d=d,
            colorMap=colors)
        d.FinishDrawing()
        with open('similarityMap1_out2.svg', 'w+') as outf:
            outf.write(d.GetDrawingText())

        # Github #2904: make sure we can provide our own colormap as a matplotlib colormap:
        try:
            from matplotlib import cm
            d = Draw.MolDraw2DSVG(400, 400)
            d.ClearDrawing()
            _, maxWeight = sm.GetSimilarityMapForFingerprint(
                refmol,
                mol,
                lambda m, i: sm.GetMorganFingerprint(
                    m, i, radius=2, fpType='bv'),
                draw2d=d,
                colorMap=cm.PiYG)
            d.FinishDrawing()
            with open('similarityMap1_out3.svg', 'w+') as outf:
                outf.write(d.GetDrawingText())
        except ImportError:
            pass
Example #2
0
def _similarityMapSVG(ms,
                      width=500,
                      height=500,
                      radius=2,
                      fingerprint='morgan',
                      format='svg'):
    if matplotlib is None:
        raise ValueError('matplotlib not useable')

    _call(ms, 'UpdatePropertyCache', strict=False)
    _apply(ms, ct._sssr)

    fn = None
    if fingerprint == 'morgan':
        fn = lambda x, i: SimilarityMaps.GetMorganFingerprint(
            x, i, radius=radius)
    elif fingerprint == 'tt':
        fn = SimilarityMaps.GetAPFingerprint
    elif fingerprint == 'ap':
        fn = SimilarityMaps.GetTTFingerprint

    SimilarityMaps.GetSimilarityMapForFingerprint(ms[0],
                                                  ms[1],
                                                  fn,
                                                  size=(width, height))
    sio = io.StringIO()
    pyplot.savefig(sio, format=format, bbox_inches='tight', dpi=100)

    return sio.getvalue()
Example #3
0
def sim_map_mf(results, query, fp_func, metric, out_file):
    file_counter = 1
    for m in query:
        mol_keys = []
        for i in results:
            if results[i]["q_num"] == m:
                Chem.Compute2DCoords(results[i]["mol"])
                try:
                    fig, maxweight = SimilarityMaps.GetSimilarityMapForFingerprint(
                        query[results[i]["q_num"]]["mol"],
                        results[i]["mol"],
                        fp_func,
                        metric=fpsearch.sim_dict[metric])
                    fig.set_figwidth(3.255)
                    fig.set_figheight(3.255)
                    filename = f"{i}.png"
                    fig.savefig(filename, bbox_inches="tight")
                    mol_keys.append(i)
                except:
                    d = rdMolDraw2D.MolDraw2DCairo(600, 600)
                    d.DrawMolecule(results[i]["mol"])
                    d.FinishDrawing()
                    d.WriteDrawingText(f"{i}.png")
                    mol_keys.append(i)
        pages = gen_pdf_pages(mol_keys, results)
        export_pdf(pages, f"{out_file}_{file_counter}.pdf")
        file_counter += 1
Example #4
0
def morgan_fingerprint_vis(product_smiles, sim_smiles):
    mol = Chem.MolFromSmiles(sim_smiles)
    refmol = Chem.MolFromSmiles(product_smiles)

    fp1 = SimilarityMaps.GetMorganFingerprint(mol)
    fp2 = SimilarityMaps.GetMorganFingerprint(refmol)

    fig, maxweight = SimilarityMaps.GetSimilarityMapForFingerprint(
        refmol, mol, SimilarityMaps.GetMorganFingerprint)
    return DataStructs.FingerprintSimilarity(fp1, fp2)
Example #5
0
    def draw_mol_comparison(self, refmol, mol):
        '''
		Compare the structure of two molecules.
		The function takes the molecule names as input.
		'''
        fig, maxweight = SimilarityMaps.GetSimilarityMapForFingerprint(
            refMol=self.molecules(refmol),
            probeMol=self.molecules(mol),
            fpFunction=SimilarityMaps.GetMorganFingerprint,
            metric=DataStructs.TanimotoSimilarity)
        return fig, maxweight
Example #6
0
def draw_map():
    """ Creates similarity maps using the provided molecules (SMILES).
    
    """

    m1 = Chem.MolFromSmiles('c1ccccc1O')
    m2 = Chem.MolFromSmiles('c1ccccc1N')

    # Morgan Fingerprint (with normalization)
    # Can also be used with APFingerprint or TTFingerprint
    fig1, maxweight = SimilarityMaps.GetSimilarityMapForFingerprint(
        m1, m2, SimilarityMaps.GetMorganFingerprint)
    fig1.savefig('/path/to/similaritymap.png', bbox_inches='tight')

    # TT Fingerprint (with normalization)
    fig2, maxweight = SimilarityMaps.GetSimilarityMapForFingerprint(
        m1, m2, SimilarityMaps.GetTTFingerprint)
    fig2.savefig('/path/to/similaritymap.png', bbox_inches='tight')

    # Morgan Fingerprint (without normalization)
    weights = SimilarityMaps.GetAtomicWeightsForFingerprint(
        m1, m2, SimilarityMaps.GetMorganFingerprint)
    fig3 = SimilarityMaps.GetSimilarityMapFromWeights(m2,
                                                      weights,
                                                      size=(150, 150))
    fig3.savefig('/path/to/similaritymap.png', bbox_inches='tight')

    # the degree of partial charge by using atomic charge
    AllChem.ComputeGasteigerCharges(m1)
    charges = [
        float(atom.GetProp('_GasteigerCharge')) for atom in m1.GetAtoms()
    ]
    fig4 = SimilarityMaps.GetSimilarityMapFromWeights(m2,
                                                      charges,
                                                      size=(150, 150),
                                                      scale=10)
    fig4.savefig('/path/to/molcharge_similaritymap.png', bbox_inches='tight')
def draw_finger_print(smile_file):
    with open(smile_file, 'r') as f:
        for mol in f:
            refmol = Chem.MolFromSmiles(
                'CCCN(CCCCN1CCN(c2ccccc2OC)CC1)Cc1ccc2ccccc2c1'
            )  # this is the template here

            ms = Chem.MolFromSmiles(mol)
            fp = SimilarityMaps.GetAPFingerprint(ms, fpType='normal')
            fp = SimilarityMaps.GetTTFingerprint(ms, fpType='normal')
            fp = SimilarityMaps.GetMorganFingerprint(ms, fpType='bv')

            fig, maxweight = SimilarityMaps.GetSimilarityMapForFingerprint(
                refmol, ms, SimilarityMaps.GetMorganFingerprint)
            fig.save('/home/nad/Desktop/navid22.png')
Example #8
0
def _similarityMap(ms, width=100, height=100, radius=2, fingerprint = 'morgan'):
    if matplotlib is None:
        raise ValueError('matplotlib not useable')

    if fingerprint=='morgan':
        fn = lambda x,i:SimilarityMaps.GetMorganFingerprint(x,i,radius=radius)
    elif fingerprint=='tt':
        fn = SimilarityMaps.GetAPFingerprint
    elif fingerprint=='ap':
        fn = SimilarityMaps.GetTTFingerprint

    fig, maxv = SimilarityMaps.GetSimilarityMapForFingerprint(ms[0], ms[1], fn, size=(width, height))
    sio = StringIO.StringIO()
    pyplot.savefig(sio, format='png', bbox_inches='tight', dpi=100)

    return sio.getvalue()
Example #9
0
 def testSimilarityMapsMolDraw2D(self):
     # nothing really sensible to test here, just make sure things run
     mol = Chem.MolFromSmiles(
         'COc1cccc2cc(C(=O)NCCCCN3CCN(c4cccc5nccnc54)CC3)oc21')
     refmol = Chem.MolFromSmiles(
         'CCCN(CCCCN1CCN(c2ccccc2OC)CC1)Cc1ccc2ccccc2c1')
     d = Draw.MolDraw2DSVG(400, 400)
     d.ClearDrawing()
     _, maxWeight = sm.GetSimilarityMapForFingerprint(
         refmol,
         mol,
         lambda m, i: sm.GetMorganFingerprint(m, i, radius=2, fpType='bv'),
         draw2d=d)
     d.FinishDrawing()
     with open('similarityMap1_out.svg', 'w+') as outf:
         outf.write(d.GetDrawingText())
Example #10
0
def get_atom_pair_similarity(correct_ligand,
                             mol_to_fix,
                             type_fp='normal',
                             use_features=False):
    type_fp = type_fp

    correct_ligand_fingerprint = SimilarityMaps.GetAPFingerprint(
        correct_ligand,
        nBits=4096,
        fpType=type_fp,
    )
    mol_to_fix_fingerprint = SimilarityMaps.GetAPFingerprint(
        mol_to_fix,
        nBits=4096,
        fpType=type_fp,
    )

    test = 1

    sim_func = DataStructs.FingerprintSimilarity

    temp_autoinducer_TanimotoSimilarty = sim_func(
        correct_ligand_fingerprint,
        mol_to_fix_fingerprint,
        metric=DataStructs.TanimotoSimilarity)

    test = 1

    curr_metric = DataStructs.TanimotoSimilarity
    fig, maxweight = SimilarityMaps.GetSimilarityMapForFingerprint(
        correct_ligand,
        mol_to_fix,
        lambda m, idx: SimilarityMaps.GetAPFingerprint(
            m, atomId=idx, fpType='normal'),
        metric=curr_metric)
    # print(maxweight)
    # fig.suptitle('test title', fontsize=20)
    ax = fig.gca()
    # ax.title
    plt.title('test', fontsize=30)
    fig.set_size_inches(7, 7)
    fig.set_dpi(600)
    fig.savefig('test_ap.png', bbox_inches='tight')

    test = 1
Example #11
0
  def testSimilarityMap(self):
    # Morgan2 BV
    refWeights = [0.5, 0.5, 0.5, -0.5, 0.5, 0.5]
    weights = sm.GetAtomicWeightsForFingerprint(self.mol1, self.mol2, lambda m, i: sm.GetMorganFingerprint(m, i, radius=2, fpType='bv'))
    for w,r in zip(weights, refWeights): self.assertEqual(w, r)

    fig, maxWeight = sm.GetSimilarityMapForFingerprint(self.mol1, self.mol2, lambda m, i: sm.GetMorganFingerprint(m, i, radius=2, fpType='bv'))
    self.assertEqual(maxWeight, 0.5)
    
    weights, maxWeight = sm.GetStandardizedWeights(weights)
    self.assertEqual(maxWeight, 0.5)
    refWeights = [1.0, 1.0, 1.0, -1.0, 1.0, 1.0]
    for w,r in zip(weights, refWeights): self.assertEqual(w, r)

    weights = sm.GetAtomicWeightsForFingerprint(self.mol1, self.mol2, lambda m, i: sm.GetMorganFingerprint(m, i, fpType='count'))
    self.assertTrue(weights[3] < 0)
    weights = sm.GetAtomicWeightsForFingerprint(self.mol1, self.mol2, lambda m, i: sm.GetMorganFingerprint(m, i, fpType='bv', useFeatures=True))
    self.assertTrue(weights[3] < 0)

    # hashed AP BV
    refWeights = [0.09523, 0.17366, 0.17366, -0.23809, 0.17366, 0.17366]
    weights = sm.GetAtomicWeightsForFingerprint(self.mol1, self.mol2, lambda m, i: sm.GetAPFingerprint(m, i, fpType='bv', nBits=1024))
    for w,r in zip(weights, refWeights): self.assertAlmostEqual(w, r, 4)

    weights = sm.GetAtomicWeightsForFingerprint(self.mol1, self.mol2, lambda m, i: sm.GetAPFingerprint(m, i, fpType='normal'))
    self.assertTrue(weights[3] < 0)
    weights = sm.GetAtomicWeightsForFingerprint(self.mol1, self.mol2, lambda m, i: sm.GetAPFingerprint(m, i, fpType='hashed'))
    self.assertTrue(weights[3] < 0)
    
    # hashed TT BV
    refWeights = [0.5, 0.5, -0.16666, -0.5, -0.16666, 0.5]
    weights = sm.GetAtomicWeightsForFingerprint(self.mol1, self.mol2, lambda m, i: sm.GetTTFingerprint(m, i, fpType='bv', nBits=1024, nBitsPerEntry=1))
    for w,r in zip(weights, refWeights): self.assertAlmostEqual(w, r, 4)

    weights = sm.GetAtomicWeightsForFingerprint(self.mol1, self.mol2, lambda m, i: sm.GetTTFingerprint(m, i, fpType='normal'))
    self.assertTrue(weights[3] < 0)
    weights = sm.GetAtomicWeightsForFingerprint(self.mol1, self.mol2, lambda m, i: sm.GetTTFingerprint(m, i, fpType='hashed'))
    self.assertTrue(weights[3] < 0)

    # RDK fingerprint BV
    refWeights = [0.42105, 0.42105, 0.42105, -0.32895, 0.42105, 0.42105]
    weights = sm.GetAtomicWeightsForFingerprint(self.mol1, self.mol2, lambda m, i: sm.GetRDKFingerprint(m, i, nBits=1024, nBitsPerHash=1))
    for w,r in zip(weights, refWeights): self.assertAlmostEqual(w, r, 4)
 def testGithub4763(self):
     mol = Chem.MolFromSmiles(
         'COc1cccc2cc(C(=O)NCCCCN3CCN(c4cccc5nccnc54)CC3)oc21')
     refmol = Chem.MolFromSmiles(
         'CCCN(CCCCN1CCN(c2ccccc2OC)CC1)Cc1ccc2ccccc2c1')
     d = Draw.MolDraw2DSVG(400, 400)
     d.ClearDrawing()
     _, maxWeight = sm.GetSimilarityMapForFingerprint(
         refmol,
         mol,
         lambda m, i: sm.GetMorganFingerprint(m, i, radius=2, fpType='bv'),
         draw2d=d,
         colorMap="coolwarm")
     d.FinishDrawing()
     svg = d.GetDrawingText()
     with open('github4763.svg', 'w+') as outf:
         outf.write(svg)
     self.assertFalse('fill:#FBFCFB7F' in svg)
     self.assertTrue('fill:#DDDCDB' in svg)
Example #13
0
def sim_map(results, query, fp_func, metric, out_file):
    for i in results:
        Chem.Compute2DCoords(results[i]["mol"])
        try:
            fig, maxweight = SimilarityMaps.GetSimilarityMapForFingerprint(
                query[results[i]["q_num"]]["mol"],
                results[i]["mol"],
                fp_func,
                metric=fpsearch.sim_dict[metric])
            fig.set_figwidth(3.255)
            fig.set_figheight(3.255)
            filename = f"{i}.png"
            fig.savefig(filename, bbox_inches="tight")
        except:
            d = rdMolDraw2D.MolDraw2DCairo(600, 600)
            d.DrawMolecule(results[i]["mol"])
            d.FinishDrawing()
            d.WriteDrawingText(f"{i}.png")
    pages = gen_pdf_pages(list(results.keys()), results)
    export_pdf(pages, out_file)
Example #14
0
def _similarityMap(ms, params):
    if matplotlib is None:
        raise ValueError('matplotlib not useable')

    fp = params.get('fingerprint', 'morgan')
    if fp == 'morgan':
        rad = int(params.get('radius', 2))
        fn = lambda x, i: SimilarityMaps.GetMorganFingerprint(x, i, radius=rad)
    elif fp == 'tt':
        fn = SimilarityMaps.GetAPFingerprint
    elif fp == 'ap':
        fn = SimilarityMaps.GetTTFingerprint

    w = int(params.get('w', 100))
    h = int(params.get('h', 100))

    fig, maxv = SimilarityMaps.GetSimilarityMapForFingerprint(ms[0],
                                                              ms[1],
                                                              fn,
                                                              size=(w, h))
    sio = StringIO.StringIO()
    pyplot.savefig(sio, format='png', bbox_inches='tight', dpi=100)

    return sio.getvalue()
Example #15
0
# 目标分子
# 指纹函数
# 相似性函数(默认是 Dice similarity)

# 目标分子
targetmol = Chem.MolFromSmiles(
    'COc1cccc2cc(C(=O)NCCCCN3CCN(c4cccc5nccnc54)CC3)oc21')
# 参考分子
refmol = Chem.MolFromSmiles('CCCN(CCCCN1CCN(c2ccccc2OC)CC1)Cc1ccc2ccccc2c1')

d = Draw.MolDraw2DSVG(400, 400)
d.ClearDrawing()
target_mol_simi_fig, maxweight = SimilarityMaps.GetSimilarityMapForFingerprint(
    refmol,
    targetmol,
    lambda m, i: SimilarityMaps.GetMorganFingerprint(
        m, i, radius=2, fpType='bv'),
    draw2d=d
)
print(target_mol_simi_fig)  # Figure(250x250)
print(maxweight)  # 0.12255947497949138
d.FinishDrawing()
with open('/drug_development/studyRdkit/st_rdcit/img/mol28.svg', 'w+') as outf:
    outf.write(d.GetDrawingText())

# 原子颜色越绿,对相似性的贡献越大。

# 或者可以用以下方法
weights = SimilarityMaps.GetAtomicWeightsForFingerprint(
    refmol, mol, SimilarityMaps.GetMorganFingerprint)
Example #16
0
def calculate_similarities(gd, gd_mlc, request, sr):
    user_id = request.user.id
    print("user id of current user is ", user_id)
    instances = Similar.objects.filter(user_id=user_id)
    instances.delete()

    results = Prediction.objects.filter(user_id=user_id)
    results.delete()

    gd.reset_index(inplace=True)
    gd = gd.rename(columns={'index': 'Compounds'})

    gd_mlc.reset_index(inplace=True)
    gd_mlc = gd_mlc.rename(columns={'index': 'Compounds'})
    print("calculating similarities", gd.columns, gd_mlc.columns)
    binary_prob = gd
    mlc_prob = gd_mlc
    compounds = binary_prob["Compounds"].tolist()

    prob_data = {}
    targets = binary_prob.columns[1:len(binary_prob.columns)]
    similar_compounds = {}

    target_ids = {
        'EGFR': 'CHEMBL203',
        'IGF1R': 'CHEMBL1957',
        'MIA-PaCa': 'CHEMBL614725',
        'mTOR': 'CHEMBL2842'
    }

    train_data = pd.read_csv('Static/data/train-data.csv')

    k = 0
    start = time.time()
    for c in compounds:
        prob_data[c] = {}
        img_name = uuid.uuid4().hex

        id = uuid.uuid4().hex

        j = 0
        active = False
        for i in range(0, len(targets)):
            prob_data[c][targets[i]] = {}
            prob_model1 = binary_prob[binary_prob["Compounds"] == c][
                targets[i]].tolist()[0]
            prob_model2 = mlc_prob[mlc_prob["Compounds"] == c][
                targets[i]].tolist()[0]
            prob_data[c][targets[i]]['probability'] = round(
                ((prob_model1 + prob_model2) / 2), 2)

            if prob_data[c][targets[i]]['probability'] >= 50:
                print("inside if")
                active = True
                tid = target_ids[targets[i]]
                smiles = train_data[train_data["target_chembl_ID"] ==
                                    tid]["canonical_smiles"].tolist()

                mol1 = Chem.MolFromSmiles(c)
                fp0 = FingerprintMols.FingerprintMol(mol1)
                compound_fig = Draw.MolToMPL(mol1, size=(120, 120))
                # image_cf = img_name + '_qmol_.png'
                # compound_fig.savefig('Static/pictures/similarity/' + image_cf, bbox_inches='tight')
                # #com = Compound()
                # new_image = Similarity(name = image_cf, user_id = request.user.id, type = 'query',
                #                        image_id = id, similarity = 0.0 )
                # new_image.save()
                similar_compounds[c] = []
                for s in smiles:
                    if s != c:
                        mol2 = Chem.MolFromSmiles(s)
                        fp1 = FingerprintMols.FingerprintMol(mol2)

                        similarity = DataStructs.TanimotoSimilarity(fp0, fp1)
                        if similarity > 0.9:
                            fig, maxweight = SimilarityMaps.GetSimilarityMapForFingerprint(
                                mol2,
                                mol1,
                                SimilarityMaps.GetMorganFingerprint,
                                metric=DataStructs.TanimotoSimilarity)
                            name = img_name + '_' + str(j) + '.png'
                            fig.savefig('Static/pictures/similarity/' + name,
                                        bbox_inches='tight',
                                        pad_inches=0,
                                        transparent=True,
                                        orientation="landscape")

                            new_image = Similar(name=name,
                                                user_id=user_id,
                                                type='similar',
                                                image_id=id,
                                                similarity=similarity,
                                                smile=s)
                            new_image.save()

                            r_compound_fig = Draw.MolToMPL(mol2,
                                                           size=(120, 120))
                            image_rf = img_name + '_rmol_' + str(j) + '.png'
                            r_compound_fig.savefig(
                                'Static/pictures/similarity/' + image_rf,
                                bbox_inches='tight')

                            new_image = Similar(name=image_rf,
                                                user_id=user_id,
                                                type='response',
                                                image_id=id,
                                                similarity=similarity,
                                                smile=s)
                            new_image.save()

                            # new_sim = {'smile': s, 'similarity': round(similarity, 2), 'image': name, 'query': image_cf,
                            #            'result': image_rf}
                            # similar_compounds[c].append(new_sim)
                            j += 1
                    matplotlib.pyplot.clf()

        k += 1

        if active == True:
            print("Saving active compound")
            mol1 = Chem.MolFromSmiles(c)
            compound_fig = Draw.MolToMPL(mol1, size=(120, 120))
            image_cf = img_name + '_qmol_.png'
            compound_fig.savefig('Static/pictures/similarity/' + image_cf,
                                 bbox_inches='tight')
            # com = Compound()
            new_image = Similar(name=image_cf,
                                user_id=request.user.id,
                                type='query',
                                image_id=id,
                                similarity=0.0,
                                smile=c)
            new_image.save()

    new_results = Prediction(user_id=request.user.id, data=prob_data)
    new_results.save()
    end = time.time()
    print('elapsed time ', end - start)

    request.session['results'] = True
    request.session.save()

    request.session['set_res'] = True
    request.session.modified = True
    return redirect('dashboard')
Example #17
0
#name: Similarity Maps Using Fingerprints
#description: Similarity Maps Using Fingerprints, RDKit based
#help-url: /help/domains/chem/functions/sim-maps.md
#language: python
#tags: demo, chem, rdkit
#input: string mol = COc1cccc2cc(C(=O)NCCCCN3CCN(c4cccc5nccnc54)CC3)oc21 {semType: Molecule} [Molecule, in SMILES format]
#input: string refmol = CCCN(CCCCN1CCN(c2ccccc2OC)CC1)Cc1ccc2ccccc2c1 {semType: Molecule} [Reference molecule, in SMILES format]
#input: int radius = 2 [Fingerprint function radius]
#output: double maxweight [The maximum weight that was found when creating the map]
#output: graphics simMap [Similarity Map]

from rdkit import Chem
from rdkit.Chem.Draw import SimilarityMaps

mol = Chem.MolFromSmiles(mol)
refmol = Chem.MolFromSmiles(refmol)

from rdkit import DataStructs
simMap, maxweight = SimilarityMaps.GetSimilarityMapForFingerprint(
    refmol,
    mol,
    lambda m, idx: SimilarityMaps.GetMorganFingerprint(
        m, atomId=idx, radius=radius, fpType='count'),
    metric=DataStructs.TanimotoSimilarity)
Example #18
0
from rdkit import Chem
from rdkit.Chem.Draw import SimilarityMaps
import matplotlib.pyplot as plt

if __name__ == '__main__':
    mol = Chem.MolFromSmiles('COc1cccc2cc(C(=O)NCCCCN3CCN(c4cccc5nccnc54)CC3)oc21')
    refmol = Chem.MolFromSmiles('CCCN(CCCCN1CCN(c2ccccc2OC)CC1)Cc1ccc2ccccc2c1')
    fig, maxweight = SimilarityMaps.GetSimilarityMapForFingerprint(refmol, mol, SimilarityMaps.GetMorganFingerprint)
    handlelim = [0, 1]
    # plt.xlim(handlelim)
    # plt.ylim(handlelim)
    # plt.show()