NGL viewer remd no login
authorCezary Czaplewski <czarek@chem.univ.gda.pl>
Fri, 26 Jan 2018 19:36:48 +0000 (20:36 +0100)
committerCezary Czaplewski <czarek@chem.univ.gda.pl>
Fri, 26 Jan 2018 19:36:48 +0000 (20:36 +0100)
changelog update

django_simple/todo/templates/changelog.html
django_simple/todo/templates/details1.html

index 849a5df..1c159b0 100644 (file)
  <dd>
  Optional selection of only a single chain for given PDB code added.
  </dd>
+
+<dt>26.01.2018</dt>
+ <dd>
+ NGL Viewer added for 3D display of structures and trajectories.
+ </dd>
+
  
 </dl>
               
index b7f2edc..890c156 100644 (file)
@@ -578,7 +578,7 @@ Created {{ task.created_date  }}
        </li>           
                        
                         <div class="model">
-                       <li class="list-group-item task-item">
+<!--                   <li class="list-group-item task-item">
                          <div class="col-md-2"> model1 after conversion
                          to allatom 
                          {{ task.remd_model1|linebreaks }}
@@ -589,10 +589,27 @@ Created {{ task.created_date  }}
                          <img
                          src="/myfiles/download-file/{{task.jobdirname}}/model1.png" width="500">
                          </a></div>
+                       </li> -->                       
+                       <li class="list-group-item task-item">
+                         <div class="col-md-2"> model1 after conversion 
+                         to allatom {{ task.remd_model1|linebreaks }}
+                         NGL viewer</div>
+                         <div class="col-md-10" id="viewport_M1"
+                         style="width:500px;height:500px;"> 
+                         </div>
                        </li>
+                        <li class="list-group-item task-item">
+               <div class="col-md-12">
+               {% if task.md_pdbref %}
+               <button id="toggleRefM1">Reference structure on/off</button>
+               {% endif %}
+               <button id="toggleSidechainsM1">Side-chains on/off</button>
+               </div>
+                        </li>
+                       
                        </div>
                        <div class="model">
-                       <li class="list-group-item task-item">
+<!--                   <li class="list-group-item task-item">
                          <div class="col-md-2"> model2 after conversion
                          to allatom 
                          {{ task.remd_model2|linebreaks }}
@@ -603,10 +620,28 @@ Created {{ task.created_date  }}
                          <img
                          src="/myfiles/download-file/{{task.jobdirname}}/model2.png" width="500">
                          </a></div>
+                       </li> -->
+                       <li class="list-group-item task-item">
+                         <div class="col-md-2"> model2 after conversion 
+                         to allatom {{ task.remd_model2|linebreaks }}
+                         NGL viewer</div>
+                         <div class="col-md-10" id="viewport_M2"
+                         style="width:500px;height:500px;"> 
+                         </div>
                        </li>
+                        <li class="list-group-item task-item">
+               <div class="col-md-12">
+               {% if task.md_pdbref %}
+               <button id="toggleRefM2">Reference structure on/off</button>
+               {% endif %}
+               <button id="toggleSidechainsM2">Side-chains on/off</button>
+               </div>
+                        </li>
+                       
+                       
                        </div>
                        <div class="model">
-                       <li class="list-group-item task-item">
+<!--                   <li class="list-group-item task-item">
                          <div class="col-md-2"> model3 after conversion
                          to allatom 
                          {{ task.remd_model3|linebreaks }}
@@ -617,10 +652,27 @@ Created {{ task.created_date  }}
                          <img
                          src="/myfiles/download-file/{{task.jobdirname}}/model3.png" width="500">
                          </a></div>
+                       </li>-->
+                       <li class="list-group-item task-item">
+                         <div class="col-md-2"> model3 after conversion 
+                         to allatom {{ task.remd_model3|linebreaks }}
+                         NGL viewer</div>
+                         <div class="col-md-10" id="viewport_M3"
+                         style="width:500px;height:500px;"> 
+                         </div>
                        </li>
+                        <li class="list-group-item task-item">
+               <div class="col-md-12">
+               {% if task.md_pdbref %}
+               <button id="toggleRefM3">Reference structure on/off</button>
+               {% endif %}
+               <button id="toggleSidechainsM3">Side-chains on/off</button>
+               </div>
+                        </li>
+                       
                        </div>
                        <div class="model">
-                       <li class="list-group-item task-item">
+<!--                   <li class="list-group-item task-item">
                          <div class="col-md-2"> model4 after conversion
                          to allatom 
                          {{ task.remd_model4|linebreaks }}
@@ -631,10 +683,27 @@ Created {{ task.created_date  }}
                          <img
                          src="/myfiles/download-file/{{task.jobdirname}}/model4.png" width="500">
                          </a></div>
+                       </li>-->
+                       <li class="list-group-item task-item">
+                         <div class="col-md-2"> model4 after conversion 
+                         to allatom {{ task.remd_model4|linebreaks }}
+                         NGL viewer</div>
+                         <div class="col-md-10" id="viewport_M4"
+                         style="width:500px;height:500px;"> 
+                         </div>
                        </li>
+                        <li class="list-group-item task-item">
+               <div class="col-md-12">
+               {% if task.md_pdbref %}
+               <button id="toggleRefM4">Reference structure on/off</button>
+               {% endif %}
+               <button id="toggleSidechainsM4">Side-chains on/off</button>
+               </div>
+                        </li>
+                       
                        </div>
                        <div class="model">
-                       <li class="list-group-item task-item">
+<!--                   <li class="list-group-item task-item">
                          <div class="col-md-2"> model5 after conversion
                          to allatom 
                          {{ task.remd_model5|linebreaks }}
@@ -645,7 +714,24 @@ Created {{ task.created_date  }}
                          <img
                          src="/myfiles/download-file/{{task.jobdirname}}/model5.png" width="500">
                          </a></div>
+                       </li>-->
+                       <li class="list-group-item task-item">
+                         <div class="col-md-2"> model5 after conversion 
+                         to allatom {{ task.remd_model5|linebreaks }}
+                         NGL viewer</div>
+                         <div class="col-md-10" id="viewport_M5"
+                         style="width:500px;height:500px;"> 
+                         </div>
                        </li>
+                        <li class="list-group-item task-item">
+               <div class="col-md-12">
+               {% if task.md_pdbref %}
+               <button id="toggleRefM5">Reference structure on/off</button>
+               {% endif %}
+               <button id="toggleSidechainsM5">Side-chains on/off</button>
+               </div>
+                        </li>
+                       
                        </div>
                        {% endif %}
 
@@ -659,6 +745,7 @@ Regular user cannot use this link.
 {% endif %}
        
 <script src="/static/jquery.min.js"></script>
+<script src="https://unpkg.com/ngl"></script>
 
 <script>
 $('.majorpointslegend').click(function(){
@@ -673,7 +760,108 @@ $('.majorpointslegend').click(function(){
 
 {% if task.type == "remd" %}
 <script>
+function display_model(numstr){
+
+{% if task.md_pdbref %}
+  var stage = new NGL.Stage("viewport_M"+numstr);
+  stage.setParameters( { backgroundColor: "white" } );
+  Promise.all([
+      stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/plik1.pdb" ,{defaultRepresentation: false}) .then( function( o ){
+        o.addRepresentation( "cartoon",{ name:"ref", color:"grey"
+        })
+        o.addRepresentation( "line", {name:"refsc",visible: false,
+         sele:"not hydrogen and sidechainAttached"
+        })    
+        return o
+      }),
+      stage.loadFile(
+      "/myfiles/download-file/{{task.jobdirname}}/MODEL"+numstr+".pdb",{defaultRepresentation: false}) .then( function( o ){
+        o.addRepresentation( "cartoon",{ name: "unres", color:
+               "residueindex",colorScale:["blue","cyan", "green",
+               "yellow","orange", "red"]
+                       })
+        o.addRepresentation( "line",{ name: "unressc", visible: false, color:
+       "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
+        , sele:"not hydrogen and sidechainAttached" })    
+        return o
+      })
+  ]).then(function (ol1) {
+   ol1[ 0 ].superpose(ol1[ 1 ], false, ".CA")
+   ol1[ 0 ].autoView()
+  })             
+            var ref=true;
+            var side=false;
+            var toggleAll = document.getElementById( "toggleRefM"+numstr );
+            toggleAll.addEventListener( "click", function(){
+                        ref=! ref;                                
+                       stage.getRepresentationsByName(
+                               "ref" ).list.forEach( function( repre ){
+                               repre.setVisibility( !repre.visible );
+                       } );
+               if (side) {
+                       stage.getRepresentationsByName(
+                               "refsc" ).list.forEach( function( repre ){
+                               repre.setVisibility( !repre.visible );
+                       } );
+               }
+
+            } );
+     var toggleSidechains =document.getElementById("toggleSidechainsM"+numstr );
+     toggleSidechains.addEventListener( "click", function(){
+             side=!side;
+             if (ref) {
+                stage.getRepresentationsByName(
+                       "refsc" ).list.forEach( function( repre ){
+                       repre.setVisibility( !repre.visible );
+            } );
+      }
+      stage.getRepresentationsByName("unressc").list.forEach( function( repre ){
+                       repre.setVisibility( !repre.visible );
+       } );
+
+      } );
+{% else %}
+  var stage = new NGL.Stage("viewport_M"+numstr);
+  stage.setParameters( { backgroundColor: "white" } );
+  stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/MODEL"+numstr+".pdb",{defaultRepresentation: false}) .then( function( o ){
+        o.addRepresentation( "cartoon",{ name: "unres", color:
+               "residueindex",colorScale:["blue","cyan", "green",
+               "yellow","orange", "red"]
+                       });
+        o.addRepresentation( "line",{ name: "unressc", visible: false, color:
+       "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
+        , sele:"not hydrogen and sidechainAttached" });
+        o.autoView();
+  })             
+     var toggleSidechains =document.getElementById("toggleSidechainsM"+numstr );
+     toggleSidechains.addEventListener( "click", function(){
+      stage.getRepresentationsByName("unressc").list.forEach( function( repre ){
+                       repre.setVisibility( !repre.visible );
+       } );
+
+      } );
+
+{% endif %}
+}
+
+
+window.addEventListener("resize", 
+function (event) {
+      stage.handleResize();
+},false);
+
+
+display_model("1")
+
+
 var slideIndex = 1;
+var y = document.getElementsByClassName("model");
+var lista=[];
+var ii;
+for (ii = 0; ii < y.length; ii++) {
+ lista.push(0)
+}
+lista[0]=1;
 showDivs(slideIndex);
 
 function plusDivs(n) {
@@ -689,6 +877,25 @@ function showDivs(n) {
      x[i].style.display = "none";
   }
   x[slideIndex-1].style.display = "block";
+  
+  if (lista[slideIndex-1] == 0 && slideIndex == 2) {
+    display_model("2")  
+  }
+  
+  if (lista[slideIndex-1] == 0 && slideIndex == 3) {
+     display_model("3")  
+  }
+
+  if (lista[slideIndex-1] == 0 && slideIndex == 4) {
+     display_model("4")  
+  }
+
+  if (lista[slideIndex-1] == 0 && slideIndex == 5) {
+     display_model("5")  
+  }
+    
+  
+  if (lista[slideIndex-1] == 0) {lista[slideIndex-1]=1}
 }
 </script>
 {% endif %}
@@ -716,7 +923,7 @@ $(document).ready(function() {
 </script>
 {% endif %} 
        
-<script src="https://unpkg.com/ngl"></script>
+
 {% if task.type == "min" %}
 <script>
 window.addEventListener("resize",