UNPKG

nucleotide

Version:
65 lines 2.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateFragments = generateFragments; const addFiveTerm_1 = require("./addFiveTerm"); const addFiveTermBaseLoss_1 = require("./addFiveTermBaseLoss"); const addInternalTerm_1 = require("./addInternalTerm"); const addThreeTerm_1 = require("./addThreeTerm"); const addThreeTermBaseLoss_1 = require("./addThreeTermBaseLoss"); function generateFragments(mf, options) { if (options === undefined) { options = { a: false, ab: false, b: false, c: false, d: false, dh2o: false, w: false, x: false, y: false, z: false, zch2: false, aw: false, bw: false, abw: false, aby: false, abcdBaseLoss: false, wxyzBaseLoss: false, }; } let mfs = []; // need to allow 0-9 to deal with neutral loss let mfparts = mf .replaceAll(/([\d)a-z])([A-Z][a-z](?=[a-z]))/g, '$1 $2') .split(/ /); let fiveTerm = ''; let threeTerm = ''; if (mfparts[0].startsWith('(')) { fiveTerm += mfparts[0]; mfparts = mfparts.splice(1); } if (mfparts.at(-1).includes('(')) { threeTerm += mfparts.at(-1).replace(/^[^()]*/, ''); mfparts[mfparts.length - 1] = mfparts.at(-1).replace(/\(.*/, ''); } for (let ter5 = 1; ter5 < mfparts.length; ter5++) { fiveTerm += mfparts[ter5 - 1]; threeTerm = mfparts[mfparts.length - ter5] + threeTerm; (0, addFiveTerm_1.addFiveTerm)(mfs, fiveTerm, ter5, options); (0, addFiveTermBaseLoss_1.addFiveTermBaseLoss)(mfs, fiveTerm, ter5, options); (0, addThreeTerm_1.addThreeTerm)(mfs, threeTerm, ter5, options); (0, addThreeTermBaseLoss_1.addThreeTermBaseLoss)(mfs, threeTerm, ter5, options); } for (let i = 1; i < mfparts.length - 1; i++) { let internal = ''; for (let j = i; j < mfparts.length - 1; j++) { internal += mfparts[j]; if (j > i) { (0, addInternalTerm_1.addInternalTerm)(mfs, internal, mfparts.length - i, j + 1, options); } } } return mfs; } //# sourceMappingURL=generateFragments.js.map