igv-rails 1.0.9.7 → 1.0.9.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/igv/rails/version.rb +1 -1
- data/vendor/assets/javascripts/igv.js +134 -109
- 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: 522637f1564b6344b6869057c8cfad571365fc0e
|
4
|
+
data.tar.gz: 4ab90f4fb04c85834a280e9e2d2fcff2697c5eac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ec03c51b2ff436abf099db5a7a55af09ea5e992e6738740011bc91172a5d9b39fb11b5e4b678cef77703d86661cd42814f19f533c632cc38de6752f711f33c4
|
7
|
+
data.tar.gz: 8deb40ef1194672452abd95cd763bb5ffe8e801d65b2b18ee3ffd56f3efd4fe572aeb2f903f164e900d9696c480e3216d91395f7f65df8e3c4b9fd28a0b89651
|
data/lib/igv/rails/version.rb
CHANGED
@@ -35740,7 +35740,7 @@ var igv = (function (igv) {
|
|
35740
35740
|
$fa.addClass('fa-check-hidden');
|
35741
35741
|
}
|
35742
35742
|
|
35743
|
-
self.trackView.
|
35743
|
+
self.trackView.setDataRange(undefined, undefined, self.autoscale);
|
35744
35744
|
}
|
35745
35745
|
});
|
35746
35746
|
|
@@ -35814,12 +35814,7 @@ var igv = (function (igv) {
|
|
35814
35814
|
|
35815
35815
|
|
35816
35816
|
if (features && features.length > 0) {
|
35817
|
-
|
35818
|
-
// defaultRange = self.featureSource.getDefaultRange();
|
35819
|
-
// if (!isNaN(defaultRange.min) && !isNaN(defaultRange.max)) {
|
35820
|
-
// self.dataRange = defaultRange;
|
35821
|
-
// }
|
35822
|
-
// }
|
35817
|
+
|
35823
35818
|
if (self.autoscale || self.dataRange === undefined) {
|
35824
35819
|
var s = autoscale(features);
|
35825
35820
|
featureValueMinimum = self.config.min || s.min; // If min is explicitly set use it
|
@@ -36877,7 +36872,7 @@ var igv = (function (igv) {
|
|
36877
36872
|
|
36878
36873
|
|
36879
36874
|
// Start the recursive load cycle. Data is fetched in chunks, if more data is available a "nextPageToken" is returned.
|
36880
|
-
loadChunk();
|
36875
|
+
return loadChunk();
|
36881
36876
|
|
36882
36877
|
function loadChunk(pageToken) {
|
36883
36878
|
|
@@ -36895,40 +36890,42 @@ var igv = (function (igv) {
|
|
36895
36890
|
sendData: sendData,
|
36896
36891
|
contentType: "application/json",
|
36897
36892
|
headers: ga4ghHeaders()
|
36898
|
-
})
|
36899
|
-
|
36893
|
+
})
|
36894
|
+
.then(function (json) {
|
36895
|
+
var nextPageToken, tmp;
|
36900
36896
|
|
36901
|
-
|
36897
|
+
if (json) {
|
36902
36898
|
|
36903
|
-
|
36899
|
+
tmp = decode ? decode(json) : json;
|
36904
36900
|
|
36905
|
-
|
36901
|
+
if (tmp) {
|
36906
36902
|
|
36907
|
-
|
36908
|
-
|
36909
|
-
|
36910
|
-
|
36911
|
-
|
36912
|
-
|
36913
|
-
|
36903
|
+
tmp.forEach(function (a) {
|
36904
|
+
var keep = true; // TODO -- conditionally keep (downsample)
|
36905
|
+
if (keep) {
|
36906
|
+
results.push(a);
|
36907
|
+
}
|
36908
|
+
});
|
36909
|
+
}
|
36914
36910
|
|
36915
36911
|
|
36916
|
-
|
36912
|
+
nextPageToken = json["nextPageToken"];
|
36917
36913
|
|
36918
|
-
|
36919
|
-
|
36914
|
+
if (nextPageToken) {
|
36915
|
+
loadChunk(nextPageToken);
|
36916
|
+
}
|
36917
|
+
else {
|
36918
|
+
fulfill(results);
|
36919
|
+
}
|
36920
36920
|
}
|
36921
36921
|
else {
|
36922
36922
|
fulfill(results);
|
36923
36923
|
}
|
36924
|
-
}
|
36925
|
-
else {
|
36926
|
-
fulfill(results);
|
36927
|
-
}
|
36928
36924
|
|
36929
|
-
|
36930
|
-
|
36931
|
-
|
36925
|
+
})
|
36926
|
+
.catch(function (error) {
|
36927
|
+
reject(error);
|
36928
|
+
});
|
36932
36929
|
}
|
36933
36930
|
|
36934
36931
|
});
|
@@ -37134,60 +37131,56 @@ var igv = (function (igv) {
|
|
37134
37131
|
|
37135
37132
|
var self = this;
|
37136
37133
|
|
37137
|
-
return new Promise(function (fulfill, reject) {
|
37138
37134
|
|
37135
|
+
if (self.header) {
|
37136
|
+
return Promise.resolve(self.header);
|
37137
|
+
}
|
37138
|
+
|
37139
|
+
else {
|
37139
37140
|
|
37140
|
-
|
37141
|
-
fulfill(self.header);
|
37142
|
-
}
|
37141
|
+
self.header = {};
|
37143
37142
|
|
37143
|
+
if (self.includeCalls === false) {
|
37144
|
+
return Promise.resolve(self.header);
|
37145
|
+
}
|
37144
37146
|
else {
|
37145
37147
|
|
37146
|
-
self.
|
37147
|
-
|
37148
|
-
if (self.includeCalls === false) {
|
37149
|
-
fulfill(self.header);
|
37150
|
-
}
|
37151
|
-
else {
|
37148
|
+
var readURL = self.url + "/callsets/search";
|
37152
37149
|
|
37153
|
-
|
37150
|
+
return igv.ga4ghSearch({
|
37151
|
+
url: readURL,
|
37152
|
+
fields: "nextPageToken,callSets(id,name)",
|
37153
|
+
body: {
|
37154
|
+
"variantSetIds": (Array.isArray(self.variantSetId) ? self.variantSetId : [self.variantSetId]),
|
37155
|
+
"pageSize": "10000"
|
37156
|
+
},
|
37157
|
+
decode: function (json) {
|
37158
|
+
// If specific callSetIds are specified filter to those
|
37159
|
+
if (self.callSetIds) {
|
37160
|
+
var filteredCallSets = [],
|
37161
|
+
csIdSet = new Set();
|
37154
37162
|
|
37155
|
-
|
37156
|
-
|
37157
|
-
|
37158
|
-
|
37159
|
-
|
37160
|
-
|
37161
|
-
|
37162
|
-
|
37163
|
-
|
37164
|
-
if (self.callSetIds) {
|
37165
|
-
var filteredCallSets = [],
|
37166
|
-
csIdSet = new Set();
|
37167
|
-
|
37168
|
-
self.callSetIds.forEach(function (csid) {
|
37169
|
-
csIdSet.add(csid);
|
37170
|
-
})
|
37171
|
-
json.callSets.forEach(function (cs) {
|
37172
|
-
if (csIdSet.has(cs.id)) {
|
37173
|
-
filteredCallSets.push(cs);
|
37174
|
-
}
|
37175
|
-
});
|
37176
|
-
return filteredCallSets;
|
37177
|
-
}
|
37178
|
-
else {
|
37179
|
-
return json.callSets;
|
37180
|
-
}
|
37163
|
+
self.callSetIds.forEach(function (csid) {
|
37164
|
+
csIdSet.add(csid);
|
37165
|
+
})
|
37166
|
+
json.callSets.forEach(function (cs) {
|
37167
|
+
if (csIdSet.has(cs.id)) {
|
37168
|
+
filteredCallSets.push(cs);
|
37169
|
+
}
|
37170
|
+
});
|
37171
|
+
return filteredCallSets;
|
37181
37172
|
}
|
37182
|
-
|
37173
|
+
else {
|
37174
|
+
return json.callSets;
|
37175
|
+
}
|
37176
|
+
}
|
37177
|
+
})
|
37178
|
+
.then(function (callSets) {
|
37183
37179
|
self.header.callSets = callSets;
|
37184
|
-
|
37185
|
-
})
|
37186
|
-
}
|
37180
|
+
return self.header;
|
37181
|
+
})
|
37187
37182
|
}
|
37188
|
-
|
37189
|
-
});
|
37190
|
-
|
37183
|
+
}
|
37191
37184
|
}
|
37192
37185
|
|
37193
37186
|
|
@@ -37209,7 +37202,7 @@ var igv = (function (igv) {
|
|
37209
37202
|
|
37210
37203
|
return igv.ga4ghSearch({
|
37211
37204
|
url: readURL,
|
37212
|
-
fields: (self.includeCalls ? undefined : "nextPageToken,variants(id,variantSetId,names,referenceName,start,end,referenceBases,alternateBases,quality,
|
37205
|
+
fields: (self.includeCalls ? undefined : "nextPageToken,variants(id,variantSetId,names,referenceName,start,end,referenceBases,alternateBases,quality,filter,info)"),
|
37213
37206
|
body: {
|
37214
37207
|
"variantSetIds": (Array.isArray(self.variantSetId) ? self.variantSetId : [self.variantSetId]),
|
37215
37208
|
"callSetIds": (self.callSetIds ? self.callSetIds : undefined),
|
@@ -37219,10 +37212,18 @@ var igv = (function (igv) {
|
|
37219
37212
|
"pageSize": "10000"
|
37220
37213
|
},
|
37221
37214
|
decode: function (json) {
|
37215
|
+
|
37216
|
+
var v;
|
37217
|
+
|
37222
37218
|
var variants = [];
|
37223
37219
|
|
37224
37220
|
json.variants.forEach(function (json) {
|
37225
|
-
|
37221
|
+
|
37222
|
+
v = igv.createGAVariant(json);
|
37223
|
+
|
37224
|
+
if (!v.isRefBlock()) {
|
37225
|
+
variants.push(v);
|
37226
|
+
}
|
37226
37227
|
});
|
37227
37228
|
|
37228
37229
|
return variants;
|
@@ -48555,9 +48556,17 @@ var igv = (function (igv) {
|
|
48555
48556
|
};
|
48556
48557
|
|
48557
48558
|
igv.TrackView.prototype.setDataRange = function (min, max, autoscale) {
|
48558
|
-
|
48559
|
-
|
48559
|
+
|
48560
|
+
if (min !== undefined) {
|
48561
|
+
this.track.dataRange.min = min;
|
48562
|
+
}
|
48563
|
+
|
48564
|
+
if (max !== undefined) {
|
48565
|
+
this.track.dataRange.max = max;
|
48566
|
+
}
|
48567
|
+
|
48560
48568
|
this.track.autoscale = autoscale;
|
48569
|
+
|
48561
48570
|
this.update();
|
48562
48571
|
};
|
48563
48572
|
|
@@ -49934,7 +49943,7 @@ var igv = (function (igv) {
|
|
49934
49943
|
if (!infoStr) return undefined;
|
49935
49944
|
|
49936
49945
|
var info = {};
|
49937
|
-
infoStr.split(';').forEach(function (elem) {
|
49946
|
+
infoStr.split('; ').forEach(function (elem) {
|
49938
49947
|
var element = elem.split('=');
|
49939
49948
|
info[element[0]] = element[1];
|
49940
49949
|
});
|
@@ -49952,11 +49961,11 @@ var igv = (function (igv) {
|
|
49952
49961
|
variant.start = parseInt(json.start); // Might get overriden below
|
49953
49962
|
variant.end = parseInt(json.end); // Might get overriden below
|
49954
49963
|
variant.pos = variant.start + 1; // GA4GH is 0 based.
|
49955
|
-
variant.names =
|
49956
|
-
variant.referenceBases = json.referenceBases
|
49957
|
-
variant.alternateBases = json.alternateBases
|
49964
|
+
variant.names = arrayToString(json.names, "; ");
|
49965
|
+
variant.referenceBases = json.referenceBases;
|
49966
|
+
variant.alternateBases = arrayToString(json.alternateBases);
|
49958
49967
|
variant.quality = json.quality;
|
49959
|
-
variant.filter =
|
49968
|
+
variant.filter = arrayToString(json.filter);
|
49960
49969
|
variant.info = json.info;
|
49961
49970
|
|
49962
49971
|
|
@@ -49990,10 +49999,11 @@ var igv = (function (igv) {
|
|
49990
49999
|
//Alleles
|
49991
50000
|
var altTokens = variant.alternateBases.split(","),
|
49992
50001
|
minAltLength = variant.referenceBases.length,
|
49993
|
-
maxAltLength = variant.referenceBases.length
|
50002
|
+
maxAltLength = variant.referenceBases.length,
|
50003
|
+
start, end;
|
49994
50004
|
|
49995
50005
|
|
49996
|
-
if (variant.info["PERIOD"]) {
|
50006
|
+
if (variant.info && variant.info["PERIOD"]) {
|
49997
50007
|
variant.type = 'str';
|
49998
50008
|
}
|
49999
50009
|
|
@@ -50007,7 +50017,7 @@ var igv = (function (igv) {
|
|
50007
50017
|
variant.start = variant.pos - 1;
|
50008
50018
|
variant.end = variant.start + variant.referenceBases.length;
|
50009
50019
|
|
50010
|
-
} else if (
|
50020
|
+
} else if (isRef(variant.alternateBases)) {
|
50011
50021
|
variant.type = "refblock";
|
50012
50022
|
}
|
50013
50023
|
|
@@ -50015,14 +50025,16 @@ var igv = (function (igv) {
|
|
50015
50025
|
variant.heterozygosity = 0;
|
50016
50026
|
|
50017
50027
|
} else {
|
50018
|
-
|
50028
|
+
|
50029
|
+
altTokens.forEach(function (alt, index) {
|
50030
|
+
|
50019
50031
|
var a, s, e, diff;
|
50020
50032
|
|
50021
50033
|
variant.alleles.push(alt);
|
50022
50034
|
|
50023
50035
|
// Adjust for padding, used for insertions and deletions, unless variant is a short tandem repeat.
|
50024
50036
|
|
50025
|
-
if (
|
50037
|
+
if ("str" !== variant.type && alt.length > 0) {
|
50026
50038
|
|
50027
50039
|
diff = variant.referenceBases.length - alt.length;
|
50028
50040
|
|
@@ -50033,20 +50045,25 @@ var igv = (function (igv) {
|
|
50033
50045
|
} else if (diff < 0) {
|
50034
50046
|
// Insertion, assume left padded, insertion begins to "right" of last ref base
|
50035
50047
|
s = variant.pos - 1 + variant.referenceBases.length;
|
50036
|
-
e = s + 1; // Insertion between s &
|
50048
|
+
e = s + 1; // Insertion between s & e
|
50037
50049
|
} else {
|
50038
50050
|
s = variant.pos - 1;
|
50039
50051
|
e = s + 1;
|
50040
50052
|
}
|
50041
|
-
|
50042
|
-
|
50053
|
+
|
50054
|
+
start = start === undefined ? s : Math.min(start, s);
|
50055
|
+
end = end === undefined ? e : Math.max(end, e);
|
50043
50056
|
}
|
50044
50057
|
|
50045
50058
|
minAltLength = Math.min(minAltLength, alt.length);
|
50046
50059
|
maxAltLength = Math.max(maxAltLength, alt.length);
|
50047
50060
|
|
50048
50061
|
});
|
50049
|
-
|
50062
|
+
|
50063
|
+
variant.start = start;
|
50064
|
+
variant.end = end;
|
50065
|
+
|
50066
|
+
if (variant.info && variant.info.AC && variant.info.AN) {
|
50050
50067
|
variant.heterozygosity = calcHeterozygosity(variant.info.AC, variant.info.AN).toFixed(3);
|
50051
50068
|
}
|
50052
50069
|
}
|
@@ -50075,6 +50092,16 @@ var igv = (function (igv) {
|
|
50075
50092
|
return 1 - sum;
|
50076
50093
|
};
|
50077
50094
|
|
50095
|
+
|
50096
|
+
function isRef(altAlleles) {
|
50097
|
+
|
50098
|
+
return !altAlleles ||
|
50099
|
+
altAlleles.trim().length === 0 ||
|
50100
|
+
altAlleles === "<NON_REF>" ||
|
50101
|
+
altAlleles === "<*>";
|
50102
|
+
|
50103
|
+
};
|
50104
|
+
|
50078
50105
|
}
|
50079
50106
|
|
50080
50107
|
igv.Variant = function () {
|
@@ -50111,29 +50138,27 @@ var igv = (function (igv) {
|
|
50111
50138
|
if (this.info) {
|
50112
50139
|
fields.push('<hr>');
|
50113
50140
|
Object.keys(this.info).forEach(function (key) {
|
50114
|
-
fields.push({name: key, value:
|
50141
|
+
fields.push({name: key, value: arrayToString(self.info[key])});
|
50115
50142
|
});
|
50116
50143
|
}
|
50117
50144
|
return fields;
|
50118
50145
|
|
50146
|
+
|
50147
|
+
|
50119
50148
|
};
|
50120
|
-
|
50121
|
-
|
50122
|
-
function arrayToCommaString(value) {
|
50123
|
-
if (!(Array.isArray(value))) {
|
50124
|
-
return value;
|
50125
|
-
}
|
50126
|
-
return value.join(',');
|
50127
|
-
}
|
50128
50149
|
|
50150
|
+
igv.Variant.prototype.isRefBlock = function () {
|
50151
|
+
return "refblock" === this.type;
|
50152
|
+
}
|
50129
50153
|
|
50130
|
-
function
|
50154
|
+
function arrayToString(value, delim) {
|
50131
50155
|
|
50132
|
-
|
50133
|
-
altAlleles.trim().length === 0 ||
|
50134
|
-
altAlleles === "\u003cNON_REF\u003e" ||
|
50135
|
-
altAlleles === "\u003c*\u003e";
|
50156
|
+
if(delim === undefined) delim = ",";
|
50136
50157
|
|
50158
|
+
if (!(Array.isArray(value))) {
|
50159
|
+
return value;
|
50160
|
+
}
|
50161
|
+
return value.join(delim);
|
50137
50162
|
}
|
50138
50163
|
|
50139
50164
|
return igv;
|
@@ -50390,7 +50415,7 @@ var igv = (function (igv) {
|
|
50390
50415
|
ctx.fillRect(px, py, pw, h);
|
50391
50416
|
|
50392
50417
|
|
50393
|
-
if (
|
50418
|
+
if (nCalls > 0 && variant.calls && "COLLAPSED" !== this.displayMode) {
|
50394
50419
|
|
50395
50420
|
h = callHeight;
|
50396
50421
|
|
@@ -51071,8 +51096,8 @@ var igv = (function (igv) {
|
|
51071
51096
|
if (tokens.length >= 8) {
|
51072
51097
|
|
51073
51098
|
variant = igv.createVCFVariant(tokens);
|
51074
|
-
|
51075
|
-
if(
|
51099
|
+
|
51100
|
+
if (variant.isRefBlock()) continue; // Skip reference blocks
|
51076
51101
|
|
51077
51102
|
variant.header = this.header; // Keep a pointer to the header to interpret fields for popup text
|
51078
51103
|
allFeatures.push(variant);
|
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.8
|
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:
|
11
|
+
date: 2018-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|