comparison assembly-stats.html @ 0:9e4955725212 draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/assembly-stats commit 28119c39c4b59a67f629c8ca569d58f4d2949c9c
author iuc
date Wed, 21 Jun 2023 09:26:46 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:9e4955725212
1 <html>
2 <head>
3 <title>assembly stats</title>
4 </head>
5 <body>
6 <link rel="stylesheet" type="text/css" href="css/circle-plot.css?v1">
7 <link rel="stylesheet" type="text/css" href="css/square-plot.css?v1">
8 <link rel="stylesheet" type="text/css" href="css/table.css?v1">
9 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
10 <script src="https://d3js.org/d3.v3.min.js" charset="utf-8"></script>
11 <script src="js/d3-tip.js"></script>
12 <script type="text/javascript" src="js/circle-plot.js?v1"></script>
13 <script type="text/javascript" src="js/square-plot.js?v1"></script>
14 <script type="text/javascript" src="js/table.js?v1"></script>
15 <style>
16 html, body {
17 padding: 0px;
18 margin: 0px;
19 overflow: hidden;
20 }
21
22 #assembly {
23 text-align: center;
24 position: fixed;
25 top: 0;
26 left: 0;
27 bottom: 0;
28 right: 0;
29 font-family: helvetica, arial, sans-serif;
30 font-size: 14pt;
31 overflow: hidden;
32 }
33
34 #assembly_stats {
35 height: 100%;
36 width: 100%;
37 }
38
39 .asm-tab-container {
40 position: relative;
41 width: 100%;
42 height: 34px;
43 text-align: center;
44 color: #555555;
45 background-color: #cccccc;
46 }
47
48 .asm-tab {
49 position: relative;
50 width: 33.33%;
51 height: 30px;
52 display: inline-block;
53 font-size: 12pt;
54 line-height: 30px;
55 margin-left: -2px;
56 margin-top: 2px;
57 border: solid 2px #555555;
58 border-top: none;
59 border-bottom: none;
60 cursor: pointer;
61 border-radius: 17px;
62 }
63
64 .asm-tab.active {
65 color: black;
66 margin-top: 0;
67 border: solid 2px #555555;
68 background-color: #bbbbbb;
69 }
70
71 .asm-tab:hover {
72 margin-top: 0;
73 border: solid 2px #555555;
74 }
75
76 .asm-plot-container {
77 position: relative;
78 width: 100%;
79 height: 90%;
80 text-align: center;
81 }
82
83 #assembly_stats_left {
84 position: relative;
85 width: 50%;
86 height: 90%;
87 float: left;
88 text-align: center;
89 }
90
91 #assembly_stats_right {
92 position: relative;
93 width: 50%;
94 height: 90%;
95 float: right;
96 text-align: center;
97 }
98 </style>
99
100 <div id="assembly_stats"></div>
101
102 <script>
103 var queries = window.location.href.replace(/^.+\?/, '').split('&');
104 var params = [];
105 queries.forEach(function (q) {
106 var parts = q.split('=');
107 if (!params[parts[0]]) params[parts[0]] = [];
108 params[parts[0]].push(parts[1]);
109 });
110
111 var assemblies = params['assembly'] || ['output'];
112 var path = params['path'] || 'json/';
113 if (params['altAssembly']) assemblies = assemblies.concat(params['altAssembly']);
114
115 var views = ['circle', 'cumulative', 'table']; // Les trois onglets à afficher
116 var defaultTab = 'circle'; // Onglet par défaut à afficher
117
118 var div = d3.select('div#assembly_stats');
119 var tab_container = div.append('div').attr('class', 'asm-tab-container');
120 var tabcount = 3; // Nombre d'onglets (circle, cumulative, table)
121 var tabwidth = 25; // Largeur de chaque onglet en pourcentage
122
123 for (var i = 0; i < tabcount; i++) {
124 var tab_div = tab_container.append('div')
125 .attr('class', function () {
126 if (views[i] === defaultTab) return 'asm-tab active';
127 return 'asm-tab';
128 })
129 .style('width', tabwidth + '%')
130 .text(views[i]);
131
132 tab_div.on('click', function () {
133 d3.selectAll('.asm-tab').classed('active', false);
134 d3.select(this).classed('active', true);
135
136 var view = d3.select(this).text();
137 var plot_container = d3.select('#asm-plot-container');
138
139 if (view === 'circle') {
140 plot_container.html('');
141 arr[0].drawPlot('asm-plot-container');
142 } else if (view === 'cumulative') {
143 plot_container.html('');
144 arr[0].squarePlot('asm-plot-container');
145 arr[0].addKey(assemblies);
146
147 setTimeout(function () {
148 arr.forEach(function (asm, index) {
149 if (index > 0) {
150 var data = asm.prepareLine();
151 arr[0].addLine(data, asm.name, asm);
152 }
153 });
154 }, 250);
155 } else if (view === 'table') {
156 plot_container.html('');
157 arr[0].drawTable('asm-plot-container');
158
159 setTimeout(function () {
160 arr.forEach(function (asm, index) {
161 if (index > 0) {
162 setTimeout(function () {
163 arr[0].addColumn(asm);
164 }, 250);
165 }
166 });
167 }, 250);
168 }
169 });
170 }
171
172 var plot_container = div.append('div').attr('class', 'asm-plot-container').attr('id', 'asm-plot-container');
173 document.title = assemblies[0] + ' assembly stats';
174 var arr = [];
175
176 assemblies.forEach(function (assembly, index) {
177 d3.json(path + assembly + '.assembly-stats.json', function (error, json) {
178 if (error) return console.warn(error);
179 arr[index] = new Assembly(json);
180 arr[index].name = assembly.replace('.', '_');
181
182 if (views[0] === 'cumulative') {
183 if (index === 0) {
184 arr[0].squarePlot('asm-plot-container');
185 arr[0].addKey(assemblies);
186 } else {
187 var data = arr[index].prepareLine();
188 setTimeout(function () {
189 arr[0].addLine(data, assembly, arr[index]);
190 }, 250);
191 }
192 } else if (views[0] === 'table') {
193 if (index === 0) {
194 arr[0].drawTable('asm-plot-container');
195 } else {
196 setTimeout(function () {
197 arr[0].addColumn(arr[index]);
198 }, 250);
199 }
200 } else {
201 arr[0].drawPlot('asm-plot-container');
202 }
203 });
204 });
205
206 function compare(asm1, asm2) {
207 if (!asm1) return;
208 if (!asm2) return;
209
210 plot_container
211 .append('div')
212 .attr('id', 'assembly_stats_left')
213 .append('p')
214 .text(assemblies[0]);
215
216 plot_container
217 .append('div')
218 .attr('id', 'assembly_stats_right')
219 .append('p')
220 .text(assemblies[1]);
221
222 var span = Math.max(asm1.assembly, asm2.assembly);
223 var longest = Math.max(asm1.scaffolds[0], asm2.scaffolds[0]);
224
225 asm1.drawPlot('assembly_stats_left', longest, span);
226 asm2.drawPlot('assembly_stats_right', longest, span);
227 }
228 </script>
229 </body>
230 </html>