@jbrowse/plugin-alignments 1.6.7 → 1.7.0

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 (94) hide show
  1. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +216 -0
  2. package/dist/AlignmentsFeatureDetail/index.js +63 -0
  3. package/dist/AlignmentsFeatureDetail/index.test.js +60 -0
  4. package/dist/AlignmentsTrack/index.js +37 -0
  5. package/dist/BamAdapter/BamAdapter.js +598 -0
  6. package/dist/BamAdapter/BamAdapter.test.js +177 -0
  7. package/dist/BamAdapter/BamSlightlyLazyFeature.d.ts +1 -10
  8. package/dist/BamAdapter/BamSlightlyLazyFeature.js +176 -0
  9. package/dist/BamAdapter/MismatchParser.d.ts +3 -5
  10. package/dist/BamAdapter/MismatchParser.js +384 -0
  11. package/dist/BamAdapter/MismatchParser.test.js +259 -0
  12. package/dist/BamAdapter/configSchema.js +48 -0
  13. package/dist/BamAdapter/index.js +36 -0
  14. package/dist/CramAdapter/CramAdapter.js +660 -0
  15. package/dist/CramAdapter/CramAdapter.test.js +138 -0
  16. package/dist/CramAdapter/CramSlightlyLazyFeature.d.ts +1 -2
  17. package/dist/CramAdapter/CramSlightlyLazyFeature.js +447 -0
  18. package/dist/CramAdapter/CramTestAdapters.js +234 -0
  19. package/dist/CramAdapter/configSchema.js +40 -0
  20. package/dist/CramAdapter/index.js +36 -0
  21. package/dist/HtsgetBamAdapter/HtsgetBamAdapter.js +97 -0
  22. package/dist/HtsgetBamAdapter/configSchema.js +31 -0
  23. package/dist/HtsgetBamAdapter/index.js +42 -0
  24. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +69 -0
  25. package/dist/LinearAlignmentsDisplay/index.js +31 -0
  26. package/dist/LinearAlignmentsDisplay/models/configSchema.js +25 -0
  27. package/dist/LinearAlignmentsDisplay/models/configSchema.test.js +83 -0
  28. package/dist/LinearAlignmentsDisplay/models/model.js +250 -0
  29. package/dist/LinearPileupDisplay/components/ColorByModifications.js +123 -0
  30. package/dist/LinearPileupDisplay/components/ColorByTag.js +98 -0
  31. package/dist/LinearPileupDisplay/components/FilterByTag.js +203 -0
  32. package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js +32 -0
  33. package/dist/LinearPileupDisplay/components/SetFeatureHeight.js +99 -0
  34. package/dist/LinearPileupDisplay/components/SetMaxHeight.js +90 -0
  35. package/dist/LinearPileupDisplay/components/SortByTag.js +95 -0
  36. package/dist/LinearPileupDisplay/configSchema.js +47 -0
  37. package/dist/LinearPileupDisplay/configSchema.test.js +92 -0
  38. package/dist/LinearPileupDisplay/index.js +30 -0
  39. package/dist/LinearPileupDisplay/model.js +602 -0
  40. package/dist/LinearSNPCoverageDisplay/components/Tooltip.js +63 -0
  41. package/dist/LinearSNPCoverageDisplay/index.js +30 -0
  42. package/dist/LinearSNPCoverageDisplay/models/configSchema.js +57 -0
  43. package/dist/LinearSNPCoverageDisplay/models/configSchema.test.js +62 -0
  44. package/dist/LinearSNPCoverageDisplay/models/model.d.ts +2 -2
  45. package/dist/LinearSNPCoverageDisplay/models/model.js +237 -0
  46. package/dist/NestedFrequencyTable.js +152 -0
  47. package/dist/PileupRPC/rpcMethods.js +285 -0
  48. package/dist/PileupRenderer/PileupLayoutSession.js +79 -0
  49. package/dist/PileupRenderer/PileupRenderer.d.ts +20 -6
  50. package/dist/PileupRenderer/PileupRenderer.js +1220 -0
  51. package/dist/PileupRenderer/components/PileupRendering.js +270 -0
  52. package/dist/PileupRenderer/components/PileupRendering.test.js +36 -0
  53. package/dist/PileupRenderer/configSchema.js +72 -0
  54. package/dist/PileupRenderer/index.js +25 -0
  55. package/dist/PileupRenderer/sortUtil.js +112 -0
  56. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +3 -11
  57. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js +606 -0
  58. package/dist/SNPCoverageAdapter/configSchema.js +22 -0
  59. package/dist/SNPCoverageAdapter/index.js +45 -0
  60. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js +296 -0
  61. package/dist/SNPCoverageRenderer/configSchema.js +40 -0
  62. package/dist/SNPCoverageRenderer/index.js +34 -0
  63. package/dist/declare.d.js +1 -0
  64. package/dist/index.js +154 -6
  65. package/dist/index.test.js +26 -0
  66. package/dist/plugin-alignments.cjs.development.js +591 -552
  67. package/dist/plugin-alignments.cjs.development.js.map +1 -1
  68. package/dist/plugin-alignments.cjs.production.min.js +1 -1
  69. package/dist/plugin-alignments.cjs.production.min.js.map +1 -1
  70. package/dist/plugin-alignments.esm.js +594 -555
  71. package/dist/plugin-alignments.esm.js.map +1 -1
  72. package/dist/shared.js +96 -0
  73. package/dist/util.d.ts +4 -0
  74. package/dist/util.js +135 -0
  75. package/package.json +5 -9
  76. package/src/BamAdapter/BamAdapter.ts +45 -15
  77. package/src/BamAdapter/BamSlightlyLazyFeature.ts +11 -79
  78. package/src/BamAdapter/MismatchParser.test.ts +53 -297
  79. package/src/BamAdapter/MismatchParser.ts +54 -116
  80. package/src/BamAdapter/configSchema.ts +0 -4
  81. package/src/CramAdapter/CramAdapter.ts +42 -15
  82. package/src/CramAdapter/CramSlightlyLazyFeature.ts +3 -10
  83. package/src/LinearPileupDisplay/components/ColorByModifications.tsx +76 -80
  84. package/src/LinearPileupDisplay/components/ColorByTag.tsx +24 -23
  85. package/src/LinearPileupDisplay/components/FilterByTag.tsx +73 -68
  86. package/src/LinearPileupDisplay/components/SetFeatureHeight.tsx +28 -26
  87. package/src/LinearPileupDisplay/components/SetMaxHeight.tsx +24 -13
  88. package/src/LinearPileupDisplay/components/SortByTag.tsx +29 -21
  89. package/src/LinearPileupDisplay/model.ts +8 -22
  90. package/src/LinearSNPCoverageDisplay/models/model.ts +6 -36
  91. package/src/PileupRenderer/PileupRenderer.tsx +178 -60
  92. package/src/SNPCoverageAdapter/SNPCoverageAdapter.ts +189 -244
  93. package/src/SNPCoverageRenderer/SNPCoverageRenderer.ts +12 -11
  94. package/src/util.ts +25 -0
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
+
7
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
+
9
+ var _operators = require("rxjs/operators");
10
+
11
+ var _BamAdapter = _interopRequireDefault(require("./BamAdapter"));
12
+
13
+ var _configSchema = _interopRequireDefault(require("./configSchema"));
14
+
15
+ test('adapter can fetch features from volvox.bam', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
16
+ var adapter, features, featuresArray, featuresJsonArray, adapterCSI, featuresCSI, featuresArrayCSI, featuresJsonArrayCSI;
17
+ return _regenerator["default"].wrap(function _callee$(_context) {
18
+ while (1) {
19
+ switch (_context.prev = _context.next) {
20
+ case 0:
21
+ adapter = new _BamAdapter["default"](_configSchema["default"].create({
22
+ bamLocation: {
23
+ localPath: require.resolve('../../test_data/volvox-sorted.bam'),
24
+ locationType: 'LocalPathLocation'
25
+ },
26
+ index: {
27
+ location: {
28
+ localPath: require.resolve('../../test_data/volvox-sorted.bam.bai'),
29
+ locationType: 'LocalPathLocation'
30
+ }
31
+ }
32
+ }));
33
+ features = adapter.getFeatures({
34
+ assemblyName: 'volvox',
35
+ refName: 'ctgA',
36
+ start: 0,
37
+ end: 20000
38
+ });
39
+ _context.next = 4;
40
+ return features.pipe((0, _operators.toArray)()).toPromise();
41
+
42
+ case 4:
43
+ featuresArray = _context.sent;
44
+ expect(featuresArray[0].get('refName')).toBe('ctgA');
45
+ featuresJsonArray = featuresArray.map(function (f) {
46
+ return f.toJSON();
47
+ });
48
+ expect(featuresJsonArray.length).toEqual(3809);
49
+ expect(featuresJsonArray.slice(1000, 1010)).toMatchSnapshot();
50
+ expect(adapter.refIdToName(0)).toBe('ctgA');
51
+ expect(adapter.refIdToName(1)).toBe(undefined);
52
+ _context.t0 = expect;
53
+ _context.next = 14;
54
+ return adapter.hasDataForRefName('ctgA');
55
+
56
+ case 14:
57
+ _context.t1 = _context.sent;
58
+ (0, _context.t0)(_context.t1).toBe(true);
59
+ adapterCSI = new _BamAdapter["default"](_configSchema["default"].create({
60
+ bamLocation: {
61
+ localPath: require.resolve('../../test_data/volvox-sorted.bam'),
62
+ locationType: 'LocalPathLocation'
63
+ },
64
+ index: {
65
+ indexType: 'CSI',
66
+ location: {
67
+ localPath: require.resolve('../../test_data/volvox-sorted.bam.csi'),
68
+ locationType: 'LocalPathLocation'
69
+ }
70
+ }
71
+ }));
72
+ featuresCSI = adapterCSI.getFeatures({
73
+ assemblyName: 'volvox',
74
+ refName: 'ctgA',
75
+ start: 0,
76
+ end: 20000
77
+ });
78
+ _context.next = 20;
79
+ return featuresCSI.pipe((0, _operators.toArray)()).toPromise();
80
+
81
+ case 20:
82
+ featuresArrayCSI = _context.sent;
83
+ featuresJsonArrayCSI = featuresArrayCSI.map(function (f) {
84
+ return f.toJSON();
85
+ });
86
+ expect(featuresJsonArrayCSI).toEqual(featuresJsonArray);
87
+
88
+ case 23:
89
+ case "end":
90
+ return _context.stop();
91
+ }
92
+ }
93
+ }, _callee);
94
+ })));
95
+ test('test usage of BamSlightlyLazyFeature toJSON (used in the widget)', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
96
+ var adapter, features, featuresArray, f;
97
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
98
+ while (1) {
99
+ switch (_context2.prev = _context2.next) {
100
+ case 0:
101
+ adapter = new _BamAdapter["default"](_configSchema["default"].create({
102
+ bamLocation: {
103
+ localPath: require.resolve('../../test_data/volvox-sorted.bam'),
104
+ locationType: 'LocalPathLocation'
105
+ },
106
+ index: {
107
+ location: {
108
+ localPath: require.resolve('../../test_data/volvox-sorted.bam.bai'),
109
+ locationType: 'LocalPathLocation'
110
+ },
111
+ indexType: 'BAI'
112
+ }
113
+ }));
114
+ features = adapter.getFeatures({
115
+ assemblyName: 'volvox',
116
+ refName: 'ctgA',
117
+ start: 0,
118
+ end: 100
119
+ });
120
+ _context2.next = 4;
121
+ return features.pipe((0, _operators.toArray)()).toPromise();
122
+
123
+ case 4:
124
+ featuresArray = _context2.sent;
125
+ f = featuresArray[0].toJSON();
126
+ expect(f.refName).toBe('ctgA');
127
+ expect(f.start).toBe(2);
128
+ expect(f.end).toBe(102);
129
+ expect(f.mismatches).not.toBeTruthy();
130
+
131
+ case 10:
132
+ case "end":
133
+ return _context2.stop();
134
+ }
135
+ }
136
+ }, _callee2);
137
+ })));
138
+ test('test usage of BamSlightlyLazyFeature for extended CIGAR', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
139
+ var adapter, features, featuresArray, f;
140
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
141
+ while (1) {
142
+ switch (_context3.prev = _context3.next) {
143
+ case 0:
144
+ adapter = new _BamAdapter["default"](_configSchema["default"].create({
145
+ bamLocation: {
146
+ localPath: require.resolve('../../test_data/extended_cigar.bam'),
147
+ locationType: 'LocalPathLocation'
148
+ },
149
+ index: {
150
+ location: {
151
+ localPath: require.resolve('../../test_data/extended_cigar.bam.bai'),
152
+ locationType: 'LocalPathLocation'
153
+ },
154
+ indexType: 'BAI'
155
+ }
156
+ }));
157
+ features = adapter.getFeatures({
158
+ assemblyName: 'hg19',
159
+ refName: '1',
160
+ start: 13260,
161
+ end: 13340
162
+ });
163
+ _context3.next = 4;
164
+ return features.pipe((0, _operators.toArray)()).toPromise();
165
+
166
+ case 4:
167
+ featuresArray = _context3.sent;
168
+ f = featuresArray[0];
169
+ expect(f.get('mismatches')).toMatchSnapshot();
170
+
171
+ case 7:
172
+ case "end":
173
+ return _context3.stop();
174
+ }
175
+ }
176
+ }, _callee3);
177
+ })));
@@ -1,13 +1,11 @@
1
1
  /// <reference types="node" />
2
2
  import { Feature, SimpleFeatureSerialized } from '@jbrowse/core/util/simpleFeature';
3
3
  import { BamRecord } from '@gmod/bam';
4
- import { Mismatch } from './MismatchParser';
5
4
  import BamAdapter from './BamAdapter';
6
5
  export default class BamSlightlyLazyFeature implements Feature {
7
6
  private record;
8
7
  private adapter;
9
8
  private ref?;
10
- private cachedMD;
11
9
  constructor(record: BamRecord, adapter: BamAdapter, ref?: string | undefined);
12
10
  _get_name(): any;
13
11
  _get_type(): string;
@@ -20,7 +18,6 @@ export default class BamSlightlyLazyFeature implements Feature {
20
18
  _get_next_refName(): string | undefined;
21
19
  _get_next_segment_position(): string | undefined;
22
20
  _get_seq(): string;
23
- _get_MD(): any;
24
21
  qualRaw(): Buffer | undefined;
25
22
  set(): void;
26
23
  tags(): string[];
@@ -31,12 +28,6 @@ export default class BamSlightlyLazyFeature implements Feature {
31
28
  children(): undefined;
32
29
  pairedFeature(): boolean;
33
30
  toJSON(): SimpleFeatureSerialized;
34
- _get_skips_and_dels(opts?: {
35
- cigarAttributeName: string;
36
- }): Mismatch[];
37
- _get_mismatches({ cigarAttributeName, mdAttributeName, }?: {
38
- cigarAttributeName?: string;
39
- mdAttributeName?: string;
40
- }): Mismatch[];
31
+ _get_mismatches(): import("./MismatchParser").Mismatch[];
41
32
  _get_clipPos(): number;
42
33
  }
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
+
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
+
18
+ var _MismatchParser = require("./MismatchParser");
19
+
20
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
21
+
22
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
23
+
24
+ var BamSlightlyLazyFeature = /*#__PURE__*/function () {
25
+ // uses parameter properties to automatically create fields on the class
26
+ // https://www.typescriptlang.org/docs/handbook/classes.html#parameter-properties
27
+ function BamSlightlyLazyFeature(record, adapter, ref) {
28
+ (0, _classCallCheck2["default"])(this, BamSlightlyLazyFeature);
29
+ this.record = record;
30
+ this.adapter = adapter;
31
+ this.ref = ref;
32
+ }
33
+
34
+ (0, _createClass2["default"])(BamSlightlyLazyFeature, [{
35
+ key: "_get_name",
36
+ value: function _get_name() {
37
+ return this.record.get('name');
38
+ }
39
+ }, {
40
+ key: "_get_type",
41
+ value: function _get_type() {
42
+ return 'match';
43
+ }
44
+ }, {
45
+ key: "_get_score",
46
+ value: function _get_score() {
47
+ return this.record.get('mq');
48
+ }
49
+ }, {
50
+ key: "_get_flags",
51
+ value: function _get_flags() {
52
+ return this.record.flags;
53
+ }
54
+ }, {
55
+ key: "_get_strand",
56
+ value: function _get_strand() {
57
+ return this.record.isReverseComplemented() ? -1 : 1;
58
+ }
59
+ }, {
60
+ key: "_get_pair_orientation",
61
+ value: function _get_pair_orientation() {
62
+ return this.record.isPaired() ? this.record.getPairOrientation() : undefined;
63
+ }
64
+ }, {
65
+ key: "_get_next_seq_id",
66
+ value: function _get_next_seq_id() {
67
+ return this.record._next_refid();
68
+ }
69
+ }, {
70
+ key: "_get_seq_id",
71
+ value: function _get_seq_id() {
72
+ // @ts-ignore
73
+ return this.record._refID;
74
+ }
75
+ }, {
76
+ key: "_get_next_refName",
77
+ value: function _get_next_refName() {
78
+ return this.adapter.refIdToName(this.record._next_refid());
79
+ }
80
+ }, {
81
+ key: "_get_next_segment_position",
82
+ value: function _get_next_segment_position() {
83
+ var record = this.record,
84
+ adapter = this.adapter;
85
+ return record.isPaired() ? "".concat(adapter.refIdToName(record._next_refid()), ":").concat(record._next_pos() + 1) : undefined;
86
+ }
87
+ }, {
88
+ key: "_get_seq",
89
+ value: function _get_seq() {
90
+ return this.record.getReadBases();
91
+ }
92
+ }, {
93
+ key: "qualRaw",
94
+ value: function qualRaw() {
95
+ return this.record.qualRaw();
96
+ }
97
+ }, {
98
+ key: "set",
99
+ value: function set() {}
100
+ }, {
101
+ key: "tags",
102
+ value: function tags() {
103
+ var properties = Object.getOwnPropertyNames(BamSlightlyLazyFeature.prototype);
104
+ return (0, _toConsumableArray2["default"])(new Set(properties.filter(function (prop) {
105
+ return prop.startsWith('_get_') && prop !== '_get_mismatches' && prop !== '_get_tags' && prop !== '_get_next_seq_id' && prop !== '_get_seq_id';
106
+ }).map(function (methodName) {
107
+ return methodName.replace('_get_', '');
108
+ }).concat(this.record._tags())));
109
+ }
110
+ }, {
111
+ key: "id",
112
+ value: function id() {
113
+ return "".concat(this.adapter.id, "-").concat(this.record.id());
114
+ } // eslint-disable-next-line @typescript-eslint/no-explicit-any
115
+
116
+ }, {
117
+ key: "get",
118
+ value: function get(field) {
119
+ var methodName = "_get_".concat(field); // @ts-ignore
120
+
121
+ if (this[methodName]) {
122
+ // @ts-ignore
123
+ return this[methodName]();
124
+ }
125
+
126
+ return this.record.get(field);
127
+ }
128
+ }, {
129
+ key: "_get_refName",
130
+ value: function _get_refName() {
131
+ return this.adapter.refIdToName(this.record.seq_id());
132
+ }
133
+ }, {
134
+ key: "parent",
135
+ value: function parent() {
136
+ return undefined;
137
+ }
138
+ }, {
139
+ key: "children",
140
+ value: function children() {
141
+ return undefined;
142
+ }
143
+ }, {
144
+ key: "pairedFeature",
145
+ value: function pairedFeature() {
146
+ return false;
147
+ }
148
+ }, {
149
+ key: "toJSON",
150
+ value: function toJSON() {
151
+ var _this = this;
152
+
153
+ return _objectSpread(_objectSpread({}, Object.fromEntries(this.tags().map(function (t) {
154
+ return [t, _this.get(t)];
155
+ }).filter(function (elt) {
156
+ return elt[1] !== undefined;
157
+ }))), {}, {
158
+ uniqueId: this.id()
159
+ });
160
+ }
161
+ }, {
162
+ key: "_get_mismatches",
163
+ value: function _get_mismatches() {
164
+ return (0, _MismatchParser.getMismatches)(this.get('CIGAR'), this.get('MD'), this.get('seq'), this.ref, this.qualRaw());
165
+ }
166
+ }, {
167
+ key: "_get_clipPos",
168
+ value: function _get_clipPos() {
169
+ var cigar = this.get('CIGAR') || '';
170
+ return this.get('strand') === -1 ? +(cigar.match(/(\d+)[SH]$/) || [])[1] || 0 : +(cigar.match(/^(\d+)([SH])/) || [])[1] || 0;
171
+ }
172
+ }]);
173
+ return BamSlightlyLazyFeature;
174
+ }();
175
+
176
+ exports["default"] = BamSlightlyLazyFeature;
@@ -10,15 +10,13 @@ export interface Mismatch {
10
10
  cliplen?: number;
11
11
  }
12
12
  export declare function parseCigar(cigar: string): string[];
13
- export declare function cigarToMismatches(ops: string[], seq: string, qual?: Buffer): Mismatch[];
13
+ export declare function cigarToMismatches(ops: string[], seq: string, ref?: string, qual?: Buffer): Mismatch[];
14
14
  /**
15
15
  * parse a SAM MD tag to find mismatching bases of the template versus the reference
16
16
  * @returns array of mismatches and their positions
17
17
  */
18
- export declare function mdToMismatches(mdstring: string, cigarOps: string[], cigarMismatches: Mismatch[], seq: string, qual?: Buffer): Mismatch[];
19
- export declare function getTemplateCoord(refCoord: number, cigarOps: string[]): number;
20
- export declare function getMismatches(cigarString: string, mdString: string, seq: string, qual?: Buffer): Mismatch[];
21
- export declare function generateMD(target: string, query: string, cigar: string): string;
18
+ export declare function mdToMismatches(mdstring: string, ops: string[], cigarMismatches: Mismatch[], seq: string, qual?: Buffer): Mismatch[];
19
+ export declare function getMismatches(cigar: string, md: string, seq: string, ref?: string, qual?: Buffer): Mismatch[];
22
20
  export declare function getNextRefPos(cigarOps: string[], positions: number[]): Generator<number, void, unknown>;
23
21
  export declare function getModificationPositions(mm: string, fseq: string, fstrand: number): ({
24
22
  type: string;