From c00c103c62917af0be13eac3f9ab7806cbdf375b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20=20MENAGER?= <herve.menager@pasteur.fr> Date: Wed, 5 Sep 2018 10:13:49 +0200 Subject: [PATCH] autoload current SMILES in MarvinJS for #83 Former-commit-id: 64b18caaaf2a94e65fe2ab8fcaadcdf650f6da16 --- ippisite/ippidb/templates/compound_list.html | 2 +- ippisite/ippidb/templates/marvinjs_modal.html | 18 ++++++++++++++++-- ippisite/ippidb/urls.py | 1 + ippisite/ippidb/views.py | 8 +++++++- 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/ippisite/ippidb/templates/compound_list.html b/ippisite/ippidb/templates/compound_list.html index f48c732f..53d39762 100644 --- a/ippisite/ippidb/templates/compound_list.html +++ b/ippisite/ippidb/templates/compound_list.html @@ -174,6 +174,6 @@ {% include "slider_modal.html" with label="AlogP" param_name="a_log_p" param_min=a_log_p_min param_max=a_log_p_max param_value=a_log_p step='1' param_label='Select a cutoff value for the AlogP of the compounds to be selected'%} {% include "slider_modal.html" with label="H donors" param_name="nb_donor_h" param_min=nb_donor_h_min param_max=nb_donor_h_max param_value=nb_donor_h step='1' param_label='Select a cutoff value for the number of H donors in the compounds to be selected'%} {% include "slider_modal.html" with label="Publications" param_name="pubs" param_min=pubs_min param_max=pubs_max param_value=pubs step='1' param_label='Select a cutoff value for the number of publications mentioning the compounds to be selected'%} - {% include "marvinjs_modal.html" %} + {% include "marvinjs_modal.html" with smiles=similar_to %} {% endblock %} diff --git a/ippisite/ippidb/templates/marvinjs_modal.html b/ippisite/ippidb/templates/marvinjs_modal.html index 157a83a1..2fb16235 100644 --- a/ippisite/ippidb/templates/marvinjs_modal.html +++ b/ippisite/ippidb/templates/marvinjs_modal.html @@ -9,7 +9,7 @@ </div> <div class="modal-body"> Sketch or upload (in .mol format and in 2D only) the query structure here - <iframe id="marviniframe" src="/static/marvin-ippidbeditor.html" style="overflow: hidden; min-width: 700px; min-height: 500px; border: 1px solid darkgray;" /> + <iframe id="marviniframe" src="/static/marvin-ippidbeditor.html" data-smiles="{{ smiles }}" style="overflow: hidden; min-width: 700px; min-height: 500px; border: 1px solid darkgray;" /> </iframe> </div> <div class="modal-footer"> @@ -21,10 +21,24 @@ var marvinSketcherInstance; MarvinJSUtil.getEditor("marviniframe").then(function(sketcherInstance) { marvinSketcherInstance = sketcherInstance; + $('#modal-marvin').on('shown.bs.modal', function (e) { + var smilesToLoad = $('#marviniframe').attr('data-smiles'); + if(smilesToLoad!=''){ + $.ajax({ + url: '/utils/smi2mol', + data: {'smiString':smilesToLoad}, + success: function(data){ + var molString = data.mol; + marvinSketcherInstance.importStructure("mol", molString).catch(function(error, toto) { + console.log("error importing MOL file into MarvinJS:", error); + }); + } + }); + } + }); $('#marvinApplyButton').click(function(){ $('#modal-marvin').modal('hide'); marvinSketcherInstance.exportStructure("mol").then(function(source) { - //alert(source); $.ajax({ url: '/utils/mol2smi', data: {'molString':source}, diff --git a/ippisite/ippidb/urls.py b/ippisite/ippidb/urls.py index b0cbe0f1..1b9bda0c 100644 --- a/ippisite/ippidb/urls.py +++ b/ippisite/ippidb/urls.py @@ -22,6 +22,7 @@ urlpatterns = [ url(r'^admin-session/add/$', ippidb_wizard, name='ippidb'), url(r'^admin-session/update/$', views.update, name='update'), url(r'^utils/mol2smi$', views.convert_mol2smi, name='mol2smi'), + url(r'^utils/smi2mol$', views.convert_smi2mol, name='smi2mol'), ] from django.conf import settings diff --git a/ippisite/ippidb/views.py b/ippisite/ippidb/views.py index 9f85b1ea..02e5b8b6 100644 --- a/ippisite/ippidb/views.py +++ b/ippisite/ippidb/views.py @@ -14,7 +14,7 @@ from formtools.wizard.views import SessionWizardView, NamedUrlSessionWizardView import ippidb from .forms import * -from .utils import mol2smi +from .utils import mol2smi, smi2mol from .models import Protein, Bibliography, ProteinDomainComplex, ProteinDomainBoundComplex, RefCompoundBiblio, TestActivityDescription, Compound, Ppi, Disease, Taxonomy, LeLleBiplotData, PcaBiplotData, PpiFamily, CompoundTanimoto, create_tanimoto from .ws import get_pdb_uniprot_mapping @@ -358,3 +358,9 @@ def convert_mol2smi(request): smiles_string = mol2smi(mol_string) resp = {'smiles': smiles_string} return JsonResponse(resp) + +def convert_smi2mol(request): + smi_string = request.GET.get('smiString') + mol_string = smi2mol(smi_string) + resp = {'mol': mol_string} + return JsonResponse(resp) -- GitLab