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>
46 {% if task.type == "md" or task.type == "remd" %}
47 <form action="restart/"
49 style="text-align;float:right;">
52 class="btn btn-default"
59 {% if task.running > 0 %}
60 <span class="fa fa-spinner
63 {% if task.running == 100 %}
67 <span class="fa fa-square-o"></span>
74 <fieldset class="majorpoints">
75 <legend class="majorpointslegend"
76 style="background-color:#d3d3d3;cursor: pointer;">Show input parameters</legend>
77 <div class="hiders" style="display:none" >
79 <li class="list-group-item task-item">
80 <div class="col-md-6"> type </div>
81 <div class="col-md-6">{{ task.type }}</div>
84 <li class="list-group-item task-item">
85 <div class="col-md-6"> force field </div>
86 <div class="col-md-6">{{ task.unres_ff }}</div>
89 <li class="list-group-item task-item">
90 <div class="col-md-4"> sequence </div>
91 <div class="col-md-8 monospace">{{ task.md_seq}}</div>
94 <li class="list-group-item task-item">
95 <div class="col-md-4"> secondary structure
97 <div class="col-md-8 monospace">{{ task.md_2d}}</div>
101 <li class="list-group-item task-item">
102 <div class="col-md-6"> SSBOND </div>
103 <div class="col-md-6">{{ task.ssbond}}</div>
107 {% if task.type == "min" %}
110 <li class="list-group-item task-item">
111 <div class="col-md-6"> algorithm</div>
112 <div class="col-md-6">{{ task.min_choice }}</div>
114 <li class="list-group-item task-item">
115 <div class="col-md-6"> overlap</div>
116 <div class="col-md-6">{{ task.min_overlap }}</div>
118 <li class="list-group-item task-item">
119 <div class="col-md-6"> searchsc</div>
120 <div class="col-md-6">{{ task.min_searchsc }}</div>
122 <li class="list-group-item task-item">
123 <div class="col-md-6"> maxmin</div>
124 <div class="col-md-6">{{ task.min_maxmin }}</div>
126 <li class="list-group-item task-item">
127 <div class="col-md-6"> maxfun</div>
128 <div class="col-md-6">{{ task.min_maxfun }}</div>
130 <li class="list-group-item task-item">
131 <div class="col-md-6"> pdbout</div>
132 <div class="col-md-6">{{ task.min_pdbout }}</div>
134 <li class="list-group-item task-item">
135 <div class="col-md-6"> input pdb </div>
136 <div class="col-md-6">{{ task.myfile1 }}</div>
138 <li class="list-group-item task-item">
139 <div class="col-md-6"> pdb code</div>
140 <div class="col-md-6">{{ task.pdbcode }}</div>
142 <li class="list-group-item task-item">
143 <div class="col-md-6"> unres_pdb</div>
144 <div class="col-md-6">{{ task.min_unres_pdb }}</div>
148 {% if task.type == "md" %}
149 <li class="list-group-item task-item">
150 <div class="col-md-6"> starting </div>
151 <div class="col-md-6">{{ task.md_start}}</div>
154 <li class="list-group-item task-item">
155 <div class="col-md-6"> input pdb </div>
156 <div class="col-md-6">{{ task.myfile1 }}</div>
158 <li class="list-group-item task-item">
159 <div class="col-md-6"> pdb code</div>
160 <div class="col-md-6">{{ task.pdbcode }}</div>
162 <li class="list-group-item task-item">
163 <div class="col-md-6"> seed </div>
164 <div class="col-md-6">{{ task.md_seed}}</div>
166 <li class="list-group-item task-item">
167 <div class="col-md-6"> pdbref </div>
168 <div class="col-md-6">{{ task.md_pdbref}}</div>
170 <li class="list-group-item task-item">
171 <div class="col-md-6"> respa </div>
172 <div class="col-md-6">{{ task.md_respa}}</div>
174 <li class="list-group-item task-item">
175 <div class="col-md-6"> temperature </div>
176 <div class="col-md-6">{{ task.md_temp}}</div>
178 <li class="list-group-item task-item">
179 <div class="col-md-6"> nstep </div>
180 <div class="col-md-6">{{ task.md_nstep}}</div>
182 <li class="list-group-item task-item">
183 <div class="col-md-6"> total steps (with restarts) </div>
184 <div class="col-md-6">{{ task.md_total_steps}}</div>
186 <li class="list-group-item task-item">
187 <div class="col-md-6"> ntwe </div>
188 <div class="col-md-6">{{ task.md_ntwe}}</div>
190 <li class="list-group-item task-item">
191 <div class="col-md-6"> ntwx </div>
192 <div class="col-md-6">{{ task.md_ntwx}}</div>
194 <li class="list-group-item task-item">
195 <div class="col-md-6"> dt </div>
196 <div class="col-md-6">{{ task.md_dt}}</div>
198 <li class="list-group-item task-item">
199 <div class="col-md-6"> thermostat </div>
200 <div class="col-md-6">{{ task.md_lang}}</div>
203 {% if task.md_lang == "berendsen" %}
205 <li class="list-group-item task-item">
206 <div class="col-md-6"> tau </div>
207 <div class="col-md-6">{{ task.md_tau}}</div>
212 <li class="list-group-item task-item">
213 <div class="col-md-6"> scal_fric </div>
214 <div class="col-md-6">{{ task.md_scal_fric}}</div>
219 <li class="list-group-item task-item">
220 <div class="col-md-6"> mdpdb </div>
221 <div class="col-md-6">{{ task.md_mdpdb}}</div>
223 <li class="list-group-item task-item">
224 <div class="col-md-6"> RESPA </div>
225 <div class="col-md-6">{{ task.md_respa}}</div>
231 {% if task.type == "remd" or task.type == "dock" %}
233 <li class="list-group-item task-item">
234 <div class="col-md-6"> nrep </div>
235 <div class="col-md-6">{{ task.remd_nrep}}</div>
237 <li class="list-group-item task-item">
238 <div class="col-md-6"> starting </div>
239 <div class="col-md-6">{{ task.md_start}}</div>
242 <li class="list-group-item task-item">
243 <div class="col-md-6"> input pdb </div>
244 <div class="col-md-6">{{ task.myfile1 }}</div>
246 <li class="list-group-item task-item">
247 <div class="col-md-6"> pdb code</div>
248 <div class="col-md-6">{{ task.pdbcode }}</div>
250 {% if task.type == "dock" %}
251 <li class="list-group-item task-item">
252 <div class="col-md-6"> input pdb2 </div>
253 <div class="col-md-6">{{ task.myfile2 }}</div>
255 <li class="list-group-item task-item">
256 <div class="col-md-6"> pdb code2</div>
257 <div class="col-md-6">{{ task.pdbcode2 }}</div>
259 <li class="list-group-item task-item">
260 <div class="col-md-6"> dock_peptide</div>
261 <div class="col-md-6">{{ task.dock_peptide }}</div>
265 <li class="list-group-item task-item">
266 <div class="col-md-6"> seed </div>
267 <div class="col-md-6">{{ task.md_seed}}</div>
269 <li class="list-group-item task-item">
270 <div class="col-md-6"> pdbref </div>
271 <div class="col-md-6">{{ task.md_pdbref}}</div>
273 {% if task.md_start == "pdbstart" %}
274 <li class="list-group-item task-item">
275 <div class="col-md-6"> preminim maxfun </div>
276 <div class="col-md-6">{{ task.min_maxfun }}</div>
279 <li class="list-group-item task-item">
280 <div class="col-md-6"> respa </div>
281 <div class="col-md-6">{{ task.md_respa}}</div>
283 <li class="list-group-item task-item">
284 <div class="col-md-6"> nstep </div>
285 <div class="col-md-6">{{ task.md_nstep}}</div>
287 <li class="list-group-item task-item">
288 <div class="col-md-6"> total steps (with restarts) </div>
289 <div class="col-md-6">{{ task.md_total_steps}}</div>
291 <li class="list-group-item task-item">
292 <div class="col-md-6"> ntwe </div>
293 <div class="col-md-6">{{ task.md_ntwe}}</div>
295 <li class="list-group-item task-item">
296 <div class="col-md-6"> nstex </div>
297 <div class="col-md-6">{{ task.remd_nstex}}</div>
299 <li class="list-group-item task-item">
300 <div class="col-md-6"> ntwx </div>
301 <div class="col-md-6">{{ task.md_ntwx}}</div>
303 <li class="list-group-item task-item">
304 <div class="col-md-6"> dt </div>
305 <div class="col-md-6">{{ task.md_dt}}</div>
307 <li class="list-group-item task-item">
308 <div class="col-md-6"> thermostat </div>
309 <div class="col-md-6">{{ task.md_lang}}</div>
312 {% if task.md_lang == "berendsen" %}
314 <li class="list-group-item task-item">
315 <div class="col-md-6"> tau </div>
316 <div class="col-md-6">{{ task.md_tau}}</div>
321 <li class="list-group-item task-item">
322 <div class="col-md-6"> scal_fric </div>
323 <div class="col-md-6">{{ task.md_scal_fric}}</div>
328 <li class="list-group-item task-item">
329 <div class="col-md-6"> RESPA </div>
330 <div class="col-md-6">{{ task.md_respa}}</div>
333 <li class="list-group-item task-item">
334 <div class="col-md-6"> temperatures </div>
335 <div class="col-md-6">{{ task.remd_multi_t}}</div>
337 <li class="list-group-item task-item">
338 <div class="col-md-6"> multiplex </div>
339 <div class="col-md-6">{{ task.remd_multi_m}}</div>
341 <li class="list-group-item task-item">
342 <div class="col-md-6"> temperature for clustering</div>
343 <div class="col-md-6">{{ task.remd_cluter_temp}}</div>
345 {% if task.saxs_data != "" %}
346 <li class="list-group-item task-item">
347 <div class="col-md-6"> wsaxs </div>
348 <div class="col-md-6">{{ task.wsaxs }}</div>
350 <li class="list-group-item task-item">
351 <div class="col-md-6"> scal_rad (saxs) </div>
352 <div class="col-md-6">{{ task.scal_rad }}</div>
354 <li class="list-group-item task-item">
355 <div class="col-md-6"> saxs distribution </div>
356 <div class="col-md-6"><pre> {{ task.saxs_data }}</pre></div>
362 <li class="list-group-item task-item">
363 <div class="col-md-6"> Box X Y Z</div>
364 <div class="col-md-2">{{ task.boxx}}</div>
365 <div class="col-md-2">{{ task.boxy}}</div>
366 <div class="col-md-2">{{ task.boxz}}</div>
373 <li class="list-group-item task-item">
374 <div class="col-md-4"> Directory </div>
375 <div class="col-md-8">
376 <a href="/myfiles/list/{{task.jobdirname}}/">
377 {{ task.jobdirname }}
381 <a class="btn btn-default"
382 href="/{{task.id}}/all.zip">
391 {% if task.type == "min" %}
393 <li class="list-group-item task-item">
394 <div class="col-md-2"> Etot </div>
395 <div class="col-md-10">{{ task.etot }}</div>
398 <li class="list-group-item task-item">
399 <div class="col-md-2"> UNRES model </div>
400 <div class="col-md-10">
402 href="/myfiles/download-file/{{task.jobdirname}}/unres.pse">
404 src="/myfiles/download-file/{{task.jobdirname}}/unres.png"
405 width="500"></a> </div>
408 <li class="list-group-item task-item">
409 <div class="col-md-2"> UNRES model NGL viewer</div>
410 <div class="col-md-10" id="viewport_unres"
411 style="width:500px;height:500px;">
417 <li class="list-group-item task-item">
418 <div class="col-md-2"> Structure overlap </div>
419 <div class="col-md-10"> <img
420 src="/myfiles/download-file/{{task.jobdirname}}/unres_overlap.png"
424 <li class="list-group-item task-item">
425 <div class="col-md-2"> Structure overlap NGL viewer</div>
426 <div class="col-md-10" id="viewport_min"
427 style="width:500px;height:500px;">
430 <li class="list-group-item task-item">
431 <div class="col-md-12">
432 <button id="toggleAllatom">Input structure on/off</button>
433 <button id="toggleSidechains2">Side-chains on/off</button>
438 <li class="list-group-item task-item">
439 <div class="col-md-2"> Results </div>
440 <div class="col-md-10">{{ task.results_text|linebreaks }}</div>
443 {% if task.type == "md" %}
445 <li class="list-group-item task-item">
446 <div class="col-md-2"> Temperature histogram </div>
447 <div class="col-md-10"> <img
448 src="/myfiles/download-file/{{task.jobdirname}}/temp_hist.png"
452 <li class="list-group-item task-item">
453 <div class="col-md-2"> Potential energy </div>
454 <div class="col-md-10"> <img
455 src="/myfiles/download-file/{{task.jobdirname}}/md_ene.png"
459 <li class="list-group-item task-item">
460 <div class="col-md-2"> Movie </div>
461 <div class="col-md-10">
463 <video width="500" height="400"
464 preload="auto" controls="controls">
466 src="/myfiles/download-file/{{task.jobdirname}}/md.ogv"
467 type="video/ogg; codecs=theora"> </source>
473 {% if task.md_mdpdb %}
474 <li class="list-group-item task-item">
475 <div class="col-md-2"> Trajectory NGL viewer</div>
476 <div class="col-md-10" id="viewport_traj"
477 style="width:500px;height:500px;">
480 <li class="list-group-item task-item">
481 <div class="col-md-6">
482 <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
484 <div class="col-md-6">
485 <button id="toggleRunMDs">run/pause MD</button>
486 <button id="toggleSidechains1">side-chains on/off</button>
492 <li class="list-group-item task-item">
493 <div class="col-md-2"> Radius of gyration based
494 on C<sup>α</sup> coordinates </div>
495 <div class="col-md-10"> <img
496 src="/myfiles/download-file/{{task.jobdirname}}/md_gyr.png"
502 {% if task.md_pdbref %}
503 <li class="list-group-item task-item">
504 <div class="col-md-2"> C<sup>α</sup> RMSD </div>
505 <div class="col-md-10"> <img
506 src="/myfiles/download-file/{{task.jobdirname}}/md_rms.png"
510 <li class="list-group-item task-item">
511 <div class="col-md-2"> fraction of native
512 side-chain concacts </div>
513 <div class="col-md-10"> <img
514 src="/myfiles/download-file/{{task.jobdirname}}/md_fracn.png"
520 {% if task.md_start == "pdbstart" %}
521 <li class="list-group-item task-item">
522 <div class="col-md-2"> fluctuations </div>
523 <div class="col-md-10"> <img
524 src="/myfiles/download-file/{{task.jobdirname}}/fluct_plot.png"
528 <li class="list-group-item task-item">
529 <div class="col-md-2"> fluctuations putty on
530 starting structure</div>
531 <div class="col-md-10">
533 href="/myfiles/download-file/{{task.jobdirname}}/fluct.pse">
535 src="/myfiles/download-file/{{task.jobdirname}}/fluct.png"
536 width="500"></a> </div>
539 <li class="list-group-item task-item">
540 <div class="col-md-2"> fluctuations putty on
541 starting structure NGL viewer</div>
542 <div class="col-md-10" id="viewport_putty"
543 style="width:500px;height:500px;">
554 {% if task.type == "remd" or task.type == "dock" %}
556 <li class="list-group-item task-item">
557 <div class="col-md-2"> Energy histogram </div>
558 <div class="col-md-10"> <img
559 src="/myfiles/download-file/{{task.jobdirname}}/remd_ene_hist.png"
563 <li class="list-group-item task-item">
564 <div class="col-md-2"> Energy vs. temperature </div>
565 <div class="col-md-10"> <img
566 src="/myfiles/download-file/{{task.jobdirname}}/remd_Tene.png"
570 <li class="list-group-item task-item">
571 <div class="col-md-2"> Cv vs. temperature </div>
572 <div class="col-md-10"> <img
573 src="/myfiles/download-file/{{task.jobdirname}}/remd_cv.png"
577 {% if task.md_pdbref %}
579 <li class="list-group-item task-item">
580 <div class="col-md-2"> Average C<sup>α</sup> RMSD vs. temperature </div>
581 <div class="col-md-10"> <img
582 src="/myfiles/download-file/{{task.jobdirname}}/remd_rmsd.png"
586 <li class="list-group-item task-item">
587 <div class="col-md-2"> potential energy vs.
588 C<sup>α</sup> RMSD</div>
589 <div class="col-md-10"> <img
590 src="/myfiles/download-file/{{task.jobdirname}}/remd_ene_rms.png"
594 <li class="list-group-item task-item">
595 <div class="col-md-2"> C<sup>α</sup> RMSD vs. step*replica
596 colored by bath temperature</div>
597 <div class="col-md-10"> <img
598 src="/myfiles/download-file/{{task.jobdirname}}/remd_step_rms.png"
605 <li class="list-group-item task-item">
606 <div class="col-md-2"> exchanges (walk in T) </div>
607 <div class="col-md-10"> <img
608 src="/myfiles/download-file/{{task.jobdirname}}/remd_ex.png"
612 {% if task.saxs_data != "" %}
613 <li class="list-group-item task-item">
614 <div class="col-md-2"> P(r) of input SAXS data and
615 calculated for 5 models and the input pdb</div>
616 <div class="col-md-10"> <img
617 src="/myfiles/download-file/{{task.jobdirname}}/saxs.png"
622 <li class="list-group-item task-item">
623 <div class="col-md-4">
624 <button onclick="plusDivs(-1)">❮</button>
626 <div class="col-md-6">
629 <div class="col-md-2">
630 <button onclick="plusDivs(1)">❯</button>
635 <!-- <li class="list-group-item task-item">
636 <div class="col-md-2"> model1 after conversion
638 {{ task.remd_model1|linebreaks }}
640 <div class="col-md-10">
642 href="/myfiles/download-file/{{task.jobdirname}}/MODEL1.pdb">
644 src="/myfiles/download-file/{{task.jobdirname}}/model1.png" width="500">
647 <li class="list-group-item task-item">
648 <div class="col-md-2"> model1
649 {% if not task.damino %}
650 after conversion to allatom
652 {{ task.remd_model1|linebreaks }}
654 <div class="col-md-10" id="viewport_M1"
655 style="width:500px;height:500px;">
658 <li class="list-group-item task-item">
659 <div class="col-md-12">
660 {% if task.md_pdbref %}
661 <button id="toggleRefM1">Reference structure on/off</button>
663 <button id="toggleSidechainsM1">Side-chains on/off</button>
664 <a class="btn btn-default"
665 href="/myfiles/download-file/{{task.jobdirname}}/MODEL1.pdb">Download</a>
671 <!-- <li class="list-group-item task-item">
672 <div class="col-md-2"> model2 after conversion
674 {{ task.remd_model2|linebreaks }}
676 <div class="col-md-10">
678 href="/myfiles/download-file/{{task.jobdirname}}/MODEL2.pdb">
680 src="/myfiles/download-file/{{task.jobdirname}}/model2.png" width="500">
683 <li class="list-group-item task-item">
684 <div class="col-md-2"> model2
685 {% if not task.damino %}
686 after conversion to allatom
688 {{ task.remd_model2|linebreaks }}
690 <div class="col-md-10" id="viewport_M2"
691 style="width:500px;height:500px;">
694 <li class="list-group-item task-item">
695 <div class="col-md-12">
696 {% if task.md_pdbref %}
697 <button id="toggleRefM2">Reference structure on/off</button>
699 <button id="toggleSidechainsM2">Side-chains on/off</button>
700 <a class="btn btn-default"
701 href="/myfiles/download-file/{{task.jobdirname}}/MODEL2.pdb">Download</a>
708 <!-- <li class="list-group-item task-item">
709 <div class="col-md-2"> model3 after conversion
711 {{ task.remd_model3|linebreaks }}
713 <div class="col-md-10">
715 href="/myfiles/download-file/{{task.jobdirname}}/MODEL3.pdb">
717 src="/myfiles/download-file/{{task.jobdirname}}/model3.png" width="500">
720 <li class="list-group-item task-item">
721 <div class="col-md-2"> model3
722 {% if not task.damino %}
723 after conversion to allatom
725 {{ task.remd_model3|linebreaks }}
727 <div class="col-md-10" id="viewport_M3"
728 style="width:500px;height:500px;">
731 <li class="list-group-item task-item">
732 <div class="col-md-12">
733 {% if task.md_pdbref %}
734 <button id="toggleRefM3">Reference structure on/off</button>
736 <button id="toggleSidechainsM3">Side-chains on/off</button>
737 <a class="btn btn-default"
738 href="/myfiles/download-file/{{task.jobdirname}}/MODEL3.pdb">Download</a>
744 <!-- <li class="list-group-item task-item">
745 <div class="col-md-2"> model4 after conversion
747 {{ task.remd_model4|linebreaks }}
749 <div class="col-md-10">
751 href="/myfiles/download-file/{{task.jobdirname}}/MODEL4.pdb">
753 src="/myfiles/download-file/{{task.jobdirname}}/model4.png" width="500">
756 <li class="list-group-item task-item">
757 <div class="col-md-2"> model4
758 {% if not task.damino %}
759 after conversion to allatom
761 {{ task.remd_model4|linebreaks }}
763 <div class="col-md-10" id="viewport_M4"
764 style="width:500px;height:500px;">
767 <li class="list-group-item task-item">
768 <div class="col-md-12">
769 {% if task.md_pdbref %}
770 <button id="toggleRefM4">Reference structure on/off</button>
772 <button id="toggleSidechainsM4">Side-chains on/off</button>
773 <a class="btn btn-default"
774 href="/myfiles/download-file/{{task.jobdirname}}/MODEL4.pdb">Download</a>
780 <!-- <li class="list-group-item task-item">
781 <div class="col-md-2"> model5 after conversion
783 {{ task.remd_model5|linebreaks }}
785 <div class="col-md-10">
787 href="/myfiles/download-file/{{task.jobdirname}}/MODEL5.pdb">
789 src="/myfiles/download-file/{{task.jobdirname}}/model5.png" width="500">
792 <li class="list-group-item task-item">
793 <div class="col-md-2"> model5
794 {% if not task.damino %}
795 after conversion to allatom
797 {{ task.remd_model5|linebreaks }}
799 <div class="col-md-10" id="viewport_M5"
800 style="width:500px;height:500px;">
803 <li class="list-group-item task-item">
804 <div class="col-md-12">
805 {% if task.md_pdbref %}
806 <button id="toggleRefM5">Reference structure on/off</button>
808 <button id="toggleSidechainsM5">Side-chains on/off</button>
809 <a class="btn btn-default"
810 href="/myfiles/download-file/{{task.jobdirname}}/MODEL5.pdb">Download</a>
821 <script src="/static/jquery.min.js"></script>
822 <script src="https://unpkg.com/ngl"></script>
825 $('.majorpointslegend').click(function(){
826 $(this.parentNode).find('.hiders').toggle();
827 if($(this.parentNode).find('.majorpointslegend').text()=='Show input parameters'){
828 $(this.parentNode).find('.majorpointslegend').text('Hide input parameters');
830 $(this.parentNode).find('.majorpointslegend').text('Show input parameters');
835 {% if task.type == "remd" or task.type == "dock" %}
837 function display_model(numstr){
839 {% if task.md_pdbref %}
840 var stage = new NGL.Stage("viewport_M"+numstr);
841 stage.setParameters( { backgroundColor: "white",fogFar: 60, fogNear: 45 } );
843 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/plik1.pdb" ,{defaultRepresentation: false}) .then( function( o ){
844 o.addRepresentation( "cartoon",{ name:"ref", color:"grey"
846 o.addRepresentation( "line", {name:"refsc",visible: false,
847 sele:"not hydrogen and sidechainAttached"
852 "/myfiles/download-file/{{task.jobdirname}}/MODEL"+numstr+".pdb",{defaultRepresentation: false}) .then( function( o ){
854 o.addRepresentation( "licorice",{ name: "unres", color:
855 "residueindex",colorScale:["blue","cyan", "green",
856 "yellow","orange", "red"], sele:".CA"
858 o.addRepresentation( "licorice",{ name: "unressc", visible: false, color:
859 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
862 o.addRepresentation( "cartoon",{ name: "unres", color:
863 "residueindex",colorScale:["blue","cyan", "green",
864 "yellow","orange", "red"]
866 o.addRepresentation( "line",{ name: "unressc", visible: false, color:
867 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
868 , sele:"not hydrogen and sidechainAttached" })
872 ]).then(function (ol1) {
873 ol1[ 1 ].superpose(ol1[ 0 ], false, ".CA")
878 var toggleAll = document.getElementById( "toggleRefM"+numstr );
879 toggleAll.addEventListener( "click", function(){
881 stage.getRepresentationsByName(
882 "ref" ).list.forEach( function( repre ){
883 repre.setVisibility( !repre.visible );
886 stage.getRepresentationsByName(
887 "refsc" ).list.forEach( function( repre ){
888 repre.setVisibility( !repre.visible );
893 var toggleSidechains =document.getElementById("toggleSidechainsM"+numstr );
894 toggleSidechains.addEventListener( "click", function(){
897 stage.getRepresentationsByName(
898 "refsc" ).list.forEach( function( repre ){
899 repre.setVisibility( !repre.visible );
902 stage.getRepresentationsByName("unressc").list.forEach( function( repre ){
903 repre.setVisibility( !repre.visible );
908 var stage = new NGL.Stage("viewport_M"+numstr);
909 stage.setParameters( { backgroundColor: "white",fogFar: 60, fogNear: 45 } );
910 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/MODEL"+numstr+".pdb",{defaultRepresentation: false}) .then( function( o ){
912 o.addRepresentation( "licorice",{ name: "unres", color:
913 "residueindex",colorScale:["blue","cyan", "green",
914 "yellow","orange", "red"],sele:".CA"
916 o.addRepresentation( "licorice",{ name: "unressc", visible: false, color:
917 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
920 o.addRepresentation( "cartoon",{ name: "unres", color:
921 "residueindex",colorScale:["blue","cyan", "green",
922 "yellow","orange", "red"]
924 o.addRepresentation( "line",{ name: "unressc", visible: false, color:
925 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
926 , sele:"not hydrogen and sidechainAttached" });
930 var toggleSidechains =document.getElementById("toggleSidechainsM"+numstr );
931 toggleSidechains.addEventListener( "click", function(){
932 stage.getRepresentationsByName("unressc").list.forEach( function( repre ){
933 repre.setVisibility( !repre.visible );
942 window.addEventListener("resize",
944 stage.handleResize();
952 var y = document.getElementsByClassName("model");
955 for (ii = 0; ii < y.length; ii++) {
959 showDivs(slideIndex);
961 function plusDivs(n) {
962 showDivs(slideIndex += n);
965 function showDivs(n) {
967 var x = document.getElementsByClassName("model");
968 if (n > x.length) {slideIndex = 1}
969 if (n < 1) {slideIndex = x.length}
970 for (i = 0; i < x.length; i++) {
971 x[i].style.display = "none";
973 x[slideIndex-1].style.display = "block";
975 if (lista[slideIndex-1] == 0 && slideIndex == 2) {
979 if (lista[slideIndex-1] == 0 && slideIndex == 3) {
983 if (lista[slideIndex-1] == 0 && slideIndex == 4) {
987 if (lista[slideIndex-1] == 0 && slideIndex == 5) {
992 if (lista[slideIndex-1] == 0) {lista[slideIndex-1]=1}
997 {% if not task.done %}
1001 data:{csrfmiddlewaretoken: '{{ csrf_token }}'},
1002 url: "/refresh_done/",
1004 success: function(data) {
1005 document.location.reload();
1007 complete: function() {
1008 // Schedule the next request when the current one's complete
1009 setTimeout(worker, 30000);
1013 $(document).ready(function() {
1014 // run the first time; all subsequent calls will take care of themselves
1015 setTimeout(worker, 30000);
1020 {% if task.type == "min" %}
1022 window.addEventListener("resize",
1024 stage.handleResize();
1027 var stage_unres = new NGL.Stage("viewport_unres");
1028 stage_unres.setParameters( { backgroundColor: "white" } );
1030 [color_Red, color_Green, color_Blue, ellipsoid_width, ellipsoid_length ]
1032 var resdb = { 'CYS': [1.000, 1.000, 0.000, 1.33741, 2.96868],
1033 'MET': [0.000, 1.000, 0.000, 1.36694, 3.08863],
1034 'PHE': [0.000, 0.392, 0.000, 1.48323, 3.04238],
1035 'ILE': [0.000, 1.000, 0.000, 1.44098, 3.17389],
1036 'LEU': [0.000, 1.000, 0.000, 1.51054, 2.52078],
1037 'VAL': [0.000, 1.000, 0.000, 1.42072, 2.68924],
1038 'TRP': [0.000, 0.392, 0.000, 1.23867, 3.47403],
1039 'TYR': [0.596, 0.984, 0.596, 1.23060, 3.35434],
1040 'ALA': [0.000, 1.000, 0.000, 1.23266, 1.72686],
1041 'GLY': [1.000, 1.000, 1.000, 1.24626, 1.11383],
1042 'THR': [1.000, 0.000, 1.000, 1.28674, 2.59210],
1043 'SER': [1.000, 0.000, 1.000, 1.22820, 1.68800],
1044 'GLN': [1.000, 0.000, 1.000, 1.24239, 2.22201],
1045 'ASN': [1.000, 0.000, 1.000, 1.24447, 2.24946],
1046 'GLU': [1.000, 0.000, 0.000, 1.25448, 2.05551],
1047 'ASP': [1.000, 0.000, 0.000, 1.25417, 1.77556],
1048 'HIS': [1.000, 0.000, 1.000, 1.21103, 3.02627],
1049 'ARG': [0.000, 0.000, 1.000, 1.13573, 3.25143],
1050 'LYS': [0.000, 0.000, 1.000, 1.22604, 4.50054],
1051 'PRO': [0.000, 1.000, 1.000, 1.35131, 2.20525]
1053 stage_unres.loadFile("/myfiles/download-file/{{task.jobdirname}}/file_GB000.pdb", {defaultRepresentation: false}).then
1055 var shape = new NGL.Shape("shape")
1057 o.addRepresentation("licorice");
1058 o.structure.eachAtom(function(atom){
1059 if (atom.atomname == "CA" && atom.chainname == chain) {
1060 px=CAx+(atom.x-CAx)/2;
1061 py=CAy+(atom.y-CAy)/2;
1062 pz=CAz+(atom.z-CAz)/2;
1063 shape.addSphere([px,py,pz],[0.643, 0.933, 0.960],0.6,"p");
1065 if (atom.atomname == "CA") {
1066 chain= atom.chainname
1071 if (atom.atomname == "CB") {
1075 norm=Math.sqrt(mx*mx+my*my+mz*mz);
1077 var longaxis=resdb[res][4]
1078 var shortaxis=resdb[res][3]
1079 mx = mx /norm*longaxis;
1080 my = my /norm*longaxis;
1081 mz = mz /norm*longaxis;
1083 shape.addEllipsoid([ atom.x, atom.y, atom.z ],
1084 [ resdb[res][0], resdb[res][1], resdb[res][2]],
1085 shortaxis, [ mx, my, mz ], [ 0, shortaxis, 0 ],resn);
1088 var shapeComp = stage_unres.addComponentFromObject(shape)
1089 shapeComp.addRepresentation("buffer")
1095 var stage = new NGL.Stage("viewport_min");
1096 stage.setParameters( { backgroundColor: "white" } );
1098 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/file_GB000.pdb" ,{defaultRepresentation: false}) .then( function( o ){
1099 o.addRepresentation( "backbone",{ color:
1100 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
1102 o.addRepresentation( "licorice",{ color:
1103 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange","red"]
1108 stage.loadFile("/myfiles/download-file/{{task.jobdirname}}/plik.pdb",{defaultRepresentation: false}) .then( function( o ){
1109 o.addRepresentation( "backbone",{ name: "allatom", color:
1110 "residueindex",colorScale:["blue","cyan", "green","yellow","orange", "red"]
1112 o.addRepresentation( "line",{ name: "allatomsc", color:
1113 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
1114 ,sele:"not hydrogen and sidechainAttached"
1118 ]).then(function (ol) {
1119 ol[ 0 ].superpose(ol[ 1 ], false, ".CA")
1125 var toggleAll = document.getElementById( "toggleAllatom" );
1126 toggleAll.addEventListener( "click", function(){
1128 stage.getRepresentationsByName(
1129 "allatom" ).list.forEach( function( repre ){
1130 repre.setVisibility( !repre.visible );
1133 stage.getRepresentationsByName(
1134 "allatomsc" ).list.forEach( function( repre ){
1135 repre.setVisibility( !repre.visible );
1139 var toggleSidechains = document.getElementById("toggleSidechains2" );
1140 toggleSidechains.addEventListener( "click", function(){
1143 stage.getRepresentationsByName(
1144 "allatomsc" ).list.forEach( function( repre ){
1145 repre.setVisibility( !repre.visible );
1149 stage.getRepresentationsByName("licorice").list.forEach( function( repre ){
1150 repre.setVisibility( !repre.visible );
1157 {% if task.type == "md" and task.md_start == "pdbstart" %}
1159 window.addEventListener("resize",
1161 stage.handleResize();
1164 var stage = new NGL.Stage("viewport_putty");
1165 stage.setParameters( { backgroundColor: "white" } );
1167 var tooltip = document.createElement("div")
1168 Object.assign(tooltip.style, {
1172 pointerEvents: "none",
1173 backgroundColor: "rgba( 0, 0, 0, 0.6 )",
1176 fontFamily: "sans-serif"
1178 document.body.appendChild(tooltip)
1180 stage.loadFile("/myfiles/download-file/{{task.jobdirname}}/plik_bf.pdb", {defaultRepresentation: false}).then
1182 o.addRepresentation("tube",{ color: "bfactor" , scale: 0.25,
1185 colorScale:["blue","cyan", "green", "yellow","orange", "red"] });
1186 o.addRepresentation("licorice",{sele:"sidechainAttached and CYS and not hydrogen"});
1190 // remove default hoverPick mouse action
1191 stage.mouseControls.remove("hoverPick")
1193 stage.signals.hovered.add(function (pickingProxy) {
1194 if (pickingProxy && (pickingProxy.atom || pickingProxy.bond)) {
1195 var atom = pickingProxy.atom || pickingProxy.closestBondAtom
1196 var mp = pickingProxy.mouse.position
1197 var bf= atom.bfactor.toFixed(2)
1198 tooltip.innerText = atom.qualifiedName()+" Fluctuation="+ bf
1199 tooltip.style.bottom = window.innerHeight - mp.y + 3 + "px"
1200 tooltip.style.left = mp.x + 3 + "px"
1201 tooltip.style.display = "block"
1203 tooltip.style.display = "none"
1209 {% if task.type == "md" and task.md_mdpdb %}
1211 window.addEventListener("resize",
1213 stage.handleResize();
1216 var stage = new NGL.Stage("viewport_traj");
1217 stage.setParameters( { backgroundColor: "white" } );
1218 stage.setParameters( { cameraType: "orthographic" } );
1221 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/file_MD000.pdb", {
1222 asTrajectory: true } ) .then( function( o ){
1223 o.setName ("unres_md");
1224 o.addRepresentation( "backbone",{ color:
1225 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
1227 o.addRepresentation( "licorice",{ color:
1228 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
1230 o.setPosition([0, 0, 100]);
1235 var toggleSidechains = document.getElementById( "toggleSidechains1" );
1236 toggleSidechains.addEventListener( "click", function(){
1237 stage.getRepresentationsByName( "licorice" ).list.forEach( function( repre ){
1238 repre.setVisibility( !repre.visible );
1243 function numberWithCommas(x) {
1244 return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
1246 var toggleRunMDs = document.getElementById( "toggleRunMDs" );
1247 var isRunning = false;
1248 toggleRunMDs.addEventListener( "click", function(){
1249 var trajComp = stage.getComponentsByName("unres_md").list[0].trajList[0];
1250 var player = new NGL.TrajectoryPlayer(trajComp.trajectory, {timeout: 10, mode: "once"});
1255 trajComp.signals.frameChanged.add(function(){
1256 var fnum=trajComp.trajectory.currentFrame+1;
1257 clipRange.value = fnum;
1258 clipRange_val.innerHTML = numberWithCommas(parseInt(clipRange.value*1));
1267 var clipRange = document.getElementById( "clipRange" );
1268 var clipRange_val = document.getElementById( "clipRange_val" );
1269 clipRange.oninput = function( e ){
1270 var trajComp = stage.getComponentsByName("unres_md").list[0].trajList[0];
1271 trajComp.setFrame(e.target.value-1)
1272 clipRange_val.innerHTML = numberWithCommas(parseInt(e.target.value*1));