1 {% extends "base.html" %}
3 {% load i18n lazysignup_tags %}
6 {% if user|is_lazy_user %}
7 <ul class="list-group">
9 <li class="list-group-item new-task-item task-item">
11 <div class="col-md-2 form-group">
12 <form action="/refresh_done/" method="post">
14 <input type="submit" class="btn" value="Refresh" name="refreshbtn">
18 <div class="col-md-10 form-group">
19 <h5 style="text-align:right;float:right;">
20 {% if not task.done %}
21 {% if task.running > 0 %}
22 {% if task.running == 100 %}
28 waiting in the queue to start
37 <h3> Task <b>{{ task.name }}</b></h3>
38 Created {{ task.created_date }}
39 <ul class="list-group">
41 <li class="list-group-item task-item">
42 <div class="col-md-4"> done ?</div>
43 <div class="col-md-8">
45 <span class="fa fa-check-square-o"></span>
47 {% if task.running > 0 %}
48 <span class="fa fa-spinner
52 <span class="fa fa-square-o"></span>
59 <fieldset class="majorpoints">
60 <legend class="majorpointslegend"
61 style="background-color:#d3d3d3;cursor: pointer;">Show input parameters</legend>
62 <div class="hiders" style="display:none" >
64 <li class="list-group-item task-item">
65 <div class="col-md-6"> type </div>
66 <div class="col-md-6">{{ task.type }}</div>
69 <li class="list-group-item task-item">
70 <div class="col-md-6"> force field </div>
71 <div class="col-md-6">{{ task.unres_ff }}</div>
74 <li class="list-group-item task-item">
75 <div class="col-md-4"> sequence </div>
76 <div class="col-md-8 monospace">{{ task.md_seq}}</div>
79 <li class="list-group-item task-item">
80 <div class="col-md-4"> secondary structure
82 <div class="col-md-8 monospace">{{ task.md_2d}}</div>
86 <li class="list-group-item task-item">
87 <div class="col-md-6"> SSBOND </div>
88 <div class="col-md-6">{{ task.ssbond}}</div>
92 {% if task.type == "min" %}
95 <li class="list-group-item task-item">
96 <div class="col-md-6"> algorithm</div>
97 <div class="col-md-6">{{ task.min_choice }}</div>
99 <li class="list-group-item task-item">
100 <div class="col-md-6"> overlap</div>
101 <div class="col-md-6">{{ task.min_overlap }}</div>
103 <li class="list-group-item task-item">
104 <div class="col-md-6"> searchsc</div>
105 <div class="col-md-6">{{ task.min_searchsc }}</div>
107 <li class="list-group-item task-item">
108 <div class="col-md-6"> maxmin</div>
109 <div class="col-md-6">{{ task.min_maxmin }}</div>
111 <li class="list-group-item task-item">
112 <div class="col-md-6"> maxfun</div>
113 <div class="col-md-6">{{ task.min_maxfun }}</div>
115 <li class="list-group-item task-item">
116 <div class="col-md-6"> pdbout</div>
117 <div class="col-md-6">{{ task.min_pdbout }}</div>
119 <li class="list-group-item task-item">
120 <div class="col-md-6"> input pdb </div>
121 <div class="col-md-6">{{ task.myfile1 }}</div>
123 <li class="list-group-item task-item">
124 <div class="col-md-6"> pdb code</div>
125 <div class="col-md-6">{{ task.pdbcode }}</div>
127 <li class="list-group-item task-item">
128 <div class="col-md-6"> unres_pdb</div>
129 <div class="col-md-6">{{ task.min_unres_pdb }}</div>
133 {% if task.type == "md" %}
134 <li class="list-group-item task-item">
135 <div class="col-md-6"> starting </div>
136 <div class="col-md-6">{{ task.md_start}}</div>
139 <li class="list-group-item task-item">
140 <div class="col-md-6"> input pdb </div>
141 <div class="col-md-6">{{ task.myfile1 }}</div>
143 <li class="list-group-item task-item">
144 <div class="col-md-6"> pdb code</div>
145 <div class="col-md-6">{{ task.pdbcode }}</div>
147 <li class="list-group-item task-item">
148 <div class="col-md-6"> seed </div>
149 <div class="col-md-6">{{ task.md_seed}}</div>
151 <li class="list-group-item task-item">
152 <div class="col-md-6"> pdbref </div>
153 <div class="col-md-6">{{ task.md_pdbref}}</div>
155 <li class="list-group-item task-item">
156 <div class="col-md-6"> respa </div>
157 <div class="col-md-6">{{ task.md_respa}}</div>
159 <li class="list-group-item task-item">
160 <div class="col-md-6"> temperature </div>
161 <div class="col-md-6">{{ task.md_temp}}</div>
163 <li class="list-group-item task-item">
164 <div class="col-md-6"> nstep </div>
165 <div class="col-md-6">{{ task.md_nstep}}</div>
167 <li class="list-group-item task-item">
168 <div class="col-md-6"> ntwe </div>
169 <div class="col-md-6">{{ task.md_ntwe}}</div>
171 <li class="list-group-item task-item">
172 <div class="col-md-6"> ntwx </div>
173 <div class="col-md-6">{{ task.md_ntwx}}</div>
175 <li class="list-group-item task-item">
176 <div class="col-md-6"> dt </div>
177 <div class="col-md-6">{{ task.md_dt}}</div>
179 <li class="list-group-item task-item">
180 <div class="col-md-6"> thermostat </div>
181 <div class="col-md-6">{{ task.md_lang}}</div>
184 {% if task.md_lang == "berendsen" %}
186 <li class="list-group-item task-item">
187 <div class="col-md-6"> tau </div>
188 <div class="col-md-6">{{ task.md_tau}}</div>
193 <li class="list-group-item task-item">
194 <div class="col-md-6"> scal_fric </div>
195 <div class="col-md-6">{{ task.md_scal_fric}}</div>
200 <li class="list-group-item task-item">
201 <div class="col-md-6"> mdpdb </div>
202 <div class="col-md-6">{{ task.md_mdpdb}}</div>
204 <li class="list-group-item task-item">
205 <div class="col-md-6"> RESPA </div>
206 <div class="col-md-6">{{ task.md_respa}}</div>
212 {% if task.type == "remd" or task.type == "dock" %}
214 <li class="list-group-item task-item">
215 <div class="col-md-6"> nrep </div>
216 <div class="col-md-6">{{ task.remd_nrep}}</div>
218 <li class="list-group-item task-item">
219 <div class="col-md-6"> starting </div>
220 <div class="col-md-6">{{ task.md_start}}</div>
223 <li class="list-group-item task-item">
224 <div class="col-md-6"> input pdb </div>
225 <div class="col-md-6">{{ task.myfile1 }}</div>
227 <li class="list-group-item task-item">
228 <div class="col-md-6"> pdb code</div>
229 <div class="col-md-6">{{ task.pdbcode }}</div>
231 {% if task.type == "dock" %}
232 <li class="list-group-item task-item">
233 <div class="col-md-6"> input pdb2 </div>
234 <div class="col-md-6">{{ task.myfile2 }}</div>
236 <li class="list-group-item task-item">
237 <div class="col-md-6"> pdb code2</div>
238 <div class="col-md-6">{{ task.pdbcode2 }}</div>
242 <li class="list-group-item task-item">
243 <div class="col-md-6"> seed </div>
244 <div class="col-md-6">{{ task.md_seed}}</div>
246 <li class="list-group-item task-item">
247 <div class="col-md-6"> pdbref </div>
248 <div class="col-md-6">{{ task.md_pdbref}}</div>
250 {% if task.md_start == "pdbstart" %}
251 <li class="list-group-item task-item">
252 <div class="col-md-6"> preminim maxfun </div>
253 <div class="col-md-6">{{ task.min_maxfun }}</div>
256 <li class="list-group-item task-item">
257 <div class="col-md-6"> respa </div>
258 <div class="col-md-6">{{ task.md_respa}}</div>
260 <li class="list-group-item task-item">
261 <div class="col-md-6"> nstep </div>
262 <div class="col-md-6">{{ task.md_nstep}}</div>
264 <li class="list-group-item task-item">
265 <div class="col-md-6"> ntwe </div>
266 <div class="col-md-6">{{ task.md_ntwe}}</div>
268 <li class="list-group-item task-item">
269 <div class="col-md-6"> nstex </div>
270 <div class="col-md-6">{{ task.remd_nstex}}</div>
272 <li class="list-group-item task-item">
273 <div class="col-md-6"> ntwx </div>
274 <div class="col-md-6">{{ task.md_ntwx}}</div>
276 <li class="list-group-item task-item">
277 <div class="col-md-6"> dt </div>
278 <div class="col-md-6">{{ task.md_dt}}</div>
280 <li class="list-group-item task-item">
281 <div class="col-md-6"> thermostat </div>
282 <div class="col-md-6">{{ task.md_lang}}</div>
285 {% if task.md_lang == "berendsen" %}
287 <li class="list-group-item task-item">
288 <div class="col-md-6"> tau </div>
289 <div class="col-md-6">{{ task.md_tau}}</div>
294 <li class="list-group-item task-item">
295 <div class="col-md-6"> scal_fric </div>
296 <div class="col-md-6">{{ task.md_scal_fric}}</div>
301 <li class="list-group-item task-item">
302 <div class="col-md-6"> RESPA </div>
303 <div class="col-md-6">{{ task.md_respa}}</div>
306 <li class="list-group-item task-item">
307 <div class="col-md-6"> temperatures </div>
308 <div class="col-md-6">{{ task.remd_multi_t}}</div>
310 <li class="list-group-item task-item">
311 <div class="col-md-6"> multiplex </div>
312 <div class="col-md-6">{{ task.remd_multi_m}}</div>
314 <li class="list-group-item task-item">
315 <div class="col-md-6"> temperature for clustering</div>
316 <div class="col-md-6">{{ task.remd_cluter_temp}}</div>
318 {% if task.saxs_data != "" %}
319 <li class="list-group-item task-item">
320 <div class="col-md-6"> wsaxs </div>
321 <div class="col-md-6">{{ task.wsaxs }}</div>
323 <li class="list-group-item task-item">
324 <div class="col-md-6"> scal_rad (saxs) </div>
325 <div class="col-md-6">{{ task.scal_rad }}</div>
327 <li class="list-group-item task-item">
328 <div class="col-md-6"> saxs distribution </div>
329 <div class="col-md-6"><pre> {{ task.saxs_data }}</pre></div>
335 <li class="list-group-item task-item">
336 <div class="col-md-6"> Box X Y Z</div>
337 <div class="col-md-2">{{ task.boxx}}</div>
338 <div class="col-md-2">{{ task.boxy}}</div>
339 <div class="col-md-2">{{ task.boxz}}</div>
346 <li class="list-group-item task-item">
347 <div class="col-md-4"> Directory </div>
348 <div class="col-md-8">
349 <a href="/myfiles/list/{{task.jobdirname}}/">
350 {{ task.jobdirname }}
358 {% if task.type == "min" %}
360 <li class="list-group-item task-item">
361 <div class="col-md-2"> Etot </div>
362 <div class="col-md-10">{{ task.etot }}</div>
365 <li class="list-group-item task-item">
366 <div class="col-md-2"> UNRES model </div>
367 <div class="col-md-10">
369 href="/myfiles/download-file/{{task.jobdirname}}/unres.pse">
371 src="/myfiles/download-file/{{task.jobdirname}}/unres.png"
372 width="500"></a> </div>
375 <li class="list-group-item task-item">
376 <div class="col-md-2"> UNRES model NGL viewer</div>
377 <div class="col-md-10" id="viewport_unres"
378 style="width:500px;height:500px;">
384 <li class="list-group-item task-item">
385 <div class="col-md-2"> Structure overlap </div>
386 <div class="col-md-10"> <img
387 src="/myfiles/download-file/{{task.jobdirname}}/unres_overlap.png"
391 <li class="list-group-item task-item">
392 <div class="col-md-2"> Structure overlap NGL viewer</div>
393 <div class="col-md-10" id="viewport_min"
394 style="width:500px;height:500px;">
397 <li class="list-group-item task-item">
398 <div class="col-md-12">
399 <button id="toggleAllatom">Input structure on/off</button>
400 <button id="toggleSidechains2">Side-chains on/off</button>
405 <li class="list-group-item task-item">
406 <div class="col-md-2"> Results </div>
407 <div class="col-md-10">{{ task.results_text|linebreaks }}</div>
410 {% if task.type == "md" %}
412 <li class="list-group-item task-item">
413 <div class="col-md-2"> Temperature histogram </div>
414 <div class="col-md-10"> <img
415 src="/myfiles/download-file/{{task.jobdirname}}/temp_hist.png"
419 <li class="list-group-item task-item">
420 <div class="col-md-2"> Potential energy </div>
421 <div class="col-md-10"> <img
422 src="/myfiles/download-file/{{task.jobdirname}}/md_ene.png"
426 <li class="list-group-item task-item">
427 <div class="col-md-2"> Movie </div>
428 <div class="col-md-10">
430 <video width="500" height="400" preload controls>
432 src="/myfiles/download-file/{{task.jobdirname}}/md.ogv"
433 type="video/ogg; codecs=theora"> </source>
439 {% if task.md_mdpdb %}
440 <li class="list-group-item task-item">
441 <div class="col-md-2"> Trajectory NGL viewer</div>
442 <div class="col-md-10" id="viewport_traj"
443 style="width:500px;height:500px;">
446 <li class="list-group-item task-item">
447 <div class="col-md-6">
448 <input id="clipRange" type="range" value=0 min=0 max= {% widthratio task.md_nstep task.md_ntwx 1 %} step=1 ></input><span id="clipRange_val">0</span> frame
450 <div class="col-md-6">
451 <button id="toggleRunMDs">run/pause MD</button>
452 <button id="toggleSidechains1">side-chains on/off</button>
458 <li class="list-group-item task-item">
459 <div class="col-md-2"> Radius of gyration based
460 on C<sup>α</sup> coordinates </div>
461 <div class="col-md-10"> <img
462 src="/myfiles/download-file/{{task.jobdirname}}/md_gyr.png"
468 {% if task.md_pdbref %}
469 <li class="list-group-item task-item">
470 <div class="col-md-2"> RMSD </div>
471 <div class="col-md-10"> <img
472 src="/myfiles/download-file/{{task.jobdirname}}/md_rms.png"
476 <li class="list-group-item task-item">
477 <div class="col-md-2"> fraction of native
478 side-chain concacts </div>
479 <div class="col-md-10"> <img
480 src="/myfiles/download-file/{{task.jobdirname}}/md_fracn.png"
486 {% if task.md_start == "pdbstart" %}
487 <li class="list-group-item task-item">
488 <div class="col-md-2"> fluctuations </div>
489 <div class="col-md-10"> <img
490 src="/myfiles/download-file/{{task.jobdirname}}/fluct_plot.png"
494 <li class="list-group-item task-item">
495 <div class="col-md-2"> fluctuations putty on
496 starting structure</div>
497 <div class="col-md-10">
499 href="/myfiles/download-file/{{task.jobdirname}}/fluct.pse">
501 src="/myfiles/download-file/{{task.jobdirname}}/fluct.png"
502 width="500"></a> </div>
505 <li class="list-group-item task-item">
506 <div class="col-md-2"> fluctuations putty on
507 starting structure NGL viewer</div>
508 <div class="col-md-10" id="viewport_putty"
509 style="width:500px;height:500px;">
520 {% if task.type == "remd" or task.type == "dock" %}
522 <li class="list-group-item task-item">
523 <div class="col-md-2"> Energy histogram </div>
524 <div class="col-md-10"> <img
525 src="/myfiles/download-file/{{task.jobdirname}}/remd_ene_hist.png"
529 <li class="list-group-item task-item">
530 <div class="col-md-2"> Energy vs. temperature </div>
531 <div class="col-md-10"> <img
532 src="/myfiles/download-file/{{task.jobdirname}}/remd_Tene.png"
536 <li class="list-group-item task-item">
537 <div class="col-md-2"> Cv vs. temperature </div>
538 <div class="col-md-10"> <img
539 src="/myfiles/download-file/{{task.jobdirname}}/remd_cv.png"
543 {% if task.md_pdbref %}
545 <li class="list-group-item task-item">
546 <div class="col-md-2"> Average RMSD vs. temperature </div>
547 <div class="col-md-10"> <img
548 src="/myfiles/download-file/{{task.jobdirname}}/remd_rmsd.png"
552 <li class="list-group-item task-item">
553 <div class="col-md-2"> potential energy vs. RMSD</div>
554 <div class="col-md-10"> <img
555 src="/myfiles/download-file/{{task.jobdirname}}/remd_ene_rms.png"
559 <li class="list-group-item task-item">
560 <div class="col-md-2"> RMSD vs. step*replica
561 colored by bath temperature</div>
562 <div class="col-md-10"> <img
563 src="/myfiles/download-file/{{task.jobdirname}}/remd_step_rms.png"
570 <li class="list-group-item task-item">
571 <div class="col-md-2"> exchanges (walk in T) </div>
572 <div class="col-md-10"> <img
573 src="/myfiles/download-file/{{task.jobdirname}}/remd_ex.png"
577 {% if task.saxs_data != "" %}
578 <li class="list-group-item task-item">
579 <div class="col-md-2"> P(r) of input SAXS data and
580 calculated for 5 models and the input pdb</div>
581 <div class="col-md-10"> <img
582 src="/myfiles/download-file/{{task.jobdirname}}/saxs.png"
587 <li class="list-group-item task-item">
588 <div class="col-md-4">
589 <button onclick="plusDivs(-1)">❮</button>
591 <div class="col-md-6">
594 <div class="col-md-2">
595 <button onclick="plusDivs(1)">❯</button>
600 <!-- <li class="list-group-item task-item">
601 <div class="col-md-2"> model1 after conversion
603 {{ task.remd_model1|linebreaks }}
605 <div class="col-md-10">
607 href="/myfiles/download-file/{{task.jobdirname}}/MODEL1.pdb">
609 src="/myfiles/download-file/{{task.jobdirname}}/model1.png" width="500">
612 <li class="list-group-item task-item">
613 <div class="col-md-2"> model1
614 {% if not task.damino %}
615 after conversion to allatom
617 {{ task.remd_model1|linebreaks }}
619 <div class="col-md-10" id="viewport_M1"
620 style="width:500px;height:500px;">
623 <li class="list-group-item task-item">
624 <div class="col-md-12">
625 {% if task.md_pdbref %}
626 <button id="toggleRefM1">Reference structure on/off</button>
628 <button id="toggleSidechainsM1">Side-chains on/off</button>
629 <a class="btn btn-default"
630 href="/myfiles/download-file/{{task.jobdirname}}/MODEL1.pdb">Download</a>
636 <!-- <li class="list-group-item task-item">
637 <div class="col-md-2"> model2 after conversion
639 {{ task.remd_model2|linebreaks }}
641 <div class="col-md-10">
643 href="/myfiles/download-file/{{task.jobdirname}}/MODEL2.pdb">
645 src="/myfiles/download-file/{{task.jobdirname}}/model2.png" width="500">
648 <li class="list-group-item task-item">
649 <div class="col-md-2"> model2
650 {% if not task.damino %}
651 after conversion to allatom
653 {{ task.remd_model2|linebreaks }}
655 <div class="col-md-10" id="viewport_M2"
656 style="width:500px;height:500px;">
659 <li class="list-group-item task-item">
660 <div class="col-md-12">
661 {% if task.md_pdbref %}
662 <button id="toggleRefM2">Reference structure on/off</button>
664 <button id="toggleSidechainsM2">Side-chains on/off</button>
665 <a class="btn btn-default"
666 href="/myfiles/download-file/{{task.jobdirname}}/MODEL2.pdb">Download</a>
673 <!-- <li class="list-group-item task-item">
674 <div class="col-md-2"> model3 after conversion
676 {{ task.remd_model3|linebreaks }}
678 <div class="col-md-10">
680 href="/myfiles/download-file/{{task.jobdirname}}/MODEL3.pdb">
682 src="/myfiles/download-file/{{task.jobdirname}}/model3.png" width="500">
685 <li class="list-group-item task-item">
686 <div class="col-md-2"> model3
687 {% if not task.damino %}
688 after conversion to allatom
690 {{ task.remd_model3|linebreaks }}
692 <div class="col-md-10" id="viewport_M3"
693 style="width:500px;height:500px;">
696 <li class="list-group-item task-item">
697 <div class="col-md-12">
698 {% if task.md_pdbref %}
699 <button id="toggleRefM3">Reference structure on/off</button>
701 <button id="toggleSidechainsM3">Side-chains on/off</button>
702 <a class="btn btn-default"
703 href="/myfiles/download-file/{{task.jobdirname}}/MODEL3.pdb">Download</a>
709 <!-- <li class="list-group-item task-item">
710 <div class="col-md-2"> model4 after conversion
712 {{ task.remd_model4|linebreaks }}
714 <div class="col-md-10">
716 href="/myfiles/download-file/{{task.jobdirname}}/MODEL4.pdb">
718 src="/myfiles/download-file/{{task.jobdirname}}/model4.png" width="500">
721 <li class="list-group-item task-item">
722 <div class="col-md-2"> model4
723 {% if not task.damino %}
724 after conversion to allatom
726 {{ task.remd_model4|linebreaks }}
728 <div class="col-md-10" id="viewport_M4"
729 style="width:500px;height:500px;">
732 <li class="list-group-item task-item">
733 <div class="col-md-12">
734 {% if task.md_pdbref %}
735 <button id="toggleRefM4">Reference structure on/off</button>
737 <button id="toggleSidechainsM4">Side-chains on/off</button>
738 <a class="btn btn-default"
739 href="/myfiles/download-file/{{task.jobdirname}}/MODEL4.pdb">Download</a>
745 <!-- <li class="list-group-item task-item">
746 <div class="col-md-2"> model5 after conversion
748 {{ task.remd_model5|linebreaks }}
750 <div class="col-md-10">
752 href="/myfiles/download-file/{{task.jobdirname}}/MODEL5.pdb">
754 src="/myfiles/download-file/{{task.jobdirname}}/model5.png" width="500">
757 <li class="list-group-item task-item">
758 <div class="col-md-2"> model5
759 {% if not task.damino %}
760 after conversion to allatom
762 {{ task.remd_model5|linebreaks }}
764 <div class="col-md-10" id="viewport_M5"
765 style="width:500px;height:500px;">
768 <li class="list-group-item task-item">
769 <div class="col-md-12">
770 {% if task.md_pdbref %}
771 <button id="toggleRefM5">Reference structure on/off</button>
773 <button id="toggleSidechainsM5">Side-chains on/off</button>
774 <a class="btn btn-default"
775 href="/myfiles/download-file/{{task.jobdirname}}/MODEL5.pdb">Download</a>
786 <script src="/static/jquery.min.js"></script>
787 <script src="https://unpkg.com/ngl"></script>
790 $('.majorpointslegend').click(function(){
791 $(this.parentNode).find('.hiders').toggle();
792 if($(this.parentNode).find('.majorpointslegend').text()=='Show input parameters'){
793 $(this.parentNode).find('.majorpointslegend').text('Hide input parameters');
795 $(this.parentNode).find('.majorpointslegend').text('Show input parameters');
800 {% if task.type == "remd" or task.type == "dock" %}
802 function display_model(numstr){
804 {% if task.md_pdbref %}
805 var stage = new NGL.Stage("viewport_M"+numstr);
806 stage.setParameters( { backgroundColor: "white",fogFar: 60, fogNear: 45 } );
808 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/plik1.pdb" ,{defaultRepresentation: false}) .then( function( o ){
809 o.addRepresentation( "cartoon",{ name:"ref", color:"grey"
811 o.addRepresentation( "line", {name:"refsc",visible: false,
812 sele:"not hydrogen and sidechainAttached"
817 "/myfiles/download-file/{{task.jobdirname}}/MODEL"+numstr+".pdb",{defaultRepresentation: false}) .then( function( o ){
819 o.addRepresentation( "licorice",{ name: "unres", color:
820 "residueindex",colorScale:["blue","cyan", "green",
821 "yellow","orange", "red"], sele:".CA"
823 o.addRepresentation( "licorice",{ name: "unressc", visible: false, color:
824 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
827 o.addRepresentation( "cartoon",{ name: "unres", color:
828 "residueindex",colorScale:["blue","cyan", "green",
829 "yellow","orange", "red"]
831 o.addRepresentation( "line",{ name: "unressc", visible: false, color:
832 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
833 , sele:"not hydrogen and sidechainAttached" })
837 ]).then(function (ol1) {
838 ol1[ 1 ].superpose(ol1[ 0 ], false, ".CA")
843 var toggleAll = document.getElementById( "toggleRefM"+numstr );
844 toggleAll.addEventListener( "click", function(){
846 stage.getRepresentationsByName(
847 "ref" ).list.forEach( function( repre ){
848 repre.setVisibility( !repre.visible );
851 stage.getRepresentationsByName(
852 "refsc" ).list.forEach( function( repre ){
853 repre.setVisibility( !repre.visible );
858 var toggleSidechains =document.getElementById("toggleSidechainsM"+numstr );
859 toggleSidechains.addEventListener( "click", function(){
862 stage.getRepresentationsByName(
863 "refsc" ).list.forEach( function( repre ){
864 repre.setVisibility( !repre.visible );
867 stage.getRepresentationsByName("unressc").list.forEach( function( repre ){
868 repre.setVisibility( !repre.visible );
873 var stage = new NGL.Stage("viewport_M"+numstr);
874 stage.setParameters( { backgroundColor: "white",fogFar: 60, fogNear: 45 } );
875 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/MODEL"+numstr+".pdb",{defaultRepresentation: false}) .then( function( o ){
877 o.addRepresentation( "licorice",{ name: "unres", color:
878 "residueindex",colorScale:["blue","cyan", "green",
879 "yellow","orange", "red"],sele:".CA"
881 o.addRepresentation( "licorice",{ name: "unressc", visible: false, color:
882 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
885 o.addRepresentation( "cartoon",{ name: "unres", color:
886 "residueindex",colorScale:["blue","cyan", "green",
887 "yellow","orange", "red"]
889 o.addRepresentation( "line",{ name: "unressc", visible: false, color:
890 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
891 , sele:"not hydrogen and sidechainAttached" });
895 var toggleSidechains =document.getElementById("toggleSidechainsM"+numstr );
896 toggleSidechains.addEventListener( "click", function(){
897 stage.getRepresentationsByName("unressc").list.forEach( function( repre ){
898 repre.setVisibility( !repre.visible );
907 window.addEventListener("resize",
909 stage.handleResize();
917 var y = document.getElementsByClassName("model");
920 for (ii = 0; ii < y.length; ii++) {
924 showDivs(slideIndex);
926 function plusDivs(n) {
927 showDivs(slideIndex += n);
930 function showDivs(n) {
932 var x = document.getElementsByClassName("model");
933 if (n > x.length) {slideIndex = 1}
934 if (n < 1) {slideIndex = x.length}
935 for (i = 0; i < x.length; i++) {
936 x[i].style.display = "none";
938 x[slideIndex-1].style.display = "block";
940 if (lista[slideIndex-1] == 0 && slideIndex == 2) {
944 if (lista[slideIndex-1] == 0 && slideIndex == 3) {
948 if (lista[slideIndex-1] == 0 && slideIndex == 4) {
952 if (lista[slideIndex-1] == 0 && slideIndex == 5) {
957 if (lista[slideIndex-1] == 0) {lista[slideIndex-1]=1}
962 {% if not task.done %}
966 data:{csrfmiddlewaretoken: '{{ csrf_token }}'},
967 url: "/refresh_done/",
969 success: function(data) {
970 document.location.reload();
972 complete: function() {
973 // Schedule the next request when the current one's complete
974 setTimeout(worker, 30000);
978 $(document).ready(function() {
979 // run the first time; all subsequent calls will take care of themselves
980 setTimeout(worker, 30000);
986 {% if task.type == "min" %}
988 window.addEventListener("resize",
990 stage.handleResize();
993 var stage_unres = new NGL.Stage("viewport_unres");
994 stage_unres.setParameters( { backgroundColor: "white" } );
996 [color_Red, color_Green, color_Blue, ellipsoid_width, ellipsoid_length ]
998 var resdb = { 'CYS': [1.000, 1.000, 0.000, 1.33741, 2.96868],
999 'MET': [0.000, 1.000, 0.000, 1.36694, 3.08863],
1000 'PHE': [0.000, 0.392, 0.000, 1.48323, 3.04238],
1001 'ILE': [0.000, 1.000, 0.000, 1.44098, 3.17389],
1002 'LEU': [0.000, 1.000, 0.000, 1.51054, 2.52078],
1003 'VAL': [0.000, 1.000, 0.000, 1.42072, 2.68924],
1004 'TRP': [0.000, 0.392, 0.000, 1.23867, 3.47403],
1005 'TYR': [0.596, 0.984, 0.596, 1.23060, 3.35434],
1006 'ALA': [0.000, 1.000, 0.000, 1.23266, 1.72686],
1007 'GLY': [1.000, 1.000, 1.000, 1.24626, 1.11383],
1008 'THR': [1.000, 0.000, 1.000, 1.28674, 2.59210],
1009 'SER': [1.000, 0.000, 1.000, 1.22820, 1.68800],
1010 'GLN': [1.000, 0.000, 1.000, 1.24239, 2.22201],
1011 'ASN': [1.000, 0.000, 1.000, 1.24447, 2.24946],
1012 'GLU': [1.000, 0.000, 0.000, 1.25448, 2.05551],
1013 'ASP': [1.000, 0.000, 0.000, 1.25417, 1.77556],
1014 'HIS': [1.000, 0.000, 1.000, 1.21103, 3.02627],
1015 'ARG': [0.000, 0.000, 1.000, 1.13573, 3.25143],
1016 'LYS': [0.000, 0.000, 1.000, 1.22604, 4.50054],
1017 'PRO': [0.000, 1.000, 1.000, 1.35131, 2.20525]
1019 stage_unres.loadFile("/myfiles/download-file/{{task.jobdirname}}/file_GB000.pdb", {defaultRepresentation: false}).then
1021 var shape = new NGL.Shape("shape")
1023 o.addRepresentation("licorice");
1024 o.structure.eachAtom(function(atom){
1025 if (atom.atomname == "CA" && atom.chainname == chain) {
1026 px=CAx+(atom.x-CAx)/2;
1027 py=CAy+(atom.y-CAy)/2;
1028 pz=CAz+(atom.z-CAz)/2;
1029 shape.addSphere([px,py,pz],[0.643, 0.933, 0.960],0.6,"p");
1031 if (atom.atomname == "CA") {
1032 chain= atom.chainname
1037 if (atom.atomname == "CB") {
1041 norm=Math.sqrt(mx*mx+my*my+mz*mz);
1043 var longaxis=resdb[res][4]
1044 var shortaxis=resdb[res][3]
1045 mx = mx /norm*longaxis;
1046 my = my /norm*longaxis;
1047 mz = mz /norm*longaxis;
1049 shape.addEllipsoid([ atom.x, atom.y, atom.z ],
1050 [ resdb[res][0], resdb[res][1], resdb[res][2]],
1051 shortaxis, [ mx, my, mz ], [ 0, shortaxis, 0 ],resn);
1054 var shapeComp = stage_unres.addComponentFromObject(shape)
1055 shapeComp.addRepresentation("buffer")
1061 var stage = new NGL.Stage("viewport_min");
1062 stage.setParameters( { backgroundColor: "white" } );
1064 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/file_GB000.pdb" ,{defaultRepresentation: false}) .then( function( o ){
1065 o.addRepresentation( "backbone",{ color:
1066 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
1068 o.addRepresentation( "licorice",{ color:
1069 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange","red"]
1074 stage.loadFile("/myfiles/download-file/{{task.jobdirname}}/plik.pdb",{defaultRepresentation: false}) .then( function( o ){
1075 o.addRepresentation( "backbone",{ name: "allatom", color:
1076 "residueindex",colorScale:["blue","cyan", "green","yellow","orange", "red"]
1078 o.addRepresentation( "line",{ name: "allatomsc", color:
1079 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
1080 ,sele:"not hydrogen and sidechainAttached"
1084 ]).then(function (ol) {
1085 ol[ 0 ].superpose(ol[ 1 ], false, ".CA")
1091 var toggleAll = document.getElementById( "toggleAllatom" );
1092 toggleAll.addEventListener( "click", function(){
1094 stage.getRepresentationsByName(
1095 "allatom" ).list.forEach( function( repre ){
1096 repre.setVisibility( !repre.visible );
1099 stage.getRepresentationsByName(
1100 "allatomsc" ).list.forEach( function( repre ){
1101 repre.setVisibility( !repre.visible );
1105 var toggleSidechains = document.getElementById("toggleSidechains2" );
1106 toggleSidechains.addEventListener( "click", function(){
1109 stage.getRepresentationsByName(
1110 "allatomsc" ).list.forEach( function( repre ){
1111 repre.setVisibility( !repre.visible );
1115 stage.getRepresentationsByName("licorice").list.forEach( function( repre ){
1116 repre.setVisibility( !repre.visible );
1123 {% if task.type == "md" and task.md_start == "pdbstart" %}
1125 window.addEventListener("resize",
1127 stage.handleResize();
1130 var stage = new NGL.Stage("viewport_putty");
1131 stage.setParameters( { backgroundColor: "white" } );
1133 var tooltip = document.createElement("div")
1134 Object.assign(tooltip.style, {
1138 pointerEvents: "none",
1139 backgroundColor: "rgba( 0, 0, 0, 0.6 )",
1142 fontFamily: "sans-serif"
1144 document.body.appendChild(tooltip)
1146 stage.loadFile("/myfiles/download-file/{{task.jobdirname}}/plik_bf.pdb", {defaultRepresentation: false}).then
1148 o.addRepresentation("tube",{ color: "bfactor" , scale: 0.25,
1151 colorScale:["blue","cyan", "green", "yellow","orange", "red"] });
1152 o.addRepresentation("licorice",{sele:"sidechainAttached and CYS and not hydrogen"});
1156 // remove default hoverPick mouse action
1157 stage.mouseControls.remove("hoverPick")
1159 stage.signals.hovered.add(function (pickingProxy) {
1160 if (pickingProxy && (pickingProxy.atom || pickingProxy.bond)) {
1161 var atom = pickingProxy.atom || pickingProxy.closestBondAtom
1162 var mp = pickingProxy.mouse.position
1163 var bf= atom.bfactor.toFixed(2)
1164 tooltip.innerText = atom.qualifiedName()+" Fluctuation="+ bf
1165 tooltip.style.bottom = window.innerHeight - mp.y + 3 + "px"
1166 tooltip.style.left = mp.x + 3 + "px"
1167 tooltip.style.display = "block"
1169 tooltip.style.display = "none"
1175 {% if task.type == "md" and task.md_mdpdb %}
1177 window.addEventListener("resize",
1179 stage.handleResize();
1182 var stage = new NGL.Stage("viewport_traj");
1183 stage.setParameters( { backgroundColor: "white" } );
1184 stage.setParameters( { cameraType: "orthographic" } );
1187 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/file_MD000.pdb", {
1188 asTrajectory: true } ) .then( function( o ){
1189 o.setName ("unres_md");
1190 o.addRepresentation( "backbone",{ color:
1191 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
1193 o.addRepresentation( "licorice",{ color:
1194 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
1200 var toggleSidechains = document.getElementById( "toggleSidechains1" );
1201 toggleSidechains.addEventListener( "click", function(){
1202 stage.getRepresentationsByName( "licorice" ).list.forEach( function( repre ){
1203 repre.setVisibility( !repre.visible );
1208 function numberWithCommas(x) {
1209 return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
1211 var toggleRunMDs = document.getElementById( "toggleRunMDs" );
1212 var isRunning = false;
1213 toggleRunMDs.addEventListener( "click", function(){
1214 var trajComp = stage.getComponentsByName("unres_md").list[0].trajList[0];
1215 var player = new NGL.TrajectoryPlayer(trajComp.trajectory, {timeout: 10, mode: "once"});
1220 trajComp.signals.frameChanged.add(function(){
1221 var fnum=trajComp.trajectory.currentFrame;
1222 clipRange.value = fnum;
1223 clipRange_val.innerHTML = numberWithCommas(parseInt(clipRange.value*1));
1232 var clipRange = document.getElementById( "clipRange" );
1233 var clipRange_val = document.getElementById( "clipRange_val" );
1234 clipRange.oninput = function( e ){
1235 var trajComp = stage.getComponentsByName("unres_md").list[0].trajList[0];
1236 trajComp.setFrame(e.target.value)
1237 clipRange_val.innerHTML = numberWithCommas(parseInt(e.target.value*1));