index.html 18.7 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
<!doctype html>

<!-- 
  This file is part of "Vidjil" <http://bioinfo.lifl.fr/vidjil>, V(D)J repertoire browsing and analysis
  Copyright (C) 2013, 2014 by Marc Duez <marc.duez@lifl.fr> and the Vidjil Team
  Bonsai bioinformatics at LIFL (UMR CNRS 8022, Université Lille) and Inria Lille

  "Vidjil" is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  "Vidjil" is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with "Vidjil". If not, see <http://www.gnu.org/licenses/>
-->

<html>
23 24 25
    <head>
        <meta charset="utf-8">
        <title>Vidjil</title>
Marc Duez's avatar
Marc Duez committed
26

Mathieu Giraud's avatar
Mathieu Giraud committed
27 28
        <link rel="shortcut icon" href="./images/favicon-v.ico" type="image/x-icon">
        <link rel="icon" href="./images/favicon-v.ico" type="image/x-icon">
Marc Duez's avatar
Marc Duez committed
29 30
        <link rel="stylesheet" type="text/css" href="css/fonts/ubuntu/stylesheet.css" /> 
        <link rel="stylesheet" type="text/css" href="css/fonts/ubuntu-mono/stylesheet.css" /> 
31
        <link id="palette" rel="stylesheet" type="text/css" href="css/light.css" /> 
32 33 34 35
        <!--[if lte IE 8]><script src="js/r2d3.js" charset="utf-8"></script><![endif]-->
        <!--[if gte IE 9]><!-->
        <script type="text/javascript" src='js/lib/d3.v3.js'></script>
        <!--<![endif]-->
Marc's avatar
Marc committed
36
        <script type="text/javascript" src="js/lib/jquery-2.1.1.min.js"></script>
37
        <script type="text/javascript" src="js/lib/jquery.form.js"></script>
38 39 40 41 42 43 44 45 46 47
        <script type="text/javascript" src='js/lib/StackBlur.js'></script>
        <script type="text/javascript" src='js/lib/jspdf.js'></script>
        <script type="text/javascript" src='js/lib/jspdf.plugin.addimage.js'></script>
        <script type="text/javascript" src='js/lib/jspdf.plugin.svgToPdf.js'></script>
        <script type="text/javascript" src='js/lib/jspdf.plugin.split_text_to_size.js'></script>
        <script type="text/javascript" src='js/lib/jspdf.plugin.standard_fonts_metrics.js'></script>
        <script type="text/javascript" src='js/lib/underscore.js'></script>
        <script type="text/javascript" src='js/lib/rgbcolor.js'></script>
        <script type="text/javascript" src='js/lib/file.js'></script>
        <script type="text/javascript" src='js/lib/jquery.zclip.js'></script>
48

49

WebTogz's avatar
WebTogz committed
50
	    <script type="text/javascript" src='js/compare.js'></script>
51
        <script type="text/javascript" src='js/menu.js'></script>
WebTogz's avatar
WebTogz committed
52
        <script type="text/javascript" src='js/dbscan.js'></script>
53
        <script type="text/javascript" src='js/germline.js'></script>
54
        <script type="text/javascript" src='js/germline_builder.js'></script>
55
        <script type="text/javascript" src='js/segmenter.js'></script>
WebTogz's avatar
WebTogz committed
56
        <script type="text/javascript" src='js/model.js'></script>
57
        <script type="text/javascript" src='js/clone.js'></script>
58
        <script type="text/javascript" src='js/list.js'></script>
59
        <script type="text/javascript" src="js/axis.js"> </script>
60 61 62
        <script type="text/javascript" src="js/graph.js"> </script>
        <script type="text/javascript" src="js/scatterPlot.js"> </script>
        <script type="text/javascript" src='js/builder.js'></script>
63
        <script type="text/javascript" src='js/com.js'></script>
64 65 66
        <script type="text/javascript" src='js/vidjil-style.js'></script>
        <script type="text/javascript" src='js/crossDomain.js'></script>
        <script type="text/javascript" src='js/pdf.js'></script>
67
        <script type="text/javascript" src='js/database.js'></script>
68
        <script type="text/javascript" src='js/conf.js'></script>
WebTogz's avatar
WebTogz committed
69
        <script type="text/javascript" src='js/stats.js'></script>
70
        <script type="text/javascript" src='js/shortcut.js'></script>
71 72 73
    </head>


Marc Duez's avatar
Marc Duez committed
74
    <body>
75 76 77 78 79 80 81 82 83 84 85 86 87 88

        <div id="popup-container">
            <span class="closeButton" onclick="myConsole.closePopupMsg()">X</span>
            <div id="popup-msg">
	      <noscript>
		<style type="text/css">
		  #popup-container { display:block; }
		</style>
		Your browser does not have Javascript enabled. <br />
		<a href='http://www.vidjil.org'>Vidjil</a> needs a recent browser with Javascript enabled.
	      </noscript>
	    </div>
        </div>

89 90 91 92 93
        <div id="file_menu" >
            <span class="closeButton" onclick="cancel();">X</span>

            <h2>Vidjil <span class='logo'>(beta)</span> &ndash; V(D)J repertoire browsing and analysis</h2>

94
            Data file (.vidjil):<br/>
95
            <input id="upload_json" type="file" name="json" /></br>
96
            <p class='help'>The .vidjil file stores a set of clones on several points.</p>
97 98 99

            Analysis file (.analysis, optional):<br/>
            <input id="upload_pref" type="file" name="pref" /></br>
100
            <p class='help'>The .analysis file stores all parameters set by the user (tags, colors, manual clusters).</p>
101 102

            <button onclick="document.getElementById('file_menu').style.display='none';
Marc Duez's avatar
Marc Duez committed
103
            m.load('upload_json','upload_pref', 200)">start</button> 
104 105
        </div>

106
        <div id="axis_choice" >
107 108 109
            <span class="closeButton" onclick="cancel();">X</span>
            <h2>analysis menu</h2>

110
            Analysis file:<br/>
111 112
            <input id="upload_analysis" type="file" name="analysis" /></br></br>

113
            <button onclick="document.getElementById('axis_choice').style.display='none';
114 115
                                    m.loadAnalysis('upload_analysis');">start</button> 
        </div>
Marc Duez's avatar
Marc Duez committed
116
        
117 118 119
        <!-- TOP-CONTAINER -->
        <div id="top-container">

Mathieu Giraud's avatar
Mathieu Giraud committed
120
            <div class="menu" id="db_menu" onmouseover="showSelector('dbSelector');" style="display : none">patients
121 122
                <div id="dbSelector" class="selector"><div>
                    <div class="menu_box">
Mathieu Giraud's avatar
Mathieu Giraud committed
123 124
                        <a class="buttonSelector" onclick="javascript:db.reload()">open patient</a>
                        <a class="buttonSelector" onclick="javascript:db.save_analysis()">save analysis</a>
125 126 127 128 129 130 131 132
                    </div>
                    <div class="menu_box">
                        <div id="last_loaded_file">
                        </div>
                    </div>
                </div></div>
            </div>

Mathieu Giraud's avatar
Mathieu Giraud committed
133
            <div class="menu" id="demo_file_menu" onmouseover="showSelector('demoSelector');">import/export
134
                <div id="demoSelector" class="selector"><div>
135
                    <div class="menu_box">
136 137
                        <a id="import_data_anchor" class="buttonSelector" onclick="javascript:loadData()">import data (.vidjil)</a>
                        <a id="import_data_analysis" class="buttonSelector" onclick="javascript:loadAnalysis()">import analysis</a>
138
                    </div>
139 140
                    <!--<a class="buttonSelector" onclick="javascript:m.resetAnalysis()">reset analysis</a> -->
                    <!--<a class="buttonSelector" onclick="javascript:reset()">reset all</a> -->
141
                    <div class="menu_box">
Mathieu Giraud's avatar
Mathieu Giraud committed
142 143
                        <a class="buttonSelector" onclick="javascript:m.saveAnalysis()">export analysis</a>
                        <a class="buttonSelector" onclick="javascript:pdf.make()">export pdf (graph + selected clones)</a>
144
                        <a class="buttonSelector" onclick="javascript:pdf.makeGraph()">export pdf (graph)</a>
145
                        <a class="buttonSelector" onclick="javascript:m.exportCSV()">export csv (visible clones)</a>
146 147 148 149
                    </div>
                    <div class="menu_box">
                        <div id="upload_list">
                        </div>
150
                    </div>
151
                </div></div>
152 153
            </div>

154
            <div class="menu" id="cluster_menu" onmouseover="showSelector('clusterSelector');" > cluster
155
                <div id="clusterSelector" class="selector"><div>
156 157
                    <a class="buttonSelector" onclick="m.resetClusters();">reset all clusters</a>
                    <a class="buttonSelector" onclick="m.restoreClusters();">user</a>
Marc Duez's avatar
Marc Duez committed
158 159
                    <a class="buttonSelector" onclick="m.clusterBy(function(id){return m.clone(id).getV()});">V gene + allele</a>
                    <a class="buttonSelector" onclick="m.clusterBy(function(id){return m.clone(id).getJ()});">J gene + allele</a>
160
                    <!-- <a class="buttonSelector" onclick="m.clusterBy('cluster')">DBSCAN algorithm</a> -->
WebTogz's avatar
WebTogz committed
161

162
                    <div id="clusterby_button"> </div>
163 164 165
                </div></div>
            </div>

166
            <div class="menu" id="analysis_menu" onmouseover="showSelector('groupSelector');"> analysis
WebTogz's avatar
WebTogz committed
167 168 169 170 171 172 173 174 175 176
                <div id="groupSelector" class="selector">
                    <div>
                    <a class="buttonSelector" onclick="sp.changeSplitMethod('gene_v', 'gene_j');">V / J (genes)</a>
                    <a class="buttonSelector" onclick="sp.changeSplitMethod('allele_v', 'allele_j');">V / J (alleles)</a>
                    <a class="buttonSelector" onclick="sp.changeSplitMethod('gene_v', 'n');">V / N length</a>
                    <!--
                    <a class="buttonSelector" onclick="sp.changeSplitMethod('gene_v', 'nSize');">V / N length + VJ deletions</a>
                    k-->
                    <a class="buttonSelector" onclick="sp.changeSplitMethod('gene_v', 'Size')">V / abundance at selected timepoint</a>
                    <a class="buttonSelector" onclick="sp.changeSplitMethod('gene_v', 'bar')">V distribution</a>
177
                    <!--<a class="buttonSelector" onclick="sp.changeSplitMethod('dbscan', 'dbscan')">Graph</a>-->
WebTogz's avatar
WebTogz committed
178 179 180 181
                    <!--<a class="buttonSelector" onclick="sp.changeSplitMethod('graph','graph')">Edit distance distribution</a>
                    <a class="buttonSelector" onclick="sp.changeSplitMethod('dbscan','dbscan')">DBSCAN algorithm</a>-->
                    </div>
                </div>
182 183
            </div>

184
            <div class="menu" id="color_menu" onmouseover="showSelector('colorSelector');" > color 
185
                <div id="colorSelector" class="selector"><div>
186
                    <a class="buttonSelector" onclick="m.changeColorMethod('Tag');">by tag</a>
187 188
                    <a class="buttonSelector" onclick="m.changeColorMethod('V');">by V</a>
                    <a class="buttonSelector" onclick="m.changeColorMethod('J');">by J</a>
Marc Duez's avatar
Marc Duez committed
189
                    <a class="buttonSelector" onclick="m.changeColorMethod('N');">by N length</a>
Marc Duez's avatar
Marc Duez committed
190 191
                    <a class="buttonSelector" onclick="m.changeColorMethod('system');" 
                        id="color_system_button" style="display:none">by system</a>
192
                    <a class="buttonSelector" onclick="m.changeColorMethod('abundance');">by abundance at selected timepoint</a>
193
                    <!--<a class="buttonSelector" onclick="m.changeColorMethod('dbscan');">by the DBSCAN algorithm</a>-->
194
                </div></div>
195 196
            </div>

197
            <div class="menu" id="filter_menu" onmouseover="showSelector('filterSelector');" > filter
198 199
                <div id="filterSelector" class="selector"><div>
                    <div class="menu_box">
200
                        <span id="top_label"></span></br>
201
                        <input id="top_slider" type="range" min="5" max="100" step="5" value="10" onchange="m.displayTop(this.value)" />
202
                    </div>
203 204 205 206
                    <div class="menu_box">
                        tag visibility</br>
                        <ul id="tagList">
                        </ul>
207
                    </div>
208 209
                </div></div>
            </div>
210

211
            <div class="menu" id="settings_menu" onmouseover="showSelector('settingsSelector');" > settings
212 213
                <div id="settingsSelector" class="selector"><div>
                    <div class="menu_box">
214
                        normalization</br>
215 216
                        <form name="normalize_list" id="normalize_list">
                        </form>
217
                    </div>
218

219 220
                    <div class="menu_box">
                        normalization method</br>
221 222 223
                        <div class="buttonSelector" onclick="m.changeNormMethod('constant')" ><input type="radio" name="normalize_method" value="constant" checked >constant</input></div>
                        <div class="buttonSelector" onclick="m.changeNormMethod('to-100')" ><input type="radio" name="normalize_method" value="to-100">to 100%</input></div>

224 225
                    </div>

226 227
                    <div class="menu_box">
                        size display</br>
228 229
                        <div class="buttonSelector" onclick="m.changeNotation('scientific')"><input type="radio" name="notation" value="scientific" >scientific notation</input></div>
                        <div class="buttonSelector" onclick="m.changeNotation('percent')"><input type="radio" name="notation" value="percent" checked>percent</input></div>
230
                    </div>
Marc Duez's avatar
Marc Duez committed
231

232 233
                    <div class="menu_box">
                        point key</br>
234 235 236
                        <div class="buttonSelector" onclick="m.changeTimeFormat('name', true)"><input type="radio" name="time" value="name" checked>name</input></div>
                        <div class="buttonSelector" onclick="m.changeTimeFormat('sampling_date', true)"><input type="radio" name="time" value="sampling_date" >sampling date</input></div>
                        <div class="buttonSelector" onclick="m.changeTimeFormat('delta_date', true)"><input type="radio" name="time" value="delta_date">day after first sample</input></div>
Marc Duez's avatar
Marc Duez committed
237
                    </div>
238 239

                    <div class="submenu" id="system_menu" style="display:none">
240 241 242 243 244
                        <div class="menu_box">
                            germline (for color and scatterplot)</br>
                            <ul id="germline_list">
                            </ul>
                        </div>
245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269
                    </div>

                    <!--menu graph/dbscan -->
                    <div class="submenu" style="display:none">

                        <div class="menu_box">
                            <div id="DBSCANEpsSlider">
                            <input id="changeEps" type="range" min="0" max="40" step="1" value="0" onchange="m.changeEps(this.value)" />
                            </div>
                        </div>

                        
                        <div class="menu_box">
                            <div id="DBSCANNbrSlider">
                            <input id="changeNbr" type="range" min="0" max="100" step="1" value="0" onchange="m.changeNbr(this.value)" />
                            </div>
                        </div>

                    
                        <div class="menu_box">
                            <div id="EditDistanceSlider">
                            </br>
                            <input id="displayMax_slider" type="range" min="1" max="20" step="1" value="10" onchange="sp.displayDistanceMax(this.value)" style="display:none"/>
                            </div>
                        </div>
270
                    </div>
271

Marc Duez's avatar
Marc Duez committed
272
                </div></div>
273 274
            </div>

275
            <div id="debug_menu" class="menu" onmouseover="showSelector('adminSelector');" style="display : none"> development
276 277
                <div id="adminSelector" class="selector"><div>
                    <input type="checkbox" onclick="m.display_window = this.checked; m.update()">highlight windows</input><br>
278 279
                    <input type="checkbox" onclick=" this.checked ? $('#fps').css('display', '') : $('#fps').css('display', 'none');">display fps</input></br>
                    <input type="checkbox" onclick=" this.checked ? myConsole.openLog() : myConsole.closeLog() ;">log</input>
280
                    <a class="buttonSelector" onclick="db.call('default/user/register')">register new user</a>
281 282 283
                </div></div>
            </div>

Marc Duez's avatar
Marc Duez committed
284
            <div id="logo" style="float: right;" onclick="myConsole.popupMsg(myConsole.msg.welcome)">Vidjil <span class='logo'>(beta)</span></div>
285

Mikaël Salson's avatar
Mikaël Salson committed
286
            <div class="menu" style="float: right"> <a href="help" target="_blank">help</a></div>
287

288
            <div style="float: right" class="menu" onmouseover="showSelector('paletteSelector');"> palette 
289
                <div id="paletteSelector" class="selector"><div>
290 291
                    <a class="buttonSelector" onclick="changeStyle(solarizeD)">dark</a>
                    <a class="buttonSelector" onclick="changeStyle(solarizeL)">light</a>
292
                </div></div>
293 294
            </div>

295
            <div id="fps" style="float: right; display: none"> </div>
296 297

        </div>  
Marc Duez's avatar
Marc Duez committed
298
        <!-- fin top-container-->
299 300 301
        
        <!-- MID-CONTAINER -->
        <div id="mid-container" onmouseover="hideSelector()">
Marc Duez's avatar
Marc Duez committed
302

303
        <!-- LEFT-CONTAINER -->
304
            <div id="left-container">
305 306 307
                <div id="info-row"><div id="info"> </div></div>
                <div id="list-row"><div id="list"> </div></div>
                <div id="data-row"><div id="data"> </div></div>
308
            </div>
309 310
        <!-- fin left-container -->

311
            <div id="vertical-separator"></div>
Marc Duez's avatar
Marc Duez committed
312

313
        <!-- RIGHT-CONTAINER -->
Marc Duez's avatar
Marc Duez committed
314
            <div id="right-container"></div>
315 316

        <!-- VISU-CONTAINER  -->
317
            <div id="visu-container">
Marc Duez's avatar
Marc Duez committed
318 319 320
                <div id="visu2"></div>
                <div id="visu-separator" >...</div>
                <div id="visu" onclick=""></div>
321 322 323 324
            </div>

        </div>
        <!-- fin mid-container -->
Marc Duez's avatar
Marc Duez committed
325
    
326 327

        <!-- BOT-CONTAINER / SEGMENTER-CONTAINER -->
Marc Duez's avatar
Marc Duez committed
328
        <div id="bot-container"> </div>
329 330 331 332

        <div id="tagSelector">
            <span class="closeButton" onclick="$('#tagSelector').hide('fast')">X</span>
            <div>   tag for <span id=tag_name></span><span id=tag_id></span></div>
333
            <ul> </ul>
334 335
        </div>

Marc Duez's avatar
Marc Duez committed
336 337
        <div id="dataMenu">
            <span class="closeButton" onclick="$('#dataMenu').hide('fast')">X</span>
338
            <div> data:  <span id=data_name></span></div>
Marc Duez's avatar
Marc Duez committed
339
            <div>
340
                <span>normalize to: </span>
Marc Duez's avatar
Marc Duez committed
341 342 343 344 345
                <span><input type="number" step="0.0001" id="normalized_data"></span>
                <button id="normalized_data_button">ok</button>
            </div>
        </div>

346 347 348
        <div id="frame-container"></div>

        <div id="data-container">
Marc Duez's avatar
Marc Duez committed
349
            <span class="closeButton" onclick="myConsole.closeDataBox()">X</span>
350 351 352
            <div id="data-msg"></div>
        </div>

353 354
        <div id="db_div">
            <span class="closeButton" onclick="db.close()">X</span>
Marc Duez's avatar
Marc Duez committed
355
            <div id="db_msg"></div>
356
        </div>
357 358 359
        
        <div id="flash_container"></div>
        <div id="log_container"></div>
Marc Duez's avatar
Marc Duez committed
360

361 362 363 364
        <form id="form"></form>

    </body>

365
    <script type="text/javascript" src='test/dataTest.js'></script>
366
    <script type="text/javascript" src="js/main.js"> </script>
367 368 369
</html>