@teselagen/bio-parsers 0.3.6 → 0.3.8
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/fastaToJson.d.ts +1 -1
- package/index.js +89 -74
- package/index.mjs +89 -74
- package/index.umd.js +88 -73
- package/package.json +3 -3
- package/src/anyToJson.js +1 -1
- package/src/fastaToJson.js +12 -7
- package/src/utils/validateSequence.js +6 -1
package/index.umd.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
typeof exports === "object" && typeof module !== "undefined" ? factory(exports) : typeof define === "function" && define.amd ? define(["exports"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, factory(global2.bioParsers = {}));
|
|
3
|
-
})(this, function(exports2) {
|
|
4
|
-
"use strict";var __defProp = Object.defineProperty;
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
5
2
|
var __defProps = Object.defineProperties;
|
|
6
3
|
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
7
4
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
@@ -42,7 +39,11 @@ var __async = (__this, __arguments, generator) => {
|
|
|
42
39
|
step((generator = generator.apply(__this, __arguments)).next());
|
|
43
40
|
});
|
|
44
41
|
};
|
|
45
|
-
|
|
42
|
+
(function(global2, factory) {
|
|
43
|
+
typeof exports === "object" && typeof module !== "undefined" ? factory(exports) : typeof define === "function" && define.amd ? define(["exports"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, factory(global2.bioParsers = {}));
|
|
44
|
+
})(this, function(exports2) {
|
|
45
|
+
var _a2, _b2;
|
|
46
|
+
"use strict";
|
|
46
47
|
const untitledSequenceName = "Untitled Sequence";
|
|
47
48
|
const gbDivisions = {
|
|
48
49
|
// https://www.ncbi.nlm.nih.gov/Sitemap/samplerecord.html#GenBankDivisionB
|
|
@@ -98,6 +99,19 @@ var __async = (__this, __arguments, generator) => {
|
|
|
98
99
|
};
|
|
99
100
|
}
|
|
100
101
|
__name(createInitialSequence, "createInitialSequence");
|
|
102
|
+
function extractFileExtension(name2) {
|
|
103
|
+
if (typeof name2 === "string") {
|
|
104
|
+
let ext = "";
|
|
105
|
+
const match = name2.match(/\.(\w+)$/);
|
|
106
|
+
if (match && match[1]) {
|
|
107
|
+
ext = match[1];
|
|
108
|
+
}
|
|
109
|
+
return ext;
|
|
110
|
+
} else {
|
|
111
|
+
return "";
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
__name(extractFileExtension, "extractFileExtension");
|
|
101
115
|
function splitStringIntoLines(string) {
|
|
102
116
|
let lines = [];
|
|
103
117
|
if (string === "") {
|
|
@@ -123,10 +137,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
123
137
|
if (typeof f == "function") {
|
|
124
138
|
var a = /* @__PURE__ */ __name(function a2() {
|
|
125
139
|
if (this instanceof a2) {
|
|
126
|
-
|
|
127
|
-
args.push.apply(args, arguments);
|
|
128
|
-
var Ctor = Function.bind.apply(f, args);
|
|
129
|
-
return new Ctor();
|
|
140
|
+
return Reflect.construct(f, arguments, this.constructor);
|
|
130
141
|
}
|
|
131
142
|
return f.apply(this, arguments);
|
|
132
143
|
}, "a");
|
|
@@ -19374,7 +19385,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
19374
19385
|
(u) => u === "U" ? "T" : "t"
|
|
19375
19386
|
);
|
|
19376
19387
|
}
|
|
19377
|
-
if (temp !== sequence.sequence && !sequence.isDNA && !sequence.isProtein) {
|
|
19388
|
+
if (temp !== sequence.sequence && !sequence.isDNA && !sequence.isProtein && sequence.isRNA !== false) {
|
|
19378
19389
|
sequence.type = "RNA";
|
|
19379
19390
|
sequence.sequence = temp;
|
|
19380
19391
|
} else {
|
|
@@ -19561,7 +19572,11 @@ var __async = (__this, __arguments, generator) => {
|
|
|
19561
19572
|
return parsingResultArray;
|
|
19562
19573
|
}
|
|
19563
19574
|
__name(validateSequenceArray, "validateSequenceArray");
|
|
19564
|
-
function fastaToJson(fileString, options) {
|
|
19575
|
+
function fastaToJson(fileString, options = {}) {
|
|
19576
|
+
const ext = extractFileExtension(options.fileName);
|
|
19577
|
+
if (/^(faa)$/.test(ext)) {
|
|
19578
|
+
options.isProtein = true;
|
|
19579
|
+
}
|
|
19565
19580
|
let resultArray = [];
|
|
19566
19581
|
let result = null;
|
|
19567
19582
|
try {
|
|
@@ -20223,7 +20238,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20223
20238
|
}
|
|
20224
20239
|
}
|
|
20225
20240
|
__name(getLengthOfWhiteSpaceBeforeStartOfLetters, "getLengthOfWhiteSpaceBeforeStartOfLetters");
|
|
20226
|
-
class
|
|
20241
|
+
const _Match = class _Match {
|
|
20227
20242
|
constructor(props) {
|
|
20228
20243
|
Object.assign(this, props);
|
|
20229
20244
|
this.value = this.obj[this.prop];
|
|
@@ -20240,8 +20255,9 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20240
20255
|
log() {
|
|
20241
20256
|
console.info(this.toString());
|
|
20242
20257
|
}
|
|
20243
|
-
}
|
|
20244
|
-
__name(
|
|
20258
|
+
};
|
|
20259
|
+
__name(_Match, "Match");
|
|
20260
|
+
let Match = _Match;
|
|
20245
20261
|
const GLOBAL = typeof window == "object" ? window : global;
|
|
20246
20262
|
function searchWholeObjByName(what, where) {
|
|
20247
20263
|
const searchBy = /* @__PURE__ */ __name((what2, where2, prop) => what2 == prop, "searchBy");
|
|
@@ -20287,13 +20303,13 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20287
20303
|
}
|
|
20288
20304
|
__name(searchWholeObjByName, "searchWholeObjByName");
|
|
20289
20305
|
function searchWholeObjByNameSimple(what, where) {
|
|
20290
|
-
var
|
|
20291
|
-
return (_c = (
|
|
20306
|
+
var _a3, _b3, _c;
|
|
20307
|
+
return (_c = (_b3 = (_a3 = searchWholeObjByName(what, where)) == null ? void 0 : _a3[0]) == null ? void 0 : _b3.value) == null ? void 0 : _c[0];
|
|
20292
20308
|
}
|
|
20293
20309
|
__name(searchWholeObjByNameSimple, "searchWholeObjByNameSimple");
|
|
20294
20310
|
function searchWholeObjByNameSimpleArray(what, where) {
|
|
20295
|
-
var
|
|
20296
|
-
return (
|
|
20311
|
+
var _a3, _b3;
|
|
20312
|
+
return (_b3 = (_a3 = searchWholeObjByName(what, where)) == null ? void 0 : _a3[0]) == null ? void 0 : _b3.value;
|
|
20297
20313
|
}
|
|
20298
20314
|
__name(searchWholeObjByNameSimpleArray, "searchWholeObjByNameSimpleArray");
|
|
20299
20315
|
var validator$2 = {};
|
|
@@ -20721,7 +20737,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20721
20737
|
}, "buildOptions$1");
|
|
20722
20738
|
OptionsBuilder.buildOptions = buildOptions$1;
|
|
20723
20739
|
OptionsBuilder.defaultOptions = defaultOptions$1;
|
|
20724
|
-
class
|
|
20740
|
+
const _XmlNode = class _XmlNode {
|
|
20725
20741
|
constructor(tagname) {
|
|
20726
20742
|
this.tagname = tagname;
|
|
20727
20743
|
this.child = [];
|
|
@@ -20741,8 +20757,9 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20741
20757
|
this.child.push({ [node.tagname]: node.child });
|
|
20742
20758
|
}
|
|
20743
20759
|
}
|
|
20744
|
-
}
|
|
20745
|
-
__name(
|
|
20760
|
+
};
|
|
20761
|
+
__name(_XmlNode, "XmlNode");
|
|
20762
|
+
let XmlNode = _XmlNode;
|
|
20746
20763
|
var xmlNode$1 = XmlNode;
|
|
20747
20764
|
const util$2 = util$4;
|
|
20748
20765
|
function readDocType$1(xmlData, i2) {
|
|
@@ -20953,7 +20970,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20953
20970
|
const readDocType = DocTypeReader;
|
|
20954
20971
|
const toNumber = strnum;
|
|
20955
20972
|
"<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\/)(NAME)\\s*>))([^<]*)".replace(/NAME/g, util$1.nameRegexp);
|
|
20956
|
-
let OrderedObjParser$1 =
|
|
20973
|
+
let OrderedObjParser$1 = (_a2 = class {
|
|
20957
20974
|
constructor(options) {
|
|
20958
20975
|
this.options = options;
|
|
20959
20976
|
this.currentNode = null;
|
|
@@ -20992,7 +21009,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20992
21009
|
this.saveTextToParentTag = saveTextToParentTag;
|
|
20993
21010
|
this.addChild = addChild;
|
|
20994
21011
|
}
|
|
20995
|
-
}, "OrderedObjParser");
|
|
21012
|
+
}, __name(_a2, "OrderedObjParser"), _a2);
|
|
20996
21013
|
function addExternalEntities(externalEntities) {
|
|
20997
21014
|
const entKeys = Object.keys(externalEntities);
|
|
20998
21015
|
for (let i2 = 0; i2 < entKeys.length; i2++) {
|
|
@@ -21224,6 +21241,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
21224
21241
|
if (tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1) {
|
|
21225
21242
|
if (tagName[tagName.length - 1] === "/") {
|
|
21226
21243
|
tagName = tagName.substr(0, tagName.length - 1);
|
|
21244
|
+
jPath = jPath.substr(0, jPath.length - 1);
|
|
21227
21245
|
tagExp = tagName;
|
|
21228
21246
|
} else {
|
|
21229
21247
|
tagExp = tagExp.substr(0, tagExp.length - 1);
|
|
@@ -21544,7 +21562,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
21544
21562
|
const OrderedObjParser = OrderedObjParser_1;
|
|
21545
21563
|
const { prettify } = node2json;
|
|
21546
21564
|
const validator$1 = validator$2;
|
|
21547
|
-
let XMLParser$1 =
|
|
21565
|
+
let XMLParser$1 = (_b2 = class {
|
|
21548
21566
|
constructor(options) {
|
|
21549
21567
|
this.externalEntities = {};
|
|
21550
21568
|
this.options = buildOptions(options);
|
|
@@ -21594,7 +21612,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
21594
21612
|
this.externalEntities[key] = value;
|
|
21595
21613
|
}
|
|
21596
21614
|
}
|
|
21597
|
-
}, "XMLParser");
|
|
21615
|
+
}, __name(_b2, "XMLParser"), _b2);
|
|
21598
21616
|
var XMLParser_1 = XMLParser$1;
|
|
21599
21617
|
const EOL = "\n";
|
|
21600
21618
|
function toXml(jArray, options) {
|
|
@@ -21799,13 +21817,18 @@ var __async = (__this, __arguments, generator) => {
|
|
|
21799
21817
|
let attrStr = "";
|
|
21800
21818
|
let val2 = "";
|
|
21801
21819
|
for (let key in jObj) {
|
|
21802
|
-
if (typeof jObj[key] === "undefined")
|
|
21803
|
-
|
|
21804
|
-
|
|
21805
|
-
|
|
21820
|
+
if (typeof jObj[key] === "undefined") {
|
|
21821
|
+
if (this.isAttribute(key)) {
|
|
21822
|
+
val2 += "";
|
|
21823
|
+
}
|
|
21824
|
+
} else if (jObj[key] === null) {
|
|
21825
|
+
if (this.isAttribute(key)) {
|
|
21826
|
+
val2 += "";
|
|
21827
|
+
} else if (key[0] === "?") {
|
|
21806
21828
|
val2 += this.indentate(level) + "<" + key + "?" + this.tagEndChar;
|
|
21807
|
-
else
|
|
21829
|
+
} else {
|
|
21808
21830
|
val2 += this.indentate(level) + "<" + key + "/" + this.tagEndChar;
|
|
21831
|
+
}
|
|
21809
21832
|
} else if (jObj[key] instanceof Date) {
|
|
21810
21833
|
val2 += this.buildTextValNode(jObj[key], key, "", level);
|
|
21811
21834
|
} else if (typeof jObj[key] !== "object") {
|
|
@@ -21891,7 +21914,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
21891
21914
|
piClosingChar = "?";
|
|
21892
21915
|
tagEndExp = "";
|
|
21893
21916
|
}
|
|
21894
|
-
if (attrStr && val2.indexOf("<") === -1) {
|
|
21917
|
+
if ((attrStr || attrStr === "") && val2.indexOf("<") === -1) {
|
|
21895
21918
|
return this.indentate(level) + "<" + key + attrStr + piClosingChar + ">" + val2 + tagEndExp;
|
|
21896
21919
|
} else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {
|
|
21897
21920
|
return this.indentate(level) + `<!--${val2}-->` + this.newLine;
|
|
@@ -21943,7 +21966,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
21943
21966
|
}
|
|
21944
21967
|
__name(indentate, "indentate");
|
|
21945
21968
|
function isAttribute(name2) {
|
|
21946
|
-
if (name2.startsWith(this.options.attributeNamePrefix)) {
|
|
21969
|
+
if (name2.startsWith(this.options.attributeNamePrefix) && name2 !== this.options.textNodeName) {
|
|
21947
21970
|
return name2.substr(this.attrPrefixLen);
|
|
21948
21971
|
} else {
|
|
21949
21972
|
return false;
|
|
@@ -22071,19 +22094,6 @@ var __async = (__this, __arguments, generator) => {
|
|
|
22071
22094
|
};
|
|
22072
22095
|
}
|
|
22073
22096
|
__name(parseSbolJson, "parseSbolJson");
|
|
22074
|
-
function extractFileExtension(name2) {
|
|
22075
|
-
if (typeof name2 === "string") {
|
|
22076
|
-
let ext = "";
|
|
22077
|
-
const match = name2.match(/\.(\w+)$/);
|
|
22078
|
-
if (match && match[1]) {
|
|
22079
|
-
ext = match[1];
|
|
22080
|
-
}
|
|
22081
|
-
return ext;
|
|
22082
|
-
} else {
|
|
22083
|
-
return "";
|
|
22084
|
-
}
|
|
22085
|
-
}
|
|
22086
|
-
__name(extractFileExtension, "extractFileExtension");
|
|
22087
22097
|
/*!
|
|
22088
22098
|
* Copyright 2008 Fair Oaks Labs, Inc.
|
|
22089
22099
|
* All rights reserved.
|
|
@@ -25886,7 +25896,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
25886
25896
|
}, "fill");
|
|
25887
25897
|
const errors = {};
|
|
25888
25898
|
function E(sym, getMessage, Base) {
|
|
25889
|
-
|
|
25899
|
+
var _a3;
|
|
25900
|
+
errors[sym] = (_a3 = class extends Base {
|
|
25890
25901
|
constructor() {
|
|
25891
25902
|
super();
|
|
25892
25903
|
Object.defineProperty(this, "message", {
|
|
@@ -25912,7 +25923,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
25912
25923
|
toString() {
|
|
25913
25924
|
return `${this.name} [${sym}]: ${this.message}`;
|
|
25914
25925
|
}
|
|
25915
|
-
}, "NodeError");
|
|
25926
|
+
}, __name(_a3, "NodeError"), _a3);
|
|
25916
25927
|
}
|
|
25917
25928
|
__name(E, "E");
|
|
25918
25929
|
E(
|
|
@@ -29395,7 +29406,7 @@ ${seq.sequence}
|
|
|
29395
29406
|
Parent: "child_features",
|
|
29396
29407
|
Derives_from: "derived_features"
|
|
29397
29408
|
};
|
|
29398
|
-
class
|
|
29409
|
+
const _FASTAParser = class _FASTAParser {
|
|
29399
29410
|
constructor(seqCallback) {
|
|
29400
29411
|
this.seqCallback = seqCallback;
|
|
29401
29412
|
this.currentSequence = void 0;
|
|
@@ -29418,9 +29429,10 @@ ${seq.sequence}
|
|
|
29418
29429
|
finish() {
|
|
29419
29430
|
this._flush();
|
|
29420
29431
|
}
|
|
29421
|
-
}
|
|
29422
|
-
__name(
|
|
29423
|
-
|
|
29432
|
+
};
|
|
29433
|
+
__name(_FASTAParser, "FASTAParser");
|
|
29434
|
+
let FASTAParser = _FASTAParser;
|
|
29435
|
+
const _Parser = class _Parser {
|
|
29424
29436
|
constructor(args) {
|
|
29425
29437
|
this.fastaParser = void 0;
|
|
29426
29438
|
this.eof = false;
|
|
@@ -29539,14 +29551,14 @@ ${seq.sequence}
|
|
|
29539
29551
|
}
|
|
29540
29552
|
// do the right thing with a newly-parsed feature line
|
|
29541
29553
|
_bufferLine(line) {
|
|
29542
|
-
var
|
|
29554
|
+
var _a3, _b3, _c;
|
|
29543
29555
|
const rawFeatureLine = parseFeature(line);
|
|
29544
29556
|
const featureLine = __spreadProps(__spreadValues({}, rawFeatureLine), {
|
|
29545
29557
|
child_features: [],
|
|
29546
29558
|
derived_features: []
|
|
29547
29559
|
});
|
|
29548
|
-
const ids = ((
|
|
29549
|
-
const parents = ((
|
|
29560
|
+
const ids = ((_a3 = featureLine.attributes) === null || _a3 === void 0 ? void 0 : _a3.ID) || [];
|
|
29561
|
+
const parents = ((_b3 = featureLine.attributes) === null || _b3 === void 0 ? void 0 : _b3.Parent) || [];
|
|
29550
29562
|
const derives = this.disableDerivesFromReferences ? [] : ((_c = featureLine.attributes) === null || _c === void 0 ? void 0 : _c.Derives_from) || [];
|
|
29551
29563
|
if (!ids.length && !parents.length && !derives.length) {
|
|
29552
29564
|
this._emitItem([featureLine]);
|
|
@@ -29644,8 +29656,9 @@ ${seq.sequence}
|
|
|
29644
29656
|
}
|
|
29645
29657
|
});
|
|
29646
29658
|
}
|
|
29647
|
-
}
|
|
29648
|
-
__name(
|
|
29659
|
+
};
|
|
29660
|
+
__name(_Parser, "Parser");
|
|
29661
|
+
let Parser = _Parser;
|
|
29649
29662
|
function _callback(callback) {
|
|
29650
29663
|
if (process && process.nextTick)
|
|
29651
29664
|
process.nextTick(callback);
|
|
@@ -29672,7 +29685,7 @@ ${seq.sequence}
|
|
|
29672
29685
|
return out;
|
|
29673
29686
|
}
|
|
29674
29687
|
__name(_processParseOptions, "_processParseOptions");
|
|
29675
|
-
class
|
|
29688
|
+
const _GFFTransform = class _GFFTransform extends streamBrowserify.Transform {
|
|
29676
29689
|
constructor(inputOptions = {}) {
|
|
29677
29690
|
super({ objectMode: true });
|
|
29678
29691
|
this.textBuffer = "";
|
|
@@ -29712,8 +29725,9 @@ ${seq.sequence}
|
|
|
29712
29725
|
this.parser.finish();
|
|
29713
29726
|
_callback(callback);
|
|
29714
29727
|
}
|
|
29715
|
-
}
|
|
29716
|
-
__name(
|
|
29728
|
+
};
|
|
29729
|
+
__name(_GFFTransform, "GFFTransform");
|
|
29730
|
+
let GFFTransform = _GFFTransform;
|
|
29717
29731
|
function parseStream(options = {}) {
|
|
29718
29732
|
return new GFFTransform(options);
|
|
29719
29733
|
}
|
|
@@ -29757,7 +29771,7 @@ ${seq.sequence}
|
|
|
29757
29771
|
return str;
|
|
29758
29772
|
}
|
|
29759
29773
|
__name(formatSync, "formatSync");
|
|
29760
|
-
class
|
|
29774
|
+
const _FormattingTransform = class _FormattingTransform extends streamBrowserify.Transform {
|
|
29761
29775
|
constructor(options = {}) {
|
|
29762
29776
|
super(Object.assign(options, { objectMode: true }));
|
|
29763
29777
|
this.linesSinceLastSyncMark = 0;
|
|
@@ -29799,8 +29813,9 @@ ${seq.sequence}
|
|
|
29799
29813
|
this.haveWeEmittedData = true;
|
|
29800
29814
|
_callback(callback);
|
|
29801
29815
|
}
|
|
29802
|
-
}
|
|
29803
|
-
__name(
|
|
29816
|
+
};
|
|
29817
|
+
__name(_FormattingTransform, "FormattingTransform");
|
|
29818
|
+
let FormattingTransform = _FormattingTransform;
|
|
29804
29819
|
function formatStream(options = {}) {
|
|
29805
29820
|
return new FormattingTransform(options);
|
|
29806
29821
|
}
|
|
@@ -29904,8 +29919,8 @@ ${seq.sequence}
|
|
|
29904
29919
|
const toRet = lodashExports.filter(
|
|
29905
29920
|
resultArray,
|
|
29906
29921
|
(r) => {
|
|
29907
|
-
var
|
|
29908
|
-
return (
|
|
29922
|
+
var _a3, _b3;
|
|
29923
|
+
return (_b3 = (_a3 = r == null ? void 0 : r.parsedSequence) == null ? void 0 : _a3.sequence) == null ? void 0 : _b3.length;
|
|
29909
29924
|
}
|
|
29910
29925
|
);
|
|
29911
29926
|
if (toRet.length)
|
|
@@ -30015,8 +30030,8 @@ ${seq.sequence}
|
|
|
30015
30030
|
const toRet = lodashExports.filter(
|
|
30016
30031
|
resultArray,
|
|
30017
30032
|
(r) => {
|
|
30018
|
-
var
|
|
30019
|
-
return (
|
|
30033
|
+
var _a3, _b3;
|
|
30034
|
+
return (_b3 = (_a3 = r == null ? void 0 : r.parsedSequence) == null ? void 0 : _a3.sequence) == null ? void 0 : _b3.length;
|
|
30020
30035
|
}
|
|
30021
30036
|
);
|
|
30022
30037
|
if (toRet.length)
|
|
@@ -30468,7 +30483,7 @@ ${seq.sequence}
|
|
|
30468
30483
|
} else if (td) {
|
|
30469
30484
|
return td.decode(dat);
|
|
30470
30485
|
} else {
|
|
30471
|
-
var
|
|
30486
|
+
var _a3 = dutf8(dat), s = _a3.s, r = _a3.r;
|
|
30472
30487
|
if (r.length)
|
|
30473
30488
|
err(8);
|
|
30474
30489
|
return s;
|
|
@@ -30480,7 +30495,7 @@ ${seq.sequence}
|
|
|
30480
30495
|
}, "slzh");
|
|
30481
30496
|
var zh = /* @__PURE__ */ __name(function(d, b, z) {
|
|
30482
30497
|
var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);
|
|
30483
|
-
var
|
|
30498
|
+
var _a3 = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a3[0], su = _a3[1], off = _a3[2];
|
|
30484
30499
|
return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];
|
|
30485
30500
|
}, "zh");
|
|
30486
30501
|
var z64e = /* @__PURE__ */ __name(function(d, b) {
|
|
@@ -30510,7 +30525,7 @@ ${seq.sequence}
|
|
|
30510
30525
|
}
|
|
30511
30526
|
var fltr = opts && opts.filter;
|
|
30512
30527
|
for (var i2 = 0; i2 < c; ++i2) {
|
|
30513
|
-
var
|
|
30528
|
+
var _a3 = zh(data, o, z), c_2 = _a3[0], sc = _a3[1], su = _a3[2], fn = _a3[3], no = _a3[4], off = _a3[5], b = slzh(data, off);
|
|
30514
30529
|
o = no;
|
|
30515
30530
|
if (!fltr || fltr({
|
|
30516
30531
|
name: fn,
|
|
@@ -30569,7 +30584,7 @@ ${seq.sequence}
|
|
|
30569
30584
|
);
|
|
30570
30585
|
}
|
|
30571
30586
|
}
|
|
30572
|
-
if (/^(fasta|fas|fa|fna|ffn)$/.test(ext)) {
|
|
30587
|
+
if (/^(fasta|fas|fa|fna|ffn|faa)$/.test(ext)) {
|
|
30573
30588
|
return fastaToJson(fileContentString, options);
|
|
30574
30589
|
} else if (/^(gb|gbk)$/.test(ext)) {
|
|
30575
30590
|
return genbankToJson(fileContentString, options);
|
|
@@ -32398,7 +32413,7 @@ ${seq.sequence}
|
|
|
32398
32413
|
}
|
|
32399
32414
|
__name(jsonToGenbank, "jsonToGenbank");
|
|
32400
32415
|
function createGenbankLocus(serSeq, options) {
|
|
32401
|
-
var
|
|
32416
|
+
var _a3, _b3;
|
|
32402
32417
|
if (serSeq.sequence.symbols) {
|
|
32403
32418
|
serSeq.sequence = serSeq.sequence.symbols.split("");
|
|
32404
32419
|
}
|
|
@@ -32407,9 +32422,9 @@ ${seq.sequence}
|
|
|
32407
32422
|
if (serSeq.isProtein) {
|
|
32408
32423
|
dnaType = "";
|
|
32409
32424
|
} else if (serSeq.type === "RNA") {
|
|
32410
|
-
dnaType = (serSeq == null ? void 0 : serSeq.doubleStranded) ? "RNA" : (
|
|
32425
|
+
dnaType = (serSeq == null ? void 0 : serSeq.doubleStranded) ? "RNA" : (_a3 = serSeq == null ? void 0 : serSeq.sequenceTypeFromLocus) != null ? _a3 : "ss-RNA";
|
|
32411
32426
|
} else {
|
|
32412
|
-
dnaType = (serSeq == null ? void 0 : serSeq.doubleStranded) ? "DNA" : (
|
|
32427
|
+
dnaType = (serSeq == null ? void 0 : serSeq.doubleStranded) ? "DNA" : (_b3 = serSeq == null ? void 0 : serSeq.sequenceTypeFromLocus) != null ? _b3 : "DNA";
|
|
32413
32428
|
}
|
|
32414
32429
|
const date = getCurrentDateString();
|
|
32415
32430
|
let line = StringUtil.rpad("LOCUS", " ", 12);
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teselagen/bio-parsers",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.8",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@teselagen/sequence-utils": "0.3.
|
|
7
|
-
"@teselagen/range-utils": "0.3.
|
|
6
|
+
"@teselagen/sequence-utils": "0.3.7",
|
|
7
|
+
"@teselagen/range-utils": "0.3.7",
|
|
8
8
|
"@gmod/gff": "^1.2.1",
|
|
9
9
|
"buffer": "^6.0.3",
|
|
10
10
|
"bufferpack": "^0.0.6",
|
package/src/anyToJson.js
CHANGED
|
@@ -71,7 +71,7 @@ async function anyToJson(fileContentStringOrFileObj, options) {
|
|
|
71
71
|
}
|
|
72
72
|
// console.log(`fileContentString.includes("seq:seq"):`,fileContentString.includes("seq:seq"))
|
|
73
73
|
// console.log(`fileContentString.includes("jbei")):`,fileContentString.includes("jbei"))
|
|
74
|
-
if (/^(fasta|fas|fa|fna|ffn)$/.test(ext)) {
|
|
74
|
+
if (/^(fasta|fas|fa|fna|ffn|faa)$/.test(ext)) {
|
|
75
75
|
// FASTA
|
|
76
76
|
return fastaToJson(fileContentString, options);
|
|
77
77
|
} else if (/^(gb|gbk)$/.test(ext)) {
|
package/src/fastaToJson.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import createInitialSequence from "./utils/createInitialSequence";
|
|
2
|
+
import extractFileExtension from "./utils/extractFileExtension";
|
|
2
3
|
import splitStringIntoLines from "./utils/splitStringIntoLines.js";
|
|
3
4
|
import validateSequenceArray from "./utils/validateSequenceArray";
|
|
4
5
|
|
|
@@ -9,7 +10,12 @@ import validateSequenceArray from "./utils/validateSequenceArray";
|
|
|
9
10
|
* @author Joshua P Nixon
|
|
10
11
|
*/
|
|
11
12
|
|
|
12
|
-
function fastaToJson(fileString, options) {
|
|
13
|
+
function fastaToJson(fileString, options = {}) {
|
|
14
|
+
const ext = extractFileExtension(options.fileName);
|
|
15
|
+
if (/^(faa)$/.test(ext)) {
|
|
16
|
+
options.isProtein = true;
|
|
17
|
+
}
|
|
18
|
+
|
|
13
19
|
let resultArray = [];
|
|
14
20
|
let result = null;
|
|
15
21
|
try {
|
|
@@ -28,8 +34,8 @@ function fastaToJson(fileString, options) {
|
|
|
28
34
|
resultArray = [
|
|
29
35
|
{
|
|
30
36
|
success: false,
|
|
31
|
-
messages: ["Import Error: Invalid File"]
|
|
32
|
-
}
|
|
37
|
+
messages: ["Import Error: Invalid File"]
|
|
38
|
+
}
|
|
33
39
|
];
|
|
34
40
|
}
|
|
35
41
|
return validateSequenceArray(resultArray, options);
|
|
@@ -71,10 +77,9 @@ function fastaToJson(fileString, options) {
|
|
|
71
77
|
}
|
|
72
78
|
|
|
73
79
|
function parseTitle(line) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
return
|
|
80
|
+
if (options && "parseName" in options && !options.parseName) {
|
|
81
|
+
result.parsedSequence.name = line.slice(1);
|
|
82
|
+
return;
|
|
78
83
|
}
|
|
79
84
|
|
|
80
85
|
const pipeIndex = line.indexOf("|");
|
|
@@ -114,7 +114,12 @@ export default function validateSequence(sequence, options = {}) {
|
|
|
114
114
|
u === "U" ? "T" : "t"
|
|
115
115
|
);
|
|
116
116
|
}
|
|
117
|
-
if (
|
|
117
|
+
if (
|
|
118
|
+
temp !== sequence.sequence &&
|
|
119
|
+
!sequence.isDNA &&
|
|
120
|
+
!sequence.isProtein &&
|
|
121
|
+
sequence.isRNA !== false
|
|
122
|
+
) {
|
|
118
123
|
sequence.type = "RNA";
|
|
119
124
|
sequence.sequence = temp;
|
|
120
125
|
} else {
|