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