1 {% extends "base.html" %}
3 {% load i18n lazysignup_tags %}
6 {% if task.owner|is_lazy_user %}
8 <ul class="list-group">
10 <li class="list-group-item new-task-item task-item">
12 <div class="col-md-2 form-group">
13 <form action="/refresh_done1/{{task.id}}/" method="post">
15 <input type="submit" class="btn" value="Refresh" name="refreshbtn">
19 <div class="col-md-10 form-group">
20 <h5 style="text-align:right;float:right;">
21 {% if not task.done %}
22 {% if task.running > 0 %}
23 {% if task.running == 100 %}
29 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" %}
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 <li class="list-group-item task-item">
232 <div class="col-md-6"> seed </div>
233 <div class="col-md-6">{{ task.md_seed}}</div>
235 <li class="list-group-item task-item">
236 <div class="col-md-6"> pdbref </div>
237 <div class="col-md-6">{{ task.md_pdbref}}</div>
239 {% if task.md_start == "pdbstart" %}
240 <li class="list-group-item task-item">
241 <div class="col-md-6"> preminim maxfun </div>
242 <div class="col-md-6">{{ task.min_maxfun }}</div>
245 <li class="list-group-item task-item">
246 <div class="col-md-6"> respa </div>
247 <div class="col-md-6">{{ task.md_respa}}</div>
249 <li class="list-group-item task-item">
250 <div class="col-md-6"> nstep </div>
251 <div class="col-md-6">{{ task.md_nstep}}</div>
253 <li class="list-group-item task-item">
254 <div class="col-md-6"> ntwe </div>
255 <div class="col-md-6">{{ task.md_ntwe}}</div>
257 <li class="list-group-item task-item">
258 <div class="col-md-6"> nstex </div>
259 <div class="col-md-6">{{ task.remd_nstex}}</div>
261 <li class="list-group-item task-item">
262 <div class="col-md-6"> ntwx </div>
263 <div class="col-md-6">{{ task.md_ntwx}}</div>
265 <li class="list-group-item task-item">
266 <div class="col-md-6"> dt </div>
267 <div class="col-md-6">{{ task.md_dt}}</div>
269 <li class="list-group-item task-item">
270 <div class="col-md-6"> thermostat </div>
271 <div class="col-md-6">{{ task.md_lang}}</div>
274 {% if task.md_lang == "berendsen" %}
276 <li class="list-group-item task-item">
277 <div class="col-md-6"> tau </div>
278 <div class="col-md-6">{{ task.md_tau}}</div>
283 <li class="list-group-item task-item">
284 <div class="col-md-6"> scal_fric </div>
285 <div class="col-md-6">{{ task.md_scal_fric}}</div>
290 <li class="list-group-item task-item">
291 <div class="col-md-6"> RESPA </div>
292 <div class="col-md-6">{{ task.md_respa}}</div>
295 <li class="list-group-item task-item">
296 <div class="col-md-6"> temperatures </div>
297 <div class="col-md-6">{{ task.remd_multi_t}}</div>
299 <li class="list-group-item task-item">
300 <div class="col-md-6"> multiplex </div>
301 <div class="col-md-6">{{ task.remd_multi_m}}</div>
303 <li class="list-group-item task-item">
304 <div class="col-md-6"> temperature for clustering</div>
305 <div class="col-md-6">{{ task.remd_cluter_temp}}</div>
307 {% if task.saxs_data != "" %}
308 <li class="list-group-item task-item">
309 <div class="col-md-6"> wsaxs </div>
310 <div class="col-md-6">{{ task.wsaxs }}</div>
312 <li class="list-group-item task-item">
313 <div class="col-md-6"> scal_rad (saxs) </div>
314 <div class="col-md-6">{{ task.scal_rad }}</div>
316 <li class="list-group-item task-item">
317 <div class="col-md-6"> saxs distribution </div>
318 <div class="col-md-6"><pre> {{ task.saxs_data }}</pre></div>
324 <li class="list-group-item task-item">
325 <div class="col-md-6"> Box X Y Z</div>
326 <div class="col-md-2">{{ task.boxx}}</div>
327 <div class="col-md-2">{{ task.boxy}}</div>
328 <div class="col-md-2">{{ task.boxz}}</div>
335 <li class="list-group-item task-item">
336 <div class="col-md-4"> Directory </div>
337 <div class="col-md-8">
338 <a href="/myfiles/list/{{task.jobdirname}}/">
339 {{ task.jobdirname }}
347 {% if task.type == "min" %}
349 <li class="list-group-item task-item">
350 <div class="col-md-2"> Etot </div>
351 <div class="col-md-10">{{ task.etot }}</div>
354 <li class="list-group-item task-item">
355 <div class="col-md-2"> UNRES model </div>
356 <div class="col-md-10">
358 href="/myfiles/download-file/{{task.jobdirname}}/unres.pse">
360 src="/myfiles/download-file/{{task.jobdirname}}/unres.png"
361 width="500"></a> </div>
365 <li class="list-group-item task-item">
366 <div class="col-md-2"> Structure overlap </div>
367 <div class="col-md-10"> <img
368 src="/myfiles/download-file/{{task.jobdirname}}/unres_overlap.png"
372 <li class="list-group-item task-item">
373 <div class="col-md-2"> Structure overlap NGL viewer</div>
374 <div class="col-md-10" id="viewport_min"
375 style="width:500px;height:500px;">
378 <li class="list-group-item task-item">
379 <div class="col-md-12">
380 <button id="toggleAllatom">Input structure on/off</button>
381 <button id="toggleSidechains2">Side-chains on/off</button>
386 <li class="list-group-item task-item">
387 <div class="col-md-2"> Results </div>
388 <div class="col-md-10">{{ task.results_text|linebreaks }}</div>
391 {% if task.type == "md" %}
393 <li class="list-group-item task-item">
394 <div class="col-md-2"> Temperature histogram </div>
395 <div class="col-md-10"> <img
396 src="/myfiles/download-file/{{task.jobdirname}}/temp_hist.png"
400 <li class="list-group-item task-item">
401 <div class="col-md-2"> Potential energy </div>
402 <div class="col-md-10"> <img
403 src="/myfiles/download-file/{{task.jobdirname}}/md_ene.png"
407 <li class="list-group-item task-item">
408 <div class="col-md-2"> Movie </div>
409 <div class="col-md-10">
411 <video width="500" height="400" preload controls>
413 src="/myfiles/download-file/{{task.jobdirname}}/md.ogv"
414 type="video/ogg; codecs=theora"> </source>
420 {% if task.md_mdpdb %}
421 <li class="list-group-item task-item">
422 <div class="col-md-2"> Trajectory NGL viewer</div>
423 <div class="col-md-10" id="viewport_traj"
424 style="width:500px;height:500px;">
427 <li class="list-group-item task-item">
428 <div class="col-md-6">
429 <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
431 <div class="col-md-6">
432 <button id="toggleRunMDs">run/pause MD</button>
433 <button id="toggleSidechains1">side-chains on/off</button>
439 <li class="list-group-item task-item">
440 <div class="col-md-2"> Radius of gyration based
441 on C<sup>α</sup> coordinates </div>
442 <div class="col-md-10"> <img
443 src="/myfiles/download-file/{{task.jobdirname}}/md_gyr.png"
449 {% if task.md_pdbref %}
450 <li class="list-group-item task-item">
451 <div class="col-md-2"> RMSD </div>
452 <div class="col-md-10"> <img
453 src="/myfiles/download-file/{{task.jobdirname}}/md_rms.png"
457 <li class="list-group-item task-item">
458 <div class="col-md-2"> fraction of native
459 side-chain concacts </div>
460 <div class="col-md-10"> <img
461 src="/myfiles/download-file/{{task.jobdirname}}/md_fracn.png"
467 {% if task.md_start == "pdbstart" %}
468 <li class="list-group-item task-item">
469 <div class="col-md-2"> fluctuations </div>
470 <div class="col-md-10"> <img
471 src="/myfiles/download-file/{{task.jobdirname}}/fluct_plot.png"
475 <li class="list-group-item task-item">
476 <div class="col-md-2"> fluctuations putty on
477 starting structure</div>
478 <div class="col-md-10">
480 href="/myfiles/download-file/{{task.jobdirname}}/fluct.pse">
482 src="/myfiles/download-file/{{task.jobdirname}}/fluct.png"
483 width="500"></a> </div>
486 <li class="list-group-item task-item">
487 <div class="col-md-2"> fluctuations putty on
488 starting structure NGL viewer</div>
489 <div class="col-md-10" id="viewport_putty"
490 style="width:500px;height:500px;">
501 {% if task.type == "remd" %}
503 <li class="list-group-item task-item">
504 <div class="col-md-2"> Energy histogram </div>
505 <div class="col-md-10"> <img
506 src="/myfiles/download-file/{{task.jobdirname}}/remd_ene_hist.png"
510 <li class="list-group-item task-item">
511 <div class="col-md-2"> Energy vs. temperature </div>
512 <div class="col-md-10"> <img
513 src="/myfiles/download-file/{{task.jobdirname}}/remd_Tene.png"
517 <li class="list-group-item task-item">
518 <div class="col-md-2"> Cv vs. temperature </div>
519 <div class="col-md-10"> <img
520 src="/myfiles/download-file/{{task.jobdirname}}/remd_cv.png"
524 {% if task.md_pdbref %}
526 <li class="list-group-item task-item">
527 <div class="col-md-2"> Average RMSD vs. temperature </div>
528 <div class="col-md-10"> <img
529 src="/myfiles/download-file/{{task.jobdirname}}/remd_rmsd.png"
533 <li class="list-group-item task-item">
534 <div class="col-md-2"> potential energy vs. RMSD</div>
535 <div class="col-md-10"> <img
536 src="/myfiles/download-file/{{task.jobdirname}}/remd_ene_rms.png"
540 <li class="list-group-item task-item">
541 <div class="col-md-2"> RMSD vs. step*replica
542 colored by bath temperature</div>
543 <div class="col-md-10"> <img
544 src="/myfiles/download-file/{{task.jobdirname}}/remd_step_rms.png"
551 <li class="list-group-item task-item">
552 <div class="col-md-2"> exchanges (walk in T) </div>
553 <div class="col-md-10"> <img
554 src="/myfiles/download-file/{{task.jobdirname}}/remd_ex.png"
558 {% if task.saxs_data != "" %}
559 <li class="list-group-item task-item">
560 <div class="col-md-2"> P(r) of input SAXS data and
561 calculated for 5 models and the input pdb</div>
562 <div class="col-md-10"> <img
563 src="/myfiles/download-file/{{task.jobdirname}}/saxs.png"
568 <li class="list-group-item task-item">
569 <div class="col-md-4">
570 <button onclick="plusDivs(-1)">❮</button>
572 <div class="col-md-6">
575 <div class="col-md-2">
576 <button onclick="plusDivs(1)">❯</button>
581 <!-- <li class="list-group-item task-item">
582 <div class="col-md-2"> model1 after conversion
584 {{ task.remd_model1|linebreaks }}
586 <div class="col-md-10">
588 href="/myfiles/download-file/{{task.jobdirname}}/MODEL1.pdb">
590 src="/myfiles/download-file/{{task.jobdirname}}/model1.png" width="500">
593 <li class="list-group-item task-item">
594 <div class="col-md-2"> model1 after conversion
595 to allatom {{ task.remd_model1|linebreaks }}
597 <div class="col-md-10" id="viewport_M1"
598 style="width:500px;height:500px;">
601 <li class="list-group-item task-item">
602 <div class="col-md-12">
603 {% if task.md_pdbref %}
604 <button id="toggleRefM1">Reference structure on/off</button>
606 <button id="toggleSidechainsM1">Side-chains on/off</button>
607 <a class="btn btn-default"
608 href="/myfiles/download-file/{{task.jobdirname}}/MODEL1.pdb">Download</a>
614 <!-- <li class="list-group-item task-item">
615 <div class="col-md-2"> model2 after conversion
617 {{ task.remd_model2|linebreaks }}
619 <div class="col-md-10">
621 href="/myfiles/download-file/{{task.jobdirname}}/MODEL2.pdb">
623 src="/myfiles/download-file/{{task.jobdirname}}/model2.png" width="500">
626 <li class="list-group-item task-item">
627 <div class="col-md-2"> model2 after conversion
628 to allatom {{ task.remd_model2|linebreaks }}
630 <div class="col-md-10" id="viewport_M2"
631 style="width:500px;height:500px;">
634 <li class="list-group-item task-item">
635 <div class="col-md-12">
636 {% if task.md_pdbref %}
637 <button id="toggleRefM2">Reference structure on/off</button>
639 <button id="toggleSidechainsM2">Side-chains on/off</button>
640 <a class="btn btn-default"
641 href="/myfiles/download-file/{{task.jobdirname}}/MODEL2.pdb">Download</a>
648 <!-- <li class="list-group-item task-item">
649 <div class="col-md-2"> model3 after conversion
651 {{ task.remd_model3|linebreaks }}
653 <div class="col-md-10">
655 href="/myfiles/download-file/{{task.jobdirname}}/MODEL3.pdb">
657 src="/myfiles/download-file/{{task.jobdirname}}/model3.png" width="500">
660 <li class="list-group-item task-item">
661 <div class="col-md-2"> model3 after conversion
662 to allatom {{ task.remd_model3|linebreaks }}
664 <div class="col-md-10" id="viewport_M3"
665 style="width:500px;height:500px;">
668 <li class="list-group-item task-item">
669 <div class="col-md-12">
670 {% if task.md_pdbref %}
671 <button id="toggleRefM3">Reference structure on/off</button>
673 <button id="toggleSidechainsM3">Side-chains on/off</button>
674 <a class="btn btn-default"
675 href="/myfiles/download-file/{{task.jobdirname}}/MODEL3.pdb">Download</a>
681 <!-- <li class="list-group-item task-item">
682 <div class="col-md-2"> model4 after conversion
684 {{ task.remd_model4|linebreaks }}
686 <div class="col-md-10">
688 href="/myfiles/download-file/{{task.jobdirname}}/MODEL4.pdb">
690 src="/myfiles/download-file/{{task.jobdirname}}/model4.png" width="500">
693 <li class="list-group-item task-item">
694 <div class="col-md-2"> model4 after conversion
695 to allatom {{ task.remd_model4|linebreaks }}
697 <div class="col-md-10" id="viewport_M4"
698 style="width:500px;height:500px;">
701 <li class="list-group-item task-item">
702 <div class="col-md-12">
703 {% if task.md_pdbref %}
704 <button id="toggleRefM4">Reference structure on/off</button>
706 <button id="toggleSidechainsM4">Side-chains on/off</button>
707 <a class="btn btn-default"
708 href="/myfiles/download-file/{{task.jobdirname}}/MODEL4.pdb">Download</a>
714 <!-- <li class="list-group-item task-item">
715 <div class="col-md-2"> model5 after conversion
717 {{ task.remd_model5|linebreaks }}
719 <div class="col-md-10">
721 href="/myfiles/download-file/{{task.jobdirname}}/MODEL5.pdb">
723 src="/myfiles/download-file/{{task.jobdirname}}/model5.png" width="500">
726 <li class="list-group-item task-item">
727 <div class="col-md-2"> model5 after conversion
728 to allatom {{ task.remd_model5|linebreaks }}
730 <div class="col-md-10" id="viewport_M5"
731 style="width:500px;height:500px;">
734 <li class="list-group-item task-item">
735 <div class="col-md-12">
736 {% if task.md_pdbref %}
737 <button id="toggleRefM5">Reference structure on/off</button>
739 <button id="toggleSidechainsM5">Side-chains on/off</button>
740 <a class="btn btn-default"
741 href="/myfiles/download-file/{{task.jobdirname}}/MODEL5.pdb">Download</a>
753 Regular user cannot use this link.
757 <script src="/static/jquery.min.js"></script>
758 <script src="https://unpkg.com/ngl"></script>
761 $('.majorpointslegend').click(function(){
762 $(this.parentNode).find('.hiders').toggle();
763 if($(this.parentNode).find('.majorpointslegend').text()=='Show input parameters'){
764 $(this.parentNode).find('.majorpointslegend').text('Hide input parameters');
766 $(this.parentNode).find('.majorpointslegend').text('Show input parameters');
771 {% if task.type == "remd" %}
773 function display_model(numstr){
775 {% if task.md_pdbref %}
776 var stage = new NGL.Stage("viewport_M"+numstr);
777 stage.setParameters( { backgroundColor: "white",fogFar: 60, fogNear: 45 } );
779 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/plik1.pdb" ,{defaultRepresentation: false}) .then( function( o ){
780 o.addRepresentation( "cartoon",{ name:"ref", color:"grey"
782 o.addRepresentation( "line", {name:"refsc",visible: false,
783 sele:"not hydrogen and sidechainAttached"
788 "/myfiles/download-file/{{task.jobdirname}}/MODEL"+numstr+".pdb",{defaultRepresentation: false}) .then( function( o ){
789 o.addRepresentation( "cartoon",{ name: "unres", color:
790 "residueindex",colorScale:["blue","cyan", "green",
791 "yellow","orange", "red"]
793 o.addRepresentation( "line",{ name: "unressc", visible: false, color:
794 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
795 , sele:"not hydrogen and sidechainAttached" })
798 ]).then(function (ol1) {
799 ol1[ 0 ].superpose(ol1[ 1 ], false, ".CA")
804 var toggleAll = document.getElementById( "toggleRefM"+numstr );
805 toggleAll.addEventListener( "click", function(){
807 stage.getRepresentationsByName(
808 "ref" ).list.forEach( function( repre ){
809 repre.setVisibility( !repre.visible );
812 stage.getRepresentationsByName(
813 "refsc" ).list.forEach( function( repre ){
814 repre.setVisibility( !repre.visible );
819 var toggleSidechains =document.getElementById("toggleSidechainsM"+numstr );
820 toggleSidechains.addEventListener( "click", function(){
823 stage.getRepresentationsByName(
824 "refsc" ).list.forEach( function( repre ){
825 repre.setVisibility( !repre.visible );
828 stage.getRepresentationsByName("unressc").list.forEach( function( repre ){
829 repre.setVisibility( !repre.visible );
834 var stage = new NGL.Stage("viewport_M"+numstr);
835 stage.setParameters( { backgroundColor: "white",fogFar: 60, fogNear: 45 } );
836 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/MODEL"+numstr+".pdb",{defaultRepresentation: false}) .then( function( o ){
837 o.addRepresentation( "cartoon",{ name: "unres", color:
838 "residueindex",colorScale:["blue","cyan", "green",
839 "yellow","orange", "red"]
841 o.addRepresentation( "line",{ name: "unressc", visible: false, color:
842 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
843 , sele:"not hydrogen and sidechainAttached" });
846 var toggleSidechains =document.getElementById("toggleSidechainsM"+numstr );
847 toggleSidechains.addEventListener( "click", function(){
848 stage.getRepresentationsByName("unressc").list.forEach( function( repre ){
849 repre.setVisibility( !repre.visible );
858 window.addEventListener("resize",
860 stage.handleResize();
868 var y = document.getElementsByClassName("model");
871 for (ii = 0; ii < y.length; ii++) {
875 showDivs(slideIndex);
877 function plusDivs(n) {
878 showDivs(slideIndex += n);
881 function showDivs(n) {
883 var x = document.getElementsByClassName("model");
884 if (n > x.length) {slideIndex = 1}
885 if (n < 1) {slideIndex = x.length}
886 for (i = 0; i < x.length; i++) {
887 x[i].style.display = "none";
889 x[slideIndex-1].style.display = "block";
891 if (lista[slideIndex-1] == 0 && slideIndex == 2) {
895 if (lista[slideIndex-1] == 0 && slideIndex == 3) {
899 if (lista[slideIndex-1] == 0 && slideIndex == 4) {
903 if (lista[slideIndex-1] == 0 && slideIndex == 5) {
908 if (lista[slideIndex-1] == 0) {lista[slideIndex-1]=1}
913 {% if not task.done %}
917 data:{csrfmiddlewaretoken: '{{ csrf_token }}'},
918 url: "/refresh_done1/{{task.id}}/",
920 success: function(data) {
921 document.location.reload();
923 complete: function() {
924 // Schedule the next request when the current one's complete
925 setTimeout(worker, 30000);
929 $(document).ready(function() {
930 // run the first time; all subsequent calls will take care of themselves
931 setTimeout(worker, 30000);
937 {% if task.type == "min" %}
939 window.addEventListener("resize",
941 stage.handleResize();
944 var stage = new NGL.Stage("viewport_min");
945 stage.setParameters( { backgroundColor: "white" } );
947 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/file_GB000.pdb" ,{defaultRepresentation: false}) .then( function( o ){
948 o.addRepresentation( "backbone",{ color:
949 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
951 o.addRepresentation( "licorice",{ color:
952 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange","red"]
957 stage.loadFile("/myfiles/download-file/{{task.jobdirname}}/plik.pdb",{defaultRepresentation: false}) .then( function( o ){
958 o.addRepresentation( "backbone",{ name: "allatom", color:
959 "residueindex",colorScale:["blue","cyan", "green","yellow","orange", "red"]
961 o.addRepresentation( "line",{ name: "allatomsc", color:
962 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
963 ,sele:"not hydrogen and sidechainAttached"
967 ]).then(function (ol) {
968 ol[ 0 ].superpose(ol[ 1 ], false, ".CA")
974 var toggleAll = document.getElementById( "toggleAllatom" );
975 toggleAll.addEventListener( "click", function(){
977 stage.getRepresentationsByName(
978 "allatom" ).list.forEach( function( repre ){
979 repre.setVisibility( !repre.visible );
982 stage.getRepresentationsByName(
983 "allatomsc" ).list.forEach( function( repre ){
984 repre.setVisibility( !repre.visible );
988 var toggleSidechains = document.getElementById("toggleSidechains2" );
989 toggleSidechains.addEventListener( "click", function(){
992 stage.getRepresentationsByName(
993 "allatomsc" ).list.forEach( function( repre ){
994 repre.setVisibility( !repre.visible );
998 stage.getRepresentationsByName("licorice").list.forEach( function( repre ){
999 repre.setVisibility( !repre.visible );
1006 {% if task.type == "md" and task.md_start == "pdbstart" %}
1008 window.addEventListener("resize",
1010 stage.handleResize();
1013 var stage = new NGL.Stage("viewport_putty");
1014 stage.setParameters( { backgroundColor: "white" } );
1016 var tooltip = document.createElement("div")
1017 Object.assign(tooltip.style, {
1021 pointerEvents: "none",
1022 backgroundColor: "rgba( 0, 0, 0, 0.6 )",
1025 fontFamily: "sans-serif"
1027 document.body.appendChild(tooltip)
1029 stage.loadFile("/myfiles/download-file/{{task.jobdirname}}/plik_bf.pdb", {defaultRepresentation: false}).then
1031 o.addRepresentation("tube",{ color: "bfactor" , scale: 0.25,
1034 colorScale:["blue","cyan", "green", "yellow","orange", "red"] });
1035 o.addRepresentation("licorice",{sele:"sidechainAttached and CYS and not hydrogen"});
1039 // remove default hoverPick mouse action
1040 stage.mouseControls.remove("hoverPick")
1042 stage.signals.hovered.add(function (pickingProxy) {
1043 if (pickingProxy && (pickingProxy.atom || pickingProxy.bond)) {
1044 var atom = pickingProxy.atom || pickingProxy.closestBondAtom
1045 var mp = pickingProxy.mouse.position
1046 var bf= atom.bfactor.toFixed(2)
1047 tooltip.innerText = atom.qualifiedName()+" Fluctuation="+ bf
1048 tooltip.style.bottom = window.innerHeight - mp.y + 3 + "px"
1049 tooltip.style.left = mp.x + 3 + "px"
1050 tooltip.style.display = "block"
1052 tooltip.style.display = "none"
1058 {% if task.type == "md" and task.md_mdpdb %}
1060 window.addEventListener("resize",
1062 stage.handleResize();
1065 var stage = new NGL.Stage("viewport_traj");
1066 stage.setParameters( { backgroundColor: "white" } );
1067 stage.setParameters( { cameraType: "orthographic" } );
1070 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/file_MD000.pdb", {
1071 asTrajectory: true } ) .then( function( o ){
1072 o.setName ("unres_md");
1073 o.addRepresentation( "backbone",{ color:
1074 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
1076 o.addRepresentation( "licorice",{ color:
1077 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
1083 var toggleSidechains = document.getElementById( "toggleSidechains1" );
1084 toggleSidechains.addEventListener( "click", function(){
1085 stage.getRepresentationsByName( "licorice" ).list.forEach( function( repre ){
1086 repre.setVisibility( !repre.visible );
1091 function numberWithCommas(x) {
1092 return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
1094 var toggleRunMDs = document.getElementById( "toggleRunMDs" );
1095 var isRunning = false;
1096 toggleRunMDs.addEventListener( "click", function(){
1097 var trajComp = stage.getComponentsByName("unres_md").list[0].trajList[0];
1098 var player = new NGL.TrajectoryPlayer(trajComp.trajectory, {timeout: 10, mode: "once"});
1103 trajComp.signals.frameChanged.add(function(){
1104 var fnum=trajComp.trajectory.currentFrame;
1105 clipRange.value = fnum;
1106 clipRange_val.innerHTML = numberWithCommas(parseInt(clipRange.value*1));
1115 var clipRange = document.getElementById( "clipRange" );
1116 var clipRange_val = document.getElementById( "clipRange_val" );
1117 clipRange.oninput = function( e ){
1118 var trajComp = stage.getComponentsByName("unres_md").list[0].trajList[0];
1119 trajComp.setFrame(e.target.value)
1120 clipRange_val.innerHTML = numberWithCommas(parseInt(e.target.value*1));