1 {% extends "base.html" %}
4 {% load i18n lazysignup_tags %}
7 {% if task.owner|is_lazy_user %}
9 <ul class="list-group">
11 <li class="list-group-item new-task-item task-item">
13 <div class="col-md-2 form-group">
14 <form action="/refresh_done1/{{task.id}}/" method="post">
16 <input type="submit" class="btn" value="Refresh" name="refreshbtn">
20 <div class="col-md-10 form-group">
21 <h5 style="text-align:right;float:right;">
22 {% if not task.done %}
23 {% if task.running > 0 %}
24 {% if task.running == 100 %}
30 waiting in the queue to start
38 <h3> Task <b>{{ task.name }}</b></h3>
39 Created {{ task.created_date }}
40 <ul class="list-group">
42 <li class="list-group-item task-item">
43 <div class="col-md-4"> done ?</div>
44 <div class="col-md-8">
46 <span class="fa fa-check-square-o"></span>
47 {% if task.type == "md" or task.type == "remd" or task.type == "dock" %}
48 <form action="restart/"
50 style="text-align;float:right;">
53 class="btn btn-default"
60 {% if task.running > 0 %}
61 <span class="fa fa-spinner
65 <span class="fa fa-square-o"></span>
72 <fieldset class="majorpoints">
73 <legend class="majorpointslegend"
74 style="background-color:#d3d3d3;cursor: pointer;">Show input parameters</legend>
75 <div class="hiders" style="display:none" >
77 <li class="list-group-item task-item">
78 <div class="col-md-6"> type </div>
79 <div class="col-md-6">{{ task.type }}</div>
82 <li class="list-group-item task-item">
83 <div class="col-md-6"> force field </div>
84 <div class="col-md-6">{{ task.unres_ff }}</div>
87 <li class="list-group-item task-item">
88 <div class="col-md-4"> sequence </div>
89 <div class="col-md-8 monospace">{{ task.md_seq}}</div>
92 <li class="list-group-item task-item">
93 <div class="col-md-4"> secondary structure
95 <div class="col-md-8 monospace">{{ task.md_2d}}</div>
99 <li class="list-group-item task-item">
100 <div class="col-md-6"> SSBOND </div>
101 <div class="col-md-6">{{ task.ssbond}}</div>
105 {% if task.type == "min" %}
108 <li class="list-group-item task-item">
109 <div class="col-md-6"> algorithm</div>
110 <div class="col-md-6">{{ task.min_choice }}</div>
112 <li class="list-group-item task-item">
113 <div class="col-md-6"> overlap</div>
114 <div class="col-md-6">{{ task.min_overlap }}</div>
116 <li class="list-group-item task-item">
117 <div class="col-md-6"> searchsc</div>
118 <div class="col-md-6">{{ task.min_searchsc }}</div>
120 <li class="list-group-item task-item">
121 <div class="col-md-6"> maxmin</div>
122 <div class="col-md-6">{{ task.min_maxmin }}</div>
124 <li class="list-group-item task-item">
125 <div class="col-md-6"> maxfun</div>
126 <div class="col-md-6">{{ task.min_maxfun }}</div>
128 <li class="list-group-item task-item">
129 <div class="col-md-6"> pdbout</div>
130 <div class="col-md-6">{{ task.min_pdbout }}</div>
132 <li class="list-group-item task-item">
133 <div class="col-md-6"> input pdb </div>
134 <div class="col-md-6">{{ task.myfile1 }}</div>
136 <li class="list-group-item task-item">
137 <div class="col-md-6"> pdb code</div>
138 <div class="col-md-6">{{ task.pdbcode }}</div>
140 <li class="list-group-item task-item">
141 <div class="col-md-6"> unres_pdb</div>
142 <div class="col-md-6">{{ task.min_unres_pdb }}</div>
146 {% if task.type == "md" %}
147 <li class="list-group-item task-item">
148 <div class="col-md-6"> starting </div>
149 <div class="col-md-6">{{ task.md_start}}</div>
153 <li class="list-group-item task-item">
154 <div class="col-md-6"> input pdb3 </div>
155 <div class="col-md-6">{{ task.myfile3 }}</div>
159 <li class="list-group-item task-item">
160 <div class="col-md-6"> input pdb </div>
161 <div class="col-md-6">{{ task.myfile1 }}</div>
163 <li class="list-group-item task-item">
164 <div class="col-md-6"> pdb code</div>
165 <div class="col-md-6">{{ task.pdbcode }}</div>
167 <li class="list-group-item task-item">
168 <div class="col-md-6"> seed </div>
169 <div class="col-md-6">{{ task.md_seed}}</div>
171 <li class="list-group-item task-item">
172 <div class="col-md-6"> pdbref </div>
173 <div class="col-md-6">{{ task.md_pdbref}}</div>
175 <li class="list-group-item task-item">
176 <div class="col-md-6"> respa </div>
177 <div class="col-md-6">{{ task.md_respa}}</div>
179 <li class="list-group-item task-item">
180 <div class="col-md-6"> temperature </div>
181 <div class="col-md-6">{{ task.md_temp}}</div>
183 <li class="list-group-item task-item">
184 <div class="col-md-6"> nstep </div>
185 <div class="col-md-6">{{ task.md_nstep}}</div>
187 <li class="list-group-item task-item">
188 <div class="col-md-6"> total steps (with restarts) </div>
189 <div class="col-md-6">{{ task.md_total_steps}}</div>
191 <li class="list-group-item task-item">
192 <div class="col-md-6"> ntwe </div>
193 <div class="col-md-6">{{ task.md_ntwe}}</div>
195 <li class="list-group-item task-item">
196 <div class="col-md-6"> ntwx </div>
197 <div class="col-md-6">{{ task.md_ntwx}}</div>
199 <li class="list-group-item task-item">
200 <div class="col-md-6"> dt </div>
201 <div class="col-md-6">{{ task.md_dt}}</div>
203 <li class="list-group-item task-item">
204 <div class="col-md-6"> thermostat </div>
205 <div class="col-md-6">{{ task.md_lang}}</div>
208 {% if task.md_lang == "berendsen" %}
210 <li class="list-group-item task-item">
211 <div class="col-md-6"> tau </div>
212 <div class="col-md-6">{{ task.md_tau}}</div>
217 <li class="list-group-item task-item">
218 <div class="col-md-6"> scal_fric </div>
219 <div class="col-md-6">{{ task.md_scal_fric}}</div>
224 <li class="list-group-item task-item">
225 <div class="col-md-6"> mdpdb </div>
226 <div class="col-md-6">{{ task.md_mdpdb}}</div>
228 <li class="list-group-item task-item">
229 <div class="col-md-6"> RESPA </div>
230 <div class="col-md-6">{{ task.md_respa}}</div>
236 {% if task.type == "remd" or task.type == "dock" %}
238 <li class="list-group-item task-item">
239 <div class="col-md-6"> nrep </div>
240 <div class="col-md-6">{{ task.remd_nrep}}</div>
242 <li class="list-group-item task-item">
243 <div class="col-md-6"> starting </div>
244 <div class="col-md-6">{{ task.md_start}}</div>
247 {% if task.type == "remd" %}
248 <li class="list-group-item task-item">
249 <div class="col-md-6"> input pdb3 </div>
250 <div class="col-md-6">{{ task.myfile3 }}</div>
254 <li class="list-group-item task-item">
255 <div class="col-md-6"> input pdb </div>
256 <div class="col-md-6">{{ task.myfile1 }}</div>
258 <li class="list-group-item task-item">
259 <div class="col-md-6"> pdb code</div>
260 <div class="col-md-6">{{ task.pdbcode }}</div>
262 {% if task.type == "dock" %}
263 <li class="list-group-item task-item">
264 <div class="col-md-6"> input pdb2 </div>
265 <div class="col-md-6">{{ task.myfile2 }}</div>
267 <li class="list-group-item task-item">
268 <div class="col-md-6"> pdb code2</div>
269 <div class="col-md-6">{{ task.pdbcode2 }}</div>
271 <li class="list-group-item task-item">
272 <div class="col-md-6"> dock_peptide</div>
273 <div class="col-md-6">{{ task.dock_peptide }}</div>
277 <li class="list-group-item task-item">
278 <div class="col-md-6"> seed </div>
279 <div class="col-md-6">{{ task.md_seed}}</div>
281 <li class="list-group-item task-item">
282 <div class="col-md-6"> pdbref </div>
283 <div class="col-md-6">{{ task.md_pdbref}}</div>
285 {% if task.md_start == "pdbstart" %}
286 <li class="list-group-item task-item">
287 <div class="col-md-6"> preminim maxfun </div>
288 <div class="col-md-6">{{ task.min_maxfun }}</div>
291 <li class="list-group-item task-item">
292 <div class="col-md-6"> respa </div>
293 <div class="col-md-6">{{ task.md_respa}}</div>
295 <li class="list-group-item task-item">
296 <div class="col-md-6"> nstep </div>
297 <div class="col-md-6">{{ task.md_nstep}}</div>
299 <li class="list-group-item task-item">
300 <div class="col-md-6"> total steps (with restarts) </div>
301 <div class="col-md-6">{{ task.md_total_steps}}</div>
303 <li class="list-group-item task-item">
304 <div class="col-md-6"> ntwe </div>
305 <div class="col-md-6">{{ task.md_ntwe}}</div>
307 <li class="list-group-item task-item">
308 <div class="col-md-6"> nstex </div>
309 <div class="col-md-6">{{ task.remd_nstex}}</div>
311 <li class="list-group-item task-item">
312 <div class="col-md-6"> ntwx </div>
313 <div class="col-md-6">{{ task.md_ntwx}}</div>
315 <li class="list-group-item task-item">
316 <div class="col-md-6"> dt </div>
317 <div class="col-md-6">{{ task.md_dt}}</div>
319 <li class="list-group-item task-item">
320 <div class="col-md-6"> thermostat </div>
321 <div class="col-md-6">{{ task.md_lang}}</div>
324 {% if task.md_lang == "berendsen" %}
326 <li class="list-group-item task-item">
327 <div class="col-md-6"> tau </div>
328 <div class="col-md-6">{{ task.md_tau}}</div>
333 <li class="list-group-item task-item">
334 <div class="col-md-6"> scal_fric </div>
335 <div class="col-md-6">{{ task.md_scal_fric}}</div>
340 <li class="list-group-item task-item">
341 <div class="col-md-6"> RESPA </div>
342 <div class="col-md-6">{{ task.md_respa}}</div>
345 <li class="list-group-item task-item">
346 <div class="col-md-6"> temperatures </div>
347 <div class="col-md-6">{{ task.remd_multi_t}}</div>
349 <li class="list-group-item task-item">
350 <div class="col-md-6"> multiplex </div>
351 <div class="col-md-6">{{ task.remd_multi_m}}</div>
353 <li class="list-group-item task-item">
354 <div class="col-md-6"> temperature for clustering</div>
355 <div class="col-md-6">{{ task.remd_cluter_temp}}</div>
357 <li class="list-group-item task-item">
358 <div class="col-md-6"> number of clusters</div>
359 <div class="col-md-6">{{ task.remd_cluster_n}}</div>
362 {% if task.saxs_data != "" %}
363 <li class="list-group-item task-item">
364 <div class="col-md-6"> wsaxs </div>
365 <div class="col-md-6">{{ task.wsaxs }}</div>
367 <li class="list-group-item task-item">
368 <div class="col-md-6"> scal_rad (saxs) </div>
369 <div class="col-md-6">{{ task.scal_rad }}</div>
371 <li class="list-group-item task-item">
372 <div class="col-md-6"> saxs distribution </div>
373 <div class="col-md-6"><pre> {{ task.saxs_data }}</pre></div>
379 <li class="list-group-item task-item">
380 <div class="col-md-6"> Box X Y Z</div>
381 <div class="col-md-2">{{ task.boxx}}</div>
382 <div class="col-md-2">{{ task.boxy}}</div>
383 <div class="col-md-2">{{ task.boxz}}</div>
390 <li class="list-group-item task-item">
391 <div class="col-md-4"> Directory </div>
392 <div class="col-md-8">
393 <a href="/myfiles/list/{{task.jobdirname}}/">
394 {{ task.jobdirname }}
398 <a class="btn btn-default"
399 href="/{{task.id}}/all.zip">
408 {% if task.type == "min" %}
410 <li class="list-group-item task-item">
411 <div class="col-md-2"> Etot </div>
412 <div class="col-md-10">{{ task.etot }}</div>
415 <li class="list-group-item task-item">
416 <div class="col-md-2"> UNRES model </div>
417 <div class="col-md-10">
419 href="/myfiles/download-file/{{task.jobdirname}}/unres.pse">
421 src="/myfiles/download-file/{{task.jobdirname}}/unres.png"
422 width="500"></a> </div>
425 <li class="list-group-item task-item">
426 <div class="col-md-2"> UNRES model NGL viewer</div>
427 <div class="col-md-10" id="viewport_unres"
428 style="width:500px;height:500px;">
434 <li class="list-group-item task-item">
435 <div class="col-md-2"> Structure overlap </div>
436 <div class="col-md-10"> <img
437 src="/myfiles/download-file/{{task.jobdirname}}/unres_overlap.png"
441 <li class="list-group-item task-item">
442 <div class="col-md-2"> Structure overlap NGL viewer</div>
443 <div class="col-md-10" id="viewport_min"
444 style="width:500px;height:500px;">
447 <li class="list-group-item task-item">
448 <div class="col-md-12">
449 <button id="toggleAllatom">Input structure on/off</button>
450 <button id="toggleSidechains2">Side-chains on/off</button>
455 <li class="list-group-item task-item">
456 <div class="col-md-2"> Results </div>
457 <div class="col-md-10">{{ task.results_text|linebreaks }}</div>
460 {% if task.type == "md" %}
462 <li class="list-group-item task-item">
463 <div class="col-md-2"> Temperature histogram </div>
464 <div class="col-md-10"> <img
465 src="/myfiles/download-file/{{task.jobdirname}}/temp_hist.png"
469 <li class="list-group-item task-item">
470 <div class="col-md-2"> Potential energy </div>
471 <div class="col-md-10"> <img
472 src="/myfiles/download-file/{{task.jobdirname}}/md_ene.png"
476 <li class="list-group-item task-item">
477 <div class="col-md-2"> Movie </div>
478 <div class="col-md-10">
480 <video width="500" height="400"
481 preload="auto" controls="controls">
483 src="/myfiles/download-file/{{task.jobdirname}}/md.ogv"
484 type="video/ogg; codecs=theora"> </source>
490 {% if task.md_mdpdb %}
491 <li class="list-group-item task-item">
492 <div class="col-md-2"> Trajectory NGL viewer</div>
493 <div class="col-md-10" id="viewport_traj"
494 style="width:500px;height:500px;">
497 <li class="list-group-item task-item">
498 <div class="col-md-6">
499 <input id="clipRange" type="range" value=1 min=1 max= {% widthratio task.md_total_steps task.md_ntwx 1 %} step=1 ></input><span id="clipRange_val">1</span> frame
501 <div class="col-md-6">
502 <button id="toggleRunMDs">run/pause MD</button>
503 <button id="toggleSidechains1">side-chains on/off</button>
509 <li class="list-group-item task-item">
510 <div class="col-md-2"> Radius of gyration based
511 on C<sup>α</sup> coordinates </div>
512 <div class="col-md-10"> <img
513 src="/myfiles/download-file/{{task.jobdirname}}/md_gyr.png"
519 {% if task.md_pdbref %}
520 <li class="list-group-item task-item">
521 <div class="col-md-2"> C<sup>α</sup> RMSD </div>
522 <div class="col-md-10"> <img
523 src="/myfiles/download-file/{{task.jobdirname}}/md_rms.png"
527 <li class="list-group-item task-item">
528 <div class="col-md-2"> fraction of native
529 side-chain concacts </div>
530 <div class="col-md-10"> <img
531 src="/myfiles/download-file/{{task.jobdirname}}/md_fracn.png"
537 {% if task.md_start == "pdbstart" %}
538 <li class="list-group-item task-item">
539 <div class="col-md-2"> fluctuations </div>
540 <div class="col-md-10"> <img
541 src="/myfiles/download-file/{{task.jobdirname}}/fluct_plot.png"
545 <li class="list-group-item task-item">
546 <div class="col-md-2"> fluctuations putty on
547 starting structure</div>
548 <div class="col-md-10">
550 href="/myfiles/download-file/{{task.jobdirname}}/fluct.pse">
552 src="/myfiles/download-file/{{task.jobdirname}}/fluct.png"
553 width="500"></a> </div>
556 <li class="list-group-item task-item">
557 <div class="col-md-2"> fluctuations putty on
558 starting structure NGL viewer</div>
559 <div class="col-md-10" id="viewport_putty"
560 style="width:500px;height:500px;">
571 {% if task.type == "remd" or task.type == "dock" %}
573 <li class="list-group-item task-item">
574 <div class="col-md-2"> Energy histogram </div>
575 <div class="col-md-10"> <img
576 src="/myfiles/download-file/{{task.jobdirname}}/remd_ene_hist.png"
580 <li class="list-group-item task-item">
581 <div class="col-md-2"> Energy vs. temperature </div>
582 <div class="col-md-10"> <img
583 src="/myfiles/download-file/{{task.jobdirname}}/remd_Tene.png"
587 <li class="list-group-item task-item">
588 <div class="col-md-2"> Cv vs. temperature </div>
589 <div class="col-md-10"> <img
590 src="/myfiles/download-file/{{task.jobdirname}}/remd_cv.png"
594 {% if task.md_pdbref %}
596 <li class="list-group-item task-item">
597 <div class="col-md-2"> Average C<sup>α</sup> RMSD vs. temperature </div>
598 <div class="col-md-10"> <img
599 src="/myfiles/download-file/{{task.jobdirname}}/remd_rmsd.png"
603 <li class="list-group-item task-item">
604 <div class="col-md-2"> potential energy vs.
605 C<sup>α</sup> RMSD</div>
606 <div class="col-md-10"> <img
607 src="/myfiles/download-file/{{task.jobdirname}}/remd_ene_rms.png"
611 <li class="list-group-item task-item">
612 <div class="col-md-2"> C<sup>α</sup> RMSD vs. step*replica
613 colored by bath temperature</div>
614 <div class="col-md-10"> <img
615 src="/myfiles/download-file/{{task.jobdirname}}/remd_step_rms.png"
622 <li class="list-group-item task-item">
623 <div class="col-md-2"> exchanges (walk in T) </div>
624 <div class="col-md-10"> <img
625 src="/myfiles/download-file/{{task.jobdirname}}/remd_ex.png"
629 {% if task.saxs_data != "" %}
630 <li class="list-group-item task-item">
631 <div class="col-md-2"> P(r) of input SAXS data and
632 calculated for 5 models and the input pdb</div>
633 <div class="col-md-10"> <img
634 src="/myfiles/download-file/{{task.jobdirname}}/saxs.png"
639 <li class="list-group-item task-item">
640 <div class="col-md-4">
641 <button onclick="plusDivs(-1)">❮</button>
643 <div class="col-md-6">
646 <div class="col-md-2">
647 <button onclick="plusDivs(1)">❯</button>
651 {% for iii in range %}
653 {% with istr=forloop.counter|stringformat:"s" %}
654 {% with MODELi="MODEL"|add:istr|add:".pdb" %}
655 {% with viewporti="viewport_M"|add:istr %}
656 {% with toggleRefi="toggleRefM"|add:istr %}
657 {% with toggleSidechainsi="toggleSidechainsM"|add:istr %}
660 <li class="list-group-item task-item">
661 <div class="col-md-2"> model {{ iii }}
662 {% if not task.damino %}
663 after conversion to allatom
665 {{ remd_models|index:iii|linebreaks }}
667 <div class="col-md-10" id={{viewporti}}
668 style="width:500px;height:500px;">
671 <li class="list-group-item task-item">
672 <div class="col-md-12">
673 {% if task.md_pdbref %}
674 <button id={{toggleRefi}}>Reference structure on/off</button>
676 <button id={{toggleSidechainsi}}>Side-chains on/off</button>
677 <a class="btn btn-default"
678 href="/myfiles/download-file/{{task.jobdirname}}/{{MODELi}}">Download</a>
696 Regular user cannot use this link.
700 <script src="/static/jquery.min.js"></script>
701 <script src="https://unpkg.com/ngl"></script>
704 $('.majorpointslegend').click(function(){
705 $(this.parentNode).find('.hiders').toggle();
706 if($(this.parentNode).find('.majorpointslegend').text()=='Show input parameters'){
707 $(this.parentNode).find('.majorpointslegend').text('Hide input parameters');
709 $(this.parentNode).find('.majorpointslegend').text('Show input parameters');
714 {% if task.type == "remd" or task.type == "dock" %}
716 function display_model(num){
718 numstr=num.toString();
719 {% if task.md_pdbref %}
720 var stage = new NGL.Stage("viewport_M"+numstr);
721 stage.setParameters( { backgroundColor: "white",fogFar: 60, fogNear: 45 } );
723 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/plik1.pdb" ,{defaultRepresentation: false}) .then( function( o ){
724 o.addRepresentation( "cartoon",{ name:"ref", color:"grey"
726 o.addRepresentation( "line", {name:"refsc",visible: false,
727 sele:"not hydrogen and sidechainAttached"
732 "/myfiles/download-file/{{task.jobdirname}}/MODEL"+numstr+".pdb",{defaultRepresentation: false}) .then( function( o ){
734 o.addRepresentation( "licorice",{ name: "unres", color:
735 "residueindex",colorScale:["blue","cyan", "green",
736 "yellow","orange", "red"], sele:".CA"
738 o.addRepresentation( "licorice",{ name: "unressc", visible: false, color:
739 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
742 o.addRepresentation( "cartoon",{ name: "unres", color:
743 "residueindex",colorScale:["blue","cyan", "green",
744 "yellow","orange", "red"]
746 o.addRepresentation( "line",{ name: "unressc", visible: false, color:
747 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
748 , sele:"not hydrogen and sidechainAttached" })
752 ]).then(function (ol1) {
753 ol1[ 1 ].superpose(ol1[ 0 ], false, ".CA")
758 var toggleAll = document.getElementById( "toggleRefM"+numstr );
759 toggleAll.addEventListener( "click", function(){
761 stage.getRepresentationsByName(
762 "ref" ).list.forEach( function( repre ){
763 repre.setVisibility( !repre.visible );
766 stage.getRepresentationsByName(
767 "refsc" ).list.forEach( function( repre ){
768 repre.setVisibility( !repre.visible );
773 var toggleSidechains =document.getElementById("toggleSidechainsM"+numstr );
774 toggleSidechains.addEventListener( "click", function(){
777 stage.getRepresentationsByName(
778 "refsc" ).list.forEach( function( repre ){
779 repre.setVisibility( !repre.visible );
782 stage.getRepresentationsByName("unressc").list.forEach( function( repre ){
783 repre.setVisibility( !repre.visible );
788 var stage = new NGL.Stage("viewport_M"+numstr);
789 stage.setParameters( { backgroundColor: "white",fogFar: 60, fogNear: 45 } );
790 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/MODEL"+numstr+".pdb",{defaultRepresentation: false}) .then( function( o ){
792 o.addRepresentation( "licorice",{ name: "unres", color:
793 "residueindex",colorScale:["blue","cyan", "green",
794 "yellow","orange", "red"],sele:".CA"
796 o.addRepresentation( "licorice",{ name: "unressc", visible: false, color:
797 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
800 o.addRepresentation( "cartoon",{ name: "unres", color:
801 "residueindex",colorScale:["blue","cyan", "green",
802 "yellow","orange", "red"]
804 o.addRepresentation( "line",{ name: "unressc", visible: false, color:
805 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
806 , sele:"not hydrogen and sidechainAttached" });
810 var toggleSidechains =document.getElementById("toggleSidechainsM"+numstr );
811 toggleSidechains.addEventListener( "click", function(){
812 stage.getRepresentationsByName("unressc").list.forEach( function( repre ){
813 repre.setVisibility( !repre.visible );
822 window.addEventListener("resize",
824 stage.handleResize();
832 var y = document.getElementsByClassName("model");
835 for (ii = 0; ii < y.length; ii++) {
839 showDivs(slideIndex);
841 function plusDivs(n) {
842 showDivs(slideIndex += n);
845 function showDivs(n) {
847 var x = document.getElementsByClassName("model");
848 if (n > x.length) {slideIndex = 1}
849 if (n < 1) {slideIndex = x.length}
850 for (i = 0; i < x.length; i++) {
851 x[i].style.display = "none";
853 x[slideIndex-1].style.display = "block";
855 if (lista[slideIndex-1] == 0) {
856 display_model(slideIndex)
860 if (lista[slideIndex-1] == 0) {lista[slideIndex-1]=1}
865 {% if not task.done %}
869 data:{csrfmiddlewaretoken: '{{ csrf_token }}'},
870 url: "/refresh_done1/{{task.id}}/",
872 success: function(data) {
873 document.location.reload();
875 complete: function() {
876 // Schedule the next request when the current one's complete
877 setTimeout(worker, 30000);
881 $(document).ready(function() {
882 // run the first time; all subsequent calls will take care of themselves
883 setTimeout(worker, 30000);
889 {% if task.type == "min" %}
891 window.addEventListener("resize",
893 stage.handleResize();
896 var stage_unres = new NGL.Stage("viewport_unres");
897 stage_unres.setParameters( { backgroundColor: "white" } );
899 [color_Red, color_Green, color_Blue, ellipsoid_width, ellipsoid_length ]
901 var resdb = { 'CYS': [1.000, 1.000, 0.000, 1.33741, 2.96868],
902 'MET': [0.000, 1.000, 0.000, 1.36694, 3.08863],
903 'PHE': [0.000, 0.392, 0.000, 1.48323, 3.04238],
904 'ILE': [0.000, 1.000, 0.000, 1.44098, 3.17389],
905 'LEU': [0.000, 1.000, 0.000, 1.51054, 2.52078],
906 'VAL': [0.000, 1.000, 0.000, 1.42072, 2.68924],
907 'TRP': [0.000, 0.392, 0.000, 1.23867, 3.47403],
908 'TYR': [0.596, 0.984, 0.596, 1.23060, 3.35434],
909 'ALA': [0.000, 1.000, 0.000, 1.23266, 1.72686],
910 'GLY': [1.000, 1.000, 1.000, 1.24626, 1.11383],
911 'THR': [1.000, 0.000, 1.000, 1.28674, 2.59210],
912 'SER': [1.000, 0.000, 1.000, 1.22820, 1.68800],
913 'GLN': [1.000, 0.000, 1.000, 1.24239, 2.22201],
914 'ASN': [1.000, 0.000, 1.000, 1.24447, 2.24946],
915 'GLU': [1.000, 0.000, 0.000, 1.25448, 2.05551],
916 'ASP': [1.000, 0.000, 0.000, 1.25417, 1.77556],
917 'HIS': [1.000, 0.000, 1.000, 1.21103, 3.02627],
918 'ARG': [0.000, 0.000, 1.000, 1.13573, 3.25143],
919 'LYS': [0.000, 0.000, 1.000, 1.22604, 4.50054],
920 'PRO': [0.000, 1.000, 1.000, 1.35131, 2.20525]
922 stage_unres.loadFile("/myfiles/download-file/{{task.jobdirname}}/file_GB000.pdb", {defaultRepresentation: false}).then
924 var shape = new NGL.Shape("shape")
926 o.addRepresentation("licorice");
927 o.structure.eachAtom(function(atom){
928 if (atom.atomname == "CA" && atom.chainname == chain) {
929 px=CAx+(atom.x-CAx)/2;
930 py=CAy+(atom.y-CAy)/2;
931 pz=CAz+(atom.z-CAz)/2;
932 shape.addSphere([px,py,pz],[0.643, 0.933, 0.960],0.6,"p");
934 if (atom.atomname == "CA") {
935 chain= atom.chainname
940 if (atom.atomname == "CB") {
944 norm=Math.sqrt(mx*mx+my*my+mz*mz);
946 var longaxis=resdb[res][4]
947 var shortaxis=resdb[res][3]
948 mx = mx /norm*longaxis;
949 my = my /norm*longaxis;
950 mz = mz /norm*longaxis;
952 shape.addEllipsoid([ atom.x, atom.y, atom.z ],
953 [ resdb[res][0], resdb[res][1], resdb[res][2]],
954 shortaxis, [ mx, my, mz ], [ 0, shortaxis, 0 ],resn);
957 var shapeComp = stage_unres.addComponentFromObject(shape)
958 shapeComp.addRepresentation("buffer")
964 var stage = new NGL.Stage("viewport_min");
965 stage.setParameters( { backgroundColor: "white" } );
967 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/file_GB000.pdb" ,{defaultRepresentation: false}) .then( function( o ){
968 o.addRepresentation( "backbone",{ color:
969 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
971 o.addRepresentation( "licorice",{ color:
972 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange","red"]
977 stage.loadFile("/myfiles/download-file/{{task.jobdirname}}/plik.pdb",{defaultRepresentation: false}) .then( function( o ){
978 o.addRepresentation( "backbone",{ name: "allatom", color:
979 "residueindex",colorScale:["blue","cyan", "green","yellow","orange", "red"]
981 o.addRepresentation( "line",{ name: "allatomsc", color:
982 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
983 ,sele:"not hydrogen and sidechainAttached"
987 ]).then(function (ol) {
988 ol[ 0 ].superpose(ol[ 1 ], false, ".CA")
994 var toggleAll = document.getElementById( "toggleAllatom" );
995 toggleAll.addEventListener( "click", function(){
997 stage.getRepresentationsByName(
998 "allatom" ).list.forEach( function( repre ){
999 repre.setVisibility( !repre.visible );
1002 stage.getRepresentationsByName(
1003 "allatomsc" ).list.forEach( function( repre ){
1004 repre.setVisibility( !repre.visible );
1008 var toggleSidechains = document.getElementById("toggleSidechains2" );
1009 toggleSidechains.addEventListener( "click", function(){
1012 stage.getRepresentationsByName(
1013 "allatomsc" ).list.forEach( function( repre ){
1014 repre.setVisibility( !repre.visible );
1018 stage.getRepresentationsByName("licorice").list.forEach( function( repre ){
1019 repre.setVisibility( !repre.visible );
1026 {% if task.type == "md" and task.md_start == "pdbstart" %}
1028 window.addEventListener("resize",
1030 stage.handleResize();
1033 var stage = new NGL.Stage("viewport_putty");
1034 stage.setParameters( { backgroundColor: "white" } );
1036 var tooltip = document.createElement("div")
1037 Object.assign(tooltip.style, {
1041 pointerEvents: "none",
1042 backgroundColor: "rgba( 0, 0, 0, 0.6 )",
1045 fontFamily: "sans-serif"
1047 document.body.appendChild(tooltip)
1049 stage.loadFile("/myfiles/download-file/{{task.jobdirname}}/plik_bf.pdb", {defaultRepresentation: false}).then
1051 o.addRepresentation("tube",{ color: "bfactor" , scale: 0.25,
1054 colorScale:["blue","cyan", "green", "yellow","orange", "red"] });
1055 o.addRepresentation("licorice",{sele:"sidechainAttached and CYS and not hydrogen"});
1059 // remove default hoverPick mouse action
1060 stage.mouseControls.remove("hoverPick")
1062 stage.signals.hovered.add(function (pickingProxy) {
1063 if (pickingProxy && (pickingProxy.atom || pickingProxy.bond)) {
1064 var atom = pickingProxy.atom || pickingProxy.closestBondAtom
1065 var mp = pickingProxy.mouse.position
1066 var bf= atom.bfactor.toFixed(2)
1067 tooltip.innerText = atom.qualifiedName()+" Fluctuation="+ bf
1068 tooltip.style.bottom = window.innerHeight - mp.y + 3 + "px"
1069 tooltip.style.left = mp.x + 3 + "px"
1070 tooltip.style.display = "block"
1072 tooltip.style.display = "none"
1078 {% if task.type == "md" and task.md_mdpdb %}
1080 window.addEventListener("resize",
1082 stage.handleResize();
1085 var stage = new NGL.Stage("viewport_traj");
1086 stage.setParameters( { backgroundColor: "white" } );
1087 stage.setParameters( { cameraType: "orthographic" } );
1090 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/file_MD000.pdb", {
1091 asTrajectory: true } ) .then( function( o ){
1092 o.setName ("unres_md");
1093 o.addRepresentation( "backbone",{ color:
1094 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
1096 o.addRepresentation( "licorice",{ color:
1097 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
1099 o.setPosition([0, 0, 100]);
1104 var toggleSidechains = document.getElementById( "toggleSidechains1" );
1105 toggleSidechains.addEventListener( "click", function(){
1106 stage.getRepresentationsByName( "licorice" ).list.forEach( function( repre ){
1107 repre.setVisibility( !repre.visible );
1112 function numberWithCommas(x) {
1113 return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
1115 var toggleRunMDs = document.getElementById( "toggleRunMDs" );
1116 var isRunning = false;
1117 toggleRunMDs.addEventListener( "click", function(){
1118 var trajComp = stage.getComponentsByName("unres_md").list[0].trajList[0];
1119 var player = new NGL.TrajectoryPlayer(trajComp.trajectory, {timeout: 10, mode: "once"});
1124 trajComp.signals.frameChanged.add(function(){
1125 var fnum=trajComp.trajectory.currentFrame+1;
1126 clipRange.value = fnum;
1127 clipRange_val.innerHTML = numberWithCommas(parseInt(clipRange.value*1));
1136 var clipRange = document.getElementById( "clipRange" );
1137 var clipRange_val = document.getElementById( "clipRange_val" );
1138 clipRange.oninput = function( e ){
1139 var trajComp = stage.getComponentsByName("unres_md").list[0].trajList[0];
1140 trajComp.setFrame(e.target.value-1)
1141 clipRange_val.innerHTML = numberWithCommas(parseInt(e.target.value*1));