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