igv-rails 1.0.9.3 → 1.0.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/igv/rails/version.rb +1 -1
- data/vendor/assets/javascripts/igv.js +111 -16
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29352d7b5d9079761a44b147b06d2788f0b6f4e1
|
4
|
+
data.tar.gz: 81c8923667cd449fdec6c7cf0168c949b6dc1129
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 442e9a0be1368f8a24ed5ae25c0f1dbe2bcb830a0fbefbdfaaeebb45d7b5e0db799d1875f929b9e923b088fec702c514c607abd39f42da3c4ed110f76a0a6a09
|
7
|
+
data.tar.gz: c361d01bb4214931223482c47aa50c0aba221076c1918fb302ff5895792650dacc46c616cf2c3dd43b88950b7a98c35160ffeb112da9e94783870b9bc356ce7c
|
data/lib/igv/rails/version.rb
CHANGED
@@ -11611,10 +11611,14 @@ var igv = (function (igv) {
|
|
11611
11611
|
this.render = renderFusionJuncSpan;
|
11612
11612
|
this.height = config.height || 50;
|
11613
11613
|
this.autoHeight = false;
|
11614
|
-
}
|
11615
|
-
|
11616
|
-
this.render =
|
11617
|
-
|
11614
|
+
}
|
11615
|
+
else if ('snp' === config.type) {
|
11616
|
+
this.render = renderSnp;
|
11617
|
+
// colors ordered based on priority least to greatest
|
11618
|
+
this.snpColors = ['rgb(0,0,0)', 'rgb(0,0,255)', 'rgb(0,255,0)', 'rgb(255,0,0)'];
|
11619
|
+
this.colorBy = 'function';
|
11620
|
+
}
|
11621
|
+
else {
|
11618
11622
|
this.render = renderFeature;
|
11619
11623
|
this.arrowSpacing = 30;
|
11620
11624
|
|
@@ -12216,6 +12220,104 @@ var igv = (function (igv) {
|
|
12216
12220
|
|
12217
12221
|
}
|
12218
12222
|
|
12223
|
+
/**
|
12224
|
+
*
|
12225
|
+
* @param snp
|
12226
|
+
* @param bpStart genomic location of the left edge of the current canvas
|
12227
|
+
* @param xScale scale in base-pairs per pixel
|
12228
|
+
* @param pixelHeight pixel height of the current canvas
|
12229
|
+
* @param ctx the canvas 2d context
|
12230
|
+
*/
|
12231
|
+
function renderSnp(snp, bpStart, xScale, pixelHeight, ctx) {
|
12232
|
+
|
12233
|
+
var coord = calculateFeatureCoordinates(snp, bpStart, xScale),
|
12234
|
+
py = 20,
|
12235
|
+
h = 10,
|
12236
|
+
colorArrLength = this.snpColors.length,
|
12237
|
+
colorPriority;
|
12238
|
+
|
12239
|
+
switch(this.colorBy) {
|
12240
|
+
case 'function':
|
12241
|
+
colorPriority = colorByFunc(snp.func);
|
12242
|
+
break;
|
12243
|
+
case 'class':
|
12244
|
+
colorPriority = colorByClass(snp['class']);
|
12245
|
+
}
|
12246
|
+
|
12247
|
+
ctx.fillStyle = this.snpColors[colorPriority];
|
12248
|
+
ctx.fillRect(coord.px, py, coord.pw, h);
|
12249
|
+
|
12250
|
+
// Coloring functions, convert a value to a priority
|
12251
|
+
|
12252
|
+
function colorByFunc(theFunc) {
|
12253
|
+
var funcArray = theFunc.split(',');
|
12254
|
+
// possible func values
|
12255
|
+
var codingNonSynonSet = new Set(['nonsense', 'missense', 'stop-loss', 'frameshift', 'cds-indel']),
|
12256
|
+
codingSynonSet = new Set(['coding-synon']),
|
12257
|
+
spliceSiteSet = new Set(['splice-3', 'splice-5']),
|
12258
|
+
untranslatedSet = new Set(['untranslated-5', 'untranslated-3']),
|
12259
|
+
priorities;
|
12260
|
+
// locusSet = new Set(['near-gene-3', 'near-gene-5']);
|
12261
|
+
// intronSet = new Set(['intron']);
|
12262
|
+
|
12263
|
+
priorities = funcArray.map(function(func) {
|
12264
|
+
if (codingNonSynonSet.has(func) || spliceSiteSet.has(func)) {
|
12265
|
+
return colorArrLength - 1;
|
12266
|
+
} else if (codingSynonSet.has(func)) {
|
12267
|
+
return colorArrLength - 2;
|
12268
|
+
} else if (untranslatedSet.has(func)) {
|
12269
|
+
return colorArrLength - 3;
|
12270
|
+
} else { // locusSet.has(func) || intronSet.has(func)
|
12271
|
+
return 0;
|
12272
|
+
}
|
12273
|
+
});
|
12274
|
+
|
12275
|
+
return priorities.reduce(function(a,b) {
|
12276
|
+
return Math.max(a,b);
|
12277
|
+
});
|
12278
|
+
}
|
12279
|
+
|
12280
|
+
function colorByClass(cls) {
|
12281
|
+
if (cls === 'deletion') {
|
12282
|
+
return colorArrLength - 1;
|
12283
|
+
} else if (cls === 'mnp') {
|
12284
|
+
return colorArrLength - 2;
|
12285
|
+
} else if (cls === 'microsatellite' || cls === 'named') {
|
12286
|
+
return colorArrLength - 3;
|
12287
|
+
} else { // cls === 'single' || cls === 'in-del' || cls === 'insertion'
|
12288
|
+
return 0;
|
12289
|
+
}
|
12290
|
+
}
|
12291
|
+
}
|
12292
|
+
|
12293
|
+
igv.FeatureTrack.prototype.popupMenuItemList = function(config) {
|
12294
|
+
if (this.render === renderSnp) {
|
12295
|
+
|
12296
|
+
var menuItems = [], self = this;
|
12297
|
+
|
12298
|
+
menuItems.push({
|
12299
|
+
name: 'Color by function',
|
12300
|
+
click: function() {
|
12301
|
+
setColorBy('function');
|
12302
|
+
}
|
12303
|
+
});
|
12304
|
+
menuItems.push({
|
12305
|
+
name: 'Color by class',
|
12306
|
+
click: function() {
|
12307
|
+
setColorBy('class');
|
12308
|
+
}
|
12309
|
+
});
|
12310
|
+
|
12311
|
+
return menuItems;
|
12312
|
+
|
12313
|
+
function setColorBy(value) {
|
12314
|
+
self.colorBy = value;
|
12315
|
+
self.trackView.update();
|
12316
|
+
config.popover.hide();
|
12317
|
+
}
|
12318
|
+
}
|
12319
|
+
};
|
12320
|
+
|
12219
12321
|
|
12220
12322
|
return igv;
|
12221
12323
|
|
@@ -13403,9 +13505,6 @@ var igv = (function (igv) {
|
|
13403
13505
|
igv.xhr.loadJson(url, self.config)
|
13404
13506
|
.then(function (data) {
|
13405
13507
|
if (data) {
|
13406
|
-
data.forEach(function (json) {
|
13407
|
-
decodeJson(json);
|
13408
|
-
});
|
13409
13508
|
fulfill(data);
|
13410
13509
|
} else {
|
13411
13510
|
fulfill(null);
|
@@ -13417,11 +13516,6 @@ var igv = (function (igv) {
|
|
13417
13516
|
});
|
13418
13517
|
};
|
13419
13518
|
|
13420
|
-
// TODO -- generalize
|
13421
|
-
function decodeJson(feature) {
|
13422
|
-
if(feature.start) feature.start = Number.parseInt(feature.start);
|
13423
|
-
if(feature.end) feature.end = Number.parseInt(feature.end);
|
13424
|
-
}
|
13425
13519
|
|
13426
13520
|
return igv;
|
13427
13521
|
})(igv || {});
|
@@ -14818,12 +14912,12 @@ var igv = (function (igv) {
|
|
14818
14912
|
},
|
14819
14913
|
decode: function (json) {
|
14820
14914
|
// If specific callSetIds are specified filter to those
|
14821
|
-
|
14915
|
+
if (self.callSetIds) {
|
14822
14916
|
var filteredCallSets = [],
|
14823
14917
|
csIdSet = new Set();
|
14824
14918
|
|
14825
14919
|
self.callSetIds.forEach(function (csid) {
|
14826
|
-
csIdSet.add(
|
14920
|
+
csIdSet.add(csid);
|
14827
14921
|
})
|
14828
14922
|
json.callSets.forEach(function (cs) {
|
14829
14923
|
if (csIdSet.has(cs.id)) {
|
@@ -23460,6 +23554,7 @@ var igv = (function (igv) {
|
|
23460
23554
|
case "snp":
|
23461
23555
|
case "genes":
|
23462
23556
|
case "fusionjuncspan":
|
23557
|
+
case "snp":
|
23463
23558
|
return new igv.FeatureTrack(conf);
|
23464
23559
|
break;
|
23465
23560
|
|
@@ -27031,11 +27126,11 @@ var igv = (function (igv) {
|
|
27031
27126
|
|
27032
27127
|
function calcHeterozygosity(ac, an) {
|
27033
27128
|
var sum = 0,
|
27034
|
-
altFreqs = ac.split(','),
|
27129
|
+
altFreqs = Array.isArray(ac) ? ac : ac.split(','),
|
27035
27130
|
altCount = 0,
|
27036
27131
|
refFrac;
|
27037
27132
|
|
27038
|
-
an = parseInt(an);
|
27133
|
+
an = Array.isArray(an) ? parseInt(an[0]) : parseInt(an);
|
27039
27134
|
altFreqs.forEach(function (altFreq) {
|
27040
27135
|
var a = parseInt(altFreq),
|
27041
27136
|
altFrac = a / an;
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: igv-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.9.
|
4
|
+
version: 1.0.9.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Van Etten, PhD
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-09-
|
11
|
+
date: 2017-09-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|