igv 3.5.1 → 3.5.2

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.
package/README.md CHANGED
@@ -18,19 +18,19 @@ Below are examples and a quickstart guide. See the [developer documentation](ht
18
18
 
19
19
  # Examples
20
20
 
21
- ***[Alignments](https://igv.org/web/release/3.5.1/examples/cram-vcf.html)***
21
+ ***[Alignments](https://igv.org/web/release/3.5.2/examples/cram-vcf.html)***
22
22
 
23
- ***[Interactions](https://igv.org/web/release/3.5.1/examples/interact.html)***
23
+ ***[Interactions](https://igv.org/web/release/3.5.2/examples/interact.html)***
24
24
 
25
- ***[Copy number](https://igv.org/web/release/3.5.1/examples/copyNumber.html)***
25
+ ***[Copy number](https://igv.org/web/release/3.5.2/examples/copyNumber.html)***
26
26
 
27
- ***[Multiple regions](https://igv.org/web/release/3.5.1/examples/multi-locus.html)***
27
+ ***[Multiple regions](https://igv.org/web/release/3.5.2/examples/multi-locus.html)***
28
28
 
29
- ***[Mutation Annotation Format (MAF)](https://igv.org/web/release/3.5.1/examples/maf-tcga.html)***
29
+ ***[Mutation Annotation Format (MAF)](https://igv.org/web/release/3.5.2/examples/maf-tcga.html)***
30
30
 
31
- ***[Variant color options](https://igv.org/web/release/3.5.1/examples/variant-colors.html)***
31
+ ***[Variant color options](https://igv.org/web/release/3.5.2/examples/variant-colors.html)***
32
32
 
33
- ***[More](https://igv.org/web/release/3.5.1/examples/)***
33
+ ***[More](https://igv.org/web/release/3.5.2/examples/)***
34
34
 
35
35
 
36
36
  # Quickstart
@@ -39,18 +39,18 @@ Below are examples and a quickstart guide. See the [developer documentation](ht
39
39
  igv.js consists of a single javascript file with no external dependencies.
40
40
 
41
41
  Pre-built files for script include, AMD, or CJS module systems (igv.min.js) and an ES6 module (igv.esm.min.js)
42
- can be downloaded from [https://cdn.jsdelivr.net/npm/igv@3.5.1/dist/](https://cdn.jsdelivr.net/npm/igv@3.5.1/dist/).
42
+ can be downloaded from [https://cdn.jsdelivr.net/npm/igv@3.5.2/dist/](https://cdn.jsdelivr.net/npm/igv@3.5.2/dist/).
43
43
 
44
44
  To import igv as an ES6 module
45
45
 
46
46
  ```javascript
47
- import igv from "https://cdn.jsdelivr.net/npm/igv@3.5.1/dist/igv.esm.min.js"
47
+ import igv from "https://cdn.jsdelivr.net/npm/igv@3.5.2/dist/igv.esm.min.js"
48
48
  ```
49
49
 
50
50
  Or as a script include (defines the "igv" global)
51
51
 
52
52
  ```html
53
- <script src="https://cdn.jsdelivr.net/npm/igv@3.5.1/dist/igv.min.js"></script>
53
+ <script src="https://cdn.jsdelivr.net/npm/igv@3.5.2/dist/igv.min.js"></script>
54
54
  ```
55
55
 
56
56
  Alternatively you can install with npm
package/dist/igv.esm.js CHANGED
@@ -27011,14 +27011,14 @@ function getAminoAcidLetterWithExonGap(strand, phase, phaseExtentStart, phaseExt
27011
27011
  if (phase) {
27012
27012
  stringA = sequenceInterval.getSequence(phaseExtentStart, phaseExtentEnd);
27013
27013
 
27014
- if (undefined === stringA) {
27014
+ if (!stringA) {
27015
27015
  return undefined
27016
27016
  }
27017
27017
 
27018
27018
  [ss, ee] = [getEonStart(riteExon), getEonStart(riteExon) + (3 - phase)];
27019
27019
  stringB = sequenceInterval.getSequence(ss, ee);
27020
27020
 
27021
- if (undefined === stringB) {
27021
+ if (!stringB) {
27022
27022
  return undefined
27023
27023
  }
27024
27024
 
@@ -27030,7 +27030,7 @@ function getAminoAcidLetterWithExonGap(strand, phase, phaseExtentStart, phaseExt
27030
27030
  if (remainder) {
27031
27031
  stringB = sequenceInterval.getSequence(remainder.start, remainder.end);
27032
27032
 
27033
- if (undefined === stringB) {
27033
+ if (!stringB) {
27034
27034
  return undefined
27035
27035
  }
27036
27036
 
@@ -27038,7 +27038,7 @@ function getAminoAcidLetterWithExonGap(strand, phase, phaseExtentStart, phaseExt
27038
27038
  const leftEnd = getExonEnd(leftExon);
27039
27039
  stringA = sequenceInterval.getSequence(leftEnd - leftPhase, leftEnd);
27040
27040
 
27041
- if (undefined === stringA) {
27041
+ if (!stringA) {
27042
27042
  return undefined
27043
27043
  }
27044
27044
 
@@ -42825,6 +42825,49 @@ class Locus {
42825
42825
  const end = Number.parseInt(se[1].replace(/,/g, ""));
42826
42826
  return new Locus({chr, start, end})
42827
42827
  }
42828
+
42829
+ /**
42830
+ * Return true if the locus string represents a single base, e.g. "chr1:12345" or "chr1:12345-12345"
42831
+ * @param locus
42832
+ * @returns {boolean}
42833
+ */
42834
+ static isSingleBaseLocusString(locus) {
42835
+
42836
+ if (!locus || typeof locus !== 'string') {
42837
+ return false
42838
+ }
42839
+
42840
+ const parts = locus.split(':');
42841
+ if (parts.length <= 1) {
42842
+ return false
42843
+ }
42844
+
42845
+ const range = parts[1].replace(/,/g, '');
42846
+ if (!range) {
42847
+ return false
42848
+ }
42849
+
42850
+ const rangeParts = range.split('-');
42851
+ const startString = rangeParts[0];
42852
+ const start = parseInt(startString, 10);
42853
+
42854
+ if (String(start) !== startString || !Number.isInteger(start)) {
42855
+ return false
42856
+ }
42857
+
42858
+ if (rangeParts.length === 1) {
42859
+ return true
42860
+ }
42861
+
42862
+ const endString = rangeParts[1];
42863
+ const end = parseInt(endString, 10);
42864
+
42865
+ if (String(end) !== endString || !Number.isInteger(end)) {
42866
+ return false
42867
+ }
42868
+
42869
+ return start === end
42870
+ }
42828
42871
  }
42829
42872
 
42830
42873
  /*!
@@ -66980,7 +67023,7 @@ function createReferenceFrameList(loci, genome, browserFlanking, minimumBases, v
66980
67023
  })
66981
67024
  }
66982
67025
 
66983
- const _version = "3.5.1";
67026
+ const _version = "3.5.2";
66984
67027
  function version() {
66985
67028
  return _version
66986
67029
  }
@@ -74235,6 +74278,12 @@ class Browser {
74235
74278
 
74236
74279
  await this.loadTrackList(nonLocalTrackConfigurations);
74237
74280
 
74281
+ // If an initial locus is defined and represents a single basedo a "search" here. This will force micro
74282
+ // adjustments after width of track column(s) is known. This can be an issue when the center gide is shown
74283
+ // Without this adjustment the single base would be off center by a few pixels.
74284
+ if (session.locus && Locus.isSingleBaseLocusString(session.locus)) {
74285
+ await this.search(session.locus);
74286
+ }
74238
74287
  }
74239
74288
 
74240
74289
  cleanHouseForSession() {