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