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