1 {% extends "base.html" %}
4 {% load i18n lazysignup_tags %}
7 {% if user|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_done/" 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
38 <h3> Task <b>{{ task.name }}</b></h3>
39 Created {{ task.created_date }}
40 <ul class="list-group">
42 <li class="list-group-item task-item">
43 <div class="col-md-4"> done ?</div>
44 <div class="col-md-8">
46 <span class="fa fa-check-square-o"></span>
47 {% if task.type == "md" or task.type == "remd" or task.type == "dock" %}
48 <form action="restart/"
50 style="text-align;float:right;">
53 class="btn btn-default"
60 {% if task.running > 0 %}
61 <span class="fa fa-spinner
64 {% if task.running == 100 %}
68 <span class="fa fa-square-o"></span>
75 <fieldset class="majorpoints">
76 <legend class="majorpointslegend"
77 style="background-color:#d3d3d3;cursor: pointer;">Show input parameters</legend>
78 <div class="hiders" style="display:none" >
80 <li class="list-group-item task-item">
81 <div class="col-md-6"> type </div>
82 <div class="col-md-6">{{ task.type }}</div>
85 <li class="list-group-item task-item">
86 <div class="col-md-6"> pbsjob </div>
87 <div class="col-md-6">{{ task.pbsjob }}</div>
91 <li class="list-group-item task-item">
92 <div class="col-md-6"> force field </div>
93 <div class="col-md-6">{{ task.unres_ff }}</div>
96 <li class="list-group-item task-item">
97 <div class="col-md-4"> sequence </div>
98 <div class="col-md-8 monospace">{{ task.md_seq}}</div>
101 <li class="list-group-item task-item">
102 <div class="col-md-4"> secondary structure
104 <div class="col-md-8 monospace">{{ task.md_2d}}</div>
108 <li class="list-group-item task-item">
109 <div class="col-md-6"> SSBOND </div>
110 <div class="col-md-6">{{ task.ssbond}}</div>
114 {% if task.type == "min" %}
117 <li class="list-group-item task-item">
118 <div class="col-md-6"> algorithm</div>
119 <div class="col-md-6">{{ task.min_choice }}</div>
121 <li class="list-group-item task-item">
122 <div class="col-md-6"> overlap</div>
123 <div class="col-md-6">{{ task.min_overlap }}</div>
125 <li class="list-group-item task-item">
126 <div class="col-md-6"> searchsc</div>
127 <div class="col-md-6">{{ task.min_searchsc }}</div>
129 <li class="list-group-item task-item">
130 <div class="col-md-6"> maxmin</div>
131 <div class="col-md-6">{{ task.min_maxmin }}</div>
133 <li class="list-group-item task-item">
134 <div class="col-md-6"> maxfun</div>
135 <div class="col-md-6">{{ task.min_maxfun }}</div>
137 <li class="list-group-item task-item">
138 <div class="col-md-6"> pdbout</div>
139 <div class="col-md-6">{{ task.min_pdbout }}</div>
141 <li class="list-group-item task-item">
142 <div class="col-md-6"> input pdb </div>
143 <div class="col-md-6">{{ task.myfile1 }}</div>
145 <li class="list-group-item task-item">
146 <div class="col-md-6"> pdb code</div>
147 <div class="col-md-6">{{ task.pdbcode }}</div>
149 <li class="list-group-item task-item">
150 <div class="col-md-6"> unres_pdb</div>
151 <div class="col-md-6">{{ task.min_unres_pdb }}</div>
155 {% if task.type == "md" %}
156 <li class="list-group-item task-item">
157 <div class="col-md-6"> starting </div>
158 <div class="col-md-6">{{ task.md_start}}</div>
161 <li class="list-group-item task-item">
162 <div class="col-md-6"> input pdb </div>
163 <div class="col-md-6">{{ task.myfile1 }}</div>
165 <li class="list-group-item task-item">
166 <div class="col-md-6"> pdb code</div>
167 <div class="col-md-6">{{ task.pdbcode }}</div>
169 <li class="list-group-item task-item">
170 <div class="col-md-6"> seed </div>
171 <div class="col-md-6">{{ task.md_seed}}</div>
173 <li class="list-group-item task-item">
174 <div class="col-md-6"> pdbref </div>
175 <div class="col-md-6">{{ task.md_pdbref}}</div>
177 <li class="list-group-item task-item">
178 <div class="col-md-6"> respa </div>
179 <div class="col-md-6">{{ task.md_respa}}</div>
181 <li class="list-group-item task-item">
182 <div class="col-md-6"> temperature </div>
183 <div class="col-md-6">{{ task.md_temp}}</div>
185 <li class="list-group-item task-item">
186 <div class="col-md-6"> nstep </div>
187 <div class="col-md-6">{{ task.md_nstep}}</div>
189 <li class="list-group-item task-item">
190 <div class="col-md-6"> total steps (with restarts) </div>
191 <div class="col-md-6">{{ task.md_total_steps}}</div>
193 <li class="list-group-item task-item">
194 <div class="col-md-6"> ntwe </div>
195 <div class="col-md-6">{{ task.md_ntwe}}</div>
197 <li class="list-group-item task-item">
198 <div class="col-md-6"> ntwx </div>
199 <div class="col-md-6">{{ task.md_ntwx}}</div>
201 <li class="list-group-item task-item">
202 <div class="col-md-6"> dt </div>
203 <div class="col-md-6">{{ task.md_dt}}</div>
205 <li class="list-group-item task-item">
206 <div class="col-md-6"> thermostat </div>
207 <div class="col-md-6">{{ task.md_lang}}</div>
210 {% if task.md_lang == "berendsen" %}
212 <li class="list-group-item task-item">
213 <div class="col-md-6"> tau </div>
214 <div class="col-md-6">{{ task.md_tau}}</div>
219 <li class="list-group-item task-item">
220 <div class="col-md-6"> scal_fric </div>
221 <div class="col-md-6">{{ task.md_scal_fric}}</div>
226 <li class="list-group-item task-item">
227 <div class="col-md-6"> mdpdb </div>
228 <div class="col-md-6">{{ task.md_mdpdb}}</div>
230 <li class="list-group-item task-item">
231 <div class="col-md-6"> RESPA </div>
232 <div class="col-md-6">{{ task.md_respa}}</div>
238 {% if task.type == "remd" or task.type == "dock" %}
240 <li class="list-group-item task-item">
241 <div class="col-md-6"> nrep </div>
242 <div class="col-md-6">{{ task.remd_nrep}}</div>
244 <li class="list-group-item task-item">
245 <div class="col-md-6"> starting </div>
246 <div class="col-md-6">{{ task.md_start}}</div>
249 {% if task.type == "remd" %}
250 <li class="list-group-item task-item">
251 <div class="col-md-6"> input pdb3 </div>
252 <div class="col-md-6">{{ task.myfile3 }}</div>
257 <li class="list-group-item task-item">
258 <div class="col-md-6"> input pdb </div>
259 <div class="col-md-6">{{ task.myfile1 }}</div>
261 <li class="list-group-item task-item">
262 <div class="col-md-6"> pdb code</div>
263 <div class="col-md-6">{{ task.pdbcode }}</div>
265 {% if task.type == "dock" %}
266 <li class="list-group-item task-item">
267 <div class="col-md-6"> input pdb2 </div>
268 <div class="col-md-6">{{ task.myfile2 }}</div>
270 <li class="list-group-item task-item">
271 <div class="col-md-6"> pdb code2</div>
272 <div class="col-md-6">{{ task.pdbcode2 }}</div>
274 <li class="list-group-item task-item">
275 <div class="col-md-6"> dock_peptide</div>
276 <div class="col-md-6">{{ task.dock_peptide }}</div>
280 <li class="list-group-item task-item">
281 <div class="col-md-6"> seed </div>
282 <div class="col-md-6">{{ task.md_seed}}</div>
284 <li class="list-group-item task-item">
285 <div class="col-md-6"> pdbref </div>
286 <div class="col-md-6">{{ task.md_pdbref}}</div>
288 {% if task.md_start == "pdbstart" %}
289 <li class="list-group-item task-item">
290 <div class="col-md-6"> preminim maxfun </div>
291 <div class="col-md-6">{{ task.min_maxfun }}</div>
294 <li class="list-group-item task-item">
295 <div class="col-md-6"> respa </div>
296 <div class="col-md-6">{{ task.md_respa}}</div>
298 <li class="list-group-item task-item">
299 <div class="col-md-6"> nstep </div>
300 <div class="col-md-6">{{ task.md_nstep}}</div>
302 <li class="list-group-item task-item">
303 <div class="col-md-6"> total steps (with restarts) </div>
304 <div class="col-md-6">{{ task.md_total_steps}}</div>
306 <li class="list-group-item task-item">
307 <div class="col-md-6"> ntwe </div>
308 <div class="col-md-6">{{ task.md_ntwe}}</div>
310 <li class="list-group-item task-item">
311 <div class="col-md-6"> nstex </div>
312 <div class="col-md-6">{{ task.remd_nstex}}</div>
314 <li class="list-group-item task-item">
315 <div class="col-md-6"> ntwx </div>
316 <div class="col-md-6">{{ task.md_ntwx}}</div>
318 <li class="list-group-item task-item">
319 <div class="col-md-6"> dt </div>
320 <div class="col-md-6">{{ task.md_dt}}</div>
322 <li class="list-group-item task-item">
323 <div class="col-md-6"> thermostat </div>
324 <div class="col-md-6">{{ task.md_lang}}</div>
327 {% if task.md_lang == "berendsen" %}
329 <li class="list-group-item task-item">
330 <div class="col-md-6"> tau </div>
331 <div class="col-md-6">{{ task.md_tau}}</div>
336 <li class="list-group-item task-item">
337 <div class="col-md-6"> scal_fric </div>
338 <div class="col-md-6">{{ task.md_scal_fric}}</div>
343 <li class="list-group-item task-item">
344 <div class="col-md-6"> RESPA </div>
345 <div class="col-md-6">{{ task.md_respa}}</div>
348 <li class="list-group-item task-item">
349 <div class="col-md-6"> temperatures </div>
350 <div class="col-md-6">{{ task.remd_multi_t}}</div>
352 <li class="list-group-item task-item">
353 <div class="col-md-6"> multiplex </div>
354 <div class="col-md-6">{{ task.remd_multi_m}}</div>
356 <li class="list-group-item task-item">
357 <div class="col-md-6"> temperature for clustering</div>
358 <div class="col-md-6">{{ task.remd_cluter_temp}}</div>
360 <li class="list-group-item task-item">
361 <div class="col-md-6"> number of clusters</div>
362 <div class="col-md-6">{{ task.remd_cluster_n}}</div>
364 {% if task.saxs_data != "" %}
365 <li class="list-group-item task-item">
366 <div class="col-md-6"> wsaxs </div>
367 <div class="col-md-6">{{ task.wsaxs }}</div>
369 <li class="list-group-item task-item">
370 <div class="col-md-6"> scal_rad (saxs) </div>
371 <div class="col-md-6">{{ task.scal_rad }}</div>
373 <li class="list-group-item task-item">
374 <div class="col-md-6"> saxs distribution </div>
375 <div class="col-md-6"><pre> {{ task.saxs_data }}</pre></div>
381 <li class="list-group-item task-item">
382 <div class="col-md-6"> Box X Y Z</div>
383 <div class="col-md-2">{{ task.boxx}}</div>
384 <div class="col-md-2">{{ task.boxy}}</div>
385 <div class="col-md-2">{{ task.boxz}}</div>
392 <li class="list-group-item task-item">
393 <div class="col-md-4"> Directory </div>
394 <div class="col-md-8">
395 <a href="/myfiles/list/{{task.jobdirname}}/">
396 {{ task.jobdirname }}
400 <a class="btn btn-default"
401 href="/{{task.id}}/all.zip">
410 {% if task.type == "min" %}
412 <li class="list-group-item task-item">
413 <div class="col-md-2"> Etot </div>
414 <div class="col-md-10">{{ task.etot }}</div>
417 <li class="list-group-item task-item">
418 <div class="col-md-2"> UNRES model </div>
419 <div class="col-md-10">
421 href="/myfiles/download-file/{{task.jobdirname}}/unres.pse">
423 src="/myfiles/download-file/{{task.jobdirname}}/unres.png"
424 width="500"></a> </div>
427 <li class="list-group-item task-item">
428 <div class="col-md-2"> UNRES model NGL viewer</div>
429 <div class="col-md-10" id="viewport_unres"
430 style="width:500px;height:500px;">
436 <li class="list-group-item task-item">
437 <div class="col-md-2"> Structure overlap </div>
438 <div class="col-md-10"> <img
439 src="/myfiles/download-file/{{task.jobdirname}}/unres_overlap.png"
443 <li class="list-group-item task-item">
444 <div class="col-md-2"> Structure overlap NGL viewer</div>
445 <div class="col-md-10" id="viewport_min"
446 style="width:500px;height:500px;">
449 <li class="list-group-item task-item">
450 <div class="col-md-12">
451 <button id="toggleAllatom">Input structure on/off</button>
452 <button id="toggleSidechains2">Side-chains on/off</button>
457 <li class="list-group-item task-item">
458 <div class="col-md-2"> Results </div>
459 <div class="col-md-10">{{ task.results_text|linebreaks }}</div>
462 {% if task.type == "md" %}
464 <li class="list-group-item task-item">
465 <div class="col-md-2"> Temperature histogram </div>
466 <div class="col-md-10"> <img
467 src="/myfiles/download-file/{{task.jobdirname}}/temp_hist.png"
471 <li class="list-group-item task-item">
472 <div class="col-md-2"> Potential energy </div>
473 <div class="col-md-10"> <img
474 src="/myfiles/download-file/{{task.jobdirname}}/md_ene.png"
478 <li class="list-group-item task-item">
479 <div class="col-md-2"> Movie </div>
480 <div class="col-md-10">
482 <video width="500" height="400"
483 preload="auto" controls="controls">
485 src="/myfiles/download-file/{{task.jobdirname}}/md.ogv"
486 type="video/ogg; codecs=theora"> </source>
492 {% if task.md_mdpdb %}
493 <li class="list-group-item task-item">
494 <div class="col-md-2"> Trajectory NGL viewer</div>
495 <div class="col-md-10" id="viewport_traj"
496 style="width:500px;height:500px;">
499 <li class="list-group-item task-item">
500 <div class="col-md-6">
501 <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
503 <div class="col-md-6">
504 <button id="toggleRunMDs">run/pause MD</button>
505 <button id="toggleSidechains1">side-chains on/off</button>
511 <li class="list-group-item task-item">
512 <div class="col-md-2"> Radius of gyration based
513 on C<sup>α</sup> coordinates </div>
514 <div class="col-md-10"> <img
515 src="/myfiles/download-file/{{task.jobdirname}}/md_gyr.png"
521 {% if task.md_pdbref %}
522 <li class="list-group-item task-item">
523 <div class="col-md-2"> C<sup>α</sup> RMSD </div>
524 <div class="col-md-10"> <img
525 src="/myfiles/download-file/{{task.jobdirname}}/md_rms.png"
529 <li class="list-group-item task-item">
530 <div class="col-md-2"> fraction of native
531 side-chain concacts </div>
532 <div class="col-md-10"> <img
533 src="/myfiles/download-file/{{task.jobdirname}}/md_fracn.png"
539 {% if task.md_start == "pdbstart" %}
540 <li class="list-group-item task-item">
541 <div class="col-md-2"> fluctuations </div>
542 <div class="col-md-10"> <img
543 src="/myfiles/download-file/{{task.jobdirname}}/fluct_plot.png"
547 <li class="list-group-item task-item">
548 <div class="col-md-2"> fluctuations putty on
549 starting structure</div>
550 <div class="col-md-10">
552 href="/myfiles/download-file/{{task.jobdirname}}/fluct.pse">
554 src="/myfiles/download-file/{{task.jobdirname}}/fluct.png"
555 width="500"></a> </div>
558 <li class="list-group-item task-item">
559 <div class="col-md-2"> fluctuations putty on
560 starting structure NGL viewer</div>
561 <div class="col-md-10" id="viewport_putty"
562 style="width:500px;height:500px;">
573 {% if task.type == "remd" or task.type == "dock" %}
575 <li class="list-group-item task-item">
576 <div class="col-md-2"> Energy histogram </div>
577 <div class="col-md-10"> <img
578 src="/myfiles/download-file/{{task.jobdirname}}/remd_ene_hist.png"
582 <li class="list-group-item task-item">
583 <div class="col-md-2"> Energy vs. temperature </div>
584 <div class="col-md-10"> <img
585 src="/myfiles/download-file/{{task.jobdirname}}/remd_Tene.png"
589 <li class="list-group-item task-item">
590 <div class="col-md-2"> Cv vs. temperature </div>
591 <div class="col-md-10"> <img
592 src="/myfiles/download-file/{{task.jobdirname}}/remd_cv.png"
596 {% if task.md_pdbref %}
598 <li class="list-group-item task-item">
599 <div class="col-md-2"> Average C<sup>α</sup> RMSD vs. temperature </div>
600 <div class="col-md-10"> <img
601 src="/myfiles/download-file/{{task.jobdirname}}/remd_rmsd.png"
605 <li class="list-group-item task-item">
606 <div class="col-md-2"> potential energy vs.
607 C<sup>α</sup> RMSD</div>
608 <div class="col-md-10"> <img
609 src="/myfiles/download-file/{{task.jobdirname}}/remd_ene_rms.png"
613 <li class="list-group-item task-item">
614 <div class="col-md-2"> C<sup>α</sup> RMSD vs. step*replica
615 colored by bath temperature</div>
616 <div class="col-md-10"> <img
617 src="/myfiles/download-file/{{task.jobdirname}}/remd_step_rms.png"
624 <li class="list-group-item task-item">
625 <div class="col-md-2"> exchanges (walk in T) </div>
626 <div class="col-md-10"> <img
627 src="/myfiles/download-file/{{task.jobdirname}}/remd_ex.png"
631 {% if task.saxs_data != "" %}
632 <li class="list-group-item task-item">
633 <div class="col-md-2"> P(r) of input SAXS data and
634 calculated for 5 models and the input pdb</div>
635 <div class="col-md-10"> <img
636 src="/myfiles/download-file/{{task.jobdirname}}/saxs.png"
641 <li class="list-group-item task-item">
642 <div class="col-md-4">
643 <button onclick="plusDivs(-1)">❮</button>
645 <div class="col-md-6">
648 <div class="col-md-2">
649 <button onclick="plusDivs(1)">❯</button>
653 {% for iii in range %}
655 {% with istr=forloop.counter|stringformat:"s" %}
656 {% with MODELi="MODEL"|add:istr|add:".pdb" %}
657 {% with viewporti="viewport_M"|add:istr %}
658 {% with toggleRefi="toggleRefM"|add:istr %}
659 {% with toggleSidechainsi="toggleSidechainsM"|add:istr %}
662 <li class="list-group-item task-item">
663 <div class="col-md-2"> model {{ iii }}
664 {% if not task.damino %}
665 after conversion to allatom
667 {{ remd_models|index:iii|linebreaks }}
669 <div class="col-md-10" id={{viewporti}}
670 style="width:500px;height:500px;">
673 <li class="list-group-item task-item">
674 <div class="col-md-12">
675 {% if task.md_pdbref %}
676 <button id={{toggleRefi}}>Reference structure on/off</button>
678 <button id={{toggleSidechainsi}}>Side-chains on/off</button>
679 <a class="btn btn-default"
680 href="/myfiles/download-file/{{task.jobdirname}}/{{MODELi}}">Download</a>
684 {% if task.use_nmr %}
685 <li class="list-group-item task-item">
686 <div class="col-md-4">
687 <button onclick="plusDivs(-1)">❮</button>
689 <div class="col-md-6">
692 <div class="col-md-2">
693 <button onclick="plusDivs(1)">❯</button>
696 <li class="list-group-item task-item">
697 <div class="col-md-10">
699 {% with temper=task.remd_cluter_temp|add:"0" %}
700 NMR contacts of best NMR fitted family representative model
701 (clustered in {{temper}}K). Model number {{iii}}:
703 src="/myfiles/download-file/{{task.jobdirname}}/file_wham_T{{temper}}K_000{{iii}}.png"
704 width="500"></center> </div>
723 <script src="/static/jquery.min.js"></script>
724 <script src="https://unpkg.com/ngl"></script>
727 $('.majorpointslegend').click(function(){
728 $(this.parentNode).find('.hiders').toggle();
729 if($(this.parentNode).find('.majorpointslegend').text()=='Show input parameters'){
730 $(this.parentNode).find('.majorpointslegend').text('Hide input parameters');
732 $(this.parentNode).find('.majorpointslegend').text('Show input parameters');
737 {% if task.type == "remd" or task.type == "dock" %}
739 function display_model(num){
741 numstr=num.toString();
742 {% if task.md_pdbref %}
743 var stage = new NGL.Stage("viewport_M"+numstr);
744 stage.setParameters( { backgroundColor: "white",fogFar: 60, fogNear: 45 } );
746 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/plik1.pdb" ,{defaultRepresentation: false}) .then( function( o ){
747 o.addRepresentation( "cartoon",{ name:"ref", color:"grey"
749 o.addRepresentation( "line", {name:"refsc",visible: false,
750 sele:"not hydrogen and sidechainAttached"
755 "/myfiles/download-file/{{task.jobdirname}}/MODEL"+numstr+".pdb",{defaultRepresentation: false}) .then( function( o ){
757 o.addRepresentation( "licorice",{ name: "unres", color:
758 "residueindex",colorScale:["blue","cyan", "green",
759 "yellow","orange", "red"], sele:".CA"
761 o.addRepresentation( "licorice",{ name: "unressc", visible: false, color:
762 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
765 o.addRepresentation( "cartoon",{ name: "unres", color:
766 "residueindex",colorScale:["blue","cyan", "green",
767 "yellow","orange", "red"]
769 o.addRepresentation( "line",{ name: "unressc", visible: false, color:
770 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
771 , sele:"not hydrogen and sidechainAttached" })
775 ]).then(function (ol1) {
776 ol1[ 1 ].superpose(ol1[ 0 ], false, ".CA")
781 var toggleAll = document.getElementById( "toggleRefM"+numstr );
782 toggleAll.addEventListener( "click", function(){
784 stage.getRepresentationsByName(
785 "ref" ).list.forEach( function( repre ){
786 repre.setVisibility( !repre.visible );
789 stage.getRepresentationsByName(
790 "refsc" ).list.forEach( function( repre ){
791 repre.setVisibility( !repre.visible );
796 var toggleSidechains =document.getElementById("toggleSidechainsM"+numstr );
797 toggleSidechains.addEventListener( "click", function(){
800 stage.getRepresentationsByName(
801 "refsc" ).list.forEach( function( repre ){
802 repre.setVisibility( !repre.visible );
805 stage.getRepresentationsByName("unressc").list.forEach( function( repre ){
806 repre.setVisibility( !repre.visible );
811 var stage = new NGL.Stage("viewport_M"+numstr);
812 stage.setParameters( { backgroundColor: "white",fogFar: 60, fogNear: 45 } );
813 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/MODEL"+numstr+".pdb",{defaultRepresentation: false}) .then( function( o ){
815 o.addRepresentation( "licorice",{ name: "unres", color:
816 "residueindex",colorScale:["blue","cyan", "green",
817 "yellow","orange", "red"],sele:".CA"
819 o.addRepresentation( "licorice",{ name: "unressc", visible: false, color:
820 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
823 o.addRepresentation( "cartoon",{ name: "unres", color:
824 "residueindex",colorScale:["blue","cyan", "green",
825 "yellow","orange", "red"]
827 o.addRepresentation( "line",{ name: "unressc", visible: false, color:
828 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
829 , sele:"not hydrogen and sidechainAttached" });
833 var toggleSidechains =document.getElementById("toggleSidechainsM"+numstr );
834 toggleSidechains.addEventListener( "click", function(){
835 stage.getRepresentationsByName("unressc").list.forEach( function( repre ){
836 repre.setVisibility( !repre.visible );
845 window.addEventListener("resize",
847 stage.handleResize();
855 var y = document.getElementsByClassName("model");
858 for (ii = 0; ii < y.length; ii++) {
862 showDivs(slideIndex);
864 function plusDivs(n) {
865 showDivs(slideIndex += n);
868 function showDivs(n) {
870 var x = document.getElementsByClassName("model");
871 if (n > x.length) {slideIndex = 1}
872 if (n < 1) {slideIndex = x.length}
873 for (i = 0; i < x.length; i++) {
874 x[i].style.display = "none";
876 x[slideIndex-1].style.display = "block";
878 if (lista[slideIndex-1] == 0) {
879 display_model(slideIndex)
882 if (lista[slideIndex-1] == 0) {lista[slideIndex-1]=1}
887 {% if not task.done %}
891 data:{csrfmiddlewaretoken: '{{ csrf_token }}'},
892 url: "/refresh_done/",
894 success: function(data) {
895 document.location.reload();
897 complete: function() {
898 // Schedule the next request when the current one's complete
899 setTimeout(worker, 30000);
903 $(document).ready(function() {
904 // run the first time; all subsequent calls will take care of themselves
905 setTimeout(worker, 30000);
910 {% if task.type == "min" %}
912 window.addEventListener("resize",
914 stage.handleResize();
917 var stage_unres = new NGL.Stage("viewport_unres");
918 stage_unres.setParameters( { backgroundColor: "white" } );
920 [color_Red, color_Green, color_Blue, ellipsoid_width, ellipsoid_length ]
922 var resdb = { 'CYS': [1.000, 1.000, 0.000, 1.33741, 2.96868],
923 'MET': [0.000, 1.000, 0.000, 1.36694, 3.08863],
924 'PHE': [0.000, 0.392, 0.000, 1.48323, 3.04238],
925 'ILE': [0.000, 1.000, 0.000, 1.44098, 3.17389],
926 'LEU': [0.000, 1.000, 0.000, 1.51054, 2.52078],
927 'VAL': [0.000, 1.000, 0.000, 1.42072, 2.68924],
928 'TRP': [0.000, 0.392, 0.000, 1.23867, 3.47403],
929 'TYR': [0.596, 0.984, 0.596, 1.23060, 3.35434],
930 'ALA': [0.000, 1.000, 0.000, 1.23266, 1.72686],
931 'GLY': [1.000, 1.000, 1.000, 1.24626, 1.11383],
932 'THR': [1.000, 0.000, 1.000, 1.28674, 2.59210],
933 'SER': [1.000, 0.000, 1.000, 1.22820, 1.68800],
934 'GLN': [1.000, 0.000, 1.000, 1.24239, 2.22201],
935 'ASN': [1.000, 0.000, 1.000, 1.24447, 2.24946],
936 'GLU': [1.000, 0.000, 0.000, 1.25448, 2.05551],
937 'ASP': [1.000, 0.000, 0.000, 1.25417, 1.77556],
938 'HIS': [1.000, 0.000, 1.000, 1.21103, 3.02627],
939 'ARG': [0.000, 0.000, 1.000, 1.13573, 3.25143],
940 'LYS': [0.000, 0.000, 1.000, 1.22604, 4.50054],
941 'PRO': [0.000, 1.000, 1.000, 1.35131, 2.20525]
943 stage_unres.loadFile("/myfiles/download-file/{{task.jobdirname}}/file_GB000.pdb", {defaultRepresentation: false}).then
945 var shape = new NGL.Shape("shape")
947 o.addRepresentation("licorice");
948 o.structure.eachAtom(function(atom){
949 if (atom.atomname == "CA" && atom.chainname == chain) {
950 px=CAx+(atom.x-CAx)/2;
951 py=CAy+(atom.y-CAy)/2;
952 pz=CAz+(atom.z-CAz)/2;
953 shape.addSphere([px,py,pz],[0.643, 0.933, 0.960],0.6,"p");
955 if (atom.atomname == "CA") {
956 chain= atom.chainname
961 if (atom.atomname == "CB") {
965 norm=Math.sqrt(mx*mx+my*my+mz*mz);
967 var longaxis=resdb[res][4]
968 var shortaxis=resdb[res][3]
969 mx = mx /norm*longaxis;
970 my = my /norm*longaxis;
971 mz = mz /norm*longaxis;
973 shape.addEllipsoid([ atom.x, atom.y, atom.z ],
974 [ resdb[res][0], resdb[res][1], resdb[res][2]],
975 shortaxis, [ mx, my, mz ], [ 0, shortaxis, 0 ],resn);
978 var shapeComp = stage_unres.addComponentFromObject(shape)
979 shapeComp.addRepresentation("buffer")
985 var stage = new NGL.Stage("viewport_min");
986 stage.setParameters( { backgroundColor: "white" } );
988 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/file_GB000.pdb" ,{defaultRepresentation: false}) .then( function( o ){
989 o.addRepresentation( "backbone",{ color:
990 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
992 o.addRepresentation( "licorice",{ color:
993 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange","red"]
998 stage.loadFile("/myfiles/download-file/{{task.jobdirname}}/plik.pdb",{defaultRepresentation: false}) .then( function( o ){
999 o.addRepresentation( "backbone",{ name: "allatom", color:
1000 "residueindex",colorScale:["blue","cyan", "green","yellow","orange", "red"]
1002 o.addRepresentation( "line",{ name: "allatomsc", color:
1003 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
1004 ,sele:"not hydrogen and sidechainAttached"
1008 ]).then(function (ol) {
1009 ol[ 0 ].superpose(ol[ 1 ], false, ".CA")
1015 var toggleAll = document.getElementById( "toggleAllatom" );
1016 toggleAll.addEventListener( "click", function(){
1018 stage.getRepresentationsByName(
1019 "allatom" ).list.forEach( function( repre ){
1020 repre.setVisibility( !repre.visible );
1023 stage.getRepresentationsByName(
1024 "allatomsc" ).list.forEach( function( repre ){
1025 repre.setVisibility( !repre.visible );
1029 var toggleSidechains = document.getElementById("toggleSidechains2" );
1030 toggleSidechains.addEventListener( "click", function(){
1033 stage.getRepresentationsByName(
1034 "allatomsc" ).list.forEach( function( repre ){
1035 repre.setVisibility( !repre.visible );
1039 stage.getRepresentationsByName("licorice").list.forEach( function( repre ){
1040 repre.setVisibility( !repre.visible );
1047 {% if task.type == "md" and task.md_start == "pdbstart" %}
1049 window.addEventListener("resize",
1051 stage.handleResize();
1054 var stage = new NGL.Stage("viewport_putty");
1055 stage.setParameters( { backgroundColor: "white" } );
1057 var tooltip = document.createElement("div")
1058 Object.assign(tooltip.style, {
1062 pointerEvents: "none",
1063 backgroundColor: "rgba( 0, 0, 0, 0.6 )",
1066 fontFamily: "sans-serif"
1068 document.body.appendChild(tooltip)
1070 stage.loadFile("/myfiles/download-file/{{task.jobdirname}}/plik_bf.pdb", {defaultRepresentation: false}).then
1072 o.addRepresentation("tube",{ color: "bfactor" , scale: 0.25,
1075 colorScale:["blue","cyan", "green", "yellow","orange", "red"] });
1076 o.addRepresentation("licorice",{sele:"sidechainAttached and CYS and not hydrogen"});
1080 // remove default hoverPick mouse action
1081 stage.mouseControls.remove("hoverPick")
1083 stage.signals.hovered.add(function (pickingProxy) {
1084 if (pickingProxy && (pickingProxy.atom || pickingProxy.bond)) {
1085 var atom = pickingProxy.atom || pickingProxy.closestBondAtom
1086 var mp = pickingProxy.mouse.position
1087 var bf= atom.bfactor.toFixed(2)
1088 tooltip.innerText = atom.qualifiedName()+" Fluctuation="+ bf
1089 tooltip.style.bottom = window.innerHeight - mp.y + 3 + "px"
1090 tooltip.style.left = mp.x + 3 + "px"
1091 tooltip.style.display = "block"
1093 tooltip.style.display = "none"
1099 {% if task.type == "md" and task.md_mdpdb %}
1101 window.addEventListener("resize",
1103 stage.handleResize();
1106 var stage = new NGL.Stage("viewport_traj");
1107 stage.setParameters( { backgroundColor: "white" } );
1108 stage.setParameters( { cameraType: "orthographic" } );
1111 stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/file_MD000.pdb", {
1112 asTrajectory: true } ) .then( function( o ){
1113 o.setName ("unres_md");
1114 o.addRepresentation( "backbone",{ color:
1115 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
1117 o.addRepresentation( "licorice",{ color:
1118 "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
1120 o.setPosition([0, 0, 100]);
1125 var toggleSidechains = document.getElementById( "toggleSidechains1" );
1126 toggleSidechains.addEventListener( "click", function(){
1127 stage.getRepresentationsByName( "licorice" ).list.forEach( function( repre ){
1128 repre.setVisibility( !repre.visible );
1133 function numberWithCommas(x) {
1134 return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
1136 var toggleRunMDs = document.getElementById( "toggleRunMDs" );
1137 var isRunning = false;
1138 toggleRunMDs.addEventListener( "click", function(){
1139 var trajComp = stage.getComponentsByName("unres_md").list[0].trajList[0];
1140 var player = new NGL.TrajectoryPlayer(trajComp.trajectory, {timeout: 10, mode: "once"});
1145 trajComp.signals.frameChanged.add(function(){
1146 var fnum=trajComp.trajectory.currentFrame+1;
1147 clipRange.value = fnum;
1148 clipRange_val.innerHTML = numberWithCommas(parseInt(clipRange.value*1));
1157 var clipRange = document.getElementById( "clipRange" );
1158 var clipRange_val = document.getElementById( "clipRange_val" );
1159 clipRange.oninput = function( e ){
1160 var trajComp = stage.getComponentsByName("unres_md").list[0].trajList[0];
1161 trajComp.setFrame(e.target.value-1)
1162 clipRange_val.innerHTML = numberWithCommas(parseInt(e.target.value*1));