gff-nostream 3.0.11 → 5.0.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.
package/dist/util.d.ts CHANGED
@@ -6,122 +6,11 @@
6
6
  */
7
7
  export declare function unescape(stringVal: string): string;
8
8
  /**
9
- * Parse the 9th column (attributes) of a GFF3 feature line.
10
- *
11
- * @param attrString - String of GFF3 9th column
12
- * @returns Parsed attributes
13
- */
14
- export declare function parseAttributes(attrString: string): GFF3Attributes;
15
- /**
16
- * Parse the 9th column (attributes) of a GFF3 feature line without unescaping.
17
- * Fast path for data known to contain no escaped characters.
18
- *
19
- * @param attrString - String of GFF3 9th column
20
- * @returns Parsed attributes
21
- */
22
- export declare function parseAttributesNoUnescape(attrString: string): GFF3Attributes;
23
- /**
24
- * Parse a GFF3 feature line
25
- *
26
- * @param line - GFF3 feature line
27
- * @returns The parsed feature
9
+ * A parsed GFF3 feature: a flat object with 0-based half-open coordinates,
10
+ * numeric strand (`1`/`-1`/`0`), attributes spread as lowercase top-level keys,
11
+ * and child features nested under `subfeatures`.
28
12
  */
29
- export declare function parseFeature(line: string): GFF3FeatureLine;
30
- /**
31
- * Parse a GFF3 feature line without unescaping.
32
- * Fast path for data known to contain no escaped characters.
33
- *
34
- * @param line - GFF3 feature line
35
- * @returns The parsed feature
36
- */
37
- export declare function parseFeatureNoUnescape(line: string): GFF3FeatureLine;
38
- /**
39
- * Parse a GFF3 directive line.
40
- *
41
- * @param line - GFF3 directive line
42
- * @returns The parsed directive
43
- */
44
- export declare function parseDirective(line: string): GFF3Directive | GFF3SequenceRegionDirective | GFF3GenomeBuildDirective | null;
45
- /** A record of GFF3 attribute identifiers and the values of those identifiers */
46
- export type GFF3Attributes = Record<string, string[] | undefined>;
47
- /** A representation of a single line of a GFF3 file */
48
- export interface GFF3FeatureLine {
49
- /** The ID of the landmark used to establish the coordinate system for the current feature */
50
- seq_id: string | null;
51
- /** A free text qualifier intended to describe the algorithm or operating procedure that generated this feature */
52
- source: string | null;
53
- /** The type of the feature */
54
- type: string | null;
55
- /** The start coordinates of the feature */
56
- start: number | null;
57
- /** The end coordinates of the feature */
58
- end: number | null;
59
- /** The score of the feature */
60
- score: number | null;
61
- /** The strand of the feature */
62
- strand: string | null;
63
- /** For features of type "CDS", the phase indicates where the next codon begins relative to the 5' end of the current CDS feature */
64
- phase: string | null;
65
- /** Feature attributes */
66
- attributes: GFF3Attributes | null;
67
- }
68
- /**
69
- * A GFF3 Feature line that includes references to other features defined in
70
- * their "Parent" or "Derives_from" attributes
71
- */
72
- export interface GFF3FeatureLineWithRefs extends GFF3FeatureLine {
73
- /** An array of child features */
74
- child_features: GFF3Feature[];
75
- /** An array of features derived from this feature */
76
- derived_features: GFF3Feature[];
77
- }
78
- /**
79
- * A GFF3 feature, which may include multiple individual feature lines
80
- */
81
- export type GFF3Feature = GFF3FeatureLineWithRefs[];
82
- /** A GFF3 directive */
83
- export interface GFF3Directive {
84
- /** The name of the directive */
85
- directive: string;
86
- /** The string value of the directive */
87
- value?: string;
88
- }
89
- /** A GFF3 sequence-region directive */
90
- export interface GFF3SequenceRegionDirective extends GFF3Directive {
91
- /** The string value of the directive */
92
- value: string;
93
- /** The sequence ID parsed from the directive */
94
- seq_id: string;
95
- /** The sequence start parsed from the directive */
96
- start: string;
97
- /** The sequence end parsed from the directive */
98
- end: string;
99
- }
100
- /** A GFF3 genome-build directive */
101
- export interface GFF3GenomeBuildDirective extends GFF3Directive {
102
- /** The string value of the directive */
103
- value: string;
104
- /** The genome build source parsed from the directive */
105
- source: string;
106
- /** The genome build name parsed from the directive */
107
- buildName: string;
108
- }
109
- /** A GFF3 comment */
110
- export interface GFF3Comment {
111
- /** The text of the comment */
112
- comment: string;
113
- }
114
- /** A GFF3 FASTA single sequence */
115
- export interface GFF3Sequence {
116
- /** The ID of the sequence */
117
- id: string;
118
- /** The description of the sequence */
119
- description?: string;
120
- /** The sequence */
121
- sequence: string;
122
- }
123
- export type GFF3Item = GFF3Feature | GFF3Directive | GFF3Comment | GFF3Sequence;
124
- export interface JBrowseFeature {
13
+ export interface GffFeature {
125
14
  start: number;
126
15
  end: number;
127
16
  strand?: number;
@@ -130,10 +19,20 @@ export interface JBrowseFeature {
130
19
  refName: string;
131
20
  phase?: number;
132
21
  score?: number;
133
- subfeatures: JBrowseFeature[];
22
+ subfeatures: GffFeature[];
134
23
  [key: string]: unknown;
135
24
  }
136
- export declare function parseAttributesJBrowse(attrString: string, result: Record<string, unknown>): void;
137
- export declare function parseAttributesJBrowseNoUnescape(attrString: string, result: Record<string, unknown>): void;
138
- export declare function parseFeatureJBrowse(line: string): JBrowseFeature;
139
- export declare function parseFeatureJBrowseNoUnescape(line: string): JBrowseFeature;
25
+ /**
26
+ * Parse the 9th column (attributes) of a GFF3 feature line into `result`,
27
+ * lowercasing keys and suffixing any that collide with a default field name.
28
+ * Pass shouldUnescape=false as a fast path for data with no escaped characters.
29
+ */
30
+ export declare function parseAttributes(attrString: string, result: Record<string, unknown>, shouldUnescape: boolean): void;
31
+ /**
32
+ * Parse a GFF3 feature line. Unescaping is skipped entirely for lines with no
33
+ * '%' character, which is the common case.
34
+ *
35
+ * @param line - GFF3 feature line
36
+ * @returns The parsed feature
37
+ */
38
+ export declare function parseFeature(line: string): GffFeature;
package/dist/util.js CHANGED
@@ -1,20 +1,10 @@
1
1
  "use strict";
2
- // Fast, low-level functions for parsing and formatting GFF3.
2
+ // Fast, low-level functions for parsing GFF3.
3
3
  // JavaScript port of Robert Buels's Bio::GFF3::LowLevel Perl module.
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.unescape = unescape;
6
6
  exports.parseAttributes = parseAttributes;
7
- exports.parseAttributesNoUnescape = parseAttributesNoUnescape;
8
7
  exports.parseFeature = parseFeature;
9
- exports.parseFeatureNoUnescape = parseFeatureNoUnescape;
10
- exports.parseDirective = parseDirective;
11
- exports.parseAttributesJBrowse = parseAttributesJBrowse;
12
- exports.parseAttributesJBrowseNoUnescape = parseAttributesJBrowseNoUnescape;
13
- exports.parseFeatureJBrowse = parseFeatureJBrowse;
14
- exports.parseFeatureJBrowseNoUnescape = parseFeatureJBrowseNoUnescape;
15
- const directiveRegex = /^\s*##\s*(\S+)\s*(.*)/;
16
- const whitespaceRegex = /\s+/;
17
- const nonDigitRegex = /\D/g;
18
8
  const HEX_LOOKUP = {};
19
9
  for (let i = 0; i < 256; i++) {
20
10
  const hex = i.toString(16).toUpperCase().padStart(2, '0');
@@ -36,169 +26,28 @@ function unescape(stringVal) {
36
26
  let lastIdx = 0;
37
27
  let i = idx;
38
28
  while (i < stringVal.length) {
39
- if (stringVal[i] === '%' && i + 2 < stringVal.length) {
40
- result += stringVal.slice(lastIdx, i);
41
- const hex = stringVal.slice(i + 1, i + 3);
42
- const char = HEX_LOOKUP[hex];
43
- if (char !== undefined) {
44
- result += char;
45
- }
46
- else {
47
- result += stringVal.slice(i, i + 3);
48
- }
29
+ const char = stringVal[i] === '%' && i + 2 < stringVal.length
30
+ ? HEX_LOOKUP[stringVal.slice(i + 1, i + 3)]
31
+ : undefined;
32
+ if (char !== undefined) {
33
+ result += stringVal.slice(lastIdx, i) + char;
49
34
  i += 3;
50
35
  lastIdx = i;
51
36
  }
52
37
  else {
38
+ // Not a valid escape: advance one char so a '%' that begins a real
39
+ // escape immediately after isn't swallowed (e.g. the %20 in "a%b%20c").
53
40
  i++;
54
41
  }
55
42
  }
56
43
  return result + stringVal.slice(lastIdx);
57
44
  }
58
- function parseAttributesImpl(attrString, shouldUnescape) {
59
- if (attrString.length === 0 || attrString === '.') {
60
- return {};
61
- }
62
- const attrs = {};
63
- let len = attrString.length;
64
- if (attrString[len - 1] === '\n') {
65
- len = attrString[len - 2] === '\r' ? len - 2 : len - 1;
66
- attrString = attrString.slice(0, len);
67
- }
68
- let start = 0;
69
- while (start < len) {
70
- let semiIdx = attrString.indexOf(';', start);
71
- if (semiIdx === -1) {
72
- semiIdx = len;
73
- }
74
- if (semiIdx > start) {
75
- const eqIdx = attrString.indexOf('=', start);
76
- if (eqIdx !== -1 && eqIdx < semiIdx && eqIdx + 1 < semiIdx) {
77
- const tag = attrString.slice(start, eqIdx);
78
- let arec = attrs[tag];
79
- if (!arec) {
80
- arec = [];
81
- attrs[tag] = arec;
82
- }
83
- let valStart = eqIdx + 1;
84
- while (valStart < semiIdx) {
85
- let commaIdx = attrString.indexOf(',', valStart);
86
- if (commaIdx === -1 || commaIdx > semiIdx) {
87
- commaIdx = semiIdx;
88
- }
89
- if (commaIdx > valStart) {
90
- const val = attrString.slice(valStart, commaIdx);
91
- arec.push(shouldUnescape ? unescape(val) : val);
92
- }
93
- valStart = commaIdx + 1;
94
- }
95
- }
96
- }
97
- start = semiIdx + 1;
98
- }
99
- return attrs;
100
- }
101
- /**
102
- * Parse the 9th column (attributes) of a GFF3 feature line.
103
- *
104
- * @param attrString - String of GFF3 9th column
105
- * @returns Parsed attributes
106
- */
107
- function parseAttributes(attrString) {
108
- return parseAttributesImpl(attrString, true);
109
- }
110
- /**
111
- * Parse the 9th column (attributes) of a GFF3 feature line without unescaping.
112
- * Fast path for data known to contain no escaped characters.
113
- *
114
- * @param attrString - String of GFF3 9th column
115
- * @returns Parsed attributes
116
- */
117
- function parseAttributesNoUnescape(attrString) {
118
- return parseAttributesImpl(attrString, false);
119
- }
120
45
  function isEmpty(s) {
121
46
  return s.length === 0 || s === '.';
122
47
  }
123
48
  function strField(s, shouldUnescape, empty) {
124
49
  return isEmpty(s) ? empty : shouldUnescape ? unescape(s) : s;
125
50
  }
126
- function numField(s) {
127
- return isEmpty(s) ? null : +s;
128
- }
129
- function parseFeatureImpl(line, shouldUnescape) {
130
- const f = line.split('\t');
131
- const attrString = f[8];
132
- return {
133
- seq_id: strField(f[0], shouldUnescape, null),
134
- source: strField(f[1], shouldUnescape, null),
135
- type: strField(f[2], shouldUnescape, null),
136
- start: numField(f[3]),
137
- end: numField(f[4]),
138
- score: numField(f[5]),
139
- strand: strField(f[6], false, null),
140
- phase: strField(f[7], false, null),
141
- attributes: isEmpty(attrString)
142
- ? null
143
- : parseAttributesImpl(attrString, shouldUnescape),
144
- };
145
- }
146
- /**
147
- * Parse a GFF3 feature line
148
- *
149
- * @param line - GFF3 feature line
150
- * @returns The parsed feature
151
- */
152
- function parseFeature(line) {
153
- return parseFeatureImpl(line, true);
154
- }
155
- /**
156
- * Parse a GFF3 feature line without unescaping.
157
- * Fast path for data known to contain no escaped characters.
158
- *
159
- * @param line - GFF3 feature line
160
- * @returns The parsed feature
161
- */
162
- function parseFeatureNoUnescape(line) {
163
- return parseFeatureImpl(line, false);
164
- }
165
- /**
166
- * Parse a GFF3 directive line.
167
- *
168
- * @param line - GFF3 directive line
169
- * @returns The parsed directive
170
- */
171
- function parseDirective(line) {
172
- const match = directiveRegex.exec(line);
173
- if (!match) {
174
- return null;
175
- }
176
- const name = match[1];
177
- const contents = match[2];
178
- const parsed = { directive: name };
179
- if (contents.length) {
180
- parsed.value = contents.trimEnd();
181
- }
182
- if (name === 'sequence-region') {
183
- const c = contents.split(whitespaceRegex, 3);
184
- return {
185
- ...parsed,
186
- seq_id: c[0],
187
- start: c[1].replaceAll(nonDigitRegex, ''),
188
- end: c[2].replaceAll(nonDigitRegex, ''),
189
- };
190
- }
191
- else if (name === 'genome-build') {
192
- const [source, buildName] = contents.split(whitespaceRegex, 2);
193
- return {
194
- ...parsed,
195
- source: source,
196
- buildName: buildName,
197
- };
198
- }
199
- return parsed;
200
- }
201
- // JBrowse format types and parsing functions
202
51
  const JBROWSE_DEFAULT_FIELDS = new Set([
203
52
  'start',
204
53
  'end',
@@ -232,7 +81,17 @@ const COMMON_ATTRS = {
232
81
  target: 'target',
233
82
  gap: 'gap',
234
83
  };
235
- function parseAttributesJBrowseImpl(attrString, result, shouldUnescape) {
84
+ const STRAND_MAP = {
85
+ '+': 1,
86
+ '-': -1,
87
+ '.': 0,
88
+ };
89
+ /**
90
+ * Parse the 9th column (attributes) of a GFF3 feature line into `result`,
91
+ * lowercasing keys and suffixing any that collide with a default field name.
92
+ * Pass shouldUnescape=false as a fast path for data with no escaped characters.
93
+ */
94
+ function parseAttributes(attrString, result, shouldUnescape) {
236
95
  if (attrString.length === 0 || attrString === '.') {
237
96
  return;
238
97
  }
@@ -277,19 +136,16 @@ function parseAttributesJBrowseImpl(attrString, result, shouldUnescape) {
277
136
  start = semiIdx + 1;
278
137
  }
279
138
  }
280
- function parseAttributesJBrowse(attrString, result) {
281
- parseAttributesJBrowseImpl(attrString, result, true);
282
- }
283
- function parseAttributesJBrowseNoUnescape(attrString, result) {
284
- parseAttributesJBrowseImpl(attrString, result, false);
285
- }
286
- const STRAND_MAP = {
287
- '+': 1,
288
- '-': -1,
289
- '.': 0,
290
- };
291
- function parseFeatureJBrowseImpl(line, shouldUnescape) {
139
+ /**
140
+ * Parse a GFF3 feature line. Unescaping is skipped entirely for lines with no
141
+ * '%' character, which is the common case.
142
+ *
143
+ * @param line - GFF3 feature line
144
+ * @returns The parsed feature
145
+ */
146
+ function parseFeature(line) {
292
147
  const f = line.split('\t');
148
+ const shouldUnescape = line.includes('%');
293
149
  const startStr = f[3];
294
150
  const endStr = f[4];
295
151
  const scoreStr = f[5];
@@ -306,13 +162,7 @@ function parseFeatureJBrowseImpl(line, shouldUnescape) {
306
162
  phase: isEmpty(phase) ? undefined : +phase,
307
163
  subfeatures: [],
308
164
  };
309
- parseAttributesJBrowseImpl(attrString, result, shouldUnescape);
165
+ parseAttributes(attrString, result, shouldUnescape);
310
166
  return result;
311
167
  }
312
- function parseFeatureJBrowse(line) {
313
- return parseFeatureJBrowseImpl(line, true);
314
- }
315
- function parseFeatureJBrowseNoUnescape(line) {
316
- return parseFeatureJBrowseImpl(line, false);
317
- }
318
168
  //# sourceMappingURL=util.js.map
package/dist/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
package/esm/api.d.ts CHANGED
@@ -1,48 +1,35 @@
1
- import type { GFF3Feature, JBrowseFeature } from './util.ts';
2
- interface ParseInput {
1
+ import type { GffFeature } from './util.ts';
2
+ export interface LineRecord {
3
+ /** Raw GFF3 feature line */
3
4
  line: string;
4
- lineHash?: string | number;
5
- hasEscapes: boolean;
6
5
  }
7
- export interface LineRecord extends ParseInput {
8
- /** Genomic start coordinate from the tabix index (1-based) */
9
- start: number;
10
- /** Genomic end coordinate from the tabix index */
11
- end: number;
12
- /** GFF3 feature type (column 3) */
13
- type: string;
6
+ /**
7
+ * A top-level parsed feature paired with the input record it came from. The
8
+ * parser stamps no identity onto the feature itself; callers that need a stable
9
+ * per-feature id (e.g. from a tabix byte offset) read it off their own `record`.
10
+ */
11
+ export interface ParsedRecord<R extends LineRecord = LineRecord> {
12
+ feature: GffFeature;
13
+ record: R;
14
14
  }
15
15
  /** Extract the GFF3 feature type (column 3) from a raw line without a full split. */
16
16
  export declare function extractType(line: string): string;
17
17
  /**
18
18
  * Synchronously parse a string containing GFF3 and return an array of the
19
- * parsed items.
20
- *
21
- * @param str - GFF3 string
22
- * @returns array of parsed features
23
- */
24
- export declare function parseStringSync(str: string): GFF3Feature[];
25
- /**
26
- * Synchronously parse a string containing GFF3 directly into JBrowse format.
19
+ * parsed features. Comments, directives, and `##FASTA` sections are ignored.
27
20
  *
28
21
  * @param str - GFF3 string
29
- * @returns array of JBrowse-format features
30
- */
31
- export declare function parseStringSyncJBrowse(str: string): JBrowseFeature[];
32
- /**
33
- * Parse an array of LineRecord objects containing raw GFF3 lines.
34
- * Supports parent/child relationships.
35
- *
36
- * @param records - Array of LineRecord objects with raw line and metadata
37
22
  * @returns array of parsed features
38
23
  */
39
- export declare function parseRecords(records: ParseInput[]): GFF3Feature[];
24
+ export declare function parseStringSync(str: string): GffFeature[];
40
25
  /**
41
- * Parse an array of LineRecord objects directly into JBrowse feature format.
42
- * Supports parent/child relationships via subfeatures.
26
+ * Parse an array of records wrapping raw GFF3 lines, resolving parent/child
27
+ * relationships into `subfeatures`. Returns each top-level feature paired with
28
+ * the record it came from, so callers can attach their own identity (e.g. a
29
+ * byte offset) without the parser stamping anything onto the feature.
43
30
  *
44
- * @param records - Array of LineRecord objects with raw line and metadata
45
- * @returns array of JBrowse-format features
31
+ * @param records - Array of records, each carrying a raw GFF3 `line`
32
+ * @returns top-level features, each paired with its originating record
46
33
  */
47
- export declare function parseRecordsJBrowse(records: ParseInput[]): JBrowseFeature[];
48
- export type { GFF3Comment, GFF3Directive, GFF3Feature, GFF3FeatureLine, GFF3FeatureLineWithRefs, GFF3Item, GFF3Sequence, JBrowseFeature, } from './util.ts';
34
+ export declare function parseRecords<R extends LineRecord>(records: readonly R[]): ParsedRecord<R>[];
35
+ export type { GffFeature } from './util.ts';