c6bfd20e480a4e99acc723823e099ca68b2b4162
[django_unres.git] / django_simple / todo / templates / details.html
1 {% extends "base.html" %}
2
3 {% load index %}
4 {% load i18n lazysignup_tags %}
5 {% block content %}
6
7 {% if user|is_lazy_user %}
8 <ul class="list-group">
9
10 <li class="list-group-item new-task-item task-item">
11
12 <div class="col-md-2 form-group">
13 <form action="/refresh_done/" method="post">
14 {% csrf_token %}
15 <input type="submit" class="btn" value="Refresh" name="refreshbtn">
16 </form>
17 </div>
18
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  %}
24   postprocessing
25   {% else %}
26   running
27   {% endif %}
28  {% else %}
29   waiting in the queue to start
30  {% endif %}
31 {% endif %}
32 </h5>
33 </div>
34 </li>
35 </ul>
36 {% endif %}
37
38 <h3> Task <b>{{ task.name }}</b></h3>
39 Created {{ task.created_date  }}
40         <ul class="list-group">
41
42                         <li class="list-group-item task-item">
43                                 <div class="col-md-4"> done ?</div>
44                                 <div class="col-md-8">
45                                         {% if task.done %}
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/"
49                                                 method="get"
50                                                 style="text-align;float:right;">
51                                                 {% csrf_token %}
52                                                  <input type="submit" 
53                                                  class="btn btn-default" 
54                                                  value="Restart"
55                                                  name="restartbtn">
56                                                  </button>
57                                               </form>
58                                             {% endif %}  
59                                         {% else %}
60                                           {% if task.running > 0  %}
61                                                 <span class="fa fa-spinner
62                                                 fa-spin"></span>
63                                                 {{ task.running }}%
64                                               {% if task.running == 100  %}
65                                               postprocessing
66                                               {% endif %}
67                                           {% else %}
68                                                 <span class="fa fa-square-o"></span>
69                                           {% endif %}
70                                         {% endif %}
71
72                                 </div>
73                         </li>   
74 <div>
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" >
79
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>
83                         </li>           
84
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>
88                         </li>           
89
90          
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>
94                         </li>           
95
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>
99                         </li>           
100
101                         <li class="list-group-item task-item">
102                             <div class="col-md-4"> secondary structure
103                             restraints </div>
104                             <div class="col-md-8 monospace">{{ task.md_2d}}</div>
105                         </li>           
106
107
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>
111                         </li>           
112
113                         
114         {% if task.type == "min" %}
115
116
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>
120                         </li>           
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>
124                         </li>           
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>
128                         </li>           
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>
132                         </li>           
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>
136                         </li>           
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>
140                         </li>           
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>
144                         </li>           
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>
148                         </li>           
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>
152                         </li>           
153                         
154         {% endif %}
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>
159                         </li>           
160                         
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>
164                         </li>           
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>
168                         </li>           
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>
172                         </li>           
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>
176                         </li>           
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>
180                         </li>           
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>
184                         </li>           
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>
188                         </li>           
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>
192                         </li>           
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>
196                         </li>           
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>
200                         </li>           
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>
204                         </li>           
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>
208                         </li>           
209                         
210                         {% if task.md_lang == "berendsen" %}
211                         
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>
215                         </li>           
216                         
217                         {% else %}
218                         
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>
222                         </li>   
223                         
224                         {% endif %}
225                                 
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>
229                         </li>           
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>
233                         </li>           
234                         
235                         
236         {% endif %}
237
238         {% if task.type == "remd" or task.type == "dock" %}
239
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>
243                         </li>           
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>
247                         </li>           
248                         
249                         <li class="list-group-item task-item">
250                             <div class="col-md-6"> input pdb </div>
251                             <div class="col-md-6">{{ task.myfile1 }}</div>
252                         </li>           
253                         <li class="list-group-item task-item">
254                             <div class="col-md-6"> pdb code</div>
255                             <div class="col-md-6">{{ task.pdbcode }}</div>
256                         </li>           
257                         {% if task.type == "dock" %}
258                         <li class="list-group-item task-item">
259                             <div class="col-md-6"> input pdb2 </div>
260                             <div class="col-md-6">{{ task.myfile2 }}</div>
261                         </li>           
262                         <li class="list-group-item task-item">
263                             <div class="col-md-6"> pdb code2</div>
264                             <div class="col-md-6">{{ task.pdbcode2 }}</div>
265                         </li>           
266                         <li class="list-group-item task-item">
267                             <div class="col-md-6"> dock_peptide</div>
268                             <div class="col-md-6">{{ task.dock_peptide }}</div>
269                         </li>           
270                         
271                         {% endif %}
272                         <li class="list-group-item task-item">
273                             <div class="col-md-6"> seed </div>
274                             <div class="col-md-6">{{ task.md_seed}}</div>
275                         </li>           
276                         <li class="list-group-item task-item">
277                             <div class="col-md-6"> pdbref </div>
278                             <div class="col-md-6">{{ task.md_pdbref}}</div>
279                         </li>           
280                         {% if task.md_start == "pdbstart" %}
281                         <li class="list-group-item task-item">
282                             <div class="col-md-6"> preminim maxfun </div>
283                             <div class="col-md-6">{{ task.min_maxfun }}</div>
284                         </li>           
285                         {% endif %}
286                         <li class="list-group-item task-item">
287                             <div class="col-md-6"> respa </div>
288                             <div class="col-md-6">{{ task.md_respa}}</div>
289                         </li>           
290                         <li class="list-group-item task-item">
291                             <div class="col-md-6"> nstep </div>
292                             <div class="col-md-6">{{ task.md_nstep}}</div>
293                         </li>           
294                         <li class="list-group-item task-item">
295                             <div class="col-md-6"> total steps (with restarts) </div>
296                             <div class="col-md-6">{{ task.md_total_steps}}</div>
297                         </li>           
298                         <li class="list-group-item task-item">
299                             <div class="col-md-6"> ntwe </div>
300                             <div class="col-md-6">{{ task.md_ntwe}}</div>
301                         </li>           
302                         <li class="list-group-item task-item">
303                             <div class="col-md-6"> nstex </div>
304                             <div class="col-md-6">{{ task.remd_nstex}}</div>
305                         </li>           
306                         <li class="list-group-item task-item">
307                             <div class="col-md-6"> ntwx </div>
308                             <div class="col-md-6">{{ task.md_ntwx}}</div>
309                         </li>                                   
310                         <li class="list-group-item task-item">
311                             <div class="col-md-6"> dt </div>
312                             <div class="col-md-6">{{ task.md_dt}}</div>
313                         </li>           
314                         <li class="list-group-item task-item">
315                             <div class="col-md-6"> thermostat </div>
316                             <div class="col-md-6">{{ task.md_lang}}</div>
317                         </li>           
318                         
319                         {% if task.md_lang == "berendsen" %}
320                         
321                         <li class="list-group-item task-item">
322                             <div class="col-md-6"> tau </div>
323                             <div class="col-md-6">{{ task.md_tau}}</div>
324                         </li>           
325                         
326                         {% else %}
327                         
328                         <li class="list-group-item task-item">
329                             <div class="col-md-6"> scal_fric </div>
330                             <div class="col-md-6">{{ task.md_scal_fric}}</div>
331                         </li>   
332                         
333                         {% endif %}
334
335                         <li class="list-group-item task-item">
336                             <div class="col-md-6"> RESPA </div>
337                             <div class="col-md-6">{{ task.md_respa}}</div>
338                         </li>           
339                                 
340                         <li class="list-group-item task-item">
341                             <div class="col-md-6"> temperatures </div>
342                             <div class="col-md-6">{{ task.remd_multi_t}}</div>
343                         </li>           
344                         <li class="list-group-item task-item">
345                             <div class="col-md-6"> multiplex </div>
346                             <div class="col-md-6">{{ task.remd_multi_m}}</div>
347                         </li>           
348                         <li class="list-group-item task-item">
349                             <div class="col-md-6"> temperature for clustering</div>
350                             <div class="col-md-6">{{ task.remd_cluter_temp}}</div>
351                         </li>           
352                         <li class="list-group-item task-item">
353                             <div class="col-md-6"> number of clusters</div>
354                             <div class="col-md-6">{{ task.remd_cluster_n}}</div>
355                         </li>           
356                         {% if task.saxs_data != "" %}                   
357                         <li class="list-group-item task-item">
358                             <div class="col-md-6"> wsaxs </div>
359                             <div class="col-md-6">{{ task.wsaxs }}</div>
360                         </li>           
361                         <li class="list-group-item task-item">
362                             <div class="col-md-6"> scal_rad (saxs) </div>
363                             <div class="col-md-6">{{ task.scal_rad }}</div>
364                         </li>           
365                         <li class="list-group-item task-item">
366                             <div class="col-md-6"> saxs distribution </div>
367                             <div class="col-md-6"><pre> {{ task.saxs_data }}</pre></div>
368                         </li>           
369                         {% endif %}
370
371         {% endif %}
372
373                         <li class="list-group-item task-item">
374                             <div class="col-md-6"> Box X Y Z</div>
375                             <div class="col-md-2">{{ task.boxx}}</div>
376                             <div class="col-md-2">{{ task.boxy}}</div>                      
377                             <div class="col-md-2">{{ task.boxz}}</div>                      
378                         </li>           
379
380 </div>
381 </div>
382         <p>
383         <h3> Results </h3>
384                         <li class="list-group-item task-item">
385                             <div class="col-md-4"> Directory </div>
386                             <div class="col-md-8">
387                             <a href="/myfiles/list/{{task.jobdirname}}/">
388                             {{ task.jobdirname }}
389                             </a>
390                             {% if task.done %}
391                             &nbsp;
392                             <a class="btn btn-default"
393                             href="/{{task.id}}/all.zip">
394                             Download as zip</a>
395                             {% endif %}
396                             </div>
397                         </li>           
398
399
400         {% if task.done %}
401                         
402                         {% if task.type == "min" %}
403                         
404                         <li class="list-group-item task-item">
405                             <div class="col-md-2"> Etot </div>
406                             <div class="col-md-10">{{ task.etot }}</div>
407                         </li>           
408 <!--                    
409                         <li class="list-group-item task-item">
410                           <div class="col-md-2"> UNRES model </div>
411                           <div class="col-md-10"> 
412                           <a
413                            href="/myfiles/download-file/{{task.jobdirname}}/unres.pse">
414                           <img 
415                           src="/myfiles/download-file/{{task.jobdirname}}/unres.png"
416                           width="500"></a> </div>
417                         </li>
418 -->
419                         <li class="list-group-item task-item">
420                           <div class="col-md-2"> UNRES model NGL viewer</div>
421                           <div class="col-md-10" id="viewport_unres"
422                           style="width:500px;height:500px;"> 
423                           </div>
424                         </li>
425
426
427 <!--
428                         <li class="list-group-item task-item">
429                           <div class="col-md-2"> Structure overlap </div>
430                           <div class="col-md-10"> <img 
431                           src="/myfiles/download-file/{{task.jobdirname}}/unres_overlap.png"
432                           width="500"> </div>
433                         </li>
434 -->
435                         <li class="list-group-item task-item">
436                           <div class="col-md-2"> Structure overlap NGL viewer</div>
437                           <div class="col-md-10" id="viewport_min"
438                           style="width:500px;height:500px;"> 
439                           </div>
440                         </li>
441                         <li class="list-group-item task-item">
442                <div class="col-md-12">
443                <button id="toggleAllatom">Input structure on/off</button>
444                <button id="toggleSidechains2">Side-chains on/off</button>
445                </div>
446                         </li>
447                         {% endif %}
448
449                         <li class="list-group-item task-item">
450                             <div class="col-md-2"> Results </div>
451                             <div class="col-md-10">{{ task.results_text|linebreaks }}</div>
452                         </li>           
453                         
454                         {% if task.type == "md" %}
455
456                         <li class="list-group-item task-item">
457                           <div class="col-md-2"> Temperature histogram </div>
458                           <div class="col-md-10"> <img 
459                           src="/myfiles/download-file/{{task.jobdirname}}/temp_hist.png"
460                           width="500"> </div>
461                         </li>
462
463                         <li class="list-group-item task-item">
464                           <div class="col-md-2"> Potential energy </div>
465                           <div class="col-md-10"> <img 
466                           src="/myfiles/download-file/{{task.jobdirname}}/md_ene.png"
467                           width="500"> </div>
468                         </li>
469
470                             <li class="list-group-item task-item">
471                             <div class="col-md-2"> Movie </div>
472                             <div class="col-md-10"> 
473
474                             <video width="500" height="400"
475                             preload="auto" controls="controls">
476                             <source
477                             src="/myfiles/download-file/{{task.jobdirname}}/md.ogv"
478                             type="video/ogg; codecs=theora"> </source>
479                             </video>
480                           
481                             </div>
482                             </li>
483
484 {% if task.md_mdpdb %}
485                         <li class="list-group-item task-item">
486                           <div class="col-md-2"> Trajectory NGL viewer</div>
487                           <div class="col-md-10" id="viewport_traj"
488                           style="width:500px;height:500px;"> 
489                           </div>
490                         </li>
491                         <li class="list-group-item task-item">
492                <div class="col-md-6">
493 <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
494 </div>
495 <div class="col-md-6">
496 <button id="toggleRunMDs">run/pause MD</button>  
497 <button id="toggleSidechains1">side-chains on/off</button>                        
498 </div>
499                         </li>
500
501 {% endif %}
502                             
503                         <li class="list-group-item task-item">
504                           <div class="col-md-2"> Radius of gyration based
505                           on C<sup>α</sup> coordinates </div>
506                           <div class="col-md-10"> <img 
507                           src="/myfiles/download-file/{{task.jobdirname}}/md_gyr.png"
508                           width="500"> </div>
509                         </li>
510                             
511
512                 
513                            {% if task.md_pdbref %}
514                         <li class="list-group-item task-item">
515                           <div class="col-md-2"> C<sup>&alpha;</sup> RMSD </div>
516                           <div class="col-md-10"> <img 
517                           src="/myfiles/download-file/{{task.jobdirname}}/md_rms.png"
518                           width="500"> </div>
519                         </li>
520
521                         <li class="list-group-item task-item">
522                           <div class="col-md-2"> fraction of native
523                           side-chain concacts </div>
524                           <div class="col-md-10"> <img 
525                           src="/myfiles/download-file/{{task.jobdirname}}/md_fracn.png"
526                           width="500"> </div>
527                         </li>
528                         
529                            {% endif %}
530
531                            {% if task.md_start == "pdbstart" %}
532                         <li class="list-group-item task-item">
533                           <div class="col-md-2"> fluctuations </div>
534                           <div class="col-md-10"> <img 
535                           src="/myfiles/download-file/{{task.jobdirname}}/fluct_plot.png"
536                           width="500"> </div>
537                         </li>
538 <!--
539                         <li class="list-group-item task-item">
540                           <div class="col-md-2"> fluctuations putty on
541                           starting structure</div>
542                           <div class="col-md-10"> 
543                           <a
544                           href="/myfiles/download-file/{{task.jobdirname}}/fluct.pse">
545                           <img 
546                           src="/myfiles/download-file/{{task.jobdirname}}/fluct.png"
547                           width="500"></a> </div>
548                         </li>
549 -->
550                         <li class="list-group-item task-item">
551                           <div class="col-md-2"> fluctuations putty on
552                           starting structure NGL viewer</div>
553                           <div class="col-md-10" id="viewport_putty"
554                           style="width:500px;height:500px;"> 
555                           </div>
556                         </li>
557
558                         
559                            {% endif %}
560
561
562
563                         {% endif %}
564                         
565                         {% if task.type == "remd" or task.type == "dock" %}
566                         
567                         <li class="list-group-item task-item">
568                           <div class="col-md-2"> Energy histogram </div>
569                           <div class="col-md-10"> <img 
570                           src="/myfiles/download-file/{{task.jobdirname}}/remd_ene_hist.png"
571                           width="500"> </div>
572                         </li>
573
574                         <li class="list-group-item task-item">
575                           <div class="col-md-2"> Energy vs. temperature </div>
576                           <div class="col-md-10"> <img 
577                           src="/myfiles/download-file/{{task.jobdirname}}/remd_Tene.png"
578                           width="500"> </div>
579                         </li>
580                         
581                         <li class="list-group-item task-item">
582                           <div class="col-md-2"> Cv vs. temperature </div>
583                           <div class="col-md-10"> <img 
584                           src="/myfiles/download-file/{{task.jobdirname}}/remd_cv.png"
585                           width="500"> </div>
586                         </li>
587                         
588                            {% if task.md_pdbref %}
589
590                         <li class="list-group-item task-item">
591                           <div class="col-md-2"> Average C<sup>&alpha;</sup> RMSD vs. temperature </div>
592                           <div class="col-md-10"> <img 
593                           src="/myfiles/download-file/{{task.jobdirname}}/remd_rmsd.png"
594                           width="500"> </div>
595                         </li>
596
597                         <li class="list-group-item task-item">
598                           <div class="col-md-2"> potential energy vs.
599                           C<sup>&alpha;</sup> RMSD</div>
600                           <div class="col-md-10"> <img 
601                           src="/myfiles/download-file/{{task.jobdirname}}/remd_ene_rms.png"
602                           width="500"> </div>
603                         </li>
604
605                         <li class="list-group-item task-item">
606                           <div class="col-md-2"> C<sup>&alpha;</sup> RMSD vs. step*replica
607                           colored by bath temperature</div>
608                           <div class="col-md-10"> <img 
609                           src="/myfiles/download-file/{{task.jobdirname}}/remd_step_rms.png"
610                           width="500"> </div>
611                         </li>
612
613                         
614                            {% endif %} 
615                           
616                         <li class="list-group-item task-item">
617                           <div class="col-md-2"> exchanges (walk in T) </div>
618                           <div class="col-md-10"> <img 
619                           src="/myfiles/download-file/{{task.jobdirname}}/remd_ex.png"
620                           width="500"> </div>
621                         </li>
622                         
623                            {% if task.saxs_data != "" %}
624                         <li class="list-group-item task-item">
625                           <div class="col-md-2"> P(r) of input SAXS data and
626                           calculated for 5 models and the input pdb</div>
627                           <div class="col-md-10"> <img 
628                           src="/myfiles/download-file/{{task.jobdirname}}/saxs.png"
629                           width="500"> </div>
630                         </li>
631                            {% endif %}
632                         
633         <li class="list-group-item task-item">
634         <div class="col-md-4">
635         <button onclick="plusDivs(-1)">&#10094;</button> 
636         </div>
637         <div class="col-md-6">
638         select model
639         </div>
640         <div class="col-md-2">
641         <button onclick="plusDivs(1)">&#10095;</button>
642         </div>
643         </li>           
644         
645                 {% for iii in range %}
646
647                 {% with istr=forloop.counter|stringformat:"s" %}
648                 {% with MODELi="MODEL"|add:istr|add:".pdb" %}
649                 {% with viewporti="viewport_M"|add:istr %}
650                 {% with toggleRefi="toggleRefM"|add:istr %}
651                 {% with toggleSidechainsi="toggleSidechainsM"|add:istr %}
652
653                         <div class="model">
654                         <li class="list-group-item task-item">
655                           <div class="col-md-2"> model {{ iii }}
656                           {% if not task.damino %}
657                           after conversion to allatom 
658                           {% endif %}
659                           {{ remd_models|index:iii|linebreaks }}
660                           NGL viewer</div>
661                           <div class="col-md-10" id={{viewporti}}
662                           style="width:500px;height:500px;"> 
663                           </div>
664                         </li>
665                         <li class="list-group-item task-item">
666                <div class="col-md-12">
667                {% if task.md_pdbref %}
668                <button id={{toggleRefi}}>Reference structure on/off</button>
669                {% endif %}
670                <button id={{toggleSidechainsi}}>Side-chains on/off</button>
671                <a class="btn btn-default"
672                href="/myfiles/download-file/{{task.jobdirname}}/{{MODELi}}">Download</a>               
673                </div>
674                         </li>
675                         </div>
676                 {% endwith %}
677                 {% endwith %}   
678                 {% endwith %}
679                 {% endwith %}
680                 {% endwith %}
681                 {% endfor %}   
682
683                         {% endif %}
684
685         {% endif %}             
686
687         </ul>
688         
689 <script src="/static/jquery.min.js"></script>
690 <script src="https://unpkg.com/ngl"></script>
691
692 <script>
693 $('.majorpointslegend').click(function(){
694     $(this.parentNode).find('.hiders').toggle();
695     if($(this.parentNode).find('.majorpointslegend').text()=='Show input parameters'){
696         $(this.parentNode).find('.majorpointslegend').text('Hide input parameters');
697     }else{
698         $(this.parentNode).find('.majorpointslegend').text('Show input parameters');
699     }    
700 });
701 </script>
702
703 {% if task.type == "remd" or task.type == "dock" %}
704 <script>
705 function display_model(num){
706
707  numstr=num.toString();
708 {% if task.md_pdbref %}
709   var stage = new NGL.Stage("viewport_M"+numstr);
710   stage.setParameters( { backgroundColor: "white",fogFar: 60, fogNear: 45 } );
711   Promise.all([
712       stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/plik1.pdb" ,{defaultRepresentation: false}) .then( function( o ){
713         o.addRepresentation( "cartoon",{ name:"ref", color:"grey"
714         })
715         o.addRepresentation( "line", {name:"refsc",visible: false,
716          sele:"not hydrogen and sidechainAttached"
717         })    
718         return o
719       }),
720       stage.loadFile(
721       "/myfiles/download-file/{{task.jobdirname}}/MODEL"+numstr+".pdb",{defaultRepresentation: false}) .then( function( o ){
722  {% if task.damino %}
723         o.addRepresentation( "licorice",{ name: "unres", color:
724                "residueindex",colorScale:["blue","cyan", "green",
725                "yellow","orange", "red"], sele:".CA"
726                        })
727         o.addRepresentation( "licorice",{ name: "unressc", visible: false, color:
728        "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
729         , sele:"*" })    
730  {% else %}
731         o.addRepresentation( "cartoon",{ name: "unres", color:
732                "residueindex",colorScale:["blue","cyan", "green",
733                "yellow","orange", "red"]
734                        })
735         o.addRepresentation( "line",{ name: "unressc", visible: false, color:
736        "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
737         , sele:"not hydrogen and sidechainAttached" })    
738  {% endif %}
739         return o
740       })
741   ]).then(function (ol1) {
742    ol1[ 1 ].superpose(ol1[ 0 ], false, ".CA")
743    ol1[ 0 ].autoView()
744   })             
745             var ref=true;
746             var side=false;
747             var toggleAll = document.getElementById( "toggleRefM"+numstr );
748             toggleAll.addEventListener( "click", function(){
749                         ref=! ref;                                
750                         stage.getRepresentationsByName(
751                                 "ref" ).list.forEach( function( repre ){
752                                 repre.setVisibility( !repre.visible );
753                         } );
754                 if (side) {
755                         stage.getRepresentationsByName(
756                                 "refsc" ).list.forEach( function( repre ){
757                                 repre.setVisibility( !repre.visible );
758                         } );
759                 }
760
761             } );
762      var toggleSidechains =document.getElementById("toggleSidechainsM"+numstr );
763      toggleSidechains.addEventListener( "click", function(){
764              side=!side;
765              if (ref) {
766                  stage.getRepresentationsByName(
767                         "refsc" ).list.forEach( function( repre ){
768                         repre.setVisibility( !repre.visible );
769              } );
770       }
771       stage.getRepresentationsByName("unressc").list.forEach( function( repre ){
772                         repre.setVisibility( !repre.visible );
773         } );
774
775       } );
776 {% else %}
777   var stage = new NGL.Stage("viewport_M"+numstr);
778   stage.setParameters( { backgroundColor: "white",fogFar: 60, fogNear: 45 } );
779   stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/MODEL"+numstr+".pdb",{defaultRepresentation: false}) .then( function( o ){
780  {% if task.damino %}
781         o.addRepresentation( "licorice",{ name: "unres", color:
782                "residueindex",colorScale:["blue","cyan", "green",
783                "yellow","orange", "red"],sele:".CA"
784                        });
785         o.addRepresentation( "licorice",{ name: "unressc", visible: false, color:
786        "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
787         , sele:"*" });
788  {% else %}
789         o.addRepresentation( "cartoon",{ name: "unres", color:
790                "residueindex",colorScale:["blue","cyan", "green",
791                "yellow","orange", "red"]
792                        });
793         o.addRepresentation( "line",{ name: "unressc", visible: false, color:
794        "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
795         , sele:"not hydrogen and sidechainAttached" });
796  {% endif %}
797         o.autoView();
798   })             
799      var toggleSidechains =document.getElementById("toggleSidechainsM"+numstr );
800      toggleSidechains.addEventListener( "click", function(){
801       stage.getRepresentationsByName("unressc").list.forEach( function( repre ){
802                         repre.setVisibility( !repre.visible );
803         } );
804
805       } );
806
807 {% endif %}
808 }
809
810
811 window.addEventListener("resize", 
812 function (event) {
813       stage.handleResize();
814 },false);
815
816
817 display_model(1)
818
819
820 var slideIndex = 1;
821 var y = document.getElementsByClassName("model");
822 var lista=[];
823 var ii;
824 for (ii = 0; ii < y.length; ii++) {
825  lista.push(0)
826 }
827 lista[0]=1;
828 showDivs(slideIndex);
829
830 function plusDivs(n) {
831   showDivs(slideIndex += n);
832 }
833
834 function showDivs(n) {
835   var i;
836   var x = document.getElementsByClassName("model");
837   if (n > x.length) {slideIndex = 1}
838   if (n < 1) {slideIndex = x.length}
839   for (i = 0; i < x.length; i++) {
840      x[i].style.display = "none";
841   }
842   x[slideIndex-1].style.display = "block";
843   
844   if (lista[slideIndex-1] == 0) {
845     display_model(slideIndex)  
846   }
847     
848   if (lista[slideIndex-1] == 0) {lista[slideIndex-1]=1}
849 }
850 </script>
851 {% endif %}
852
853 {% if not task.done %}
854 <script>
855 function worker() {
856   $.ajax({
857     data:{csrfmiddlewaretoken: '{{ csrf_token }}'},
858     url: "/refresh_done/", 
859     type:"post",
860     success: function(data) {
861       document.location.reload();
862     },
863     complete: function() {
864       // Schedule the next request when the current one's complete
865       setTimeout(worker, 30000);
866     }
867   });
868 };
869 $(document).ready(function() {
870   // run the first time; all subsequent calls will take care of themselves
871   setTimeout(worker, 30000);
872 });
873 </script>
874 {% endif %}     
875
876 {% if task.type == "min" %}
877 <script>
878 window.addEventListener("resize",
879      function (event) {
880      stage.handleResize();
881      },false);
882                
883 var stage_unres = new NGL.Stage("viewport_unres");
884 stage_unres.setParameters( { backgroundColor: "white" } );
885 /**
886 [color_Red, color_Green, color_Blue, ellipsoid_width, ellipsoid_length ]
887 */
888 var resdb = {   'CYS': [1.000, 1.000, 0.000, 1.33741, 2.96868],
889                 'MET': [0.000, 1.000, 0.000, 1.36694, 3.08863],
890                 'PHE': [0.000, 0.392, 0.000, 1.48323, 3.04238],
891                 'ILE': [0.000, 1.000, 0.000, 1.44098, 3.17389],
892                 'LEU': [0.000, 1.000, 0.000, 1.51054, 2.52078],
893                 'VAL': [0.000, 1.000, 0.000, 1.42072, 2.68924],
894                 'TRP': [0.000, 0.392, 0.000, 1.23867, 3.47403],
895                 'TYR': [0.596, 0.984, 0.596, 1.23060, 3.35434],
896                 'ALA': [0.000, 1.000, 0.000, 1.23266, 1.72686],
897                 'GLY': [1.000, 1.000, 1.000, 1.24626, 1.11383],
898                 'THR': [1.000, 0.000, 1.000, 1.28674, 2.59210],
899                 'SER': [1.000, 0.000, 1.000, 1.22820, 1.68800],
900                 'GLN': [1.000, 0.000, 1.000, 1.24239, 2.22201],
901                 'ASN': [1.000, 0.000, 1.000, 1.24447, 2.24946],
902                 'GLU': [1.000, 0.000, 0.000, 1.25448, 2.05551],
903                 'ASP': [1.000, 0.000, 0.000, 1.25417, 1.77556],
904                 'HIS': [1.000, 0.000, 1.000, 1.21103, 3.02627],
905                 'ARG': [0.000, 0.000, 1.000, 1.13573, 3.25143],
906                 'LYS': [0.000, 0.000, 1.000, 1.22604, 4.50054],
907                 'PRO': [0.000, 1.000, 1.000, 1.35131, 2.20525]
908                         };
909 stage_unres.loadFile("/myfiles/download-file/{{task.jobdirname}}/file_GB000.pdb", {defaultRepresentation: false}).then
910        (function ( o ){
911        var shape = new NGL.Shape("shape")
912        var chain = ""
913        o.addRepresentation("licorice");
914        o.structure.eachAtom(function(atom){
915          if (atom.atomname == "CA" && atom.chainname == chain) {
916           px=CAx+(atom.x-CAx)/2;
917           py=CAy+(atom.y-CAy)/2;
918           pz=CAz+(atom.z-CAz)/2;
919           shape.addSphere([px,py,pz],[0.643, 0.933, 0.960],0.6,"p");
920          }
921          if (atom.atomname == "CA") {
922          chain= atom.chainname
923          CAx= atom.x;
924          CAy= atom.y
925          CAz= atom.z
926          }
927          if (atom.atomname == "CB") {
928           mx = (atom.x-CAx);
929           my = (atom.y-CAy);
930           mz = (atom.z-CAz);
931           norm=Math.sqrt(mx*mx+my*my+mz*mz);
932           res=atom.resname;
933           var longaxis=resdb[res][4]
934           var shortaxis=resdb[res][3]
935           mx = mx /norm*longaxis;
936           my = my /norm*longaxis;
937           mz = mz /norm*longaxis;
938           resn=res+atom.resno
939           shape.addEllipsoid([ atom.x, atom.y, atom.z ], 
940               [ resdb[res][0], resdb[res][1], resdb[res][2]], 
941               shortaxis, [ mx, my, mz ], [ 0, shortaxis, 0 ],resn);
942          }
943        });
944        var shapeComp = stage_unres.addComponentFromObject(shape)
945        shapeComp.addRepresentation("buffer")
946        o.autoView();
947 });
948
949
950
951 var stage = new NGL.Stage("viewport_min");
952 stage.setParameters( { backgroundColor: "white" } );
953 Promise.all([
954   stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/file_GB000.pdb" ,{defaultRepresentation: false}) .then( function( o ){
955      o.addRepresentation( "backbone",{ color:
956        "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
957      })
958      o.addRepresentation( "licorice",{ color:
959        "residueindex",colorScale:["blue","cyan", "green", "yellow","orange","red"]
960      })    
961      return o
962   }),
963       
964   stage.loadFile("/myfiles/download-file/{{task.jobdirname}}/plik.pdb",{defaultRepresentation: false}) .then( function( o ){
965      o.addRepresentation( "backbone",{ name: "allatom", color:
966        "residueindex",colorScale:["blue","cyan", "green","yellow","orange", "red"]
967      })
968      o.addRepresentation( "line",{ name: "allatomsc", color:
969        "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
970        ,sele:"not hydrogen and sidechainAttached" 
971      })    
972      return o
973   })
974 ]).then(function (ol) {
975    ol[ 0 ].superpose(ol[ 1 ], false, ".CA")
976    ol[ 0 ].autoView()
977 })             
978
979 var allatom=true;
980 var side=true;
981 var toggleAll = document.getElementById( "toggleAllatom" );
982 toggleAll.addEventListener( "click", function(){
983                         allatom=! allatom;                                
984                         stage.getRepresentationsByName(
985                                 "allatom" ).list.forEach( function( repre ){
986                                 repre.setVisibility( !repre.visible );
987                         } );
988             if (side) {
989                         stage.getRepresentationsByName(
990                                 "allatomsc" ).list.forEach( function( repre ){
991                                 repre.setVisibility( !repre.visible );
992                         } );
993             }
994 } );
995 var toggleSidechains = document.getElementById("toggleSidechains2" );
996 toggleSidechains.addEventListener( "click", function(){
997           side=!side;
998           if (allatom) {
999                 stage.getRepresentationsByName(
1000                         "allatomsc" ).list.forEach( function( repre ){
1001                                 repre.setVisibility( !repre.visible );
1002                 } );
1003                                                       
1004           }
1005           stage.getRepresentationsByName("licorice").list.forEach( function( repre ){
1006                 repre.setVisibility( !repre.visible );
1007           } );
1008
1009 } );
1010 </script>
1011 {% endif %}
1012
1013 {% if task.type == "md" and task.md_start == "pdbstart" %}
1014 <script>
1015 window.addEventListener("resize",
1016      function (event) {
1017      stage.handleResize();
1018      },false);
1019
1020 var stage = new NGL.Stage("viewport_putty");
1021 stage.setParameters( { backgroundColor: "white" } );
1022
1023 var tooltip = document.createElement("div")
1024 Object.assign(tooltip.style, {
1025   display: "none",
1026   position: "fixed",
1027   zIndex: 10,
1028   pointerEvents: "none",
1029   backgroundColor: "rgba( 0, 0, 0, 0.6 )",
1030   color: "lightgrey",
1031   padding: "8px",
1032   fontFamily: "sans-serif"
1033 })
1034 document.body.appendChild(tooltip)
1035
1036 stage.loadFile("/myfiles/download-file/{{task.jobdirname}}/plik_bf.pdb", {defaultRepresentation: false}).then 
1037        (function ( o ){
1038        o.addRepresentation("tube",{ color: "bfactor" , scale: 0.25,
1039        sele: "backbone",
1040        radius:"bfactor",
1041        colorScale:["blue","cyan", "green", "yellow","orange", "red"] });
1042        o.addRepresentation("licorice",{sele:"sidechainAttached and CYS and not hydrogen"});
1043        o.autoView();
1044 })
1045
1046 // remove default hoverPick mouse action
1047 stage.mouseControls.remove("hoverPick")
1048
1049 stage.signals.hovered.add(function (pickingProxy) {
1050   if (pickingProxy && (pickingProxy.atom || pickingProxy.bond)) {
1051     var atom = pickingProxy.atom || pickingProxy.closestBondAtom
1052     var mp = pickingProxy.mouse.position
1053     var bf= atom.bfactor.toFixed(2)
1054     tooltip.innerText = atom.qualifiedName()+" Fluctuation="+ bf
1055     tooltip.style.bottom = window.innerHeight - mp.y + 3 + "px"
1056     tooltip.style.left = mp.x + 3 + "px"
1057     tooltip.style.display = "block"
1058   } else {
1059     tooltip.style.display = "none"
1060   }
1061 })
1062 </script>
1063 {% endif %}     
1064
1065 {% if task.type == "md" and task.md_mdpdb %}
1066 <script>
1067 window.addEventListener("resize",
1068      function (event) {
1069      stage.handleResize();
1070      },false);
1071
1072       var stage = new NGL.Stage("viewport_traj");
1073       stage.setParameters( { backgroundColor: "white" } );
1074       stage.setParameters( { cameraType: "orthographic" } ); 
1075       var traj;
1076       var player;
1077       stage.loadFile( "/myfiles/download-file/{{task.jobdirname}}/file_MD000.pdb", { 
1078        asTrajectory: true } ) .then( function( o ){
1079         o.setName ("unres_md");
1080         o.addRepresentation( "backbone",{ color:
1081        "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
1082         });
1083         o.addRepresentation( "licorice",{ color:
1084        "residueindex",colorScale:["blue","cyan", "green", "yellow","orange", "red"]
1085         });        
1086         o.setPosition([0, 0, 100]);
1087         o.autoView();
1088         o.addTrajectory();
1089       });
1090
1091             var toggleSidechains = document.getElementById( "toggleSidechains1" );
1092             toggleSidechains.addEventListener( "click", function(){
1093                                                         stage.getRepresentationsByName( "licorice" ).list.forEach( function( repre ){
1094                                                                         repre.setVisibility( !repre.visible );
1095                                                         } );
1096             } );
1097
1098
1099       function numberWithCommas(x) {
1100                 return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
1101       }
1102       var toggleRunMDs = document.getElementById( "toggleRunMDs" );
1103       var isRunning = false;
1104       toggleRunMDs.addEventListener( "click", function(){
1105          var trajComp = stage.getComponentsByName("unres_md").list[0].trajList[0];
1106          var player = new NGL.TrajectoryPlayer(trajComp.trajectory, {timeout: 10, mode: "once"});
1107                                 if( !isRunning ){
1108                                         player.play();
1109                                         isRunning = true;
1110
1111                     trajComp.signals.frameChanged.add(function(){
1112                       var fnum=trajComp.trajectory.currentFrame+1;                   
1113                       clipRange.value = fnum;
1114                       clipRange_val.innerHTML = numberWithCommas(parseInt(clipRange.value*1));
1115                     });
1116
1117                                 }else{
1118                                         player.play();
1119                                         player.pause();
1120                                         isRunning = false;
1121                                 }
1122       } );      
1123       var clipRange = document.getElementById( "clipRange" );
1124       var clipRange_val = document.getElementById( "clipRange_val" );
1125       clipRange.oninput = function( e ){
1126                 var trajComp = stage.getComponentsByName("unres_md").list[0].trajList[0];
1127                 trajComp.setFrame(e.target.value-1)
1128                 clipRange_val.innerHTML = numberWithCommas(parseInt(e.target.value*1));
1129       };      
1130
1131 </script>
1132 {% endif %}     
1133
1134
1135 {% endblock %}