gff-nostream 1.3.9 → 2.0.1

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/esm/parse.js CHANGED
@@ -1,57 +1,34 @@
1
- import * as GFF3 from './util';
2
- const containerAttributes = {
3
- Parent: 'child_features',
4
- Derives_from: 'derived_features',
5
- };
6
- export class FASTAParser {
7
- constructor(seqCallback) {
8
- this.seqCallback = seqCallback;
9
- this.currentSequence = undefined;
10
- }
11
- addLine(line) {
12
- const defMatch = /^>\s*(\S+)\s*(.*)/.exec(line);
13
- if (defMatch) {
14
- this._flush();
15
- this.currentSequence = { id: defMatch[1], sequence: '' };
16
- if (defMatch[2]) {
17
- this.currentSequence.description = defMatch[2].trim();
18
- }
19
- }
20
- else if (this.currentSequence && /\S/.test(line)) {
21
- this.currentSequence.sequence += line.replaceAll(/\s/g, '');
22
- }
23
- }
24
- _flush() {
25
- if (this.currentSequence) {
26
- this.seqCallback(this.currentSequence);
27
- }
28
- }
29
- finish() {
30
- this._flush();
31
- }
32
- }
1
+ import * as GFF3 from "./util.js";
2
+ const featureLineRegex = /^\s*[^#\s>]/;
3
+ const commentOrDirectiveRegex = /^\s*(#+)(.*)/;
4
+ const blankLineRegex = /^\s*$/;
5
+ const fastaStartRegex = /^\s*>/;
6
+ const lineEndingRegex = /\r?\n?$/g;
33
7
  export default class Parser {
8
+ featureCallback;
9
+ endCallback;
10
+ commentCallback;
11
+ errorCallback;
12
+ disableDerivesFromReferences;
13
+ directiveCallback;
14
+ bufferSize;
15
+ eof = false;
16
+ lineNumber = 0;
17
+ // features that we have to keep on hand for now because they
18
+ // might be referenced by something else
19
+ _underConstructionTopLevel = [];
20
+ // index of the above by ID
21
+ _underConstructionById = {};
22
+ _completedReferences = {};
23
+ // features that reference something we have not seen yet
24
+ // structured as:
25
+ // { 'some_id' : {
26
+ // 'Parent' : [ orphans that have a Parent attr referencing it ],
27
+ // 'Derives_from' : [ orphans that have a Derives_from attr referencing it ],
28
+ // }
29
+ // }
30
+ _underConstructionOrphans = {};
34
31
  constructor(args) {
35
- this.fastaParser = undefined;
36
- // if this is true, the parser ignores the
37
- // rest of the lines in the file. currently
38
- // set when the file switches over to FASTA
39
- this.eof = false;
40
- this.lineNumber = 0;
41
- // features that we have to keep on hand for now because they
42
- // might be referenced by something else
43
- this._underConstructionTopLevel = [];
44
- // index of the above by ID
45
- this._underConstructionById = {};
46
- this._completedReferences = {};
47
- // features that reference something we have not seen yet
48
- // structured as:
49
- // { 'some_id' : {
50
- // 'Parent' : [ orphans that have a Parent attr referencing it ],
51
- // 'Derives_from' : [ orphans that have a Derives_from attr referencing it ],
52
- // }
53
- // }
54
- this._underConstructionOrphans = {};
55
32
  // eslint-disable-next-line @typescript-eslint/no-empty-function
56
33
  const nullFunc = () => { };
57
34
  this.featureCallback = args.featureCallback || nullFunc;
@@ -59,29 +36,22 @@ export default class Parser {
59
36
  this.commentCallback = args.commentCallback || nullFunc;
60
37
  this.errorCallback = args.errorCallback || nullFunc;
61
38
  this.directiveCallback = args.directiveCallback || nullFunc;
62
- this.sequenceCallback = args.sequenceCallback || nullFunc;
63
39
  this.disableDerivesFromReferences =
64
40
  args.disableDerivesFromReferences || false;
65
41
  // number of lines to buffer
66
42
  this.bufferSize = args.bufferSize === undefined ? Infinity : args.bufferSize;
67
43
  }
68
44
  addLine(line) {
69
- // if we have transitioned to a fasta section, just delegate to that parser
70
- if (this.fastaParser) {
71
- this.fastaParser.addLine(line);
72
- return;
73
- }
74
45
  if (this.eof) {
75
- // otherwise, if we are done, ignore this line
76
46
  return;
77
47
  }
78
48
  this.lineNumber += 1;
79
- if (/^\s*[^#\s>]/.test(line)) {
49
+ if (featureLineRegex.test(line)) {
80
50
  // feature line, most common case
81
51
  this._bufferLine(line);
82
52
  return;
83
53
  }
84
- const match = /^\s*(#+)(.*)/.exec(line);
54
+ const match = commentOrDirectiveRegex.exec(line);
85
55
  if (match) {
86
56
  // directive or comment
87
57
  const [, hashsigns] = match;
@@ -96,7 +66,6 @@ export default class Parser {
96
66
  if (directive.directive === 'FASTA') {
97
67
  this._emitAllUnderConstructionFeatures();
98
68
  this.eof = true;
99
- this.fastaParser = new FASTAParser(this.sequenceCallback);
100
69
  }
101
70
  else {
102
71
  this._emitItem(directive);
@@ -104,31 +73,32 @@ export default class Parser {
104
73
  }
105
74
  }
106
75
  else {
107
- contents = contents.replace(/\s*/, '');
108
- this._emitItem({ comment: contents });
76
+ this._emitItem({ comment: contents.trimStart() });
109
77
  }
110
78
  }
111
- else if (/^\s*$/.test(line)) {
79
+ else if (blankLineRegex.test(line)) {
112
80
  // blank line, do nothing
113
81
  }
114
- else if (/^\s*>/.test(line)) {
115
- // implicit beginning of a FASTA section
82
+ else if (fastaStartRegex.test(line)) {
83
+ // implicit beginning of a FASTA section, stop parsing
116
84
  this._emitAllUnderConstructionFeatures();
117
85
  this.eof = true;
118
- this.fastaParser = new FASTAParser(this.sequenceCallback);
119
- this.fastaParser.addLine(line);
120
86
  }
121
87
  else {
122
88
  // it's a parse error
123
- const errLine = line.replaceAll(/\r?\n?$/g, '');
89
+ const errLine = line.replaceAll(lineEndingRegex, '');
124
90
  throw new Error(`GFF3 parse error. Cannot parse '${errLine}'.`);
125
91
  }
126
92
  }
93
+ addParsedFeatureLine(featureLine) {
94
+ if (this.eof) {
95
+ return;
96
+ }
97
+ this.lineNumber += 1;
98
+ this._bufferParsedLine(featureLine);
99
+ }
127
100
  finish() {
128
101
  this._emitAllUnderConstructionFeatures();
129
- if (this.fastaParser) {
130
- this.fastaParser.finish();
131
- }
132
102
  this.endCallback();
133
103
  }
134
104
  _emitItem(i) {
@@ -144,19 +114,24 @@ export default class Parser {
144
114
  }
145
115
  _enforceBufferSizeLimit(additionalItemCount = 0) {
146
116
  const _unbufferItem = (item) => {
147
- var _a, _b;
148
- if (item && Array.isArray(item) && ((_b = (_a = item[0].attributes) === null || _a === void 0 ? void 0 : _a.ID) === null || _b === void 0 ? void 0 : _b[0])) {
117
+ if (item && Array.isArray(item) && item[0].attributes?.ID?.[0]) {
149
118
  const ids = item[0].attributes.ID;
150
119
  ids.forEach(id => {
151
120
  delete this._underConstructionById[id];
152
121
  delete this._completedReferences[id];
153
122
  });
154
123
  item.forEach(i => {
124
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
155
125
  if (i.child_features) {
156
- i.child_features.forEach(c => _unbufferItem(c));
126
+ i.child_features.forEach(c => {
127
+ _unbufferItem(c);
128
+ });
157
129
  }
130
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
158
131
  if (i.derived_features) {
159
- i.derived_features.forEach(d => _unbufferItem(d));
132
+ i.derived_features.forEach(d => {
133
+ _unbufferItem(d);
134
+ });
160
135
  }
161
136
  });
162
137
  }
@@ -181,29 +156,24 @@ export default class Parser {
181
156
  this._completedReferences = {};
182
157
  // if we have any orphans hanging around still, this is a
183
158
  // problem. die with a parse error
184
- if (Array.from(Object.values(this._underConstructionOrphans)).length) {
185
- throw new Error(`some features reference other features that do not exist in the file (or in the same '###' scope). ${Object.keys(this._underConstructionOrphans).join(',')}`);
159
+ const orphanKeys = Object.keys(this._underConstructionOrphans);
160
+ if (orphanKeys.length) {
161
+ throw new Error(`some features reference other features that do not exist in the file (or in the same '###' scope). ${orphanKeys.join(',')}`);
186
162
  }
187
163
  }
188
- // do the right thing with a newly-parsed feature line
189
164
  _bufferLine(line) {
190
- var _a, _b, _c;
191
- const rawFeatureLine = GFF3.parseFeature(line);
192
- const featureLine = {
193
- ...rawFeatureLine,
194
- child_features: [],
195
- derived_features: [],
196
- };
197
- // featureLine._lineNumber = this.lineNumber //< debugging aid
198
- // NOTE: a feature is an arrayref of one or more feature lines.
199
- const ids = ((_a = featureLine.attributes) === null || _a === void 0 ? void 0 : _a.ID) || [];
200
- const parents = ((_b = featureLine.attributes) === null || _b === void 0 ? void 0 : _b.Parent) || [];
165
+ this._bufferParsedLine(GFF3.parseFeature(line));
166
+ }
167
+ _bufferParsedLine(rawFeatureLine) {
168
+ const featureLine = rawFeatureLine;
169
+ featureLine.child_features = [];
170
+ featureLine.derived_features = [];
171
+ const ids = featureLine.attributes?.ID || [];
172
+ const parents = featureLine.attributes?.Parent || [];
201
173
  const derives = this.disableDerivesFromReferences
202
174
  ? []
203
- : ((_c = featureLine.attributes) === null || _c === void 0 ? void 0 : _c.Derives_from) || [];
175
+ : featureLine.attributes?.Derives_from || [];
204
176
  if (!ids.length && !parents.length && !derives.length) {
205
- // if it has no IDs and does not refer to anything, we can just
206
- // output it
207
177
  this._emitItem([featureLine]);
208
178
  return;
209
179
  }
@@ -211,7 +181,6 @@ export default class Parser {
211
181
  ids.forEach(id => {
212
182
  const existing = this._underConstructionById[id];
213
183
  if (existing) {
214
- // another location of the same feature
215
184
  if (existing[existing.length - 1].type !== featureLine.type) {
216
185
  this._parseError(`multi-line feature "${id}" has inconsistent types: "${featureLine.type}", "${existing[existing.length - 1].type}"`);
217
186
  }
@@ -219,37 +188,28 @@ export default class Parser {
219
188
  feature = existing;
220
189
  }
221
190
  else {
222
- // haven't seen it yet, so buffer it so we can attach
223
- // child features to it
224
191
  feature = [featureLine];
225
192
  this._enforceBufferSizeLimit(1);
226
193
  if (!parents.length && !derives.length) {
227
194
  this._underConstructionTopLevel.push(feature);
228
195
  }
229
196
  this._underConstructionById[id] = feature;
230
- // see if we have anything buffered that refers to it
231
197
  this._resolveReferencesTo(feature, id);
232
198
  }
233
199
  });
234
- // try to resolve all its references
235
- this._resolveReferencesFrom(feature || [featureLine], { Parent: parents, Derives_from: derives }, ids);
200
+ this._resolveReferencesFrom(
201
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
202
+ feature || [featureLine], { Parent: parents, Derives_from: derives }, ids);
236
203
  }
237
204
  _resolveReferencesTo(feature, id) {
238
205
  const references = this._underConstructionOrphans[id];
239
- // references is of the form
240
- // {
241
- // 'Parent' : [ orphans that have a Parent attr referencing this feature ],
242
- // 'Derives_from' : [ orphans that have a Derives_from attr referencing this feature ],
243
- // }
244
206
  if (!references) {
245
207
  return;
246
208
  }
247
- feature.forEach(loc => {
209
+ for (const loc of feature) {
248
210
  loc.child_features.push(...references.Parent);
249
- });
250
- feature.forEach(loc => {
251
211
  loc.derived_features.push(...references.Derives_from);
252
- });
212
+ }
253
213
  delete this._underConstructionOrphans[id];
254
214
  }
255
215
  _parseError(message) {
@@ -257,61 +217,62 @@ export default class Parser {
257
217
  this.errorCallback(`${this.lineNumber}: ${message}`);
258
218
  }
259
219
  _resolveReferencesFrom(feature, references, ids) {
260
- // this is all a bit more awkward in javascript than it was in perl
261
- function postSet(obj, slot1, slot2) {
262
- let subObj = obj[slot1];
263
- if (!subObj) {
264
- subObj = {};
265
- obj[slot1] = subObj;
266
- }
267
- const returnVal = subObj[slot2] || false;
268
- subObj[slot2] = true;
269
- return returnVal;
270
- }
271
- references.Parent.forEach(toId => {
220
+ for (const toId of references.Parent) {
272
221
  const otherFeature = this._underConstructionById[toId];
273
222
  if (otherFeature) {
274
- const pname = containerAttributes.Parent;
275
- if (!ids.filter(id => postSet(this._completedReferences, id, `Parent,${toId}`)).length) {
276
- otherFeature.forEach(location => {
277
- location[pname].push(feature);
278
- });
223
+ let dominated = false;
224
+ for (const id of ids) {
225
+ const domKey = `Parent,${toId}`;
226
+ const rec = this._completedReferences[id] ||
227
+ (this._completedReferences[id] = {});
228
+ if (rec[domKey]) {
229
+ dominated = true;
230
+ }
231
+ rec[domKey] = true;
232
+ }
233
+ if (!dominated) {
234
+ for (const location of otherFeature) {
235
+ location.child_features.push(feature);
236
+ }
279
237
  }
280
238
  }
281
239
  else {
282
240
  let ref = this._underConstructionOrphans[toId];
283
241
  if (!ref) {
284
- ref = {
285
- Parent: [],
286
- Derives_from: [],
287
- };
242
+ ref = { Parent: [], Derives_from: [] };
288
243
  this._underConstructionOrphans[toId] = ref;
289
244
  }
290
245
  ref.Parent.push(feature);
291
246
  }
292
- });
293
- references.Derives_from.forEach(toId => {
247
+ }
248
+ for (const toId of references.Derives_from) {
294
249
  const otherFeature = this._underConstructionById[toId];
295
250
  if (otherFeature) {
296
- const pname = containerAttributes.Derives_from;
297
- if (!ids.filter(id => postSet(this._completedReferences, id, `Derives_from,${toId}`)).length) {
298
- otherFeature.forEach(location => {
299
- location[pname].push(feature);
300
- });
251
+ let dominated = false;
252
+ for (const id of ids) {
253
+ const domKey = `Derives_from,${toId}`;
254
+ const rec = this._completedReferences[id] ||
255
+ (this._completedReferences[id] = {});
256
+ if (rec[domKey]) {
257
+ dominated = true;
258
+ }
259
+ rec[domKey] = true;
260
+ }
261
+ if (!dominated) {
262
+ for (const location of otherFeature) {
263
+ location.derived_features.push(feature);
264
+ }
301
265
  }
302
266
  }
303
267
  else {
304
268
  let ref = this._underConstructionOrphans[toId];
305
269
  if (!ref) {
306
- ref = {
307
- Parent: [],
308
- Derives_from: [],
309
- };
270
+ ref = { Parent: [], Derives_from: [] };
310
271
  this._underConstructionOrphans[toId] = ref;
311
272
  }
312
273
  ref.Derives_from.push(feature);
313
274
  }
314
- });
275
+ }
315
276
  }
316
277
  }
317
278
  //# sourceMappingURL=parse.js.map
package/esm/parse.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
package/esm/util.d.ts CHANGED
@@ -26,6 +26,14 @@ export declare function escapeColumn(rawVal: string | number): string;
26
26
  * @returns Parsed attributes
27
27
  */
28
28
  export declare function parseAttributes(attrString: string): GFF3Attributes;
29
+ /**
30
+ * Parse the 9th column (attributes) of a GFF3 feature line without unescaping.
31
+ * Fast path for data known to contain no escaped characters.
32
+ *
33
+ * @param attrString - String of GFF3 9th column
34
+ * @returns Parsed attributes
35
+ */
36
+ export declare function parseAttributesNoUnescape(attrString: string): GFF3Attributes;
29
37
  /**
30
38
  * Parse a GFF3 feature line
31
39
  *
@@ -33,6 +41,15 @@ export declare function parseAttributes(attrString: string): GFF3Attributes;
33
41
  * @returns The parsed feature
34
42
  */
35
43
  export declare function parseFeature(line: string): GFF3FeatureLine;
44
+ export declare function parseFieldsArray(f: (string | null | undefined)[]): GFF3FeatureLine;
45
+ /**
46
+ * Parse a GFF3 feature from a pre-split fields array without unescaping.
47
+ * Fast path for data known to contain no escaped characters.
48
+ *
49
+ * @param f - Array of 9 GFF3 column values (use null or '.' for empty values)
50
+ * @returns The parsed feature
51
+ */
52
+ export declare function parseFieldsArrayNoUnescape(f: (string | null | undefined)[]): GFF3FeatureLine;
36
53
  /**
37
54
  * Parse a GFF3 directive line.
38
55
  *