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