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"> pbsjob </div>
86 <div class="col-md-6">{{ task.pbsjob }}</div>
90 <li class="list-group-item task-item">
91 <div class="col-md-6"> force field </div>
92 <div class="col-md-6">{{ task.unres_ff }}</div>
95 <li class="list-group-item task-item">
96 <div class="col-md-4"> sequence </div>
97 <div class="col-md-8 monospace">{{ task.md_seq}}</div>
100 <li class="list-group-item task-item">
101 <div class="col-md-4"> secondary structure
103 <div class="col-md-8 monospace">{{ task.md_2d}}</div>
107 <li class="list-group-item task-item">
108 <div class="col-md-6"> SSBOND </div>
109 <div class="col-md-6">{{ task.ssbond}}</div>
113 {% if task.type == "min" %}
116 <li class="list-group-item task-item">
117 <div class="col-md-6"> algorithm</div>
118 <div class="col-md-6">{{ task.min_choice }}</div>
120 <li class="list-group-item task-item">
121 <div class="col-md-6"> overlap</div>
122 <div class="col-md-6">{{ task.min_overlap }}</div>
124 <li class="list-group-item task-item">
125 <div class="col-md-6"> searchsc</div>
126 <div class="col-md-6">{{ task.min_searchsc }}</div>
128 <li class="list-group-item task-item">
129 <div class="col-md-6"> maxmin</div>
130 <div class="col-md-6">{{ task.min_maxmin }}</div>
132 <li class="list-group-item task-item">
133 <div class="col-md-6"> maxfun</div>
134 <div class="col-md-6">{{ task.min_maxfun }}</div>
136 <li class="list-group-item task-item">
137 <div class="col-md-6"> pdbout</div>
138 <div class="col-md-6">{{ task.min_pdbout }}</div>
140 <li class="list-group-item task-item">
141 <div class="col-md-6"> input pdb </div>
142 <div class="col-md-6">{{ task.myfile1 }}</div>
144 <li class="list-group-item task-item">
145 <div class="col-md-6"> pdb code</div>
146 <div class="col-md-6">{{ task.pdbcode }}</div>
148 <li class="list-group-item task-item">
149 <div class="col-md-6"> unres_pdb</div>
150 <div class="col-md-6">{{ task.min_unres_pdb }}</div>
154 {% if task.type == "md" %}
155 <li class="list-group-item task-item">
156 <div class="col-md-6"> starting </div>
157 <div class="col-md-6">{{ task.md_start}}</div>
160 <li class="list-group-item task-item">
161 <div class="col-md-6"> input pdb </div>
162 <div class="col-md-6">{{ task.myfile1 }}</div>
164 <li class="list-group-item task-item">
165 <div class="col-md-6"> pdb code</div>
166 <div class="col-md-6">{{ task.pdbcode }}</div>
168 <li class="list-group-item task-item">
169 <div class="col-md-6"> seed </div>
170 <div class="col-md-6">{{ task.md_seed}}</div>
172 <li class="list-group-item task-item">
173 <div class="col-md-6"> pdbref </div>
174 <div class="col-md-6">{{ task.md_pdbref}}</div>
176 <li class="list-group-item task-item">
177 <div class="col-md-6"> respa </div>
178 <div class="col-md-6">{{ task.md_respa}}</div>
180 <li class="list-group-item task-item">
181 <div class="col-md-6"> temperature </div>
182 <div class="col-md-6">{{ task.md_temp}}</div>
184 <li class="list-group-item task-item">
185 <div class="col-md-6"> nstep </div>
186 <div class="col-md-6">{{ task.md_nstep}}</div>
188 <li class="list-group-item task-item">
189 <div class="col-md-6"> total steps (with restarts) </div>
190 <div class="col-md-6">{{ task.md_total_steps}}</div>
192 <li class="list-group-item task-item">
193 <div class="col-md-6"> ntwe </div>
194 <div class="col-md-6">{{ task.md_ntwe}}</div>
196 <li class="list-group-item task-item">
197 <div class="col-md-6"> ntwx </div>
198 <div class="col-md-6">{{ task.md_ntwx}}</div>
200 <li class="list-group-item task-item">
201 <div class="col-md-6"> dt </div>
202 <div class="col-md-6">{{ task.md_dt}}</div>
204 <li class="list-group-item task-item">
205 <div class="col-md-6"> thermostat </div>
206 <div class="col-md-6">{{ task.md_lang}}</div>
209 {% if task.md_lang == "berendsen" %}
211 <li class="list-group-item task-item">
212 <div class="col-md-6"> tau </div>
213 <div class="col-md-6">{{ task.md_tau}}</div>
218 <li class="list-group-item task-item">
219 <div class="col-md-6"> scal_fric </div>
220 <div class="col-md-6">{{ task.md_scal_fric}}</div>
225 <li class="list-group-item task-item">
226 <div class="col-md-6"> mdpdb </div>
227 <div class="col-md-6">{{ task.md_mdpdb}}</div>
229 <li class="list-group-item task-item">
230 <div class="col-md-6"> RESPA </div>
231 <div class="col-md-6">{{ task.md_respa}}</div>
237 {% if task.type == "remd" or task.type == "dock" %}
239 <li class="list-group-item task-item">
240 <div class="col-md-6"> nrep </div>
241 <div class="col-md-6">{{ task.remd_nrep}}</div>
243 <li class="list-group-item task-item">
244 <div class="col-md-6"> starting </div>
245 <div class="col-md-6">{{ task.md_start}}</div>
248 <li class="list-group-item task-item">
249 <div class="col-md-6"> input pdb </div>
250 <div class="col-md-6">{{ task.myfile1 }}</div>
252 <li class="list-group-item task-item">
253 <div class="col-md-6"> pdb code</div>
254 <div class="col-md-6">{{ task.pdbcode }}</div>
256 {% if task.type == "dock" %}
257 <li class="list-group-item task-item">
258 <div class="col-md-6"> input pdb2 </div>
259 <div class="col-md-6">{{ task.myfile2 }}</div>
261 <li class="list-group-item task-item">
262 <div class="col-md-6"> pdb code2</div>
263 <div class="col-md-6">{{ task.pdbcode2 }}</div>
265 <li class="list-group-item task-item">
266 <div class="col-md-6"> dock_peptide</div>
267 <div class="col-md-6">{{ task.dock_peptide }}</div>
271 <li class="list-group-item task-item">
272 <div class="col-md-6"> seed </div>
273 <div class="col-md-6">{{ task.md_seed}}</div>
275 <li class="list-group-item task-item">
276 <div class="col-md-6"> pdbref </div>
277 <div class="col-md-6">{{ task.md_pdbref}}</div>
279 {% if task.md_start == "pdbstart" %}
280 <li class="list-group-item task-item">
281 <div class="col-md-6"> preminim maxfun </div>
282 <div class="col-md-6">{{ task.min_maxfun }}</div>
285 <li class="list-group-item task-item">
286 <div class="col-md-6"> respa </div>
287 <div class="col-md-6">{{ task.md_respa}}</div>
289 <li class="list-group-item task-item">
290 <div class="col-md-6"> nstep </div>
291 <div class="col-md-6">{{ task.md_nstep}}</div>
293 <li class="list-group-item task-item">
294 <div class="col-md-6"> total steps (with restarts) </div>
295 <div class="col-md-6">{{ task.md_total_steps}}</div>
297 <li class="list-group-item task-item">
298 <div class="col-md-6"> ntwe </div>
299 <div class="col-md-6">{{ task.md_ntwe}}</div>
301 <li class="list-group-item task-item">
302 <div class="col-md-6"> nstex </div>
303 <div class="col-md-6">{{ task.remd_nstex}}</div>
305 <li class="list-group-item task-item">
306 <div class="col-md-6"> ntwx </div>
307 <div class="col-md-6">{{ task.md_ntwx}}</div>
309 <li class="list-group-item task-item">
310 <div class="col-md-6"> dt </div>
311 <div class="col-md-6">{{ task.md_dt}}</div>
313 <li class="list-group-item task-item">
314 <div class="col-md-6"> thermostat </div>
315 <div class="col-md-6">{{ task.md_lang}}</div>
318 {% if task.md_lang == "berendsen" %}
320 <li class="list-group-item task-item">
321 <div class="col-md-6"> tau </div>
322 <div class="col-md-6">{{ task.md_tau}}</div>
327 <li class="list-group-item task-item">
328 <div class="col-md-6"> scal_fric </div>
329 <div class="col-md-6">{{ task.md_scal_fric}}</div>
334 <li class="list-group-item task-item">
335 <div class="col-md-6"> RESPA </div>
336 <div class="col-md-6">{{ task.md_respa}}</div>
339 <li class="list-group-item task-item">
340 <div class="col-md-6"> temperatures </div>
341 <div class="col-md-6">{{ task.remd_multi_t}}</div>
343 <li class="list-group-item task-item">
344 <div class="col-md-6"> multiplex </div>
345 <div class="col-md-6">{{ task.remd_multi_m}}</div>
347 <li class="list-group-item task-item">
348 <div class="col-md-6"> temperature for clustering</div>
349 <div class="col-md-6">{{ task.remd_cluter_temp}}</div>
351 {% if task.saxs_data != "" %}
352 <li class="list-group-item task-item">
353 <div class="col-md-6"> wsaxs </div>
354 <div class="col-md-6">{{ task.wsaxs }}</div>
356 <li class="list-group-item task-item">
357 <div class="col-md-6"> scal_rad (saxs) </div>
358 <div class="col-md-6">{{ task.scal_rad }}</div>
360 <li class="list-group-item task-item">
361 <div class="col-md-6"> saxs distribution </div>
362 <div class="col-md-6"><pre> {{ task.saxs_data }}</pre></div>
368 <li class="list-group-item task-item">
369 <div class="col-md-6"> Box X Y Z</div>
370 <div class="col-md-2">{{ task.boxx}}</div>
371 <div class="col-md-2">{{ task.boxy}}</div>
372 <div class="col-md-2">{{ task.boxz}}</div>
379 <li class="list-group-item task-item">
380 <div class="col-md-4"> Directory </div>
381 <div class="col-md-8">
382 <a href="/myfiles/list/{{task.jobdirname}}/">
383 {{ task.jobdirname }}
387 <a class="btn btn-default"
388 href="/{{task.id}}/all.zip">
397 {% if task.type == "min" %}
399 <li class="list-group-item task-item">
400 <div class="col-md-2"> Etot </div>
401 <div class="col-md-10">{{ task.etot }}</div>
404 <li class="list-group-item task-item">
405 <div class="col-md-2"> UNRES model </div>
406 <div class="col-md-10">
408 href="/myfiles/download-file/{{task.jobdirname}}/unres.pse">
410 src="/myfiles/download-file/{{task.jobdirname}}/unres.png"
411 width="500"></a> </div>
414 <li class="list-group-item task-item">
415 <div class="col-md-2"> UNRES model NGL viewer</div>
416 <div class="col-md-10" id="viewport_unres"
417 style="width:500px;height:500px;">
423 <li class="list-group-item task-item">
424 <div class="col-md-2"> Structure overlap </div>
425 <div class="col-md-10"> <img
426 src="/myfiles/download-file/{{task.jobdirname}}/unres_overlap.png"
430 <li class="list-group-item task-item">
431 <div class="col-md-2"> Structure overlap NGL viewer</div>
432 <div class="col-md-10" id="viewport_min"
433 style="width:500px;height:500px;">
436 <li class="list-group-item task-item">
437 <div class="col-md-12">
438 <button id="toggleAllatom">Input structure on/off</button>
439 <button id="toggleSidechains2">Side-chains on/off</button>
444 <li class="list-group-item task-item">
445 <div class="col-md-2"> Results </div>
446 <div class="col-md-10">{{ task.results_text|linebreaks }}</div>
449 {% if task.type == "md" %}
451 <li class="list-group-item task-item">
452 <div class="col-md-2"> Temperature histogram </div>
453 <div class="col-md-10"> <img
454 src="/myfiles/download-file/{{task.jobdirname}}/temp_hist.png"
458 <li class="list-group-item task-item">
459 <div class="col-md-2"> Potential energy </div>
460 <div class="col-md-10"> <img
461 src="/myfiles/download-file/{{task.jobdirname}}/md_ene.png"
465 <li class="list-group-item task-item">
466 <div class="col-md-2"> Movie </div>
467 <div class="col-md-10">
469 <video width="500" height="400"
470 preload="auto" controls="controls">
472 src="/myfiles/download-file/{{task.jobdirname}}/md.ogv"
473 type="video/ogg; codecs=theora"> </source>
479 {% if task.md_mdpdb %}
480 <li class="list-group-item task-item">
481 <div class="col-md-2"> Trajectory NGL viewer</div>
482 <div class="col-md-10" id="viewport_traj"
483 style="width:500px;height:500px;">
486 <li class="list-group-item task-item">
487 <div class="col-md-6">
488 <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
490 <div class="col-md-6">
491 <button id="toggleRunMDs">run/pause MD</button>
492 <button id="toggleSidechains1">side-chains on/off</button>
498 <li class="list-group-item task-item">
499 <div class="col-md-2"> Radius of gyration based
500 on C<sup>α</sup> coordinates </div>
501 <div class="col-md-10"> <img
502 src="/myfiles/download-file/{{task.jobdirname}}/md_gyr.png"
508 {% if task.md_pdbref %}
509 <li class="list-group-item task-item">
510 <div class="col-md-2"> C<sup>α</sup> RMSD </div>
511 <div class="col-md-10"> <img
512 src="/myfiles/download-file/{{task.jobdirname}}/md_rms.png"
516 <li class="list-group-item task-item">
517 <div class="col-md-2"> fraction of native
518 side-chain concacts </div>
519 <div class="col-md-10"> <img
520 src="/myfiles/download-file/{{task.jobdirname}}/md_fracn.png"
526 {% if task.md_start == "pdbstart" %}
527 <li class="list-group-item task-item">
528 <div class="col-md-2"> fluctuations </div>
529 <div class="col-md-10"> <img
530 src="/myfiles/download-file/{{task.jobdirname}}/fluct_plot.png"
534 <li class="list-group-item task-item">
535 <div class="col-md-2"> fluctuations putty on
536 starting structure</div>
537 <div class="col-md-10">
539 href="/myfiles/download-file/{{task.jobdirname}}/fluct.pse">
541 src="/myfiles/download-file/{{task.jobdirname}}/fluct.png"
542 width="500"></a> </div>
545 <li class="list-group-item task-item">
546 <div class="col-md-2"> fluctuations putty on
547 starting structure NGL viewer</div>
548 <div class="col-md-10" id="viewport_putty"
549 style="width:500px;height:500px;">
560 {% if task.type == "remd" or task.type == "dock" %}
562 <li class="list-group-item task-item">
563 <div class="col-md-2"> Energy histogram </div>
564 <div class="col-md-10"> <img
565 src="/myfiles/download-file/{{task.jobdirname}}/remd_ene_hist.png"
569 <li class="list-group-item task-item">
570 <div class="col-md-2"> Energy vs. temperature </div>
571 <div class="col-md-10"> <img
572 src="/myfiles/download-file/{{task.jobdirname}}/remd_Tene.png"
576 <li class="list-group-item task-item">
577 <div class="col-md-2"> Cv vs. temperature </div>
578 <div class="col-md-10"> <img
579 src="/myfiles/download-file/{{task.jobdirname}}/remd_cv.png"
583 {% if task.md_pdbref %}
585 <li class="list-group-item task-item">
586 <div class="col-md-2"> Average C<sup>α</sup> RMSD vs. temperature </div>
587 <div class="col-md-10"> <img
588 src="/myfiles/download-file/{{task.jobdirname}}/remd_rmsd.png"
592 <li class="list-group-item task-item">
593 <div class="col-md-2"> potential energy vs.
594 C<sup>α</sup> RMSD</div>
595 <div class="col-md-10"> <img
596 src="/myfiles/download-file/{{task.jobdirname}}/remd_ene_rms.png"
600 <li class="list-group-item task-item">
601 <div class="col-md-2"> C<sup>α</sup> RMSD vs. step*replica
602 colored by bath temperature</div>
603 <div class="col-md-10"> <img
604 src="/myfiles/download-file/{{task.jobdirname}}/remd_step_rms.png"
611 <li class="list-group-item task-item">
612 <div class="col-md-2"> exchanges (walk in T) </div>
613 <div class="col-md-10"> <img
614 src="/myfiles/download-file/{{task.jobdirname}}/remd_ex.png"
618 {% if task.saxs_data != "" %}
619 <li class="list-group-item task-item">
620 <div class="col-md-2"> P(r) of input SAXS data and
621 calculated for 5 models and the input pdb</div>
622 <div class="col-md-10"> <img
623 src="/myfiles/download-file/{{task.jobdirname}}/saxs.png"
628 <li class="list-group-item task-item">
629 <div class="col-md-4">
630 <button onclick="plusDivs(-1)">❮</button>
632 <div class="col-md-6">
635 <div class="col-md-2">
636 <button onclick="plusDivs(1)">❯</button>
641 <!-- <li class="list-group-item task-item">
642 <div class="col-md-2"> model1 after conversion
644 {{ task.remd_model1|linebreaks }}
646 <div class="col-md-10">
648 href="/myfiles/download-file/{{task.jobdirname}}/MODEL1.pdb">
650 src="/myfiles/download-file/{{task.jobdirname}}/model1.png" width="500">
653 <li class="list-group-item task-item">
654 <div class="col-md-2"> model1
655 {% if not task.damino %}
656 after conversion to allatom
658 {{ task.remd_model1|linebreaks }}
660 <div class="col-md-10" id="viewport_M1"
661 style="width:500px;height:500px;">
664 <li class="list-group-item task-item">
665 <div class="col-md-12">
666 {% if task.md_pdbref %}
667 <button id="toggleRefM1">Reference structure on/off</button>
669 <button id="toggleSidechainsM1">Side-chains on/off</button>
670 <a class="btn btn-default"
671 href="/myfiles/download-file/{{task.jobdirname}}/MODEL1.pdb">Download</a>
677 <!-- <li class="list-group-item task-item">
678 <div class="col-md-2"> model2 after conversion
680 {{ task.remd_model2|linebreaks }}
682 <div class="col-md-10">
684 href="/myfiles/download-file/{{task.jobdirname}}/MODEL2.pdb">
686 src="/myfiles/download-file/{{task.jobdirname}}/model2.png" width="500">
689 <li class="list-group-item task-item">
690 <div class="col-md-2"> model2
691 {% if not task.damino %}
692 after conversion to allatom
694 {{ task.remd_model2|linebreaks }}
696 <div class="col-md-10" id="viewport_M2"
697 style="width:500px;height:500px;">
700 <li class="list-group-item task-item">
701 <div class="col-md-12">
702 {% if task.md_pdbref %}
703 <button id="toggleRefM2">Reference structure on/off</button>
705 <button id="toggleSidechainsM2">Side-chains on/off</button>
706 <a class="btn btn-default"
707 href="/myfiles/download-file/{{task.jobdirname}}/MODEL2.pdb">Download</a>
714 <!-- <li class="list-group-item task-item">
715 <div class="col-md-2"> model3 after conversion
717 {{ task.remd_model3|linebreaks }}
719 <div class="col-md-10">
721 href="/myfiles/download-file/{{task.jobdirname}}/MODEL3.pdb">
723 src="/myfiles/download-file/{{task.jobdirname}}/model3.png" width="500">
726 <li class="list-group-item task-item">
727 <div class="col-md-2"> model3
728 {% if not task.damino %}
729 after conversion to allatom
731 {{ task.remd_model3|linebreaks }}
733 <div class="col-md-10" id="viewport_M3"
734 style="width:500px;height:500px;">
737 <li class="list-group-item task-item">
738 <div class="col-md-12">
739 {% if task.md_pdbref %}
740 <button id="toggleRefM3">Reference structure on/off</button>
742 <button id="toggleSidechainsM3">Side-chains on/off</button>
743 <a class="btn btn-default"
744 href="/myfiles/download-file/{{task.jobdirname}}/MODEL3.pdb">Download</a>
750 <!-- <li class="list-group-item task-item">
751 <div class="col-md-2"> model4 after conversion
753 {{ task.remd_model4|linebreaks }}
755 <div class="col-md-10">
757 href="/myfiles/download-file/{{task.jobdirname}}/MODEL4.pdb">
759 src="/myfiles/download-file/{{task.jobdirname}}/model4.png" width="500">
762 <li class="list-group-item task-item">
763 <div class="col-md-2"> model4
764 {% if not task.damino %}
765 after conversion to allatom
767 {{ task.remd_model4|linebreaks }}
769 <div class="col-md-10" id="viewport_M4"
770 style="width:500px;height:500px;">
773 <li class="list-group-item task-item">
774 <div class="col-md-12">
775 {% if task.md_pdbref %}
776 <button id="toggleRefM4">Reference structure on/off</button>
778 <button id="toggleSidechainsM4">Side-chains on/off</button>
779 <a class="btn btn-default"
780 href="/myfiles/download-file/{{task.jobdirname}}/MODEL4.pdb">Download</a>
786 <!-- <li class="list-group-item task-item">
787 <div class="col-md-2"> model5 after conversion
789 {{ task.remd_model5|linebreaks }}
791 <div class="col-md-10">
793 href="/myfiles/download-file/{{task.jobdirname}}/MODEL5.pdb">
795 src="/myfiles/download-file/{{task.jobdirname}}/model5.png" width="500">
798 <li class="list-group-item task-item">
799 <div class="col-md-2"> model5
800 {% if not task.damino %}
801 after conversion to allatom
803 {{ task.remd_model5|linebreaks }}
805 <div class="col-md-10" id="viewport_M5"
806 style="width:500px;height:500px;">
809 <li class="list-group-item task-item">
810 <div class="col-md-12">
811 {% if task.md_pdbref %}
812 <button id="toggleRefM5">Reference structure on/off</button>
814 <button id="toggleSidechainsM5">Side-chains on/off</button>
815 <a class="btn btn-default"
816 href="/myfiles/download-file/{{task.jobdirname}}/MODEL5.pdb">Download</a>
827 <script src="/static/jquery.min.js"></script>
828 <script src="https://unpkg.com/ngl"></script>
831 $('.majorpointslegend').click(function(){
832 $(this.parentNode).find('.hiders').toggle();
833 if($(this.parentNode).find('.majorpointslegend').text()=='Show input parameters'){
834 $(this.parentNode).find('.majorpointslegend').text('Hide input parameters');
836 $(this.parentNode).find('.majorpointslegend').text('Show input parameters');
841 {% if task.type == "remd" or task.type == "dock" %}
843 function display_model(numstr){
845 {% if task.md_pdbref %}
846 var stage = new NGL.Stage("viewport_M"+numstr);
847 stage.setParameters( { backgroundColor: "white",fogFar: 60, fogNear: 45 } );
849 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/plik1.pdb" ,{defaultRepresentation: false}) .then( function( o ){
850 o.addRepresentation( "cartoon",{ name:"ref", color:"grey"
852 o.addRepresentation( "line", {name:"refsc",visible: false,
853 sele:"not hydrogen and sidechainAttached"
858 "/myfiles/download-file/{{task.jobdirname}}/MODEL"+numstr+".pdb",{defaultRepresentation: false}) .then( function( o ){
860 o.addRepresentation( "licorice",{ name: "unres", color:
861 "residueindex",colorScale:["blue","cyan", "green",
862 "yellow","orange", "red"], sele:".CA"
864 o.addRepresentation( "licorice",{ name: "unressc", visible: false, color:
865 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
868 o.addRepresentation( "cartoon",{ name: "unres", color:
869 "residueindex",colorScale:["blue","cyan", "green",
870 "yellow","orange", "red"]
872 o.addRepresentation( "line",{ name: "unressc", visible: false, color:
873 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
874 , sele:"not hydrogen and sidechainAttached" })
878 ]).then(function (ol1) {
879 ol1[ 1 ].superpose(ol1[ 0 ], false, ".CA")
884 var toggleAll = document.getElementById( "toggleRefM"+numstr );
885 toggleAll.addEventListener( "click", function(){
887 stage.getRepresentationsByName(
888 "ref" ).list.forEach( function( repre ){
889 repre.setVisibility( !repre.visible );
892 stage.getRepresentationsByName(
893 "refsc" ).list.forEach( function( repre ){
894 repre.setVisibility( !repre.visible );
899 var toggleSidechains =document.getElementById("toggleSidechainsM"+numstr );
900 toggleSidechains.addEventListener( "click", function(){
903 stage.getRepresentationsByName(
904 "refsc" ).list.forEach( function( repre ){
905 repre.setVisibility( !repre.visible );
908 stage.getRepresentationsByName("unressc").list.forEach( function( repre ){
909 repre.setVisibility( !repre.visible );
914 var stage = new NGL.Stage("viewport_M"+numstr);
915 stage.setParameters( { backgroundColor: "white",fogFar: 60, fogNear: 45 } );
916 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/MODEL"+numstr+".pdb",{defaultRepresentation: false}) .then( function( o ){
918 o.addRepresentation( "licorice",{ name: "unres", color:
919 "residueindex",colorScale:["blue","cyan", "green",
920 "yellow","orange", "red"],sele:".CA"
922 o.addRepresentation( "licorice",{ name: "unressc", visible: false, color:
923 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
926 o.addRepresentation( "cartoon",{ name: "unres", color:
927 "residueindex",colorScale:["blue","cyan", "green",
928 "yellow","orange", "red"]
930 o.addRepresentation( "line",{ name: "unressc", visible: false, color:
931 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
932 , sele:"not hydrogen and sidechainAttached" });
936 var toggleSidechains =document.getElementById("toggleSidechainsM"+numstr );
937 toggleSidechains.addEventListener( "click", function(){
938 stage.getRepresentationsByName("unressc").list.forEach( function( repre ){
939 repre.setVisibility( !repre.visible );
948 window.addEventListener("resize",
950 stage.handleResize();
958 var y = document.getElementsByClassName("model");
961 for (ii = 0; ii < y.length; ii++) {
965 showDivs(slideIndex);
967 function plusDivs(n) {
968 showDivs(slideIndex += n);
971 function showDivs(n) {
973 var x = document.getElementsByClassName("model");
974 if (n > x.length) {slideIndex = 1}
975 if (n < 1) {slideIndex = x.length}
976 for (i = 0; i < x.length; i++) {
977 x[i].style.display = "none";
979 x[slideIndex-1].style.display = "block";
981 if (lista[slideIndex-1] == 0 && slideIndex == 2) {
985 if (lista[slideIndex-1] == 0 && slideIndex == 3) {
989 if (lista[slideIndex-1] == 0 && slideIndex == 4) {
993 if (lista[slideIndex-1] == 0 && slideIndex == 5) {
998 if (lista[slideIndex-1] == 0) {lista[slideIndex-1]=1}
1003 {% if not task.done %}
1007 data:{csrfmiddlewaretoken: '{{ csrf_token }}'},
1008 url: "/refresh_done/",
1010 success: function(data) {
1011 document.location.reload();
1013 complete: function() {
1014 // Schedule the next request when the current one's complete
1015 setTimeout(worker, 30000);
1019 $(document).ready(function() {
1020 // run the first time; all subsequent calls will take care of themselves
1021 setTimeout(worker, 30000);
1026 {% if task.type == "min" %}
1028 window.addEventListener("resize",
1030 stage.handleResize();
1033 var stage_unres = new NGL.Stage("viewport_unres");
1034 stage_unres.setParameters( { backgroundColor: "white" } );
1036 [color_Red, color_Green, color_Blue, ellipsoid_width, ellipsoid_length ]
1038 var resdb = { 'CYS': [1.000, 1.000, 0.000, 1.33741, 2.96868],
1039 'MET': [0.000, 1.000, 0.000, 1.36694, 3.08863],
1040 'PHE': [0.000, 0.392, 0.000, 1.48323, 3.04238],
1041 'ILE': [0.000, 1.000, 0.000, 1.44098, 3.17389],
1042 'LEU': [0.000, 1.000, 0.000, 1.51054, 2.52078],
1043 'VAL': [0.000, 1.000, 0.000, 1.42072, 2.68924],
1044 'TRP': [0.000, 0.392, 0.000, 1.23867, 3.47403],
1045 'TYR': [0.596, 0.984, 0.596, 1.23060, 3.35434],
1046 'ALA': [0.000, 1.000, 0.000, 1.23266, 1.72686],
1047 'GLY': [1.000, 1.000, 1.000, 1.24626, 1.11383],
1048 'THR': [1.000, 0.000, 1.000, 1.28674, 2.59210],
1049 'SER': [1.000, 0.000, 1.000, 1.22820, 1.68800],
1050 'GLN': [1.000, 0.000, 1.000, 1.24239, 2.22201],
1051 'ASN': [1.000, 0.000, 1.000, 1.24447, 2.24946],
1052 'GLU': [1.000, 0.000, 0.000, 1.25448, 2.05551],
1053 'ASP': [1.000, 0.000, 0.000, 1.25417, 1.77556],
1054 'HIS': [1.000, 0.000, 1.000, 1.21103, 3.02627],
1055 'ARG': [0.000, 0.000, 1.000, 1.13573, 3.25143],
1056 'LYS': [0.000, 0.000, 1.000, 1.22604, 4.50054],
1057 'PRO': [0.000, 1.000, 1.000, 1.35131, 2.20525]
1059 stage_unres.loadFile("/myfiles/download-file/{{task.jobdirname}}/file_GB000.pdb", {defaultRepresentation: false}).then
1061 var shape = new NGL.Shape("shape")
1063 o.addRepresentation("licorice");
1064 o.structure.eachAtom(function(atom){
1065 if (atom.atomname == "CA" && atom.chainname == chain) {
1066 px=CAx+(atom.x-CAx)/2;
1067 py=CAy+(atom.y-CAy)/2;
1068 pz=CAz+(atom.z-CAz)/2;
1069 shape.addSphere([px,py,pz],[0.643, 0.933, 0.960],0.6,"p");
1071 if (atom.atomname == "CA") {
1072 chain= atom.chainname
1077 if (atom.atomname == "CB") {
1081 norm=Math.sqrt(mx*mx+my*my+mz*mz);
1083 var longaxis=resdb[res][4]
1084 var shortaxis=resdb[res][3]
1085 mx = mx /norm*longaxis;
1086 my = my /norm*longaxis;
1087 mz = mz /norm*longaxis;
1089 shape.addEllipsoid([ atom.x, atom.y, atom.z ],
1090 [ resdb[res][0], resdb[res][1], resdb[res][2]],
1091 shortaxis, [ mx, my, mz ], [ 0, shortaxis, 0 ],resn);
1094 var shapeComp = stage_unres.addComponentFromObject(shape)
1095 shapeComp.addRepresentation("buffer")
1101 var stage = new NGL.Stage("viewport_min");
1102 stage.setParameters( { backgroundColor: "white" } );
1104 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/file_GB000.pdb" ,{defaultRepresentation: false}) .then( function( o ){
1105 o.addRepresentation( "backbone",{ color:
1106 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
1108 o.addRepresentation( "licorice",{ color:
1109 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange","red"]
1114 stage.loadFile("/myfiles/download-file/{{task.jobdirname}}/plik.pdb",{defaultRepresentation: false}) .then( function( o ){
1115 o.addRepresentation( "backbone",{ name: "allatom", color:
1116 "residueindex",colorScale:["blue","cyan", "green","yellow","orange", "red"]
1118 o.addRepresentation( "line",{ name: "allatomsc", color:
1119 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
1120 ,sele:"not hydrogen and sidechainAttached"
1124 ]).then(function (ol) {
1125 ol[ 0 ].superpose(ol[ 1 ], false, ".CA")
1131 var toggleAll = document.getElementById( "toggleAllatom" );
1132 toggleAll.addEventListener( "click", function(){
1134 stage.getRepresentationsByName(
1135 "allatom" ).list.forEach( function( repre ){
1136 repre.setVisibility( !repre.visible );
1139 stage.getRepresentationsByName(
1140 "allatomsc" ).list.forEach( function( repre ){
1141 repre.setVisibility( !repre.visible );
1145 var toggleSidechains = document.getElementById("toggleSidechains2" );
1146 toggleSidechains.addEventListener( "click", function(){
1149 stage.getRepresentationsByName(
1150 "allatomsc" ).list.forEach( function( repre ){
1151 repre.setVisibility( !repre.visible );
1155 stage.getRepresentationsByName("licorice").list.forEach( function( repre ){
1156 repre.setVisibility( !repre.visible );
1163 {% if task.type == "md" and task.md_start == "pdbstart" %}
1165 window.addEventListener("resize",
1167 stage.handleResize();
1170 var stage = new NGL.Stage("viewport_putty");
1171 stage.setParameters( { backgroundColor: "white" } );
1173 var tooltip = document.createElement("div")
1174 Object.assign(tooltip.style, {
1178 pointerEvents: "none",
1179 backgroundColor: "rgba( 0, 0, 0, 0.6 )",
1182 fontFamily: "sans-serif"
1184 document.body.appendChild(tooltip)
1186 stage.loadFile("/myfiles/download-file/{{task.jobdirname}}/plik_bf.pdb", {defaultRepresentation: false}).then
1188 o.addRepresentation("tube",{ color: "bfactor" , scale: 0.25,
1191 colorScale:["blue","cyan", "green", "yellow","orange", "red"] });
1192 o.addRepresentation("licorice",{sele:"sidechainAttached and CYS and not hydrogen"});
1196 // remove default hoverPick mouse action
1197 stage.mouseControls.remove("hoverPick")
1199 stage.signals.hovered.add(function (pickingProxy) {
1200 if (pickingProxy && (pickingProxy.atom || pickingProxy.bond)) {
1201 var atom = pickingProxy.atom || pickingProxy.closestBondAtom
1202 var mp = pickingProxy.mouse.position
1203 var bf= atom.bfactor.toFixed(2)
1204 tooltip.innerText = atom.qualifiedName()+" Fluctuation="+ bf
1205 tooltip.style.bottom = window.innerHeight - mp.y + 3 + "px"
1206 tooltip.style.left = mp.x + 3 + "px"
1207 tooltip.style.display = "block"
1209 tooltip.style.display = "none"
1215 {% if task.type == "md" and task.md_mdpdb %}
1217 window.addEventListener("resize",
1219 stage.handleResize();
1222 var stage = new NGL.Stage("viewport_traj");
1223 stage.setParameters( { backgroundColor: "white" } );
1224 stage.setParameters( { cameraType: "orthographic" } );
1227 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/file_MD000.pdb", {
1228 asTrajectory: true } ) .then( function( o ){
1229 o.setName ("unres_md");
1230 o.addRepresentation( "backbone",{ color:
1231 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
1233 o.addRepresentation( "licorice",{ color:
1234 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
1236 o.setPosition([0, 0, 100]);
1241 var toggleSidechains = document.getElementById( "toggleSidechains1" );
1242 toggleSidechains.addEventListener( "click", function(){
1243 stage.getRepresentationsByName( "licorice" ).list.forEach( function( repre ){
1244 repre.setVisibility( !repre.visible );
1249 function numberWithCommas(x) {
1250 return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
1252 var toggleRunMDs = document.getElementById( "toggleRunMDs" );
1253 var isRunning = false;
1254 toggleRunMDs.addEventListener( "click", function(){
1255 var trajComp = stage.getComponentsByName("unres_md").list[0].trajList[0];
1256 var player = new NGL.TrajectoryPlayer(trajComp.trajectory, {timeout: 10, mode: "once"});
1261 trajComp.signals.frameChanged.add(function(){
1262 var fnum=trajComp.trajectory.currentFrame+1;
1263 clipRange.value = fnum;
1264 clipRange_val.innerHTML = numberWithCommas(parseInt(clipRange.value*1));
1273 var clipRange = document.getElementById( "clipRange" );
1274 var clipRange_val = document.getElementById( "clipRange_val" );
1275 clipRange.oninput = function( e ){
1276 var trajComp = stage.getComponentsByName("unres_md").list[0].trajList[0];
1277 trajComp.setFrame(e.target.value-1)
1278 clipRange_val.innerHTML = numberWithCommas(parseInt(e.target.value*1));