@jbrowse/plugin-alignments 2.1.0 → 2.1.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.
Files changed (115) hide show
  1. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +61 -90
  2. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js.map +1 -1
  3. package/dist/AlignmentsFeatureDetail/index.js +14 -16
  4. package/dist/AlignmentsFeatureDetail/index.js.map +1 -1
  5. package/dist/AlignmentsTrack/index.js +8 -8
  6. package/dist/AlignmentsTrack/index.js.map +1 -1
  7. package/dist/BamAdapter/BamAdapter.js +157 -336
  8. package/dist/BamAdapter/BamAdapter.js.map +1 -1
  9. package/dist/BamAdapter/BamSlightlyLazyFeature.js +68 -103
  10. package/dist/BamAdapter/BamSlightlyLazyFeature.js.map +1 -1
  11. package/dist/BamAdapter/MismatchParser.js +96 -162
  12. package/dist/BamAdapter/MismatchParser.js.map +1 -1
  13. package/dist/BamAdapter/configSchema.js +27 -29
  14. package/dist/BamAdapter/configSchema.js.map +1 -1
  15. package/dist/BamAdapter/index.js +9 -11
  16. package/dist/BamAdapter/index.js.map +1 -1
  17. package/dist/CramAdapter/CramAdapter.js +193 -351
  18. package/dist/CramAdapter/CramAdapter.js.map +1 -1
  19. package/dist/CramAdapter/CramSlightlyLazyFeature.js +119 -154
  20. package/dist/CramAdapter/CramSlightlyLazyFeature.js.map +1 -1
  21. package/dist/CramAdapter/CramTestAdapters.js +51 -148
  22. package/dist/CramAdapter/CramTestAdapters.js.map +1 -1
  23. package/dist/CramAdapter/configSchema.js +23 -25
  24. package/dist/CramAdapter/configSchema.js.map +1 -1
  25. package/dist/CramAdapter/index.js +9 -11
  26. package/dist/CramAdapter/index.js.map +1 -1
  27. package/dist/HtsgetBamAdapter/HtsgetBamAdapter.js +25 -87
  28. package/dist/HtsgetBamAdapter/HtsgetBamAdapter.js.map +1 -1
  29. package/dist/HtsgetBamAdapter/configSchema.js +16 -18
  30. package/dist/HtsgetBamAdapter/configSchema.js.map +1 -1
  31. package/dist/HtsgetBamAdapter/index.js +15 -19
  32. package/dist/HtsgetBamAdapter/index.js.map +1 -1
  33. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +14 -15
  34. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js.map +1 -1
  35. package/dist/LinearAlignmentsDisplay/index.js +7 -7
  36. package/dist/LinearAlignmentsDisplay/index.js.map +1 -1
  37. package/dist/LinearAlignmentsDisplay/models/configSchema.js +5 -5
  38. package/dist/LinearAlignmentsDisplay/models/configSchema.js.map +1 -1
  39. package/dist/LinearAlignmentsDisplay/models/model.js +64 -140
  40. package/dist/LinearAlignmentsDisplay/models/model.js.map +1 -1
  41. package/dist/LinearPileupDisplay/components/ColorByModifications.js +24 -53
  42. package/dist/LinearPileupDisplay/components/ColorByModifications.js.map +1 -1
  43. package/dist/LinearPileupDisplay/components/ColorByTag.js +14 -30
  44. package/dist/LinearPileupDisplay/components/ColorByTag.js.map +1 -1
  45. package/dist/LinearPileupDisplay/components/FilterByTag.js +33 -49
  46. package/dist/LinearPileupDisplay/components/FilterByTag.js.map +1 -1
  47. package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js +7 -7
  48. package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js.map +1 -1
  49. package/dist/LinearPileupDisplay/components/SetFeatureHeight.js +17 -33
  50. package/dist/LinearPileupDisplay/components/SetFeatureHeight.js.map +1 -1
  51. package/dist/LinearPileupDisplay/components/SetMaxHeight.js +14 -30
  52. package/dist/LinearPileupDisplay/components/SetMaxHeight.js.map +1 -1
  53. package/dist/LinearPileupDisplay/components/SortByTag.js +14 -30
  54. package/dist/LinearPileupDisplay/components/SortByTag.js.map +1 -1
  55. package/dist/LinearPileupDisplay/configSchema.js +4 -4
  56. package/dist/LinearPileupDisplay/configSchema.js.map +1 -1
  57. package/dist/LinearPileupDisplay/index.js +7 -7
  58. package/dist/LinearPileupDisplay/index.js.map +1 -1
  59. package/dist/LinearPileupDisplay/model.d.ts +2 -2
  60. package/dist/LinearPileupDisplay/model.js +534 -644
  61. package/dist/LinearPileupDisplay/model.js.map +1 -1
  62. package/dist/LinearSNPCoverageDisplay/components/Tooltip.d.ts +1 -1
  63. package/dist/LinearSNPCoverageDisplay/components/Tooltip.js +30 -78
  64. package/dist/LinearSNPCoverageDisplay/components/Tooltip.js.map +1 -1
  65. package/dist/LinearSNPCoverageDisplay/index.js +7 -7
  66. package/dist/LinearSNPCoverageDisplay/index.js.map +1 -1
  67. package/dist/LinearSNPCoverageDisplay/models/configSchema.js +4 -4
  68. package/dist/LinearSNPCoverageDisplay/models/configSchema.js.map +1 -1
  69. package/dist/LinearSNPCoverageDisplay/models/model.d.ts +1 -1
  70. package/dist/LinearSNPCoverageDisplay/models/model.js +170 -244
  71. package/dist/LinearSNPCoverageDisplay/models/model.js.map +1 -1
  72. package/dist/NestedFrequencyTable.js +27 -40
  73. package/dist/NestedFrequencyTable.js.map +1 -1
  74. package/dist/PileupRPC/rpcMethods.js +63 -191
  75. package/dist/PileupRPC/rpcMethods.js.map +1 -1
  76. package/dist/PileupRenderer/PileupLayoutSession.js +25 -47
  77. package/dist/PileupRenderer/PileupLayoutSession.js.map +1 -1
  78. package/dist/PileupRenderer/PileupRenderer.js +395 -529
  79. package/dist/PileupRenderer/PileupRenderer.js.map +1 -1
  80. package/dist/PileupRenderer/components/PileupRendering.js +41 -68
  81. package/dist/PileupRenderer/components/PileupRendering.js.map +1 -1
  82. package/dist/PileupRenderer/configSchema.js +2 -2
  83. package/dist/PileupRenderer/configSchema.js.map +1 -1
  84. package/dist/PileupRenderer/index.js +9 -11
  85. package/dist/PileupRenderer/index.js.map +1 -1
  86. package/dist/PileupRenderer/sortUtil.js +36 -40
  87. package/dist/PileupRenderer/sortUtil.js.map +1 -1
  88. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js +229 -415
  89. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js.map +1 -1
  90. package/dist/SNPCoverageAdapter/configSchema.js +5 -9
  91. package/dist/SNPCoverageAdapter/configSchema.js.map +1 -1
  92. package/dist/SNPCoverageAdapter/index.js +17 -21
  93. package/dist/SNPCoverageAdapter/index.js.map +1 -1
  94. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js +175 -259
  95. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js.map +1 -1
  96. package/dist/SNPCoverageRenderer/configSchema.js +1 -1
  97. package/dist/SNPCoverageRenderer/configSchema.js.map +1 -1
  98. package/dist/SNPCoverageRenderer/index.js +10 -12
  99. package/dist/SNPCoverageRenderer/index.js.map +1 -1
  100. package/dist/index.js +40 -58
  101. package/dist/index.js.map +1 -1
  102. package/dist/shared.js +23 -78
  103. package/dist/shared.js.map +1 -1
  104. package/dist/util.js +13 -66
  105. package/dist/util.js.map +1 -1
  106. package/esm/LinearPileupDisplay/model.d.ts +2 -2
  107. package/esm/LinearSNPCoverageDisplay/models/model.d.ts +1 -1
  108. package/esm/PileupRenderer/PileupRenderer.js +0 -2
  109. package/esm/PileupRenderer/PileupRenderer.js.map +1 -1
  110. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.js +0 -1
  111. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.js.map +1 -1
  112. package/package.json +2 -3
  113. package/src/AlignmentsFeatureDetail/__snapshots__/index.test.js.snap +12 -12
  114. package/src/PileupRenderer/PileupRenderer.tsx +0 -2
  115. package/src/SNPCoverageRenderer/SNPCoverageRenderer.ts +0 -1
@@ -1,145 +1,110 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __read = (this && this.__read) || function (o, n) {
14
- var m = typeof Symbol === "function" && o[Symbol.iterator];
15
- if (!m) return o;
16
- var i = m.call(o), r, ar = [], e;
17
- try {
18
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
19
- }
20
- catch (error) { e = { error: error }; }
21
- finally {
22
- try {
23
- if (r && !r.done && (m = i["return"])) m.call(i);
24
- }
25
- finally { if (e) throw e.error; }
26
- }
27
- return ar;
28
- };
29
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
30
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
31
- if (ar || !(i in from)) {
32
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
33
- ar[i] = from[i];
34
- }
35
- }
36
- return to.concat(ar || Array.prototype.slice.call(from));
37
- };
38
2
  Object.defineProperty(exports, "__esModule", { value: true });
39
- var MismatchParser_1 = require("./MismatchParser");
40
- var BamSlightlyLazyFeature = /** @class */ (function () {
3
+ const MismatchParser_1 = require("./MismatchParser");
4
+ class BamSlightlyLazyFeature {
41
5
  // uses parameter properties to automatically create fields on the class
42
6
  // https://www.typescriptlang.org/docs/handbook/classes.html#parameter-properties
43
- function BamSlightlyLazyFeature(record, adapter, ref) {
7
+ constructor(record, adapter, ref) {
44
8
  this.record = record;
45
9
  this.adapter = adapter;
46
10
  this.ref = ref;
47
11
  }
48
- BamSlightlyLazyFeature.prototype._get_name = function () {
12
+ _get_name() {
49
13
  return this.record.get('name');
50
- };
51
- BamSlightlyLazyFeature.prototype._get_type = function () {
14
+ }
15
+ _get_type() {
52
16
  return 'match';
53
- };
54
- BamSlightlyLazyFeature.prototype._get_score = function () {
17
+ }
18
+ _get_score() {
55
19
  return this.record.get('mq');
56
- };
57
- BamSlightlyLazyFeature.prototype._get_flags = function () {
20
+ }
21
+ _get_flags() {
58
22
  return this.record.flags;
59
- };
60
- BamSlightlyLazyFeature.prototype._get_strand = function () {
23
+ }
24
+ _get_strand() {
61
25
  return this.record.isReverseComplemented() ? -1 : 1;
62
- };
63
- BamSlightlyLazyFeature.prototype._get_pair_orientation = function () {
26
+ }
27
+ _get_pair_orientation() {
64
28
  return this.record.isPaired() ? this.record.getPairOrientation() : undefined;
65
- };
66
- BamSlightlyLazyFeature.prototype._get_next_seq_id = function () {
29
+ }
30
+ _get_next_seq_id() {
67
31
  return this.record._next_refid();
68
- };
69
- BamSlightlyLazyFeature.prototype._get_seq_id = function () {
32
+ }
33
+ _get_seq_id() {
70
34
  // @ts-ignore
71
35
  return this.record._refID;
72
- };
73
- BamSlightlyLazyFeature.prototype._get_next_refName = function () {
36
+ }
37
+ _get_next_refName() {
74
38
  return this.adapter.refIdToName(this.record._next_refid());
75
- };
76
- BamSlightlyLazyFeature.prototype._get_next_segment_position = function () {
77
- var _a = this, record = _a.record, adapter = _a.adapter;
39
+ }
40
+ _get_next_segment_position() {
41
+ const { record, adapter } = this;
78
42
  return record.isPaired()
79
- ? "".concat(adapter.refIdToName(record._next_refid()), ":").concat(record._next_pos() + 1)
43
+ ? `${adapter.refIdToName(record._next_refid())}:${record._next_pos() + 1}`
80
44
  : undefined;
81
- };
82
- BamSlightlyLazyFeature.prototype._get_seq = function () {
45
+ }
46
+ _get_seq() {
83
47
  return this.record.getReadBases();
84
- };
85
- BamSlightlyLazyFeature.prototype.qualRaw = function () {
48
+ }
49
+ qualRaw() {
86
50
  return this.record.qualRaw();
87
- };
88
- BamSlightlyLazyFeature.prototype.set = function () { };
89
- BamSlightlyLazyFeature.prototype.tags = function () {
90
- var properties = Object.getOwnPropertyNames(BamSlightlyLazyFeature.prototype);
91
- return __spreadArray([], __read(new Set(properties
92
- .filter(function (prop) {
93
- return prop.startsWith('_get_') &&
51
+ }
52
+ set() { }
53
+ tags() {
54
+ const properties = Object.getOwnPropertyNames(BamSlightlyLazyFeature.prototype);
55
+ return [
56
+ ...new Set(properties
57
+ .filter(prop => prop.startsWith('_get_') &&
94
58
  prop !== '_get_mismatches' &&
95
59
  prop !== '_get_tags' &&
96
60
  prop !== '_get_next_seq_id' &&
97
- prop !== '_get_seq_id';
98
- })
99
- .map(function (methodName) { return methodName.replace('_get_', ''); })
100
- .concat(this.record._tags()))), false);
101
- };
102
- BamSlightlyLazyFeature.prototype.id = function () {
103
- return "".concat(this.adapter.id, "-").concat(this.record.id());
104
- };
61
+ prop !== '_get_seq_id')
62
+ .map(methodName => methodName.replace('_get_', ''))
63
+ .concat(this.record._tags())),
64
+ ];
65
+ }
66
+ id() {
67
+ return `${this.adapter.id}-${this.record.id()}`;
68
+ }
105
69
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
106
- BamSlightlyLazyFeature.prototype.get = function (field) {
107
- var methodName = "_get_".concat(field);
70
+ get(field) {
71
+ const methodName = `_get_${field}`;
108
72
  // @ts-ignore
109
73
  if (this[methodName]) {
110
74
  // @ts-ignore
111
75
  return this[methodName]();
112
76
  }
113
77
  return this.record.get(field);
114
- };
115
- BamSlightlyLazyFeature.prototype._get_refName = function () {
78
+ }
79
+ _get_refName() {
116
80
  return this.adapter.refIdToName(this.record.seq_id());
117
- };
118
- BamSlightlyLazyFeature.prototype.parent = function () {
81
+ }
82
+ parent() {
119
83
  return undefined;
120
- };
121
- BamSlightlyLazyFeature.prototype.children = function () {
84
+ }
85
+ children() {
122
86
  return undefined;
123
- };
124
- BamSlightlyLazyFeature.prototype.pairedFeature = function () {
87
+ }
88
+ pairedFeature() {
125
89
  return false;
126
- };
127
- BamSlightlyLazyFeature.prototype.toJSON = function () {
128
- var _this = this;
129
- return __assign(__assign({}, Object.fromEntries(this.tags()
130
- .map(function (t) { return [t, _this.get(t)]; })
131
- .filter(function (elt) { return elt[1] !== undefined; }))), { uniqueId: this.id() });
132
- };
133
- BamSlightlyLazyFeature.prototype._get_mismatches = function () {
90
+ }
91
+ toJSON() {
92
+ return {
93
+ ...Object.fromEntries(this.tags()
94
+ .map(t => [t, this.get(t)])
95
+ .filter(elt => elt[1] !== undefined)),
96
+ uniqueId: this.id(),
97
+ };
98
+ }
99
+ _get_mismatches() {
134
100
  return (0, MismatchParser_1.getMismatches)(this.get('CIGAR'), this.get('MD'), this.get('seq'), this.ref, this.qualRaw());
135
- };
136
- BamSlightlyLazyFeature.prototype._get_clipPos = function () {
137
- var cigar = this.get('CIGAR') || '';
101
+ }
102
+ _get_clipPos() {
103
+ const cigar = this.get('CIGAR') || '';
138
104
  return this.get('strand') === -1
139
105
  ? +(cigar.match(/(\d+)[SH]$/) || [])[1] || 0
140
106
  : +(cigar.match(/^(\d+)([SH])/) || [])[1] || 0;
141
- };
142
- return BamSlightlyLazyFeature;
143
- }());
107
+ }
108
+ }
144
109
  exports.default = BamSlightlyLazyFeature;
145
110
  //# sourceMappingURL=BamSlightlyLazyFeature.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BamSlightlyLazyFeature.js","sourceRoot":"","sources":["../../src/BamAdapter/BamSlightlyLazyFeature.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BamSlightlyLazyFeature.js","sourceRoot":"","sources":["../../src/BamAdapter/BamSlightlyLazyFeature.ts"],"names":[],"mappings":"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"}
@@ -1,68 +1,24 @@
1
1
  "use strict";
2
- var __generator = (this && this.__generator) || function (thisArg, body) {
3
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
4
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
5
- function verb(n) { return function (v) { return step([n, v]); }; }
6
- function step(op) {
7
- if (f) throw new TypeError("Generator is already executing.");
8
- while (_) try {
9
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
10
- if (y = 0, t) op = [op[0] & 2, t.value];
11
- switch (op[0]) {
12
- case 0: case 1: t = op; break;
13
- case 4: _.label++; return { value: op[1], done: false };
14
- case 5: _.label++; y = op[1]; op = [0]; continue;
15
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
16
- default:
17
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
18
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
19
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
20
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
21
- if (t[2]) _.ops.pop();
22
- _.trys.pop(); continue;
23
- }
24
- op = body.call(thisArg, _);
25
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
26
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
27
- }
28
- };
29
- var __read = (this && this.__read) || function (o, n) {
30
- var m = typeof Symbol === "function" && o[Symbol.iterator];
31
- if (!m) return o;
32
- var i = m.call(o), r, ar = [], e;
33
- try {
34
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
35
- }
36
- catch (error) { e = { error: error }; }
37
- finally {
38
- try {
39
- if (r && !r.done && (m = i["return"])) m.call(i);
40
- }
41
- finally { if (e) throw e.error; }
42
- }
43
- return ar;
44
- };
45
2
  Object.defineProperty(exports, "__esModule", { value: true });
46
3
  exports.getModificationTypes = exports.getModificationPositions = exports.getNextRefPos = exports.getMismatches = exports.mdToMismatches = exports.cigarToMismatches = exports.parseCigar = void 0;
47
- var util_1 = require("@jbrowse/core/util");
48
- var mdRegex = new RegExp(/(\d+|\^[a-z]+|[a-z])/gi);
49
- var modificationRegex = new RegExp(/([A-Z])([-+])([^,.?]+)([.?])?/);
50
- function parseCigar(cigar) {
51
- if (cigar === void 0) { cigar = ''; }
4
+ const util_1 = require("@jbrowse/core/util");
5
+ const mdRegex = new RegExp(/(\d+|\^[a-z]+|[a-z])/gi);
6
+ const modificationRegex = new RegExp(/([A-Z])([-+])([^,.?]+)([.?])?/);
7
+ function parseCigar(cigar = '') {
52
8
  return cigar.split(/([MIDNSHPX=])/).slice(0, -1);
53
9
  }
54
10
  exports.parseCigar = parseCigar;
55
11
  function cigarToMismatches(ops, seq, ref, qual) {
56
- var roffset = 0; // reference offset
57
- var soffset = 0; // seq offset
58
- var mismatches = [];
59
- var hasRefAndSeq = ref && seq;
60
- for (var i = 0; i < ops.length; i += 2) {
61
- var len = +ops[i];
62
- var op = ops[i + 1];
12
+ let roffset = 0; // reference offset
13
+ let soffset = 0; // seq offset
14
+ const mismatches = [];
15
+ const hasRefAndSeq = ref && seq;
16
+ for (let i = 0; i < ops.length; i += 2) {
17
+ const len = +ops[i];
18
+ const op = ops[i + 1];
63
19
  if (op === 'M' || op === '=' || op === 'E') {
64
20
  if (hasRefAndSeq) {
65
- for (var j = 0; j < len; j++) {
21
+ for (let j = 0; j < len; j++) {
66
22
  if (
67
23
  // @ts-ignore in the full yarn build of the repo, this says that object is possibly undefined for some reason, ignored
68
24
  seq[soffset + j].toUpperCase() !== ref[roffset + j].toUpperCase()) {
@@ -82,7 +38,7 @@ function cigarToMismatches(ops, seq, ref, qual) {
82
38
  mismatches.push({
83
39
  start: roffset,
84
40
  type: 'insertion',
85
- base: "".concat(len),
41
+ base: `${len}`,
86
42
  length: 0,
87
43
  });
88
44
  soffset += len;
@@ -104,9 +60,9 @@ function cigarToMismatches(ops, seq, ref, qual) {
104
60
  });
105
61
  }
106
62
  else if (op === 'X') {
107
- var r = seq.slice(soffset, soffset + len);
108
- var q = (qual === null || qual === void 0 ? void 0 : qual.slice(soffset, soffset + len)) || [];
109
- for (var j = 0; j < len; j++) {
63
+ const r = seq.slice(soffset, soffset + len);
64
+ const q = (qual === null || qual === void 0 ? void 0 : qual.slice(soffset, soffset + len)) || [];
65
+ for (let j = 0; j < len; j++) {
110
66
  mismatches.push({
111
67
  start: roffset + j,
112
68
  type: 'mismatch',
@@ -121,7 +77,7 @@ function cigarToMismatches(ops, seq, ref, qual) {
121
77
  mismatches.push({
122
78
  start: roffset,
123
79
  type: 'hardclip',
124
- base: "H".concat(len),
80
+ base: `H${len}`,
125
81
  cliplen: len,
126
82
  length: 1,
127
83
  });
@@ -130,7 +86,7 @@ function cigarToMismatches(ops, seq, ref, qual) {
130
86
  mismatches.push({
131
87
  start: roffset,
132
88
  type: 'softclip',
133
- base: "S".concat(len),
89
+ base: `S${len}`,
134
90
  cliplen: len,
135
91
  length: 1,
136
92
  });
@@ -148,13 +104,13 @@ exports.cigarToMismatches = cigarToMismatches;
148
104
  * @returns array of mismatches and their positions
149
105
  */
150
106
  function mdToMismatches(mdstring, ops, cigarMismatches, seq, qual) {
151
- var mismatchRecords = [];
152
- var curr = { start: 0, base: '', length: 0, type: 'mismatch' };
153
- var skips = cigarMismatches.filter(function (cigar) { return cigar.type === 'skip'; });
154
- var lastCigar = 0;
155
- var lastTemplateOffset = 0;
156
- var lastRefOffset = 0;
157
- var lastSkipPos = 0;
107
+ const mismatchRecords = [];
108
+ let curr = { start: 0, base: '', length: 0, type: 'mismatch' };
109
+ const skips = cigarMismatches.filter(cigar => cigar.type === 'skip');
110
+ let lastCigar = 0;
111
+ let lastTemplateOffset = 0;
112
+ let lastRefOffset = 0;
113
+ let lastSkipPos = 0;
158
114
  // convert a position on the reference sequence to a position
159
115
  // on the template sequence, taking into account hard and soft
160
116
  // clipping of reads
@@ -169,11 +125,11 @@ function mdToMismatches(mdstring, ops, cigarMismatches, seq, qual) {
169
125
  };
170
126
  }
171
127
  function getTemplateCoordLocal(refCoord) {
172
- var templateOffset = lastTemplateOffset;
173
- var refOffset = lastRefOffset;
174
- for (var i = lastCigar; i < ops.length && refOffset <= refCoord; i += 2, lastCigar = i) {
175
- var len = +ops[i];
176
- var op = ops[i + 1];
128
+ let templateOffset = lastTemplateOffset;
129
+ let refOffset = lastRefOffset;
130
+ for (let i = lastCigar; i < ops.length && refOffset <= refCoord; i += 2, lastCigar = i) {
131
+ const len = +ops[i];
132
+ const op = ops[i + 1];
177
133
  if (op === 'S' || op === 'I') {
178
134
  templateOffset += len;
179
135
  }
@@ -190,10 +146,10 @@ function mdToMismatches(mdstring, ops, cigarMismatches, seq, qual) {
190
146
  return templateOffset - (refOffset - refCoord);
191
147
  }
192
148
  // now actually parse the MD string
193
- var md = mdstring.match(mdRegex) || [];
194
- for (var i = 0; i < md.length; i++) {
195
- var token = md[i];
196
- var num = +token;
149
+ const md = mdstring.match(mdRegex) || [];
150
+ for (let i = 0; i < md.length; i++) {
151
+ const token = md[i];
152
+ const num = +token;
197
153
  if (!Number.isNaN(num)) {
198
154
  curr.start += num;
199
155
  }
@@ -202,10 +158,10 @@ function mdToMismatches(mdstring, ops, cigarMismatches, seq, qual) {
202
158
  }
203
159
  else {
204
160
  // mismatch
205
- for (var j = 0; j < token.length; j += 1) {
161
+ for (let j = 0; j < token.length; j += 1) {
206
162
  curr.length = 1;
207
163
  while (lastSkipPos < skips.length) {
208
- var mismatch = skips[lastSkipPos];
164
+ const mismatch = skips[lastSkipPos];
209
165
  if (curr.start >= mismatch.start) {
210
166
  curr.start += mismatch.length;
211
167
  lastSkipPos++;
@@ -214,9 +170,9 @@ function mdToMismatches(mdstring, ops, cigarMismatches, seq, qual) {
214
170
  break;
215
171
  }
216
172
  }
217
- var s = getTemplateCoordLocal(curr.start);
173
+ const s = getTemplateCoordLocal(curr.start);
218
174
  curr.base = seq[s] || 'X';
219
- var qualScore = qual === null || qual === void 0 ? void 0 : qual[s];
175
+ const qualScore = qual === null || qual === void 0 ? void 0 : qual[s];
220
176
  if (qualScore) {
221
177
  curr.qual = qualScore;
222
178
  }
@@ -229,8 +185,8 @@ function mdToMismatches(mdstring, ops, cigarMismatches, seq, qual) {
229
185
  }
230
186
  exports.mdToMismatches = mdToMismatches;
231
187
  function getMismatches(cigar, md, seq, ref, qual) {
232
- var mismatches = [];
233
- var ops = parseCigar(cigar);
188
+ let mismatches = [];
189
+ const ops = parseCigar(cigar);
234
190
  // parse the CIGAR tag if it has one
235
191
  if (cigar) {
236
192
  mismatches = mismatches.concat(cigarToMismatches(ops, seq, ref, qual));
@@ -244,75 +200,53 @@ function getMismatches(cigar, md, seq, ref, qual) {
244
200
  exports.getMismatches = getMismatches;
245
201
  // get relative reference sequence positions for positions given relative to
246
202
  // the read sequence
247
- function getNextRefPos(cigarOps, positions) {
248
- var readPos, refPos, currPos, i, len, op, i_1, i_2;
249
- return __generator(this, function (_a) {
250
- switch (_a.label) {
251
- case 0:
252
- readPos = 0;
253
- refPos = 0;
254
- currPos = 0;
255
- i = 0;
256
- _a.label = 1;
257
- case 1:
258
- if (!(i < cigarOps.length && currPos < positions.length)) return [3 /*break*/, 9];
259
- len = +cigarOps[i];
260
- op = cigarOps[i + 1];
261
- if (!(op === 'S' || op === 'I')) return [3 /*break*/, 2];
262
- for (i_1 = 0; i_1 < len && currPos < positions.length; i_1++) {
263
- if (positions[currPos] === readPos + i_1) {
264
- currPos++;
265
- }
203
+ function* getNextRefPos(cigarOps, positions) {
204
+ let readPos = 0;
205
+ let refPos = 0;
206
+ let currPos = 0;
207
+ for (let i = 0; i < cigarOps.length && currPos < positions.length; i += 2) {
208
+ const len = +cigarOps[i];
209
+ const op = cigarOps[i + 1];
210
+ if (op === 'S' || op === 'I') {
211
+ for (let i = 0; i < len && currPos < positions.length; i++) {
212
+ if (positions[currPos] === readPos + i) {
213
+ currPos++;
266
214
  }
267
- readPos += len;
268
- return [3 /*break*/, 8];
269
- case 2:
270
- if (!(op === 'D' || op === 'N')) return [3 /*break*/, 3];
271
- refPos += len;
272
- return [3 /*break*/, 8];
273
- case 3:
274
- if (!(op === 'M' || op === 'X' || op === '=')) return [3 /*break*/, 8];
275
- i_2 = 0;
276
- _a.label = 4;
277
- case 4:
278
- if (!(i_2 < len && currPos < positions.length)) return [3 /*break*/, 7];
279
- if (!(positions[currPos] === readPos + i_2)) return [3 /*break*/, 6];
280
- return [4 /*yield*/, refPos + i_2];
281
- case 5:
282
- _a.sent();
283
- currPos++;
284
- _a.label = 6;
285
- case 6:
286
- i_2++;
287
- return [3 /*break*/, 4];
288
- case 7:
289
- readPos += len;
290
- refPos += len;
291
- _a.label = 8;
292
- case 8:
293
- i += 2;
294
- return [3 /*break*/, 1];
295
- case 9: return [2 /*return*/];
215
+ }
216
+ readPos += len;
217
+ }
218
+ else if (op === 'D' || op === 'N') {
219
+ refPos += len;
220
+ }
221
+ else if (op === 'M' || op === 'X' || op === '=') {
222
+ for (let i = 0; i < len && currPos < positions.length; i++) {
223
+ if (positions[currPos] === readPos + i) {
224
+ yield refPos + i;
225
+ currPos++;
226
+ }
227
+ }
228
+ readPos += len;
229
+ refPos += len;
296
230
  }
297
- });
231
+ }
298
232
  }
299
233
  exports.getNextRefPos = getNextRefPos;
300
234
  function getModificationPositions(mm, fseq, fstrand) {
301
- var seq = fstrand === -1 ? (0, util_1.revcom)(fseq) : fseq;
302
- var mods = mm.split(';').filter(function (mod) { return !!mod; });
303
- var result = [];
304
- for (var i = 0; i < mods.length; i++) {
305
- var mod = mods[i];
306
- var _a = __read(mod.split(',')), basemod = _a[0], skips = _a.slice(1);
235
+ const seq = fstrand === -1 ? (0, util_1.revcom)(fseq) : fseq;
236
+ const mods = mm.split(';').filter(mod => !!mod);
237
+ const result = [];
238
+ for (let i = 0; i < mods.length; i++) {
239
+ const mod = mods[i];
240
+ const [basemod, ...skips] = mod.split(',');
307
241
  // regexes based on parse_mm.pl from hts-specs
308
- var matches = basemod.match(modificationRegex);
242
+ const matches = basemod.match(modificationRegex);
309
243
  if (!matches) {
310
244
  throw new Error('bad format for MM tag');
311
245
  }
312
- var _b = __read(matches, 4), base = _b[1], strand = _b[2], typestr = _b[3];
246
+ const [, base, strand, typestr] = matches;
313
247
  // can be a multi e.g. C+mh for both meth (m) and hydroxymeth (h) so
314
248
  // split, and they can also be chemical codes (ChEBI) e.g. C+16061
315
- var types = typestr.split(/(\d+|.)/).filter(function (f) { return !!f; });
249
+ const types = typestr.split(/(\d+|.)/).filter(f => !!f);
316
250
  if (strand === '-') {
317
251
  console.warn('unsupported negative strand modifications');
318
252
  // make sure to return a somewhat matching type even in this case
@@ -322,27 +256,27 @@ function getModificationPositions(mm, fseq, fstrand) {
322
256
  // sequence of the read, if we have a modification type e.g. C+m;2 and a
323
257
  // sequence ACGTACGTAC we skip the two instances of C and go to the last
324
258
  // C
325
- for (var j = 0; j < types.length; j++) {
326
- var type = types[j];
327
- var i_3 = 0;
328
- var positions = [];
329
- for (var k = 0; k < skips.length; k++) {
330
- var delta = +skips[k];
259
+ for (let j = 0; j < types.length; j++) {
260
+ const type = types[j];
261
+ let i = 0;
262
+ const positions = [];
263
+ for (let k = 0; k < skips.length; k++) {
264
+ let delta = +skips[k];
331
265
  do {
332
- if (base === 'N' || base === seq[i_3]) {
266
+ if (base === 'N' || base === seq[i]) {
333
267
  delta--;
334
268
  }
335
- i_3++;
336
- } while (delta >= 0 && i_3 < seq.length);
337
- var temp = i_3 - 1;
269
+ i++;
270
+ } while (delta >= 0 && i < seq.length);
271
+ const temp = i - 1;
338
272
  positions.push(fstrand === -1 ? seq.length - 1 - temp : temp);
339
273
  }
340
274
  if (fstrand === -1) {
341
- positions.sort(function (a, b) { return a - b; });
275
+ positions.sort((a, b) => a - b);
342
276
  }
343
277
  result.push({
344
- type: type,
345
- positions: positions,
278
+ type,
279
+ positions,
346
280
  });
347
281
  }
348
282
  }
@@ -350,19 +284,19 @@ function getModificationPositions(mm, fseq, fstrand) {
350
284
  }
351
285
  exports.getModificationPositions = getModificationPositions;
352
286
  function getModificationTypes(mm) {
353
- var mods = mm.split(';');
287
+ const mods = mm.split(';');
354
288
  return mods
355
- .filter(function (mod) { return !!mod; })
356
- .map(function (mod) {
357
- var _a = __read(mod.split(','), 1), basemod = _a[0];
358
- var matches = basemod.match(modificationRegex);
289
+ .filter(mod => !!mod)
290
+ .map(mod => {
291
+ const [basemod] = mod.split(',');
292
+ const matches = basemod.match(modificationRegex);
359
293
  if (!matches) {
360
294
  throw new Error('bad format for MM tag');
361
295
  }
362
- var _b = __read(matches, 4), typestr = _b[3];
296
+ const [, , , typestr] = matches;
363
297
  // can be a multi e.g. C+mh for both meth (m) and hydroxymeth (h) so
364
298
  // split, and they can also be chemical codes (ChEBI) e.g. C+16061
365
- return typestr.split(/(\d+|.)/).filter(function (f) { return !!f; });
299
+ return typestr.split(/(\d+|.)/).filter(f => !!f);
366
300
  })
367
301
  .flat();
368
302
  }