{"version":3,"file":"eln-plugin.js","sources":["../src/types/default.js","../src/types/reaction/general.js","../node_modules/utf8/utf8.js","../node_modules/iobuffer/lib-esm/IOBuffer.js","../node_modules/netcdfjs/src/utils.js","../node_modules/netcdfjs/src/types.js","../node_modules/netcdfjs/src/data.js","../node_modules/netcdfjs/src/header.js","../node_modules/netcdfjs/src/toString.js","../node_modules/netcdfjs/src/index.js","../node_modules/netcdf-gcms/src/agilentGCMS.js","../node_modules/netcdf-gcms/src/brukerGCMS.js","../node_modules/netcdf-gcms/src/agilentHPLC.js","../node_modules/netcdf-gcms/src/finniganGCMS.js","../node_modules/netcdf-gcms/src/shimadzuGCMS.js","../node_modules/netcdf-gcms/src/advionGCMS.js","../node_modules/netcdf-gcms/src/aiaTemplate.js","../node_modules/netcdf-gcms/src/index.js","../node_modules/atob/browser-atob.js","../node_modules/base64-js/index.js","../node_modules/isutf8/dist/index.esm.js","../node_modules/ensure-string/lib-esm/index.js","../node_modules/dynamic-typing/src/parseString.js","../node_modules/jcampconverter/lib-esm/complexChromatogram.js","../node_modules/jcampconverter/lib-esm/convertToFloatArray.js","../node_modules/jcampconverter/lib-esm/parse/fastParseXYData.js","../node_modules/jcampconverter/lib-esm/parse/parsePeakTable.js","../node_modules/jcampconverter/lib-esm/parse/parseXYA.js","../node_modules/is-any-array/lib-esm/index.js","../node_modules/median-quickselect/lib/median-quickselect.min.js","../node_modules/ml-array-median/lib-es6/index.js","../node_modules/jcampconverter/lib-esm/2d/convertTo3DZ.js","../node_modules/jcampconverter/lib-esm/2d/generateContourLines.js","../node_modules/jcampconverter/lib-esm/2d/add2D.js","../node_modules/nmr-processing/lib-esm/constants/gyromagneticRatio.js","../node_modules/ml-array-max/lib-es6/index.js","../node_modules/ml-array-min/lib-es6/index.js","../node_modules/ml-array-rescale/lib-es6/index.js","../node_modules/ml-matrix/src/inspect.js","../node_modules/ml-matrix/src/mathOperations.js","../node_modules/ml-matrix/src/util.js","../node_modules/ml-matrix/src/stat.js","../node_modules/ml-matrix/src/matrix.js","../node_modules/ml-matrix/src/wrap/WrapperMatrix2D.js","../node_modules/ml-matrix/src/dc/lu.js","../node_modules/ml-matrix/src/dc/util.js","../node_modules/ml-matrix/src/dc/qr.js","../node_modules/ml-matrix/src/dc/svd.js","../node_modules/ml-matrix/src/decompositions.js","../node_modules/ml-array-sequential-fill/lib-es6/index.js","../node_modules/d3-array/build/d3-array.js","../node_modules/spline-interpolator/index.js","../node_modules/jcampconverter/lib-esm/postProcessingNMR.js","../node_modules/jcampconverter/lib-esm/profiling.js","../node_modules/jcampconverter/lib-esm/simpleChromatogram.js","../node_modules/jcampconverter/lib-esm/postProcessing.js","../node_modules/jcampconverter/lib-esm/prepareNtuplesDatatable.js","../node_modules/jcampconverter/lib-esm/prepareSpectrum.js","../node_modules/jcampconverter/lib-esm/convert.js","../src/types/common.js","../src/types/sample/chromatogram.js","../src/types/sample/cyclicVoltammetry.js","../src/types/sample/differentialCentrifugalSedimentation.js","../src/types/sample/differentialScanningCalorimetry.js","../src/types/sample/dls.js","../src/types/sample/elementAnalysis.js","../node_modules/genbank-parser/src/utils/months.js","../node_modules/genbank-parser/src/index.js","../src/types/sample/genbank.js","../src/types/sample/general.js","../src/types/sample/hgPorosimetry.js","../src/types/sample/icp.js","../src/types/sample/image.js","../src/types/sample/ir.js","../src/types/sample/isotherm.js","../src/types/sample/iv.js","../src/types/sample/mass.js","../node_modules/nmr-metadata/node_modules/nmr-processing/src/constants/impurities.js","../node_modules/nmr-metadata/node_modules/nmr-processing/src/peaks/peaksFilterImpurities.js","../node_modules/nmr-metadata/node_modules/ml-gsd/node_modules/ml-peak-shape-generator/lib-esm/util/constants.js","../node_modules/nmr-metadata/node_modules/ml-gsd/node_modules/ml-peak-shape-generator/lib-esm/util/erfinv.js","../node_modules/nmr-metadata/node_modules/ml-gsd/node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/Shape1D.js","../node_modules/nmr-metadata/node_modules/ml-gsd/node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/gaussian/Gaussian.js","../node_modules/nmr-metadata/node_modules/ml-gsd/node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/lorentzian/Lorentzian.js","../node_modules/nmr-metadata/node_modules/ml-gsd/node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/pseudoVoigt/PseudoVoigt.js","../node_modules/nmr-metadata/node_modules/ml-gsd/node_modules/ml-peak-shape-generator/lib-esm/util/getShape1D.js","../node_modules/nmr-metadata/node_modules/ml-savitzky-golay-generalized/src/index.js","../node_modules/nmr-metadata/node_modules/ml-gsd/src/gsd.js","../node_modules/assign-symbols/index.js","../node_modules/assign-deep/index.js","../node_modules/nmr-metadata/node_modules/ml-peak-shape-generator/src/util/constants.js","../node_modules/nmr-metadata/node_modules/ml-peak-shape-generator/src/util/erfinv.js","../node_modules/nmr-metadata/node_modules/ml-peak-shape-generator/src/classes/Gaussian.js","../node_modules/nmr-metadata/node_modules/ml-peak-shape-generator/src/classes/Lorentzian.js","../node_modules/nmr-metadata/node_modules/ml-peak-shape-generator/src/classes/PseudoVoigt.js","../node_modules/nmr-metadata/node_modules/ml-spectra-fitting/src/shapes/sumOfGaussianLorentzians.js","../node_modules/nmr-metadata/node_modules/ml-spectra-fitting/src/shapes/sumOfGaussians.js","../node_modules/nmr-metadata/node_modules/ml-spectra-fitting/src/shapes/sumOfLorentzians.js","../node_modules/nmr-metadata/node_modules/ml-spectra-fitting/src/checkInput.js","../node_modules/nmr-metadata/node_modules/is-any-array/src/index.js","../node_modules/nmr-metadata/node_modules/ml-levenberg-marquardt/src/checkOptions.js","../node_modules/nmr-metadata/node_modules/ml-levenberg-marquardt/src/errorCalculation.js","../node_modules/nmr-metadata/node_modules/ml-levenberg-marquardt/src/gradientFunction.js","../node_modules/nmr-metadata/node_modules/ml-levenberg-marquardt/src/step.js","../node_modules/nmr-metadata/node_modules/ml-levenberg-marquardt/src/index.js","../node_modules/nmr-metadata/node_modules/ml-spectra-fitting/src/selectMethod.js","../node_modules/nmr-metadata/node_modules/ml-spectra-fitting/src/index.js","../node_modules/nmr-metadata/node_modules/ml-spectra-processing/src/x/xAbsolute.js","../node_modules/nmr-metadata/node_modules/ml-spectra-processing/src/x/xAbsoluteMedian.js","../node_modules/nmr-metadata/node_modules/ml-spectra-processing/src/x/xFindClosestIndex.js","../node_modules/nmr-metadata/node_modules/ml-spectra-processing/src/x/xGetFromToIndex.js","../node_modules/nmr-metadata/node_modules/ml-spectra-processing/src/x/erfcinv.js","../node_modules/nmr-metadata/node_modules/ml-spectra-processing/src/x/rayleighCdf.js","../node_modules/nmr-metadata/node_modules/ml-spectra-processing/src/x/xNoiseSanPlot.js","../node_modules/nmr-metadata/node_modules/ml-spectra-processing/src/xy/xyCheck.js","../node_modules/nmr-metadata/node_modules/ml-spectra-processing/src/zones/zonesNormalize.js","../node_modules/nmr-metadata/node_modules/ml-spectra-processing/src/xy/xyExtract.js","../node_modules/nmr-metadata/node_modules/ml-spectra-processing/src/xy/xyIntegration.js","../node_modules/nmr-metadata/node_modules/ml-gsd/src/post/groupPeaks.js","../node_modules/nmr-metadata/node_modules/ml-gsd/src/post/optimizePeaks.js","../node_modules/nmr-metadata/node_modules/ml-gsd/src/post/joinBroadPeaks.js","../node_modules/nmr-metadata/node_modules/nmr-processing/src/xy/xyAutoPeaksPicking.js","../node_modules/nmr-metadata/node_modules/nmr-processing/src/peaks/util/jAnalyzer.js","../node_modules/nmr-metadata/node_modules/nmr-processing/src/peaks/util/joinRanges.js","../node_modules/nmr-metadata/node_modules/nmr-processing/src/peaks/peaksToRanges.js","../node_modules/nmr-metadata/node_modules/nmr-processing/src/xy/xyAutoRangesPicking.js","../node_modules/nmr-metadata/src/getNucleusFrom2DExperiment.js","../node_modules/nmr-metadata/src/getSpectrumType.js","../node_modules/nmr-metadata/src/getMetaData.js","../node_modules/nmr-metadata/src/index.js","../src/types/sample/nmr.js","../src/types/sample/oan.js","../src/types/sample/pelletHardness.js","../src/types/sample/permeability.js","../src/types/sample/physical.js","../src/types/sample/raman.js","../src/types/sample/stock.js","../src/types/sample/thermogravimetricAnalysis.js","../src/types/sample/uv.js","../src/types/sample/video.js","../src/types/sample/voidVolume.js","../src/types/sample/xps.js","../src/types/sample/xray.js","../src/types/sample/xrd.js","../src/types/sample/xrf.js","../src/types/index.js","../src/types.js","../src/util/defaults.js","../src/index.js"],"sourcesContent":["export default {\n  process() {\n    return {};\n  },\n\n  getEmpty() {\n    return [];\n  },\n};\n","export default {\n  jpath: [],\n  getEmpty() {\n    return {\n      code: '',\n      date: Date.now(),\n      procedure: '',\n      products: [],\n      reagents: [],\n      conditions: '',\n      meta: {},\n      remarks: '',\n      title: '',\n      reactionRXN: '$RXN\\n\\n\\n\\n  0  0\\n',\n    };\n  },\n};\n","/*! https://mths.be/utf8js v3.0.0 by @mathias */\n;(function(root) {\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2decode(string) {\n\t\tvar output = [];\n\t\tvar counter = 0;\n\t\tvar length = string.length;\n\t\tvar value;\n\t\tvar extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2encode(array) {\n\t\tvar length = array.length;\n\t\tvar index = -1;\n\t\tvar value;\n\t\tvar output = '';\n\t\twhile (++index < length) {\n\t\t\tvalue = array[index];\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t}\n\t\treturn output;\n\t}\n\n\tfunction checkScalarValue(codePoint) {\n\t\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\t\tthrow Error(\n\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t' is not a scalar value'\n\t\t\t);\n\t\t}\n\t}\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction createByte(codePoint, shift) {\n\t\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n\t}\n\n\tfunction encodeCodePoint(codePoint) {\n\t\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\t\treturn stringFromCharCode(codePoint);\n\t\t}\n\t\tvar symbol = '';\n\t\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t\t}\n\t\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\t\tcheckScalarValue(codePoint);\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\t\tsymbol += createByte(codePoint, 12);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\t\treturn symbol;\n\t}\n\n\tfunction utf8encode(string) {\n\t\tvar codePoints = ucs2decode(string);\n\t\tvar length = codePoints.length;\n\t\tvar index = -1;\n\t\tvar codePoint;\n\t\tvar byteString = '';\n\t\twhile (++index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tbyteString += encodeCodePoint(codePoint);\n\t\t}\n\t\treturn byteString;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction readContinuationByte() {\n\t\tif (byteIndex >= byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\tif ((continuationByte & 0xC0) == 0x80) {\n\t\t\treturn continuationByte & 0x3F;\n\t\t}\n\n\t\t// If we end up here, it’s not a continuation byte\n\t\tthrow Error('Invalid continuation byte');\n\t}\n\n\tfunction decodeSymbol() {\n\t\tvar byte1;\n\t\tvar byte2;\n\t\tvar byte3;\n\t\tvar byte4;\n\t\tvar codePoint;\n\n\t\tif (byteIndex > byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tif (byteIndex == byteCount) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Read first byte\n\t\tbyte1 = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\t// 1-byte sequence (no continuation bytes)\n\t\tif ((byte1 & 0x80) == 0) {\n\t\t\treturn byte1;\n\t\t}\n\n\t\t// 2-byte sequence\n\t\tif ((byte1 & 0xE0) == 0xC0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\t\tif (codePoint >= 0x80) {\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 3-byte sequence (may include unpaired surrogates)\n\t\tif ((byte1 & 0xF0) == 0xE0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\t\tif (codePoint >= 0x0800) {\n\t\t\t\tcheckScalarValue(codePoint);\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 4-byte sequence\n\t\tif ((byte1 & 0xF8) == 0xF0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tbyte4 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) |\n\t\t\t\t(byte3 << 0x06) | byte4;\n\t\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\t\treturn codePoint;\n\t\t\t}\n\t\t}\n\n\t\tthrow Error('Invalid UTF-8 detected');\n\t}\n\n\tvar byteArray;\n\tvar byteCount;\n\tvar byteIndex;\n\tfunction utf8decode(byteString) {\n\t\tbyteArray = ucs2decode(byteString);\n\t\tbyteCount = byteArray.length;\n\t\tbyteIndex = 0;\n\t\tvar codePoints = [];\n\t\tvar tmp;\n\t\twhile ((tmp = decodeSymbol()) !== false) {\n\t\t\tcodePoints.push(tmp);\n\t\t}\n\t\treturn ucs2encode(codePoints);\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\troot.version = '3.0.0';\n\troot.encode = utf8encode;\n\troot.decode = utf8decode;\n\n}(typeof exports === 'undefined' ? this.utf8 = {} : exports));\n","import { decode, encode } from 'utf8';\nconst defaultByteLength = 1024 * 8;\nexport class IOBuffer {\n    /**\n     * @param data - The data to construct the IOBuffer with.\n     * If data is a number, it will be the new buffer's length<br>\n     * If data is `undefined`, the buffer will be initialized with a default length of 8Kb<br>\n     * If data is an ArrayBuffer, SharedArrayBuffer, an ArrayBufferView (Typed Array), an IOBuffer instance,\n     * or a Node.js Buffer, a view will be created over the underlying ArrayBuffer.\n     * @param options\n     */\n    constructor(data = defaultByteLength, options = {}) {\n        let dataIsGiven = false;\n        if (typeof data === 'number') {\n            data = new ArrayBuffer(data);\n        }\n        else {\n            dataIsGiven = true;\n            this.lastWrittenByte = data.byteLength;\n        }\n        const offset = options.offset ? options.offset >>> 0 : 0;\n        const byteLength = data.byteLength - offset;\n        let dvOffset = offset;\n        if (ArrayBuffer.isView(data) || data instanceof IOBuffer) {\n            if (data.byteLength !== data.buffer.byteLength) {\n                dvOffset = data.byteOffset + offset;\n            }\n            data = data.buffer;\n        }\n        if (dataIsGiven) {\n            this.lastWrittenByte = byteLength;\n        }\n        else {\n            this.lastWrittenByte = 0;\n        }\n        this.buffer = data;\n        this.length = byteLength;\n        this.byteLength = byteLength;\n        this.byteOffset = dvOffset;\n        this.offset = 0;\n        this.littleEndian = true;\n        this._data = new DataView(this.buffer, dvOffset, byteLength);\n        this._mark = 0;\n        this._marks = [];\n    }\n    /**\n     * Checks if the memory allocated to the buffer is sufficient to store more\n     * bytes after the offset.\n     * @param byteLength - The needed memory in bytes.\n     * @returns `true` if there is sufficient space and `false` otherwise.\n     */\n    available(byteLength = 1) {\n        return this.offset + byteLength <= this.length;\n    }\n    /**\n     * Check if little-endian mode is used for reading and writing multi-byte\n     * values.\n     * @returns `true` if little-endian mode is used, `false` otherwise.\n     */\n    isLittleEndian() {\n        return this.littleEndian;\n    }\n    /**\n     * Set little-endian mode for reading and writing multi-byte values.\n     */\n    setLittleEndian() {\n        this.littleEndian = true;\n        return this;\n    }\n    /**\n     * Check if big-endian mode is used for reading and writing multi-byte values.\n     * @returns `true` if big-endian mode is used, `false` otherwise.\n     */\n    isBigEndian() {\n        return !this.littleEndian;\n    }\n    /**\n     * Switches to big-endian mode for reading and writing multi-byte values.\n     */\n    setBigEndian() {\n        this.littleEndian = false;\n        return this;\n    }\n    /**\n     * Move the pointer n bytes forward.\n     * @param n - Number of bytes to skip.\n     */\n    skip(n = 1) {\n        this.offset += n;\n        return this;\n    }\n    /**\n     * Move the pointer to the given offset.\n     * @param offset\n     */\n    seek(offset) {\n        this.offset = offset;\n        return this;\n    }\n    /**\n     * Store the current pointer offset.\n     * @see {@link IOBuffer#reset}\n     */\n    mark() {\n        this._mark = this.offset;\n        return this;\n    }\n    /**\n     * Move the pointer back to the last pointer offset set by mark.\n     * @see {@link IOBuffer#mark}\n     */\n    reset() {\n        this.offset = this._mark;\n        return this;\n    }\n    /**\n     * Push the current pointer offset to the mark stack.\n     * @see {@link IOBuffer#popMark}\n     */\n    pushMark() {\n        this._marks.push(this.offset);\n        return this;\n    }\n    /**\n     * Pop the last pointer offset from the mark stack, and set the current\n     * pointer offset to the popped value.\n     * @see {@link IOBuffer#pushMark}\n     */\n    popMark() {\n        const offset = this._marks.pop();\n        if (offset === undefined) {\n            throw new Error('Mark stack empty');\n        }\n        this.seek(offset);\n        return this;\n    }\n    /**\n     * Move the pointer offset back to 0.\n     */\n    rewind() {\n        this.offset = 0;\n        return this;\n    }\n    /**\n     * Make sure the buffer has sufficient memory to write a given byteLength at\n     * the current pointer offset.\n     * If the buffer's memory is insufficient, this method will create a new\n     * buffer (a copy) with a length that is twice (byteLength + current offset).\n     * @param byteLength\n     */\n    ensureAvailable(byteLength = 1) {\n        if (!this.available(byteLength)) {\n            const lengthNeeded = this.offset + byteLength;\n            const newLength = lengthNeeded * 2;\n            const newArray = new Uint8Array(newLength);\n            newArray.set(new Uint8Array(this.buffer));\n            this.buffer = newArray.buffer;\n            this.length = this.byteLength = newLength;\n            this._data = new DataView(this.buffer);\n        }\n        return this;\n    }\n    /**\n     * Read a byte and return false if the byte's value is 0, or true otherwise.\n     * Moves pointer forward by one byte.\n     */\n    readBoolean() {\n        return this.readUint8() !== 0;\n    }\n    /**\n     * Read a signed 8-bit integer and move pointer forward by 1 byte.\n     */\n    readInt8() {\n        return this._data.getInt8(this.offset++);\n    }\n    /**\n     * Read an unsigned 8-bit integer and move pointer forward by 1 byte.\n     */\n    readUint8() {\n        return this._data.getUint8(this.offset++);\n    }\n    /**\n     * Alias for {@link IOBuffer#readUint8}.\n     */\n    readByte() {\n        return this.readUint8();\n    }\n    /**\n     * Read `n` bytes and move pointer forward by `n` bytes.\n     */\n    readBytes(n = 1) {\n        const bytes = new Uint8Array(n);\n        for (let i = 0; i < n; i++) {\n            bytes[i] = this.readByte();\n        }\n        return bytes;\n    }\n    /**\n     * Read a 16-bit signed integer and move pointer forward by 2 bytes.\n     */\n    readInt16() {\n        const value = this._data.getInt16(this.offset, this.littleEndian);\n        this.offset += 2;\n        return value;\n    }\n    /**\n     * Read a 16-bit unsigned integer and move pointer forward by 2 bytes.\n     */\n    readUint16() {\n        const value = this._data.getUint16(this.offset, this.littleEndian);\n        this.offset += 2;\n        return value;\n    }\n    /**\n     * Read a 32-bit signed integer and move pointer forward by 4 bytes.\n     */\n    readInt32() {\n        const value = this._data.getInt32(this.offset, this.littleEndian);\n        this.offset += 4;\n        return value;\n    }\n    /**\n     * Read a 32-bit unsigned integer and move pointer forward by 4 bytes.\n     */\n    readUint32() {\n        const value = this._data.getUint32(this.offset, this.littleEndian);\n        this.offset += 4;\n        return value;\n    }\n    /**\n     * Read a 32-bit floating number and move pointer forward by 4 bytes.\n     */\n    readFloat32() {\n        const value = this._data.getFloat32(this.offset, this.littleEndian);\n        this.offset += 4;\n        return value;\n    }\n    /**\n     * Read a 64-bit floating number and move pointer forward by 8 bytes.\n     */\n    readFloat64() {\n        const value = this._data.getFloat64(this.offset, this.littleEndian);\n        this.offset += 8;\n        return value;\n    }\n    /**\n     * Read a 1-byte ASCII character and move pointer forward by 1 byte.\n     */\n    readChar() {\n        return String.fromCharCode(this.readInt8());\n    }\n    /**\n     * Read `n` 1-byte ASCII characters and move pointer forward by `n` bytes.\n     */\n    readChars(n = 1) {\n        let result = '';\n        for (let i = 0; i < n; i++) {\n            result += this.readChar();\n        }\n        return result;\n    }\n    /**\n     * Read the next `n` bytes, return a UTF-8 decoded string and move pointer\n     * forward by `n` bytes.\n     */\n    readUtf8(n = 1) {\n        const bString = this.readChars(n);\n        return decode(bString);\n    }\n    /**\n     * Write 0xff if the passed value is truthy, 0x00 otherwise and move pointer\n     * forward by 1 byte.\n     */\n    writeBoolean(value) {\n        this.writeUint8(value ? 0xff : 0x00);\n        return this;\n    }\n    /**\n     * Write `value` as an 8-bit signed integer and move pointer forward by 1 byte.\n     */\n    writeInt8(value) {\n        this.ensureAvailable(1);\n        this._data.setInt8(this.offset++, value);\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as an 8-bit unsigned integer and move pointer forward by 1\n     * byte.\n     */\n    writeUint8(value) {\n        this.ensureAvailable(1);\n        this._data.setUint8(this.offset++, value);\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * An alias for {@link IOBuffer#writeUint8}.\n     */\n    writeByte(value) {\n        return this.writeUint8(value);\n    }\n    /**\n     * Write all elements of `bytes` as uint8 values and move pointer forward by\n     * `bytes.length` bytes.\n     */\n    writeBytes(bytes) {\n        this.ensureAvailable(bytes.length);\n        for (let i = 0; i < bytes.length; i++) {\n            this._data.setUint8(this.offset++, bytes[i]);\n        }\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 16-bit signed integer and move pointer forward by 2\n     * bytes.\n     */\n    writeInt16(value) {\n        this.ensureAvailable(2);\n        this._data.setInt16(this.offset, value, this.littleEndian);\n        this.offset += 2;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 16-bit unsigned integer and move pointer forward by 2\n     * bytes.\n     */\n    writeUint16(value) {\n        this.ensureAvailable(2);\n        this._data.setUint16(this.offset, value, this.littleEndian);\n        this.offset += 2;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 32-bit signed integer and move pointer forward by 4\n     * bytes.\n     */\n    writeInt32(value) {\n        this.ensureAvailable(4);\n        this._data.setInt32(this.offset, value, this.littleEndian);\n        this.offset += 4;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 32-bit unsigned integer and move pointer forward by 4\n     * bytes.\n     */\n    writeUint32(value) {\n        this.ensureAvailable(4);\n        this._data.setUint32(this.offset, value, this.littleEndian);\n        this.offset += 4;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 32-bit floating number and move pointer forward by 4\n     * bytes.\n     */\n    writeFloat32(value) {\n        this.ensureAvailable(4);\n        this._data.setFloat32(this.offset, value, this.littleEndian);\n        this.offset += 4;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 64-bit floating number and move pointer forward by 8\n     * bytes.\n     */\n    writeFloat64(value) {\n        this.ensureAvailable(8);\n        this._data.setFloat64(this.offset, value, this.littleEndian);\n        this.offset += 8;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write the charCode of `str`'s first character as an 8-bit unsigned integer\n     * and move pointer forward by 1 byte.\n     */\n    writeChar(str) {\n        return this.writeUint8(str.charCodeAt(0));\n    }\n    /**\n     * Write the charCodes of all `str`'s characters as 8-bit unsigned integers\n     * and move pointer forward by `str.length` bytes.\n     */\n    writeChars(str) {\n        for (let i = 0; i < str.length; i++) {\n            this.writeUint8(str.charCodeAt(i));\n        }\n        return this;\n    }\n    /**\n     * UTF-8 encode and write `str` to the current pointer offset and move pointer\n     * forward according to the encoded length.\n     */\n    writeUtf8(str) {\n        const bString = encode(str);\n        return this.writeChars(bString);\n    }\n    /**\n     * Export a Uint8Array view of the internal buffer.\n     * The view starts at the byte offset and its length\n     * is calculated to stop at the last written byte or the original length.\n     */\n    toArray() {\n        return new Uint8Array(this.buffer, this.byteOffset, this.lastWrittenByte);\n    }\n    /**\n     * Update the last written byte offset\n     * @private\n     */\n    _updateLastWrittenByte() {\n        if (this.offset > this.lastWrittenByte) {\n            this.lastWrittenByte = this.offset;\n        }\n    }\n}\n//# sourceMappingURL=IOBuffer.js.map","'use strict';\n\n/**\n * Throws a non-valid NetCDF exception if the statement it's true\n * @ignore\n * @param {boolean} statement - Throws if true\n * @param {string} reason - Reason to throw\n */\nfunction notNetcdf(statement, reason) {\n  if (statement) {\n    throw new TypeError(`Not a valid NetCDF v3.x file: ${reason}`);\n  }\n}\n\n/**\n * Moves 1, 2, or 3 bytes to next 4-byte boundary\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n */\nfunction padding(buffer) {\n  if ((buffer.offset % 4) !== 0) {\n    buffer.skip(4 - (buffer.offset % 4));\n  }\n}\n\n\n/**\n * Reads the name\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @return {string} - Name\n */\nfunction readName(buffer) {\n  // Read name\n  var nameLength = buffer.readUint32();\n  var name = buffer.readChars(nameLength);\n\n  // validate name\n  // TODO\n\n  // Apply padding\n  padding(buffer);\n  return name;\n}\n\nmodule.exports.notNetcdf = notNetcdf;\nmodule.exports.padding = padding;\nmodule.exports.readName = readName;\n","'use strict';\n\nconst notNetcdf = require('./utils').notNetcdf;\n\nconst types = {\n  BYTE: 1,\n  CHAR: 2,\n  SHORT: 3,\n  INT: 4,\n  FLOAT: 5,\n  DOUBLE: 6\n};\n\n/**\n * Parse a number into their respective type\n * @ignore\n * @param {number} type - integer that represents the type\n * @return {string} - parsed value of the type\n */\nfunction num2str(type) {\n  switch (Number(type)) {\n    case types.BYTE:\n      return 'byte';\n    case types.CHAR:\n      return 'char';\n    case types.SHORT:\n      return 'short';\n    case types.INT:\n      return 'int';\n    case types.FLOAT:\n      return 'float';\n    case types.DOUBLE:\n      return 'double';\n      /* istanbul ignore next */\n    default:\n      return 'undefined';\n  }\n}\n\n/**\n * Parse a number type identifier to his size in bytes\n * @ignore\n * @param {number} type - integer that represents the type\n * @return {number} -size of the type\n */\nfunction num2bytes(type) {\n  switch (Number(type)) {\n    case types.BYTE:\n      return 1;\n    case types.CHAR:\n      return 1;\n    case types.SHORT:\n      return 2;\n    case types.INT:\n      return 4;\n    case types.FLOAT:\n      return 4;\n    case types.DOUBLE:\n      return 8;\n      /* istanbul ignore next */\n    default:\n      return -1;\n  }\n}\n\n/**\n * Reverse search of num2str\n * @ignore\n * @param {string} type - string that represents the type\n * @return {number} - parsed value of the type\n */\nfunction str2num(type) {\n  switch (String(type)) {\n    case 'byte':\n      return types.BYTE;\n    case 'char':\n      return types.CHAR;\n    case 'short':\n      return types.SHORT;\n    case 'int':\n      return types.INT;\n    case 'float':\n      return types.FLOAT;\n    case 'double':\n      return types.DOUBLE;\n      /* istanbul ignore next */\n    default:\n      return -1;\n  }\n}\n\n/**\n * Auxiliary function to read numeric data\n * @ignore\n * @param {number} size - Size of the element to read\n * @param {function} bufferReader - Function to read next value\n * @return {Array<number>|number}\n */\nfunction readNumber(size, bufferReader) {\n  if (size !== 1) {\n    var numbers = new Array(size);\n    for (var i = 0; i < size; i++) {\n      numbers[i] = bufferReader();\n    }\n    return numbers;\n  } else {\n    return bufferReader();\n  }\n}\n\n/**\n * Given a type and a size reads the next element\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @param {number} type - Type of the data to read\n * @param {number} size - Size of the element to read\n * @return {string|Array<number>|number}\n */\nfunction readType(buffer, type, size) {\n  switch (type) {\n    case types.BYTE:\n      return buffer.readBytes(size);\n    case types.CHAR:\n      return trimNull(buffer.readChars(size));\n    case types.SHORT:\n      return readNumber(size, buffer.readInt16.bind(buffer));\n    case types.INT:\n      return readNumber(size, buffer.readInt32.bind(buffer));\n    case types.FLOAT:\n      return readNumber(size, buffer.readFloat32.bind(buffer));\n    case types.DOUBLE:\n      return readNumber(size, buffer.readFloat64.bind(buffer));\n      /* istanbul ignore next */\n    default:\n      notNetcdf(true, `non valid type ${type}`);\n      return undefined;\n  }\n}\n\n/**\n * Removes null terminate value\n * @ignore\n * @param {string} value - String to trim\n * @return {string} - Trimmed string\n */\nfunction trimNull(value) {\n  if (value.charCodeAt(value.length - 1) === 0) {\n    return value.substring(0, value.length - 1);\n  }\n  return value;\n}\n\nmodule.exports = types;\nmodule.exports.num2str = num2str;\nmodule.exports.num2bytes = num2bytes;\nmodule.exports.str2num = str2num;\nmodule.exports.readType = readType;\n","'use strict';\n\nconst types = require('./types');\n\n// const STREAMING = 4294967295;\n\n/**\n * Read data for the given non-record variable\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @param {object} variable - Variable metadata\n * @return {Array} - Data of the element\n */\nfunction nonRecord(buffer, variable) {\n  // variable type\n  const type = types.str2num(variable.type);\n\n  // size of the data\n  var size = variable.size / types.num2bytes(type);\n\n  // iterates over the data\n  var data = new Array(size);\n  for (var i = 0; i < size; i++) {\n    data[i] = types.readType(buffer, type, 1);\n  }\n\n  return data;\n}\n\n/**\n * Read data for the given record variable\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @param {object} variable - Variable metadata\n * @param {object} recordDimension - Record dimension metadata\n * @return {Array} - Data of the element\n */\nfunction record(buffer, variable, recordDimension) {\n  // variable type\n  const type = types.str2num(variable.type);\n  const width = variable.size ? variable.size / types.num2bytes(type) : 1;\n\n  // size of the data\n  // TODO streaming data\n  var size = recordDimension.length;\n\n  // iterates over the data\n  var data = new Array(size);\n  const step = recordDimension.recordStep;\n\n  for (var i = 0; i < size; i++) {\n    var currentOffset = buffer.offset;\n    data[i] = types.readType(buffer, type, width);\n    buffer.seek(currentOffset + step);\n  }\n\n  return data;\n}\n\nmodule.exports.nonRecord = nonRecord;\nmodule.exports.record = record;\n","'use strict';\n\nconst utils = require('./utils');\nconst types = require('./types');\n\n// Grammar constants\nconst ZERO = 0;\nconst NC_DIMENSION = 10;\nconst NC_VARIABLE = 11;\nconst NC_ATTRIBUTE = 12;\n\n/**\n * Read the header of the file\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @param {number} version - Version of the file\n * @return {object} - Object with the fields:\n *  * `recordDimension`: Number with the length of record dimension\n *  * `dimensions`: List of dimensions\n *  * `globalAttributes`: List of global attributes\n *  * `variables`: List of variables\n */\nfunction header(buffer, version) {\n  // Length of record dimension\n  // sum of the varSize's of all the record variables.\n  var header = { recordDimension: { length: buffer.readUint32() } };\n\n  // Version\n  header.version = version;\n\n  // List of dimensions\n  var dimList = dimensionsList(buffer);\n  header.recordDimension.id = dimList.recordId; // id of the unlimited dimension\n  header.recordDimension.name = dimList.recordName; // name of the unlimited dimension\n  header.dimensions = dimList.dimensions;\n\n  // List of global attributes\n  header.globalAttributes = attributesList(buffer);\n\n  // List of variables\n  var variables = variablesList(buffer, dimList.recordId, version);\n  header.variables = variables.variables;\n  header.recordDimension.recordStep = variables.recordStep;\n\n  return header;\n}\n\nconst NC_UNLIMITED = 0;\n\n/**\n * List of dimensions\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @return {object} - Ojbect containing the following properties:\n *  * `dimensions` that is an array of dimension object:\n  *  * `name`: String with the name of the dimension\n  *  * `size`: Number with the size of the dimension dimensions: dimensions\n *  * `recordId`: the id of the dimension that has unlimited size or undefined,\n *  * `recordName`: name of the dimension that has unlimited size\n */\nfunction dimensionsList(buffer) {\n  var recordId, recordName;\n  const dimList = buffer.readUint32();\n  if (dimList === ZERO) {\n    utils.notNetcdf((buffer.readUint32() !== ZERO), 'wrong empty tag for list of dimensions');\n    return [];\n  } else {\n    utils.notNetcdf((dimList !== NC_DIMENSION), 'wrong tag for list of dimensions');\n\n    // Length of dimensions\n    const dimensionSize = buffer.readUint32();\n    var dimensions = new Array(dimensionSize);\n    for (var dim = 0; dim < dimensionSize; dim++) {\n      // Read name\n      var name = utils.readName(buffer);\n\n      // Read dimension size\n      const size = buffer.readUint32();\n      if (size === NC_UNLIMITED) { // in netcdf 3 one field can be of size unlimmited\n        recordId = dim;\n        recordName = name;\n      }\n\n      dimensions[dim] = {\n        name: name,\n        size: size\n      };\n    }\n  }\n  return {\n    dimensions: dimensions,\n    recordId: recordId,\n    recordName: recordName\n  };\n}\n\n/**\n * List of attributes\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @return {Array<object>} - List of attributes with:\n *  * `name`: String with the name of the attribute\n *  * `type`: String with the type of the attribute\n *  * `value`: A number or string with the value of the attribute\n */\nfunction attributesList(buffer) {\n  const gAttList = buffer.readUint32();\n  if (gAttList === ZERO) {\n    utils.notNetcdf((buffer.readUint32() !== ZERO), 'wrong empty tag for list of attributes');\n    return [];\n  } else {\n    utils.notNetcdf((gAttList !== NC_ATTRIBUTE), 'wrong tag for list of attributes');\n\n    // Length of attributes\n    const attributeSize = buffer.readUint32();\n    var attributes = new Array(attributeSize);\n    for (var gAtt = 0; gAtt < attributeSize; gAtt++) {\n      // Read name\n      var name = utils.readName(buffer);\n\n      // Read type\n      var type = buffer.readUint32();\n      utils.notNetcdf(((type < 1) || (type > 6)), `non valid type ${type}`);\n\n      // Read attribute\n      var size = buffer.readUint32();\n      var value = types.readType(buffer, type, size);\n\n      // Apply padding\n      utils.padding(buffer);\n\n      attributes[gAtt] = {\n        name: name,\n        type: types.num2str(type),\n        value: value\n      };\n    }\n  }\n  return attributes;\n}\n\n/**\n * List of variables\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @param {number} recordId - Id of the unlimited dimension (also called record dimension)\n *                            This value may be undefined if there is no unlimited dimension\n * @param {number} version - Version of the file\n * @return {object} - Number of recordStep and list of variables with:\n *  * `name`: String with the name of the variable\n *  * `dimensions`: Array with the dimension IDs of the variable\n *  * `attributes`: Array with the attributes of the variable\n *  * `type`: String with the type of the variable\n *  * `size`: Number with the size of the variable\n *  * `offset`: Number with the offset where of the variable begins\n *  * `record`: True if is a record variable, false otherwise (unlimited size)\n */\n\nfunction variablesList(buffer, recordId, version) {\n  const varList = buffer.readUint32();\n  var recordStep = 0;\n  if (varList === ZERO) {\n    utils.notNetcdf((buffer.readUint32() !== ZERO), 'wrong empty tag for list of variables');\n    return [];\n  } else {\n    utils.notNetcdf((varList !== NC_VARIABLE), 'wrong tag for list of variables');\n\n    // Length of variables\n    const variableSize = buffer.readUint32();\n    var variables = new Array(variableSize);\n    for (var v = 0; v < variableSize; v++) {\n      // Read name\n      var name = utils.readName(buffer);\n\n      // Read dimensionality of the variable\n      const dimensionality = buffer.readUint32();\n\n      // Index into the list of dimensions\n      var dimensionsIds = new Array(dimensionality);\n      for (var dim = 0; dim < dimensionality; dim++) {\n        dimensionsIds[dim] = buffer.readUint32();\n      }\n\n      // Read variables size\n      var attributes = attributesList(buffer);\n\n      // Read type\n      var type = buffer.readUint32();\n      utils.notNetcdf(((type < 1) && (type > 6)), `non valid type ${type}`);\n\n      // Read variable size\n      // The 32-bit varSize field is not large enough to contain the size of variables that require\n      // more than 2^32 - 4 bytes, so 2^32 - 1 is used in the varSize field for such variables.\n      const varSize = buffer.readUint32();\n\n      // Read offset\n      var offset = buffer.readUint32();\n      if (version === 2) {\n        utils.notNetcdf((offset > 0), 'offsets larger than 4GB not supported');\n        offset = buffer.readUint32();\n      }\n\n      let record = false;\n      // Count amount of record variables\n      if ((typeof recordId !== 'undefined') && (dimensionsIds[0] === recordId)) {\n        recordStep += varSize;\n        record = true;\n      }\n      variables[v] = {\n        name: name,\n        dimensions: dimensionsIds,\n        attributes,\n        type: types.num2str(type),\n        size: varSize,\n        offset,\n        record\n      };\n    }\n  }\n\n  return {\n    variables: variables,\n    recordStep: recordStep\n  };\n}\n\nmodule.exports = header;\n","'use strict';\n\nfunction toString() {\n  let result = [];\n\n  result.push('DIMENSIONS');\n  for (let dimension of this.dimensions) {\n    result.push(`  ${dimension.name.padEnd(30)} = size: ${dimension.size}`);\n  }\n\n  result.push('');\n  result.push('GLOBAL ATTRIBUTES');\n  for (let attribute of this.globalAttributes) {\n    result.push(`  ${attribute.name.padEnd(30)} = ${attribute.value}`);\n  }\n\n  let variables = JSON.parse(JSON.stringify(this.variables));\n  result.push('');\n  result.push('VARIABLES:');\n  for (let variable of variables) {\n    variable.value = this.getDataVariable(variable);\n    let stringify = JSON.stringify(variable.value);\n    if (stringify.length > 50) stringify = stringify.substring(0, 50);\n    if (!isNaN(variable.value.length)) {\n      stringify += ` (length: ${variable.value.length})`;\n    }\n    result.push(`  ${variable.name.padEnd(30)} = ${stringify}`);\n  }\n  return result.join('\\n');\n}\n\nmodule.exports = toString;\n","'use strict';\n\nconst { IOBuffer } = require('iobuffer');\n\nconst utils = require('./utils');\nconst data = require('./data');\nconst readHeader = require('./header');\nconst toString = require('./toString');\n\n/**\n * Reads a NetCDF v3.x file\n * https://www.unidata.ucar.edu/software/netcdf/docs/file_format_specifications.html\n * @param {ArrayBuffer} data - ArrayBuffer or any Typed Array (including Node.js' Buffer from v4) with the data\n * @constructor\n */\nclass NetCDFReader {\n  constructor(data) {\n    const buffer = new IOBuffer(data);\n    buffer.setBigEndian();\n\n    // Validate that it's a NetCDF file\n    utils.notNetcdf(buffer.readChars(3) !== 'CDF', 'should start with CDF');\n\n    // Check the NetCDF format\n    const version = buffer.readByte();\n    utils.notNetcdf(version > 2, 'unknown version');\n\n    // Read the header\n    this.header = readHeader(buffer, version);\n    this.buffer = buffer;\n  }\n\n  /**\n   * @return {string} - Version for the NetCDF format\n   */\n  get version() {\n    if (this.header.version === 1) {\n      return 'classic format';\n    } else {\n      return '64-bit offset format';\n    }\n  }\n\n  /**\n   * @return {object} - Metadata for the record dimension\n   *  * `length`: Number of elements in the record dimension\n   *  * `id`: Id number in the list of dimensions for the record dimension\n   *  * `name`: String with the name of the record dimension\n   *  * `recordStep`: Number with the record variables step size\n   */\n  get recordDimension() {\n    return this.header.recordDimension;\n  }\n\n  /**\n   * @return {Array<object>} - List of dimensions with:\n   *  * `name`: String with the name of the dimension\n   *  * `size`: Number with the size of the dimension\n   */\n  get dimensions() {\n    return this.header.dimensions;\n  }\n\n  /**\n   * @return {Array<object>} - List of global attributes with:\n   *  * `name`: String with the name of the attribute\n   *  * `type`: String with the type of the attribute\n   *  * `value`: A number or string with the value of the attribute\n   */\n  get globalAttributes() {\n    return this.header.globalAttributes;\n  }\n\n  /**\n   * Returns the value of an attribute\n   * @param {string} attributeName\n   * @return {string} Value of the attributeName or null\n   */\n  getAttribute(attributeName) {\n    const attribute = this.globalAttributes.find(\n      (val) => val.name === attributeName\n    );\n    if (attribute) return attribute.value;\n    return null;\n  }\n\n  /**\n   * Returns the value of a variable as a string\n   * @param {string} variableName\n   * @return {string} Value of the variable as a string or null\n   */\n  getDataVariableAsString(variableName) {\n    const variable = this.getDataVariable(variableName);\n    if (variable) return variable.join('');\n    return null;\n  }\n\n  /**\n   * @return {Array<object>} - List of variables with:\n   *  * `name`: String with the name of the variable\n   *  * `dimensions`: Array with the dimension IDs of the variable\n   *  * `attributes`: Array with the attributes of the variable\n   *  * `type`: String with the type of the variable\n   *  * `size`: Number with the size of the variable\n   *  * `offset`: Number with the offset where of the variable begins\n   *  * `record`: True if is a record variable, false otherwise\n   */\n  get variables() {\n    return this.header.variables;\n  }\n\n  toString() {\n    return toString.call(this);\n  }\n\n  /**\n   * Retrieves the data for a given variable\n   * @param {string|object} variableName - Name of the variable to search or variable object\n   * @return {Array} - List with the variable values\n   */\n  getDataVariable(variableName) {\n    let variable;\n    if (typeof variableName === 'string') {\n      // search the variable\n      variable = this.header.variables.find(function (val) {\n        return val.name === variableName;\n      });\n    } else {\n      variable = variableName;\n    }\n\n    // throws if variable not found\n    utils.notNetcdf(\n      variable === undefined,\n      `variable not found: ${variableName}`\n    );\n\n    // go to the offset position\n    this.buffer.seek(variable.offset);\n\n    if (variable.record) {\n      // record variable case\n      return data.record(this.buffer, variable, this.header.recordDimension);\n    } else {\n      // non-record variable case\n      return data.nonRecord(this.buffer, variable);\n    }\n  }\n\n  /**\n   * Check if a dataVariable exists\n   * @param {string} variableName - Name of the variable to find\n   * @return {boolean}\n   */\n  dataVariableExists(variableName) {\n    const variable = this.header.variables.find(function (val) {\n      return val.name === variableName;\n    });\n    return variable !== undefined;\n  }\n\n  /**\n   * Check if an attribute exists\n   * @param {string} attributeName - Name of the attribute to find\n   * @return {boolean}\n   */\n  attributeExists(attributeName) {\n    const attribute = this.globalAttributes.find(\n      (val) => val.name === attributeName\n    );\n    return attribute !== undefined;\n  }\n}\n\nmodule.exports = NetCDFReader;\n","'use strict';\n\n/* reader.toString() provides the following information\n    GLOBAL ATTRIBUTES\n      dataset_completeness           = C1+C2\n      ms_template_revision           = 1.0.1\n      netcdf_revision                = 2.3.2\n      languages                      = English\n      administrative_comments        = 1% CH2Cl2\n      dataset_origin                 = Santa Clara, CA\n      netcdf_file_date_time_stamp    = 20161012052159+0200\n      experiment_title               = P071 Essence super BP\n      experiment_date_time_stamp     = 20070923040800+0200\n      operator_name                  = SC\n      external_file_ref_0            = FIRE_RTL.M\n      experiment_type                = Centroided Mass Spectrum\n      number_of_times_processed      = 1\n      number_of_times_calibrated     = 0\n      sample_state                   = Other State\n      test_separation_type           = No Chromatography\n      test_ms_inlet                  = Capillary Direct\n      test_ionization_mode           = Electron Impact\n      test_ionization_polarity       = Positive Polarity\n      test_detector_type             = Electron Multiplier\n      test_resolution_type           = Constant Resolution\n      test_scan_function             = Mass Scan\n      test_scan_direction            = Up\n      test_scan_law                  = Linear\n      raw_data_mass_format           = Float\n      raw_data_time_format           = Short\n      raw_data_intensity_format      = Float\n\n    VARIABLES:\n      error_log                      = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 64)\n      a_d_sampling_rate              = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 6401)\n      a_d_coaddition_factor          = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 6402)\n      scan_acquisition_time          = [5.25,5.84,6.428999999999999,7.019,7.609,8.199,8.7 (length: 6401)\n      scan_duration                  = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 6401)\n      inter_scan_time                = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 6401)\n      resolution                     = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 6401)\n      actual_scan_number             = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 (length: 6401)\n      total_intensity                = [3134,3157,3085,3134,3093,3113,3061,3057,3030,3166 (length: 6401)\n      mass_range_min                 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 6401)\n      mass_range_max                 = [206.89999389648438,206.89999389648438,207,207.100 (length: 6401)\n      time_range_min                 = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 6401)\n      time_range_max                 = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 6401)\n      scan_index                     = [0,11,22,33,44,55,66,76,88,99,111,122,134,145,156, (length: 6401)\n      point_count                    = [11,11,11,11,11,11,10,12,11,12,11,12,11,11,11,11,1 (length: 6401)\n      flag_count                     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 6401)\n      mass_values                    = [16,17,18.100000381469727,28,32,35,36,38,40,44.099 (length: 157201)\n      time_values                    = [9.969209968386869e+36,9.969209968386869e+36,9.969 (length: 157201)\n      intensity_values               = [37,293,1243,737,420,45,196,72,22,35,34,28,299,123 (length: 157201)\n      instrument_name                = [\"G\",\"a\",\"s\",\" \",\"C\",\"h\",\"r\",\"o\",\"m\",\"a\",\"t\",\"o\",\" (length: 32)\n      instrument_id                  = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_mfr                 = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_model               = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_serial_no           = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_sw_version          = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_fw_version          = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_os_version          = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_app_version         = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_comments            = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n*/\n\nfunction agilentGCMS(reader) {\n  const time = reader.getDataVariable('scan_acquisition_time');\n  const tic = reader.getDataVariable('total_intensity');\n\n  // variables to get the mass-intensity values\n  const pointCount = reader.getDataVariable('point_count');\n  const massValues = reader.getDataVariable('mass_values');\n  const intensityValues = reader.getDataVariable('intensity_values');\n\n  let ms = new Array(pointCount.length);\n  let index = 0;\n  for (let i = 0; i < ms.length; i++) {\n    let size = pointCount[i];\n    ms[i] = [new Array(size), new Array(size)];\n\n    for (let j = 0; j < size; j++) {\n      ms[i][0][j] = massValues[index];\n      ms[i][1][j] = intensityValues[index++];\n    }\n  }\n\n  return {\n    times: time,\n    series: [\n      {\n        name: 'tic',\n        dimension: 1,\n        data: tic,\n      },\n      {\n        name: 'ms',\n        dimension: 2,\n        data: ms,\n      },\n    ],\n  };\n}\n\nmodule.exports = agilentGCMS;\n","'use strict';\n\n/* reader.toString() provides the following information\n    GLOBAL ATTRIBUTES\n      dataset_completeness           = C1+C2\n      ms_template_revision           = 1.0.1\n      netcdf_revision                = 2.3.2\n      languages                      = English\n      netcdf_file_date_time_stamp    = 20170428032023+0000\n      experiment_title               = MS51762A16\n    11829FC03_3__60_40\n      experiment_date_time_stamp     = 20160930202145-0001\n      operator_name                  = Begemann/Eikenberg/Roettger\n      pre_experiment_program_name    = otofControl 3.4.16.0\n      post_experiment_program_name   = Bruker Compass DataAnalysis 4.2\n      source_file_reference          = X:\\2016\\MS5\\1700\\MS51762A16.d\n      source_file_format             = Bruker Daltonics Data File\n      experiment_type                = Centroided Mass Spectrum\n      sample_state                   = Other State\n      test_separation_type           = No Chromatography\n      test_ms_inlet                  = Direct Inlet Probe\n      test_ionization_mode           = Electrospray Ionization\n      test_ionization_polarity       = Positive Polarity\n      test_detector_type             = Electron Multiplier\n      test_resolution_type           = Proportional Resolution\n      test_scan_function             = Mass Scan\n      test_scan_direction            = Up\n      test_scan_law                  = Linear\n      raw_data_mass_format           = Double\n      raw_data_time_format           = Float\n      raw_data_intensity_format      = Float\n      units                          = Seconds\n      scale_factor                   = 1\n\n    VARIABLES:\n      error_log                      = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 64)\n      a_d_sampling_rate              = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 4513)\n      a_d_coaddition_factor          = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 4514)\n      scan_acquisition_time          = [0.329,0.73,1.132,1.534,1.936,2.337,2.739,3.14,3.5 (length: 4513)\n      scan_duration                  = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 4513)\n      inter_scan_time                = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 4513)\n      resolution                     = [106.6623112889557,110.7855343519544,104.407495112 (length: 4513)\n      actual_scan_number             = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34, (length: 4513)\n      total_intensity                = [5297.4945068359375,6172.123912811279,5934.7557412 (length: 4513)\n      mass_range_min                 = [49.99999997418507,49.99999997418507,49.9999999741 (length: 4513)\n      mass_range_max                 = [1599.9999564432276,1599.9999564432276,1599.999956 (length: 4513)\n      time_range_min                 = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 4513)\n      time_range_max                 = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 4513)\n      scan_index                     = [0,60,128,195,265,324,399,472,542,596,671,738,803, (length: 4513)\n      point_count                    = [60,68,67,70,59,75,73,70,54,75,67,65,64,73,56,69,6 (length: 4513)\n      flag_count                     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 4513)\n      mass_values                    = [51.53516375878996,95.32974890044508,106.334477231 (length: 1176507)\n      intensity_values               = [76.99999237060547,80,90,78.99799346923828,80.9352 (length: 1176507)\n      instrument_name                = [\"m\",\"i\",\"c\",\"r\",\"O\",\"T\",\"O\",\"F\",\"\",\" \",\" \",\" \",\"  (length: 32)\n      instrument_id                  = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_mfr                 = [\"B\",\"r\",\"u\",\"k\",\"e\",\"r\",\" \",\"D\",\"a\",\"l\",\"t\",\"o\",\" (length: 32)\n      instrument_model               = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_serial_no           = [\"2\",\"1\",\"3\",\"7\",\"5\",\"0\",\".\",\"1\",\"0\",\"3\",\"5\",\"9\",\" (length: 32)\n      instrument_sw_version          = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_fw_version          = [\"\",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\"  (length: 32)\n      instrument_os_version          = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_app_version         = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_comments            = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n*/\n\nfunction finniganGCMS(reader) {\n  const time = reader.getDataVariable('scan_acquisition_time');\n  const tic = reader.getDataVariable('total_intensity');\n\n  // variables to get the mass-intensity values\n  let scanIndex = reader.getDataVariable('scan_index');\n  const massValues = reader.getDataVariable('mass_values');\n  const intensityValues = reader.getDataVariable('intensity_values');\n  scanIndex.push(massValues.length);\n\n  let ms = new Array(time.length);\n  let index = 0;\n  for (let i = 0; i < ms.length; i++) {\n    let size = scanIndex[i + 1] - scanIndex[i];\n    ms[i] = [new Array(size), new Array(size)];\n\n    for (let j = 0; j < size; j++) {\n      ms[i][0][j] = massValues[index];\n      ms[i][1][j] = intensityValues[index++];\n    }\n  }\n\n  return {\n    times: time,\n    series: [\n      {\n        name: 'tic',\n        dimension: 1,\n        data: tic,\n      },\n      {\n        name: 'ms',\n        dimension: 2,\n        data: ms,\n      },\n    ],\n  };\n}\n\nmodule.exports = finniganGCMS;\n","'use strict';\n\n/* reader.toString() provides the following information\n    GLOBAL ATTRIBUTES\n      dataset_completeness           = C1+C2\n      aia_template_revision          = 1.0\n      netcdf_revision                = 2.3\n      languages                      = English only\n      injection_date_time_stamp      = 20181030174305+0000\n      HP_injection_time              = 30-Oct-18, 17:43:05\n      experiment_title               = SequenceLine: 1  Inj: 1\n      operator_name                  = SYSTEM\n      separation_experiment_type     = liquid chromatography\n      source_file_reference          = C:\\CHEM32\\1\\DATA\\MINGMING\\MW-1-MEO-I IC-90 2018-10-30 17-42-13\\MW-2-6-6 IC 90.D\n      sample_name                    = MW-2-6-6 IC 90\n      sample_id                      =\n      detector_unit                  = mAU\n      detection_method_name          = POS 3 IC 90-10 31 MIN.M\n      detector_name                  = DAD1 A, Sig=254,4 Ref=360,100\n      retention_unit                 = seconds\n\n   VARIABLES:\n      detector_maximum_value         = [130.9263458251953] (length: 1)\n      detector_minimum_value         = [-0.1758841574192047] (length: 1)\n      actual_run_time_length         = [1860] (length: 1)\n      actual_delay_time              = [0.012000000104308128] (length: 1)\n      actual_sampling_interval       = [0.4000000059604645] (length: 1)\n      ordinate_values                = [-0.07588416337966919,-0.07525086402893066,-0.0740 (length: 4651)\n      peak_retention_time            = [196.0651397705078,332.5663757324219,527.549865722 (length: 8)\n      peak_start_time                = [186.81199645996094,239.21200561523438,502.4119873 (length: 8)\n      peak_end_time                  = [220.81201171875,471.5176696777344,572.47869873046 (length: 8)\n      peak_width                     = [4.974428176879883,62.90694808959961,11.9328641891 (length: 8)\n      peak_area                      = [556.7650146484375,419.825439453125,66.56610107421 (length: 8)\n      peak_area_percent              = [7.0321502685546875,5.302552223205566,0.8407546877 (length: 8)\n      peak_height                    = [100.07515716552734,5.1860527992248535,4.827196121 (length: 8)\n      peak_height_percent            = [29.76352310180664,1.5423927307128906,1.4356645345 (length: 8)\n      peak_asymmetry                 = [1.4555920362472534,0.8351489901542664,1.707817316 (length: 8)\n      baseline_start_time            = [186.81199645996094,239.21200561523438,502.4119873 (length: 8)\n      baseline_start_value           = [1.9561424255371094,0.9857341647148132,1.127734780 (length: 8)\n      baseline_stop_time             = [220.81201171875,471.5176696777344,572.47869873046 (length: 8)\n      baseline_stop_value            = [1.1907591819763184,1.10896897315979,1.18347382545 (length: 8)\n      peak_start_detection_code      = [\"B\",\"\",\"B\",\"\",\"B\",\"\",\"B\",\"\",\"V\",\"\",\"B\",\"\",\"B\",\"\", (length: 16)\n      peak_stop_detection_code       = [\"B\",\"\",\"B\",\"\",\"B\",\"\",\"V\",\"\",\"B\",\"\",\"B\",\"\",\"B\",\"\", (length: 16)\n      migration_time                 = [196.0651397705078,332.5663757324219,527.549865722 (length: 8)\n      peak_area_square_root          = [23.595869064331055,20.489643096923828,8.158804893 (length: 8)\n      manually_reintegrated_peaks    = [0,0,0,0,0,0,0,0] (length: 8)\n*/\n\nfunction agilentHPLC(reader) {\n  const intensities = reader.getDataVariable('ordinate_values');\n  const numberPoints = intensities.length;\n  const detector = reader.getAttribute('detector_name');\n  let channel;\n  if (detector.match(/dad/i)) {\n    channel = `uv${Number(detector.replace(/.*Sig=([0-9]+).*/, '$1'))}`;\n  } else if (detector.match(/tic/i)) {\n    channel = 'tic';\n  } else {\n    channel = 'unknown';\n  }\n  const delayTime = reader.getDataVariable('actual_delay_time')[0];\n  const runtimeLength = reader.getDataVariable('actual_run_time_length')[0];\n  let samplingInterval;\n  if (reader.dataVariableExists('actual_sampling_interval')) {\n    samplingInterval = reader.getDataVariable('actual_sampling_interval')[0];\n\n    if (\n      Math.abs(delayTime + samplingInterval * numberPoints - runtimeLength) > 3\n    ) {\n      throw new Error(\n        'The expected last time does not correspond to the runtimeLength',\n      );\n    }\n  } else {\n    samplingInterval = (runtimeLength - delayTime) / numberPoints;\n  }\n\n  let times = [];\n  let time = delayTime;\n  for (let i = 0; i < numberPoints; i++) {\n    times.push(time);\n    time += samplingInterval;\n  }\n\n  return {\n    times,\n    series: [\n      {\n        name: channel,\n        dimension: 1,\n        data: intensities,\n      },\n    ],\n  };\n}\n\nmodule.exports = agilentHPLC;\n","'use strict';\n\n/* reader.toString() provides the following information\n    GLOBAL ATTRIBUTES\n      dataset_completeness           = C1+C2\n      ms_template_revision           = 1.0.1\n      administrative_comments        =\n      dataset_owner                  =\n      experiment_title               =\n      experiment_date_time_stamp     = 20150902041002+0100\n      netcdf_file_date_time_stamp    = 20151026063419+0000\n      experiment_type                = Centroided Mass Spectrum\n      netcdf_revision                = 2.3.2\n      operator_name                  = DSQ\n      source_file_reference          = G:\\FCO\\FCO_CIO\\K2\\MP2013\\T1 IL database 2013\\9. IL Data Entry\\12_HU_HIFS\\IL database\\RAW files\\Lukoil-Disel-150901.RAW\n      source_file_date_time_stamp    = 20150902041002+0100\n      source_file_format             = Finnigan\n      languages                      = English\n      external_file_ref_0            =\n      instrument_number              = 1\n      sample_prep_comments           =\n      sample_comments                = Lukoil Disel 0,5 % CS2 1 % inkt\n      test_separation_type           =\n      test_ms_inlet                  =\n      test_ionization_mode           =\n      test_ionization_polarity       = Positive Polarity\n      test_detector_type             = Conversion Dynode Electron Multiplier\n      test_scan_function             = Mass Scan\n      test_scan_direction            =\n      test_scan_law                  = Linear\n      number_of_scans                = 11832\n      raw_data_mass_format           = Double\n      raw_data_intensity_format      = Long\n      actual_run_time                = 3519.6410000000005\n      actual_delay_time              = 82.328\n      global_mass_min                = 0\n      global_mass_max                = 450\n      calibrated_mass_min            = 0\n      calibrated_mass_max            = 0\n      mass_axis_label                = M/Z\n      intensity_axis_label           = Abundance\n\n    VARIABLES:\n      error_log                      = [\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\" (length: 64)\n      instrument_name                = [\"L\",\"C\",\"Q\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\" (length: 32)\n      instrument_id                  = [\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\" (length: 32)\n      instrument_mfr                 = [\"F\",\"i\",\"n\",\"n\",\"i\",\"g\",\"a\",\"n\",\"-\",\"M\",\"A\",\"T\",\" (length: 32)\n      instrument_model               = [\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\" (length: 32)\n      instrument_sw_version          = [\"3\",\".\",\"1\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\" (length: 32)\n      instrument_os_version          = [\"W\",\"i\",\"n\",\"d\",\"o\",\"w\",\"s\",\" \",\"V\",\"i\",\"s\",\"t\",\" (length: 32)\n      scan_index                     = [0,34,74,113,145,177,211,239,267,299,341,374,400,4 (length: 11832)\n      point_count                    = [34,40,39,32,32,34,28,28,32,42,33,26,29,34,31,28,2 (length: 11832)\n      flag_count                     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 11832)\n      a_d_sampling_rate              = [1000,1000,1000,1000,1000,1000,1000,1000,1000,1000 (length: 11832)\n      scan_acquisition_time          = [82.328,82.625,82.76599999999999,83.063,83.188,83. (length: 11832)\n      scan_duration                  = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 11832)\n      mass_range_min                 = [35,16,35,16,35,16,35,16,35,16,35,16,35,16,35,16,3 (length: 11832)\n      mass_range_max                 = [450,150,450,150,450,150,450,150,450,150,450,150,4 (length: 11832)\n      scan_type                      = [65537,65537,65537,65537,65537,65537,65537,65537,6 (length: 11832)\n      resolution                     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 11832)\n      total_intensity                = [375220,1054339,228245,576718,58280,288629,29815,1 (length: 11832)\n      mass_values                    = [36.3023681640625,36.98402404785156,38.08326721191 (length: 1366002)\n      intensity_values               = [335,287,331,266,2423,448,9009,833,261,661,4003,21 (length: 1366002)\n\n*/\n\nfunction finniganGCMS(reader) {\n  const time = reader.getDataVariable('scan_acquisition_time');\n  const tic = reader.getDataVariable('total_intensity');\n\n  // variables to get the mass-intensity values\n  let scanIndex = reader.getDataVariable('scan_index');\n  const massValues = reader.getDataVariable('mass_values');\n  const intensityValues = reader.getDataVariable('intensity_values');\n  scanIndex.push(massValues.length);\n\n  let ms = new Array(time.length);\n  let index = 0;\n  for (let i = 0; i < ms.length; i++) {\n    let size = scanIndex[i + 1] - scanIndex[i];\n    ms[i] = [new Array(size), new Array(size)];\n\n    for (let j = 0; j < size; j++) {\n      ms[i][0][j] = massValues[index];\n      ms[i][1][j] = intensityValues[index++];\n    }\n  }\n\n  return {\n    times: time,\n    series: [\n      {\n        name: 'tic',\n        dimension: 1,\n        data: tic,\n      },\n      {\n        name: 'ms',\n        dimension: 2,\n        data: ms,\n      },\n    ],\n  };\n}\n\nmodule.exports = finniganGCMS;\n","'use strict';\n\n/* reader.toString() provides the following information\n    GLOBAL ATTRIBUTES\n      dataset_completeness           = C1+C2\n      ms_template_revision           = 1.0.1\n      netcdf_revision                = 2.3.2\n      languages                      = English\n      administrative_comments        =\n      netcdf_file_date_time_stamp    = 20180913165502+0000\n      experiment_title               =\n      experiment_date_time_stamp     = 20180910165319+0000\n      operator_name                  = Admin\n      source_file_reference          = D:\\GCMSsolution\\Data\\Chromatograms\\Cato\\bormann_CB000_Test2.qgd\n      source_file_format             = Shimadzu GCMSsolution\n      source_file_date_time_stamp    = 20180910165319+0000\n      experiment_type                = Centroided Mass Spectrum\n      sample_internal_id             =\n      sample_comments                =\n      sample_state                   = Other State\n      test_separation_type           = Gas-Solid Chromatography\n      test_ms_inlet                  = Other Probe\n      test_ionization_mode           = Electron Impact\n      test_ionization_polarity       = Positive Polarity\n      test_electron_energy           = 70\n      test_detector_type             = Electron Multiplier\n      test_resolution_type           = Constant Resolution\n      test_scan_function             = Mass Scan\n      test_scan_direction            = Up\n      test_scan_law                  = Quadratic\n      test_scan_time                 = 0\n      raw_data_mass_format           = Double\n      raw_data_time_format           = Long\n      raw_data_intensity_format      = Long\n      units                          = Seconds\n      scale_factor                   = 1\n      long_name                      = Seconds\n      starting_scan_number           = 0\n      actual_run_time_length         = 1289\n      actual_delay_time              = 0\n      raw_data_uniform_sampling_flag = 1\n\n    VARIABLES:\n      error_log                      = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 64)\n      a_d_sampling_rate              = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      a_d_coaddition_factor          = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      scan_acquisition_time          = [144,144.3,144.6,144.9,145.2,145.5,145.8,146.1,146 (length: 3820)\n      scan_duration                  = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      inter_scan_time                = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      resolution                     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      actual_scan_number             = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,2 (length: 3820)\n      total_intensity                = [63566,61702,61873,59738,58321,59001,59364,59871,6 (length: 3820)\n      mass_range_min                 = [35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,3 (length: 3820)\n      mass_range_max                 = [500,500,500,500,500,500,500,500,500,500,500,500,5 (length: 3820)\n      time_range_min                 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      time_range_max                 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      scan_index                     = [0,466,932,1398,1863,2329,2795,3260,3726,4192,4658 (length: 3820)\n      point_count                    = [466,466,466,465,466,466,465,466,466,466,466,466,4 (length: 3820)\n      flag_count                     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      mass_values                    = [35,36,37.1,38.1,39.1,40.15,41.1,42.1,43.15,44.1,4 (length: 1779397)\n      intensity_values               = [26,111,412,785,3098,485,5772,7391,11213,711,687,1 (length: 1779397)\n      instrument_name                = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_id                  = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_mfr                 = [\"S\",\"h\",\"i\",\"m\",\"a\",\"d\",\"z\",\"u\",\" \",\"C\",\"o\",\"r\",\" (length: 32)\n      instrument_model               = [\"G\",\"C\",\"M\",\"S\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\", (length: 32)\n      instrument_serial_no           = [\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\" (length: 32)\n      instrument_sw_version          = [\"4\",\".\",\"2\",\"0\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\", (length: 32)\n      instrument_fw_version          = [\"G\",\"C\",\"M\",\"S\",\"-\",\"Q\",\"P\",\"2\",\"0\",\"1\",\"0\",\"1\",\" (length: 32)\n      instrument_os_version          = [\"W\",\"i\",\"n\",\"d\",\"o\",\"w\",\"s\",\"\",\"\",\"\",\"\",\"\",\"\",\"\", (length: 32)\n      instrument_app_version         = [\"G\",\"C\",\"M\",\"S\",\"s\",\"o\",\"l\",\"u\",\"t\",\"i\",\"o\",\"n\",\" (length: 32)\n      instrument_comments            = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n*/\n\nfunction shimadzuGCMS(reader) {\n  const time = reader.getDataVariable('scan_acquisition_time');\n  const tic = reader.getDataVariable('total_intensity');\n\n  // variables to get the mass-intensity values\n  let scanIndex = reader.getDataVariable('scan_index');\n  const massValues = reader.getDataVariable('mass_values');\n  const intensityValues = reader.getDataVariable('intensity_values');\n  scanIndex.push(massValues.length);\n\n  let ms = new Array(time.length);\n  let index = 0;\n  for (let i = 0; i < ms.length; i++) {\n    let size = scanIndex[i + 1] - scanIndex[i];\n    ms[i] = [new Array(size), new Array(size)];\n\n    for (let j = 0; j < size; j++) {\n      ms[i][0][j] = massValues[index];\n      ms[i][1][j] = intensityValues[index++];\n    }\n  }\n\n  return {\n    times: time,\n    series: [\n      {\n        name: 'tic',\n        dimension: 1,\n        data: tic,\n      },\n      {\n        name: 'ms',\n        dimension: 2,\n        data: ms,\n      },\n    ],\n  };\n}\n\nmodule.exports = shimadzuGCMS;\n","'use strict';\n\n/* reader.toString() provides the following information\n    DIMENSIONS\n      point_number                   = size: 0\n      scan_number                    = size: 60\n      error_number                   = size: 1\n      _64_byte_string                = size: 64\n\n    GLOBAL ATTRIBUTES\n      dataset_completeness           = C1\n      ms_template_revision           = 1.0.1\n      netcdf_revision                = 4.2\n      languages                      = English\n      administrative_comments        =\n      netcdf_file_date_time_stamp    = 202003031432433600000\n      experiment_date_time_stamp     = 202003031432433600000\n      source_file_reference          = JC-012_cleavage test_Scan1_is1.datx 2020.03.03 14:32:43\n      source_file_format             = Advion ExpressIon Compact Mass Spectrometer Data System\n      source_file_date_time_stamp    = 202003031432433600000\n      experiment_title               =\n      experiment_type                = Continuum Mass Spectrum\n      test_ionization_mode           = Electrospray Ionization\n      test_ionization_polarity       = Positive Polarity\n      sample_state                   = Other State\n      test_separation_type           = No Chromatography\n      test_ms_inlet                  = Direct Inlet Probe\n      test_detector_type             = Electron Multiplier\n      test_resolution_type           = Constant Resolution\n      test_scan_function             = Mass Scan\n      test_scan_direction            = Up\n      test_scan_law                  = Linear\n      raw_data_mass_format           = Float\n      raw_data_time_format           = Double\n      raw_data_intensity_format      = Float\n      units                          = Seconds\n      global_mass_min                = 9.949999809265137\n      global_mass_max                = 1199.75\n      actual_run_time_length         = 133.46099853515625\n      starting_scan_number           = 1\n      actual_delay_time              = 0\n      raw_data_uniform_sampling_flag = 0\n\n    VARIABLES:\n      error_log                      = [\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\" (length: 64)\n      scan_index                     = [0,3096,6282,9865,13409,16765,20281,23603,27099,30 (length: 60)\n      point_count                    = [3096,3186,3583,3544,3356,3516,3322,3496,3351,3031 (length: 60)\n      flag_count                     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 60)\n      actual_scan_number             = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 (length: 60)\n      a_d_coaddition_factor          = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 60)\n      a_d_sampling_rate              = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 60)\n      inter_scan_time                = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 60)\n      mass_range_min                 = [9.949999809265137,9.949999809265137,9.94999980926 (length: 60)\n      mass_range_max                 = [164.6999969482422,169.1999969482422,189.050003051 (length: 60)\n      scan_acquisition_time          = [0.08100000023841858,2.3420000076293945,4.60300016 (length: 60)\n      scan_duration                  = [2.261000007390976,2.261000156402588,2.25999975204 (length: 60)\n      resolution                     = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 60)\n      time_range_min                 = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 60)\n      time_range_max                 = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 60)\n      total_intensity                = [4498210816,4468554240,5001547264,5405233152,50000 (length: 60)\n      mass_values                    = [9.949999809265137,83.5,83.55000305175781,83.59999 (length: 199393)\n      intensity_values               = [0,818716,462148,0,735558,952901,0,165241,421829,0 (length: 199393)\n*/\n\nfunction advionGCMS(reader) {\n  const time = reader.getDataVariable('scan_acquisition_time');\n  const tic = reader.getDataVariable('total_intensity');\n\n  // variables to get the mass-intensity values\n  let scanIndex = reader.getDataVariable('scan_index');\n  const massValues = reader.getDataVariable('mass_values');\n  const intensityValues = reader.getDataVariable('intensity_values');\n  scanIndex.push(massValues.length);\n\n  let ms = new Array(time.length);\n  let index = 0;\n  for (let i = 0; i < ms.length; i++) {\n    let size = scanIndex[i + 1] - scanIndex[i];\n    ms[i] = [new Array(size), new Array(size)];\n\n    for (let j = 0; j < size; j++) {\n      ms[i][0][j] = massValues[index];\n      ms[i][1][j] = intensityValues[index++];\n    }\n  }\n\n  return {\n    times: time,\n    series: [\n      {\n        name: 'tic',\n        dimension: 1,\n        data: tic,\n      },\n      {\n        name: 'ms',\n        dimension: 2,\n        data: ms,\n      },\n    ],\n  };\n}\n\nmodule.exports = advionGCMS;\n","'use strict';\n\nfunction aiaTemplate(reader) {\n  let time = [];\n  const tic = reader.getDataVariable('ordinate_values');\n\n  // variables to get the time\n  const delayTime = Number(reader.getDataVariable('actual_delay_time'));\n  const interval = Number(reader.getDataVariable('actual_sampling_interval'));\n\n  let currentTime = delayTime;\n  for (let i = 0; i < tic.length; i++) {\n    time.push(currentTime);\n    currentTime += interval;\n  }\n\n  return {\n    times: time,\n    series: [\n      {\n        name: 'tic',\n        dimension: 1,\n        data: tic,\n      },\n    ],\n  };\n}\n\nmodule.exports = aiaTemplate;\n","'use strict';\n\nconst NetCDFReader = require('netcdfjs');\n\nconst agilentGCMS = require('./agilentGCMS');\nconst brukerGCMS = require('./brukerGCMS');\nconst agilentHPLC = require('./agilentHPLC');\nconst finniganGCMS = require('./finniganGCMS');\nconst shimadzuGCMS = require('./shimadzuGCMS');\nconst advionGCMS = require('./advionGCMS');\nconst aiaTemplate = require('./aiaTemplate');\n\n/**\n * Reads a NetCDF file and returns a formatted JSON with the data from it\n * @param {ArrayBuffer} data - ArrayBuffer or any Typed Array (including Node.js' Buffer from v4) with the data\n * @param {object} [options={}]\n * @param {boolean} [options.meta] - add meta information\n * @param {boolean} [options.variables] -add variables information\n * @return {{times, series}} - JSON with the time, TIC and mass spectra values\n */\nfunction netcdfGcms(data, options = {}) {\n  let reader = new NetCDFReader(data);\n  const globalAttributes = reader.globalAttributes;\n\n  let instrument_mfr =\n    reader.dataVariableExists('instrument_mfr') &&\n    reader.getDataVariableAsString('instrument_mfr');\n  let dataset_origin = reader.attributeExists('dataset_origin');\n  let mass_values = reader.dataVariableExists('mass_values');\n  let detector_name = reader.getAttribute('detector_name');\n  let aia_template_revision = reader.attributeExists('aia_template_revision');\n  let source_file_format = reader.getAttribute('source_file_format');\n\n  let ans;\n\n  if (mass_values && dataset_origin) {\n    ans = agilentGCMS(reader);\n  } else if (\n    mass_values &&\n    instrument_mfr &&\n    instrument_mfr.match(/finnigan/i)\n  ) {\n    ans = finniganGCMS(reader);\n  } else if (mass_values && instrument_mfr && instrument_mfr.match(/bruker/i)) {\n    ans = brukerGCMS(reader);\n  } else if (mass_values && instrument_mfr && instrument_mfr.match(/bruker/i)) {\n    ans = brukerGCMS(reader);\n  } else if (\n    mass_values &&\n    source_file_format &&\n    source_file_format.match(/shimadzu/i)\n  ) {\n    ans = shimadzuGCMS(reader);\n  } else if (\n    mass_values &&\n    source_file_format &&\n    source_file_format.match(/advion/i)\n  ) {\n    ans = advionGCMS(reader);\n  } else if (detector_name && detector_name.match(/(dad|tic)/i)) {\n    // diode array agilent HPLC\n    ans = agilentHPLC(reader);\n  } else if (aia_template_revision) {\n    ans = aiaTemplate(reader);\n  } else {\n    throw new TypeError('Unknown file format');\n  }\n\n  if (options.meta) {\n    ans.meta = addMeta(globalAttributes);\n  }\n\n  if (options.variables) {\n    ans.variables = addVariables(reader);\n  }\n\n  return ans;\n}\n\n/**\n * Reads a NetCDF file with Agilent GCMS format and returns a formatted JSON with the data from it\n * @param {ArrayBuffer} data - ArrayBuffer or any Typed Array (including Node.js' Buffer from v4) with the data\n * @return {{times, series}} - JSON with the time, TIC and mass spectra values\n */\nfunction fromAgilentGCMS(data) {\n  return agilentGCMS(new NetCDFReader(data));\n}\n\n/**\n * Reads a NetCDF file with Agilent HPLC format and returns a formatted JSON with the data from it\n * @param {ArrayBuffer} data - ArrayBuffer or any Typed Array (including Node.js' Buffer from v4) with the data\n * @return {{times, series}} - JSON with the time, TIC and mass spectra values\n */\nfunction fromAgilentHPLC(data) {\n  return agilentHPLC(new NetCDFReader(data));\n}\n\n/**\n * Reads a NetCDF file with Finnigan format and returns a formatted JSON with the data from it\n * @param {ArrayBuffer} data - ArrayBuffer or any Typed Array (including Node.js' Buffer from v4) with the data\n * @return {{times, series}} - JSON with the time, TIC and mass spectra values\n */\nfunction fromFinniganGCMS(data) {\n  return finniganGCMS(new NetCDFReader(data));\n}\n\nfunction fromAiaTemplate(data) {\n  return aiaTemplate(new NetCDFReader(data));\n}\n\nfunction addMeta(globalAttributes) {\n  let ans = {};\n  for (const item of globalAttributes) {\n    ans[item.name] = item.value;\n  }\n  return ans;\n}\n\nfunction addVariables(reader) {\n  for (let variable of reader.variables) {\n    variable.value = reader.getDataVariable(variable);\n  }\n  return reader.variables;\n}\n\nmodule.exports = netcdfGcms;\nmodule.exports.fromAgilentGCMS = fromAgilentGCMS;\nmodule.exports.fromAgilentHPLC = fromAgilentHPLC;\nmodule.exports.fromFinniganGCMS = fromFinniganGCMS;\nmodule.exports.fromAiaTemplate = fromAiaTemplate;\n","(function (w) {\n  \"use strict\";\n\n  function findBest(atobNative) {\n    // normal window\n    if ('function' === typeof atobNative) { return atobNative; }\n\n\n    // browserify (web worker)\n    if ('function' === typeof Buffer) {\n      return function atobBrowserify(a) {\n        //!! Deliberately using an API that's deprecated in node.js because\n        //!! this file is for browsers and we expect them to cope with it.\n        //!! Discussion: github.com/node-browser-compat/atob/pull/9\n        return new Buffer(a, 'base64').toString('binary');\n      };\n    }\n\n    // ios web worker with base64js\n    if ('object' === typeof w.base64js) {\n      // bufferToBinaryString\n      // https://git.coolaj86.com/coolaj86/unibabel.js/blob/master/index.js#L50\n      return function atobWebWorker_iOS(a) {\n        var buf = w.base64js.b64ToByteArray(a);\n        return Array.prototype.map.call(buf, function (ch) {\n          return String.fromCharCode(ch);\n        }).join('');\n      };\n    }\n\n\t\treturn function () {\n\t\t\t// ios web worker without base64js\n\t\t\tthrow new Error(\"You're probably in an old browser or an iOS webworker.\" +\n\t\t\t\t\" It might help to include beatgammit's base64-js.\");\n    };\n  }\n\n  var atobBest = findBest(w.atob);\n  w.atob = atobBest;\n\n  if ((typeof module === 'object') && module && module.exports) {\n    module.exports = atobBest;\n  }\n}(window));\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","/*\n    https://tools.ietf.org/html/rfc3629\n\n    UTF8-char = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4\n\n    UTF8-1    = %x00-7F\n\n    UTF8-2    = %xC2-DF UTF8-tail\n\n    UTF8-3    = %xE0 %xA0-BF UTF8-tail\n                %xE1-EC 2( UTF8-tail )\n                %xED %x80-9F UTF8-tail\n                %xEE-EF 2( UTF8-tail )\n\n    UTF8-4    = %xF0 %x90-BF 2( UTF8-tail )\n                %xF1-F3 3( UTF8-tail )\n                %xF4 %x80-8F 2( UTF8-tail )\n\n    UTF8-tail = %x80-BF\n*/\n/**\n * Check if a Node.js Buffer or Uint8Array is UTF-8.\n */\nfunction isUtf8(buf) {\n    if (!buf) {\n        return false;\n    }\n    var i = 0;\n    var len = buf.length;\n    while (i < len) {\n        // UTF8-1 = %x00-7F\n        if (buf[i] <= 0x7F) {\n            i++;\n            continue;\n        }\n        // UTF8-2 = %xC2-DF UTF8-tail\n        if (buf[i] >= 0xC2 && buf[i] <= 0xDF) {\n            // if(buf[i + 1] >= 0x80 && buf[i + 1] <= 0xBF) {\n            if (buf[i + 1] >> 6 === 2) {\n                i += 2;\n                continue;\n            }\n            else {\n                return false;\n            }\n        }\n        // UTF8-3 = %xE0 %xA0-BF UTF8-tail\n        // UTF8-3 = %xED %x80-9F UTF8-tail\n        if (((buf[i] === 0xE0 && buf[i + 1] >= 0xA0 && buf[i + 1] <= 0xBF) ||\n            (buf[i] === 0xED && buf[i + 1] >= 0x80 && buf[i + 1] <= 0x9F)) && buf[i + 2] >> 6 === 2) {\n            i += 3;\n            continue;\n        }\n        // UTF8-3 = %xE1-EC 2( UTF8-tail )\n        // UTF8-3 = %xEE-EF 2( UTF8-tail )\n        if (((buf[i] >= 0xE1 && buf[i] <= 0xEC) ||\n            (buf[i] >= 0xEE && buf[i] <= 0xEF)) &&\n            buf[i + 1] >> 6 === 2 &&\n            buf[i + 2] >> 6 === 2) {\n            i += 3;\n            continue;\n        }\n        // UTF8-4 = %xF0 %x90-BF 2( UTF8-tail )\n        //          %xF1-F3 3( UTF8-tail )\n        //          %xF4 %x80-8F 2( UTF8-tail )\n        if (((buf[i] === 0xF0 && buf[i + 1] >= 0x90 && buf[i + 1] <= 0xBF) ||\n            (buf[i] >= 0xF1 && buf[i] <= 0xF3 && buf[i + 1] >> 6 === 2) ||\n            (buf[i] === 0xF4 && buf[i + 1] >= 0x80 && buf[i + 1] <= 0x8F)) &&\n            buf[i + 2] >> 6 === 2 &&\n            buf[i + 3] >> 6 === 2) {\n            i += 4;\n            continue;\n        }\n        return false;\n    }\n    return true;\n}\n\nexport { isUtf8 as default };\n","import isutf8 from 'isutf8';\n/**\n * Ensure that the data is string. If it is an ArrayBuffer it will be converted to string using TextDecoder.\n * @param blob\n * @param options\n * @returns\n */\nexport function ensureString(blob, options = {}) {\n    if (typeof blob === 'string') {\n        return blob;\n    }\n    if (ArrayBuffer.isView(blob) || blob instanceof ArrayBuffer) {\n        const { encoding = guessEncoding(blob) } = options;\n        const decoder = new TextDecoder(encoding);\n        return decoder.decode(blob);\n    }\n    throw new TypeError(`blob must be a string, ArrayBuffer or ArrayBufferView`);\n}\nfunction guessEncoding(blob) {\n    const uint8 = ArrayBuffer.isView(blob)\n        ? new Uint8Array(blob.buffer, blob.byteOffset, blob.byteLength)\n        : new Uint8Array(blob);\n    if (uint8.length >= 2) {\n        if (uint8[0] === 0xfe && uint8[1] === 0xff) {\n            return 'utf-16be';\n        }\n        if (uint8[0] === 0xff && uint8[1] === 0xfe) {\n            return 'utf-16le';\n        }\n    }\n    //@ts-expect-error an ArrayBuffer is also ok\n    if (!isutf8(blob))\n        return 'latin1';\n    return 'utf-8';\n}\n//# sourceMappingURL=index.js.map","/**\n * Dynamically type a string\n * @param {string} value String to dynamically type\n * @returns {boolean|string|number}\n */\nexport function parseString(value) {\n  if (value.length === 4 || value.length === 5) {\n    let lowercase = value.toLowerCase();\n\n    if (lowercase === 'true') return true;\n    if (lowercase === 'false') return false;\n  }\n  let number = Number(value);\n  if (number === 0 && !value.includes('0')) {\n    return value;\n  }\n  if (!Number.isNaN(number)) return number;\n  return value;\n}\n","const GC_MS_FIELDS = ['TIC', '.RIC', 'SCANNUMBER'];\nexport function complexChromatogram(result) {\n    let spectra = result.spectra;\n    let length = spectra.length;\n    let chromatogram = {\n        times: new Array(length),\n        series: {\n            ms: {\n                dimension: 2,\n                data: new Array(length),\n            },\n        },\n    };\n    let existingGCMSFields = [];\n    for (let i = 0; i < GC_MS_FIELDS.length; i++) {\n        let label = convertMSFieldToLabel(GC_MS_FIELDS[i]);\n        if (spectra[0][label]) {\n            existingGCMSFields.push(label);\n            chromatogram.series[label] = {\n                dimension: 1,\n                data: new Array(length),\n            };\n        }\n    }\n    for (let i = 0; i < length; i++) {\n        let spectrum = spectra[i];\n        chromatogram.times[i] = spectrum.pageValue;\n        for (let j = 0; j < existingGCMSFields.length; j++) {\n            chromatogram.series[existingGCMSFields[j]].data[i] = Number(spectrum[existingGCMSFields[j]]);\n        }\n        if (spectrum.data) {\n            chromatogram.series.ms.data[i] = [spectrum.data.x, spectrum.data.y];\n        }\n    }\n    result.chromatogram = chromatogram;\n}\nexport function isMSField(canonicDataLabel) {\n    return GC_MS_FIELDS.indexOf(canonicDataLabel) !== -1;\n}\nexport function convertMSFieldToLabel(value) {\n    return value.toLowerCase().replace(/[^a-z0-9]/g, '');\n}\n//# sourceMappingURL=complexChromatogram.js.map","export default function convertToFloatArray(stringArray) {\n    let floatArray = [];\n    for (let i = 0; i < stringArray.length; i++) {\n        floatArray.push(Number(stringArray[i]));\n    }\n    return floatArray;\n}\n//# sourceMappingURL=convertToFloatArray.js.map","export default function fastParseXYData(spectrum, value) {\n    // TODO need to deal with result\n    //  console.log(value);\n    // we check if deltaX is defined otherwise we calculate it\n    let yFactor = spectrum.yFactor;\n    let deltaX = spectrum.deltaX;\n    spectrum.isXYdata = true;\n    let currentData = { x: [], y: [] };\n    spectrum.data = currentData;\n    let currentX = spectrum.firstX;\n    let currentY = spectrum.firstY;\n    // we skip the first line\n    //\n    let endLine = false;\n    let ascii;\n    let i = 0;\n    for (; i < value.length; i++) {\n        ascii = value.charCodeAt(i);\n        if (ascii === 13 || ascii === 10) {\n            endLine = true;\n        }\n        else {\n            if (endLine)\n                break;\n        }\n    }\n    // we proceed taking the i after the first line\n    let newLine = true;\n    let isDifference = false;\n    let isLastDifference = false;\n    let lastDifference = 0;\n    let isDuplicate = false;\n    let inComment = false;\n    let currentValue = 0; // can be a difference or a duplicate\n    let lastValue = 0; // must be the real last value\n    let isNegative = false;\n    let inValue = false;\n    let skipFirstValue = false;\n    let decimalPosition = 0;\n    for (; i <= value.length; i++) {\n        if (i === value.length)\n            ascii = 13;\n        else\n            ascii = value.charCodeAt(i);\n        if (inComment) {\n            // we should ignore the text if we are after $$\n            if (ascii === 13 || ascii === 10) {\n                newLine = true;\n                inComment = false;\n            }\n        }\n        else {\n            // when is it a new value ?\n            // when it is not a digit, . or comma\n            // it is a number that is either new or we continue\n            if (ascii <= 57 && ascii >= 48) {\n                // a number\n                inValue = true;\n                if (decimalPosition > 0) {\n                    currentValue += (ascii - 48) / Math.pow(10, decimalPosition++);\n                }\n                else {\n                    currentValue *= 10;\n                    currentValue += ascii - 48;\n                }\n            }\n            else if (ascii === 44 || ascii === 46) {\n                // a \",\" or \".\"\n                inValue = true;\n                decimalPosition++;\n            }\n            else {\n                if (inValue) {\n                    // need to process the previous value\n                    if (newLine) {\n                        newLine = false; // we don't check the X value\n                        // console.log(\"NEW LINE\",isDifference, lastDifference);\n                        // if new line and lastDifference, the first value is just a check !\n                        // that we don't check ...\n                        if (isLastDifference)\n                            skipFirstValue = true;\n                    }\n                    else {\n                        // need to deal with duplicate and differences\n                        if (skipFirstValue) {\n                            skipFirstValue = false;\n                        }\n                        else {\n                            if (isDifference) {\n                                lastDifference = isNegative ? 0 - currentValue : currentValue;\n                                isLastDifference = true;\n                                isDifference = false;\n                            }\n                            else if (!isDuplicate) {\n                                lastValue = isNegative ? 0 - currentValue : currentValue;\n                            }\n                            let duplicate = isDuplicate ? currentValue - 1 : 1;\n                            for (let j = 0; j < duplicate; j++) {\n                                if (isLastDifference) {\n                                    currentY += lastDifference;\n                                }\n                                else {\n                                    currentY = lastValue;\n                                }\n                                currentData.x.push(currentX);\n                                currentData.y.push(currentY * yFactor);\n                                currentX += deltaX;\n                            }\n                        }\n                    }\n                    isNegative = false;\n                    currentValue = 0;\n                    decimalPosition = 0;\n                    inValue = false;\n                    isDuplicate = false;\n                }\n                // positive SQZ digits @ A B C D E F G H I (ascii 64-73)\n                if (ascii < 74 && ascii > 63) {\n                    inValue = true;\n                    isLastDifference = false;\n                    currentValue = ascii - 64;\n                }\n                else if (ascii > 96 && ascii < 106) {\n                    // negative SQZ digits a b c d e f g h i (ascii 97-105)\n                    inValue = true;\n                    isLastDifference = false;\n                    currentValue = ascii - 96;\n                    isNegative = true;\n                }\n                else if (ascii === 115) {\n                    // DUP digits S T U V W X Y Z s (ascii 83-90, 115)\n                    inValue = true;\n                    isDuplicate = true;\n                    currentValue = 9;\n                }\n                else if (ascii > 82 && ascii < 91) {\n                    inValue = true;\n                    isDuplicate = true;\n                    currentValue = ascii - 82;\n                }\n                else if (ascii > 73 && ascii < 83) {\n                    // positive DIF digits % J K L M N O P Q R (ascii 37, 74-82)\n                    inValue = true;\n                    isDifference = true;\n                    currentValue = ascii - 73;\n                }\n                else if (ascii > 105 && ascii < 115) {\n                    // negative DIF digits j k l m n o p q r (ascii 106-114)\n                    inValue = true;\n                    isDifference = true;\n                    currentValue = ascii - 105;\n                    isNegative = true;\n                }\n                else if (ascii === 36 && value.charCodeAt(i + 1) === 36) {\n                    // $ sign, we need to check the next one\n                    inValue = true;\n                    inComment = true;\n                }\n                else if (ascii === 37) {\n                    // positive DIF digits % J K L M N O P Q R (ascii 37, 74-82)\n                    inValue = true;\n                    isDifference = true;\n                    currentValue = 0;\n                    isNegative = false;\n                }\n                else if (ascii === 45) {\n                    // a \"-\"\n                    // check if after there is a number, decimal or comma\n                    let ascii2 = value.charCodeAt(i + 1);\n                    if ((ascii2 >= 48 && ascii2 <= 57) ||\n                        ascii2 === 44 ||\n                        ascii2 === 46) {\n                        inValue = true;\n                        if (!newLine)\n                            isLastDifference = false;\n                        isNegative = true;\n                    }\n                }\n                else if (ascii === 13 || ascii === 10) {\n                    newLine = true;\n                    inComment = false;\n                }\n                // and now analyse the details ... space or tabulation\n                // if \"+\" we just don't care\n            }\n        }\n    }\n}\n//# sourceMappingURL=fastParseXYData.js.map","const removeCommentRegExp = /\\$\\$.*/;\nconst peakTableSplitRegExp = /[,\\t ]+/;\nexport default function parsePeakTable(spectrum, value, result) {\n    spectrum.isPeaktable = true;\n    if (!spectrum.variables || Object.keys(spectrum.variables) === 2) {\n        parseXY(spectrum, value, result);\n    }\n    else {\n        parseXYZ(spectrum, value, result);\n    }\n    // we will add the data in the variables\n    if (spectrum.variables) {\n        for (let key in spectrum.variables) {\n            spectrum.variables[key].data = spectrum.data[key];\n        }\n    }\n}\nfunction parseXY(spectrum, value, result) {\n    let currentData = { x: [], y: [] };\n    spectrum.data = currentData;\n    // counts for around 20% of the time\n    let lines = value.split(/,? *,?[;\\r\\n]+ */);\n    for (let i = 1; i < lines.length; i++) {\n        let values = lines[i]\n            .trim()\n            .replace(removeCommentRegExp, '')\n            .split(peakTableSplitRegExp);\n        if (values.length % 2 === 0) {\n            for (let j = 0; j < values.length; j = j + 2) {\n                // takes around 40% of the time to add and parse the 2 values nearly exclusively because of Number\n                currentData.x.push(Number(values[j]) * spectrum.xFactor);\n                currentData.y.push(Number(values[j + 1]) * spectrum.yFactor);\n            }\n        }\n        else {\n            result.logs.push(`Format error: ${values}`);\n        }\n    }\n}\nfunction parseXYZ(spectrum, value, result) {\n    let currentData = {};\n    let variables = Object.keys(spectrum.variables);\n    let numberOfVariables = variables.length;\n    variables.forEach((variable) => (currentData[variable] = []));\n    spectrum.data = currentData;\n    // counts for around 20% of the time\n    let lines = value.split(/,? *,?[;\\r\\n]+ */);\n    for (let i = 1; i < lines.length; i++) {\n        let values = lines[i]\n            .trim()\n            .replace(removeCommentRegExp, '')\n            .split(peakTableSplitRegExp);\n        if (values.length % numberOfVariables === 0) {\n            for (let j = 0; j < values.length; j++) {\n                // todo should try to find a xFactor (y, ...)\n                currentData[variables[j % numberOfVariables]].push(Number(values[j]));\n            }\n        }\n        else {\n            result.logs.push(`Format error: ${values}`);\n        }\n    }\n}\n//# sourceMappingURL=parsePeakTable.js.map","export default function parseXYA(spectrum, value) {\n    let removeSymbolRegExp = /(\\(+|\\)+|<+|>+|\\s+)/g;\n    spectrum.isXYAdata = true;\n    let values;\n    let currentData = { x: [], y: [] };\n    spectrum.data = currentData;\n    let lines = value.split(/,? *,?[;\\r\\n]+ */);\n    for (let i = 1; i < lines.length; i++) {\n        values = lines[i].trim().replace(removeSymbolRegExp, '').split(',');\n        currentData.x.push(Number(values[0]));\n        currentData.y.push(Number(values[1]));\n    }\n}\n//# sourceMappingURL=parseXYA.js.map","const toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array).\n *\n * @param {any} value - Object to check.\n * @returns {boolean} True if the object is an array.\n */\nexport function isAnyArray(value) {\n    return toString.call(value).endsWith('Array]');\n}\n//# sourceMappingURL=index.js.map","(function(){function a(d){for(var e=0,f=d.length-1,g=void 0,h=void 0,i=void 0,j=c(e,f);!0;){if(f<=e)return d[j];if(f==e+1)return d[e]>d[f]&&b(d,e,f),d[j];for(g=c(e,f),d[g]>d[f]&&b(d,g,f),d[e]>d[f]&&b(d,e,f),d[g]>d[e]&&b(d,g,e),b(d,g,e+1),h=e+1,i=f;!0;){do h++;while(d[e]>d[h]);do i--;while(d[i]>d[e]);if(i<h)break;b(d,h,i)}b(d,e,i),i<=j&&(e=h),i>=j&&(f=i-1)}}var b=function b(d,e,f){var _ref;return _ref=[d[f],d[e]],d[e]=_ref[0],d[f]=_ref[1],_ref},c=function c(d,e){return~~((d+e)/2)};'undefined'!=typeof module&&module.exports?module.exports=a:window.median=a})();\n","import { isAnyArray } from 'is-any-array';\nimport quickSelectMedian from 'median-quickselect';\n\nfunction median(input) {\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  return quickSelectMedian(input.slice());\n}\n\nexport { median as default };\n","import getMedian from 'ml-array-median';\nexport default function convertTo3DZ(spectra) {\n    let minZ = spectra[0].data.y[0];\n    let maxZ = minZ;\n    let ySize = spectra.length;\n    let xSize = spectra[0].data.x.length;\n    let z = new Array(ySize);\n    for (let i = 0; i < ySize; i++) {\n        z[i] = spectra[i].data.y;\n        for (let j = 0; j < xSize; j++) {\n            let value = z[i][j];\n            if (value < minZ)\n                minZ = value;\n            if (value > maxZ)\n                maxZ = value;\n        }\n    }\n    const firstX = spectra[0].data.x[0];\n    const lastX = spectra[0].data.x[spectra[0].data.x.length - 1]; // has to be -2 because it is a 1D array [x,y,x,y,...]\n    const firstY = spectra[0].pageValue;\n    const lastY = spectra[ySize - 1].pageValue;\n    // Because the min / max value are the only information about the matrix if we invert\n    // min and max we need to invert the array\n    if (firstX > lastX) {\n        for (let spectrum of z) {\n            spectrum.reverse();\n        }\n    }\n    if (firstY > lastY) {\n        z.reverse();\n    }\n    const medians = [];\n    for (let i = 0; i < z.length; i++) {\n        const row = Float64Array.from(z[i]);\n        for (let i = 0; i < row.length; i++) {\n            if (row[i] < 0)\n                row[i] = -row[i];\n        }\n        medians.push(getMedian(row));\n    }\n    const median = getMedian(medians);\n    return {\n        z: z,\n        minX: Math.min(firstX, lastX),\n        maxX: Math.max(firstX, lastX),\n        minY: Math.min(firstY, lastY),\n        maxY: Math.max(firstY, lastY),\n        minZ: minZ,\n        maxZ: maxZ,\n        noise: median,\n    };\n}\n//# sourceMappingURL=convertTo3DZ.js.map","export default function generateContourLines(zData, options) {\n    let noise = zData.noise;\n    let z = zData.z;\n    let povarHeight0, povarHeight1, povarHeight2, povarHeight3;\n    let isOver0, isOver1, isOver2, isOver3;\n    let nbSubSpectra = z.length;\n    let nbPovars = z[0].length;\n    let pAx, pAy, pBx, pBy;\n    let x0 = zData.minX;\n    let xN = zData.maxX;\n    let dx = (xN - x0) / (nbPovars - 1);\n    let y0 = zData.minY;\n    let yN = zData.maxY;\n    let dy = (yN - y0) / (nbSubSpectra - 1);\n    let minZ = zData.minZ;\n    let maxZ = zData.maxZ;\n    // System.out.prvarln('y0 '+y0+' yN '+yN);\n    // -------------------------\n    // Povars attribution\n    //\n    // 0----1\n    // |  / |\n    // | /  |\n    // 2----3\n    //\n    // ---------------------d------\n    let iter = options.nbContourLevels * 2;\n    let contourLevels = new Array(iter);\n    let lineZValue;\n    for (let level = 0; level < iter; level++) {\n        // multiply by 2 for positif and negatif\n        let contourLevel = {};\n        contourLevels[level] = contourLevel;\n        let side = level % 2;\n        let factor = (maxZ - options.noiseMultiplier * noise) *\n            Math.exp((level >> 1) - options.nbContourLevels);\n        if (side === 0) {\n            lineZValue = factor + options.noiseMultiplier * noise;\n        }\n        else {\n            lineZValue = 0 - factor - options.noiseMultiplier * noise;\n        }\n        let lines = [];\n        contourLevel.zValue = lineZValue;\n        contourLevel.lines = lines;\n        if (lineZValue <= minZ || lineZValue >= maxZ)\n            continue;\n        for (let iSubSpectra = 0; iSubSpectra < nbSubSpectra - 1; iSubSpectra++) {\n            let subSpectra = z[iSubSpectra];\n            let subSpectraAfter = z[iSubSpectra + 1];\n            for (let povar = 0; povar < nbPovars - 1; povar++) {\n                povarHeight0 = subSpectra[povar];\n                povarHeight1 = subSpectra[povar + 1];\n                povarHeight2 = subSpectraAfter[povar];\n                povarHeight3 = subSpectraAfter[povar + 1];\n                isOver0 = povarHeight0 > lineZValue;\n                isOver1 = povarHeight1 > lineZValue;\n                isOver2 = povarHeight2 > lineZValue;\n                isOver3 = povarHeight3 > lineZValue;\n                // Example povar0 is over the plane and povar1 and\n                // povar2 are below, we find the varersections and add\n                // the segment\n                if (isOver0 !== isOver1 && isOver0 !== isOver2) {\n                    pAx =\n                        povar + (lineZValue - povarHeight0) / (povarHeight1 - povarHeight0);\n                    pAy = iSubSpectra;\n                    pBx = povar;\n                    pBy =\n                        iSubSpectra +\n                            (lineZValue - povarHeight0) / (povarHeight2 - povarHeight0);\n                    lines.push(pAx * dx + x0);\n                    lines.push(pAy * dy + y0);\n                    lines.push(pBx * dx + x0);\n                    lines.push(pBy * dy + y0);\n                }\n                // remove push does not help !!!!\n                if (isOver3 !== isOver1 && isOver3 !== isOver2) {\n                    pAx = povar + 1;\n                    pAy =\n                        iSubSpectra +\n                            1 -\n                            (lineZValue - povarHeight3) / (povarHeight1 - povarHeight3);\n                    pBx =\n                        povar +\n                            1 -\n                            (lineZValue - povarHeight3) / (povarHeight2 - povarHeight3);\n                    pBy = iSubSpectra + 1;\n                    lines.push(pAx * dx + x0);\n                    lines.push(pAy * dy + y0);\n                    lines.push(pBx * dx + x0);\n                    lines.push(pBy * dy + y0);\n                }\n                // test around the diagonal\n                if (isOver1 !== isOver2) {\n                    pAx =\n                        (povar +\n                            1 -\n                            (lineZValue - povarHeight1) / (povarHeight2 - povarHeight1)) *\n                            dx +\n                            x0;\n                    pAy =\n                        (iSubSpectra +\n                            (lineZValue - povarHeight1) / (povarHeight2 - povarHeight1)) *\n                            dy +\n                            y0;\n                    if (isOver1 !== isOver0) {\n                        pBx =\n                            povar +\n                                1 -\n                                (lineZValue - povarHeight1) / (povarHeight0 - povarHeight1);\n                        pBy = iSubSpectra;\n                        lines.push(pAx);\n                        lines.push(pAy);\n                        lines.push(pBx * dx + x0);\n                        lines.push(pBy * dy + y0);\n                    }\n                    if (isOver2 !== isOver0) {\n                        pBx = povar;\n                        pBy =\n                            iSubSpectra +\n                                1 -\n                                (lineZValue - povarHeight2) / (povarHeight0 - povarHeight2);\n                        lines.push(pAx);\n                        lines.push(pAy);\n                        lines.push(pBx * dx + x0);\n                        lines.push(pBy * dy + y0);\n                    }\n                    if (isOver1 !== isOver3) {\n                        pBx = povar + 1;\n                        pBy =\n                            iSubSpectra +\n                                (lineZValue - povarHeight1) / (povarHeight3 - povarHeight1);\n                        lines.push(pAx);\n                        lines.push(pAy);\n                        lines.push(pBx * dx + x0);\n                        lines.push(pBy * dy + y0);\n                    }\n                    if (isOver2 !== isOver3) {\n                        pBx =\n                            povar +\n                                (lineZValue - povarHeight2) / (povarHeight3 - povarHeight2);\n                        pBy = iSubSpectra + 1;\n                        lines.push(pAx);\n                        lines.push(pAy);\n                        lines.push(pBx * dx + x0);\n                        lines.push(pBy * dy + y0);\n                    }\n                }\n            }\n        }\n    }\n    return {\n        minX: zData.minX,\n        maxX: zData.maxX,\n        minY: zData.minY,\n        maxY: zData.maxY,\n        segments: contourLevels,\n    };\n}\n//# sourceMappingURL=generateContourLines.js.map","import convertTo3DZ from './convertTo3DZ';\nimport generateContourLines from './generateContourLines';\nexport default function add2D(result, options) {\n    let zData = convertTo3DZ(result.spectra);\n    if (!options.noContour) {\n        result.contourLines = generateContourLines(zData, options);\n        delete zData.z;\n    }\n    result.minMax = zData;\n}\n//# sourceMappingURL=add2D.js.map","// sources:\n// https://en.wikipedia.org/wiki/Gyromagnetic_ratio\nexport const gyromagneticRatio = {\n    '1H': 267.52218744e6,\n    '2H': 41.065e6,\n    '3H': 285.3508e6,\n    '3He': -203.789e6,\n    '7Li': 103.962e6,\n    '13C': 67.28284e6,\n    '14N': 19.331e6,\n    '15N': -27.116e6,\n    '17O': -36.264e6,\n    '19F': 251.662e6,\n    '23Na': 70.761e6,\n    '27Al': 69.763e6,\n    '29Si': -53.19e6,\n    '31P': 108.291e6,\n    '57Fe': 8.681e6,\n    '63Cu': 71.118e6,\n    '67Zn': 16.767e6,\n    '129Xe': -73.997e6,\n};\n//# sourceMappingURL=gyromagneticRatio.js.map","import { isAnyArray } from 'is-any-array';\n\nfunction max(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var maxValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] > maxValue) maxValue = input[i];\n  }\n\n  return maxValue;\n}\n\nexport { max as default };\n","import { isAnyArray } from 'is-any-array';\n\nfunction min(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var minValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] < minValue) minValue = input[i];\n  }\n\n  return minValue;\n}\n\nexport { min as default };\n","import { isAnyArray } from 'is-any-array';\nimport max from 'ml-array-max';\nimport min from 'ml-array-min';\n\nfunction rescale(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  } else if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var output;\n\n  if (options.output !== undefined) {\n    if (!isAnyArray(options.output)) {\n      throw new TypeError('output option must be an array if specified');\n    }\n\n    output = options.output;\n  } else {\n    output = new Array(input.length);\n  }\n\n  var currentMin = min(input);\n  var currentMax = max(input);\n\n  if (currentMin === currentMax) {\n    throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n  }\n\n  var _options$min = options.min,\n      minValue = _options$min === void 0 ? options.autoMinMax ? currentMin : 0 : _options$min,\n      _options$max = options.max,\n      maxValue = _options$max === void 0 ? options.autoMinMax ? currentMax : 1 : _options$max;\n\n  if (minValue >= maxValue) {\n    throw new RangeError('min option must be smaller than max option');\n  }\n\n  var factor = (maxValue - minValue) / (currentMax - currentMin);\n\n  for (var i = 0; i < input.length; i++) {\n    output[i] = (input[i] - currentMin) * factor + minValue;\n  }\n\n  return output;\n}\n\nexport { rescale as default };\n","const indent = ' '.repeat(2);\nconst indentData = ' '.repeat(4);\n\nexport function inspectMatrix() {\n  return inspectMatrixWithOptions(this);\n}\n\nexport function inspectMatrixWithOptions(matrix, options = {}) {\n  const { maxRows = 15, maxColumns = 10, maxNumSize = 8 } = options;\n  return `${matrix.constructor.name} {\n${indent}[\n${indentData}${inspectData(matrix, maxRows, maxColumns, maxNumSize)}\n${indent}]\n${indent}rows: ${matrix.rows}\n${indent}columns: ${matrix.columns}\n}`;\n}\n\nfunction inspectData(matrix, maxRows, maxColumns, maxNumSize) {\n  const { rows, columns } = matrix;\n  const maxI = Math.min(rows, maxRows);\n  const maxJ = Math.min(columns, maxColumns);\n  const result = [];\n  for (let i = 0; i < maxI; i++) {\n    let line = [];\n    for (let j = 0; j < maxJ; j++) {\n      line.push(formatNumber(matrix.get(i, j), maxNumSize));\n    }\n    result.push(`${line.join(' ')}`);\n  }\n  if (maxJ !== columns) {\n    result[result.length - 1] += ` ... ${columns - maxColumns} more columns`;\n  }\n  if (maxI !== rows) {\n    result.push(`... ${rows - maxRows} more rows`);\n  }\n  return result.join(`\\n${indentData}`);\n}\n\nfunction formatNumber(num, maxNumSize) {\n  const numStr = String(num);\n  if (numStr.length <= maxNumSize) {\n    return numStr.padEnd(maxNumSize, ' ');\n  }\n  const precise = num.toPrecision(maxNumSize - 2);\n  if (precise.length <= maxNumSize) {\n    return precise;\n  }\n  const exponential = num.toExponential(maxNumSize - 2);\n  const eIndex = exponential.indexOf('e');\n  const e = exponential.slice(eIndex);\n  return exponential.slice(0, maxNumSize - e.length) + e;\n}\n","export function installMathOperations(AbstractMatrix, Matrix) {\n  AbstractMatrix.prototype.add = function add(value) {\n    if (typeof value === 'number') return this.addS(value);\n    return this.addM(value);\n  };\n\n  AbstractMatrix.prototype.addS = function addS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.addM = function addM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.add = function add(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.add(value);\n  };\n\n  AbstractMatrix.prototype.sub = function sub(value) {\n    if (typeof value === 'number') return this.subS(value);\n    return this.subM(value);\n  };\n\n  AbstractMatrix.prototype.subS = function subS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.subM = function subM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sub = function sub(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sub(value);\n  };\n  AbstractMatrix.prototype.subtract = AbstractMatrix.prototype.sub;\n  AbstractMatrix.prototype.subtractS = AbstractMatrix.prototype.subS;\n  AbstractMatrix.prototype.subtractM = AbstractMatrix.prototype.subM;\n  AbstractMatrix.subtract = AbstractMatrix.sub;\n\n  AbstractMatrix.prototype.mul = function mul(value) {\n    if (typeof value === 'number') return this.mulS(value);\n    return this.mulM(value);\n  };\n\n  AbstractMatrix.prototype.mulS = function mulS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.mulM = function mulM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mul = function mul(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mul(value);\n  };\n  AbstractMatrix.prototype.multiply = AbstractMatrix.prototype.mul;\n  AbstractMatrix.prototype.multiplyS = AbstractMatrix.prototype.mulS;\n  AbstractMatrix.prototype.multiplyM = AbstractMatrix.prototype.mulM;\n  AbstractMatrix.multiply = AbstractMatrix.mul;\n\n  AbstractMatrix.prototype.div = function div(value) {\n    if (typeof value === 'number') return this.divS(value);\n    return this.divM(value);\n  };\n\n  AbstractMatrix.prototype.divS = function divS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.divM = function divM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.div = function div(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.div(value);\n  };\n  AbstractMatrix.prototype.divide = AbstractMatrix.prototype.div;\n  AbstractMatrix.prototype.divideS = AbstractMatrix.prototype.divS;\n  AbstractMatrix.prototype.divideM = AbstractMatrix.prototype.divM;\n  AbstractMatrix.divide = AbstractMatrix.div;\n\n  AbstractMatrix.prototype.mod = function mod(value) {\n    if (typeof value === 'number') return this.modS(value);\n    return this.modM(value);\n  };\n\n  AbstractMatrix.prototype.modS = function modS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.modM = function modM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mod = function mod(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mod(value);\n  };\n  AbstractMatrix.prototype.modulus = AbstractMatrix.prototype.mod;\n  AbstractMatrix.prototype.modulusS = AbstractMatrix.prototype.modS;\n  AbstractMatrix.prototype.modulusM = AbstractMatrix.prototype.modM;\n  AbstractMatrix.modulus = AbstractMatrix.mod;\n\n  AbstractMatrix.prototype.and = function and(value) {\n    if (typeof value === 'number') return this.andS(value);\n    return this.andM(value);\n  };\n\n  AbstractMatrix.prototype.andS = function andS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.andM = function andM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.and = function and(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.and(value);\n  };\n\n  AbstractMatrix.prototype.or = function or(value) {\n    if (typeof value === 'number') return this.orS(value);\n    return this.orM(value);\n  };\n\n  AbstractMatrix.prototype.orS = function orS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.orM = function orM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.or = function or(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.or(value);\n  };\n\n  AbstractMatrix.prototype.xor = function xor(value) {\n    if (typeof value === 'number') return this.xorS(value);\n    return this.xorM(value);\n  };\n\n  AbstractMatrix.prototype.xorS = function xorS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.xorM = function xorM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.xor = function xor(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.xor(value);\n  };\n\n  AbstractMatrix.prototype.leftShift = function leftShift(value) {\n    if (typeof value === 'number') return this.leftShiftS(value);\n    return this.leftShiftM(value);\n  };\n\n  AbstractMatrix.prototype.leftShiftS = function leftShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.leftShiftM = function leftShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.leftShift = function leftShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.leftShift(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShift = function signPropagatingRightShift(value) {\n    if (typeof value === 'number') return this.signPropagatingRightShiftS(value);\n    return this.signPropagatingRightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftS = function signPropagatingRightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftM = function signPropagatingRightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.signPropagatingRightShift = function signPropagatingRightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.signPropagatingRightShift(value);\n  };\n\n  AbstractMatrix.prototype.rightShift = function rightShift(value) {\n    if (typeof value === 'number') return this.rightShiftS(value);\n    return this.rightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.rightShiftS = function rightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.rightShiftM = function rightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.rightShift = function rightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.rightShift(value);\n  };\n  AbstractMatrix.prototype.zeroFillRightShift = AbstractMatrix.prototype.rightShift;\n  AbstractMatrix.prototype.zeroFillRightShiftS = AbstractMatrix.prototype.rightShiftS;\n  AbstractMatrix.prototype.zeroFillRightShiftM = AbstractMatrix.prototype.rightShiftM;\n  AbstractMatrix.zeroFillRightShift = AbstractMatrix.rightShift;\n\n  AbstractMatrix.prototype.not = function not() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, ~(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.not = function not(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.not();\n  };\n\n  AbstractMatrix.prototype.abs = function abs() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.abs(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.abs = function abs(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.abs();\n  };\n\n  AbstractMatrix.prototype.acos = function acos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acos = function acos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acos();\n  };\n\n  AbstractMatrix.prototype.acosh = function acosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acosh = function acosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acosh();\n  };\n\n  AbstractMatrix.prototype.asin = function asin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asin = function asin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asin();\n  };\n\n  AbstractMatrix.prototype.asinh = function asinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asinh = function asinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asinh();\n  };\n\n  AbstractMatrix.prototype.atan = function atan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atan = function atan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atan();\n  };\n\n  AbstractMatrix.prototype.atanh = function atanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atanh = function atanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atanh();\n  };\n\n  AbstractMatrix.prototype.cbrt = function cbrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cbrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cbrt = function cbrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cbrt();\n  };\n\n  AbstractMatrix.prototype.ceil = function ceil() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.ceil(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.ceil = function ceil(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.ceil();\n  };\n\n  AbstractMatrix.prototype.clz32 = function clz32() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.clz32(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.clz32 = function clz32(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.clz32();\n  };\n\n  AbstractMatrix.prototype.cos = function cos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cos = function cos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cos();\n  };\n\n  AbstractMatrix.prototype.cosh = function cosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cosh = function cosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cosh();\n  };\n\n  AbstractMatrix.prototype.exp = function exp() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.exp(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.exp = function exp(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.exp();\n  };\n\n  AbstractMatrix.prototype.expm1 = function expm1() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.expm1(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.expm1 = function expm1(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.expm1();\n  };\n\n  AbstractMatrix.prototype.floor = function floor() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.floor(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.floor = function floor(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.floor();\n  };\n\n  AbstractMatrix.prototype.fround = function fround() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.fround(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.fround = function fround(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.fround();\n  };\n\n  AbstractMatrix.prototype.log = function log() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log = function log(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log();\n  };\n\n  AbstractMatrix.prototype.log1p = function log1p() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log1p(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log1p = function log1p(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log1p();\n  };\n\n  AbstractMatrix.prototype.log10 = function log10() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log10(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log10 = function log10(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log10();\n  };\n\n  AbstractMatrix.prototype.log2 = function log2() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log2(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log2 = function log2(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log2();\n  };\n\n  AbstractMatrix.prototype.round = function round() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.round(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.round = function round(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.round();\n  };\n\n  AbstractMatrix.prototype.sign = function sign() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sign(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sign = function sign(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sign();\n  };\n\n  AbstractMatrix.prototype.sin = function sin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sin = function sin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sin();\n  };\n\n  AbstractMatrix.prototype.sinh = function sinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sinh = function sinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sinh();\n  };\n\n  AbstractMatrix.prototype.sqrt = function sqrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sqrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sqrt = function sqrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sqrt();\n  };\n\n  AbstractMatrix.prototype.tan = function tan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tan = function tan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tan();\n  };\n\n  AbstractMatrix.prototype.tanh = function tanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tanh = function tanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tanh();\n  };\n\n  AbstractMatrix.prototype.trunc = function trunc() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.trunc(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.trunc = function trunc(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.trunc();\n  };\n\n  AbstractMatrix.pow = function pow(matrix, arg0) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.pow(arg0);\n  };\n\n  AbstractMatrix.prototype.pow = function pow(value) {\n    if (typeof value === 'number') return this.powS(value);\n    return this.powM(value);\n  };\n\n  AbstractMatrix.prototype.powS = function powS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.pow(this.get(i, j), value));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.powM = function powM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.pow(this.get(i, j), matrix.get(i, j)));\n      }\n    }\n    return this;\n  };\n}\n","import { isAnyArray } from 'is-any-array';\n\n/**\n * @private\n * Check that a row index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nexport function checkRowIndex(matrix, index, outer) {\n  let max = outer ? matrix.rows : matrix.rows - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Row index out of range');\n  }\n}\n\n/**\n * @private\n * Check that a column index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nexport function checkColumnIndex(matrix, index, outer) {\n  let max = outer ? matrix.columns : matrix.columns - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Column index out of range');\n  }\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nexport function checkRowVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.columns) {\n    throw new RangeError(\n      'vector size must be the same as the number of columns',\n    );\n  }\n  return vector;\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nexport function checkColumnVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.rows) {\n    throw new RangeError('vector size must be the same as the number of rows');\n  }\n  return vector;\n}\n\nexport function checkRowIndices(matrix, rowIndices) {\n  if (!isAnyArray(rowIndices)) {\n    throw new TypeError('row indices must be an array');\n  }\n\n  for (let i = 0; i < rowIndices.length; i++) {\n    if (rowIndices[i] < 0 || rowIndices[i] >= matrix.rows) {\n      throw new RangeError('row indices are out of range');\n    }\n  }\n}\n\nexport function checkColumnIndices(matrix, columnIndices) {\n  if (!isAnyArray(columnIndices)) {\n    throw new TypeError('column indices must be an array');\n  }\n\n  for (let i = 0; i < columnIndices.length; i++) {\n    if (columnIndices[i] < 0 || columnIndices[i] >= matrix.columns) {\n      throw new RangeError('column indices are out of range');\n    }\n  }\n}\n\nexport function checkRange(matrix, startRow, endRow, startColumn, endColumn) {\n  if (arguments.length !== 5) {\n    throw new RangeError('expected 4 arguments');\n  }\n  checkNumber('startRow', startRow);\n  checkNumber('endRow', endRow);\n  checkNumber('startColumn', startColumn);\n  checkNumber('endColumn', endColumn);\n  if (\n    startRow > endRow ||\n    startColumn > endColumn ||\n    startRow < 0 ||\n    startRow >= matrix.rows ||\n    endRow < 0 ||\n    endRow >= matrix.rows ||\n    startColumn < 0 ||\n    startColumn >= matrix.columns ||\n    endColumn < 0 ||\n    endColumn >= matrix.columns\n  ) {\n    throw new RangeError('Submatrix indices are out of range');\n  }\n}\n\nexport function newArray(length, value = 0) {\n  let array = [];\n  for (let i = 0; i < length; i++) {\n    array.push(value);\n  }\n  return array;\n}\n\nfunction checkNumber(name, value) {\n  if (typeof value !== 'number') {\n    throw new TypeError(`${name} must be a number`);\n  }\n}\n\nexport function checkNonEmpty(matrix) {\n  if (matrix.isEmpty()) {\n    throw new Error('Empty matrix has no elements to index');\n  }\n}\n","import { newArray } from './util';\n\nexport function sumByRow(matrix) {\n  let sum = newArray(matrix.rows);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function sumByColumn(matrix) {\n  let sum = newArray(matrix.columns);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function sumAll(matrix) {\n  let v = 0;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v += matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nexport function productByRow(matrix) {\n  let sum = newArray(matrix.rows, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function productByColumn(matrix) {\n  let sum = newArray(matrix.columns, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function productAll(matrix) {\n  let v = 1;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v *= matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nexport function varianceByRow(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let i = 0; i < rows; i++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean[i];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / cols) / (cols - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / cols) / cols);\n    }\n  }\n  return variance;\n}\n\nexport function varianceByColumn(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let j = 0; j < cols; j++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let i = 0; i < rows; i++) {\n      x = matrix.get(i, j) - mean[j];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / rows) / (rows - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / rows) / rows);\n    }\n  }\n  return variance;\n}\n\nexport function varianceAll(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const size = rows * cols;\n\n  let sum1 = 0;\n  let sum2 = 0;\n  let x = 0;\n  for (let i = 0; i < rows; i++) {\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean;\n      sum1 += x;\n      sum2 += x * x;\n    }\n  }\n  if (unbiased) {\n    return (sum2 - (sum1 * sum1) / size) / (size - 1);\n  } else {\n    return (sum2 - (sum1 * sum1) / size) / size;\n  }\n}\n\nexport function centerByRow(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[i]);\n    }\n  }\n}\n\nexport function centerByColumn(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[j]);\n    }\n  }\n}\n\nexport function centerAll(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean);\n    }\n  }\n}\n\nexport function getScaleByRow(matrix) {\n  const scale = [];\n  for (let i = 0; i < matrix.rows; i++) {\n    let sum = 0;\n    for (let j = 0; j < matrix.columns; j++) {\n      sum += Math.pow(matrix.get(i, j), 2) / (matrix.columns - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function scaleByRow(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[i]);\n    }\n  }\n}\n\nexport function getScaleByColumn(matrix) {\n  const scale = [];\n  for (let j = 0; j < matrix.columns; j++) {\n    let sum = 0;\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += Math.pow(matrix.get(i, j), 2) / (matrix.rows - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function scaleByColumn(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[j]);\n    }\n  }\n}\n\nexport function getScaleAll(matrix) {\n  const divider = matrix.size - 1;\n  let sum = 0;\n  for (let j = 0; j < matrix.columns; j++) {\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += Math.pow(matrix.get(i, j), 2) / divider;\n    }\n  }\n  return Math.sqrt(sum);\n}\n\nexport function scaleAll(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale);\n    }\n  }\n}\n","import { isAnyArray } from 'is-any-array';\nimport rescale from 'ml-array-rescale';\n\nimport { inspectMatrix, inspectMatrixWithOptions } from './inspect';\nimport { installMathOperations } from './mathOperations';\nimport {\n  sumByRow,\n  sumByColumn,\n  sumAll,\n  productByRow,\n  productByColumn,\n  productAll,\n  varianceByRow,\n  varianceByColumn,\n  varianceAll,\n  centerByRow,\n  centerByColumn,\n  centerAll,\n  scaleByRow,\n  scaleByColumn,\n  scaleAll,\n  getScaleByRow,\n  getScaleByColumn,\n  getScaleAll,\n} from './stat';\nimport {\n  checkRowVector,\n  checkRowIndex,\n  checkColumnIndex,\n  checkColumnVector,\n  checkRange,\n  checkNonEmpty,\n  checkRowIndices,\n  checkColumnIndices,\n} from './util';\n\nexport class AbstractMatrix {\n  static from1DArray(newRows, newColumns, newData) {\n    let length = newRows * newColumns;\n    if (length !== newData.length) {\n      throw new RangeError('data length does not match given dimensions');\n    }\n    let newMatrix = new Matrix(newRows, newColumns);\n    for (let row = 0; row < newRows; row++) {\n      for (let column = 0; column < newColumns; column++) {\n        newMatrix.set(row, column, newData[row * newColumns + column]);\n      }\n    }\n    return newMatrix;\n  }\n\n  static rowVector(newData) {\n    let vector = new Matrix(1, newData.length);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(0, i, newData[i]);\n    }\n    return vector;\n  }\n\n  static columnVector(newData) {\n    let vector = new Matrix(newData.length, 1);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(i, 0, newData[i]);\n    }\n    return vector;\n  }\n\n  static zeros(rows, columns) {\n    return new Matrix(rows, columns);\n  }\n\n  static ones(rows, columns) {\n    return new Matrix(rows, columns).fill(1);\n  }\n\n  static rand(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { random = Math.random } = options;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.set(i, j, random());\n      }\n    }\n    return matrix;\n  }\n\n  static randInt(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1000, random = Math.random } = options;\n    if (!Number.isInteger(min)) throw new TypeError('min must be an integer');\n    if (!Number.isInteger(max)) throw new TypeError('max must be an integer');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let interval = max - min;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        let value = min + Math.round(random() * interval);\n        matrix.set(i, j, value);\n      }\n    }\n    return matrix;\n  }\n\n  static eye(rows, columns, value) {\n    if (columns === undefined) columns = rows;\n    if (value === undefined) value = 1;\n    let min = Math.min(rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, value);\n    }\n    return matrix;\n  }\n\n  static diag(data, rows, columns) {\n    let l = data.length;\n    if (rows === undefined) rows = l;\n    if (columns === undefined) columns = rows;\n    let min = Math.min(l, rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, data[i]);\n    }\n    return matrix;\n  }\n\n  static min(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.min(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static max(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new this(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.max(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static checkMatrix(value) {\n    return AbstractMatrix.isMatrix(value) ? value : new Matrix(value);\n  }\n\n  static isMatrix(value) {\n    return value != null && value.klass === 'Matrix';\n  }\n\n  get size() {\n    return this.rows * this.columns;\n  }\n\n  apply(callback) {\n    if (typeof callback !== 'function') {\n      throw new TypeError('callback must be a function');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        callback.call(this, i, j);\n      }\n    }\n    return this;\n  }\n\n  to1DArray() {\n    let array = [];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        array.push(this.get(i, j));\n      }\n    }\n    return array;\n  }\n\n  to2DArray() {\n    let copy = [];\n    for (let i = 0; i < this.rows; i++) {\n      copy.push([]);\n      for (let j = 0; j < this.columns; j++) {\n        copy[i].push(this.get(i, j));\n      }\n    }\n    return copy;\n  }\n\n  toJSON() {\n    return this.to2DArray();\n  }\n\n  isRowVector() {\n    return this.rows === 1;\n  }\n\n  isColumnVector() {\n    return this.columns === 1;\n  }\n\n  isVector() {\n    return this.rows === 1 || this.columns === 1;\n  }\n\n  isSquare() {\n    return this.rows === this.columns;\n  }\n\n  isEmpty() {\n    return this.rows === 0 || this.columns === 0;\n  }\n\n  isSymmetric() {\n    if (this.isSquare()) {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j <= i; j++) {\n          if (this.get(i, j) !== this.get(j, i)) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n    return false;\n  }\n\n  isEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isEchelonForm = false;\n          checked = true;\n        }\n      }\n      i++;\n    }\n    return isEchelonForm;\n  }\n\n  isReducedEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isReducedEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isReducedEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isReducedEchelonForm = false;\n          checked = true;\n        }\n      }\n      for (let k = j + 1; k < this.rows; k++) {\n        if (this.get(i, k) !== 0) {\n          isReducedEchelonForm = false;\n        }\n      }\n      i++;\n    }\n    return isReducedEchelonForm;\n  }\n\n  echelonForm() {\n    let result = this.clone();\n    let h = 0;\n    let k = 0;\n    while (h < result.rows && k < result.columns) {\n      let iMax = h;\n      for (let i = h; i < result.rows; i++) {\n        if (result.get(i, k) > result.get(iMax, k)) {\n          iMax = i;\n        }\n      }\n      if (result.get(iMax, k) === 0) {\n        k++;\n      } else {\n        result.swapRows(h, iMax);\n        let tmp = result.get(h, k);\n        for (let j = k; j < result.columns; j++) {\n          result.set(h, j, result.get(h, j) / tmp);\n        }\n        for (let i = h + 1; i < result.rows; i++) {\n          let factor = result.get(i, k) / result.get(h, k);\n          result.set(i, k, 0);\n          for (let j = k + 1; j < result.columns; j++) {\n            result.set(i, j, result.get(i, j) - result.get(h, j) * factor);\n          }\n        }\n        h++;\n        k++;\n      }\n    }\n    return result;\n  }\n\n  reducedEchelonForm() {\n    let result = this.echelonForm();\n    let m = result.columns;\n    let n = result.rows;\n    let h = n - 1;\n    while (h >= 0) {\n      if (result.maxRow(h) === 0) {\n        h--;\n      } else {\n        let p = 0;\n        let pivot = false;\n        while (p < n && pivot === false) {\n          if (result.get(h, p) === 1) {\n            pivot = true;\n          } else {\n            p++;\n          }\n        }\n        for (let i = 0; i < h; i++) {\n          let factor = result.get(i, p);\n          for (let j = p; j < m; j++) {\n            let tmp = result.get(i, j) - factor * result.get(h, j);\n            result.set(i, j, tmp);\n          }\n        }\n        h--;\n      }\n    }\n    return result;\n  }\n\n  set() {\n    throw new Error('set method is unimplemented');\n  }\n\n  get() {\n    throw new Error('get method is unimplemented');\n  }\n\n  repeat(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { rows = 1, columns = 1 } = options;\n    if (!Number.isInteger(rows) || rows <= 0) {\n      throw new TypeError('rows must be a positive integer');\n    }\n    if (!Number.isInteger(columns) || columns <= 0) {\n      throw new TypeError('columns must be a positive integer');\n    }\n    let matrix = new Matrix(this.rows * rows, this.columns * columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.setSubMatrix(this, this.rows * i, this.columns * j);\n      }\n    }\n    return matrix;\n  }\n\n  fill(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, value);\n      }\n    }\n    return this;\n  }\n\n  neg() {\n    return this.mulS(-1);\n  }\n\n  getRow(index) {\n    checkRowIndex(this, index);\n    let row = [];\n    for (let i = 0; i < this.columns; i++) {\n      row.push(this.get(index, i));\n    }\n    return row;\n  }\n\n  getRowVector(index) {\n    return Matrix.rowVector(this.getRow(index));\n  }\n\n  setRow(index, array) {\n    checkRowIndex(this, index);\n    array = checkRowVector(this, array);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, array[i]);\n    }\n    return this;\n  }\n\n  swapRows(row1, row2) {\n    checkRowIndex(this, row1);\n    checkRowIndex(this, row2);\n    for (let i = 0; i < this.columns; i++) {\n      let temp = this.get(row1, i);\n      this.set(row1, i, this.get(row2, i));\n      this.set(row2, i, temp);\n    }\n    return this;\n  }\n\n  getColumn(index) {\n    checkColumnIndex(this, index);\n    let column = [];\n    for (let i = 0; i < this.rows; i++) {\n      column.push(this.get(i, index));\n    }\n    return column;\n  }\n\n  getColumnVector(index) {\n    return Matrix.columnVector(this.getColumn(index));\n  }\n\n  setColumn(index, array) {\n    checkColumnIndex(this, index);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, array[i]);\n    }\n    return this;\n  }\n\n  swapColumns(column1, column2) {\n    checkColumnIndex(this, column1);\n    checkColumnIndex(this, column2);\n    for (let i = 0; i < this.rows; i++) {\n      let temp = this.get(i, column1);\n      this.set(i, column1, this.get(i, column2));\n      this.set(i, column2, temp);\n    }\n    return this;\n  }\n\n  addRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[j]);\n      }\n    }\n    return this;\n  }\n\n  subRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[j]);\n      }\n    }\n    return this;\n  }\n\n  mulRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[j]);\n      }\n    }\n    return this;\n  }\n\n  divRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[j]);\n      }\n    }\n    return this;\n  }\n\n  addColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[i]);\n      }\n    }\n    return this;\n  }\n\n  subColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[i]);\n      }\n    }\n    return this;\n  }\n\n  divColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulRow(index, value) {\n    checkRowIndex(this, index);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, this.get(index, i) * value);\n    }\n    return this;\n  }\n\n  mulColumn(index, value) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, this.get(i, index) * value);\n    }\n    return this;\n  }\n\n  max(by) {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    switch (by) {\n      case 'row': {\n        const max = new Array(this.rows).fill(Number.NEGATIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max[row]) {\n              max[row] = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      case 'column': {\n        const max = new Array(this.columns).fill(Number.NEGATIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max[column]) {\n              max[column] = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      case undefined: {\n        let max = this.get(0, 0);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max) {\n              max = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  maxIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) > v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  min(by) {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n\n    switch (by) {\n      case 'row': {\n        const min = new Array(this.rows).fill(Number.POSITIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min[row]) {\n              min[row] = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      case 'column': {\n        const min = new Array(this.columns).fill(Number.POSITIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min[column]) {\n              min[column] = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      case undefined: {\n        let min = this.get(0, 0);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min) {\n              min = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  minIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) < v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  maxRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  maxRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  minRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  minRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  maxColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  maxColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  minColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  minColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  diag() {\n    let min = Math.min(this.rows, this.columns);\n    let diag = [];\n    for (let i = 0; i < min; i++) {\n      diag.push(this.get(i, i));\n    }\n    return diag;\n  }\n\n  norm(type = 'frobenius') {\n    let result = 0;\n    if (type === 'max') {\n      return this.max();\n    } else if (type === 'frobenius') {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j < this.columns; j++) {\n          result = result + this.get(i, j) * this.get(i, j);\n        }\n      }\n      return Math.sqrt(result);\n    } else {\n      throw new RangeError(`unknown norm type: ${type}`);\n    }\n  }\n\n  cumulativeSum() {\n    let sum = 0;\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        sum += this.get(i, j);\n        this.set(i, j, sum);\n      }\n    }\n    return this;\n  }\n\n  dot(vector2) {\n    if (AbstractMatrix.isMatrix(vector2)) vector2 = vector2.to1DArray();\n    let vector1 = this.to1DArray();\n    if (vector1.length !== vector2.length) {\n      throw new RangeError('vectors do not have the same size');\n    }\n    let dot = 0;\n    for (let i = 0; i < vector1.length; i++) {\n      dot += vector1[i] * vector2[i];\n    }\n    return dot;\n  }\n\n  mmul(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.columns;\n\n    let result = new Matrix(m, p);\n\n    let Bcolj = new Float64Array(n);\n    for (let j = 0; j < p; j++) {\n      for (let k = 0; k < n; k++) {\n        Bcolj[k] = other.get(k, j);\n      }\n\n      for (let i = 0; i < m; i++) {\n        let s = 0;\n        for (let k = 0; k < n; k++) {\n          s += this.get(i, k) * Bcolj[k];\n        }\n\n        result.set(i, j, s);\n      }\n    }\n    return result;\n  }\n\n  strassen2x2(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(2, 2);\n    const a11 = this.get(0, 0);\n    const b11 = other.get(0, 0);\n    const a12 = this.get(0, 1);\n    const b12 = other.get(0, 1);\n    const a21 = this.get(1, 0);\n    const b21 = other.get(1, 0);\n    const a22 = this.get(1, 1);\n    const b22 = other.get(1, 1);\n\n    // Compute intermediate values.\n    const m1 = (a11 + a22) * (b11 + b22);\n    const m2 = (a21 + a22) * b11;\n    const m3 = a11 * (b12 - b22);\n    const m4 = a22 * (b21 - b11);\n    const m5 = (a11 + a12) * b22;\n    const m6 = (a21 - a11) * (b11 + b12);\n    const m7 = (a12 - a22) * (b21 + b22);\n\n    // Combine intermediate values into the output.\n    const c00 = m1 + m4 - m5 + m7;\n    const c01 = m3 + m5;\n    const c10 = m2 + m4;\n    const c11 = m1 - m2 + m3 + m6;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    return result;\n  }\n\n  strassen3x3(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(3, 3);\n\n    const a00 = this.get(0, 0);\n    const a01 = this.get(0, 1);\n    const a02 = this.get(0, 2);\n    const a10 = this.get(1, 0);\n    const a11 = this.get(1, 1);\n    const a12 = this.get(1, 2);\n    const a20 = this.get(2, 0);\n    const a21 = this.get(2, 1);\n    const a22 = this.get(2, 2);\n\n    const b00 = other.get(0, 0);\n    const b01 = other.get(0, 1);\n    const b02 = other.get(0, 2);\n    const b10 = other.get(1, 0);\n    const b11 = other.get(1, 1);\n    const b12 = other.get(1, 2);\n    const b20 = other.get(2, 0);\n    const b21 = other.get(2, 1);\n    const b22 = other.get(2, 2);\n\n    const m1 = (a00 + a01 + a02 - a10 - a11 - a21 - a22) * b11;\n    const m2 = (a00 - a10) * (-b01 + b11);\n    const m3 = a11 * (-b00 + b01 + b10 - b11 - b12 - b20 + b22);\n    const m4 = (-a00 + a10 + a11) * (b00 - b01 + b11);\n    const m5 = (a10 + a11) * (-b00 + b01);\n    const m6 = a00 * b00;\n    const m7 = (-a00 + a20 + a21) * (b00 - b02 + b12);\n    const m8 = (-a00 + a20) * (b02 - b12);\n    const m9 = (a20 + a21) * (-b00 + b02);\n    const m10 = (a00 + a01 + a02 - a11 - a12 - a20 - a21) * b12;\n    const m11 = a21 * (-b00 + b02 + b10 - b11 - b12 - b20 + b21);\n    const m12 = (-a02 + a21 + a22) * (b11 + b20 - b21);\n    const m13 = (a02 - a22) * (b11 - b21);\n    const m14 = a02 * b20;\n    const m15 = (a21 + a22) * (-b20 + b21);\n    const m16 = (-a02 + a11 + a12) * (b12 + b20 - b22);\n    const m17 = (a02 - a12) * (b12 - b22);\n    const m18 = (a11 + a12) * (-b20 + b22);\n    const m19 = a01 * b10;\n    const m20 = a12 * b21;\n    const m21 = a10 * b02;\n    const m22 = a20 * b01;\n    const m23 = a22 * b22;\n\n    const c00 = m6 + m14 + m19;\n    const c01 = m1 + m4 + m5 + m6 + m12 + m14 + m15;\n    const c02 = m6 + m7 + m9 + m10 + m14 + m16 + m18;\n    const c10 = m2 + m3 + m4 + m6 + m14 + m16 + m17;\n    const c11 = m2 + m4 + m5 + m6 + m20;\n    const c12 = m14 + m16 + m17 + m18 + m21;\n    const c20 = m6 + m7 + m8 + m11 + m12 + m13 + m14;\n    const c21 = m12 + m13 + m14 + m15 + m22;\n    const c22 = m6 + m7 + m8 + m9 + m23;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(0, 2, c02);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    result.set(1, 2, c12);\n    result.set(2, 0, c20);\n    result.set(2, 1, c21);\n    result.set(2, 2, c22);\n    return result;\n  }\n\n  mmulStrassen(y) {\n    y = Matrix.checkMatrix(y);\n    let x = this.clone();\n    let r1 = x.rows;\n    let c1 = x.columns;\n    let r2 = y.rows;\n    let c2 = y.columns;\n    if (c1 !== r2) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        `Multiplying ${r1} x ${c1} and ${r2} x ${c2} matrix: dimensions do not match.`,\n      );\n    }\n\n    // Put a matrix into the top left of a matrix of zeros.\n    // `rows` and `cols` are the dimensions of the output matrix.\n    function embed(mat, rows, cols) {\n      let r = mat.rows;\n      let c = mat.columns;\n      if (r === rows && c === cols) {\n        return mat;\n      } else {\n        let resultat = AbstractMatrix.zeros(rows, cols);\n        resultat = resultat.setSubMatrix(mat, 0, 0);\n        return resultat;\n      }\n    }\n\n    // Make sure both matrices are the same size.\n    // This is exclusively for simplicity:\n    // this algorithm can be implemented with matrices of different sizes.\n\n    let r = Math.max(r1, r2);\n    let c = Math.max(c1, c2);\n    x = embed(x, r, c);\n    y = embed(y, r, c);\n\n    // Our recursive multiplication function.\n    function blockMult(a, b, rows, cols) {\n      // For small matrices, resort to naive multiplication.\n      if (rows <= 512 || cols <= 512) {\n        return a.mmul(b); // a is equivalent to this\n      }\n\n      // Apply dynamic padding.\n      if (rows % 2 === 1 && cols % 2 === 1) {\n        a = embed(a, rows + 1, cols + 1);\n        b = embed(b, rows + 1, cols + 1);\n      } else if (rows % 2 === 1) {\n        a = embed(a, rows + 1, cols);\n        b = embed(b, rows + 1, cols);\n      } else if (cols % 2 === 1) {\n        a = embed(a, rows, cols + 1);\n        b = embed(b, rows, cols + 1);\n      }\n\n      let halfRows = parseInt(a.rows / 2, 10);\n      let halfCols = parseInt(a.columns / 2, 10);\n      // Subdivide input matrices.\n      let a11 = a.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n      let b11 = b.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n\n      let a12 = a.subMatrix(0, halfRows - 1, halfCols, a.columns - 1);\n      let b12 = b.subMatrix(0, halfRows - 1, halfCols, b.columns - 1);\n\n      let a21 = a.subMatrix(halfRows, a.rows - 1, 0, halfCols - 1);\n      let b21 = b.subMatrix(halfRows, b.rows - 1, 0, halfCols - 1);\n\n      let a22 = a.subMatrix(halfRows, a.rows - 1, halfCols, a.columns - 1);\n      let b22 = b.subMatrix(halfRows, b.rows - 1, halfCols, b.columns - 1);\n\n      // Compute intermediate values.\n      let m1 = blockMult(\n        AbstractMatrix.add(a11, a22),\n        AbstractMatrix.add(b11, b22),\n        halfRows,\n        halfCols,\n      );\n      let m2 = blockMult(AbstractMatrix.add(a21, a22), b11, halfRows, halfCols);\n      let m3 = blockMult(a11, AbstractMatrix.sub(b12, b22), halfRows, halfCols);\n      let m4 = blockMult(a22, AbstractMatrix.sub(b21, b11), halfRows, halfCols);\n      let m5 = blockMult(AbstractMatrix.add(a11, a12), b22, halfRows, halfCols);\n      let m6 = blockMult(\n        AbstractMatrix.sub(a21, a11),\n        AbstractMatrix.add(b11, b12),\n        halfRows,\n        halfCols,\n      );\n      let m7 = blockMult(\n        AbstractMatrix.sub(a12, a22),\n        AbstractMatrix.add(b21, b22),\n        halfRows,\n        halfCols,\n      );\n\n      // Combine intermediate values into the output.\n      let c11 = AbstractMatrix.add(m1, m4);\n      c11.sub(m5);\n      c11.add(m7);\n      let c12 = AbstractMatrix.add(m3, m5);\n      let c21 = AbstractMatrix.add(m2, m4);\n      let c22 = AbstractMatrix.sub(m1, m2);\n      c22.add(m3);\n      c22.add(m6);\n\n      // Crop output to the desired size (undo dynamic padding).\n      let resultat = AbstractMatrix.zeros(2 * c11.rows, 2 * c11.columns);\n      resultat = resultat.setSubMatrix(c11, 0, 0);\n      resultat = resultat.setSubMatrix(c12, c11.rows, 0);\n      resultat = resultat.setSubMatrix(c21, 0, c11.columns);\n      resultat = resultat.setSubMatrix(c22, c11.rows, c11.columns);\n      return resultat.subMatrix(0, rows - 1, 0, cols - 1);\n    }\n\n    return blockMult(x, y, r, c);\n  }\n\n  scaleRows(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.rows; i++) {\n      const row = this.getRow(i);\n      if (row.length > 0) {\n        rescale(row, { min, max, output: row });\n      }\n      newMatrix.setRow(i, row);\n    }\n    return newMatrix;\n  }\n\n  scaleColumns(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.columns; i++) {\n      const column = this.getColumn(i);\n      if (column.length) {\n        rescale(column, {\n          min: min,\n          max: max,\n          output: column,\n        });\n      }\n      newMatrix.setColumn(i, column);\n    }\n    return newMatrix;\n  }\n\n  flipRows() {\n    const middle = Math.ceil(this.columns / 2);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < middle; j++) {\n        let first = this.get(i, j);\n        let last = this.get(i, this.columns - 1 - j);\n        this.set(i, j, last);\n        this.set(i, this.columns - 1 - j, first);\n      }\n    }\n    return this;\n  }\n\n  flipColumns() {\n    const middle = Math.ceil(this.rows / 2);\n    for (let j = 0; j < this.columns; j++) {\n      for (let i = 0; i < middle; i++) {\n        let first = this.get(i, j);\n        let last = this.get(this.rows - 1 - i, j);\n        this.set(i, j, last);\n        this.set(this.rows - 1 - i, j, first);\n      }\n    }\n    return this;\n  }\n\n  kroneckerProduct(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.rows;\n    let q = other.columns;\n\n    let result = new Matrix(m * p, n * q);\n    for (let i = 0; i < m; i++) {\n      for (let j = 0; j < n; j++) {\n        for (let k = 0; k < p; k++) {\n          for (let l = 0; l < q; l++) {\n            result.set(p * i + k, q * j + l, this.get(i, j) * other.get(k, l));\n          }\n        }\n      }\n    }\n    return result;\n  }\n\n  kroneckerSum(other) {\n    other = Matrix.checkMatrix(other);\n    if (!this.isSquare() || !other.isSquare()) {\n      throw new Error('Kronecker Sum needs two Square Matrices');\n    }\n    let m = this.rows;\n    let n = other.rows;\n    let AxI = this.kroneckerProduct(Matrix.eye(n, n));\n    let IxB = Matrix.eye(m, m).kroneckerProduct(other);\n    return AxI.add(IxB);\n  }\n\n  transpose() {\n    let result = new Matrix(this.columns, this.rows);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        result.set(j, i, this.get(i, j));\n      }\n    }\n    return result;\n  }\n\n  sortRows(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.rows; i++) {\n      this.setRow(i, this.getRow(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  sortColumns(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.columns; i++) {\n      this.setColumn(i, this.getColumn(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  subMatrix(startRow, endRow, startColumn, endColumn) {\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    let newMatrix = new Matrix(\n      endRow - startRow + 1,\n      endColumn - startColumn + 1,\n    );\n    for (let i = startRow; i <= endRow; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        newMatrix.set(i - startRow, j - startColumn, this.get(i, j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixRow(indices, startColumn, endColumn) {\n    if (startColumn === undefined) startColumn = 0;\n    if (endColumn === undefined) endColumn = this.columns - 1;\n    if (\n      startColumn > endColumn ||\n      startColumn < 0 ||\n      startColumn >= this.columns ||\n      endColumn < 0 ||\n      endColumn >= this.columns\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(indices.length, endColumn - startColumn + 1);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        if (indices[i] < 0 || indices[i] >= this.rows) {\n          throw new RangeError(`Row index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(i, j - startColumn, this.get(indices[i], j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixColumn(indices, startRow, endRow) {\n    if (startRow === undefined) startRow = 0;\n    if (endRow === undefined) endRow = this.rows - 1;\n    if (\n      startRow > endRow ||\n      startRow < 0 ||\n      startRow >= this.rows ||\n      endRow < 0 ||\n      endRow >= this.rows\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(endRow - startRow + 1, indices.length);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startRow; j <= endRow; j++) {\n        if (indices[i] < 0 || indices[i] >= this.columns) {\n          throw new RangeError(`Column index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(j - startRow, i, this.get(j, indices[i]));\n      }\n    }\n    return newMatrix;\n  }\n\n  setSubMatrix(matrix, startRow, startColumn) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (matrix.isEmpty()) {\n      return this;\n    }\n    let endRow = startRow + matrix.rows - 1;\n    let endColumn = startColumn + matrix.columns - 1;\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    for (let i = 0; i < matrix.rows; i++) {\n      for (let j = 0; j < matrix.columns; j++) {\n        this.set(startRow + i, startColumn + j, matrix.get(i, j));\n      }\n    }\n    return this;\n  }\n\n  selection(rowIndices, columnIndices) {\n    checkRowIndices(this, rowIndices);\n    checkColumnIndices(this, columnIndices);\n    let newMatrix = new Matrix(rowIndices.length, columnIndices.length);\n    for (let i = 0; i < rowIndices.length; i++) {\n      let rowIndex = rowIndices[i];\n      for (let j = 0; j < columnIndices.length; j++) {\n        let columnIndex = columnIndices[j];\n        newMatrix.set(i, j, this.get(rowIndex, columnIndex));\n      }\n    }\n    return newMatrix;\n  }\n\n  trace() {\n    let min = Math.min(this.rows, this.columns);\n    let trace = 0;\n    for (let i = 0; i < min; i++) {\n      trace += this.get(i, i);\n    }\n    return trace;\n  }\n\n  clone() {\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let row = 0; row < this.rows; row++) {\n      for (let column = 0; column < this.columns; column++) {\n        newMatrix.set(row, column, this.get(row, column));\n      }\n    }\n    return newMatrix;\n  }\n\n  sum(by) {\n    switch (by) {\n      case 'row':\n        return sumByRow(this);\n      case 'column':\n        return sumByColumn(this);\n      case undefined:\n        return sumAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  product(by) {\n    switch (by) {\n      case 'row':\n        return productByRow(this);\n      case 'column':\n        return productByColumn(this);\n      case undefined:\n        return productAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  mean(by) {\n    const sum = this.sum(by);\n    switch (by) {\n      case 'row': {\n        for (let i = 0; i < this.rows; i++) {\n          sum[i] /= this.columns;\n        }\n        return sum;\n      }\n      case 'column': {\n        for (let i = 0; i < this.columns; i++) {\n          sum[i] /= this.rows;\n        }\n        return sum;\n      }\n      case undefined:\n        return sum / this.size;\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  variance(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { unbiased = true, mean = this.mean(by) } = options;\n    if (typeof unbiased !== 'boolean') {\n      throw new TypeError('unbiased must be a boolean');\n    }\n    switch (by) {\n      case 'row': {\n        if (!isAnyArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByRow(this, unbiased, mean);\n      }\n      case 'column': {\n        if (!isAnyArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByColumn(this, unbiased, mean);\n      }\n      case undefined: {\n        if (typeof mean !== 'number') {\n          throw new TypeError('mean must be a number');\n        }\n        return varianceAll(this, unbiased, mean);\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  standardDeviation(by, options) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    const variance = this.variance(by, options);\n    if (by === undefined) {\n      return Math.sqrt(variance);\n    } else {\n      for (let i = 0; i < variance.length; i++) {\n        variance[i] = Math.sqrt(variance[i]);\n      }\n      return variance;\n    }\n  }\n\n  center(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { center = this.mean(by) } = options;\n    switch (by) {\n      case 'row': {\n        if (!isAnyArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByRow(this, center);\n        return this;\n      }\n      case 'column': {\n        if (!isAnyArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByColumn(this, center);\n        return this;\n      }\n      case undefined: {\n        if (typeof center !== 'number') {\n          throw new TypeError('center must be a number');\n        }\n        centerAll(this, center);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  scale(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    let scale = options.scale;\n    switch (by) {\n      case 'row': {\n        if (scale === undefined) {\n          scale = getScaleByRow(this);\n        } else if (!isAnyArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByRow(this, scale);\n        return this;\n      }\n      case 'column': {\n        if (scale === undefined) {\n          scale = getScaleByColumn(this);\n        } else if (!isAnyArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByColumn(this, scale);\n        return this;\n      }\n      case undefined: {\n        if (scale === undefined) {\n          scale = getScaleAll(this);\n        } else if (typeof scale !== 'number') {\n          throw new TypeError('scale must be a number');\n        }\n        scaleAll(this, scale);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  toString(options) {\n    return inspectMatrixWithOptions(this, options);\n  }\n}\n\nAbstractMatrix.prototype.klass = 'Matrix';\nif (typeof Symbol !== 'undefined') {\n  AbstractMatrix.prototype[Symbol.for('nodejs.util.inspect.custom')] =\n    inspectMatrix;\n}\n\nfunction compareNumbers(a, b) {\n  return a - b;\n}\n\nfunction isArrayOfNumbers(array) {\n  return array.every((element) => {\n    return typeof element === 'number';\n  });\n}\n\n// Synonyms\nAbstractMatrix.random = AbstractMatrix.rand;\nAbstractMatrix.randomInt = AbstractMatrix.randInt;\nAbstractMatrix.diagonal = AbstractMatrix.diag;\nAbstractMatrix.prototype.diagonal = AbstractMatrix.prototype.diag;\nAbstractMatrix.identity = AbstractMatrix.eye;\nAbstractMatrix.prototype.negate = AbstractMatrix.prototype.neg;\nAbstractMatrix.prototype.tensorProduct =\n  AbstractMatrix.prototype.kroneckerProduct;\n\nexport default class Matrix extends AbstractMatrix {\n  constructor(nRows, nColumns) {\n    super();\n    if (Matrix.isMatrix(nRows)) {\n      // eslint-disable-next-line no-constructor-return\n      return nRows.clone();\n    } else if (Number.isInteger(nRows) && nRows >= 0) {\n      // Create an empty matrix\n      this.data = [];\n      if (Number.isInteger(nColumns) && nColumns >= 0) {\n        for (let i = 0; i < nRows; i++) {\n          this.data.push(new Float64Array(nColumns));\n        }\n      } else {\n        throw new TypeError('nColumns must be a positive integer');\n      }\n    } else if (isAnyArray(nRows)) {\n      // Copy the values from the 2D array\n      const arrayData = nRows;\n      nRows = arrayData.length;\n      nColumns = nRows ? arrayData[0].length : 0;\n      if (typeof nColumns !== 'number') {\n        throw new TypeError(\n          'Data must be a 2D array with at least one element',\n        );\n      }\n      this.data = [];\n      for (let i = 0; i < nRows; i++) {\n        if (arrayData[i].length !== nColumns) {\n          throw new RangeError('Inconsistent array dimensions');\n        }\n        if (!isArrayOfNumbers(arrayData[i])) {\n          throw new TypeError('Input data contains non-numeric values');\n        }\n        this.data.push(Float64Array.from(arrayData[i]));\n      }\n    } else {\n      throw new TypeError(\n        'First argument must be a positive number or an array',\n      );\n    }\n    this.rows = nRows;\n    this.columns = nColumns;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n\n  removeRow(index) {\n    checkRowIndex(this, index);\n    this.data.splice(index, 1);\n    this.rows -= 1;\n    return this;\n  }\n\n  addRow(index, array) {\n    if (array === undefined) {\n      array = index;\n      index = this.rows;\n    }\n    checkRowIndex(this, index, true);\n    array = Float64Array.from(checkRowVector(this, array));\n    this.data.splice(index, 0, array);\n    this.rows += 1;\n    return this;\n  }\n\n  removeColumn(index) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns - 1);\n      for (let j = 0; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      for (let j = index + 1; j < this.columns; j++) {\n        newRow[j - 1] = this.data[i][j];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns -= 1;\n    return this;\n  }\n\n  addColumn(index, array) {\n    if (typeof array === 'undefined') {\n      array = index;\n      index = this.columns;\n    }\n    checkColumnIndex(this, index, true);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns + 1);\n      let j = 0;\n      for (; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      newRow[j++] = array[i];\n      for (; j < this.columns + 1; j++) {\n        newRow[j] = this.data[i][j - 1];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns += 1;\n    return this;\n  }\n}\n\ninstallMathOperations(AbstractMatrix, Matrix);\n","import { AbstractMatrix } from '../matrix';\n\nexport default class WrapperMatrix2D extends AbstractMatrix {\n  constructor(data) {\n    super();\n    this.data = data;\n    this.rows = data.length;\n    this.columns = data[0].length;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nexport default class LuDecomposition {\n  constructor(matrix) {\n    matrix = WrapperMatrix2D.checkMatrix(matrix);\n\n    let lu = matrix.clone();\n    let rows = lu.rows;\n    let columns = lu.columns;\n    let pivotVector = new Float64Array(rows);\n    let pivotSign = 1;\n    let i, j, k, p, s, t, v;\n    let LUcolj, kmax;\n\n    for (i = 0; i < rows; i++) {\n      pivotVector[i] = i;\n    }\n\n    LUcolj = new Float64Array(rows);\n\n    for (j = 0; j < columns; j++) {\n      for (i = 0; i < rows; i++) {\n        LUcolj[i] = lu.get(i, j);\n      }\n\n      for (i = 0; i < rows; i++) {\n        kmax = Math.min(i, j);\n        s = 0;\n        for (k = 0; k < kmax; k++) {\n          s += lu.get(i, k) * LUcolj[k];\n        }\n        LUcolj[i] -= s;\n        lu.set(i, j, LUcolj[i]);\n      }\n\n      p = j;\n      for (i = j + 1; i < rows; i++) {\n        if (Math.abs(LUcolj[i]) > Math.abs(LUcolj[p])) {\n          p = i;\n        }\n      }\n\n      if (p !== j) {\n        for (k = 0; k < columns; k++) {\n          t = lu.get(p, k);\n          lu.set(p, k, lu.get(j, k));\n          lu.set(j, k, t);\n        }\n\n        v = pivotVector[p];\n        pivotVector[p] = pivotVector[j];\n        pivotVector[j] = v;\n\n        pivotSign = -pivotSign;\n      }\n\n      if (j < rows && lu.get(j, j) !== 0) {\n        for (i = j + 1; i < rows; i++) {\n          lu.set(i, j, lu.get(i, j) / lu.get(j, j));\n        }\n      }\n    }\n\n    this.LU = lu;\n    this.pivotVector = pivotVector;\n    this.pivotSign = pivotSign;\n  }\n\n  isSingular() {\n    let data = this.LU;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      if (data.get(j, j) === 0) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let lu = this.LU;\n    let rows = lu.rows;\n\n    if (rows !== value.rows) {\n      throw new Error('Invalid matrix dimensions');\n    }\n    if (this.isSingular()) {\n      throw new Error('LU matrix is singular');\n    }\n\n    let count = value.columns;\n    let X = value.subMatrixRow(this.pivotVector, 0, count - 1);\n    let columns = lu.columns;\n    let i, j, k;\n\n    for (k = 0; k < columns; k++) {\n      for (i = k + 1; i < columns; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    for (k = columns - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / lu.get(k, k));\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    return X;\n  }\n\n  get determinant() {\n    let data = this.LU;\n    if (!data.isSquare()) {\n      throw new Error('Matrix must be square');\n    }\n    let determinant = this.pivotSign;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      determinant *= data.get(j, j);\n    }\n    return determinant;\n  }\n\n  get lowerTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i > j) {\n          X.set(i, j, data.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, 1);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get upperTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i <= j) {\n          X.set(i, j, data.get(i, j));\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get pivotPermutationVector() {\n    return Array.from(this.pivotVector);\n  }\n}\n","export function hypotenuse(a, b) {\n  let r = 0;\n  if (Math.abs(a) > Math.abs(b)) {\n    r = b / a;\n    return Math.abs(a) * Math.sqrt(1 + r * r);\n  }\n  if (b !== 0) {\n    r = a / b;\n    return Math.abs(b) * Math.sqrt(1 + r * r);\n  }\n  return 0;\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class QrDecomposition {\n  constructor(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    let qr = value.clone();\n    let m = value.rows;\n    let n = value.columns;\n    let rdiag = new Float64Array(n);\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      let nrm = 0;\n      for (i = k; i < m; i++) {\n        nrm = hypotenuse(nrm, qr.get(i, k));\n      }\n      if (nrm !== 0) {\n        if (qr.get(k, k) < 0) {\n          nrm = -nrm;\n        }\n        for (i = k; i < m; i++) {\n          qr.set(i, k, qr.get(i, k) / nrm);\n        }\n        qr.set(k, k, qr.get(k, k) + 1);\n        for (j = k + 1; j < n; j++) {\n          s = 0;\n          for (i = k; i < m; i++) {\n            s += qr.get(i, k) * qr.get(i, j);\n          }\n          s = -s / qr.get(k, k);\n          for (i = k; i < m; i++) {\n            qr.set(i, j, qr.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n      rdiag[k] = -nrm;\n    }\n\n    this.QR = qr;\n    this.Rdiag = rdiag;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let qr = this.QR;\n    let m = qr.rows;\n\n    if (value.rows !== m) {\n      throw new Error('Matrix row dimensions must agree');\n    }\n    if (!this.isFullRank()) {\n      throw new Error('Matrix is rank deficient');\n    }\n\n    let count = value.columns;\n    let X = value.clone();\n    let n = qr.columns;\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      for (j = 0; j < count; j++) {\n        s = 0;\n        for (i = k; i < m; i++) {\n          s += qr.get(i, k) * X.get(i, j);\n        }\n        s = -s / qr.get(k, k);\n        for (i = k; i < m; i++) {\n          X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n        }\n      }\n    }\n    for (k = n - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / this.Rdiag[k]);\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * qr.get(i, k));\n        }\n      }\n    }\n\n    return X.subMatrix(0, n - 1, 0, count - 1);\n  }\n\n  isFullRank() {\n    let columns = this.QR.columns;\n    for (let i = 0; i < columns; i++) {\n      if (this.Rdiag[i] === 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  get upperTriangularMatrix() {\n    let qr = this.QR;\n    let n = qr.columns;\n    let X = new Matrix(n, n);\n    let i, j;\n    for (i = 0; i < n; i++) {\n      for (j = 0; j < n; j++) {\n        if (i < j) {\n          X.set(i, j, qr.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, this.Rdiag[i]);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get orthogonalMatrix() {\n    let qr = this.QR;\n    let rows = qr.rows;\n    let columns = qr.columns;\n    let X = new Matrix(rows, columns);\n    let i, j, k, s;\n\n    for (k = columns - 1; k >= 0; k--) {\n      for (i = 0; i < rows; i++) {\n        X.set(i, k, 0);\n      }\n      X.set(k, k, 1);\n      for (j = k; j < columns; j++) {\n        if (qr.get(k, k) !== 0) {\n          s = 0;\n          for (i = k; i < rows; i++) {\n            s += qr.get(i, k) * X.get(i, j);\n          }\n\n          s = -s / qr.get(k, k);\n\n          for (i = k; i < rows; i++) {\n            X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n    }\n    return X;\n  }\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class SingularValueDecomposition {\n  constructor(value, options = {}) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    if (value.isEmpty()) {\n      throw new Error('Matrix must be non-empty');\n    }\n\n    let m = value.rows;\n    let n = value.columns;\n\n    const {\n      computeLeftSingularVectors = true,\n      computeRightSingularVectors = true,\n      autoTranspose = false,\n    } = options;\n\n    let wantu = Boolean(computeLeftSingularVectors);\n    let wantv = Boolean(computeRightSingularVectors);\n\n    let swapped = false;\n    let a;\n    if (m < n) {\n      if (!autoTranspose) {\n        a = value.clone();\n        // eslint-disable-next-line no-console\n        console.warn(\n          'Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose',\n        );\n      } else {\n        a = value.transpose();\n        m = a.rows;\n        n = a.columns;\n        swapped = true;\n        let aux = wantu;\n        wantu = wantv;\n        wantv = aux;\n      }\n    } else {\n      a = value.clone();\n    }\n\n    let nu = Math.min(m, n);\n    let ni = Math.min(m + 1, n);\n    let s = new Float64Array(ni);\n    let U = new Matrix(m, nu);\n    let V = new Matrix(n, n);\n\n    let e = new Float64Array(n);\n    let work = new Float64Array(m);\n\n    let si = new Float64Array(ni);\n    for (let i = 0; i < ni; i++) si[i] = i;\n\n    let nct = Math.min(m - 1, n);\n    let nrt = Math.max(0, Math.min(n - 2, m));\n    let mrc = Math.max(nct, nrt);\n\n    for (let k = 0; k < mrc; k++) {\n      if (k < nct) {\n        s[k] = 0;\n        for (let i = k; i < m; i++) {\n          s[k] = hypotenuse(s[k], a.get(i, k));\n        }\n        if (s[k] !== 0) {\n          if (a.get(k, k) < 0) {\n            s[k] = -s[k];\n          }\n          for (let i = k; i < m; i++) {\n            a.set(i, k, a.get(i, k) / s[k]);\n          }\n          a.set(k, k, a.get(k, k) + 1);\n        }\n        s[k] = -s[k];\n      }\n\n      for (let j = k + 1; j < n; j++) {\n        if (k < nct && s[k] !== 0) {\n          let t = 0;\n          for (let i = k; i < m; i++) {\n            t += a.get(i, k) * a.get(i, j);\n          }\n          t = -t / a.get(k, k);\n          for (let i = k; i < m; i++) {\n            a.set(i, j, a.get(i, j) + t * a.get(i, k));\n          }\n        }\n        e[j] = a.get(k, j);\n      }\n\n      if (wantu && k < nct) {\n        for (let i = k; i < m; i++) {\n          U.set(i, k, a.get(i, k));\n        }\n      }\n\n      if (k < nrt) {\n        e[k] = 0;\n        for (let i = k + 1; i < n; i++) {\n          e[k] = hypotenuse(e[k], e[i]);\n        }\n        if (e[k] !== 0) {\n          if (e[k + 1] < 0) {\n            e[k] = 0 - e[k];\n          }\n          for (let i = k + 1; i < n; i++) {\n            e[i] /= e[k];\n          }\n          e[k + 1] += 1;\n        }\n        e[k] = -e[k];\n        if (k + 1 < m && e[k] !== 0) {\n          for (let i = k + 1; i < m; i++) {\n            work[i] = 0;\n          }\n          for (let i = k + 1; i < m; i++) {\n            for (let j = k + 1; j < n; j++) {\n              work[i] += e[j] * a.get(i, j);\n            }\n          }\n          for (let j = k + 1; j < n; j++) {\n            let t = -e[j] / e[k + 1];\n            for (let i = k + 1; i < m; i++) {\n              a.set(i, j, a.get(i, j) + t * work[i]);\n            }\n          }\n        }\n        if (wantv) {\n          for (let i = k + 1; i < n; i++) {\n            V.set(i, k, e[i]);\n          }\n        }\n      }\n    }\n\n    let p = Math.min(n, m + 1);\n    if (nct < n) {\n      s[nct] = a.get(nct, nct);\n    }\n    if (m < p) {\n      s[p - 1] = 0;\n    }\n    if (nrt + 1 < p) {\n      e[nrt] = a.get(nrt, p - 1);\n    }\n    e[p - 1] = 0;\n\n    if (wantu) {\n      for (let j = nct; j < nu; j++) {\n        for (let i = 0; i < m; i++) {\n          U.set(i, j, 0);\n        }\n        U.set(j, j, 1);\n      }\n      for (let k = nct - 1; k >= 0; k--) {\n        if (s[k] !== 0) {\n          for (let j = k + 1; j < nu; j++) {\n            let t = 0;\n            for (let i = k; i < m; i++) {\n              t += U.get(i, k) * U.get(i, j);\n            }\n            t = -t / U.get(k, k);\n            for (let i = k; i < m; i++) {\n              U.set(i, j, U.get(i, j) + t * U.get(i, k));\n            }\n          }\n          for (let i = k; i < m; i++) {\n            U.set(i, k, -U.get(i, k));\n          }\n          U.set(k, k, 1 + U.get(k, k));\n          for (let i = 0; i < k - 1; i++) {\n            U.set(i, k, 0);\n          }\n        } else {\n          for (let i = 0; i < m; i++) {\n            U.set(i, k, 0);\n          }\n          U.set(k, k, 1);\n        }\n      }\n    }\n\n    if (wantv) {\n      for (let k = n - 1; k >= 0; k--) {\n        if (k < nrt && e[k] !== 0) {\n          for (let j = k + 1; j < n; j++) {\n            let t = 0;\n            for (let i = k + 1; i < n; i++) {\n              t += V.get(i, k) * V.get(i, j);\n            }\n            t = -t / V.get(k + 1, k);\n            for (let i = k + 1; i < n; i++) {\n              V.set(i, j, V.get(i, j) + t * V.get(i, k));\n            }\n          }\n        }\n        for (let i = 0; i < n; i++) {\n          V.set(i, k, 0);\n        }\n        V.set(k, k, 1);\n      }\n    }\n\n    let pp = p - 1;\n    let iter = 0;\n    let eps = Number.EPSILON;\n    while (p > 0) {\n      let k, kase;\n      for (k = p - 2; k >= -1; k--) {\n        if (k === -1) {\n          break;\n        }\n        const alpha =\n          Number.MIN_VALUE + eps * Math.abs(s[k] + Math.abs(s[k + 1]));\n        if (Math.abs(e[k]) <= alpha || Number.isNaN(e[k])) {\n          e[k] = 0;\n          break;\n        }\n      }\n      if (k === p - 2) {\n        kase = 4;\n      } else {\n        let ks;\n        for (ks = p - 1; ks >= k; ks--) {\n          if (ks === k) {\n            break;\n          }\n          let t =\n            (ks !== p ? Math.abs(e[ks]) : 0) +\n            (ks !== k + 1 ? Math.abs(e[ks - 1]) : 0);\n          if (Math.abs(s[ks]) <= eps * t) {\n            s[ks] = 0;\n            break;\n          }\n        }\n        if (ks === k) {\n          kase = 3;\n        } else if (ks === p - 1) {\n          kase = 1;\n        } else {\n          kase = 2;\n          k = ks;\n        }\n      }\n\n      k++;\n\n      switch (kase) {\n        case 1: {\n          let f = e[p - 2];\n          e[p - 2] = 0;\n          for (let j = p - 2; j >= k; j--) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            if (j !== k) {\n              f = -sn * e[j - 1];\n              e[j - 1] = cs * e[j - 1];\n            }\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, p - 1);\n                V.set(i, p - 1, -sn * V.get(i, j) + cs * V.get(i, p - 1));\n                V.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 2: {\n          let f = e[k - 1];\n          e[k - 1] = 0;\n          for (let j = k; j < p; j++) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            f = -sn * e[j];\n            e[j] = cs * e[j];\n            if (wantu) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, k - 1);\n                U.set(i, k - 1, -sn * U.get(i, j) + cs * U.get(i, k - 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 3: {\n          const scale = Math.max(\n            Math.abs(s[p - 1]),\n            Math.abs(s[p - 2]),\n            Math.abs(e[p - 2]),\n            Math.abs(s[k]),\n            Math.abs(e[k]),\n          );\n          const sp = s[p - 1] / scale;\n          const spm1 = s[p - 2] / scale;\n          const epm1 = e[p - 2] / scale;\n          const sk = s[k] / scale;\n          const ek = e[k] / scale;\n          const b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2;\n          const c = sp * epm1 * (sp * epm1);\n          let shift = 0;\n          if (b !== 0 || c !== 0) {\n            if (b < 0) {\n              shift = 0 - Math.sqrt(b * b + c);\n            } else {\n              shift = Math.sqrt(b * b + c);\n            }\n            shift = c / (b + shift);\n          }\n          let f = (sk + sp) * (sk - sp) + shift;\n          let g = sk * ek;\n          for (let j = k; j < p - 1; j++) {\n            let t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            let cs = f / t;\n            let sn = g / t;\n            if (j !== k) {\n              e[j - 1] = t;\n            }\n            f = cs * s[j] + sn * e[j];\n            e[j] = cs * e[j] - sn * s[j];\n            g = sn * s[j + 1];\n            s[j + 1] = cs * s[j + 1];\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, j + 1);\n                V.set(i, j + 1, -sn * V.get(i, j) + cs * V.get(i, j + 1));\n                V.set(i, j, t);\n              }\n            }\n            t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            cs = f / t;\n            sn = g / t;\n            s[j] = t;\n            f = cs * e[j] + sn * s[j + 1];\n            s[j + 1] = -sn * e[j] + cs * s[j + 1];\n            g = sn * e[j + 1];\n            e[j + 1] = cs * e[j + 1];\n            if (wantu && j < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, j + 1);\n                U.set(i, j + 1, -sn * U.get(i, j) + cs * U.get(i, j + 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          e[p - 2] = f;\n          iter = iter + 1;\n          break;\n        }\n        case 4: {\n          if (s[k] <= 0) {\n            s[k] = s[k] < 0 ? -s[k] : 0;\n            if (wantv) {\n              for (let i = 0; i <= pp; i++) {\n                V.set(i, k, -V.get(i, k));\n              }\n            }\n          }\n          while (k < pp) {\n            if (s[k] >= s[k + 1]) {\n              break;\n            }\n            let t = s[k];\n            s[k] = s[k + 1];\n            s[k + 1] = t;\n            if (wantv && k < n - 1) {\n              for (let i = 0; i < n; i++) {\n                t = V.get(i, k + 1);\n                V.set(i, k + 1, V.get(i, k));\n                V.set(i, k, t);\n              }\n            }\n            if (wantu && k < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = U.get(i, k + 1);\n                U.set(i, k + 1, U.get(i, k));\n                U.set(i, k, t);\n              }\n            }\n            k++;\n          }\n          iter = 0;\n          p--;\n          break;\n        }\n        // no default\n      }\n    }\n\n    if (swapped) {\n      let tmp = V;\n      V = U;\n      U = tmp;\n    }\n\n    this.m = m;\n    this.n = n;\n    this.s = s;\n    this.U = U;\n    this.V = V;\n  }\n\n  solve(value) {\n    let Y = value;\n    let e = this.threshold;\n    let scols = this.s.length;\n    let Ls = Matrix.zeros(scols, scols);\n\n    for (let i = 0; i < scols; i++) {\n      if (Math.abs(this.s[i]) <= e) {\n        Ls.set(i, i, 0);\n      } else {\n        Ls.set(i, i, 1 / this.s[i]);\n      }\n    }\n\n    let U = this.U;\n    let V = this.rightSingularVectors;\n\n    let VL = V.mmul(Ls);\n    let vrows = V.rows;\n    let urows = U.rows;\n    let VLU = Matrix.zeros(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < scols; k++) {\n          sum += VL.get(i, k) * U.get(j, k);\n        }\n        VLU.set(i, j, sum);\n      }\n    }\n\n    return VLU.mmul(Y);\n  }\n\n  solveForDiagonal(value) {\n    return this.solve(Matrix.diag(value));\n  }\n\n  inverse() {\n    let V = this.V;\n    let e = this.threshold;\n    let vrows = V.rows;\n    let vcols = V.columns;\n    let X = new Matrix(vrows, this.s.length);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < vcols; j++) {\n        if (Math.abs(this.s[j]) > e) {\n          X.set(i, j, V.get(i, j) / this.s[j]);\n        }\n      }\n    }\n\n    let U = this.U;\n\n    let urows = U.rows;\n    let ucols = U.columns;\n    let Y = new Matrix(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < ucols; k++) {\n          sum += X.get(i, k) * U.get(j, k);\n        }\n        Y.set(i, j, sum);\n      }\n    }\n\n    return Y;\n  }\n\n  get condition() {\n    return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n  }\n\n  get norm2() {\n    return this.s[0];\n  }\n\n  get rank() {\n    let tol = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON;\n    let r = 0;\n    let s = this.s;\n    for (let i = 0, ii = s.length; i < ii; i++) {\n      if (s[i] > tol) {\n        r++;\n      }\n    }\n    return r;\n  }\n\n  get diagonal() {\n    return Array.from(this.s);\n  }\n\n  get threshold() {\n    return (Number.EPSILON / 2) * Math.max(this.m, this.n) * this.s[0];\n  }\n\n  get leftSingularVectors() {\n    return this.U;\n  }\n\n  get rightSingularVectors() {\n    return this.V;\n  }\n\n  get diagonalMatrix() {\n    return Matrix.diag(this.s);\n  }\n}\n","import LuDecomposition from './dc/lu';\nimport QrDecomposition from './dc/qr';\nimport SingularValueDecomposition from './dc/svd';\nimport Matrix from './matrix';\nimport WrapperMatrix2D from './wrap/WrapperMatrix2D';\n\nexport function inverse(matrix, useSVD = false) {\n  matrix = WrapperMatrix2D.checkMatrix(matrix);\n  if (useSVD) {\n    return new SingularValueDecomposition(matrix).inverse();\n  } else {\n    return solve(matrix, Matrix.eye(matrix.rows));\n  }\n}\n\nexport function solve(leftHandSide, rightHandSide, useSVD = false) {\n  leftHandSide = WrapperMatrix2D.checkMatrix(leftHandSide);\n  rightHandSide = WrapperMatrix2D.checkMatrix(rightHandSide);\n  if (useSVD) {\n    return new SingularValueDecomposition(leftHandSide).solve(rightHandSide);\n  } else {\n    return leftHandSide.isSquare()\n      ? new LuDecomposition(leftHandSide).solve(rightHandSide)\n      : new QrDecomposition(leftHandSide).solve(rightHandSide);\n  }\n}\n","import { isAnyArray } from 'is-any-array';\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\n/**\n * Fill an array with sequential numbers\n * @param {Array<number>} [input] - optional destination array (if not provided a new array will be created)\n * @param {object} [options={}]\n * @param {number} [options.from=0] - first value in the array\n * @param {number} [options.to=10] - last value in the array\n * @param {number} [options.size=input.length] - size of the array (if not provided calculated from step)\n * @param {number} [options.step] - if not provided calculated from size\n * @return {Array<number>}\n */\n\nfunction sequentialFill() {\n  var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (_typeof(input) === 'object' && !isAnyArray(input)) {\n    options = input;\n    input = [];\n  }\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  var _options = options,\n      _options$from = _options.from,\n      from = _options$from === void 0 ? 0 : _options$from,\n      _options$to = _options.to,\n      to = _options$to === void 0 ? 10 : _options$to,\n      _options$size = _options.size,\n      size = _options$size === void 0 ? input.length : _options$size,\n      step = _options.step;\n\n  if (size !== 0 && step) {\n    throw new Error('step is defined by the array size');\n  }\n\n  if (!size) {\n    if (step) {\n      size = Math.floor((to - from) / step) + 1;\n    } else {\n      size = to - from + 1;\n    }\n  }\n\n  if (!step && size) {\n    step = (to - from) / (size - 1);\n  }\n\n  if (Array.isArray(input)) {\n    // only works with normal array\n    input.length = 0;\n\n    for (var i = 0; i < size; i++) {\n      input.push(from);\n      from += step;\n    }\n  } else {\n    if (input.length !== size) {\n      throw new Error('sequentialFill typed array must have the correct length');\n    }\n\n    for (var _i = 0; _i < size; _i++) {\n      input[_i] = from;\n      from += step;\n    }\n  }\n\n  return input;\n}\n\nexport { sequentialFill as default };\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (factory((global.d3_array = {})));\n}(this, function (exports) { 'use strict';\n\n  function ascending(a, b) {\n    return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n  }\n\n  function bisector(compare) {\n    if (compare.length === 1) compare = ascendingComparator(compare);\n    return {\n      left: function(a, x, lo, hi) {\n        if (lo == null) lo = 0;\n        if (hi == null) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) < 0) lo = mid + 1;\n          else hi = mid;\n        }\n        return lo;\n      },\n      right: function(a, x, lo, hi) {\n        if (lo == null) lo = 0;\n        if (hi == null) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) > 0) hi = mid;\n          else lo = mid + 1;\n        }\n        return lo;\n      }\n    };\n  }\n\n  function ascendingComparator(f) {\n    return function(d, x) {\n      return ascending(f(d), x);\n    };\n  }\n\n  var ascendingBisect = bisector(ascending);\n  var bisectRight = ascendingBisect.right;\n  var bisectLeft = ascendingBisect.left;\n\n  function descending(a, b) {\n    return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n  }\n\n  function number$1(x) {\n    return x === null ? NaN : +x;\n  }\n\n  function variance(array, f) {\n    var n = array.length,\n        m = 0,\n        a,\n        d,\n        s = 0,\n        i = -1,\n        j = 0;\n\n    if (f == null) {\n      while (++i < n) {\n        if (!isNaN(a = number$1(array[i]))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n\n    else {\n      while (++i < n) {\n        if (!isNaN(a = number$1(f(array[i], i, array)))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n\n    if (j > 1) return s / (j - 1);\n  }\n\n  function deviation(array, f) {\n    var v = variance(array, f);\n    return v ? Math.sqrt(v) : v;\n  }\n\n  function extent(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b,\n        c;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = c = b; break; }\n      while (++i < n) if ((b = array[i]) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = c = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n\n    return [a, c];\n  }\n\n  function constant(x) {\n    return function() {\n      return x;\n    };\n  }\n\n  function identity(x) {\n    return x;\n  }\n\n  function range(start, stop, step) {\n    start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n    var i = -1,\n        n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n        range = new Array(n);\n\n    while (++i < n) {\n      range[i] = start + i * step;\n    }\n\n    return range;\n  }\n\n  var e10 = Math.sqrt(50);\n  var e5 = Math.sqrt(10);\n  var e2 = Math.sqrt(2);\n  function ticks(start, stop, count) {\n    var step = tickStep(start, stop, count);\n    return range(\n      Math.ceil(start / step) * step,\n      Math.floor(stop / step) * step + step / 2, // inclusive\n      step\n    );\n  }\n\n  function tickStep(start, stop, count) {\n    var step0 = Math.abs(stop - start) / Math.max(0, count),\n        step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n        error = step0 / step1;\n    if (error >= e10) step1 *= 10;\n    else if (error >= e5) step1 *= 5;\n    else if (error >= e2) step1 *= 2;\n    return stop < start ? -step1 : step1;\n  }\n\n  function sturges(values) {\n    return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n  }\n\n  function number(x) {\n    return +x;\n  }\n\n  function histogram() {\n    var value = identity,\n        domain = extent,\n        threshold = sturges;\n\n    function histogram(data) {\n      var i,\n          n = data.length,\n          x,\n          values = new Array(n);\n\n      // Coerce values to numbers.\n      for (i = 0; i < n; ++i) {\n        values[i] = +value(data[i], i, data);\n      }\n\n      var xz = domain(values),\n          x0 = +xz[0],\n          x1 = +xz[1],\n          tz = threshold(values, x0, x1);\n\n      // Convert number of thresholds into uniform thresholds.\n      if (!Array.isArray(tz)) tz = ticks(x0, x1, +tz);\n\n      // Coerce thresholds to numbers, ignoring any outside the domain.\n      var m = tz.length;\n      for (i = 0; i < m; ++i) tz[i] = +tz[i];\n      while (tz[0] <= x0) tz.shift(), --m;\n      while (tz[m - 1] >= x1) tz.pop(), --m;\n\n      var bins = new Array(m + 1),\n          bin;\n\n      // Initialize bins.\n      for (i = 0; i <= m; ++i) {\n        bin = bins[i] = [];\n        bin.x0 = i > 0 ? tz[i - 1] : x0;\n        bin.x1 = i < m ? tz[i] : x1;\n      }\n\n      // Assign data to bins by value, ignoring any outside the domain.\n      for (i = 0; i < n; ++i) {\n        x = values[i];\n        if (x0 <= x && x <= x1) {\n          bins[bisectRight(tz, x, 0, m)].push(data[i]);\n        }\n      }\n\n      return bins;\n    }\n\n    histogram.value = function(_) {\n      return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), histogram) : value;\n    };\n\n    histogram.domain = function(_) {\n      return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), histogram) : domain;\n    };\n\n    histogram.thresholds = function(_) {\n      if (!arguments.length) return threshold;\n      threshold = typeof _ === \"function\" ? _\n          : Array.isArray(_) ? constant(Array.prototype.map.call(_, number))\n          : constant(+_);\n      return histogram;\n    };\n\n    return histogram;\n  }\n\n  function quantile(array, p, f) {\n    if (f == null) f = number$1;\n    if (!(n = array.length)) return;\n    if ((p = +p) <= 0 || n < 2) return +f(array[0], 0, array);\n    if (p >= 1) return +f(array[n - 1], n - 1, array);\n    var n,\n        h = (n - 1) * p,\n        i = Math.floor(h),\n        a = +f(array[i], i, array),\n        b = +f(array[i + 1], i + 1, array);\n    return a + (b - a) * (h - i);\n  }\n\n  function freedmanDiaconis(values, min, max) {\n    values.sort(ascending);\n    return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n  }\n\n  function scott(values, min, max) {\n    return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n  }\n\n  function max(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b > a) a = b;\n    }\n\n    return a;\n  }\n\n  function mean(array, f) {\n    var s = 0,\n        n = array.length,\n        a,\n        i = -1,\n        j = n;\n\n    if (f == null) {\n      while (++i < n) if (!isNaN(a = number$1(array[i]))) s += a; else --j;\n    }\n\n    else {\n      while (++i < n) if (!isNaN(a = number$1(f(array[i], i, array)))) s += a; else --j;\n    }\n\n    if (j) return s / j;\n  }\n\n  function median(array, f) {\n    var numbers = [],\n        n = array.length,\n        a,\n        i = -1;\n\n    if (f == null) {\n      while (++i < n) if (!isNaN(a = number$1(array[i]))) numbers.push(a);\n    }\n\n    else {\n      while (++i < n) if (!isNaN(a = number$1(f(array[i], i, array)))) numbers.push(a);\n    }\n\n    return quantile(numbers.sort(ascending), 0.5);\n  }\n\n  function merge(arrays) {\n    var n = arrays.length,\n        m,\n        i = -1,\n        j = 0,\n        merged,\n        array;\n\n    while (++i < n) j += arrays[i].length;\n    merged = new Array(j);\n\n    while (--n >= 0) {\n      array = arrays[n];\n      m = array.length;\n      while (--m >= 0) {\n        merged[--j] = array[m];\n      }\n    }\n\n    return merged;\n  }\n\n  function min(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null && a > b) a = b;\n    }\n\n    return a;\n  }\n\n  function pairs(array) {\n    var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n    while (i < n) pairs[i] = [p, p = array[++i]];\n    return pairs;\n  }\n\n  function permute(array, indexes) {\n    var i = indexes.length, permutes = new Array(i);\n    while (i--) permutes[i] = array[indexes[i]];\n    return permutes;\n  }\n\n  function scan(array, compare) {\n    if (!(n = array.length)) return;\n    var i = 0,\n        n,\n        j = 0,\n        xi,\n        xj = array[j];\n\n    if (!compare) compare = ascending;\n\n    while (++i < n) if (compare(xi = array[i], xj) < 0 || compare(xj, xj) !== 0) xj = xi, j = i;\n\n    if (compare(xj, xj) === 0) return j;\n  }\n\n  function shuffle(array, i0, i1) {\n    var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n        t,\n        i;\n\n    while (m) {\n      i = Math.random() * m-- | 0;\n      t = array[m + i0];\n      array[m + i0] = array[i + i0];\n      array[i + i0] = t;\n    }\n\n    return array;\n  }\n\n  function sum(array, f) {\n    var s = 0,\n        n = array.length,\n        a,\n        i = -1;\n\n    if (f == null) {\n      while (++i < n) if (a = +array[i]) s += a; // Note: zero and null are equivalent.\n    }\n\n    else {\n      while (++i < n) if (a = +f(array[i], i, array)) s += a;\n    }\n\n    return s;\n  }\n\n  function transpose(matrix) {\n    if (!(n = matrix.length)) return [];\n    for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n      for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n        row[j] = matrix[j][i];\n      }\n    }\n    return transpose;\n  }\n\n  function length(d) {\n    return d.length;\n  }\n\n  function zip() {\n    return transpose(arguments);\n  }\n\n  var version = \"0.7.1\";\n\n  exports.version = version;\n  exports.bisect = bisectRight;\n  exports.bisectRight = bisectRight;\n  exports.bisectLeft = bisectLeft;\n  exports.ascending = ascending;\n  exports.bisector = bisector;\n  exports.descending = descending;\n  exports.deviation = deviation;\n  exports.extent = extent;\n  exports.histogram = histogram;\n  exports.thresholdFreedmanDiaconis = freedmanDiaconis;\n  exports.thresholdScott = scott;\n  exports.thresholdSturges = sturges;\n  exports.max = max;\n  exports.mean = mean;\n  exports.median = median;\n  exports.merge = merge;\n  exports.min = min;\n  exports.pairs = pairs;\n  exports.permute = permute;\n  exports.quantile = quantile;\n  exports.range = range;\n  exports.scan = scan;\n  exports.shuffle = shuffle;\n  exports.sum = sum;\n  exports.ticks = ticks;\n  exports.tickStep = tickStep;\n  exports.transpose = transpose;\n  exports.variance = variance;\n  exports.zip = zip;\n\n}));","const {bisectRight} = require('d3-array')\n\nconst quincunx = (u, v, w, q) => {\n  const n = u.length - 1\n\n  u[0] = 0\n  v[0] = 0\n  w[0] = 0\n  v[1] = v[1] / u[1]\n  w[1] = w[1] / u[1]\n  for (let i = 2; i < n; ++i) {\n    u[i] = u[i] - u[i - 2] * w[i - 2] * w[i - 2] - u[i - 1] * v[i - 1] * v[i - 1]\n    v[i] = (v[i] - u[i - 1] * v[i - 1] * w[i - 1]) / u[i]\n    w[i] = w[i] / u[i]\n  }\n\n  for (let i = 2; i < n; ++i) {\n    q[i] = q[i] - v[i - 1] * q[i - 1] - w[i - 2] * q[i - 2]\n  }\n  for (let i = 1; i < n; ++i) {\n    q[i] = q[i] / u[i]\n  }\n\n  q[n - 2] = q[n - 2] - v[n - 2] * q[n - 1]\n  for (let i = n - 3; i > 0; --i) {\n    q[i] = q[i] - v[i] * q[i + 1] - w[i] * q[i + 2]\n  }\n}\n\nconst smoothingSpline = (x, y, sigma, lambda) => {\n  const n = x.length - 1\n  const h = new Array(n + 1)\n  const r = new Array(n + 1)\n  const f = new Array(n + 1)\n  const p = new Array(n + 1)\n  const q = new Array(n + 1)\n  const u = new Array(n + 1)\n  const v = new Array(n + 1)\n  const w = new Array(n + 1)\n  const params = x.map(() => [0, 0, 0, 0])\n  params.pop()\n\n  const mu = 2 * (1 - lambda) / (3 * lambda)\n  for (let i = 0; i < n; ++i) {\n    h[i] = x[i + 1] - x[i]\n    r[i] = 3 / h[i]\n  }\n  q[0] = 0\n  for (let i = 1; i < n; ++i) {\n    f[i] = -(r[i - 1] + r[i])\n    p[i] = 2 * (x[i + 1] - x[i - 1])\n    q[i] = 3 * (y[i + 1] - y[i]) / h[i] - 3 * (y[i] - y[i - 1]) / h[i - 1]\n  }\n  q[n] = 0\n\n  for (let i = 1; i < n; ++i) {\n    u[i] = r[i - 1] * r[i - 1] * sigma[i - 1] + f[i] * f[i] * sigma[i] + r[i] * r[i] * sigma[i + 1]\n    u[i] = mu * u[i] + p[i]\n  }\n  for (let i = 1; i < n - 1; ++i) {\n    v[i] = f[i] * r[i] * sigma[i] + r[i] * f[i + 1] * sigma[i + 1]\n    v[i] = mu * v[i] + h[i]\n  }\n  for (let i = 1; i < n - 2; ++i) {\n    w[i] = mu * r[i] * r[i + 1] * sigma[i + 1]\n  }\n\n  quincunx(u, v, w, q)\n\n  params[0][3] = y[0] - mu * r[0] * q[1] * sigma[0]\n  params[1][3] = y[1] - mu * (f[1] * q[1] + r[1] * q[2]) * sigma[0]\n  params[0][0] = q[1] / (3 * h[0])\n  params[0][1] = 0\n  params[0][2] = (params[1][3] - params[0][3]) / h[0] - q[1] * h[0] / 3\n  r[0] = 0\n  for (let i = 1; i < n; ++i) {\n    params[i][0] = (q[i + 1] - q[i]) / (3 * h[i])\n    params[i][1] = q[i]\n    params[i][2] = (q[i] + q[i - 1]) * h[i - 1] + params[i - 1][2]\n    params[i][3] = r[i - 1] * q[i - 1] + f[i] * q[i] + r[i] * q[i + 1]\n    params[i][3] = y[i] - mu * params[i][3] * sigma[i]\n  }\n  return params\n}\n\nclass SplineInterpolator {\n  constructor (xIn, yIn, lambda = 1) {\n    const indices = xIn.map((_, i) => i)\n    indices.sort((i, j) => xIn[i] - xIn[j])\n    const x = indices.map((i) => xIn[i])\n    const y = indices.map((i) => yIn[i])\n    const n = indices.length\n    const sigma = indices.map(() => 1)\n    this.n = n\n    this.x = x\n    this.y = y\n    this.params = smoothingSpline(x, y, sigma, lambda)\n  }\n\n  interpolate (v) {\n    if (v === this.x[this.n - 1]) {\n      return this.y[this.n - 1]\n    }\n    const i = Math.min(Math.max(0, bisectRight(this.x, v) - 1), this.n - 2)\n    const [a, b, c, d] = this.params[i]\n    v = v - this.x[i]\n    return a * v * v * v + b * v * v + c * v + d\n  }\n\n  max (step = 100) {\n    const xStart = this.x[0]\n    const xStop = this.x[this.n - 1]\n    const delta = (xStop - xStart) / step\n    let maxValue = -Infinity\n    for (let i = 0, x = xStart; i < step; ++i, x += delta) {\n      const y = this.interpolate(x)\n      if (y > maxValue) {\n        maxValue = y\n      }\n    }\n    return maxValue\n  }\n\n  min (step = 100) {\n    const xStart = this.x[0]\n    const xStop = this.x[this.n - 1]\n    const delta = (xStop - xStart) / step\n    let minValue = Infinity\n    for (let i = 0, x = xStart; i < step; ++i, x += delta) {\n      const y = this.interpolate(x)\n      if (y < minValue) {\n        minValue = y\n      }\n    }\n    return minValue\n  }\n\n  domain () {\n    return [this.x[0], this.x[this.x.length - 1]]\n  }\n\n  range () {\n    return [this.min(), this.max()]\n  }\n\n  curve (nInterval, domain = null) {\n    domain = domain || this.domain()\n    const delta = (domain[1] - domain[0]) / (nInterval - 1)\n    const vals = new Array(nInterval)\n    for (let i = 0; i < nInterval; ++i) {\n      const x = delta * i + domain[0]\n      vals[i] = [x, this.interpolate(x)]\n    }\n    return vals\n  }\n}\n\nmodule.exports = SplineInterpolator\n","import { gyromagneticRatio } from 'nmr-processing';\nexport default function postProcessingNMR(entriesFlat) {\n    // specific NMR functions\n    for (let entry of entriesFlat) {\n        let observeFrequency = 0;\n        let shiftOffsetVal = 0;\n        for (let spectrum of entry.spectra) {\n            if (entry.ntuples && entry.ntuples.symbol) {\n                if (!observeFrequency && spectrum.observeFrequency) {\n                    observeFrequency = spectrum.observeFrequency;\n                }\n                if (!shiftOffsetVal && spectrum.shiftOffsetVal) {\n                    shiftOffsetVal = spectrum.shiftOffsetVal;\n                }\n            }\n            else {\n                observeFrequency = spectrum.observeFrequency;\n                shiftOffsetVal = spectrum.shiftOffsetVal;\n            }\n            if (observeFrequency) {\n                if (spectrum.xUnits && spectrum.xUnits.toUpperCase().includes('HZ')) {\n                    spectrum.xUnits = 'PPM';\n                    spectrum.xFactor = spectrum.xFactor / observeFrequency;\n                    spectrum.firstX = spectrum.firstX / observeFrequency;\n                    spectrum.lastX = spectrum.lastX / observeFrequency;\n                    spectrum.deltaX = spectrum.deltaX / observeFrequency;\n                    for (let i = 0; i < spectrum.data.x.length; i++) {\n                        spectrum.data.x[i] /= observeFrequency;\n                    }\n                }\n            }\n            if (shiftOffsetVal) {\n                let shift = spectrum.firstX - shiftOffsetVal;\n                spectrum.firstX = spectrum.firstX - shift;\n                spectrum.lastX = spectrum.lastX - shift;\n                for (let i = 0; i < spectrum.data.x.length; i++) {\n                    spectrum.data.x[i] -= shift;\n                }\n            }\n            // we will check if some nucleus are missing ...\n            if (entry.ntuples && entry.ntuples.nucleus && entry.ntuples.symbol) {\n                for (let i = 0; i < entry.ntuples.nucleus.length; i++) {\n                    let symbol = entry.ntuples.symbol[i];\n                    let nucleus = entry.ntuples.nucleus[i];\n                    if (symbol.startsWith('F') && !nucleus) {\n                        if (symbol === 'F1') {\n                            // if F1 is defined we will use F2\n                            if (entry.tmp.$NUC2) {\n                                entry.ntuples.nucleus[i] = entry.tmp.$NUC2;\n                            }\n                            else {\n                                let f2index = entry.ntuples.symbol.indexOf('F2');\n                                if (f2index && entry.ntuples.nucleus[f2index]) {\n                                    entry.ntuples.nucleus[i] = entry.ntuples.nucleus[f2index];\n                                }\n                            }\n                        }\n                        if (symbol === 'F2')\n                            entry.ntuples.nucleus[i] = entry.tmp.$NUC1;\n                    }\n                    if (symbol === 'F2') {\n                        entry.yType = entry.ntuples.nucleus[0];\n                    }\n                }\n            }\n            if (observeFrequency &&\n                entry.ntuples &&\n                entry.ntuples.symbol &&\n                entry.ntuples.nucleus) {\n                let unit = '';\n                let pageSymbolIndex = entry.ntuples.symbol.indexOf(spectrum.pageSymbol);\n                if (entry.ntuples.units && entry.ntuples.units[pageSymbolIndex]) {\n                    unit = entry.ntuples.units[pageSymbolIndex];\n                }\n                if (unit !== 'PPM') {\n                    if (pageSymbolIndex !== 0) {\n                        throw Error('Not sure about this ntuples format');\n                    }\n                    let ratio0 = gyromagneticRatio[entry.ntuples.nucleus[0]];\n                    let ratio1 = gyromagneticRatio[entry.ntuples.nucleus[1]];\n                    if (!ratio0 || !ratio1) {\n                        throw Error('Problem with determination of gyromagnetic ratio');\n                    }\n                    let ratio = (ratio0 / ratio1) * observeFrequency;\n                    spectrum.pageValue /= ratio;\n                }\n            }\n        }\n    }\n}\n//# sourceMappingURL=postProcessingNMR.js.map","export default function profiling(result, action, options) {\n    if (result.profiling) {\n        result.profiling.push({\n            action,\n            time: Date.now() - options.start,\n        });\n    }\n}\n//# sourceMappingURL=profiling.js.map","export default function simpleChromatogram(result) {\n    let data = result.spectra[0].data;\n    result.chromatogram = {\n        times: data.x.slice(),\n        series: {\n            intensity: {\n                dimension: 1,\n                data: data.y.slice(),\n            },\n        },\n    };\n}\n//# sourceMappingURL=simpleChromatogram.js.map","import add2D from './2d/add2D';\nimport { complexChromatogram } from './complexChromatogram';\nimport postProcessingNMR from './postProcessingNMR';\nimport profiling from './profiling';\nimport simpleChromatogram from './simpleChromatogram';\nexport default function postProcessing(entriesFlat, result, options) {\n    // converting Hz to ppm\n    postProcessingNMR(entriesFlat);\n    for (let entry of entriesFlat) {\n        if (Object.keys(entry.ntuples).length > 0) {\n            let newNtuples = [];\n            let keys = Object.keys(entry.ntuples);\n            for (let i = 0; i < keys.length; i++) {\n                let key = keys[i];\n                let values = entry.ntuples[key];\n                for (let j = 0; j < values.length; j++) {\n                    if (!newNtuples[j])\n                        newNtuples[j] = {};\n                    newNtuples[j][key] = values[j];\n                }\n            }\n            entry.ntuples = newNtuples;\n        }\n        if (entry.twoD && options.wantXY) {\n            add2D(entry, options);\n            profiling(result, 'Finished countour plot calculation', options);\n            if (!options.keepSpectra) {\n                delete entry.spectra;\n            }\n        }\n        // maybe it is a GC (HPLC) / MS. In this case we add a new format\n        if (options.chromatogram) {\n            if (entry.spectra.length > 1) {\n                complexChromatogram(entry);\n            }\n            else {\n                simpleChromatogram(entry);\n            }\n            profiling(result, 'Finished chromatogram calculation', options);\n        }\n        delete entry.tmp;\n    }\n}\n//# sourceMappingURL=postProcessing.js.map","export default function prepareNtuplesDatatable(currentEntry, spectrum, kind) {\n    let xIndex = -1;\n    let yIndex = -1;\n    let firstVariable = '';\n    let secondVariable = '';\n    if (kind.indexOf('++') > 0) {\n        firstVariable = kind.replace(/.*\\(([a-zA-Z0-9]+)\\+\\+.*/, '$1');\n        secondVariable = kind.replace(/.*\\.\\.([a-zA-Z0-9]+).*/, '$1');\n    }\n    else {\n        kind = kind.replace(/[^a-zA-Z]/g, '');\n        firstVariable = kind.charAt(0);\n        secondVariable = kind.charAt(1);\n        spectrum.variables = {};\n        for (let symbol of kind) {\n            let lowerCaseSymbol = symbol.toLowerCase();\n            let index = currentEntry.ntuples.symbol.indexOf(symbol);\n            if (index === -1)\n                throw Error(`Symbol undefined: ${symbol}`);\n            spectrum.variables[lowerCaseSymbol] = {};\n            for (let key in currentEntry.ntuples) {\n                if (currentEntry.ntuples[key][index]) {\n                    spectrum.variables[lowerCaseSymbol][key.replace(/^var/, '')] =\n                        currentEntry.ntuples[key][index];\n                }\n            }\n        }\n    }\n    xIndex = currentEntry.ntuples.symbol.indexOf(firstVariable);\n    yIndex = currentEntry.ntuples.symbol.indexOf(secondVariable);\n    if (xIndex === -1)\n        xIndex = 0;\n    if (yIndex === -1)\n        yIndex = 0;\n    if (currentEntry.ntuples.first) {\n        if (currentEntry.ntuples.first.length > xIndex) {\n            spectrum.firstX = currentEntry.ntuples.first[xIndex];\n        }\n        if (currentEntry.ntuples.first.length > yIndex) {\n            spectrum.firstY = currentEntry.ntuples.first[yIndex];\n        }\n    }\n    if (currentEntry.ntuples.last) {\n        if (currentEntry.ntuples.last.length > xIndex) {\n            spectrum.lastX = currentEntry.ntuples.last[xIndex];\n        }\n        if (currentEntry.ntuples.last.length > yIndex) {\n            spectrum.lastY = currentEntry.ntuples.last[yIndex];\n        }\n    }\n    if (currentEntry.ntuples.vardim &&\n        currentEntry.ntuples.vardim.length > xIndex) {\n        spectrum.nbPoints = currentEntry.ntuples.vardim[xIndex];\n    }\n    if (currentEntry.ntuples.factor) {\n        if (currentEntry.ntuples.factor.length > xIndex) {\n            spectrum.xFactor = currentEntry.ntuples.factor[xIndex];\n        }\n        if (currentEntry.ntuples.factor.length > yIndex) {\n            spectrum.yFactor = currentEntry.ntuples.factor[yIndex];\n        }\n    }\n    if (currentEntry.ntuples.units) {\n        if (currentEntry.ntuples.units.length > xIndex) {\n            if (currentEntry.ntuples.varname &&\n                currentEntry.ntuples.varname[xIndex]) {\n                spectrum.xUnits = `${currentEntry.ntuples.varname[xIndex]} [${currentEntry.ntuples.units[xIndex]}]`;\n            }\n            else {\n                spectrum.xUnits = currentEntry.ntuples.units[xIndex];\n            }\n        }\n        if (currentEntry.ntuples.units.length > yIndex) {\n            if (currentEntry.ntuples.varname &&\n                currentEntry.ntuples.varname[yIndex]) {\n                spectrum.yUnits = `${currentEntry.ntuples.varname[yIndex]} [${currentEntry.ntuples.units[yIndex]}]`;\n            }\n            else {\n                spectrum.yUnits = currentEntry.ntuples.units[yIndex];\n            }\n        }\n    }\n}\n//# sourceMappingURL=prepareNtuplesDatatable.js.map","export default function prepareSpectrum(spectrum) {\n    if (!spectrum.xFactor)\n        spectrum.xFactor = 1;\n    if (!spectrum.yFactor)\n        spectrum.yFactor = 1;\n}\n//# sourceMappingURL=prepareSpectrum.js.map","import { parseString } from 'dynamic-typing';\nimport { ensureString } from 'ensure-string';\nimport { isMSField, convertMSFieldToLabel } from './complexChromatogram';\nimport convertToFloatArray from './convertToFloatArray';\nimport fastParseXYData from './parse/fastParseXYData';\nimport parsePeakTable from './parse/parsePeakTable';\nimport parseXYA from './parse/parseXYA';\nimport postProcessing from './postProcessing';\nimport prepareNtuplesDatatable from './prepareNtuplesDatatable';\nimport prepareSpectrum from './prepareSpectrum';\nimport profiling from './profiling';\n// the following RegExp can only be used for XYdata, some peakTables have values with a \"E-5\" ...\nconst ntuplesSeparatorRegExp = /[ \\t]*,[ \\t]*/;\nconst defaultOptions = {\n    keepRecordsRegExp: /^$/,\n    canonicDataLabels: true,\n    canonicMetadataLabels: false,\n    dynamicTyping: true,\n    withoutXY: false,\n    chromatogram: false,\n    keepSpectra: false,\n    noContour: false,\n    nbContourLevels: 7,\n    noiseMultiplier: 5,\n    profiling: false,\n};\n/**\n *\n * @typedef {object} ConvertOptions\n * @property {RegExp} [options.keepRecordsRegExp=/^$/] - By default we don't keep meta information.\n * @property {boolean} [options.canonicDataLabels=true] - Canonize the Labels (uppercase without symbol).\n * @property {boolean} [options.canonicMetadataLabels=false] - Canonize the metadata Labels (uppercase without symbol).\n * @property {boolean} [options.dynamicTyping=false] - Convert numbers to Number.\n * @property {boolean} [options.withoutXY=false] - Remove the XY data.\n * @property {boolean} [options.chromatogram=false] - Special post-processing for GC / HPLC / MS.\n * @property {boolean} [options.keepSpectra=false] - Force to keep the spectra in case of 2D.\n * @property {boolean} [options.noContour=false] - Don't calculate countour in case of 2D.\n * @property {number} [options.nbContourLevels=7] - Number of positive / negative contour levels to calculate.\n * @property {number} [options.noiseMultiplier=5] - Define for 2D the level as 5 times the median as default.\n * @property {boolean} [options.profiling=false] - Add profiling information.\n */\n/**\n *\n * @typedef {object} Ntuples\n * @property {string[]} [varname]\n * @property {string[]} [symbol]\n * @property {string[]} [vartype]\n * @property {string[]} [varform]\n * @property {number[]} [vardim]\n * @property {string[]} [units]\n * @property {number[]} [factor]\n * @property {number[]} [first]\n * @property {number[]} [last]\n * @property {number[]} [min]\n * @property {number[]} [max]\n * @property {string[]} [nucleus]\n */\n/**\n * @typedef { Record<string, any> } Spectrum\n * @property {Record<string, number[]>} [data]\n * @property {number} [firstX]\n * @property {number} [lastX]\n * @property {number} [deltaX]\n * @property {number} [yFactor]\n * @property {number} [xFactor]\n * @property {number} [nbPoints]\n */\n/**\n *\n * @typedef {object} Entry\n * @property {Spectrum[]} spectra\n * @property {Ntuples} ntuples\n * @property {object} meta\n * @property {object} tmp\n * @property {string} [title]\n * @property {string} [dataType]\n * @property {string} [dataClass]\n * @property {boolean} [twoD]\n */\n/**\n *\n * @typedef { object } ConvertResult\n * @property { object[] | boolean } profiling\n * @property { string[] } logs\n * @property { object[] } entries\n * @property { Entry[] } flatten\n */\n/**\n * Parse a jcamp.\n *\n * @param {string|ArrayBuffer|Uint8Array} jcamp\n * @param {ConvertOptions} [options]\n * @returns {ConvertResult}\n */\nexport function convert(jcamp, options = {}) {\n    jcamp = ensureString(jcamp);\n    options = { ...defaultOptions, ...options };\n    options.wantXY = !options.withoutXY;\n    options.start = Date.now();\n    let entriesFlat = [];\n    let result = {\n        profiling: options.profiling ? [] : false,\n        logs: [],\n        entries: [],\n    };\n    let tmpResult = { children: [] };\n    let currentEntry = tmpResult;\n    let parentsStack = [];\n    let spectrum = {};\n    if (typeof jcamp !== 'string') {\n        throw new TypeError('the JCAMP should be a string');\n    }\n    profiling(result, 'Before split to LDRS', options);\n    let ldrs = jcamp.replace(/[\\r\\n]+##/g, '\\n##').split('\\n##');\n    profiling(result, 'Split to LDRS', options);\n    if (ldrs[0])\n        ldrs[0] = ldrs[0].replace(/^[\\r\\n ]*##/, '');\n    for (let ldr of ldrs) {\n        // This is a new LDR\n        let position = ldr.indexOf('=');\n        let dataLabel = position > 0 ? ldr.substring(0, position) : ldr;\n        let dataValue = position > 0 ? ldr.substring(position + 1).trim() : '';\n        let canonicDataLabel = dataLabel.replace(/[_ -]/g, '').toUpperCase();\n        if (canonicDataLabel === 'DATATABLE') {\n            let endLine = dataValue.indexOf('\\n');\n            if (endLine === -1)\n                endLine = dataValue.indexOf('\\r');\n            if (endLine > 0) {\n                // ##DATA TABLE= (X++(I..I)), XYDATA\n                // We need to find the variables\n                let infos = dataValue.substring(0, endLine).split(/[ ,;\\t]+/);\n                prepareNtuplesDatatable(currentEntry, spectrum, infos[0]);\n                spectrum.datatable = infos[0];\n                if (infos[1] && infos[1].indexOf('PEAKS') > -1) {\n                    canonicDataLabel = 'PEAKTABLE';\n                }\n                else if (infos[1] &&\n                    (infos[1].indexOf('XYDATA') || infos[0].indexOf('++') > 0)) {\n                    canonicDataLabel = 'XYDATA';\n                    if (spectrum.nbPoints) {\n                        spectrum.deltaX =\n                            (spectrum.lastX - spectrum.firstX) / (spectrum.nbPoints - 1);\n                    }\n                }\n            }\n        }\n        if (canonicDataLabel === 'XYDATA') {\n            if (options.wantXY) {\n                prepareSpectrum(spectrum);\n                // well apparently we should still consider it is a PEAK TABLE if there are no '++' after\n                if (dataValue.match(/.*\\+\\+.*/)) {\n                    // ex: (X++(Y..Y))\n                    if (spectrum.nbPoints) {\n                        spectrum.deltaX =\n                            (spectrum.lastX - spectrum.firstX) / (spectrum.nbPoints - 1);\n                    }\n                    fastParseXYData(spectrum, dataValue, result);\n                }\n                else {\n                    parsePeakTable(spectrum, dataValue, result);\n                }\n                currentEntry.spectra.push(spectrum);\n                spectrum = {};\n            }\n            continue;\n        }\n        else if (canonicDataLabel === 'PEAKTABLE') {\n            if (options.wantXY) {\n                prepareSpectrum(spectrum);\n                parsePeakTable(spectrum, dataValue, result);\n                currentEntry.spectra.push(spectrum);\n                spectrum = {};\n            }\n            continue;\n        }\n        if (canonicDataLabel === 'PEAKASSIGNMENTS') {\n            if (options.wantXY) {\n                if (dataValue.match(/.*(XYA).*/)) {\n                    // ex: (XYA)\n                    parseXYA(spectrum, dataValue);\n                }\n                currentEntry.spectra.push(spectrum);\n                spectrum = {};\n            }\n            continue;\n        }\n        if (canonicDataLabel === 'TITLE') {\n            let parentEntry = currentEntry;\n            if (!parentEntry.children) {\n                parentEntry.children = [];\n            }\n            currentEntry = {\n                spectra: [],\n                ntuples: {},\n                info: {},\n                meta: {},\n                tmp: {}, // tmp information we need to keep for postprocessing\n            };\n            parentEntry.children.push(currentEntry);\n            parentsStack.push(parentEntry);\n            entriesFlat.push(currentEntry);\n            currentEntry.title = dataValue;\n        }\n        else if (canonicDataLabel === 'DATATYPE') {\n            currentEntry.dataType = dataValue;\n            if (dataValue.match(/(^nd|\\snd\\s)/i)) {\n                currentEntry.twoD = true;\n            }\n        }\n        else if (canonicDataLabel === 'NTUPLES') {\n            if (dataValue.match(/(^nd|\\snd\\s)/i)) {\n                currentEntry.twoD = true;\n            }\n        }\n        else if (canonicDataLabel === 'DATACLASS') {\n            currentEntry.dataClass = dataValue;\n        }\n        else if (canonicDataLabel === 'XUNITS') {\n            spectrum.xUnits = dataValue;\n        }\n        else if (canonicDataLabel === 'YUNITS') {\n            spectrum.yUnits = dataValue;\n        }\n        else if (canonicDataLabel === 'FIRSTX') {\n            spectrum.firstX = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'LASTX') {\n            spectrum.lastX = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'FIRSTY') {\n            spectrum.firstY = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'LASTY') {\n            spectrum.lastY = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'NPOINTS') {\n            spectrum.nbPoints = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'XFACTOR') {\n            spectrum.xFactor = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'YFACTOR') {\n            spectrum.yFactor = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'MAXX') {\n            spectrum.maxX = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'MINX') {\n            spectrum.minX = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'MAXY') {\n            spectrum.maxY = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'MINY') {\n            spectrum.minY = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'DELTAX') {\n            spectrum.deltaX = Number(dataValue);\n        }\n        else if (canonicDataLabel === '.OBSERVEFREQUENCY' ||\n            canonicDataLabel === '$SFO1') {\n            if (!spectrum.observeFrequency) {\n                spectrum.observeFrequency = Number(dataValue);\n            }\n        }\n        else if (canonicDataLabel === '.OBSERVENUCLEUS') {\n            if (!spectrum.xType) {\n                currentEntry.xType = dataValue.replace(/[^a-zA-Z0-9]/g, '');\n            }\n        }\n        else if (canonicDataLabel === '$OFFSET') {\n            // OFFSET for Bruker spectra\n            currentEntry.shiftOffsetNum = 0;\n            if (!spectrum.shiftOffsetVal) {\n                spectrum.shiftOffsetVal = Number(dataValue);\n            }\n        }\n        else if (canonicDataLabel === '$REFERENCEPOINT') {\n            // OFFSET for Varian spectra\n            // if we activate this part it does not work for ACD specmanager\n            //         } else if (canonicDataLabel=='.SHIFTREFERENCE') {   // OFFSET FOR Bruker Spectra\n            //                 var parts = dataValue.split(/ *, */);\n            //                 currentEntry.shiftOffsetNum = parseInt(parts[2].trim());\n            //                 spectrum.shiftOffsetVal = Number(parts[3].trim());\n        }\n        else if (canonicDataLabel === 'VARNAME') {\n            currentEntry.ntuples.varname = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'SYMBOL') {\n            currentEntry.ntuples.symbol = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'VARTYPE') {\n            currentEntry.ntuples.vartype = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'VARFORM') {\n            currentEntry.ntuples.varform = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'VARDIM') {\n            currentEntry.ntuples.vardim = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'UNITS') {\n            currentEntry.ntuples.units = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'FACTOR') {\n            currentEntry.ntuples.factor = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'FIRST') {\n            currentEntry.ntuples.first = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'LAST') {\n            currentEntry.ntuples.last = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'MIN') {\n            currentEntry.ntuples.min = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'MAX') {\n            currentEntry.ntuples.max = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === '.NUCLEUS') {\n            if (currentEntry.ntuples) {\n                currentEntry.ntuples.nucleus = dataValue.split(ntuplesSeparatorRegExp);\n            }\n        }\n        else if (canonicDataLabel === 'PAGE') {\n            spectrum.page = dataValue.trim();\n            spectrum.pageValue = Number(dataValue.replace(/^.*=/, ''));\n            spectrum.pageSymbol = spectrum.page.replace(/[=].*/, '');\n        }\n        else if (canonicDataLabel === 'RETENTIONTIME') {\n            spectrum.pageValue = Number(dataValue);\n        }\n        else if (isMSField(canonicDataLabel)) {\n            spectrum[convertMSFieldToLabel(canonicDataLabel)] = dataValue;\n        }\n        else if (canonicDataLabel === 'SAMPLEDESCRIPTION') {\n            spectrum.sampleDescription = dataValue;\n        }\n        else if (canonicDataLabel.startsWith('$NUC')) {\n            if (!currentEntry.tmp[canonicDataLabel] && !dataValue.includes('off')) {\n                currentEntry.tmp[canonicDataLabel] = dataValue.replace(/[<>]/g, '');\n            }\n        }\n        else if (canonicDataLabel === 'END') {\n            currentEntry = parentsStack.pop();\n        }\n        if (currentEntry &&\n            currentEntry.info &&\n            currentEntry.meta &&\n            canonicDataLabel.match(options.keepRecordsRegExp)) {\n            let value = dataValue.trim();\n            let target, label;\n            if (dataLabel.startsWith('$')) {\n                label = options.canonicMetadataLabels\n                    ? canonicDataLabel.substring(1)\n                    : dataLabel.substring(1);\n                target = currentEntry.meta;\n            }\n            else {\n                label = options.canonicDataLabels ? canonicDataLabel : dataLabel;\n                target = currentEntry.info;\n            }\n            if (options.dynamicTyping) {\n                value = parseString(value);\n            }\n            if (target[label]) {\n                if (!Array.isArray(target[label])) {\n                    target[label] = [target[label]];\n                }\n                target[label].push(value);\n            }\n            else {\n                target[label] = value;\n            }\n        }\n    }\n    profiling(result, 'Finished parsing', options);\n    postProcessing(entriesFlat, result, options);\n    profiling(result, 'Total time', options);\n    /*\n    if (result.children && result.children.length>0) {\n      result = { ...result, ...result.children[0] };\n    }\n    */\n    result.entries = tmpResult.children;\n    result.flatten = entriesFlat;\n    return result;\n}\n//# sourceMappingURL=convert.js.map","import atob from 'atob';\nimport { toByteArray } from 'base64-js';\nimport { convert } from 'jcampconverter';\n\nconst common = {};\nexport default common;\ncommon.getBasename = function getBasename(filename) {\n  let base = filename.replace(/.*\\//, '');\n  return base.replace(/\\.[0-9]+$/, '');\n};\n\n/**\n * The reference remove the basedir and the extension\n * @param {*} filename\n * @returns\n */\ncommon.getReference = function getReference(filename) {\n  let base = filename.replace(/.*\\//, '');\n  base = base.replace(/\\.[0-9]+$/, '');\n  return base.replace(/\\..*?$/, '');\n};\n\ncommon.getExtension = function getExtension(filename) {\n  let extension = common.getBasename(filename);\n  return extension.replace(/.*\\./, '').toLowerCase();\n};\n\ncommon.getFilename = function getFilename(typeEntry) {\n  let keys = Object.keys(typeEntry);\n  for (let i = 0; i < keys.length; i++) {\n    if (typeEntry[keys[i]] && typeEntry[keys[i]].filename) {\n      return typeEntry[keys[i]].filename;\n    }\n  }\n  return undefined;\n};\n\ncommon.basenameFind = function basenameFind(typeEntries, filename) {\n  let reference = common.getBasename(filename);\n\n  return typeEntries.find((typeEntry) => {\n    return common.getBasename(common.getFilename(typeEntry)) === reference;\n  });\n};\n\ncommon.referenceFind = function referenceFind(typeEntries, filename) {\n  let reference = common.getReference(filename);\n\n  return typeEntries.find((typeEntry) => {\n    return common.getReference(common.getFilename(typeEntry)) === reference;\n  });\n};\n\ncommon.getTargetProperty = function getTargetProperty(filename) {\n  switch (common.getExtension(filename)) {\n    case 'jdx':\n    case 'dx':\n    case 'jcamp':\n      return 'jcamp';\n    case 'png':\n    case 'jpg':\n    case 'jpeg':\n    case 'tif':\n    case 'tiff':\n    case 'svg':\n      return 'image';\n    case 'mp4':\n    case 'm4a':\n    case 'avi':\n    case 'wav':\n      return 'video';\n    case 'cif':\n      return 'cif';\n    case 'pdb':\n      return 'pdb';\n    case 'xml':\n    case 'mzml':\n    case 'mzxml':\n    case 'mzdata':\n      return 'xml';\n    case 'cdf':\n    case 'nc':\n    case 'netcdf':\n      return 'cdf';\n    case 'pdf':\n      return 'pdf';\n    case 'txt':\n    case 'text':\n    case 'csv':\n    case 'tsv':\n      return 'text';\n    case 'gbk':\n    case 'gb':\n      return 'genbank';\n    default:\n      return 'file';\n  }\n};\n\ncommon.getContent = function getContent(content, target) {\n  switch (target) {\n    case 'text':\n    case 'xml':\n    case 'pdb':\n    case 'jcamp':\n    case 'cif':\n    case 'genbank':\n      return common.getTextContent(content);\n    default:\n      return common.getBufferContent(content);\n  }\n};\n\ncommon.getTextContent = function getTextContent(content) {\n  switch (content.encoding) {\n    case 'base64':\n      return atob(content.content);\n    default:\n      return content.content;\n  }\n};\n\ncommon.getBufferContent = function getBufferContent(content) {\n  switch (content.encoding) {\n    case 'base64':\n      return toByteArray(content.content);\n    default:\n      return content.content;\n  }\n};\n\ncommon.getMetaFromJcamp = function getMetaFromJcamp(filename, content) {\n  const extension = common.getExtension(filename);\n  let metaData = {};\n  if (extension === 'jdx' || extension === 'dx' || extension === 'jcamp') {\n    let textContent = common.getTextContent(content);\n    let parsed = convert(textContent, {\n      withoutXY: true,\n      keepRecordsRegExp: /cheminfo/i,\n    }).flatten[0];\n    if (parsed && parsed.meta && parsed.meta.cheminfo) {\n      try {\n        let cheminfo = JSON.parse(parsed.meta.cheminfo);\n        if (cheminfo.meta) {\n          return cheminfo.meta;\n        }\n      } catch (e) {\n        // eslint-disable-next-line no-console\n        console.trace(e);\n      }\n    }\n  }\n  return metaData;\n};\n","import parseNetCDF from 'netcdf-gcms';\n\nimport common from '../common';\n\nfunction process(filename, content) {\n  const extension = common.getExtension(filename);\n  let metaData = {};\n  if (extension === 'cdf' || extension === 'netcdf') {\n    let bufferContent = common.getBufferContent(content);\n    let parsed = parseNetCDF(bufferContent, { meta: true });\n    if (parsed.series.length === 1) {\n      metaData.detector = parsed.series[0].name;\n    }\n  }\n  return metaData;\n}\n\nexport default {\n  jpath: ['spectra', 'chromatogram'],\n  find: common.referenceFind,\n  getProperty: common.getTargetProperty,\n  process,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'cyclicVoltammetry'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'differentialCentrifugalSedimentation'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'differentialScanningCalorimetry'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'dls'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'elementalAnalysis'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","'use strict';\n\nmodule.exports = [\n  'JAN',\n  'FEB',\n  'MAR',\n  'APR',\n  'MAY',\n  'JUN',\n  'JUL',\n  'AUG',\n  'SEP',\n  'OCT',\n  'NOV',\n  'DEC',\n];\n","/* eslint no-div-regex: 0*/\n/* eslint prefer-named-capture-group: 0 */\n\n'use strict';\n\nconst MONTHS = require('./utils/months');\n\nfunction genbankToJson(sequence) {\n  if (typeof sequence !== 'string') {\n    throw new TypeError('input must be a string');\n  }\n\n  let resultsArray = [];\n  let result;\n  let currentFeatureNote;\n\n  // Genbank specification: https://www.ncbi.nlm.nih.gov/Sitemap/samplerecord.html\n  let genbankAnnotationKey = {\n    // Contains in order: locus name, sequence length, molecule type (e.g. DNA), genbank division (see 1-18 below), modification date\n    // locus definition has changed with time, use accession number for a unique identifier\n    LOCUS_TAG: 'LOCUS',\n    DEFINITION_TAG: 'DEFINITION',\n    // Accession tag\n    // Example: Z78533\n    ACCESSION_TAG: 'ACCESSION',\n    // The version tag contains 2 informations\n    // The accession number with a revision\n    // The GI (GenInfo Identifier), a ncbi sequential number\n    // Example: Z78533.1  GI:2765658\n    // Unicity garanteed with respect to sequence. If 1 nucleotide changes, the version is different.\n    VERSION_TAG: 'VERSION',\n    KEYWORDS_TAG: 'KEYWORDS',\n    // SEGMENT_TAG:\"SEGMENT\"\n    // Source is free text\n    SOURCE_TAG: 'SOURCE',\n    ORGANISM_TAG: 'ORGANISM',\n    REFERENCE_TAG: 'REFERENCE',\n    AUTHORS_TAG: 'AUTHORS',\n    CONSORTIUM_TAG: 'CONSRTM',\n    TITLE_TAG: 'TITLE',\n    // Can be multiple journal tags\n    JOURNAL_TAG: 'JOURNAL',\n    PUBMED_TAG: 'PUBMED',\n    REMARK_TAG: 'REMARK',\n    FEATURES_TAG: 'FEATURES',\n    BASE_COUNT_TAG: 'BASE COUNT',\n    // CONTIG_TAG: \"CONTIG\"\n    ORIGIN_TAG: 'ORIGIN',\n    END_SEQUENCE_TAG: '//',\n  };\n\n  // Genbank divisions\n  //   1. PRI - primate sequences\n  //   2. ROD - rodent sequences\n  //   3. MAM - other mammalian sequences\n  //   4. VRT - other vertebrate sequences\n  //   5. INV - invertebrate sequences\n  //   6. PLN - plant, fungal, and algal sequences\n  //   7. BCT - bacterial sequences\n  //   8. VRL - viral sequences\n  //   9. PHG - bacteriophage sequences\n  // 10. SYN - synthetic sequences\n  // 11. UNA - unannotated sequences\n  // 12. EST - EST sequences (expressed sequence tags)\n  // 13. PAT - patent sequences\n  // 14. STS - STS sequences (sequence tagged sites)\n  // 15. GSS - GSS sequences (genome survey sequences)\n  // 16. HTG - HTG sequences (high-throughput genomic sequences)\n  // 17. HTC - unfinished high-throughput cDNA sequencing\n  // 18. ENV - environmental sampling sequences\n\n  let lines = sequence.split(/\\r?\\n/);\n  let fieldName;\n  let subFieldType;\n  let featureLocationIndentation;\n  let lastLineWasFeaturesTag;\n  let lastLineWasLocation;\n\n  let hasFoundLocus = false;\n\n  for (let line of lines) {\n    if (line === null) break;\n    let lineFieldName = getLineFieldName(line);\n    let val = getLineVal(line);\n    let isSubKey = isSubKeyword(line);\n    let isKey = isKeyword(line);\n\n    if (lineFieldName === genbankAnnotationKey.END_SEQUENCE_TAG || isKey) {\n      fieldName = lineFieldName;\n      subFieldType = null;\n    } else if (isSubKey) {\n      subFieldType = lineFieldName;\n    }\n    // IGNORE LINES: DO NOT EVEN PROCESS\n    if (line.trim() === '' || lineFieldName === ';') {\n      continue;\n    }\n\n    if (!hasFoundLocus && fieldName !== genbankAnnotationKey.LOCUS_TAG) {\n      // 'Genbank files must start with a LOCUS tag so this must not be a genbank'\n      break;\n    }\n\n    switch (fieldName) {\n      case genbankAnnotationKey.LOCUS_TAG:\n        hasFoundLocus = true;\n        parseLocus(line);\n        break;\n      case genbankAnnotationKey.FEATURES_TAG:\n        parseFeatures(line, lineFieldName, val);\n        break;\n      case genbankAnnotationKey.ORIGIN_TAG:\n        parseOrigin(line, lineFieldName);\n        break;\n      case genbankAnnotationKey.DEFINITION_TAG:\n      case genbankAnnotationKey.ACCESSION_TAG:\n      case genbankAnnotationKey.VERSION_TAG:\n      case genbankAnnotationKey.KEYWORDS_TAG:\n        parseMultiLineField(fieldName, line, fieldName.toLowerCase());\n        break;\n      case genbankAnnotationKey.SOURCE_TAG:\n        if (subFieldType === genbankAnnotationKey.ORGANISM_TAG) {\n          parseMultiLineField(subFieldType, line, 'organism');\n        } else {\n          parseMultiLineField(lineFieldName, line, 'source');\n        }\n        break;\n      case genbankAnnotationKey.REFERENCE_TAG:\n        if (lineFieldName === genbankAnnotationKey.REFERENCE_TAG) {\n          const ref = result.references || [];\n          result.references = ref;\n          ref.push({});\n        }\n        parseReference(line, subFieldType);\n        break;\n      case genbankAnnotationKey.END_SEQUENCE_TAG:\n        endSeq();\n        break;\n      default:\n        // Unhandled tag\n        break;\n    }\n  }\n\n  // catch the case where we've successfully started a sequence and parsed it, but endSeq isn't called correctly\n  if (resultsArray[resultsArray.length - 1] !== result) {\n    // current result isn't in resultsArray yet\n    // so we call endSeq here\n    endSeq();\n  }\n  return resultsArray;\n\n  function endSeq() {\n    // do some post processing clean-up\n    postProcessCurSeq();\n    // push the result into the resultsArray\n    resultsArray.push(result);\n  }\n\n  function getCurrentFeature() {\n    return result.features[result.features.length - 1];\n  }\n\n  function postProcessCurSeq() {\n    if (result && result.features) {\n      for (let i = 0; i < result.features.length; i++) {\n        result.features[i] = postProcessGenbankFeature(result.features[i]);\n      }\n    }\n  }\n\n  function parseOrigin(line, key) {\n    if (key !== genbankAnnotationKey.ORIGIN_TAG) {\n      let newLine = line.replace(/[\\s]*[0-9]*/g, '');\n      result.sequence += newLine;\n    }\n  }\n\n  function parseLocus(line) {\n    result = {\n      features: [],\n      name: 'Untitled sequence',\n      sequence: '',\n      references: [],\n    };\n    line = removeFieldName(genbankAnnotationKey.LOCUS_TAG, line);\n    const m = line.match(\n      /^([^\\s]+)\\s+(\\d+)\\s+bp\\s+([^\\s]+)\\s+([^\\s]+)\\s+([^\\s]+)\\s*([^\\s]+)?$/,\n    );\n    let locusName = m[1];\n    let size = +m[2];\n    let moleculeType = m[3];\n    let circular = m[4] === 'circular';\n    const seq = result;\n    let dateStr = '';\n    if (!m[6]) {\n      dateStr = m[5];\n    } else {\n      seq.genbankDivision = m[5];\n      dateStr = m[6];\n    }\n    seq.circular = circular;\n    seq.moleculeType = moleculeType;\n    const dateMatch = dateStr.match(/^(\\d{2})-(.{3})-(\\d{4})$/);\n    const date = new Date();\n    date.setFullYear(+dateMatch[3]);\n    date.setUTCMonth(MONTHS.indexOf(dateMatch[2].toUpperCase()));\n    date.setDate(+dateMatch[1]);\n    date.setUTCHours(12);\n    date.setMinutes(0);\n    date.setSeconds(0);\n    date.setMilliseconds(0);\n    seq.date = date.toISOString();\n    seq.name = locusName;\n    seq.size = size;\n  }\n\n  function removeFieldName(fName, line) {\n    line = line.replace(/^\\s*/, '');\n    if (line.indexOf(fName) === 0) {\n      line = line.replace(fName, '');\n    }\n    return line.trim();\n  }\n\n  function parseReference(line, subType) {\n    const refs = result.references;\n    let lastRef = refs[refs.length - 1];\n    if (!subType) {\n      parseMultiLineField(\n        genbankAnnotationKey.REFERENCE_TAG,\n        line,\n        'description',\n        lastRef,\n      );\n    } else {\n      parseMultiLineField(subType, line, subType.toLowerCase(), lastRef);\n    }\n  }\n\n  function parseFeatures(line, key, val) {\n    let strand;\n    // FOR THE MAIN FEATURES LOCATION/QUALIFIER LINE\n    if (key === genbankAnnotationKey.FEATURES_TAG) {\n      lastLineWasFeaturesTag = true;\n      return;\n    }\n\n    if (lastLineWasFeaturesTag) {\n      // we need to get the indentation of feature locations\n      featureLocationIndentation = getLengthOfWhiteSpaceBeforeStartOfLetters(\n        line,\n      );\n      // set lastLineWasFeaturesTag to false\n      lastLineWasFeaturesTag = false;\n    }\n\n    // FOR LOCATION && QUALIFIER LINES\n    if (isFeatureLineRunon(line, featureLocationIndentation)) {\n      // the line is a continuation of the above line\n      if (lastLineWasLocation) {\n        // the last line was a location, so the run-on line is expected to be a feature location as well\n        parseFeatureLocation(line.trim());\n        lastLineWasLocation = true;\n      } else {\n        // the last line was a note\n        if (currentFeatureNote) {\n          // append to the currentFeatureNote\n          currentFeatureNote[\n            currentFeatureNote.length - 1\n          ] += line.trim().replace(/\"/g, '');\n        }\n        lastLineWasLocation = false;\n      }\n    } else {\n      // New Element/Qualifier lines. Not runon lines.\n      if (isNote(line)) {\n        // is a new Feature Element (e.g. source, CDS) in the form of  \"[\\s] KEY  SEQLOCATION\"\n        // is a FeatureQualifier in the /KEY=\"BLAH\" format; could be multiple per Element\n        // Check that feature did not get skipped for missing location\n        if (getCurrentFeature()) {\n          parseFeatureNote(line);\n          lastLineWasLocation = false;\n        }\n      } else {\n        // the line is a location, so we make a new feature from it\n        if (val.match(/complement/g)) {\n          strand = -1;\n        } else {\n          strand = 1;\n        }\n\n        newFeature();\n        let feat = getCurrentFeature();\n        feat.type = key;\n        feat.strand = strand;\n\n        parseFeatureLocation(val);\n        lastLineWasLocation = true;\n      }\n    }\n  }\n\n  function newFeature() {\n    result.features.push({\n      notes: {},\n    });\n  }\n\n  function isNote(line) {\n    let qual = false;\n    /* if (line.charAt(21) === \"/\") {//T.H. Hard coded method\n           qual = true;\n         }*/\n    if (line.trim().charAt(0).match(/\\//)) {\n      // searches based on looking for / in beginning of line\n      qual = true;\n    } else if (line.match(/^[\\s]*\\/[\\w]+=[\\S]+/)) {\n      // searches based on \"   /key=BLAH\" regex\n      qual = true;\n    }\n    return qual;\n  }\n\n  function parseFeatureLocation(locStr) {\n    locStr = locStr.trim();\n    let locArr = [];\n    locStr.replace(/(\\d+)/g, function (string, match) {\n      locArr.push(match);\n    });\n    let feat = getCurrentFeature();\n    feat.start = +locArr[0];\n    feat.end = locArr[1] === undefined ? +locArr[0] : +locArr[1];\n  }\n\n  function parseFeatureNote(line) {\n    let newLine, lineArr;\n\n    newLine = line.trim();\n    newLine = newLine.replace(/^\\/|\"$/g, '');\n    lineArr = newLine.split(/=\"|=/);\n\n    let val = lineArr[1];\n\n    if (val) {\n      val = val.replace(/\\\\/g, ' ');\n\n      if (line.match(/=\"/g)) {\n        val = val.replace(/\".*/g, '');\n      } else if (val.match(/^\\d+$/g)) {\n        val = +val;\n      }\n    }\n    let key = lineArr[0];\n    let currentNotes = getCurrentFeature().notes;\n    if (currentNotes[key]) {\n      // array already exists, so push value into it\n      currentNotes[key].push(val);\n    } else {\n      // array doesn't exist yet, so create it and populate it with the value\n      currentNotes[key] = [val];\n    }\n    currentFeatureNote = currentNotes[key];\n  }\n\n  function getLineFieldName(line) {\n    let arr;\n    line = line.trim();\n\n    arr = line.split(/[\\s]+/);\n\n    return arr[0];\n  }\n\n  function parseMultiLineField(fName, line, resultKey, r) {\n    r = r || result;\n    let fieldValue = removeFieldName(fName, line);\n    r[resultKey] = r[resultKey] ? `${r[resultKey]} ` : '';\n    r[resultKey] += fieldValue;\n  }\n\n  function getLineVal(line) {\n    let arr;\n\n    if (line.indexOf('=') < 0) {\n      line = line.replace(/^[\\s]*[\\S]+[\\s]+|[\\s]+$/, '');\n      line = line.trim();\n      return line;\n    } else {\n      arr = line.split(/=/);\n      return arr[1];\n    }\n  }\n\n  function isKeyword(line) {\n    let isKey = false;\n    if (line.substr(0, 10).match(/^[\\S]+/)) {\n      isKey = true;\n    }\n    return isKey;\n  }\n\n  function isSubKeyword(line) {\n    let isSubKey = false;\n    if (line.substr(0, 10).match(/^[\\s]+[\\S]+/)) {\n      isSubKey = true;\n    }\n    return isSubKey;\n  }\n\n  function postProcessGenbankFeature(feat) {\n    if (feat.notes.label) {\n      feat.name = feat.notes.label[0];\n    } else if (feat.notes.gene) {\n      feat.name = feat.notes.gene[0];\n    } else if (feat.notes.ApEinfo_label) {\n      feat.name = feat.notes.ApEinfo_label[0];\n    } else if (feat.notes.name) {\n      feat.name = feat.notes.name[0];\n    } else if (feat.notes.organism) {\n      feat.name = feat.notes.organism[0];\n    } else if (feat.notes.locus_tag) {\n      feat.name = feat.notes.locus_tag[0];\n    } else if (feat.notes.note) {\n      feat.name = feat.notes.note[0];\n    } else {\n      feat.name = 'Untitled Feature';\n    }\n    feat.name = typeof feat.name === 'string' ? feat.name : String(feat.name);\n    return feat;\n  }\n}\n\nfunction isFeatureLineRunon(line, featureLocationIndentation) {\n  let indentationOfLine = getLengthOfWhiteSpaceBeforeStartOfLetters(line);\n  if (featureLocationIndentation === indentationOfLine) {\n    // the feature location indentation calculated right after the feature tag\n    // cannot be the same as the indentation of the line\n    //\n    // FEATURES             Location/Qualifiers\n    //     rep_origin      complement(1074..3302)\n    // 01234  <-- this is the indentation we're talking about\n    return false; // the line is NOT a run on\n  }\n\n  let trimmed = line.trim();\n  if (trimmed.charAt(0).match(/\\//)) {\n    // the first char in the trimmed line cannot be a /\n    return false; // the line is NOT a run on\n  }\n  // the line is a run on\n  return true;\n  // run-on line example:\n  // FEATURES             Location/Qualifiers\n  //     rep_origin      complement(1074..3302)\n  //                 /label=pSC101**\n  //                 /note=\"REP_ORIGIN REP_ORIGIN pSC101* aka pMPP6, gives plasm\n  //                 id number 3 -4 copies per cell, BglII site in pSC101* ori h <--run-on line!\n  //                 as been dele ted by quick change agatcT changed to agatcA g <--run-on line!\n  //                 iving pSC101* * pSC101* aka pMPP6, gives plasmid number 3-4 <--run-on line!\n  //                 copies p er cell, BglII site in pSC101* ori has been delet  <--run-on line!\n  //                 ed by quic k change agatcT changed to agatcA giving pSC101* <--run-on line!\n  //                 * [pBbS0a-RFP]\"                                             <--run-on line!\n  //                 /gene=\"SC101** Ori\"\n  //                 /note=\"pSC101* aka pMPP6, gives plasmid number 3-4 copies p\n  //                 er cell, BglII site in pSC101* ori has been deleted by qui\n  //                 c k change agatcT changed to agatcA giving pSC101**\"\n  //                 /vntifkey=\"33\"\n}\n\nfunction getLengthOfWhiteSpaceBeforeStartOfLetters(string) {\n  let match = /^\\s*/.exec(string);\n  if (match !== null) {\n    return match[0].length;\n  } else {\n    return 0;\n  }\n}\n\nmodule.exports = genbankToJson;\n","import genbankParser from 'genbank-parser';\n\nimport common from '../common';\n\nexport default {\n  find(genbank, filename) {\n    let reference = common.getBasename(filename);\n\n    return genbank.find((genbank) => {\n      return common.getBasename(common.getFilename(genbank)) === reference;\n    });\n  },\n\n  getProperty(filename) {\n    return common.getTargetProperty(filename);\n  },\n\n  process(filename, content) {\n    let textContent = common.getTextContent(content);\n    let toReturn;\n    const parsed = genbankParser(textContent);\n    toReturn = {\n      seq: parsed.map((p) => p.parsedSequence),\n    };\n    return toReturn;\n  },\n\n  jpath: ['biology', 'nucleic'],\n};\n","export default {\n  jpath: ['general'],\n  getEmpty() {\n    return {\n      description: '',\n      title: '',\n      name: [],\n      mf: '',\n      molfile: '',\n      mw: 0,\n      keyword: [],\n      meta: {},\n      sequence: '',\n      kind: '',\n    };\n  },\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'hgPorosimetry'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'icp'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['image'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'ir'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'isotherm'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'iv'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'mass'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","/* eslint-disable camelcase */\nexport const impurities = {\n  cdcl3: {\n    tms: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 0,\n      },\n    ],\n    solvent: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: 'ds',\n        shift: 7.26,\n      },\n    ],\n    h2o: [\n      {\n        proton: 'H2O',\n        coupling: 0,\n        multiplicity: 'bs',\n        shift: 1.56,\n      },\n    ],\n    acetic_acid: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.1,\n      },\n    ],\n    acetone: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.17,\n      },\n    ],\n    acetonitrile: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.1,\n      },\n    ],\n    benzene: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.36,\n      },\n    ],\n    'tert-butyl_alcohol': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.28,\n      },\n    ],\n    'tert-butyl_methyl_ether': [\n      {\n        proton: 'CCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.19,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.22,\n      },\n    ],\n    bhtb: [\n      {\n        proton: 'ArH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 6.98,\n      },\n      {\n        proton: 'OHc',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 5.01,\n      },\n      {\n        proton: 'ArCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.27,\n      },\n      {\n        proton: 'ArC(CH3)3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.43,\n      },\n    ],\n    chloroform: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.26,\n      },\n    ],\n    cyclohexane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.43,\n      },\n    ],\n    '1,2-dichloroethane': [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.73,\n      },\n    ],\n    dichloromethane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 5.3,\n      },\n    ],\n    diethyl_ether: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.21,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.48,\n      },\n    ],\n    diglyme: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.65,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.57,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.39,\n      },\n    ],\n    '1,2-dimethoxyethane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.4,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.55,\n      },\n    ],\n    dimethylacetamide: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.09,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.02,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.94,\n      },\n    ],\n    dimethylformamide: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 8.02,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.96,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.88,\n      },\n    ],\n    dimethyl_sulfoxide: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.62,\n      },\n    ],\n    dioxane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.71,\n      },\n    ],\n    ethanol: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.25,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.72,\n      },\n      {\n        proton: 'OH',\n        coupling: 5,\n        multiplicity: 's,t',\n        shift: 1.32,\n      },\n    ],\n    ethyl_acetate: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.05,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 4.12,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.26,\n      },\n    ],\n    ethyl_methyl_ketone: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.14,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.46,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.06,\n      },\n    ],\n    ethylene_glycol: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.76,\n      },\n    ],\n    'grease^f': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 0.86,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'br_s',\n        shift: 1.26,\n      },\n    ],\n    'n-hexane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 't',\n        shift: 0.88,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.26,\n      },\n    ],\n    hmpag: [\n      {\n        proton: 'CH3',\n        coupling: 9.5,\n        multiplicity: 'd',\n        shift: 2.65,\n      },\n    ],\n    methanol: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.49,\n      },\n      {\n        proton: 'OH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.09,\n      },\n    ],\n    nitromethane: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.33,\n      },\n    ],\n    'n-pentane': [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 7,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.27,\n      },\n    ],\n    '2-propanol': [\n      {\n        proton: 'CH3',\n        coupling: 6,\n        multiplicity: 'd',\n        shift: 1.22,\n      },\n      {\n        proton: 'CH',\n        coupling: 6,\n        multiplicity: 'sep',\n        shift: 4.04,\n      },\n    ],\n    pyridine: [\n      {\n        proton: 'CH(2)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 8.62,\n      },\n      {\n        proton: 'CH(3)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.29,\n      },\n      {\n        proton: 'CH(4)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.68,\n      },\n    ],\n    silicone_greasei: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 0.07,\n      },\n    ],\n    tetrahydrofuran: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.85,\n      },\n      {\n        proton: 'CH2O',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.76,\n      },\n    ],\n    toluene: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.36,\n      },\n      {\n        proton: 'CH(o/p)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.17,\n      },\n      {\n        proton: 'CH(m)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.25,\n      },\n    ],\n    triethylamine: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.03,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.53,\n      },\n    ],\n  },\n  '(cd3)2co': {\n    tms: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 0,\n      },\n    ],\n    solvent: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 2.05,\n      },\n    ],\n    h2o: [\n      {\n        proton: 'H2O',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.84,\n      },\n    ],\n    acetic_acid: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.96,\n      },\n    ],\n    acetone: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.09,\n      },\n    ],\n    acetonitrile: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.05,\n      },\n    ],\n    benzene: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.36,\n      },\n    ],\n    'tert-butyl_alcohol': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.18,\n      },\n    ],\n    'tert-butyl_methyl_ether': [\n      {\n        proton: 'CCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.13,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.13,\n      },\n    ],\n    bhtb: [\n      {\n        proton: 'ArH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 6.96,\n      },\n      {\n        proton: 'ArCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.22,\n      },\n      {\n        proton: 'ArC(CH3)3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.41,\n      },\n    ],\n    chloroform: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 8.02,\n      },\n    ],\n    cyclohexane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.43,\n      },\n    ],\n    '1,2-dichloroethane': [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.87,\n      },\n    ],\n    dichloromethane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 5.63,\n      },\n    ],\n    diethyl_ether: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.11,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.41,\n      },\n    ],\n    diglyme: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.56,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.47,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.28,\n      },\n    ],\n    '1,2-dimethoxyethane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.28,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.46,\n      },\n    ],\n    dimethylacetamide: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.97,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.83,\n      },\n    ],\n    dimethylformamide: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.96,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.94,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.78,\n      },\n    ],\n    dimethyl_sulfoxide: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.52,\n      },\n    ],\n    dioxane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.59,\n      },\n    ],\n    ethanol: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.12,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.57,\n      },\n      {\n        proton: 'OH',\n        coupling: 5,\n        multiplicity: 's,t',\n        shift: 3.39,\n      },\n    ],\n    ethyl_acetate: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.97,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 4.05,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.2,\n      },\n    ],\n    ethyl_methyl_ketone: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.07,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.45,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.96,\n      },\n    ],\n    ethylene_glycol: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.28,\n      },\n    ],\n    'grease^f': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 0.87,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'br_s',\n        shift: 1.29,\n      },\n    ],\n    'n-hexane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 't',\n        shift: 0.88,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.28,\n      },\n    ],\n    hmpag: [\n      {\n        proton: 'CH3',\n        coupling: 9.5,\n        multiplicity: 'd',\n        shift: 2.59,\n      },\n    ],\n    methanol: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.31,\n      },\n      {\n        proton: 'OH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.12,\n      },\n    ],\n    nitromethane: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.43,\n      },\n    ],\n    'n-pentane': [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.88,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.27,\n      },\n    ],\n    '2-propanol': [\n      {\n        proton: 'CH3',\n        coupling: 6,\n        multiplicity: 'd',\n        shift: 1.1,\n      },\n      {\n        proton: 'CH',\n        coupling: 6,\n        multiplicity: 'sep',\n        shift: 3.9,\n      },\n    ],\n    pyridine: [\n      {\n        proton: 'CH(2)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 8.58,\n      },\n      {\n        proton: 'CH(3)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.35,\n      },\n      {\n        proton: 'CH(4)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.76,\n      },\n    ],\n    silicone_greasei: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 0.13,\n      },\n    ],\n    tetrahydrofuran: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.79,\n      },\n      {\n        proton: 'CH2O',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.63,\n      },\n    ],\n    toluene: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.32,\n      },\n      {\n        proton: 'CH(o/p)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.5,\n      },\n      {\n        proton: 'CH(m)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.5,\n      },\n    ],\n    triethylamine: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.96,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.45,\n      },\n    ],\n  },\n  dmso: {\n    tms: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 0,\n      },\n    ],\n    solvent: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: 'quint',\n        shift: 2.5,\n      },\n    ],\n    h2o: [\n      {\n        proton: 'H2O',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.33,\n      },\n    ],\n    acetic_acid: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.91,\n      },\n    ],\n    acetone: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.09,\n      },\n    ],\n    acetonitrile: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.07,\n      },\n    ],\n    benzene: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.37,\n      },\n    ],\n    'tert-butyl_alcohol': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.11,\n      },\n      {\n        proton: 'OHc',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.19,\n      },\n    ],\n    'tert-butyl_methyl_ether': [\n      {\n        proton: 'CCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.11,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.08,\n      },\n    ],\n    bhtb: [\n      {\n        proton: 'ArH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 6.87,\n      },\n      {\n        proton: 'OHc',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 6.65,\n      },\n      {\n        proton: 'ArCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.18,\n      },\n      {\n        proton: 'ArC(CH3)3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.36,\n      },\n    ],\n    chloroform: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 8.32,\n      },\n    ],\n    cyclohexane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.4,\n      },\n    ],\n    '1,2-dichloroethane': [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.9,\n      },\n    ],\n    dichloromethane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 5.76,\n      },\n    ],\n    diethyl_ether: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.09,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.38,\n      },\n    ],\n    diglyme: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.51,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.38,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.24,\n      },\n    ],\n    '1,2-dimethoxyethane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.24,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.43,\n      },\n    ],\n    dimethylacetamide: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.96,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.94,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.78,\n      },\n    ],\n    dimethylformamide: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.95,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.89,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.73,\n      },\n    ],\n    dimethyl_sulfoxide: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.54,\n      },\n    ],\n    dioxane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.57,\n      },\n    ],\n    ethanol: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.06,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.44,\n      },\n      {\n        proton: 'OH',\n        coupling: 5,\n        multiplicity: 's,t',\n        shift: 4.63,\n      },\n    ],\n    ethyl_acetate: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.99,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 4.03,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.17,\n      },\n    ],\n    ethyl_methyl_ketone: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.07,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.43,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.91,\n      },\n    ],\n    ethylene_glycol: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.34,\n      },\n    ],\n    'grease^f': [],\n    'n-hexane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 't',\n        shift: 0.86,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.25,\n      },\n    ],\n    hmpag: [\n      {\n        proton: 'CH3',\n        coupling: 9.5,\n        multiplicity: 'd',\n        shift: 2.53,\n      },\n    ],\n    methanol: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.16,\n      },\n      {\n        proton: 'OH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.01,\n      },\n    ],\n    nitromethane: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.42,\n      },\n    ],\n    'n-pentane': [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.88,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.27,\n      },\n    ],\n    '2-propanol': [\n      {\n        proton: 'CH3',\n        coupling: 6,\n        multiplicity: 'd',\n        shift: 1.04,\n      },\n      {\n        proton: 'CH',\n        coupling: 6,\n        multiplicity: 'sep',\n        shift: 3.78,\n      },\n    ],\n    pyridine: [\n      {\n        proton: 'CH(2)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 8.58,\n      },\n      {\n        proton: 'CH(3)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.39,\n      },\n      {\n        proton: 'CH(4)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.79,\n      },\n    ],\n    silicone_greasei: [],\n    tetrahydrofuran: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.76,\n      },\n      {\n        proton: 'CH2O',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.6,\n      },\n    ],\n    toluene: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.3,\n      },\n      {\n        proton: 'CH(o/p)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.18,\n      },\n      {\n        proton: 'CH(m)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.25,\n      },\n    ],\n    triethylamine: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.93,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.43,\n      },\n    ],\n  },\n  c6d6: {\n    tms: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 0,\n      },\n    ],\n    solvent: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 7.16,\n      },\n    ],\n    h2o: [\n      {\n        proton: 'H2O',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 0.4,\n      },\n    ],\n    acetic_acid: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.55,\n      },\n    ],\n    acetone: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.55,\n      },\n    ],\n    acetonitrile: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.55,\n      },\n    ],\n    benzene: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.15,\n      },\n    ],\n    'tert-butyl_alcohol': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.05,\n      },\n      {\n        proton: 'OHc',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.55,\n      },\n    ],\n    'tert-butyl_methyl_ether': [\n      {\n        proton: 'CCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.07,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.04,\n      },\n    ],\n    bhtb: [\n      {\n        proton: 'ArH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.05,\n      },\n      {\n        proton: 'OHc',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.79,\n      },\n      {\n        proton: 'ArCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.24,\n      },\n      {\n        proton: 'ArC(CH3)3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.38,\n      },\n    ],\n    chloroform: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 6.15,\n      },\n    ],\n    cyclohexane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.4,\n      },\n    ],\n    '1,2-dichloroethane': [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.9,\n      },\n    ],\n    dichloromethane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.27,\n      },\n    ],\n    diethyl_ether: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.11,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.26,\n      },\n    ],\n    diglyme: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.46,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.34,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.11,\n      },\n    ],\n    '1,2-dimethoxyethane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.12,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.33,\n      },\n    ],\n    dimethylacetamide: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.6,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.57,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.05,\n      },\n    ],\n    dimethylformamide: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.63,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.36,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.86,\n      },\n    ],\n    dimethyl_sulfoxide: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.68,\n      },\n    ],\n    dioxane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.35,\n      },\n    ],\n    ethanol: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.96,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.34,\n      },\n    ],\n    ethyl_acetate: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.65,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.89,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.92,\n      },\n    ],\n    ethyl_methyl_ketone: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.58,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 1.81,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.85,\n      },\n    ],\n    ethylene_glycol: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.41,\n      },\n    ],\n    'grease^f': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 0.92,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'br_s',\n        shift: 1.36,\n      },\n    ],\n    'n-hexane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 't',\n        shift: 0.89,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.24,\n      },\n    ],\n    hmpag: [\n      {\n        proton: 'CH3',\n        coupling: 9.5,\n        multiplicity: 'd',\n        shift: 2.4,\n      },\n    ],\n    methanol: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.07,\n      },\n    ],\n    nitromethane: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.94,\n      },\n    ],\n    'n-pentane': [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.86,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.23,\n      },\n    ],\n    '2-propanol': [\n      {\n        proton: 'CH3',\n        coupling: 6,\n        multiplicity: 'd',\n        shift: 0.95,\n      },\n      {\n        proton: 'CH',\n        coupling: 6,\n        multiplicity: 'sep',\n        shift: 3.67,\n      },\n    ],\n    pyridine: [\n      {\n        proton: 'CH(2)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 8.53,\n      },\n      {\n        proton: 'CH(3)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 6.66,\n      },\n      {\n        proton: 'CH(4)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 6.98,\n      },\n    ],\n    silicone_greasei: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 0.29,\n      },\n    ],\n    tetrahydrofuran: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.4,\n      },\n      {\n        proton: 'CH2O',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.57,\n      },\n    ],\n    toluene: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.11,\n      },\n      {\n        proton: 'CH(o/p)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.02,\n      },\n      {\n        proton: 'CH(m)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.13,\n      },\n    ],\n    triethylamine: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.96,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.4,\n      },\n    ],\n  },\n  cd3cn: {\n    tms: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 0,\n      },\n    ],\n    solvent: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 1.94,\n      },\n    ],\n    h2o: [\n      {\n        proton: 'H2O',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.13,\n      },\n    ],\n    acetic_acid: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.96,\n      },\n    ],\n    acetone: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.08,\n      },\n    ],\n    acetonitrile: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.96,\n      },\n    ],\n    benzene: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.37,\n      },\n    ],\n    'tert-butyl_alcohol': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.16,\n      },\n      {\n        proton: 'OHc',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.18,\n      },\n    ],\n    'tert-butyl_methyl_ether': [\n      {\n        proton: 'CCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.14,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.13,\n      },\n    ],\n    bhtb: [\n      {\n        proton: 'ArH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 6.97,\n      },\n      {\n        proton: 'OHc',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 5.2,\n      },\n      {\n        proton: 'ArCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.22,\n      },\n      {\n        proton: 'ArC(CH3)3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.39,\n      },\n    ],\n    chloroform: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.58,\n      },\n    ],\n    cyclohexane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.44,\n      },\n    ],\n    '1,2-dichloroethane': [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.81,\n      },\n    ],\n    dichloromethane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 5.44,\n      },\n    ],\n    diethyl_ether: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.12,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.42,\n      },\n    ],\n    diglyme: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.53,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.45,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.29,\n      },\n    ],\n    '1,2-dimethoxyethane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.28,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.45,\n      },\n    ],\n    dimethylacetamide: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.97,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.96,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.83,\n      },\n    ],\n    dimethylformamide: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.92,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.89,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.77,\n      },\n    ],\n    dimethyl_sulfoxide: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.5,\n      },\n    ],\n    dioxane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.6,\n      },\n    ],\n    ethanol: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.12,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.54,\n      },\n      {\n        proton: 'OH',\n        coupling: 5,\n        multiplicity: 's,t',\n        shift: 2.47,\n      },\n    ],\n    ethyl_acetate: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.97,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 4.06,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.2,\n      },\n    ],\n    ethyl_methyl_ketone: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.06,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.43,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.96,\n      },\n    ],\n    ethylene_glycol: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.51,\n      },\n    ],\n    'grease^f': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 0.86,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'br_s',\n        shift: 1.27,\n      },\n    ],\n    'n-hexane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 't',\n        shift: 0.89,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.28,\n      },\n    ],\n    hmpag: [\n      {\n        proton: 'CH3',\n        coupling: 9.5,\n        multiplicity: 'd',\n        shift: 2.57,\n      },\n    ],\n    methanol: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.28,\n      },\n      {\n        proton: 'OH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.16,\n      },\n    ],\n    nitromethane: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.31,\n      },\n    ],\n    'n-pentane': [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.87,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.29,\n      },\n    ],\n    '2-propanol': [\n      {\n        proton: 'CH3',\n        coupling: 6,\n        multiplicity: 'd',\n        shift: 1.09,\n      },\n      {\n        proton: 'CH',\n        coupling: 6,\n        multiplicity: 'sep',\n        shift: 3.87,\n      },\n    ],\n    pyridine: [\n      {\n        proton: 'CH(2)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 8.57,\n      },\n      {\n        proton: 'CH(3)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.33,\n      },\n      {\n        proton: 'CH(4)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.73,\n      },\n    ],\n    silicone_greasei: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 0.08,\n      },\n    ],\n    tetrahydrofuran: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.8,\n      },\n      {\n        proton: 'CH2O',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.64,\n      },\n    ],\n    toluene: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.33,\n      },\n      {\n        proton: 'CH(o/p)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.2,\n      },\n      {\n        proton: 'CH(m)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.2,\n      },\n    ],\n    triethylamine: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.96,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.45,\n      },\n    ],\n  },\n  cd3od: {\n    tms: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 0,\n      },\n    ],\n    solvent: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 3.31,\n      },\n    ],\n    h2o: [\n      {\n        proton: 'H2O',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.87,\n      },\n    ],\n    acetic_acid: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.99,\n      },\n    ],\n    acetone: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.15,\n      },\n    ],\n    acetonitrile: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.03,\n      },\n    ],\n    benzene: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.33,\n      },\n    ],\n    'tert-butyl_alcohol': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.4,\n      },\n    ],\n    'tert-butyl_methyl_ether': [\n      {\n        proton: 'CCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.15,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.2,\n      },\n    ],\n    bhtb: [\n      {\n        proton: 'ArH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 6.92,\n      },\n      {\n        proton: 'ArCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.21,\n      },\n      {\n        proton: 'ArC(CH3)3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.4,\n      },\n    ],\n    chloroform: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.9,\n      },\n    ],\n    cyclohexane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.45,\n      },\n    ],\n    '1,2-dichloroethane': [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.78,\n      },\n    ],\n    dichloromethane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 5.49,\n      },\n    ],\n    diethyl_ether: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.18,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.49,\n      },\n    ],\n    diglyme: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.61,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.58,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.35,\n      },\n    ],\n    '1,2-dimethoxyethane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.35,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.52,\n      },\n    ],\n    dimethylacetamide: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.07,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.31,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.92,\n      },\n    ],\n    dimethylformamide: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.97,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.99,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.86,\n      },\n    ],\n    dimethyl_sulfoxide: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.65,\n      },\n    ],\n    dioxane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.66,\n      },\n    ],\n    ethanol: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.19,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.6,\n      },\n    ],\n    ethyl_acetate: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.01,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 4.09,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.24,\n      },\n    ],\n    ethyl_methyl_ketone: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.12,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.5,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.01,\n      },\n    ],\n    ethylene_glycol: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.59,\n      },\n    ],\n    'grease^f': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 0.88,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'br_s',\n        shift: 1.29,\n      },\n    ],\n    'n-hexane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 't',\n        shift: 0.9,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.29,\n      },\n    ],\n    hmpag: [\n      {\n        proton: 'CH3',\n        coupling: 9.5,\n        multiplicity: 'd',\n        shift: 2.64,\n      },\n    ],\n    methanol: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.34,\n      },\n    ],\n    nitromethane: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.34,\n      },\n    ],\n    'n-pentane': [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.89,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.29,\n      },\n    ],\n    '2-propanol': [\n      {\n        proton: 'CH3',\n        coupling: 6,\n        multiplicity: 'd',\n        shift: 1.5,\n      },\n      {\n        proton: 'CH',\n        coupling: 6,\n        multiplicity: 'sep',\n        shift: 3.92,\n      },\n    ],\n    pyridine: [\n      {\n        proton: 'CH(2)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 8.53,\n      },\n      {\n        proton: 'CH(3)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.44,\n      },\n      {\n        proton: 'CH(4)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.85,\n      },\n    ],\n    silicone_greasei: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 0.1,\n      },\n    ],\n    tetrahydrofuran: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.87,\n      },\n      {\n        proton: 'CH2O',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.71,\n      },\n    ],\n    toluene: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.32,\n      },\n      {\n        proton: 'CH(o/p)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.16,\n      },\n      {\n        proton: 'CH(m)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.16,\n      },\n    ],\n    triethylamine: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.05,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.58,\n      },\n    ],\n  },\n  d2o: {\n    tms: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 0,\n      },\n    ],\n    solvent: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 4.79,\n      },\n    ],\n    h2o: [],\n    acetic_acid: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.08,\n      },\n    ],\n    acetone: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.22,\n      },\n    ],\n    acetonitrile: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.06,\n      },\n    ],\n    benzene: [],\n    'tert-butyl_alcohol': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.24,\n      },\n    ],\n    'tert-butyl_methyl_ether': [\n      {\n        proton: 'CCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.21,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.22,\n      },\n    ],\n    bhtb: [],\n    chloroform: [],\n    cyclohexane: [],\n    '1,2-dichloroethane': [],\n    dichloromethane: [],\n    diethyl_ether: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.17,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.56,\n      },\n    ],\n    diglyme: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.67,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.61,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.37,\n      },\n    ],\n    '1,2-dimethoxyethane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.37,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.6,\n      },\n    ],\n    dimethylacetamide: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.08,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.06,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.9,\n      },\n    ],\n    dimethylformamide: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.92,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.01,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.85,\n      },\n    ],\n    dimethyl_sulfoxide: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.71,\n      },\n    ],\n    dioxane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.75,\n      },\n    ],\n    ethanol: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.17,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.65,\n      },\n    ],\n    ethyl_acetate: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.07,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 4.14,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.24,\n      },\n    ],\n    ethyl_methyl_ketone: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.19,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.18,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.26,\n      },\n    ],\n    ethylene_glycol: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.65,\n      },\n    ],\n    'grease^f': [],\n    'n-hexane': [],\n    hmpag: [\n      {\n        proton: 'CH3',\n        coupling: 9.5,\n        multiplicity: 'd',\n        shift: 2.61,\n      },\n    ],\n    methanol: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.34,\n      },\n    ],\n    nitromethane: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.4,\n      },\n    ],\n    'n-pentane': [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.9,\n      },\n    ],\n    '2-propanol': [\n      {\n        proton: 'CH3',\n        coupling: 6,\n        multiplicity: 'd',\n        shift: 1.17,\n      },\n      {\n        proton: 'CH',\n        coupling: 6,\n        multiplicity: 'sep',\n        shift: 4.02,\n      },\n    ],\n    pyridine: [\n      {\n        proton: 'CH(2)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 8.52,\n      },\n      {\n        proton: 'CH(3)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.45,\n      },\n      {\n        proton: 'CH(4)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.87,\n      },\n    ],\n    silicone_greasei: [],\n    tetrahydrofuran: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.88,\n      },\n      {\n        proton: 'CH2O',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.74,\n      },\n    ],\n    toluene: [],\n    triethylamine: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.99,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.57,\n      },\n    ],\n  },\n};\n","import { impurities } from '../constants/impurities';\n\nconst toCheck = ['solvent', 'H2O', 'TMS'];\n\n/**\n * Try to remove peaks of impurities.\n * @param {array} peakList - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n * @param {object} [options={}] - options\n * @param {string} [options.solvent=''] - solvent name.\n * @param {string} [options.error=0.025] - tolerance in ppm to assign a impurity.\n */\n\nexport function peaksFilterImpurities(peakList, options = {}) {\n  let { solvent = '', error = 0.025, remove = false } = options;\n  solvent = solvent.toLowerCase();\n  if (solvent === '(cd3)2so') solvent = 'dmso';\n  if (solvent === 'meod') solvent = 'cd3od';\n  let solventImpurities = impurities[solvent];\n  if (solventImpurities) {\n    for (let impurity of toCheck) {\n      let name = impurity.toLowerCase();\n      let impurityShifts = solventImpurities[name];\n      checkImpurity(peakList, impurityShifts, {\n        error,\n        remove,\n        name,\n      });\n    }\n  }\n  return peakList;\n}\n\nfunction checkImpurity(peakList, impurity, options) {\n  let { name, error, remove } = options;\n  let j, tolerance, difference;\n  let i = impurity.length;\n  while (i--) {\n    j = peakList.length;\n    while (j--) {\n      if (!peakList[j].asymmetric) {\n        tolerance = error + peakList[j].width;\n        difference = Math.abs(impurity[i].shift - peakList[j].x);\n        if (difference < tolerance) {\n          // && (impurity[i].multiplicity === '' || (impurity[i].multiplicity.indexOf(peakList[j].multiplicity)) { // some impurities has multiplicities like 'bs' but at presents it is unsupported\n          if (remove) {\n            peakList.splice(j, 1);\n          } else {\n            peakList[j].kind = name;\n          }\n        }\n      }\n    }\n  }\n}\n","export const GAUSSIAN_EXP_FACTOR = -4 * Math.LN2;\nexport const ROOT_PI_OVER_LN2 = Math.sqrt(Math.PI / Math.LN2);\nexport const ROOT_THREE = Math.sqrt(3);\nexport const ROOT_2LN2 = Math.sqrt(2 * Math.LN2);\nexport const ROOT_2LN2_MINUS_ONE = Math.sqrt(2 * Math.LN2) - 1;\n//# sourceMappingURL=constants.js.map","// https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n// This code yields to a good approximation\n// If needed a better implementation using polynomial can be found on https://en.wikipedia.org/wiki/Error_function#Inverse_functions\nexport default function erfinv(x) {\n    let a = 0.147;\n    if (x === 0)\n        return 0;\n    let ln1MinusXSqrd = Math.log(1 - x * x);\n    let lnEtcBy2Plus2 = ln1MinusXSqrd / 2 + 2 / (Math.PI * a);\n    let firstSqrt = Math.sqrt(lnEtcBy2Plus2 ** 2 - ln1MinusXSqrd / a);\n    let secondSqrt = Math.sqrt(firstSqrt - lnEtcBy2Plus2);\n    return secondSqrt * (x > 0 ? 1 : -1);\n}\n//# sourceMappingURL=erfinv.js.map","export class Shape1D {\n}\n//# sourceMappingURL=Shape1D.js.map","import { ROOT_2LN2, GAUSSIAN_EXP_FACTOR, ROOT_PI_OVER_LN2, } from '../../../util/constants';\nimport erfinv from '../../../util/erfinv';\nimport { Shape1D } from '../Shape1D';\nexport class Gaussian extends Shape1D {\n    constructor(options = {}) {\n        super();\n        const { fwhm = 500, sd, height } = options;\n        this.fwhm = sd ? widthToFWHM(2 * sd) : fwhm;\n        this.height =\n            height === undefined\n                ? Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI) / this.fwhm\n                : height;\n    }\n    fwhmToWidth(fwhm = this.fwhm) {\n        return fwhmToWidth(fwhm);\n    }\n    widthToFWHM(width) {\n        return widthToFWHM(width);\n    }\n    fct(x) {\n        return fct(x, this.fwhm);\n    }\n    getArea() {\n        return getArea({ fwhm: this.fwhm, height: this.height });\n    }\n    getFactor(area) {\n        return getFactor(area);\n    }\n    getData(options = {}) {\n        const { length, factor } = options;\n        return getData({ fwhm: this.fwhm, height: this.height, factor, length });\n    }\n}\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @returns - the y value of gaussian with the current parameters.\n */\nexport function fct(x, fwhm) {\n    return Math.exp(GAUSSIAN_EXP_FACTOR * Math.pow(x / fwhm, 2));\n}\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n * for more information check the [mathworld page](https://mathworld.wolfram.com/GaussianFunction.html)\n * @returns fwhm\n */\nexport function widthToFWHM(width) {\n    return width * ROOT_2LN2;\n}\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * for more information check the [mathworld page](https://mathworld.wolfram.com/GaussianFunction.html)\n * @param fwhm - Full Width at Half Maximum.\n * @returns width\n */\nexport function fwhmToWidth(fwhm) {\n    return fwhm / ROOT_2LN2;\n}\n/**\n * Calculate the area of a specific shape.\n * @returns returns the area of the specific shape and parameters.\n */\nexport function getArea(options) {\n    let { fwhm, sd, height = 1 } = options;\n    if (sd)\n        fwhm = widthToFWHM(2 * sd);\n    if (fwhm === undefined) {\n        throw new Error('should pass fwhm or sd parameters');\n    }\n    return (height * ROOT_PI_OVER_LN2 * fwhm) / 2;\n}\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage.\n * @param [area=0.9999] Expected area to be covered.\n * @returns\n */\nexport function getFactor(area = 0.9999) {\n    return Math.sqrt(2) * erfinv(area);\n}\n/**\n * Calculate intensity array of a gaussian shape.\n * @returns {Float64Array} Intensity values.\n */\nexport function getData(options = {}) {\n    let { length, factor = getFactor(), fwhm = 500, sd, height } = options;\n    if (sd)\n        fwhm = widthToFWHM(2 * sd);\n    if (!height) {\n        height = Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI) / fwhm;\n    }\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = fct(i - center, fwhm) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n}\n//# sourceMappingURL=Gaussian.js.map","import { ROOT_THREE } from '../../../util/constants';\nimport { Shape1D } from '../Shape1D';\nexport class Lorentzian extends Shape1D {\n    constructor(options = {}) {\n        super();\n        const { fwhm = 500, height } = options;\n        this.fwhm = fwhm;\n        this.height = height === undefined ? 2 / Math.PI / fwhm : height;\n    }\n    fwhmToWidth(fwhm = this.fwhm) {\n        return fwhmToWidth(fwhm);\n    }\n    widthToFWHM(width) {\n        return widthToFWHM(width);\n    }\n    fct(x) {\n        return fct(x, this.fwhm);\n    }\n    getArea() {\n        return getArea({ fwhm: this.fwhm, height: this.height });\n    }\n    getFactor(area) {\n        return getFactor(area);\n    }\n    getData(options = {}) {\n        const { length, factor } = options;\n        return getData({ fwhm: this.fwhm, height: this.height, factor, length });\n    }\n}\n/**\n * Return a parameterized function of a lorentzian shape (see README for equation).\n * @param x - x value to calculate.\n * @param fwhm - full width half maximum\n * @returns - the y value of lorentzian with the current parameters.\n */\nexport function fct(x, fwhm) {\n    return Math.pow(fwhm, 2) / (4 * Math.pow(x, 2) + Math.pow(fwhm, 2));\n}\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n * for more information check the [mathworld page](https://mathworld.wolfram.com/LorentzianFunction.html)\n * @param width - Width between the inflection points\n * @returns fwhm\n */\nexport function widthToFWHM(width) {\n    return width * ROOT_THREE;\n}\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * for more information check the [mathworld page](https://mathworld.wolfram.com/LorentzianFunction.html)\n * @param fwhm - Full Width at Half Maximum.\n * @returns width\n */\nexport function fwhmToWidth(fwhm) {\n    return fwhm / ROOT_THREE;\n}\n/**\n * Calculate the area of a specific shape.\n * @returns returns the area of the specific shape and parameters.\n */\nexport function getArea(options) {\n    const { fwhm, height = 1 } = options;\n    if (fwhm === undefined) {\n        throw new Error('should pass fwhm or sd parameters');\n    }\n    return (height * Math.PI * fwhm) / 2;\n}\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage.\n * @param [area=0.9999] Expected area to be covered.\n * @returns\n */\nexport function getFactor(area = 0.9999) {\n    return 2 * Math.tan(Math.PI * (area - 0.5));\n}\n/**\n * Calculate intensity array of a lorentzian shape.\n * @returns {Float64Array} y values\n */\nexport function getData(options = {}) {\n    let { length, factor = getFactor(), fwhm = 500, height } = options;\n    if (!height) {\n        height = 2 / Math.PI / fwhm;\n    }\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = fct(i - center, fwhm) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n}\n//# sourceMappingURL=Lorentzian.js.map","import { GAUSSIAN_EXP_FACTOR, ROOT_2LN2_MINUS_ONE, ROOT_PI_OVER_LN2, } from '../../../util/constants';\nimport { Shape1D } from '../Shape1D';\nimport { fct as gaussian, getFactor as getFactorGaussian, } from '../gaussian/Gaussian';\nimport { fct as lorentzian, getFactor as getFactorLorentzian, } from '../lorentzian/Lorentzian';\nexport class PseudoVoigt extends Shape1D {\n    constructor(options = {}) {\n        super();\n        const { fwhm = 500, height, mu = 0.5 } = options;\n        this.mu = mu;\n        this.fwhm = fwhm;\n        this.height =\n            height === undefined\n                ? 1 /\n                    ((mu / Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI)) * fwhm +\n                        ((1 - mu) * fwhm * Math.PI) / 2)\n                : height;\n    }\n    fwhmToWidth(fwhm = this.fwhm, mu = this.mu) {\n        return fwhmToWidth(fwhm, mu);\n    }\n    widthToFWHM(width, mu = this.mu) {\n        return widthToFWHM(width, mu);\n    }\n    fct(x) {\n        return fct(x, this.fwhm, this.mu);\n    }\n    getArea() {\n        return getArea({ fwhm: this.fwhm, height: this.height, mu: this.mu });\n    }\n    getFactor(area) {\n        return getFactor(area);\n    }\n    getData(options = {}) {\n        const { length, factor } = options;\n        return getData({\n            fwhm: this.fwhm,\n            height: this.height,\n            mu: this.mu,\n            factor,\n            length,\n        });\n    }\n}\n/**\n * Return a parameterized function of a pseudo voigt shape (see README for equation).\n * @param x - x value to calculate.\n * @param fwhm - full width half maximum\n * @returns - the y value of pseudo voigt with the current parameters.\n */\nexport function fct(x, fwhm, mu) {\n    return (1 - mu) * lorentzian(x, fwhm) + mu * gaussian(x, fwhm);\n}\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n * @param width - Width between the inflection points\n * @param [mu=0.5] Ratio of gaussian contribution in the shape\n * @returns fwhm\n */\nexport function widthToFWHM(width, mu = 0.5) {\n    return width * (mu * ROOT_2LN2_MINUS_ONE + 1);\n}\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * @param fwhm - Full Width at Half Maximum.\n * @param [mu=0.5] Ratio of gaussian contribution in the shape\n * @returns width\n */\nexport function fwhmToWidth(fwhm, mu = 0.5) {\n    return fwhm / (mu * ROOT_2LN2_MINUS_ONE + 1);\n}\n/**\n * Calculate the area of a specific shape.\n * @returns returns the area of the specific shape and parameters.\n */\nexport function getArea(options) {\n    const { fwhm, height = 1, mu = 0.5 } = options;\n    if (fwhm === undefined) {\n        throw new Error('should pass fwhm or sd parameters');\n    }\n    return (fwhm * height * (mu * ROOT_PI_OVER_LN2 + (1 - mu) * Math.PI)) / 2;\n}\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage.\n * @param [area=0.9999] Expected area to be covered.\n * @returns\n */\nexport function getFactor(area = 0.9999, mu = 0.5) {\n    return mu < 1 ? getFactorLorentzian(area) : getFactorGaussian(area);\n}\n/**\n * Calculate intensity array of a pseudo voigt shape.\n * @returns {Float64Array} y values\n */\nexport function getData(options = {}) {\n    let { length, factor = getFactor(), fwhm = 500, height, mu = 0.5 } = options;\n    if (!height) {\n        height =\n            1 /\n                ((mu / Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI)) * fwhm +\n                    ((1 - mu) * fwhm * Math.PI) / 2);\n    }\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = fct(i - center, fwhm, mu) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n}\n//# sourceMappingURL=PseudoVoigt.js.map","import { Gaussian } from '../shapes/1d/gaussian/Gaussian';\nimport { Lorentzian } from '../shapes/1d/lorentzian/Lorentzian';\nimport { PseudoVoigt } from '../shapes/1d/pseudoVoigt/PseudoVoigt';\n/**\n * Generate a instance of a specific kind of shape.\n */\nexport function getShape1D(kind, shapeOptions = {}) {\n    switch (kind) {\n        case 'gaussian':\n            return new Gaussian(shapeOptions);\n        case 'lorentzian':\n            return new Lorentzian(shapeOptions);\n        case 'pseudoVoigt':\n            return new PseudoVoigt(shapeOptions);\n        default: {\n            const unHandled = kind;\n            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n            throw Error(`Unknown distribution ${unHandled}`);\n        }\n    }\n}\n//# sourceMappingURL=getShape1D.js.map","/**\n * Apply Savitzky Golay algorithm\n * @param {array} [ys] Array of y values\n * @param {array|number} [xs] Array of X or deltaX\n * @param {object} [options={}]\n * @param {number} [options.windowSize=9]\n * @param {number} [options.derivative=0]\n * @param {number} [options.polynomial=3]\n * @return {array} Array containing the new ys (same length)\n */\n\nexport default function SavitzkyGolay(ys, xs, options = {}) {\n  let { windowSize = 9, derivative = 0, polynomial = 3 } = options;\n\n  if (windowSize % 2 === 0 || windowSize < 5 || !Number.isInteger(windowSize)) {\n    throw new RangeError(\n      'Invalid window size (should be odd and at least 5 integer number)',\n    );\n  }\n  if (windowSize > ys.length) {\n    throw new RangeError(\n      `Window size is higher than the data length ${windowSize}>${ys.length}`,\n    );\n  }\n  if (derivative < 0 || !Number.isInteger(derivative)) {\n    throw new RangeError('Derivative should be a positive integer');\n  }\n  if (polynomial < 1 || !Number.isInteger(polynomial)) {\n    throw new RangeError('Polynomial should be a positive integer');\n  }\n  if (polynomial >= 6) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      'You should not use polynomial grade higher than 5 if you are' +\n        ' not sure that your data arises from such a model. Possible polynomial oscillation problems',\n    );\n  }\n\n  let half = Math.floor(windowSize / 2);\n  let np = ys.length;\n  let ans = new Array(np);\n  let weights = fullWeights(windowSize, polynomial, derivative);\n  let hs = 0;\n  let constantH = true;\n  if (Array.isArray(xs)) {\n    constantH = false;\n  } else {\n    hs = Math.pow(xs, derivative);\n  }\n\n  //For the borders\n  for (let i = 0; i < half; i++) {\n    let wg1 = weights[half - i - 1];\n    let wg2 = weights[half + i + 1];\n    let d1 = 0;\n    let d2 = 0;\n    for (let l = 0; l < windowSize; l++) {\n      d1 += wg1[l] * ys[l];\n      d2 += wg2[l] * ys[np - windowSize + l];\n    }\n    if (constantH) {\n      ans[half - i - 1] = d1 / hs;\n      ans[np - half + i] = d2 / hs;\n    } else {\n      hs = getHs(xs, half - i - 1, half, derivative);\n      ans[half - i - 1] = d1 / hs;\n      hs = getHs(xs, np - half + i, half, derivative);\n      ans[np - half + i] = d2 / hs;\n    }\n  }\n\n  //For the internal points\n  let wg = weights[half];\n  for (let i = windowSize; i <= np; i++) {\n    let d = 0;\n    for (let l = 0; l < windowSize; l++) d += wg[l] * ys[l + i - windowSize];\n    if (!constantH) hs = getHs(xs, i - half - 1, half, derivative);\n    ans[i - half - 1] = d / hs;\n  }\n  return ans;\n}\n\nfunction getHs(h, center, half, derivative) {\n  let hs = 0;\n  let count = 0;\n  for (let i = center - half; i < center + half; i++) {\n    if (i >= 0 && i < h.length - 1) {\n      hs += h[i + 1] - h[i];\n      count++;\n    }\n  }\n  return Math.pow(hs / count, derivative);\n}\n\nfunction GramPoly(i, m, k, s) {\n  let Grampoly = 0;\n  if (k > 0) {\n    Grampoly =\n      ((4 * k - 2) / (k * (2 * m - k + 1))) *\n        (i * GramPoly(i, m, k - 1, s) + s * GramPoly(i, m, k - 1, s - 1)) -\n      (((k - 1) * (2 * m + k)) / (k * (2 * m - k + 1))) *\n        GramPoly(i, m, k - 2, s);\n  } else {\n    if (k === 0 && s === 0) {\n      Grampoly = 1;\n    } else {\n      Grampoly = 0;\n    }\n  }\n  return Grampoly;\n}\n\nfunction GenFact(a, b) {\n  let gf = 1;\n  if (a >= b) {\n    for (let j = a - b + 1; j <= a; j++) {\n      gf *= j;\n    }\n  }\n  return gf;\n}\n\nfunction Weight(i, t, m, n, s) {\n  let sum = 0;\n  for (let k = 0; k <= n; k++) {\n    //console.log(k);\n    sum +=\n      (2 * k + 1) *\n      (GenFact(2 * m, k) / GenFact(2 * m + k + 1, k + 1)) *\n      GramPoly(i, m, k, 0) *\n      GramPoly(t, m, k, s);\n  }\n  return sum;\n}\n\n/**\n *\n * @param m  Number of points\n * @param n  Polynomial grade\n * @param s  Derivative\n */\nfunction fullWeights(m, n, s) {\n  let weights = new Array(m);\n  let np = Math.floor(m / 2);\n  for (let t = -np; t <= np; t++) {\n    weights[t + np] = new Array(m);\n    for (let j = -np; j <= np; j++) {\n      weights[t + np][j + np] = Weight(j, t, np, n, s);\n    }\n  }\n  return weights;\n}\n\n/*function entropy(data,h,options){\n    var trend = SavitzkyGolay(data,h,trendOptions);\n    var copy = new Array(data.length);\n    var sum = 0;\n    var max = 0;\n    for(var i=0;i<data.length;i++){\n        copy[i] = data[i]-trend[i];\n    }\n\n    sum/=data.length;\n    console.log(sum+\" \"+max);\n    console.log(stat.array.standardDeviation(copy));\n    console.log(Math.abs(stat.array.mean(copy))/stat.array.standardDeviation(copy));\n    return sum;\n\n}\n\n\n\nfunction guessWindowSize(data, h){\n    console.log(\"entropy \"+entropy(data,h,trendOptions));\n    return 5;\n}\n*/\n","import { getShape1D } from 'ml-peak-shape-generator';\nimport SG from 'ml-savitzky-golay-generalized';\n\n/**\n * Global spectra deconvolution\n * @param {object} data - Object data with x and y arrays\n * @param {Array<number>} [data.x] - Independent variable\n * @param {Array<number>} [data.y] - Dependent variable\n * @param {object} [options={}] - Options object\n * @param {object} [options.shape={}] - Object that specified the kind of shape to calculate the FWHM instead of width between inflection points. see https://mljs.github.io/peak-shape-generator/#inflectionpointswidthtofwhm\n * @param {object} [options.shape.kind='gaussian']\n * @param {object} [options.shape.options={}]\n * @param {object} [options.sgOptions] - Options object for Savitzky-Golay filter. See https://github.com/mljs/savitzky-golay-generalized#options\n * @param {number} [options.sgOptions.windowSize = 9] - points to use in the approximations\n * @param {number} [options.sgOptions.polynomial = 3] - degree of the polynomial to use in the approximations\n * @param {number} [options.minMaxRatio = 0.00025] - Threshold to determine if a given peak should be considered as a noise\n * @param {number} [options.broadRatio = 0.00] - If `broadRatio` is higher than 0, then all the peaks which second derivative\n * smaller than `broadRatio * maxAbsSecondDerivative` will be marked with the soft mask equal to true.\n * @param {number} [options.noiseLevel = 0] - Noise threshold in spectrum units\n * @param {boolean} [options.maxCriteria = true] - Peaks are local maximum(true) or minimum(false)\n * @param {boolean} [options.smoothY = true] - Select the peak intensities from a smoothed version of the independent variables\n * @param {boolean} [options.realTopDetection = false] - Use a quadratic optimizations with the peak and its 3 closest neighbors\n * to determine the true x,y values of the peak?\n * @param {number} [options.heightFactor = 0] - Factor to multiply the calculated height (usually 2)\n * @param {number} [options.derivativeThreshold = -1] - Filters based on the amplitude of the first derivative\n * @return {Array<object>}\n */\nexport function gsd(data, options = {}) {\n  let {\n    noiseLevel,\n    sgOptions = {\n      windowSize: 9,\n      polynomial: 3,\n    },\n    shape = {},\n    smoothY = true,\n    heightFactor = 0,\n    broadRatio = 0.0,\n    maxCriteria = true,\n    minMaxRatio = 0.00025,\n    derivativeThreshold = -1,\n    realTopDetection = false,\n  } = options;\n\n  let { y: yIn, x } = data;\n\n  const y = yIn.slice();\n  let equalSpaced = isEqualSpaced(x);\n\n  if (maxCriteria === false) {\n    for (let i = 0; i < y.length; i++) {\n      y[i] *= -1;\n    }\n  }\n\n  if (noiseLevel === undefined) {\n    noiseLevel = equalSpaced ? getNoiseLevel(y) : 0;\n  }\n  for (let i = 0; i < y.length; i++) {\n    y[i] -= noiseLevel;\n  }\n  for (let i = 0; i < y.length; i++) {\n    if (y[i] < 0) {\n      y[i] = 0;\n    }\n  }\n  // If the max difference between delta x is less than 5%, then,\n  // we can assume it to be equally spaced variable\n  let yData = y;\n  let dY, ddY;\n  const { windowSize, polynomial } = sgOptions;\n\n  if (equalSpaced) {\n    if (smoothY) {\n      yData = SG(y, x[1] - x[0], {\n        windowSize,\n        polynomial,\n        derivative: 0,\n      });\n    }\n    dY = SG(y, x[1] - x[0], {\n      windowSize,\n      polynomial,\n      derivative: 1,\n    });\n    ddY = SG(y, x[1] - x[0], {\n      windowSize,\n      polynomial,\n      derivative: 2,\n    });\n  } else {\n    if (smoothY) {\n      yData = SG(y, x, {\n        windowSize,\n        polynomial,\n        derivative: 0,\n      });\n    }\n    dY = SG(y, x, {\n      windowSize,\n      polynomial,\n      derivative: 1,\n    });\n    ddY = SG(y, x, {\n      windowSize,\n      polynomial,\n      derivative: 2,\n    });\n  }\n\n  const xData = x;\n  const dX = x[1] - x[0];\n  let maxDdy = 0;\n  let maxY = 0;\n  for (let i = 0; i < yData.length; i++) {\n    if (Math.abs(ddY[i]) > maxDdy) {\n      maxDdy = Math.abs(ddY[i]);\n    }\n    if (Math.abs(yData[i]) > maxY) {\n      maxY = Math.abs(yData[i]);\n    }\n  }\n\n  let lastMax = null;\n  let lastMin = null;\n  let minddY = [];\n  let intervalL = [];\n  let intervalR = [];\n  let broadMask = [];\n\n  // By the intermediate value theorem We cannot find 2 consecutive maximum or minimum\n  for (let i = 1; i < yData.length - 1; ++i) {\n    // filter based on derivativeThreshold\n    if (Math.abs(dY[i]) > derivativeThreshold) {\n      // Minimum in first derivative\n      if (\n        (dY[i] < dY[i - 1] && dY[i] <= dY[i + 1]) ||\n        (dY[i] <= dY[i - 1] && dY[i] < dY[i + 1])\n      ) {\n        lastMin = {\n          x: xData[i],\n          index: i,\n        };\n        if (dX > 0 && lastMax !== null) {\n          intervalL.push(lastMax);\n          intervalR.push(lastMin);\n        }\n      }\n\n      // Maximum in first derivative\n      if (\n        (dY[i] >= dY[i - 1] && dY[i] > dY[i + 1]) ||\n        (dY[i] > dY[i - 1] && dY[i] >= dY[i + 1])\n      ) {\n        lastMax = {\n          x: xData[i],\n          index: i,\n        };\n        if (dX < 0 && lastMin !== null) {\n          intervalL.push(lastMax);\n          intervalR.push(lastMin);\n        }\n      }\n    }\n\n    // Minimum in second derivative\n    if (ddY[i] < ddY[i - 1] && ddY[i] < ddY[i + 1]) {\n      minddY.push(i);\n      broadMask.push(Math.abs(ddY[i]) <= broadRatio * maxDdy);\n    }\n  }\n\n  let widthProcessor = shape.kind\n    ? getShape1D(shape.kind, shape.options).widthToFWHM\n    : (x) => x;\n\n  let signals = [];\n  let lastK = -1;\n  let possible, frequency, distanceJ, minDistance, gettingCloser;\n  for (let j = 0; j < minddY.length; ++j) {\n    frequency = xData[minddY[j]];\n    possible = -1;\n    let k = lastK + 1;\n    minDistance = Number.MAX_VALUE;\n    distanceJ = 0;\n    gettingCloser = true;\n    while (possible === -1 && k < intervalL.length && gettingCloser) {\n      distanceJ = Math.abs(frequency - (intervalL[k].x + intervalR[k].x) / 2);\n\n      // Still getting closer?\n      if (distanceJ < minDistance) {\n        minDistance = distanceJ;\n      } else {\n        gettingCloser = false;\n      }\n      if (distanceJ < Math.abs(intervalL[k].x - intervalR[k].x) / 2) {\n        possible = k;\n        lastK = k;\n      }\n      ++k;\n    }\n\n    if (possible !== -1) {\n      if (Math.abs(yData[minddY[j]]) > minMaxRatio * maxY) {\n        let width = Math.abs(intervalR[possible].x - intervalL[possible].x);\n        signals.push({\n          index: minddY[j],\n          x: frequency,\n          y: maxCriteria\n            ? yData[minddY[j]] + noiseLevel\n            : -yData[minddY[j]] - noiseLevel,\n          width: widthProcessor(width),\n          soft: broadMask[j],\n        });\n\n        signals[signals.length - 1].left = intervalL[possible];\n        signals[signals.length - 1].right = intervalR[possible];\n\n        if (heightFactor) {\n          let yLeft = yData[intervalL[possible].index];\n          let yRight = yData[intervalR[possible].index];\n          signals[signals.length - 1].height =\n            heightFactor *\n            (signals[signals.length - 1].y - (yLeft + yRight) / 2);\n        }\n      }\n    }\n  }\n\n  if (realTopDetection) {\n    determineRealTop(signals, xData, yData);\n  }\n\n  // Correct the values to fit the original spectra data\n  for (let j = 0; j < signals.length; j++) {\n    signals[j].base = noiseLevel;\n  }\n\n  signals.sort((a, b) => {\n    return a.x - b.x;\n  });\n\n  return signals;\n}\n\nconst isEqualSpaced = (x) => {\n  let tmp;\n  let maxDx = 0;\n  let minDx = Number.MAX_SAFE_INTEGER;\n  for (let i = 0; i < x.length - 1; ++i) {\n    tmp = Math.abs(x[i + 1] - x[i]);\n    if (tmp < minDx) {\n      minDx = tmp;\n    }\n    if (tmp > maxDx) {\n      maxDx = tmp;\n    }\n  }\n  return (maxDx - minDx) / maxDx < 0.05;\n};\n\nconst getNoiseLevel = (y) => {\n  let mean = 0;\n\n  let stddev = 0;\n  let length = y.length;\n  for (let i = 0; i < length; ++i) {\n    mean += y[i];\n  }\n  mean /= length;\n  let averageDeviations = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    averageDeviations[i] = Math.abs(y[i] - mean);\n  }\n  averageDeviations.sort((a, b) => a - b);\n  if (length % 2 === 1) {\n    stddev = averageDeviations[(length - 1) / 2] / 0.6745;\n  } else {\n    stddev =\n      (0.5 *\n        (averageDeviations[length / 2] + averageDeviations[length / 2 - 1])) /\n      0.6745;\n  }\n\n  return stddev;\n};\n\nconst determineRealTop = (peakList, x, y) => {\n  let alpha, beta, gamma, p, currentPoint;\n  for (let j = 0; j < peakList.length; j++) {\n    currentPoint = peakList[j].index; // peakList[j][2];\n    // The detected peak could be moved 1 or 2 units to left or right.\n    if (\n      y[currentPoint - 1] >= y[currentPoint - 2] &&\n      y[currentPoint - 1] >= y[currentPoint]\n    ) {\n      currentPoint--;\n    } else {\n      if (\n        y[currentPoint + 1] >= y[currentPoint] &&\n        y[currentPoint + 1] >= y[currentPoint + 2]\n      ) {\n        currentPoint++;\n      } else {\n        if (\n          y[currentPoint - 2] >= y[currentPoint - 3] &&\n          y[currentPoint - 2] >= y[currentPoint - 1]\n        ) {\n          currentPoint -= 2;\n        } else {\n          if (\n            y[currentPoint + 2] >= y[currentPoint + 1] &&\n            y[currentPoint + 2] >= y[currentPoint + 3]\n          ) {\n            currentPoint += 2;\n          }\n        }\n      }\n    }\n    // interpolation to a sin() function\n    if (\n      y[currentPoint - 1] > 0 &&\n      y[currentPoint + 1] > 0 &&\n      y[currentPoint] >= y[currentPoint - 1] &&\n      y[currentPoint] >= y[currentPoint + 1] &&\n      (y[currentPoint] !== y[currentPoint - 1] ||\n        y[currentPoint] !== y[currentPoint + 1])\n    ) {\n      alpha = 20 * Math.log10(y[currentPoint - 1]);\n      beta = 20 * Math.log10(y[currentPoint]);\n      gamma = 20 * Math.log10(y[currentPoint + 1]);\n      p = (0.5 * (alpha - gamma)) / (alpha - 2 * beta + gamma);\n      // console.log(alpha, beta, gamma, `p: ${p}`);\n      // console.log(x[currentPoint]+\" \"+tmp+\" \"+currentPoint);\n      peakList[j].x =\n        x[currentPoint] + (x[currentPoint] - x[currentPoint - 1]) * p;\n      peakList[j].y =\n        y[currentPoint] -\n        0.25 * (y[currentPoint - 1] - y[currentPoint + 1]) * p;\n    }\n  }\n};\n","/*!\n * assign-symbols <https://github.com/jonschlinkert/assign-symbols>\n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nconst toString = Object.prototype.toString;\nconst isEnumerable = Object.prototype.propertyIsEnumerable;\nconst getSymbols = Object.getOwnPropertySymbols;\n\nmodule.exports = (target, ...args) => {\n  if (!isObject(target)) {\n    throw new TypeError('expected the first argument to be an object');\n  }\n\n  if (args.length === 0 || typeof Symbol !== 'function' || typeof getSymbols !== 'function') {\n    return target;\n  }\n\n  for (let arg of args) {\n    let names = getSymbols(arg);\n\n    for (let key of names) {\n      if (isEnumerable.call(arg, key)) {\n        target[key] = arg[key];\n      }\n    }\n  }\n  return target;\n};\n\nfunction isObject(val) {\n  return typeof val === 'function' || toString.call(val) === '[object Object]' || Array.isArray(val);\n}\n","/*!\n * assign-deep <https://github.com/jonschlinkert/assign-deep>\n *\n * Copyright (c) 2017-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nconst toString = Object.prototype.toString;\nconst assignSymbols = require('assign-symbols');\n\nconst isValidKey = key => {\n  return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n};\n\nconst assign = module.exports = (target, ...args) => {\n  let i = 0;\n  if (isPrimitive(target)) target = args[i++];\n  if (!target) target = {};\n  for (; i < args.length; i++) {\n    if (isObject(args[i])) {\n      for (const key of Object.keys(args[i])) {\n        if (isValidKey(key)) {\n          if (isObject(target[key]) && isObject(args[i][key])) {\n            assign(target[key], args[i][key]);\n          } else {\n            target[key] = args[i][key];\n          }\n        }\n      }\n      assignSymbols(target, args[i]);\n    }\n  }\n  return target;\n};\n\nfunction isObject(val) {\n  return typeof val === 'function' || toString.call(val) === '[object Object]';\n}\n\nfunction isPrimitive(val) {\n  return typeof val === 'object' ? val === null : typeof val !== 'function';\n}\n","export const GAUSSIAN_EXP_FACTOR = -4 * Math.LN2;\nexport const ROOT_PI_OVER_LN2 = Math.sqrt(Math.PI / Math.LN2);\nexport const ROOT_THREE = Math.sqrt(3);\nexport const ROOT_2LN2 = Math.sqrt(2 * Math.LN2);\nexport const ROOT_2LN2_MINUS_ONE = Math.sqrt(2 * Math.LN2) - 1;\n","// https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n// This code yields to a good approximation\n\n// If needed a better implementation using polynomial can be found on https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n\nexport default function erfinv(x) {\n  let a = 0.147;\n  if (x === 0) return 0;\n  let ln1MinusXSqrd = Math.log(1 - x * x);\n  let lnEtcBy2Plus2 = ln1MinusXSqrd / 2 + 2 / (Math.PI * a);\n  let firstSqrt = Math.sqrt(lnEtcBy2Plus2 ** 2 - ln1MinusXSqrd / a);\n  let secondSqrt = Math.sqrt(firstSqrt - lnEtcBy2Plus2);\n  return secondSqrt * (x > 0 ? 1 : -1);\n}\n","import {\n  ROOT_2LN2,\n  GAUSSIAN_EXP_FACTOR,\n  ROOT_PI_OVER_LN2,\n} from '../util/constants';\nimport erfinv from '../util/erfinv';\n\nexport class Gaussian {\n  /**\n   * @param {object} [options = {}]\n   * @param {number} [options.height=4*LN2/(PI*FWHM)] Define the height of the peak, by default area=1 (normalized)\n   * @param {number} [options.fwhm = 500] - Full Width at Half Maximum in the number of points in FWHM.\n   * @param {number} [options.sd] - Standard deviation, if it's defined options.fwhm will be ignored and the value will be computed sd * Math.sqrt(8 * Math.LN2);\n   */\n  constructor(options = {}) {\n    this.fwhm = options.sd\n      ? Gaussian.widthToFWHM(2 * options.sd)\n      : options.fwhm\n      ? options.fwhm\n      : 500;\n    this.height =\n      options.height === undefined\n        ? Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI) / this.fwhm\n        : options.height;\n  }\n  /**\n   * Calculate a gaussian shape\n   * @param {object} [options = {}]\n   * @param {number} [options.factor = 6] - Number of time to take fwhm to calculate length. Default covers 99.99 % of area.\n   * @param {number} [options.length = fwhm * factor + 1] - total number of points to calculate\n   * @return {Float64Array} y values\n   */\n\n  getData(options = {}) {\n    let { length, factor = this.getFactor() } = options;\n\n    if (!length) {\n      length = Math.min(Math.ceil(this.fwhm * factor), Math.pow(2, 25) - 1);\n      if (length % 2 === 0) length++;\n    }\n\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n      data[i] = this.fct(i - center) * this.height;\n      data[length - 1 - i] = data[i];\n    }\n\n    return data;\n  }\n\n  /**\n   * Return a parameterized function of a gaussian shape (see README for equation).\n   * @param {number} x - x value to calculate.\n   * @returns {number} - the y value of gaussian with the current parameters.\n   */\n  fct(x) {\n    return Gaussian.fct(x, this.fwhm);\n  }\n\n  /**\n   * Calculate the number of times FWHM allows to reach a specific area coverage\n   * @param {number} [area=0.9999]\n   * @returns {number}\n   */\n  getFactor(area = 0.9999) {\n    return Gaussian.getFactor(area);\n  }\n\n  /**\n   * Calculate the area of the shape.\n   * @returns {number} - returns the area.\n   */\n\n  getArea() {\n    return Gaussian.getArea(this.fwhm, { height: this.height });\n  }\n\n  /**\n   * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n   * //https://mathworld.wolfram.com/GaussianFunction.html\n   * @param {number} width - Width between the inflection points\n   * @returns {number} fwhm\n   */\n  widthToFWHM(width) {\n    //https://mathworld.wolfram.com/GaussianFunction.html\n    return Gaussian.widthToFWHM(width);\n  }\n\n  /**\n   * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n   * //https://mathworld.wolfram.com/GaussianFunction.html\n   * @param {number} fwhm - Full Width at Half Maximum.\n   * @returns {number} width\n   */\n  fwhmToWidth(fwhm = this.fwhm) {\n    return Gaussian.fwhmToWidth(fwhm);\n  }\n\n  /**\n   * set a new full width at half maximum\n   * @param {number} fwhm - full width at half maximum\n   */\n  setFWHM(fwhm) {\n    this.fwhm = fwhm;\n  }\n\n  /**\n   * set a new height\n   * @param {number} height - The maximal intensity of the shape.\n   */\n  setHeight(height) {\n    this.height = height;\n  }\n}\n\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @param {number} x - x value to calculate.\n * @param {number} fwhm - full width half maximum\n * @returns {number} - the y value of gaussian with the current parameters.\n */\nGaussian.fct = function fct(x, fwhm = 500) {\n  return Math.exp(GAUSSIAN_EXP_FACTOR * Math.pow(x / fwhm, 2));\n};\n\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n * //https://mathworld.wolfram.com/GaussianFunction.html\n * @param {number} width - Width between the inflection points\n * @returns {number} fwhm\n */\nGaussian.widthToFWHM = function widthToFWHM(width) {\n  return width * ROOT_2LN2;\n};\n\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * //https://mathworld.wolfram.com/GaussianFunction.html\n * @param {number} fwhm - Full Width at Half Maximum.\n * @returns {number} width\n */\nGaussian.fwhmToWidth = function fwhmToWidth(fwhm) {\n  return fwhm / ROOT_2LN2;\n};\n\n/**\n * Calculate the area of a specific shape.\n * @param {number} fwhm - Full width at half maximum.\n * @param {object} [options = {}] - options.\n * @param {number} [options.height = 1] - Maximum y value of the shape.\n * @returns {number} - returns the area of the specific shape and parameters.\n */\n\nGaussian.getArea = function getArea(fwhm, options = {}) {\n  let { height = 1 } = options;\n  return (height * ROOT_PI_OVER_LN2 * fwhm) / 2;\n};\n\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage.\n * @param {number} [area=0.9999]\n * @returns {number}\n */\nGaussian.getFactor = function getFactor(area = 0.9999) {\n  return Math.sqrt(2) * erfinv(area);\n};\n","import { ROOT_THREE } from '../util/constants';\n\nexport class Lorentzian {\n  /**\n   * @param {object} [options = {}]\n   * @param {number} [options.height=2/(PI*FWHM)] Define the height of the peak, by default area=1 (normalized)\n   * @param {number} [options.fwhm = 500] - Full Width at Half Maximum in the number of points in FWHM.\n   * @param {number} [options.sd] - Standard deviation, if it's defined options.fwhm will be ignored and the value will be computed sd * Math.sqrt(8 * Math.LN2);\n   */\n  constructor(options = {}) {\n    this.fwhm = options.fwhm === undefined ? 500 : options.fwhm;\n    this.height =\n      options.height === undefined ? 2 / Math.PI / this.fwhm : options.height;\n  }\n  /**\n   * Calculate a lorentzian shape\n   * @param {object} [options = {}]\n   * @param {number} [options.factor = Math.tan(Math.PI * (0.9999 - 0.5))] - Number of time to take fwhm to calculate length. Default covers 99.99 % of area.\n   * @param {number} [options.length = fwhm * factor + 1] - total number of points to calculate\n   * @return {Float64Array} y values\n   */\n  getData(options = {}) {\n    let { length, factor = this.getFactor() } = options;\n\n    if (!length) {\n      length = Math.min(Math.ceil(this.fwhm * factor), Math.pow(2, 25) - 1);\n      if (length % 2 === 0) length++;\n    }\n\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n      data[i] = this.fct(i - center) * this.height;\n      data[length - 1 - i] = data[i];\n    }\n    return data;\n  }\n\n  /**\n   * Return a parameterized function of a lorentzian shape (see README for equation).\n   * @param {number} x - x value to calculate.\n   * @returns {number} - the y value of lorentzian with the current parameters.\n   */\n  fct(x) {\n    return Lorentzian.fct(x, this.fwhm);\n  }\n\n  /**\n   * Calculate the number of times FWHM allows to reach a specific area coverage\n   * @param {number} [area=0.9999]\n   * @returns {number}\n   */\n  getFactor(area = 0.9999) {\n    return Lorentzian.getFactor(area);\n  }\n\n  /**\n   * Calculate the area of the shape.\n   * @returns {number} - returns the area.\n   */\n\n  getArea() {\n    return Lorentzian.getArea(this.fwhm, { height: this.height });\n  }\n\n  /**\n   * Compute the value of width between the inflection points of a specific shape from Full Width at Half Maximum (FWHM).\n   * //https://mathworld.wolfram.com/LorentzianFunction.html\n   * @param {number} [fwhm] - Full Width at Half Maximum.\n   * @returns {number} width between the inflection points\n   */\n  fwhmToWidth(fwhm = this.fwhm) {\n    return Lorentzian.fwhmToWidth(fwhm);\n  }\n\n  /**\n   * Compute the value of Full Width at Half Maximum (FWHM) of a specific shape from the width between the inflection points.\n   * //https://mathworld.wolfram.com/LorentzianFunction.html\n   * @param {number} [width] Width between the inflection points\n   * @returns {number} fwhm\n   */\n  widthToFWHM(width) {\n    return Lorentzian.widthToFWHM(width);\n  }\n  /**\n   * set a new full width at half maximum\n   * @param {number} fwhm - full width at half maximum\n   */\n  setFWHM(fwhm) {\n    this.fwhm = fwhm;\n  }\n\n  /**\n   * set a new height\n   * @param {number} height - The maximal intensity of the shape.\n   */\n  setHeight(height) {\n    this.height = height;\n  }\n}\n\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @param {number} x - x value to calculate.\n * @param {number} fwhm - full width half maximum\n * @returns {number} - the y value of gaussian with the current parameters.\n */\nLorentzian.fct = function fct(x, fwhm) {\n  const squareFWHM = fwhm * fwhm;\n  return squareFWHM / (4 * Math.pow(x, 2) + squareFWHM);\n};\n\n/**\n * Compute the value of width between the inflection points of a specific shape from Full Width at Half Maximum (FWHM).\n * //https://mathworld.wolfram.com/LorentzianFunction.html\n * @param {number} [fwhm] - Full Width at Half Maximum.\n * @returns {number} width between the inflection points\n */\nLorentzian.fwhmToWidth = function fwhmToWidth(fwhm) {\n  return fwhm / ROOT_THREE;\n};\n\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) of a specific shape from the width between the inflection points.\n * //https://mathworld.wolfram.com/LorentzianFunction.html\n * @param {number} [width] Width between the inflection points\n * @returns {number} fwhm\n */\nLorentzian.widthToFWHM = function widthToFWHM(width) {\n  return width * ROOT_THREE;\n};\n\n/**\n * Calculate the area of a specific shape.\n * @param {number} fwhm - Full width at half maximum.\n * @param {*} [options = {}] - options.\n * @param {number} [options.height = 1] - Maximum y value of the shape.\n * @returns {number} - returns the area of the specific shape and parameters.\n */\nLorentzian.getArea = function getArea(fwhm, options = {}) {\n  let { height = 1 } = options;\n\n  return (height * Math.PI * fwhm) / 2;\n};\n\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage\n * @param {number} [area=0.9999]\n * @returns {number}\n */\nLorentzian.getFactor = function getFactor(area = 0.9999) {\n  return 2 * Math.tan(Math.PI * (area - 0.5));\n};\n","import {\n  GAUSSIAN_EXP_FACTOR,\n  ROOT_2LN2_MINUS_ONE,\n  ROOT_PI_OVER_LN2,\n} from '../util/constants';\n\nimport { Gaussian } from './Gaussian';\nimport { Lorentzian } from './Lorentzian';\n\nexport class PseudoVoigt {\n  /**\n   * @param {object} [options={}]\n   * @param {number} [options.height=1/(mu*FWHM/sqrt(4*LN2/PI)+(1-mu)*fwhm*PI*0.5)] Define the height of the peak, by default area=1 (normalized)\n   * @param {number} [options.fwhm=500] - Full Width at Half Maximum in the number of points in FWHM.\n   * @param {number} [options.mu=0.5] - ratio of gaussian contribution.\n   */\n\n  constructor(options = {}) {\n    this.mu = options.mu === undefined ? 0.5 : options.mu;\n    this.fwhm = options.fwhm === undefined ? 500 : options.fwhm;\n    this.height =\n      options.height === undefined\n        ? 1 /\n          ((this.mu / Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI)) * this.fwhm +\n            ((1 - this.mu) * this.fwhm * Math.PI) / 2)\n        : options.height;\n  }\n\n  /**\n   * Calculate a linear combination of gaussian and lorentzian function width an same full width at half maximum\n   * @param { object } [options = {}]\n   * @param { number } [options.factor = 2 * Math.tan(Math.PI * (0.9999 - 0.5))] - Number of time to take fwhm in the calculation of the length.Default covers 99.99 % of area.\n   * @param { number } [options.length = fwhm * factor + 1] - total number of points to calculate\n   * @return { object } - { fwhm, data<Float64Array>} - An with the number of points at half maximum and the array of y values covering the 99.99 % of the area.\n   */\n\n  getData(options = {}) {\n    let { length, factor = this.getFactor() } = options;\n    if (!length) {\n      length = Math.ceil(this.fwhm * factor);\n      if (length % 2 === 0) length++;\n    }\n\n    const center = (length - 1) / 2;\n\n    let data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n      data[i] = this.fct(i - center) * this.height;\n      data[length - 1 - i] = data[i];\n    }\n\n    return data;\n  }\n\n  /**\n   * Return a parameterized function of a linear combination of Gaussian and Lorentzian shapes where the full width at half maximum are the same for both kind of shapes (see README for equation).\n   * @param {number} [x] x value to calculate.\n   * @returns {number} - the y value of a pseudo voigt with the current parameters.\n   */\n\n  fct(x) {\n    return PseudoVoigt.fct(x, this.fwhm, this.mu);\n  }\n\n  /**\n   * Calculate the number of times FWHM allows to reach a specific area coverage\n   * @param {number} [area=0.9999] - required area to be coverage\n   * @param {number} [mu=this.mu] - ratio of gaussian contribution.\n   * @returns {number}\n   */\n  getFactor(area = 0.9999, mu = this.mu) {\n    return PseudoVoigt.getFactor(area, mu);\n  }\n\n  /**\n   * Calculate the area of the shape.\n   * @returns {number} - returns the area.\n   */\n  getArea() {\n    return PseudoVoigt.getArea(this.fwhm, { height: this.height, mu: this.mu });\n  }\n\n  /**\n   * Compute the value of Full Width at Half Maximum (FMHM) from width between the inflection points.\n   * @param {number} width - width between the inflection points\n   * @param {number} [mu = 0.5] - ratio of gaussian contribution.\n   * @returns {number} Full Width at Half Maximum (FMHM).\n   */\n  widthToFWHM(width, mu) {\n    return PseudoVoigt.widthToFWHM(width, mu);\n  }\n  /**\n   * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n   * @param {number} fwhm - Full Width at Half Maximum.\n   * @param {number} [mu] - ratio of gaussian contribution.\n   * @returns {number} width between the inflection points.\n   */\n  fwhmToWidth(fwhm = this.fwhm, mu = this.mu) {\n    return PseudoVoigt.fwhmToWidth(fwhm, mu);\n  }\n\n  /**\n   * set a new full width at half maximum\n   * @param {number} fwhm - full width at half maximum\n   */\n  setFWHM(fwhm) {\n    this.fwhm = fwhm;\n  }\n\n  /**\n   * set a new height\n   * @param {number} height - The maximal intensity of the shape.\n   */\n  setHeight(height) {\n    this.height = height;\n  }\n\n  /**\n   * set a new mu\n   * @param {number} mu - ratio of gaussian contribution.\n   */\n  setMu(mu) {\n    this.mu = mu;\n  }\n}\n\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @param {number} x - x value to calculate.\n * @param {number} fwhm - full width half maximum\n * @param {number} [mu=0.5] - ratio of gaussian contribution.\n * @returns {number} - the y value of gaussian with the current parameters.\n */\nPseudoVoigt.fct = function fct(x, fwhm, mu = 0.5) {\n  return (1 - mu) * Lorentzian.fct(x, fwhm) + mu * Gaussian.fct(x, fwhm);\n};\n\n/**\n * Compute the value of Full Width at Half Maximum (FMHM) from width between the inflection points.\n * @param {number} width - width between the inflection points\n * @param {number} [mu = 0.5] - ratio of gaussian contribution.\n * @returns {number} Full Width at Half Maximum (FMHM).\n */\nPseudoVoigt.widthToFWHM = function widthToFWHM(width, mu = 0.5) {\n  return width * (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * @param {number} fwhm - Full Width at Half Maximum.\n * @param {number} [mu = 0.5] - ratio of gaussian contribution.\n * @returns {number} width between the inflection points.\n */\nPseudoVoigt.fwhmToWidth = function fwhmToWidth(fwhm, mu = 0.5) {\n  return fwhm / (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\n\n/**\n * Calculate the area of a specific shape.\n * @param {number} fwhm - Full width at half maximum.\n * @param {*} [options = {}] - options.\n * @param {number} [options.height = 1] - Maximum y value of the shape.\n * @param {number} [options.mu = 0.5] - ratio of gaussian contribution.\n * @returns {number} - returns the area of the specific shape and parameters.\n */\nPseudoVoigt.getArea = function getArea(fwhm, options = {}) {\n  let { height = 1, mu = 0.5 } = options;\n  return (fwhm * height * (mu * ROOT_PI_OVER_LN2 + (1 - mu) * Math.PI)) / 2;\n};\n\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage\n * @param {number} [area=0.9999] - required area to be coverage\n * @param {number} [mu=this.mu] - ratio of gaussian contribution.\n * @returns {number}\n */\nPseudoVoigt.getFactor = function getFactor(area = 0.9999, mu = 0.5) {\n  return mu < 1 ? Lorentzian.getFactor(area) : Gaussian.getFactor(area);\n};\n","import { PseudoVoigt } from 'ml-peak-shape-generator';\n\n/**\n * This function calculates the spectrum as a sum of linear combination of gaussian and lorentzian functions. The pseudo voigt\n * parameters are divided in 4 batches. 1st: centers; 2nd: heights; 3th: widths; 4th: mu's ;\n * @param t Ordinate value\n * @param p Lorentzian parameters\n * @returns {*}\n */\n\nexport function sumOfGaussianLorentzians(p) {\n  return function (t) {\n    let nL = p.length / 4;\n    let result = 0;\n    for (let i = 0; i < nL; i++) {\n      result +=\n        p[i + nL] * PseudoVoigt.fct(t - p[i], p[i + nL * 2], p[i + nL * 3]);\n    }\n    return result;\n  };\n}\n","import { Gaussian } from 'ml-peak-shape-generator';\n/**\n * This function calculates the spectrum as a sum of gaussian functions. The Gaussian\n * parameters are divided in 3 batches. 1st: centers; 2nd: height; 3th: widths;\n * @param t Ordinate values\n * @param p Gaussian parameters\n * @returns {*}\n */\n\nexport function sumOfGaussians(p) {\n  return function (t) {\n    let nL = p.length / 3;\n    let result = 0;\n    for (let i = 0; i < nL; i++) {\n      result += p[i + nL] * Gaussian.fct(t - p[i], p[i + nL * 2]);\n    }\n    return result;\n  };\n}\n","import { Lorentzian } from 'ml-peak-shape-generator';\n\n/**\n * This function calculates the spectrum as a sum of lorentzian functions. The Lorentzian\n * parameters are divided in 3 batches. 1st: centers; 2nd: heights; 3th: widths;\n * @param t Ordinate values\n * @param p Lorentzian parameters\n * @returns {*}\n */\n\nexport function sumOfLorentzians(p) {\n  return function (t) {\n    let nL = p.length / 3;\n    let result = 0;\n    for (let i = 0; i < nL; i++) {\n      result += p[i + nL] * Lorentzian.fct(t - p[i], p[i + nL * 2]);\n    }\n    return result;\n  };\n}\n","import assignDeep from 'assign-deep';\nimport getMaxValue from 'ml-array-max';\n\nimport { sumOfGaussianLorentzians } from './shapes/sumOfGaussianLorentzians';\nimport { sumOfGaussians } from './shapes/sumOfGaussians';\nimport { sumOfLorentzians } from './shapes/sumOfLorentzians';\n\nexport function checkInput(data, peaks, options) {\n  let {\n    shape = { kind: 'gaussian' },\n    optimization = {\n      kind: 'lm',\n    },\n  } = options;\n\n  if (typeof shape.kind !== 'string') {\n    throw new Error('kind should be a string');\n  }\n\n  let kind = shape.kind.toLowerCase().replace(/[^a-z]/g, '');\n\n  let paramsFunc;\n  let defaultParameters;\n  switch (kind) {\n    case 'gaussian':\n      paramsFunc = sumOfGaussians;\n      defaultParameters = {\n        x: {\n          init: (peak) => peak.x,\n          max: (peak) => peak.x + peak.width * 2,\n          min: (peak) => peak.x - peak.width * 2,\n          gradientDifference: (peak) => peak.width * 2e-3,\n        },\n        y: {\n          init: (peak) => peak.y,\n          max: () => 1.5,\n          min: () => 0,\n          gradientDifference: () => 1e-3,\n        },\n        width: {\n          init: (peak) => peak.width,\n          max: (peak) => peak.width * 4,\n          min: (peak) => peak.width * 0.25,\n          gradientDifference: (peak) => peak.width * 2e-3,\n        },\n      };\n      break;\n    case 'lorentzian':\n      paramsFunc = sumOfLorentzians;\n      defaultParameters = {\n        x: {\n          init: (peak) => peak.x,\n          max: (peak) => peak.x + peak.width * 2,\n          min: (peak) => peak.x - peak.width * 2,\n          gradientDifference: (peak) => peak.width * 2e-3,\n        },\n        y: {\n          init: (peak) => peak.y,\n          max: () => 1.5,\n          min: () => 0,\n          gradientDifference: () => 1e-3,\n        },\n        width: {\n          init: (peak) => peak.width,\n          max: (peak) => peak.width * 4,\n          min: (peak) => peak.width * 0.25,\n          gradientDifference: (peak) => peak.width * 2e-3,\n        },\n      };\n      break;\n    case 'pseudovoigt':\n      paramsFunc = sumOfGaussianLorentzians;\n      defaultParameters = {\n        x: {\n          init: (peak) => peak.x,\n          max: (peak) => peak.x + peak.width * 2,\n          min: (peak) => peak.x - peak.width * 2,\n          gradientDifference: (peak) => peak.width * 2e-3,\n        },\n        y: {\n          init: (peak) => peak.y,\n          max: () => 1.5,\n          min: () => 0,\n          gradientDifference: () => 1e-3,\n        },\n        width: {\n          init: (peak) => peak.width,\n          max: (peak) => peak.width * 4,\n          min: (peak) => peak.width * 0.25,\n          gradientDifference: (peak) => peak.width * 2e-3,\n        },\n        mu: {\n          init: (peak) => (peak.mu !== undefined ? peak.mu : 0.5),\n          min: () => 0,\n          max: () => 1,\n          gradientDifference: () => 0.01,\n        },\n      };\n      break;\n    default:\n      throw new Error('kind of shape is not supported');\n  }\n\n  let x = data.x;\n  let maxY = getMaxValue(data.y);\n  let y = new Array(x.length);\n  for (let i = 0; i < x.length; i++) {\n    y[i] = data.y[i] / maxY;\n  }\n\n  for (let i = 0; i < peaks.length; i++) {\n    peaks[i].y /= maxY;\n  }\n\n  let parameters = assignDeep({}, optimization.parameters, defaultParameters);\n\n  for (let key in parameters) {\n    for (let par in parameters[key]) {\n      if (!Array.isArray(parameters[key][par])) {\n        parameters[key][par] = [parameters[key][par]];\n      }\n      if (\n        parameters[key][par].length !== 1 &&\n        parameters[key][par].length !== peaks.length\n      ) {\n        throw new Error(`The length of ${key}-${par} is not correct`);\n      }\n      for (let index = 0; index < parameters[key][par].length; index++) {\n        if (typeof parameters[key][par][index] === 'number') {\n          let value = parameters[key][par][index];\n          parameters[key][par][index] = () => value;\n        }\n      }\n    }\n  }\n\n  optimization.parameters = parameters;\n\n  return {\n    y,\n    x,\n    maxY,\n    peaks,\n    paramsFunc,\n    optimization,\n  };\n}\n","const toString = Object.prototype.toString;\n\nexport default function isAnyArray(object) {\n  return toString.call(object).endsWith('Array]');\n}\n","import isArray from 'is-any-array';\n\nexport default function checkOptions(data, parameterizedFunction, options) {\n  let {\n    timeout,\n    minValues,\n    maxValues,\n    initialValues,\n    weights = 1,\n    damping = 1e-2,\n    dampingStepUp = 11,\n    dampingStepDown = 9,\n    maxIterations = 100,\n    errorTolerance = 1e-7,\n    centralDifference = false,\n    gradientDifference = 10e-2,\n    improvementThreshold = 1e-3,\n  } = options;\n\n  if (damping <= 0) {\n    throw new Error('The damping option must be a positive number');\n  } else if (!data.x || !data.y) {\n    throw new Error('The data parameter must have x and y elements');\n  } else if (\n    !isArray(data.x) ||\n    data.x.length < 2 ||\n    !isArray(data.y) ||\n    data.y.length < 2\n  ) {\n    throw new Error(\n      'The data parameter elements must be an array with more than 2 points',\n    );\n  } else if (data.x.length !== data.y.length) {\n    throw new Error('The data parameter elements must have the same size');\n  }\n\n  let parameters =\n    initialValues || new Array(parameterizedFunction.length).fill(1);\n\n  let nbPoints = data.y.length;\n  let parLen = parameters.length;\n  maxValues = maxValues || new Array(parLen).fill(Number.MAX_SAFE_INTEGER);\n  minValues = minValues || new Array(parLen).fill(Number.MIN_SAFE_INTEGER);\n\n  if (maxValues.length !== minValues.length) {\n    throw new Error('minValues and maxValues must be the same size');\n  }\n\n  if (!isArray(parameters)) {\n    throw new Error('initialValues must be an array');\n  }\n\n  if (typeof gradientDifference === 'number') {\n    gradientDifference = new Array(parameters.length).fill(gradientDifference);\n  } else if (isArray(gradientDifference)) {\n    if (gradientDifference.length !== parLen) {\n      gradientDifference = new Array(parLen).fill(gradientDifference[0]);\n    }\n  } else {\n    throw new Error(\n      'gradientDifference should be a number or array with length equal to the number of parameters',\n    );\n  }\n\n  let filler;\n  if (typeof weights === 'number') {\n    let value = 1 / weights ** 2;\n    filler = () => value;\n  } else if (isArray(weights)) {\n    if (weights.length < data.x.length) {\n      let value = 1 / weights[0] ** 2;\n      filler = () => value;\n    } else {\n      filler = (i) => 1 / weights[i] ** 2;\n    }\n  } else {\n    throw new Error(\n      'weights should be a number or array with length equal to the number of data points',\n    );\n  }\n\n  let checkTimeout;\n  if (timeout !== undefined) {\n    if (typeof timeout !== 'number') {\n      throw new Error('timeout should be a number');\n    }\n    let endTime = Date.now() + timeout * 1000;\n    checkTimeout = () => Date.now() > endTime;\n  } else {\n    checkTimeout = () => false;\n  }\n\n  let weightSquare = new Array(data.x.length);\n  for (let i = 0; i < nbPoints; i++) {\n    weightSquare[i] = filler(i);\n  }\n\n  return {\n    checkTimeout,\n    minValues,\n    maxValues,\n    parameters,\n    weightSquare,\n    damping,\n    dampingStepUp,\n    dampingStepDown,\n    maxIterations,\n    errorTolerance,\n    centralDifference,\n    gradientDifference,\n    improvementThreshold,\n  };\n}\n","/**\n * the sum of the weighted squares of the errors (or weighted residuals) between the data.y\n * and the curve-fit function.\n * @ignore\n * @param {{x:Array<number>, y:Array<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {Array<number>} parameters - Array of current parameter values\n * @param {function} parameterizedFunction - The parameters and returns a function with the independent variable as a parameter\n * @param {Array} weightSquare - Square of weights\n * @return {number}\n */\nexport default function errorCalculation(\n  data,\n  parameters,\n  parameterizedFunction,\n  weightSquare,\n) {\n  let error = 0;\n  const func = parameterizedFunction(parameters);\n  for (let i = 0; i < data.x.length; i++) {\n    error += Math.pow(data.y[i] - func(data.x[i]), 2) / weightSquare[i];\n  }\n\n  return error;\n}\n","import { Matrix } from 'ml-matrix';\n/**\n * Difference of the matrix function over the parameters\n * @ignore\n * @param {{x:Array<number>, y:Array<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {Array<number>} evaluatedData - Array of previous evaluated function values\n * @param {Array<number>} params - Array of previous parameter values\n * @param {number|array} gradientDifference - The step size to approximate the jacobian matrix\n * @param {boolean} centralDifference - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param {function} paramFunction - The parameters and returns a function with the independent variable as a parameter\n * @return {Matrix}\n */\n\nexport default function gradientFunction(\n  data,\n  evaluatedData,\n  params,\n  gradientDifference,\n  paramFunction,\n  centralDifference,\n) {\n  const nbParams = params.length;\n  const nbPoints = data.x.length;\n  let ans = Matrix.zeros(nbParams, nbPoints);\n\n  let rowIndex = 0;\n  for (let param = 0; param < nbParams; param++) {\n    if (gradientDifference[param] === 0) continue;\n    let delta = gradientDifference[param];\n    let auxParams = params.slice();\n    auxParams[param] += delta;\n    let funcParam = paramFunction(auxParams);\n    if (!centralDifference) {\n      for (let point = 0; point < nbPoints; point++) {\n        ans.set(\n          rowIndex,\n          point,\n          (evaluatedData[point] - funcParam(data.x[point])) / delta,\n        );\n      }\n    } else {\n      auxParams = params.slice();\n      auxParams[param] -= delta;\n      delta *= 2;\n      let funcParam2 = paramFunction(auxParams);\n      for (let point = 0; point < nbPoints; point++) {\n        ans.set(\n          rowIndex,\n          point,\n          (funcParam2(data.x[point]) - funcParam(data.x[point])) / delta,\n        );\n      }\n    }\n    rowIndex++;\n  }\n\n  return ans;\n}\n","import { inverse, Matrix } from 'ml-matrix';\n\nimport gradientFunction from './gradientFunction';\n\n/**\n * Matrix function over the samples\n * @ignore\n * @param {{x:Array<number>, y:Array<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {Array<number>} evaluatedData - Array of previous evaluated function values\n * @return {Matrix}\n */\nfunction matrixFunction(data, evaluatedData) {\n  const m = data.x.length;\n\n  let ans = new Matrix(m, 1);\n\n  for (let point = 0; point < m; point++) {\n    ans.set(point, 0, data.y[point] - evaluatedData[point]);\n  }\n  return ans;\n}\n\n/**\n * Iteration for Levenberg-Marquardt\n * @ignore\n * @param {{x:Array<number>, y:Array<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {Array<number>} params - Array of previous parameter values\n * @param {number} damping - Levenberg-Marquardt parameter\n * @param {number|array} gradientDifference - The step size to approximate the jacobian matrix\n * @param {boolean} centralDifference - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param {function} parameterizedFunction - The parameters and returns a function with the independent variable as a parameter\n * @return {Array<number>}\n */\nexport default function step(\n  data,\n  params,\n  damping,\n  gradientDifference,\n  parameterizedFunction,\n  centralDifference,\n  weights,\n) {\n  let value = damping;\n  let identity = Matrix.eye(params.length, params.length, value);\n\n  const func = parameterizedFunction(params);\n\n  let evaluatedData = new Float64Array(data.x.length);\n  for (let i = 0; i < data.x.length; i++) {\n    evaluatedData[i] = func(data.x[i]);\n  }\n\n  let gradientFunc = gradientFunction(\n    data,\n    evaluatedData,\n    params,\n    gradientDifference,\n    parameterizedFunction,\n    centralDifference,\n  );\n  let residualError = matrixFunction(data, evaluatedData);\n\n  let inverseMatrix = inverse(\n    identity.add(\n      gradientFunc.mmul(\n        gradientFunc.transpose().scale('row', { scale: weights }),\n      ),\n    ),\n  );\n\n  let jacobianWeigthResidualError = gradientFunc.mmul(\n    residualError.scale('row', { scale: weights }),\n  );\n\n  let perturbations = inverseMatrix.mmul(jacobianWeigthResidualError);\n\n  return {\n    perturbations,\n    jacobianWeigthResidualError,\n  };\n}\n","import checkOptions from './checkOptions';\nimport errorCalculation from './errorCalculation';\nimport step from './step';\n\n/**\n * Curve fitting algorithm\n * @param {{x:Array<number>, y:Array<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {function} parameterizedFunction - The parameters and returns a function with the independent variable as a parameter\n * @param {object} [options] - Options object\n * @param {number|array} [options.weights = 1] - weighting vector, if the length does not match with the number of data points, the vector is reconstructed with first value.\n * @param {number} [options.damping = 1e-2] - Levenberg-Marquardt parameter, small values of the damping parameter λ result in a Gauss-Newton update and large\nvalues of λ result in a gradient descent update\n * @param {number} [options.dampingStepDown = 9] - factor to reduce the damping (Levenberg-Marquardt parameter) when there is not an improvement when updating parameters.\n * @param {number} [options.dampingStepUp = 11] - factor to increase the damping (Levenberg-Marquardt parameter) when there is an improvement when updating parameters.\n * @param {number} [options.improvementThreshold = 1e-3] - the threshold to define an improvement through an update of parameters\n * @param {number|array} [options.gradientDifference = 10e-2] - The step size to approximate the jacobian matrix\n * @param {boolean} [options.centralDifference = false] - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param {Array<number>} [options.minValues] - Minimum allowed values for parameters\n * @param {Array<number>} [options.maxValues] - Maximum allowed values for parameters\n * @param {Array<number>} [options.initialValues] - Array of initial parameter values\n * @param {number} [options.maxIterations = 100] - Maximum of allowed iterations\n * @param {number} [options.errorTolerance = 10e-3] - Minimum uncertainty allowed for each point.\n * @param {number} [options.timeout] - maximum time running before throw in seconds.\n * @return {{parameterValues: Array<number>, parameterError: number, iterations: number}}\n */\nexport default function levenbergMarquardt(\n  data,\n  parameterizedFunction,\n  options = {},\n) {\n  let {\n    checkTimeout,\n    minValues,\n    maxValues,\n    parameters,\n    weightSquare,\n    damping,\n    dampingStepUp,\n    dampingStepDown,\n    maxIterations,\n    errorTolerance,\n    centralDifference,\n    gradientDifference,\n    improvementThreshold,\n  } = checkOptions(data, parameterizedFunction, options);\n\n  let error = errorCalculation(\n    data,\n    parameters,\n    parameterizedFunction,\n    weightSquare,\n  );\n\n  let converged = error <= errorTolerance;\n\n  let iteration = 0;\n  for (; iteration < maxIterations && !converged; iteration++) {\n    let previousError = error;\n\n    let { perturbations, jacobianWeigthResidualError } = step(\n      data,\n      parameters,\n      damping,\n      gradientDifference,\n      parameterizedFunction,\n      centralDifference,\n      weightSquare,\n    );\n\n    for (let k = 0; k < parameters.length; k++) {\n      parameters[k] = Math.min(\n        Math.max(minValues[k], parameters[k] - perturbations.get(k, 0)),\n        maxValues[k],\n      );\n    }\n\n    error = errorCalculation(\n      data,\n      parameters,\n      parameterizedFunction,\n      weightSquare,\n    );\n\n    if (isNaN(error)) break;\n\n    let improvementMetric =\n      (previousError - error) /\n      perturbations\n        .transpose()\n        .mmul(perturbations.mulS(damping).add(jacobianWeigthResidualError))\n        .get(0, 0);\n\n    if (improvementMetric > improvementThreshold) {\n      damping = Math.max(damping / dampingStepDown, 1e-7);\n    } else {\n      error = previousError;\n      damping = Math.min(damping * dampingStepUp, 1e7);\n    }\n\n    if (checkTimeout()) {\n      throw new Error(\n        `The execution time is over to ${options.timeout} seconds`,\n      );\n    }\n\n    converged = error <= errorTolerance;\n  }\n\n  return {\n    parameterValues: parameters,\n    parameterError: error,\n    iterations: iteration,\n  };\n}\n","import LM from 'ml-levenberg-marquardt';\n\nconst LEVENBERG_MARQUARDT = 1;\n\nexport function selectMethod(optimizationOptions = {}) {\n  let { kind, options } = optimizationOptions;\n  kind = getKind(kind);\n  switch (kind) {\n    case LEVENBERG_MARQUARDT:\n      return {\n        algorithm: LM,\n        optimizationOptions: checkOptions(kind, options),\n      };\n    default:\n      throw new Error(`Unknown kind algorithm`);\n  }\n}\n\nfunction checkOptions(kind, options = {}) {\n  // eslint-disable-next-line default-case\n  switch (kind) {\n    case LEVENBERG_MARQUARDT:\n      return Object.assign({}, lmOptions, options);\n  }\n}\n\nfunction getKind(kind) {\n  if (typeof kind !== 'string') return kind;\n  switch (kind.toLowerCase().replace(/[^a-z]/g, '')) {\n    case 'lm':\n    case 'levenbergmarquardt':\n      return LEVENBERG_MARQUARDT;\n    default:\n      throw new Error(`Unknown kind algorithm`);\n  }\n}\n\nconst lmOptions = {\n  damping: 1.5,\n  maxIterations: 100,\n  errorTolerance: 1e-8,\n};\n","import { checkInput } from './checkInput';\nimport { selectMethod } from './selectMethod';\n\n// const STATE_INIT = 0;\n// const STATE_MIN = 1;\n// const STATE_MAX = 2;\n// const STATE_GRADIENT_DIFFERENCE = 3;\n\n// const X = 0;\n// const Y = 1;\n// const WIDTH = 2;\n// const MU = 3;\n\n// const keys = ['x', 'y', 'width', 'mu'];\n/**\n * Fits a set of points to the sum of a set of bell functions.\n * @param {object} data - An object containing the x and y data to be fitted.\n * @param {array} peaks - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n * @param {object} [options = {}]\n * @param {object} [options.shape={}] - it's specify the kind of shape used to fitting.\n * @param {string} [options.shape.kind = 'gaussian'] - kind of shape; lorentzian, gaussian and pseudovoigt are supported.\n * @param {object} [options.optimization = {}] - it's specify the kind and options of the algorithm use to optimize parameters.\n * @param {object} [options.optimization.kind = 'lm'] - kind of algorithm. By default it's levenberg-marquardt.\n * @param {object} [options.optimization.parameters] - options of each parameter to be optimized e.g. For a gaussian shape\n *  it could have x, y and with properties, each of which could contain init, min, max and gradientDifference, those options will define the guess,\n *  the min and max value of the parameter (search space) and the step size to approximate the jacobian matrix respectively. Those options could be a number,\n *  array of numbers, callback, or array of callbacks. Each kind of shape has default parameters so it could be undefined.\n * @param {object} [options.optimization.parameters.x] - options for x parameter.\n * @param {number|callback|array<number|callback>} [options.optimization.parameters.x.init] - definition of the starting point of the parameter (the guess),\n *  if it is a callback the method pass the peak as the unique input, if it is an array the first element define the guess of the first peak and so on.\n * @param {number|callback|array<number|callback>} [options.optimization.parameters.x.min] - definition of the lower limit of the parameter,\n *  if it is a callback the method pass the peak as the unique input, if it is an array the first element define the min of the first peak and so on.\n * @param {number|callback|array<number|callback>} [options.optimization.parameters.x.max] - definition of the upper limit of the parameter,\n *  if it is a callback the method pass the peak as the unique input, if it is an array the first element define the max of the first peak and so on.\n * @param {number|callback|array<number|callback>} [options.optimization.parameters.x.gradientDifference] - definition of  the step size to approximate the jacobian matrix of the parameter,\n *  if it is a callback the method pass the peak as the unique input, if it is an array the first element define the gradientDifference of the first peak and so on.\n * @param {object} [options.optimization.options = {}] - options for the specific kind of algorithm.\n * @param {number} [options.optimization.options.timeout] - maximum time running before break in seconds.\n * @param {number} [options.optimization.options.damping=1.5]\n * @param {number} [options.optimization.options.maxIterations=100]\n * @param {number} [options.optimization.options.errorTolerance=1e-8]\n * @returns {object} - A object with fitting error and the list of optimized parameters { parameters: [ {x, y, width} ], error } if the kind of shape is pseudoVoigt mu parameter is optimized.\n */\nexport function optimize(data, peakList, options = {}) {\n  const { y, x, maxY, peaks, paramsFunc, optimization } = checkInput(\n    data,\n    peakList,\n    options,\n  );\n\n  let parameters = optimization.parameters;\n\n  let nbShapes = peaks.length;\n  let parameterKey = Object.keys(parameters);\n  let nbParams = nbShapes * parameterKey.length;\n  let pMin = new Float64Array(nbParams);\n  let pMax = new Float64Array(nbParams);\n  let pInit = new Float64Array(nbParams);\n  let gradientDifference = new Float64Array(nbParams);\n\n  for (let i = 0; i < nbShapes; i++) {\n    let peak = peaks[i];\n    for (let k = 0; k < parameterKey.length; k++) {\n      let key = parameterKey[k];\n      let init = parameters[key].init;\n      let min = parameters[key].min;\n      let max = parameters[key].max;\n      let gradientDifferenceValue = parameters[key].gradientDifference;\n      pInit[i + k * nbShapes] = init[i % init.length](peak);\n      pMin[i + k * nbShapes] = min[i % min.length](peak);\n      pMax[i + k * nbShapes] = max[i % max.length](peak);\n      gradientDifference[i + k * nbShapes] = gradientDifferenceValue[\n        i % gradientDifferenceValue.length\n      ](peak);\n    }\n  }\n\n  let { algorithm, optimizationOptions } = selectMethod(optimization);\n\n  optimizationOptions.minValues = pMin;\n  optimizationOptions.maxValues = pMax;\n  optimizationOptions.initialValues = pInit;\n  optimizationOptions.gradientDifference = gradientDifference;\n\n  let pFit = algorithm({ x, y }, paramsFunc, optimizationOptions);\n\n  let { parameterError: error, iterations } = pFit;\n  let result = { error, iterations, peaks };\n  for (let i = 0; i < nbShapes; i++) {\n    pFit.parameterValues[i + nbShapes] *= maxY;\n    for (let k = 0; k < parameterKey.length; k++) {\n      // we modify the optimized parameters\n      peaks[i][parameterKey[k]] = pFit.parameterValues[i + k * nbShapes];\n    }\n  }\n\n  return result;\n}\n","/**\n * This function returns an array with absolute values\n * @param {Array<Number>} array\n * @return {Number}\n */\nexport function xAbsolute(array) {\n  let tmpArray = array.slice();\n  for (let i = 0; i < tmpArray.length; i++) {\n    if (tmpArray[i] < 0) tmpArray[i] *= -1;\n  }\n\n  return tmpArray;\n}\n","import median from 'ml-array-median';\n\nimport { xAbsolute } from './xAbsolute';\n/**\n * This function calculates the median after taking the reimAbsolute values of the points\n * @param {Array<Number>} array - the array that will be rotated\n * @return {Number}\n */\nexport function xAbsoluteMedian(array) {\n  return median(xAbsolute(array));\n}\n","/**\n * Returns the closest index of a `target` in an ordered array\n * @param {array<Number>} array\n * @param {number} target\n */\n\nexport function xFindClosestIndex(array, target) {\n  let low = 0;\n  let high = array.length - 1;\n  let middle = 0;\n  while (high - low > 1) {\n    middle = low + ((high - low) >> 1);\n    if (array[middle] < target) {\n      low = middle;\n    } else if (array[middle] > target) {\n      high = middle;\n    } else {\n      return middle;\n    }\n  }\n\n  if (low < array.length - 1) {\n    if (Math.abs(target - array[low]) < Math.abs(array[low + 1] - target)) {\n      return low;\n    } else {\n      return low + 1;\n    }\n  } else {\n    return low;\n  }\n}\n","import { xFindClosestIndex } from './xFindClosestIndex';\n\n/**\n * Returns an object with {fromIndex, toIndex} for a specific from / to\n * @param {array} x\n * @param {object} [options={}]\n * @param {number} [options.from] - First value for xyIntegration in the X scale\n * @param {number} [options.fromIndex=0] - First point for xyIntegration\n * @param {number} [options.to] - Last value for xyIntegration in the X scale\n * @param {number} [options.toIndex=x.length-1] - Last point for xyIntegration\n */\n\nexport function xGetFromToIndex(x, options = {}) {\n  let { fromIndex, toIndex, from, to } = options;\n\n  if (fromIndex === undefined) {\n    if (from !== undefined) {\n      fromIndex = xFindClosestIndex(x, from);\n    } else {\n      fromIndex = 0;\n    }\n  }\n  if (toIndex === undefined) {\n    if (to !== undefined) {\n      toIndex = xFindClosestIndex(x, to);\n    } else {\n      toIndex = x.length - 1;\n    }\n  }\n  if (fromIndex > toIndex) [fromIndex, toIndex] = [toIndex, fromIndex];\n  return { fromIndex, toIndex };\n}\n","/* eslint-disable no-loss-of-precision */\n\n/*\nAdapted from: https://github.com/compute-io/erfcinv/blob/aa116e23883839359e310ad41a7c42f72815fc1e/lib/number.js\n\nThe MIT License (MIT)\n\nCopyright (c) 2014-2015 The Compute.io Authors. All rights reserved.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n\nBoost Software License - Version 1.0 - August 17th, 2003\n\nPermission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the \"Software\") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following:\n\nThe copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\n// Coefficients for erfcinv on [0, 0.5]:\nconst Y1 = 8.91314744949340820313e-2;\nconst P1 = [\n  -5.38772965071242932965e-3, 8.22687874676915743155e-3,\n  2.19878681111168899165e-2, -3.65637971411762664006e-2,\n  -1.26926147662974029034e-2, 3.34806625409744615033e-2,\n  -8.36874819741736770379e-3, -5.08781949658280665617e-4,\n];\nconst Q1 = [\n  8.86216390456424707504e-4, -2.33393759374190016776e-3,\n  7.95283687341571680018e-2, -5.27396382340099713954e-2,\n  -7.1228902341542847553e-1, 6.62328840472002992063e-1, 1.56221558398423026363,\n  -1.56574558234175846809, -9.70005043303290640362e-1, 1,\n];\n\n// Coefficients for erfcinv for 0.5 > 1-x >= 0:\nconst Y2 = 2.249481201171875;\nconst P2 = [\n  -3.67192254707729348546, 2.11294655448340526258e1, 1.7445385985570866523e1,\n  -4.46382324441786960818e1, -1.88510648058714251895e1,\n  1.76447298408374015486e1, 8.37050328343119927838, 1.05264680699391713268e-1,\n  -2.02433508355938759655e-1,\n];\nconst Q2 = [\n  1.72114765761200282724, -2.26436933413139721736e1, 1.08268667355460159008e1,\n  4.85609213108739935468e1, -2.01432634680485188801e1,\n  -2.86608180499800029974e1, 3.9713437953343869095, 6.24264124854247537712, 1,\n];\n\n// Coefficients for erfcinv for sqrt( -log(1-x)):\nconst Y3 = 8.07220458984375e-1;\nconst P3 = [\n  -6.81149956853776992068e-10, 2.85225331782217055858e-8,\n  -6.79465575181126350155e-7, 2.14558995388805277169e-3,\n  2.90157910005329060432e-2, 1.42869534408157156766e-1,\n  3.37785538912035898924e-1, 3.87079738972604337464e-1,\n  1.17030156341995252019e-1, -1.63794047193317060787e-1,\n  -1.31102781679951906451e-1,\n];\nconst Q3 = [\n  1.105924229346489121e-2, 1.52264338295331783612e-1, 8.48854343457902036425e-1,\n  2.59301921623620271374, 4.77846592945843778382, 5.38168345707006855425,\n  3.46625407242567245975, 1,\n];\n\nconst Y4 = 9.3995571136474609375e-1;\nconst P4 = [\n  2.66339227425782031962e-12, -2.30404776911882601748e-10,\n  4.60469890584317994083e-6, 1.57544617424960554631e-4,\n  1.87123492819559223345e-3, 9.50804701325919603619e-3,\n  1.85573306514231072324e-2, -2.22426529213447927281e-3,\n  -3.50353787183177984712e-2,\n];\nconst Q4 = [\n  7.64675292302794483503e-5, 2.63861676657015992959e-3,\n  3.41589143670947727934e-2, 2.20091105764131249824e-1,\n  7.62059164553623404043e-1, 1.3653349817554063097, 1,\n];\n\nconst Y5 = 9.8362827301025390625e-1;\nconst P5 = [\n  9.9055709973310326855e-17, -2.81128735628831791805e-14,\n  4.62596163522878599135e-9, 4.49696789927706453732e-7,\n  1.49624783758342370182e-5, 2.09386317487588078668e-4,\n  1.05628862152492910091e-3, -1.12951438745580278863e-3,\n  -1.67431005076633737133e-2,\n];\nconst Q5 = [\n  2.82243172016108031869e-7, 2.75335474764726041141e-5,\n  9.64011807005165528527e-4, 1.60746087093676504695e-2,\n  1.38151865749083321638e-1, 5.91429344886417493481e-1, 1,\n];\n\nfunction polyval(c, x) {\n  let p = 0;\n  for (const coef of c) {\n    p = p * x + coef;\n  }\n  return p;\n}\n\n/**\n * Calculates a rational approximation.\n *\n * @private\n * @param {Number} x\n * @param {Number} v\n * @param {Array} P - array of polynomial coefficients\n * @param {Array} Q - array of polynomial coefficients\n * @param {Number} Y\n * @returns {Number} rational approximation\n */\nfunction calc(x, v, P, Q, Y) {\n  const s = x - v;\n  const r = polyval(P, s) / polyval(Q, s);\n  return Y * x + r * x;\n}\n\n/**\n * Evaluates the complementary inverse error function for an input value.\n *\n * @private\n * @param {Number} x - input value\n * @returns {Number} evaluated complementary inverse error function\n */\nexport default function erfcinv(x) {\n  let sign = false;\n  let val;\n  let q;\n  let g;\n  let r;\n\n  // [1] Special cases...\n\n  // NaN:\n  if (Number.isNaN(x)) {\n    return NaN;\n  }\n  // x not on the interval: [0,2]\n  if (x < 0 || x > 2) {\n    throw new RangeError(\n      `erfcinv()::invalid input argument. Value must be on the interval [0,2]. Value: \\`${x}\\`.`,\n    );\n  }\n  if (x === 0) {\n    return Number.POSITIVE_INFINITY;\n  }\n  if (x === 2) {\n    return Number.NEGATIVE_INFINITY;\n  }\n  if (x === 1) {\n    return 0;\n  }\n  // [2] Get the sign and make use of `erfc` reflection formula: `erfc(-z)=2 - erfc(z)`...\n  if (x > 1) {\n    q = 2 - x;\n    x = 1 - q;\n    sign = true;\n  } else {\n    q = x;\n    x = 1 - x;\n  }\n  // [3] |x| <= 0.5\n  if (x <= 0.5) {\n    g = x * (x + 10);\n    r = polyval(P1, x) / polyval(Q1, x);\n    val = g * Y1 + g * r;\n    return sign ? -val : val;\n  }\n\n  // [4] 1-|x| >= 0.25\n  if (q >= 0.25) {\n    g = Math.sqrt(-2 * Math.log(q));\n    q = q - 0.25;\n    r = polyval(P2, q) / polyval(Q2, q);\n    val = g / (Y2 + r);\n    return sign ? -val : val;\n  }\n  q = Math.sqrt(-Math.log(q));\n\n  // [5] q < 3\n  if (q < 3) {\n    return calc(q, 1.125, P3, Q3, Y3);\n  }\n  // [6] q < 6\n  if (q < 6) {\n    return calc(q, 3, P4, Q4, Y4);\n  }\n  // Note that the smallest number in JavaScript is 5e-324. Math.sqrt( -Math.log( 5e-324 ) ) ~27.2844\n  return calc(q, 6, P5, Q5, Y5);\n\n  // Note that in the boost library, they are able to go to much smaller values, as 128 bit long doubles support ~1e-5000; something which JavaScript does not natively support.\n}\n","export default function rayleighCdf(x, sigma = 1) {\n  if (x < 0) {\n    return 0;\n  }\n  return -Math.expm1(-Math.pow(x, 2) / (2 * Math.pow(sigma, 2)));\n}\n","import fill from 'ml-array-sequential-fill';\nimport SplineInterpolator from 'spline-interpolator';\n\nimport erfcinv from './erfcinv';\nimport rayleighCdf from './rayleighCdf';\n\n/**\n * Determine noise level by san plot methodology (https://doi.org/10.1002/mrc.4882)\n * @param {Array} data - real or magnitude spectra data.\n * @param {object} [options = {}]\n * @param {array} [options.mask] - boolean array to filter data, if the i-th element is true then the i-th element of the distribution will be ignored.\n * @param {number} [options.scaleFactor=1] - factor to scale the data input[i]*=scaleFactor.\n * @param {number} [options.cutOff] - percent of positive signal distribution where the noise level will be determined, if it is not defined the program calculate it.\n * @param {number} [options.factorStd=5] - factor times std to determine what will be marked as signals.\n * @param {boolean} [options.refine=true] - if true the noise level will be recalculated get out the signals using factorStd.\n * @param {boolean} [options.fixOffset=true] - If the baseline is correct, the midpoint of distribution should be zero. if true, the distribution will be centered.\n * @param {number} [options.logBaseY=2] - log scale to apply in the intensity axis in order to avoid big numbers.\n */\n\nexport function xNoiseSanPlot(data, options = {}) {\n  const {\n    mask,\n    cutOff,\n    refine = true,\n    magnitudeMode = false,\n    scaleFactor = 1,\n    factorStd = 5,\n    fixOffset = true,\n  } = options;\n\n  let input;\n  if (Array.isArray(mask) && mask.length === data.length) {\n    input = new Float64Array(data.filter((_e, i) => !mask[i]));\n  } else {\n    input = new Float64Array(data);\n  }\n\n  if (scaleFactor > 1) {\n    for (let i = 0; i < input.length; i++) {\n      input[i] *= scaleFactor;\n    }\n  }\n  input = input.sort().reverse();\n\n  if (fixOffset && !magnitudeMode) {\n    let medianIndex = Math.floor(input.length / 2);\n    let median = 0.5 * (input[medianIndex] + input[medianIndex + 1]);\n    for (let i = 0; i < input.length; i++) {\n      input[i] -= median;\n    }\n  }\n\n  let firstNegativeValueIndex =\n    input[input.length - 1] >= 0 ? input.length : input.findIndex((e) => e < 0);\n  let lastPositiveValueIndex = firstNegativeValueIndex - 1;\n  for (let i = lastPositiveValueIndex; i >= 0; i--) {\n    if (input[i] > 0) {\n      lastPositiveValueIndex = i;\n      break;\n    }\n  }\n\n  let signPositive = input.slice(0, lastPositiveValueIndex + 1);\n  let signNegative = input.slice(firstNegativeValueIndex);\n\n  let cutOffDist = cutOff || determineCutOff(signPositive, { magnitudeMode });\n\n  let pIndex = Math.floor(signPositive.length * cutOffDist);\n  let initialNoiseLevelPositive = signPositive[pIndex];\n\n  let skyPoint = signPositive[0];\n\n  let initialNoiseLevelNegative;\n  if (signNegative.length > 0) {\n    let nIndex = Math.floor(signNegative.length * (1 - cutOffDist));\n    initialNoiseLevelNegative = -1 * signNegative[nIndex];\n  } else {\n    initialNoiseLevelNegative = 0;\n  }\n\n  let noiseLevelPositive = initialNoiseLevelPositive;\n  let noiseLevelNegative = initialNoiseLevelNegative;\n  let cloneSignPositive = signPositive.slice();\n  let cloneSignNegative = signNegative.slice();\n\n  let cutOffSignalsIndexPlus = 0;\n  let cutOffSignalsIndexNeg = 2;\n  if (refine) {\n    let cutOffSignals = noiseLevelPositive * factorStd;\n    cutOffSignalsIndexPlus = signPositive.findIndex((e) => e < cutOffSignals);\n\n    if (cutOffSignalsIndexPlus > -1) {\n      cloneSignPositive = signPositive.slice(cutOffSignalsIndexPlus);\n      noiseLevelPositive =\n        cloneSignPositive[Math.floor(cloneSignPositive.length * cutOffDist)];\n    }\n\n    cutOffSignals = noiseLevelNegative * factorStd;\n    cutOffSignalsIndexNeg = signNegative.findIndex((e) => e < cutOffSignals);\n    if (cutOffSignalsIndexNeg > -1) {\n      cloneSignNegative = signNegative.slice(cutOffSignalsIndexNeg);\n      noiseLevelNegative =\n        cloneSignPositive[\n          Math.floor(cloneSignNegative.length * (1 - cutOffDist))\n        ];\n    }\n  }\n  let correctionFactor = -simpleNormInv(cutOffDist / 2, { magnitudeMode });\n  initialNoiseLevelPositive = initialNoiseLevelPositive / correctionFactor;\n  initialNoiseLevelNegative = initialNoiseLevelNegative / correctionFactor;\n\n  let effectiveCutOffDist, refinedCorrectionFactor;\n\n  if (refine && cutOffSignalsIndexPlus > -1) {\n    effectiveCutOffDist =\n      (cutOffDist * cloneSignPositive.length + cutOffSignalsIndexPlus) /\n      (cloneSignPositive.length + cutOffSignalsIndexPlus);\n    refinedCorrectionFactor =\n      -1 * simpleNormInv(effectiveCutOffDist / 2, { magnitudeMode });\n\n    noiseLevelPositive /= refinedCorrectionFactor;\n\n    if (cutOffSignalsIndexNeg > -1) {\n      effectiveCutOffDist =\n        (cutOffDist * cloneSignNegative.length + cutOffSignalsIndexNeg) /\n        (cloneSignNegative.length + cutOffSignalsIndexNeg);\n      refinedCorrectionFactor =\n        -1 * simpleNormInv(effectiveCutOffDist / 2, { magnitudeMode });\n      if (noiseLevelNegative !== 0) {\n        noiseLevelNegative /= refinedCorrectionFactor;\n      }\n    }\n  } else {\n    noiseLevelPositive /= correctionFactor;\n    noiseLevelNegative /= correctionFactor;\n  }\n\n  return {\n    positive: noiseLevelPositive,\n    negative: noiseLevelNegative,\n    snr: skyPoint / noiseLevelPositive,\n    sanplot: generateSanPlot(input, {\n      fromTo: {\n        positive: { from: 0, to: lastPositiveValueIndex },\n        negative: { from: firstNegativeValueIndex, to: input.length },\n      },\n    }),\n  };\n}\n\nfunction determineCutOff(signPositive, options = {}) {\n  let {\n    magnitudeMode = false,\n    considerList = { from: 0.5, step: 0.1, to: 0.9 },\n  } = options;\n  //generate a list of values for\n  let cutOff = [];\n  let indexMax = signPositive.length - 1;\n  for (let i = 0.01; i <= 0.99; i += 0.01) {\n    let index = Math.round(indexMax * i);\n    let value =\n      -signPositive[index] / simpleNormInv([i / 2], { magnitudeMode });\n    cutOff.push([i, value]);\n  }\n\n  let minKi = Number.MAX_SAFE_INTEGER;\n  let { from, to, step } = considerList;\n  let delta = step / 2;\n  let whereToCutStat = 0.5;\n  for (let i = from; i <= to; i += step) {\n    let floor = i - delta;\n    let top = i + delta;\n    let elementsOfCutOff = cutOff.filter((e) => e[0] < top && e[0] > floor);\n    let averageValue = elementsOfCutOff.reduce((a, b) => a + Math.abs(b[1]), 0);\n    let kiSqrt = 0;\n    for (let j = 0; j < elementsOfCutOff.length; j++) {\n      kiSqrt += Math.pow(elementsOfCutOff[j][1] - averageValue, 2);\n    }\n\n    if (kiSqrt < minKi) {\n      minKi = kiSqrt;\n      whereToCutStat = i;\n    }\n  }\n\n  return whereToCutStat;\n}\n\nfunction simpleNormInv(data, options = {}) {\n  const { magnitudeMode = false } = options;\n\n  if (!Array.isArray(data)) data = [data];\n\n  let from = 0;\n  let to = 2;\n  let step = 0.01;\n  let xTraining = createArray(from, to, step);\n\n  let result = new Float64Array(data.length);\n  let yTraining = new Float64Array(xTraining.length);\n  if (magnitudeMode) {\n    let factor = 1;\n    for (let i = 0; i < yTraining.length; i++) {\n      let finalInput = xTraining[i] * factor;\n      yTraining[i] = 1 - rayleighCdf(finalInput);\n    }\n    let interp = new SplineInterpolator(xTraining, yTraining);\n    for (let i = 0; i < result.length; i++) {\n      let yValue = 2 * data[i];\n      result[i] = -1 * interp.interpolate(yValue);\n    }\n  } else {\n    for (let i = 0; i < result.length; i++) {\n      result[i] = -1 * Math.SQRT2 * erfcinv(2 * data[i]);\n    }\n  }\n  return result.length === 1 ? result[0] : result;\n}\n\nfunction createArray(from, to, step) {\n  let result = new Array(Math.abs((from - to) / step + 1));\n  for (let i = 0; i < result.length; i++) {\n    result[i] = from + i * step;\n  }\n  return result;\n}\n\nfunction generateSanPlot(array, options = {}) {\n  const { fromTo, logBaseY = 2 } = options;\n\n  let sanplot = {};\n  for (let key in fromTo) {\n    let { from, to } = fromTo[key];\n    sanplot[key] =\n      from !== to\n        ? scale(array.slice(from, to), {\n            logBaseY,\n          })\n        : { x: [], y: [] };\n    if (key === 'negative') {\n      sanplot[key].y.reverse();\n    }\n  }\n  return sanplot;\n}\n\nfunction scale(array, options = {}) {\n  const { log10, abs } = Math;\n  const { logBaseY } = options;\n  if (logBaseY) {\n    array = array.slice();\n    const logOfBase = log10(logBaseY);\n    for (let i = 0; i < array.length; i++) {\n      array[i] = log10(abs(array[i])) / logOfBase;\n    }\n  }\n\n  const xAxis = fill({\n    from: 0,\n    to: array.length - 1,\n    size: array.length,\n  });\n\n  return { x: xAxis, y: array };\n}\n","import isAnyArray from 'is-any-array';\n\n/**\n * Throw an error in no an object of x,y arrays\n * @param {DataXY} [data={}]\n */\nexport function xyCheck(data = {}) {\n  if (!isAnyArray(data.x) || !isAnyArray(data.y)) {\n    throw new Error('Data must be an object of x and y arrays');\n  }\n  if (data.x.length !== data.y.length) {\n    throw new Error('The x and y arrays mush have the same length');\n  }\n}\n","/**\n * Normalize an array of zones:\n * - ensure than from < to\n * - merge overlapping zones\n * @param {Array<Zone>} [zones=[]]\n * @param {object} [options={}]\n * @param {number} [options.from=Number.MIN_VALUE]\n * @param {number} [options.to=Number.MAX_VALUE]\n */\n\nexport function zonesNormalize(zones = [], options = {}) {\n  if (zones.length === 0) return [];\n  zones = JSON.parse(JSON.stringify(zones)).map((zone) =>\n    zone.from > zone.to ? { from: zone.to, to: zone.from } : zone,\n  );\n  let { from = Number.NEGATIVE_INFINITY, to = Number.POSITIVE_INFINITY } =\n    options;\n  if (from > to) {\n    [from, to] = [to, from];\n  }\n\n  zones = zones.sort((a, b) => {\n    if (a.from !== b.from) return a.from - b.from;\n    return a.to - b.to;\n  });\n\n  zones.forEach((zone) => {\n    if (from > zone.from) zone.from = from;\n    if (to < zone.to) zone.to = to;\n  });\n\n  zones = zones.filter((zone) => zone.from <= zone.to);\n  if (zones.length === 0) return [];\n\n  let currentZone = zones[0];\n  let result = [currentZone];\n  for (let zone of zones) {\n    if (zone.from <= currentZone.to) {\n      currentZone.to = zone.to;\n    } else {\n      currentZone = zone;\n      result.push(currentZone);\n    }\n  }\n  return result;\n}\n","import { zonesNormalize } from '../zones/zonesNormalize';\n\nimport { xyCheck } from './xyCheck';\n\n/**\n * xyExtract zones from a XY data\n * @param {DataXY} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @param {object} [options={}]\n * @param {Array} [options.zones=[]]\n * @return {Array} Array of points\n */\n\nexport function xyExtract(data = {}, options = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n  let { zones } = options;\n\n  zones = zonesNormalize(zones);\n\n  if (!Array.isArray(zones) || zones.length === 0) return data;\n\n  let newX = [];\n  let newY = [];\n\n  let currentZone = zones[0];\n  let position = 0;\n  loop: for (let i = 0; i < x.length; i++) {\n    while (currentZone.to < x[i]) {\n      position++;\n      currentZone = zones[position];\n      if (!currentZone) {\n        i = x.length;\n        break loop;\n      }\n    }\n    if (x[i] >= currentZone.from) {\n      newX.push(x[i]);\n      newY.push(y[i]);\n    }\n  }\n  return { x: newX, y: newY };\n}\n","import { xGetFromToIndex } from '../x/xGetFromToIndex';\n\nimport { xyCheck } from './xyCheck';\n\n/**\n * Calculate integration\n * @param {DataXY} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @param {object} [options={}]\n * @param {number} [options.from] - First value for xyIntegration in the X scale\n * @param {number} [options.fromIndex=0] - First point for xyIntegration\n * @param {number} [options.to] - Last value for xyIntegration in the X scale\n * @param {number} [options.toIndex=x.length-1] - Last point for xyIntegration\n * @return {number} xyIntegration value on the specified range\n */\n\nexport function xyIntegration(data = {}, options = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n  if (x.length < 2) return 0;\n  const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n  let currentxyIntegration = 0;\n  for (let i = fromIndex; i < toIndex; i++) {\n    currentxyIntegration += ((x[i + 1] - x[i]) * (y[i + 1] + y[i])) / 2;\n  }\n\n  return currentxyIntegration;\n}\n","/**\n * Group peaks based on factor and add group property in peaks\n * @param {array} peakList\n * @param {number} factor\n */\n\nexport function groupPeaks(peakList, factor = 1) {\n  if (peakList.length === 0) return [];\n  let peaks = peakList.sort((a, b) => a.x - b.x);\n\n  let previousPeak = { x: Number.NEGATIVE_INFINITY, width: 1 };\n  let currentGroup = [previousPeak];\n  let groups = [];\n\n  for (let peak of peaks) {\n    if (\n      (peak.x - previousPeak.x) / (peak.width + previousPeak.width) <=\n      factor / 2\n    ) {\n      currentGroup.push(peak);\n    } else {\n      currentGroup = [peak];\n      groups.push(currentGroup);\n    }\n    peak.group = groups.length - 1;\n    previousPeak = peak;\n  }\n\n  return groups;\n}\n","import { optimize } from 'ml-spectra-fitting';\nimport { xGetFromToIndex } from 'ml-spectra-processing';\n\nimport { groupPeaks } from './groupPeaks';\n\n/**\n * Optimize the position (x), max intensity (y), full width at half maximum (width)\n * and the ratio of gaussian contribution (mu) if it's required. It supports three kind of shapes: gaussian, lorentzian and pseudovoigt\n * @param {object} data - An object containing the x and y data to be fitted.\n * @param {Array} peakList - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n * @param {object} [options = {}] -\n * @param {number} [options.factorWidth = 1] - times of width to group peaks.\n * @param {number} [options.factorLimits = 2] - times of width to use to optimize peaks\n * @param {object} [options.shape={}] - it's specify the kind of shape used to fitting.\n * @param {string} [options.shape.kind='gaussian'] - kind of shape; lorentzian, gaussian and pseudovoigt are supported.\n * @param {string} [options.shape.options={}] - options depending the kind of shape\n * @param {object} [options.optimization={}] - it's specify the kind and options of the algorithm use to optimize parameters.\n * @param {string} [options.optimization.kind='lm'] - kind of algorithm. By default it's levenberg-marquardt.\n * @param {object} [options.optimization.options={}] - options for the specific kind of algorithm.\n * @param {number} [options.optimization.options.timeout=10] - maximum time running before break in seconds.\n */\n\nexport function optimizePeaks(data, peakList, options = {}) {\n  const {\n    factorWidth = 1,\n    factorLimits = 2,\n    shape = {\n      kind: 'gaussian',\n    },\n    optimization = {\n      kind: 'lm',\n      options: {\n        timeout: 10,\n      },\n    },\n  } = options;\n\n  if (data.x[0] > data.x[1]) {\n    data.x.reverse();\n    data.y.reverse();\n  }\n\n  let groups = groupPeaks(peakList, factorWidth);\n\n  let results = [];\n  for (const peaks of groups) {\n    const firstPeak = peaks[0];\n    const lastPeak = peaks[peaks.length - 1];\n\n    const from = firstPeak.x - firstPeak.width * factorLimits;\n    const to = lastPeak.x + lastPeak.width * factorLimits;\n    const { fromIndex, toIndex } = xGetFromToIndex(data.x, { from, to });\n    // Multiple peaks\n    const currentRange = {\n      x: data.x.slice(fromIndex, toIndex),\n      y: data.y.slice(fromIndex, toIndex),\n    };\n    if (currentRange.x.length > 5) {\n      let { peaks: optimizedPeaks } = optimize(currentRange, peaks, {\n        shape,\n        optimization,\n      });\n      results = results.concat(optimizedPeaks);\n    } else {\n      results = results.concat(peaks);\n    }\n  }\n  return results;\n}\n","import { optimize } from 'ml-spectra-fitting';\n\n/**\n * This function try to join the peaks that seems to belong to a broad signal in a single broad peak.\n * @param {Array} peakList - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n * @param {object} [options = {}] - options\n * @param {number} [options.width=0.25] - width limit to join peaks.\n * @param {object} [options.shape={}] - it's specify the kind of shape used to fitting.\n * @param {string} [options.shape.kind = 'gaussian'] - kind of shape; lorentzian, gaussian and pseudovoigt are supported.\n * @param {object} [options.optimization = {}] - it's specify the kind and options of the algorithm use to optimize parameters.\n * @param {string} [options.optimization.kind = 'lm'] - kind of algorithm. By default it's levenberg-marquardt.\n * @param {number} [options.optimization.options.timeout = 10] - maximum time running before break in seconds.\n * @param {object} [options.optimization.options = {}] - options for the specific kind of algorithm.\n */\nexport function joinBroadPeaks(peakList, options = {}) {\n  let {\n    width = 0.25,\n    shape = { kind: 'gaussian' },\n    optimization = { kind: 'lm', timeout: 10 },\n  } = options;\n  let broadLines = [];\n  // Optimize the possible broad lines\n  let max = 0;\n\n  let maxI = 0;\n\n  let count = 1;\n  for (let i = peakList.length - 1; i >= 0; i--) {\n    if (peakList[i].soft) {\n      broadLines.push(peakList.splice(i, 1)[0]);\n    }\n  }\n  // Push a feke peak\n  broadLines.push({ x: Number.MAX_VALUE });\n\n  let candidates = { x: [broadLines[0].x], y: [broadLines[0].y] };\n  let indexes = [0];\n  for (let i = 1; i < broadLines.length; i++) {\n    if (Math.abs(broadLines[i - 1].x - broadLines[i].x) < width) {\n      candidates.x.push(broadLines[i].x);\n      candidates.y.push(broadLines[i].y);\n      if (broadLines[i].y > max) {\n        max = broadLines[i].y;\n        maxI = i;\n      }\n      indexes.push(i);\n      count++;\n    } else {\n      if (count > 2) {\n        let fitted = optimize(\n          candidates,\n          [\n            {\n              x: broadLines[maxI].x,\n              y: max,\n              width: Math.abs(\n                candidates.x[0] - candidates.x[candidates.x.length - 1],\n              ),\n            },\n          ],\n          { shape, optimization },\n        );\n        let { peaks: peak } = fitted;\n        peak[0].index = Math.floor(\n          indexes.reduce((a, b) => a + b, 0) / indexes.length,\n        );\n        peak[0].soft = false;\n        peakList.push(peak[0]);\n      } else {\n        // Put back the candidates to the signals list\n        indexes.forEach((index) => {\n          peakList.push(broadLines[index]);\n        });\n      }\n      candidates = { x: [broadLines[i].x], y: [broadLines[i].y] };\n      indexes = [i];\n      max = broadLines[i].y;\n      maxI = i;\n      count = 1;\n    }\n  }\n  peakList.sort((a, b) => {\n    return a.x - b.x;\n  });\n\n  return peakList;\n}\n","import { gsd, joinBroadPeaks, optimizePeaks } from 'ml-gsd';\nimport {\n  xyExtract,\n  xNoiseSanPlot,\n  xAbsoluteMedian,\n} from 'ml-spectra-processing';\n/**\n * Implementation of the peak picking method described by Cobas in:\n * A new approach to improving automated analysis of proton NMR spectra\n * through Global Spectral Deconvolution (GSD)\n * http://www.spectrosco-pyeurope.com/images/stories/ColumnPDFs/TD_23_1.pdf\n * @param {DataXY} data - Object of kind\n * @param {object} [options={}] - options object with some parameter for GSD.\n * @param {number} [options.minMaxRatio = 0.01] - Threshold to determine if a given peak should be considered as a noise, bases on its relative height compared to the highest peak.\n * @param {number} [options.broadRatio = 0.00025] - If broadRatio is higher than 0, then all the peaks which second derivative smaller than broadRatio * maxAbsSecondDerivative will be marked with the soft mask equal to true.\n * @param {number} [options.broadWidth = 0.25] - Threshold to determine if some peak is candidate to clustering into range.\n * @param {number} [options.thresholdFactor=3] - the factor that multiplies the noise level to set up a threshold to select peaks with respect to the intensity.\n * @param {number} [options.noiseLevel = median(data.y) * (options.thresholdFactor || 3)] - Noise threshold in spectrum y units. Default is three/thresholdFactor times the absolute median of data.y.\n * @param {number} [options.factorWidth = 4] - factor to determine the width at the moment to group the peaks in signals in 'GSD.optimizePeaks' function.\n * @param {object} [options.shape={}] - it's specify the kind of shape used to fitting.\n * @param {string} [options.shape.kind = 'gaussian'] - kind of shape; lorentzian, gaussian and pseudovoigt are supported.\n * @param {object} [options.optimization = {}] - it's specify the kind and options of the algorithm use to optimize parameters.\n * @param {string} [options.optimization.kind = 'lm'] - kind of algorithm. By default it's levenberg-marquardt.\n * @param {object} [options.optimization.options = {}] - options for the specific kind of algorithm.\n * @param {Boolean} [options.smoothY = true] - Select the peak intensities from a smoothed version of the independent variables?\n * @param {Boolean} [options.optimize = true] - if it's true adjust an train of gaussian or lorentzian shapes to spectrum.\n * @return {Array}\n */\n\nexport function xyAutoPeaksPicking(data, options = {}) {\n  const {\n    from,\n    to,\n    noiseLevel,\n    thresholdFactor = 3,\n    minMaxRatio = 0.05,\n    broadRatio = 0.00025,\n    useSanPlot = false,\n    smoothY = true,\n    optimize = false,\n    factorWidth = 4,\n    realTopDetection = true,\n    shape = { kind: 'gaussian' },\n    optimization = { kind: 'lm' },\n    broadWidth = 0.25,\n    lookNegative = false,\n    sgOptions = { windowSize: 9, polynomial: 3 },\n  } = options;\n\n  if (from !== undefined && to !== undefined) {\n    data = xyExtract(data, [{ from, to }]);\n  }\n\n  const cutOff = getCutOff(data.y, { noiseLevel, useSanPlot, thresholdFactor });\n\n  let getPeakOptions = {\n    shape,\n    broadWidth,\n    optimize,\n    factorWidth,\n    sgOptions,\n    minMaxRatio,\n    broadRatio,\n    noiseLevel: cutOff.positive,\n    smoothY,\n    optimization,\n    realTopDetection,\n  };\n\n  let peaks = getPeakList(data, getPeakOptions);\n\n  if (lookNegative) {\n    getPeakOptions.noiseLevel = cutOff.negative;\n    peaks.push(...getNegativePeaks(data, getPeakOptions));\n  }\n\n  return peaks;\n}\n\nfunction getPeakList(data, options) {\n  const {\n    shape,\n    broadWidth,\n    optimize,\n    factorWidth,\n    sgOptions,\n    minMaxRatio,\n    broadRatio,\n    noiseLevel,\n    smoothY,\n    optimization,\n    realTopDetection,\n  } = options;\n\n  let peakList = gsd(data, {\n    sgOptions,\n    minMaxRatio,\n    broadRatio,\n    noiseLevel,\n    smoothY,\n    realTopDetection,\n  });\n\n  if (broadWidth) {\n    peakList = joinBroadPeaks(peakList, {\n      width: broadWidth,\n      shape,\n      optimization,\n    });\n  }\n\n  if (optimize) {\n    peakList = optimizePeaks(data, peakList, {\n      shape,\n      factorWidth,\n      optimization,\n    });\n  }\n\n  return peakList;\n}\n\nfunction getNegativePeaks(data, options) {\n  let { x, y } = data;\n  let negativeDataY = new Float64Array(data.y.length);\n  for (let i = 0; i < negativeDataY.length; i++) {\n    negativeDataY[i] = -1 * y[i];\n  }\n\n  let peakList = getPeakList({ x, y: negativeDataY }, options);\n\n  for (let i = 0; i < peakList.length; i++) {\n    peakList[i].y *= -1;\n  }\n  return peakList;\n}\n\nfunction getCutOff(data, options = {}) {\n  const { noiseLevel, useSanPlot, thresholdFactor } = options;\n\n  const formatResult = (noiseLevel) =>\n    typeof noiseLevel === 'number'\n      ? { positive: noiseLevel, negative: -noiseLevel }\n      : noiseLevel;\n\n  if (noiseLevel) {\n    return formatResult(noiseLevel);\n  } else {\n    return useSanPlot\n      ? xNoiseSanPlot(data, { factorStd: thresholdFactor })\n      : formatResult(xAbsoluteMedian(data) * thresholdFactor);\n  }\n}\n","/*\n * This library implements the J analyser described by Cobas et al in the paper:\n * A two-stage approach to automatic determination of 1H NMR coupling constants\n */\nconst patterns = ['s', 'd', 't', 'q', 'quint', 'h', 'sept', 'o', 'n'];\nlet symRatio = 1.5;\nlet maxErrorIter1 = 2.5; // Hz\nlet maxErrorIter2 = 1; // Hz\nlet jAxisKeys = { jAxis: 'x', intensity: 'intensity' };\n\nexport default {\n  /**\n   * The compilation process implements at the first stage a normalization procedure described by Golotvin et al.\n   * embedding in peak-component-counting method described by Hoyes et al.\n   * @param {object} signal\n   * @private\n   */\n  compilePattern: function (signal, options = {}) {\n    let { jAxisKey = jAxisKeys } = options;\n    signal.multiplicity = 'm';\n    // 1.1 symmetrize\n    // It will add a set of peaks(signal.peaksComp) to the signal that will be used during\n    // the compilation process. The unit of those peaks will be in Hz\n    signal.symRank = symmetrizeChoiseBest(signal, {\n      maxError: maxErrorIter1,\n      iteration: 1,\n      jAxisKey,\n    });\n    signal.asymmetric = true;\n    // Is the signal symmetric?\n    if (signal.symRank >= 0.95 && signal.peaksComp.length < 32) {\n      signal.asymmetric = false;\n      let P1, n2, maxFlagged;\n      let k = 1;\n      let Jc = [];\n\n      // Loop over the possible number of coupling contributing to the multiplet\n      for (let n = 0; n < 9; n++) {\n        // 1.2 Normalize. It makes a deep copy of the peaks before to modify them.\n        let peaks = normalize(signal, n);\n        // signal.peaksCompX = peaks;\n        let validPattern = false; // It will change to true, when we find the good patter\n        // Lets check if the signal could be a singulet.\n        if (peaks.length === 1 && n === 0) {\n          validPattern = true;\n        } else {\n          if (peaks.length <= 1) {\n            continue;\n          }\n        }\n        // 1.3 Establish a range for the Heights Hi [peaks.intensity*0.85,peaks.intensity*1.15];\n        let ranges = getRanges(peaks);\n        n2 = Math.pow(2, n);\n\n        // 1.4 Find a combination of integer heights Hi, one from each Si, that sums to 2^n.\n        let heights = null;\n        let counter = 1;\n        while (\n          !validPattern &&\n          (heights = getNextCombination(ranges, n2)) !== null &&\n          counter < 400\n        ) {\n          // 2.1 Number the components of the multiplet consecutively from 1 to 2n,\n          // starting at peak 1\n          let numbering = new Array(heights.length);\n          k = 1;\n          for (let i = 0; i < heights.length; i++) {\n            numbering[i] = new Array(heights[i]);\n            for (let j = 0; j < heights[i]; j++) {\n              numbering[i][j] = k++;\n            }\n          }\n\n          Jc = []; // The array to store the detected j-coupling\n          // 2.2 Set j = 1; J1 = P2 - P1. Flag components 1 and 2 as accounted for.\n          let j = 1;\n          Jc.push(peaks[1].x - peaks[0].x);\n          P1 = peaks[0].x;\n          numbering[0].splice(0, 1); // Flagged\n          numbering[1].splice(0, 1); // Flagged\n          k = 1;\n          let nFlagged = 2;\n          maxFlagged = Math.pow(2, n) - 1;\n          while (Jc.length < n && nFlagged < maxFlagged && k < peaks.length) {\n            counter += 1;\n            // 4.1. Increment j. Set k to the number of the first unflagged component.\n            j++;\n            while (k < peaks.length && numbering[k].length === 0) {\n              k++;\n            }\n            if (k < peaks.length) {\n              // 4.2 Jj = Pk - P1.\n              Jc.push(peaks[k].x - peaks[0].x);\n              // Flag component k and, for each sum of the...\n              numbering[k].splice(0, 1); // Flageed\n              nFlagged++;\n              // Flag the other components of the multiplet\n              for (let u = 2; u <= j; u++) {\n                let jSum = 0;\n                for (let i = 0; i < u; i++) {\n                  jSum += Jc[i];\n                }\n                for (let i = 1; i < numbering.length; i++) {\n                  // Maybe 0.25 Hz is too much?\n                  if (Math.abs(peaks[i].x - (P1 + jSum)) < 0.25) {\n                    numbering[i].splice(0, 1); // Flageed\n                    nFlagged++;\n                    break;\n                  }\n                }\n              }\n            }\n          }\n          // Calculate the ideal patter by using the extracted j-couplings\n          let pattern = idealPattern(Jc);\n          // Compare the ideal pattern with the proposed intensities.\n          // All the intensities have to match to accept the multiplet\n          validPattern = true;\n          for (let i = 0; i < pattern.length; i++) {\n            if (pattern[i].intensity !== heights[i]) {\n              validPattern = false;\n            }\n          }\n        }\n        // If we found a valid pattern we should inform about the pattern.\n        if (validPattern) {\n          updateSignal(signal, Jc);\n        }\n      }\n    }\n    // Before to return, change the units of peaksComp from Hz to PPM again\n    for (let i = 0; i < signal.peaksComp.length; i++) {\n      signal.peaksComp[i].x /= signal.observe;\n    }\n  },\n};\n\n/**\n * @private\n * update the signal\n * @param {*} signal\n * @param {*} Jc\n */\nfunction updateSignal(signal, Jc) {\n  // Update the limits of the signal\n  let peaks = signal.peaksComp; // Always in Hz\n  let nbPeaks = peaks.length;\n  signal.startX = peaks[0].x / signal.observe - peaks[0].width;\n  signal.stopX =\n    peaks[nbPeaks - 1].x / signal.observe + peaks[nbPeaks - 1].width;\n  signal.integralData.from = peaks[0].x / signal.observe - peaks[0].width * 3;\n  signal.integralData.to =\n    peaks[nbPeaks - 1].x / signal.observe + peaks[nbPeaks - 1].width * 3;\n  // Compile the pattern and format the constant couplings\n  signal.maskPattern = signal.mask2;\n  signal.multiplicity = abstractPattern(signal, Jc);\n  signal.pattern = signal.multiplicity; // Our library depends on this parameter, but it is old\n}\n\n/**\n * Returns the multiplet in the compact format\n * @param {object} signal\n * @param {object} Jc\n * @return {String}\n * @private\n */\nfunction abstractPattern(signal, Jc) {\n  let tol = 0.05;\n  let pattern = '';\n  let cont = 1;\n  let newNmrJs = [];\n\n  if (Jc && Jc.length > 0) {\n    Jc.sort(function (a, b) {\n      return b - a;\n    });\n\n    for (let i = 0; i < Jc.length - 1; i++) {\n      if (Math.abs(Jc[i] - Jc[i + 1]) < tol) {\n        cont++;\n      } else {\n        newNmrJs.push({\n          coupling: Math.abs(Jc[i]),\n          multiplicity: patterns[cont],\n        });\n        pattern += patterns[cont];\n        cont = 1;\n      }\n    }\n    let index = Jc.length - 1;\n    newNmrJs.push({\n      coupling: Math.abs(Jc[index]),\n      multiplicity: patterns[cont],\n    });\n    pattern += patterns[cont];\n    signal.nmrJs = newNmrJs;\n  } else {\n    pattern = 's';\n    if (Math.abs(signal.startX - signal.stopX) * signal.observe > 16) {\n      pattern = 'br s';\n    }\n  }\n  return pattern;\n}\n\n/**\n * This function creates an ideal pattern from the given J-couplings\n * @private\n * @param {Array} Jc\n * @return {*[]}\n * @private\n */\nfunction idealPattern(Jc) {\n  let hsum = Math.pow(2, Jc.length);\n  let pattern = [{ x: 0, intensity: hsum }];\n  // To split the initial height\n  for (let i = 0; i < Jc.length; i++) {\n    for (let j = pattern.length - 1; j >= 0; j--) {\n      pattern.push({\n        x: pattern[j].x + Jc[i] / 2,\n        intensity: pattern[j].intensity / 2,\n      });\n      pattern[j].x = pattern[j].x - Jc[i] / 2;\n      pattern[j].intensity = pattern[j].intensity / 2;\n    }\n  }\n  // To sum the heights in the same positions\n  pattern.sort(function compare(a, b) {\n    return a.x - b.x;\n  });\n  for (let j = pattern.length - 2; j >= 0; j--) {\n    if (Math.abs(pattern[j].x - pattern[j + 1].x) < 0.1) {\n      pattern[j].intensity += pattern[j + 1].intensity;\n      pattern.splice(j + 1, 1);\n    }\n  }\n  return pattern;\n}\n\n/**\n * Find a combination of integer heights Hi, one from each Si, that sums to 2n.\n * @param {object} ranges\n * @param {Number} value\n * @return {*}\n * @private\n */\nfunction getNextCombination(ranges, value) {\n  let half = Math.ceil(ranges.values.length * 0.5);\n  let lng = ranges.values.length;\n  let sum = 0;\n  let ok;\n  while (sum !== value) {\n    // Update the indexes to point at the next possible combination\n    ok = false;\n    while (!ok) {\n      ok = true;\n      ranges.currentIndex[ranges.active]++;\n      if (\n        ranges.currentIndex[ranges.active] >=\n        ranges.values[ranges.active].length\n      ) {\n        // In this case, there is no more possible combinations\n        if (ranges.active + 1 === half) {\n          return null;\n        } else {\n          // If this happens we need to try the next active peak\n          ranges.currentIndex[ranges.active] = 0;\n          ok = false;\n          ranges.active++;\n        }\n      } else {\n        ranges.active = 0;\n      }\n    }\n    // Sum the heights for this combination\n    sum = 0;\n    for (let i = 0; i < half; i++) {\n      sum += ranges.values[i][ranges.currentIndex[i]] * 2;\n    }\n    if (ranges.values.length % 2 !== 0) {\n      sum -= ranges.values[half - 1][ranges.currentIndex[half - 1]];\n    }\n  }\n  // If the sum is equal to the expected value, fill the array to return\n  if (sum === value) {\n    let heights = new Array(lng);\n    for (let i = 0; i < half; i++) {\n      heights[i] = ranges.values[i][ranges.currentIndex[i]];\n      heights[lng - i - 1] = ranges.values[i][ranges.currentIndex[i]];\n    }\n    return heights;\n  }\n  return null;\n}\n\n/**\n * This function generates the possible values that each peak can contribute\n * to the multiplet.\n * @param {Array} peaks Array of objects with peaks information {intensity}\n * @return {{values: Array, currentIndex: Array, active: number}}\n * @private\n */\nfunction getRanges(peaks) {\n  let ranges = new Array(peaks.length);\n  let currentIndex = new Array(peaks.length);\n  let min, max;\n  ranges[0] = [1];\n  ranges[peaks.length - 1] = [1];\n  currentIndex[0] = -1;\n  currentIndex[peaks.length - 1] = 0;\n  for (let i = 1; i < peaks.length - 1; i++) {\n    min = Math.round(peaks[i].intensity * 0.85);\n    max = Math.round(peaks[i].intensity * 1.15);\n    ranges[i] = [];\n    for (let j = min; j <= max; j++) {\n      ranges[i].push(j);\n    }\n    currentIndex[i] = 0;\n  }\n  return { values: ranges, currentIndex: currentIndex, active: 0 };\n}\n/**\n * Performs a symmetrization of the signal by using different aproximations to the center.\n * It will return the result of the symmetrization that removes less peaks from the signal\n * @param {object} signal\n * @param {Number} maxError\n * @param {Number} iteration\n * @return {*}\n * @private\n */\nfunction symmetrizeChoiseBest(signal, options = {}) {\n  let { maxError, iteration, jAxisKey = jAxisKeys } = options;\n  let symRank1 = symmetrize(signal, maxError, iteration, jAxisKey);\n  let tmpPeaks = signal.peaksComp;\n  let tmpMask = signal.mask;\n  let cs = signal.delta1;\n  signal.delta1 =\n    (signal.peaks[0].x + signal.peaks[signal.peaks.length - 1].x) / 2;\n  let symRank2 = symmetrize(signal, maxError, iteration, jAxisKey);\n  if (signal.peaksComp.length > tmpPeaks.length) {\n    return symRank2;\n  } else {\n    signal.delta1 = cs;\n    signal.peaksComp = tmpPeaks;\n    signal.mask = tmpMask;\n    return symRank1;\n  }\n}\n\n/**\n * This function will return a set of symmetric peaks that will\n * be the enter point for the patter compilation process.\n * @param {object} signal\n * @param {Number} maxError\n * @param {Number} iteration\n * @return {Number}\n * @private\n */\nfunction symmetrize(signal, maxError, iteration, key) {\n  let { jAxis, intensity } = key;\n  // Before to symmetrize we need to keep only the peaks that possibly conforms the multiplete\n  let max, min, avg, ratio, avgWidth;\n  let peaks = new Array(signal.peaks.length);\n  // Make a deep copy of the peaks and convert PPM ot HZ\n  for (let i = 0; i < peaks.length; i++) {\n    peaks[i] = {\n      x: signal.peaks[i][jAxis] * signal.observe,\n      intensity: signal.peaks[i][intensity],\n      width: signal.peaks[i].width,\n    };\n  }\n  // Join the peaks that are closer than 0.25 Hz\n  for (let i = peaks.length - 2; i >= 0; i--) {\n    if (Math.abs(peaks[i].x - peaks[i + 1].x) < 0.25) {\n      peaks[i].x =\n        peaks[i].x * peaks[i].intensity +\n        peaks[i + 1].x * peaks[i + 1].intensity;\n      peaks[i].intensity = peaks[i].intensity + peaks[i + 1].intensity;\n      peaks[i].x /= peaks[i].intensity;\n      peaks[i].intensity /= 2;\n      peaks[i].width += peaks[i + 1].width;\n      peaks.splice(i + 1, 1);\n    }\n  }\n  signal.peaksComp = peaks;\n  let nbPeaks = peaks.length;\n  let mask = new Array(nbPeaks);\n  signal.mask = mask;\n  let left = 0;\n  let right = peaks.length - 1;\n  let cs = signal.delta1 * signal.observe;\n  let middle = [(peaks[0].x + peaks[nbPeaks - 1].x) / 2, 1];\n  maxError = error(Math.abs(cs - middle[0]));\n  let heightSum = 0;\n  // We try to symmetrize the extreme peaks. We consider as candidates for symmetricing those which have\n  // ratio smaller than 3\n  for (let i = 0; i < nbPeaks; i++) {\n    mask[i] = true;\n    // heightSum += signal.peaks[i].intensity;\n    heightSum += peaks[i].intensity;\n  }\n\n  while (left <= right) {\n    mask[left] = true;\n    mask[right] = true;\n    if (left === right) {\n      if (nbPeaks > 2 && Math.abs(peaks[left].x - cs) > maxError) {\n        mask[left] = false;\n      }\n    } else {\n      max = Math.max(peaks[left].intensity, peaks[right].intensity);\n      min = Math.min(peaks[left].intensity, peaks[right].intensity);\n      ratio = max / min;\n      if (ratio > symRatio) {\n        if (peaks[left].intensity === min) {\n          mask[left] = false;\n          right++;\n        } else {\n          mask[right] = false;\n          left--;\n        }\n      } else {\n        let diffL = Math.abs(peaks[left].x - cs);\n        let diffR = Math.abs(peaks[right].x - cs);\n\n        if (Math.abs(diffL - diffR) < maxError) {\n          avg = Math.min(peaks[left].intensity, peaks[right].intensity);\n          avgWidth = Math.min(peaks[left].width, peaks[right].width);\n          peaks[left].intensity = peaks[right].intensity = avg;\n          peaks[left].width = peaks[right].width = avgWidth;\n          middle = [\n            middle[0] + (peaks[right].x + peaks[left].x) / 2,\n            middle[1] + 1,\n          ];\n        } else {\n          if (Math.max(diffL, diffR) === diffR) {\n            mask[right] = false;\n            left--;\n          } else {\n            mask[left] = false;\n            right++;\n          }\n        }\n      }\n    }\n    left++;\n    right--;\n    // Only alter cs if it is the first iteration of the sym process.\n    if (iteration === 1) {\n      cs = chemicalShift(peaks, mask);\n      // There is not more available peaks\n      if (isNaN(cs)) {\n        return 0;\n      }\n    }\n    maxError = error(Math.abs(cs - middle[0] / middle[1]));\n  }\n  // To remove the weak peaks and recalculate the cs\n  for (let i = nbPeaks - 1; i >= 0; i--) {\n    if (mask[i] === false) {\n      peaks.splice(i, 1);\n    }\n  }\n  cs = chemicalShift(peaks);\n  if (isNaN(cs)) {\n    return 0;\n  }\n  signal.delta1 = cs / signal.observe;\n  // Now, the peak should be symmetric in heights, but we need to know if it is symmetric in x\n  let symFactor = 0;\n  let weight = 0;\n  if (peaks.length > 1) {\n    for (let i = Math.ceil(peaks.length / 2) - 1; i >= 0; i--) {\n      symFactor +=\n        ((3 +\n          Math.min(\n            Math.abs(peaks[i].x - cs),\n            Math.abs(peaks[peaks.length - 1 - i].x - cs),\n          )) /\n          (3 +\n            Math.max(\n              Math.abs(peaks[i].x - cs),\n              Math.abs(peaks[peaks.length - 1 - i].x - cs),\n            ))) *\n        peaks[i].intensity;\n      weight += peaks[i].intensity;\n    }\n    symFactor /= weight;\n  } else {\n    if (peaks.length === 1) {\n      symFactor = 1;\n    }\n  }\n  let newSumHeights = 0;\n  for (let i = 0; i < peaks.length; i++) {\n    newSumHeights += peaks[i].intensity;\n  }\n  symFactor -= ((heightSum - newSumHeights) / heightSum) * 0.12; // Removed peaks penalty\n  // Sometimes we need a second opinion after the first symmetrization.\n  if (symFactor > 0.8 && symFactor < 0.97 && iteration < 2) {\n    return symmetrize(signal, maxErrorIter2, 2, key);\n  } else {\n    // Center the given pattern at cs and symmetrize x\n    if (peaks.length > 1) {\n      let dxi;\n      for (let i = Math.ceil(peaks.length / 2) - 1; i >= 0; i--) {\n        dxi = (peaks[i].x - peaks[peaks.length - 1 - i].x) / 2.0;\n        peaks[i].x = cs + dxi;\n        peaks[peaks.length - 1 - i].x = cs - dxi;\n      }\n    }\n  }\n  return symFactor;\n}\n/**\n * Error validator\n * @param {Number} value\n * @return {Number}\n * @private\n */\nfunction error(value) {\n  let maxError = value * 2.5;\n  if (maxError < 0.75) {\n    maxError = 0.75;\n  }\n  if (maxError > 3) {\n    maxError = 3;\n  }\n  return maxError;\n}\n/**\n * @private\n * 2 stages normalizarion of the peaks heights to Math.pow(2,n).\n * Creates a new mask with the peaks that could contribute to the multiplete\n * @param {object} signal\n * @param {Number} n\n * @return {*}\n */\nfunction normalize(signal, n) {\n  // Perhaps this is slow\n  let peaks = JSON.parse(JSON.stringify(signal.peaksComp));\n  let norm = 0;\n  let norm2 = 0;\n  for (let i = 0; i < peaks.length; i++) {\n    norm += peaks[i].intensity;\n  }\n  norm = Math.pow(2, n) / norm;\n  signal.mask2 = JSON.parse(JSON.stringify(signal.mask));\n\n  let index = signal.mask2.length - 1;\n  for (let i = peaks.length - 1; i >= 0; i--) {\n    peaks[i].intensity *= norm;\n    while (index >= 0 && signal.mask2[index] === false) {\n      index--;\n    }\n    if (peaks[i].intensity < 0.75) {\n      peaks.splice(i, 1);\n      signal.mask2[index] = false;\n    } else {\n      norm2 += peaks[i].intensity;\n    }\n    index--;\n  }\n  norm2 = Math.pow(2, n) / norm2;\n  for (let i = peaks.length - 1; i >= 0; i--) {\n    peaks[i].intensity *= norm2;\n  }\n  return peaks;\n}\n\n/**\n * @private\n * Calculates the chemical shift as the weighted sum of the peaks\n * @param {Array} peaks\n * @param {Array} mask\n * @return {Number}\n */\nfunction chemicalShift(peaks, mask) {\n  let sum = 0;\n  let cs = 0;\n  let area;\n  if (mask) {\n    for (let i = 0; i < peaks.length; i++) {\n      if (mask[i] === true) {\n        area = getArea(peaks[i]);\n        sum += area;\n        cs += area * peaks[i].x;\n      }\n    }\n  } else {\n    for (let i = 0; i < peaks.length; i++) {\n      area = getArea(peaks[i]);\n      sum += area;\n      cs += area * peaks[i].x;\n    }\n  }\n  return cs / sum;\n}\n\n/**\n * Return the area of a Lorentzian function\n * @param {object} peak - object with peak information\n * @return {Number}\n * @private\n */\nfunction getArea(peak) {\n  return Math.abs(peak.intensity * peak.width * 1.57); // 1.772453851);\n}\n","export function joinRanges(ranges) {\n  ranges.sort((a, b) => a.from - b.from);\n  for (let i = 0; i < ranges.length - 1; i++) {\n    if (ranges[i].to > ranges[i + 1].from) {\n      ranges[i].to = Math.max(ranges[i + 1].to, ranges[i].to);\n      ranges[i].signal = ranges[i].signal.concat(ranges[i + 1].signal);\n      ranges[i].integral += ranges[i + 1].integral;\n      ranges.splice(i + 1, 1);\n      i--;\n    }\n  }\n  return ranges;\n}\n","// import { Ranges } from 'spectra-data-ranges';\nimport { xyIntegration } from 'ml-spectra-processing';\n\nimport jAnalyzer from './util/jAnalyzer';\nimport { joinRanges } from './util/joinRanges';\n\n/**\n * This function clustering peaks and calculate the integral value for each range from the peak list returned from extractPeaks function.\n * @param {Object} data - spectra data\n * @param {Array} peakList - nmr signals\n * @param {Object} [options={}] - options object with some parameter for GSD, detectSignal functions.\n * @param {Number} [options.integrationSum=100] - Number of hydrogens or some number to normalize the integral data. If it's zero return the absolute integral value\n * @param {String} [options.integralType='sum'] - option to chose between approx area with peaks or the sum of the points of given range ('sum', 'peaks')\n * @param {Number} [options.frequencyCluster=16] - distance limit to clustering peaks.\n * @param {Number} [options.clean=0.4] - If exits it remove all the signals with integration < clean value\n * @param {Boolean} [options.compile=true] - If true, the Janalyzer function is run over signals to compile the patterns.\n * @param {Boolean} [options.keepPeaks=false] - If true each signal will contain an array of peaks.\n * @param {String} [options.nucleus='1H'] - Nucleus\n * @param {String} [options.frequency=400] - Observed frequency\n * @returns {Array}\n */\n\nexport function peaksToRanges(data, peakList, options = {}) {\n  let {\n    integrationSum = 100,\n    joinOverlapRanges = true,\n    clean = 0.4,\n    compile = true,\n    integralType = 'sum',\n    frequency = 400,\n    frequencyCluster = 16,\n    keepPeaks = false,\n    nucleus = '1H',\n  } = options;\n\n  let signalOptions = {\n    integrationSum,\n    integralType,\n    frequencyCluster,\n    frequency,\n    nucleus,\n  };\n\n  if (data.x[0] > data.x[1]) {\n    data.x = data.x.reverse();\n    data.y = data.y.reverse();\n  }\n\n  let signals = detectSignals(data, peakList, signalOptions);\n  if (clean) {\n    for (let i = 0; i < signals.length; i++) {\n      if (Math.abs(signals[i].integralData.value) < clean) {\n        signals.splice(i, 1);\n      }\n    }\n  }\n\n  if (compile) {\n    let nHi, sum;\n    for (let i = 0; i < signals.length; i++) {\n      jAnalyzer.compilePattern(signals[i]);\n\n      if (\n        signals[i].maskPattern &&\n        signals[i].multiplicity !== 'm' &&\n        signals[i].multiplicity !== ''\n      ) {\n        // Create a new signal with the removed peaks\n        nHi = 0;\n        sum = 0;\n        let peaksO = [];\n        for (let j = signals[i].maskPattern.length - 1; j >= 0; j--) {\n          sum += computeArea(signals[i].peaks[j]);\n          if (signals[i].maskPattern[j] === false) {\n            let peakR = signals[i].peaks.splice(j, 1)[0];\n            peaksO.push({ x: peakR.x, y: peakR.intensity, width: peakR.width });\n            signals[i].mask.splice(j, 1);\n            signals[i].mask2.splice(j, 1);\n            signals[i].maskPattern.splice(j, 1);\n            signals[i].nbPeaks--;\n            nHi += computeArea(peakR);\n          }\n        }\n        if (peaksO.length > 0) {\n          nHi = (nHi * signals[i].integralData.value) / sum;\n          signals[i].integralData.value -= nHi;\n          let peaks1 = [];\n          for (let j = peaksO.length - 1; j >= 0; j--) {\n            peaks1.push(peaksO[j]);\n          }\n          signalOptions.integrationSum = Math.abs(nHi);\n          let ranges = detectSignals(data, peaks1, signalOptions);\n\n          for (let j = 0; j < ranges.length; j++) {\n            signals.push(ranges[j]);\n          }\n        }\n      }\n    }\n    // it was a updateIntegrals function.\n    let sumIntegral = 0;\n    let sumObserved = 0;\n    for (let i = 0; i < signals.length; i++) {\n      sumObserved += Math.abs(Math.round(signals[i].integralData.value));\n    }\n    if (sumObserved !== integrationSum) {\n      sumIntegral = integrationSum / sumObserved;\n      for (let i = 0; i < signals.length; i++) {\n        signals[i].integralData.value *= sumIntegral;\n      }\n    }\n  }\n\n  signals.sort((a, b) => {\n    return b.delta1 - a.delta1;\n  });\n\n  if (clean) {\n    for (let i = signals.length - 1; i >= 0; i--) {\n      if (Math.abs(signals[i].integralData.value) < clean) {\n        signals.splice(i, 1);\n      }\n    }\n  }\n\n  let ranges = []; //new Array(signals.length);\n  for (let i = 0; i < signals.length; i++) {\n    let signal = signals[i];\n    ranges[i] = {\n      from: signal.integralData.from,\n      to: signal.integralData.to,\n      integral: signal.integralData.value,\n      signal: [\n        {\n          kind: signal.kind || 'signal',\n          multiplicity: signal.multiplicity,\n        },\n      ],\n    };\n    if (keepPeaks) {\n      ranges[i].signal[0].peak = signal.peaks;\n    }\n    if (signal.nmrJs) {\n      ranges[i].signal[0].j = signal.nmrJs;\n    }\n    if (!signal.asymmetric || signal.multiplicity === 'm') {\n      ranges[i].signal[0].delta = signal.delta1;\n    }\n  }\n\n  if (joinOverlapRanges) ranges = joinRanges(ranges);\n  // return new Ranges(ranges);\n  return ranges;\n}\n\n/**\n * Extract the signals from the peakList and the given spectrum.\n * @param {object} data - spectra data\n * @param {array} peakList - nmr signals\n * @param {object} [options = {}]\n * @param {number} [options.integrationSum='100'] - Number of hydrogens or some number to normalize the integration data, If it's zero return the absolute integral value\n * @param {string} [options.integralType='sum'] - option to chose between approx area with peaks or the sum of the points of given range\n * @param {number} [options.frequencyCluster=16] - distance limit to clustering the peaks.\n * range = frequencyCluster / observeFrequency -> Peaks withing this range are considered to belongs to the same signal1D\n * @param {string} [options.nucleus='1H'] - - Nucleus\n * @param {String} [options.frequency = 400] - Observed frequency\n * @return {array} nmr signals\n * @private\n */\nfunction detectSignals(data, peakList, options = {}) {\n  let {\n    integrationSum = 100,\n    integralType = 'sum',\n    frequencyCluster = 16,\n    frequency = 400,\n    nucleus = '1H',\n  } = options;\n\n  let signal1D, peaks;\n  let signals = [];\n  let prevPeak = { x: 100000 };\n  let spectrumIntegral = 0;\n  frequencyCluster /= frequency;\n  for (let i = 0; i < peakList.length; i++) {\n    if (Math.abs(peakList[i].x - prevPeak.x) > frequencyCluster) {\n      signal1D = {\n        nbPeaks: 1,\n        units: 'PPM',\n        startX: peakList[i].x - peakList[i].width,\n        stopX: peakList[i].x + peakList[i].width,\n        multiplicity: '',\n        pattern: '',\n        observe: frequency,\n        nucleus,\n        integralData: {\n          from: peakList[i].x - peakList[i].width * 3,\n          to: peakList[i].x + peakList[i].width * 3,\n        },\n        peaks: [\n          {\n            x: peakList[i].x,\n            intensity: peakList[i].y,\n            width: peakList[i].width,\n          },\n        ],\n      };\n      if (peakList[i].kind) signal1D.kind = peakList[i].kind;\n      signals.push(signal1D);\n    } else {\n      let tmp = peakList[i].x + peakList[i].width;\n      signal1D.stopX = Math.max(signal1D.stopX, tmp);\n      signal1D.startX = Math.min(signal1D.startX, tmp);\n      signal1D.nbPeaks++;\n      signal1D.peaks.push({\n        x: peakList[i].x,\n        intensity: peakList[i].y,\n        width: peakList[i].width,\n      });\n      signal1D.integralData.from = Math.min(\n        signal1D.integralData.from,\n        peakList[i].x - peakList[i].width * 3,\n      );\n      signal1D.integralData.to = Math.max(\n        signal1D.integralData.to,\n        peakList[i].x + peakList[i].width * 3,\n      );\n      if (peakList[i].kind) signal1D.kind = peakList[i].kind;\n    }\n    prevPeak = peakList[i];\n  }\n\n  for (let i = 0; i < signals.length; i++) {\n    peaks = signals[i].peaks;\n    let integral = signals[i].integralData;\n    let chemicalShift = 0;\n    let integralPeaks = 0;\n\n    for (let j = 0; j < peaks.length; j++) {\n      let area = computeArea(peaks[j]);\n      chemicalShift += peaks[j].x * area;\n      integralPeaks += area;\n    }\n    signals[i].delta1 = chemicalShift / integralPeaks;\n\n    if (integralType === 'sum') {\n      integral.value = xyIntegration(data, {\n        from: integral.from,\n        to: integral.to,\n      });\n    } else {\n      integral.value = integralPeaks;\n    }\n    spectrumIntegral += integral.value;\n  }\n\n  if (integrationSum > 0) {\n    let integralFactor = integrationSum / spectrumIntegral;\n    for (let i = 0; i < signals.length; i++) {\n      let integral = signals[i].integralData;\n      integral.value *= integralFactor;\n    }\n  }\n\n  return signals;\n}\n\n/**\n * Return the area of a Lorentzian function\n * @param {object} peak - object with peak information\n * @return {Number}\n * @private\n */\nfunction computeArea(peak) {\n  return Math.abs(peak.intensity * peak.width * 1.57); // todo add an option with this value: 1.772453851\n}\n","import { peaksFilterImpurities } from '../peaks/peaksFilterImpurities';\nimport { peaksToRanges } from '../peaks/peaksToRanges';\n\nimport { xyAutoPeaksPicking } from './xyAutoPeaksPicking';\n\n/**\n * Detect peaks, optimize parameters and compile multiplicity if required.\n * @param {DataXY}  data - Object of kind\n * @param {object}  [options={}] - options object with some parameter for GSD.\n * @param {object}  [options.peakPicking={}] - options to peak detection and optimization.\n * @param {number}  [options.peakPicking.minMaxRatio=0.01] - Threshold to determine if a given peak should be considered as a noise, bases on its relative height compared to the highest peak.\n * @param {number}  [options.peakPicking.broadRatio=0.00025] - If broadRatio is higher than 0, then all the peaks which second derivative smaller than broadRatio * maxAbsSecondDerivative will be marked with the soft mask equal to true.\n * @param {number}  [options.peakPicking.broadWidth=0.25] - Threshold to determine if some peak is candidate to clustering into range.\n * @param {number}  [options.peakPicking.noiseLevel=median(data.y) * (options.thresholdFactor || 3)] - Noise threshold in spectrum y units. Default is three/thresholdFactor times the absolute median of data.y.\n * @param {number}  [options.peakPicking.factorWidth=4] - factor to determine the width at the moment to group the peaks in signals in 'GSD.optimizePeaks' function.\n * @param {object}  [options.peakPicking.shape={}] - it's specify the kind of shape used to fitting.\n * @param {string}  [options.peakPicking.shape.kind='gaussian'] - kind of shape; lorentzian, gaussian and pseudovoigt are supported.\n * @param {object}  [options.peakPicking.optimization={}] - it's specify the kind and options of the algorithm use to optimize parameters.\n * @param {string}  [options.peakPicking.optimization.kind='lm'] - kind of algorithm. By default it's levenberg-marquardt.\n * @param {object}  [options.peakPicking.optimization.options={}] - options for the specific kind of algorithm.\n * @param {Boolean} [options.peakPicking.compile=true] - If true, the Janalyzer function is run over signals to compile the patterns.\n * @param {Boolean} [options.peakPicking.smoothY=true] - Select the peak intensities from a smoothed version of the independent variables?\n * @param {Boolean} [options.peakPicking.optimize=true] - if it's true adjust an train of gaussian or lorentzian shapes to spectrum.\n * @param {Boolean} [options.peakPicking.optimize=true] - if it's true adjust an train of gaussian or lorentzian shapes to spectrum.\n * @param {Number}  [options.ranges.integrationSum=100] - Number of hydrogens or some number to normalize the integral data. If it's zero return the absolute integral value\n * @param {String}  [options.ranges.integralType='sum'] - option to chose between approx area with peaks or the sum of the points of given range ('sum', 'peaks')\n * @param {Number}  [options.ranges.frequencyCluster=16] - distance limit to clustering peaks.\n * @param {Number}  [options.ranges.clean=0.4] - If exits it remove all the signals with integration < clean value\n * @param {Boolean} [options.ranges.compile=true] - If true, the Janalyzer function is run over signals to compile the patterns.\n * @param {Boolean} [options.ranges.keepPeaks=false] - If true each signal will contain an array of peaks.\n * @param {String}  [options.ranges.nucleus='1H'] - Nucleus\n * @param {String}  [options.ranges.frequency=400] - Observed frequency\n * @param {object}  [options.impurities={}] - impurities options.\n * @param {string}  [options.impurities.solvent=''] - solvent name.\n * @param {string}  [options.impurities.error=0.025] - tolerance in ppm to assign a impurity.\n * @returns {array} - Array of ranges with {from, to, integral, signals: [{delta, j, multiplicity, peaks}]}\n */\n\nexport function xyAutoRangesPicking(data, options = {}) {\n  let peaks = xyAutoPeaksPicking(data, options.peakPicking);\n  peaks = peaksFilterImpurities(peaks, options.impurities);\n  return peaksToRanges(data, peaks, options.ranges);\n}\n","/**\n * Returns a list of likely nuclei based on an experiment string\n * This is really an hypothesis and should not be used\n * @param {string} experiment\n * @return {string[]}\n */\n\nexport function getNucleusFrom2DExperiment(experiment) {\n  if (typeof experiment !== 'string') {\n    return [];\n  }\n  experiment = experiment.toLowerCase();\n  if (experiment.includes('jres')) {\n    return ['1H'];\n  }\n  if (experiment.includes('hmbc') || experiment.includes('hsqc')) {\n    return ['1H', '13C'];\n  }\n  return ['1H', '1H'];\n}\n","/**\n * Returns an experiment string based on a pulse sequence\n * @param {string} pulse\n * @return {string}\n */\nexport function getSpectrumType(meta = {}, info = {}) {\n  if (meta === null) meta = {};\n  if (typeof meta === 'string') {\n    meta = { pulse: meta };\n  }\n\n  let spectyp;\n  if (Array.isArray(info.$SPECTYP)) {\n    spectyp = (info.$SPECTYP[0] || '').replace(/^<(.*)>$/, '$1').toLowerCase();\n  } else {\n    spectyp = (info.$SPECTYP || '').replace(/^<(.*)>$/, '$1').toLowerCase();\n  }\n\n  if (spectyp) return spectyp;\n\n  let pulse = meta.pulse;\n  if (typeof pulse !== 'string') {\n    return '';\n  }\n\n  pulse = pulse.toLowerCase();\n  if (pulse.includes('zg')) {\n    return '1d';\n  }\n\n  if (\n    pulse.includes('hsqct') ||\n    (pulse.includes('invi') && (pulse.includes('ml') || pulse.includes('di')))\n  ) {\n    return 'hsqctocsy';\n  }\n\n  if (pulse.includes('hsqc') || pulse.includes('invi')) {\n    return 'hsqc';\n  }\n\n  if (\n    pulse.includes('hmbc') ||\n    (pulse.includes('inv4') && pulse.includes('lp'))\n  ) {\n    return 'hmbc';\n  }\n\n  if (pulse.includes('cosy')) {\n    return 'cosy';\n  }\n\n  if (pulse.includes('jres')) {\n    return 'jres';\n  }\n\n  if (\n    pulse.includes('tocsy') ||\n    pulse.includes('mlev') ||\n    pulse.includes('dipsi')\n  ) {\n    return 'tocsy';\n  }\n\n  if (pulse.includes('noesy')) {\n    return 'noesy';\n  }\n\n  if (pulse.includes('roesy')) {\n    return 'roesy';\n  }\n\n  if (pulse.includes('dept')) {\n    return 'dept';\n  }\n\n  if (pulse.includes('jmod') || pulse.includes('apt')) {\n    return 'aptjmod';\n  }\n\n  return '';\n}\n","import { getNucleusFrom2DExperiment } from './getNucleusFrom2DExperiment';\nimport { getSpectrumType } from './getSpectrumType';\n\nexport function getMetaData(info, meta) {\n  const metadata = {\n    dimension: 1,\n    nucleus: [],\n    isFid: false,\n    isFt: false,\n    isComplex: false,\n  };\n\n  maybeAdd(metadata, 'title', info.TITLE);\n  maybeAdd(metadata, 'solvent', info['.SOLVENTNAME']);\n  maybeAdd(\n    metadata,\n    'pulse',\n    info['.PULSESEQUENCE'] || info['.PULPROG'] || meta.PULPROG,\n  );\n  maybeAdd(metadata, 'experiment', getSpectrumType(metadata, info));\n  maybeAdd(metadata, 'temperature', parseFloat(meta.TE || info['.TE']));\n  maybeAdd(metadata, 'frequency', parseFloat(info['.OBSERVEFREQUENCY']));\n  maybeAdd(metadata, 'type', info.DATATYPE);\n  maybeAdd(metadata, 'probe', meta.PROBHD);\n  if (meta.FNTYPE !== undefined) {\n    maybeAdd(metadata, 'acquisitionMode', parseInt(meta.FNTYPE, 10));\n  }\n  maybeAdd(metadata, 'expno', parseInt(meta.EXPNO, 10));\n  if (metadata.type) {\n    if (metadata.type.toUpperCase().indexOf('FID') >= 0) {\n      metadata.isFid = true;\n    } else if (metadata.type.toUpperCase().indexOf('SPECTRUM') >= 0) {\n      metadata.isFt = true;\n    }\n  }\n\n  if (info['.NUCLEUS']) {\n    metadata.nucleus = info['.NUCLEUS'].split(',').map((nuc) => nuc.trim());\n  } else if (info['.OBSERVENUCLEUS']) {\n    metadata.nucleus = [info['.OBSERVENUCLEUS'].replace(/[^A-Za-z0-9]/g, '')];\n  } else {\n    metadata.nucleus = getNucleusFrom2DExperiment(metadata.experiment);\n  }\n\n  metadata.dimension = metadata.nucleus.length;\n\n  if (info.SYMBOL) {\n    let symbols = info.SYMBOL.split(/[, ]+/);\n    if (symbols.includes('R') && symbols.includes('I')) {\n      metadata.isComplex = true;\n    }\n  }\n\n  if (meta.DATE) {\n    metadata.date = new Date(meta.DATE * 1000).toISOString();\n  }\n  return metadata;\n}\n\nfunction maybeAdd(obj, name, value) {\n  if (value !== undefined) {\n    if (typeof value === 'string') {\n      if (value.startsWith('<') && value.endsWith('>')) {\n        value = value.substring(1, value.length - 2);\n      }\n      obj[name] = value.trim();\n    } else {\n      obj[name] = value;\n    }\n  }\n}\n","import { convert } from 'jcampconverter';\nimport { xyAutoRangesPicking } from 'nmr-processing';\n\nimport { getMetaData } from './getMetaData';\n\nexport const fromInfo = getMetaData;\n\n/**\n * Object containing parsed metadata\n * @name NMRMetadata\n * @typedef {object} NMRMetadata\n * @property {number} dimension\n * @property {number[]} nucleus\n * @property {string} title\n * @property {string} solvent\n * @property {string} pulse\n * @property {string} experiment\n * @property {number} temperature - Temperature in Kelvin\n * @property {number} frequency\n * @property {string} probe\n * @property {string} acquisitionMode\n * @property {number} expno - Experience number\n * @property {string} date - Date in ISO string format\n * @property {object} ranges\n */\n\nconst defaultOptions = {\n  computeRanges: false,\n};\n\nconst defaultRangesOptions = {\n  integrationSum: 100,\n  clean: 0.4,\n  compile: true,\n  integralType: 'sum',\n};\n\nconst defaultPeaksOptions = {\n  thresholdFactor: 0.85,\n};\n\n/**\n * Returns a metadata object from JCAMP\n * @param {string} jcampData\n * @param {object} [options={}]\n * @param {boolean} [options.computeRanges=false]\n * @param {number} [options.ranges] - options for ranges computation\n * @return {NMRMetadata} metadata\n */\nexport function fromJcamp(jcampData, options = {}) {\n  options = {\n    ...defaultOptions,\n    ...options,\n  };\n\n  const parsedJcamp = convert(jcampData, {\n    keepRecordsRegExp: /.*/,\n    canonicMetadataLabels: true,\n    withoutXY: false,\n  }).flatten[0];\n\n  let metadata = getMetaData(parsedJcamp.info, parsedJcamp.meta);\n\n  if (\n    options.computeRanges &&\n    metadata.isFt &&\n    metadata.dimension === 1 &&\n    metadata.nucleus[0] === '1H'\n  ) {\n    let { ranges = {}, impurities = {}, peakPicking = {} } = options;\n\n    const rangesOptions = { ...defaultRangesOptions, ...ranges };\n    const peaksOptions = { ...defaultPeaksOptions, ...peakPicking };\n\n    if (metadata.solvent) {\n      impurities.solvent = metadata.solvent;\n    }\n\n    metadata.range = xyAutoRangesPicking(parsedJcamp.spectra[0].data, {\n      impurities,\n      ranges: rangesOptions,\n      peakPicking: peaksOptions,\n    });\n  }\n\n  return metadata;\n}\n\nexport { getSpectrumType } from './getSpectrumType';\n","import { fromJcamp } from 'nmr-metadata';\n\nimport common from '../common';\n\nconst isFid = /[^a-z]fid[^a-z]/i;\nconst replaceFid = /[^a-z]fid[^a-z]?/i;\nexport default {\n  find: (nmr, filename) => {\n    let reference = getReference(filename);\n\n    return nmr.find((nmr) => {\n      return getReference(common.getFilename(nmr)) === reference;\n    });\n  },\n\n  getProperty: (filename) => {\n    const extension = common.getExtension(filename);\n    if (extension === 'jdx' || extension === 'dx' || extension === 'jcamp') {\n      if (isFid.test(filename)) {\n        return 'jcampFID';\n      }\n    }\n    return common.getTargetProperty(filename);\n  },\n\n  process: (filename, content) => {\n    const extension = common.getExtension(filename);\n    let metaData = {};\n    if (extension === 'jdx' || extension === 'dx' || extension === 'jcamp') {\n      let textContent = common.getTextContent(content);\n      metaData = fromJcamp(textContent);\n    }\n    return metaData;\n  },\n\n  jpath: ['spectra', 'nmr'],\n};\n\nconst reg2 = /(.*)\\.(.*)/;\n\nfunction getReference(filename) {\n  if (typeof filename === 'undefined') return undefined;\n\n  let reference = common.getBasename(filename);\n  reference = reference.replace(reg2, '$1');\n\n  if (isFid.test(filename)) {\n    reference = reference.replace(replaceFid, '');\n  }\n  return reference;\n}\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'oan'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'pelletHardness'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'permeability'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","export default {\n  jpath: ['physical'],\n  getEmpty() {\n    return {};\n  },\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'raman'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","export default {\n  jpath: ['stock'],\n  getEmpty() {\n    return {};\n  },\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'thermogravimetricAnalysis'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'uv'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['video'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'voidVolume'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'xps'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'xray'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'xrd'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'xrf'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","const lib = {};\nlib['reaction'] = {}\nimport reactiongeneral from './reaction/general';\nlib['reaction']['general'] = reactiongeneral;\n\nlib['sample'] = {}\nimport samplechromatogram from './sample/chromatogram';\nlib['sample']['chromatogram'] = samplechromatogram;\n\nimport samplecyclicVoltammetry from './sample/cyclicVoltammetry';\nlib['sample']['cyclicVoltammetry'] = samplecyclicVoltammetry;\n\nimport sampledifferentialCentrifugalSedimentation from './sample/differentialCentrifugalSedimentation';\nlib['sample']['differentialCentrifugalSedimentation'] = sampledifferentialCentrifugalSedimentation;\n\nimport sampledifferentialScanningCalorimetry from './sample/differentialScanningCalorimetry';\nlib['sample']['differentialScanningCalorimetry'] = sampledifferentialScanningCalorimetry;\n\nimport sampledls from './sample/dls';\nlib['sample']['dls'] = sampledls;\n\nimport sampleelementAnalysis from './sample/elementAnalysis';\nlib['sample']['elementAnalysis'] = sampleelementAnalysis;\n\nimport samplegenbank from './sample/genbank';\nlib['sample']['genbank'] = samplegenbank;\n\nimport samplegeneral from './sample/general';\nlib['sample']['general'] = samplegeneral;\n\nimport samplehgPorosimetry from './sample/hgPorosimetry';\nlib['sample']['hgPorosimetry'] = samplehgPorosimetry;\n\nimport sampleicp from './sample/icp';\nlib['sample']['icp'] = sampleicp;\n\nimport sampleimage from './sample/image';\nlib['sample']['image'] = sampleimage;\n\nimport sampleir from './sample/ir';\nlib['sample']['ir'] = sampleir;\n\nimport sampleisotherm from './sample/isotherm';\nlib['sample']['isotherm'] = sampleisotherm;\n\nimport sampleiv from './sample/iv';\nlib['sample']['iv'] = sampleiv;\n\nimport samplemass from './sample/mass';\nlib['sample']['mass'] = samplemass;\n\nimport samplenmr from './sample/nmr';\nlib['sample']['nmr'] = samplenmr;\n\nimport sampleoan from './sample/oan';\nlib['sample']['oan'] = sampleoan;\n\nimport samplepelletHardness from './sample/pelletHardness';\nlib['sample']['pelletHardness'] = samplepelletHardness;\n\nimport samplepermeability from './sample/permeability';\nlib['sample']['permeability'] = samplepermeability;\n\nimport samplephysical from './sample/physical';\nlib['sample']['physical'] = samplephysical;\n\nimport sampleraman from './sample/raman';\nlib['sample']['raman'] = sampleraman;\n\nimport samplestock from './sample/stock';\nlib['sample']['stock'] = samplestock;\n\nimport samplethermogravimetricAnalysis from './sample/thermogravimetricAnalysis';\nlib['sample']['thermogravimetricAnalysis'] = samplethermogravimetricAnalysis;\n\nimport sampleuv from './sample/uv';\nlib['sample']['uv'] = sampleuv;\n\nimport samplevideo from './sample/video';\nlib['sample']['video'] = samplevideo;\n\nimport samplevoidVolume from './sample/voidVolume';\nlib['sample']['voidVolume'] = samplevoidVolume;\n\nimport samplexps from './sample/xps';\nlib['sample']['xps'] = samplexps;\n\nimport samplexray from './sample/xray';\nlib['sample']['xray'] = samplexray;\n\nimport samplexrd from './sample/xrd';\nlib['sample']['xrd'] = samplexrd;\n\nimport samplexrf from './sample/xrf';\nlib['sample']['xrf'] = samplexrf;\n\nexport default lib;","import defaultType from './types/default.js';\nimport lib from './types/index';\n\nexport function getType(type, kind, custom) {\n  if (kind) {\n    if (lib[kind][type]) {\n      return Object.assign({}, defaultType, lib[kind][type], custom);\n    }\n  } else {\n    for (kind in lib) {\n      if (lib[kind][type]) {\n        return Object.assign(\n          {},\n          defaultType,\n          lib[kind].default,\n          lib[kind][type],\n          custom,\n        );\n      }\n    }\n  }\n\n  return Object.assign({}, defaultType);\n}\n\nexport function getAllTypes(kind, custom) {\n  let all = [];\n\n  for (let type in lib[kind]) {\n    if (type !== 'default') {\n      all.push(getType(type, kind, custom));\n    }\n  }\n  return all;\n}\n\nexport default lib;\n","/*\n    Modified from https://github.com/justmoon/node-extend\n    Copyright (c) 2014 Stefan Thomas\n */\n\n/* eslint prefer-rest-params: 0 */\n\nlet hasOwn = Object.prototype.hasOwnProperty;\nlet toStr = Object.prototype.toString;\n\nlet isArray = function isArray(arr) {\n  if (typeof Array.isArray === 'function') {\n    return Array.isArray(arr);\n  }\n\n  return toStr.call(arr) === '[object Array]';\n};\n\nlet isPlainObject = function isPlainObject(obj) {\n  if (!obj || toStr.call(obj) !== '[object Object]') {\n    return false;\n  }\n\n  let hasOwnConstructor = hasOwn.call(obj, 'constructor');\n  let hasIsPrototypeOf =\n    obj.constructor &&\n    obj.constructor.prototype &&\n    hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n  // Not own constructor property must be Object\n  if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n    return false;\n  }\n\n  // Own properties are enumerated firstly, so to speed up,\n  // if last one is own, then all properties are own.\n  let key;\n  for (key in obj) {\n    /**/\n  }\n\n  return typeof key === 'undefined' || hasOwn.call(obj, key);\n};\nexport default function defaults() {\n  let options, name, src, copy, copyIsArray, clone;\n  let target = arguments[0];\n  let i = 1;\n  let length = arguments.length;\n  let deep = false;\n\n  // Handle a deep copy situation\n  if (typeof target === 'boolean') {\n    deep = target;\n    target = arguments[1] || {};\n    // skip the boolean and the target\n    i = 2;\n  } else if (\n    (typeof target !== 'object' && typeof target !== 'function') ||\n    target == null\n  ) {\n    target = {};\n  }\n\n  for (; i < length; ++i) {\n    options = arguments[i];\n    // Only deal with non-null/undefined values\n    if (options != null) {\n      // Extend the base object\n      for (name in options) {\n        src = target[name];\n        copy = options[name];\n\n        // Prevent never-ending loop\n        if (target !== copy) {\n          // Recurse if we're merging plain objects or arrays\n          if (\n            deep &&\n            copy &&\n            (isPlainObject(copy) || (copyIsArray = isArray(copy)))\n          ) {\n            if (copyIsArray) {\n              copyIsArray = false;\n              clone = src && isArray(src) ? src : [];\n            } else {\n              clone = src && isPlainObject(src) ? src : {};\n            }\n\n            // Never move original objects, clone them\n            if (typeof target[name] === 'undefined') {\n              target[name] = defaults(deep, clone, copy);\n            } else {\n              defaults(deep, clone, copy);\n            }\n\n            // Don't bring in undefined values\n          } else if (typeof copy !== 'undefined') {\n            if (typeof target[name] === 'undefined') {\n              target[name] = copy;\n            }\n          }\n        }\n      }\n    }\n  }\n\n  // Return the modified object\n  return target;\n}\n","import { getAllTypes, getType } from './types';\nimport util from './types/common';\nimport defaults from './util/defaults';\n\nconst elnPlugin = {\n  util,\n  /**\n   *\n   * @param {*} type\n   * @param {*} doc\n   * @param {*} content\n   * @param {*} customMetadata\n   * @param {object} [options={}]\n   * @param {boolean} [options.keepContent=false]\n   */\n  process(type, doc, content, customMetadata, options = {}) {\n    let filename = content.filename;\n    const typeProcessor = getType(type);\n    const arr = createFromJpath(doc, typeProcessor);\n    const entry = typeProcessor.find(arr, filename);\n    const property = typeProcessor.getProperty(filename, content);\n    if (property === undefined) {\n      throw new Error(`Could not get property of ${filename} (type ${type}`);\n    }\n    const metadata = typeProcessor.process(filename, content);\n\n    metadata[property] = {\n      filename: elnPlugin.getFilename(type, content.filename),\n    };\n\n    if (options.keepContent) {\n      metadata[property].data = util.getContent(content, property);\n    }\n\n    if (entry) {\n      Object.assign(entry, metadata, customMetadata);\n    } else {\n      Object.assign(metadata, customMetadata);\n      arr.push(metadata);\n    }\n\n    return doc;\n  },\n\n  getType(type, doc, kind) {\n    const typeProcessor = getType(type, kind);\n    return getFromJpath(doc, typeProcessor);\n  },\n\n  getFilename(type, filename) {\n    let match = /[^/]*$/.exec(filename);\n    if (match) filename = match[0];\n    const typeProcessor = getType(type);\n    const jpath = typeProcessor.jpath;\n    if (!jpath) throw new Error('No such type or no jpath');\n    return jpath.concat(filename).join('/');\n  },\n\n  getEmpty(kind, content) {\n    const typeProcessors = getAllTypes(kind);\n    if (!content) content = {};\n    for (let i = 0; i < typeProcessors.length; i++) {\n      createFromJpath(content, typeProcessors[i]);\n    }\n\n    return content;\n  },\n\n  defaults(kind, content) {\n    let empty = elnPlugin.getEmpty(kind);\n    defaults(true, content, empty);\n    return content;\n  },\n};\n\nfunction createFromJpath(doc, typeProcessor) {\n  const jpath = typeProcessor.jpath;\n  if (!jpath) {\n    throw new Error('createFromJpath: undefined jpath argument');\n  }\n  for (let i = 0; i < jpath.length; i++) {\n    if (doc[jpath[i]] === undefined) {\n      if (i !== jpath.length - 1) {\n        doc[jpath[i]] = {};\n      } else {\n        doc[jpath[i]] = typeProcessor.getEmpty();\n      }\n    }\n    doc = doc[jpath[i]];\n  }\n  if (jpath.length === 0) {\n    doc = Object.assign(doc, typeProcessor.getEmpty());\n  }\n  return doc;\n}\n\nfunction getFromJpath(doc, typeProcessor) {\n  if (!doc) return undefined;\n  const jpath = typeProcessor.jpath;\n  if (!jpath) throw new Error('getFromJpath: undefined jpath argument');\n  for (let i = 0; i < jpath.length; i++) {\n    if (doc[jpath[i]] === undefined) {\n      return undefined;\n    }\n    doc = doc[jpath[i]];\n  }\n  return doc;\n}\n\nexport default elnPlugin;\n"],"names":["process","getEmpty","jpath","code","date","Date","now","procedure","products","reagents","conditions","meta","remarks","title","reactionRXN","root","stringFromCharCode","String","fromCharCode","ucs2decode","string","output","counter","length","value","extra","charCodeAt","push","ucs2encode","array","index","checkScalarValue","codePoint","Error","toString","toUpperCase","createByte","shift","encodeCodePoint","symbol","utf8encode","codePoints","byteString","readContinuationByte","byteIndex","byteCount","continuationByte","byteArray","decodeSymbol","byte1","byte2","byte3","byte4","utf8decode","tmp","version","encode","decode","exports","defaultByteLength","IOBuffer","constructor","data","options","dataIsGiven","ArrayBuffer","lastWrittenByte","byteLength","offset","dvOffset","isView","buffer","byteOffset","littleEndian","_data","DataView","_mark","_marks","available","isLittleEndian","setLittleEndian","isBigEndian","setBigEndian","skip","n","seek","mark","reset","pushMark","popMark","pop","undefined","rewind","ensureAvailable","lengthNeeded","newLength","newArray","Uint8Array","set","readBoolean","readUint8","readInt8","getInt8","getUint8","readByte","readBytes","bytes","i","readInt16","getInt16","readUint16","getUint16","readInt32","getInt32","readUint32","getUint32","readFloat32","getFloat32","readFloat64","getFloat64","readChar","readChars","result","readUtf8","bString","writeBoolean","writeUint8","writeInt8","setInt8","_updateLastWrittenByte","setUint8","writeByte","writeBytes","writeInt16","setInt16","writeUint16","setUint16","writeInt32","setInt32","writeUint32","setUint32","writeFloat32","setFloat32","writeFloat64","setFloat64","writeChar","str","writeChars","writeUtf8","toArray","notNetcdf","statement","reason","TypeError","padding","readName","nameLength","name","utils","require$$0","types","BYTE","CHAR","SHORT","INT","FLOAT","DOUBLE","num2str","type","Number","num2bytes","str2num","readNumber","size","bufferReader","numbers","Array","readType","trimNull","bind","substring","typesModule","types_1","nonRecord","variable","record","recordDimension","width","step","recordStep","currentOffset","require$$1","ZERO","NC_DIMENSION","NC_VARIABLE","NC_ATTRIBUTE","header","dimList","dimensionsList","id","recordId","recordName","dimensions","globalAttributes","attributesList","variables","variablesList","NC_UNLIMITED","dimensionSize","dim","gAttList","attributeSize","attributes","gAtt","varList","variableSize","v","dimensionality","dimensionsIds","varSize","header_1","dimension","padEnd","attribute","JSON","parse","stringify","getDataVariable","isNaN","join","toString_1","require$$2","readHeader","require$$3","require$$4","NetCDFReader","getAttribute","attributeName","find","val","getDataVariableAsString","variableName","call","dataVariableExists","attributeExists","src","agilentGCMS","reader","time","tic","pointCount","massValues","intensityValues","ms","j","times","series","agilentGCMS_1","finniganGCMS","scanIndex","brukerGCMS","agilentHPLC","intensities","numberPoints","detector","channel","match","replace","delayTime","runtimeLength","samplingInterval","Math","abs","agilentHPLC_1","finniganGCMS_1","shimadzuGCMS","shimadzuGCMS_1","advionGCMS","advionGCMS_1","aiaTemplate","interval","currentTime","aiaTemplate_1","require$$5","require$$6","require$$7","netcdfGcms","instrument_mfr","dataset_origin","mass_values","detector_name","aia_template_revision","source_file_format","ans","addMeta","addVariables","fromAgilentGCMS","fromAgilentHPLC","fromFinniganGCMS","fromAiaTemplate","item","srcModule","w","findBest","atobNative","Buffer","atobBrowserify","a","base64js","atobWebWorker_iOS","buf","b64ToByteArray","prototype","map","ch","atobBest","atob","module","window","base64Js","toByteArray_1","toByteArray","fromByteArray","lookup","revLookup","Arr","len","getLens","b64","validLen","indexOf","placeHoldersLen","lens","_byteLength","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","extraBytes","parts","maxChunkLength","len2","isUtf8","ensureString","blob","encoding","guessEncoding","decoder","TextDecoder","isutf8","parseString","lowercase","toLowerCase","number","includes","GC_MS_FIELDS","complexChromatogram","spectra","chromatogram","existingGCMSFields","label","convertMSFieldToLabel","spectrum","pageValue","x","y","isMSField","canonicDataLabel","convertToFloatArray","stringArray","floatArray","fastParseXYData","yFactor","deltaX","isXYdata","currentData","currentX","firstX","currentY","firstY","endLine","ascii","newLine","isDifference","isLastDifference","lastDifference","isDuplicate","inComment","currentValue","lastValue","isNegative","inValue","skipFirstValue","decimalPosition","pow","duplicate","ascii2","removeCommentRegExp","peakTableSplitRegExp","parsePeakTable","isPeaktable","Object","keys","parseXY","parseXYZ","key","lines","split","values","trim","xFactor","logs","numberOfVariables","forEach","parseXYA","removeSymbolRegExp","isXYAdata","isAnyArray","endsWith","d","e","f","g","h","c","b","_ref","median","input","quickSelectMedian","slice","convertTo3DZ","minZ","maxZ","ySize","xSize","z","lastX","lastY","reverse","medians","row","Float64Array","from","getMedian","minX","min","maxX","max","minY","maxY","noise","generateContourLines","zData","povarHeight0","povarHeight1","povarHeight2","povarHeight3","isOver0","isOver1","isOver2","isOver3","nbSubSpectra","nbPovars","pAx","pAy","pBx","pBy","x0","xN","dx","y0","yN","dy","iter","nbContourLevels","contourLevels","lineZValue","level","contourLevel","side","factor","noiseMultiplier","exp","zValue","iSubSpectra","subSpectra","subSpectraAfter","povar","segments","add2D","noContour","contourLines","minMax","gyromagneticRatio","arguments","_options$fromIndex","fromIndex","_options$toIndex","toIndex","isInteger","maxValue","minValue","rescale","currentMin","currentMax","RangeError","_options$min","autoMinMax","_options$max","indent","repeat","indentData","inspectMatrix","inspectMatrixWithOptions","matrix","maxRows","maxColumns","maxNumSize","inspectData","rows","columns","maxI","maxJ","line","formatNumber","get","numStr","precise","toPrecision","exponential","toExponential","eIndex","installMathOperations","AbstractMatrix","Matrix","add","addS","addM","checkMatrix","newMatrix","sub","subS","subM","subtract","subtractS","subtractM","mul","mulS","mulM","multiply","multiplyS","multiplyM","div","divS","divM","divide","divideS","divideM","mod","modS","modM","modulus","modulusS","modulusM","and","andS","andM","or","orS","orM","xor","xorS","xorM","leftShift","leftShiftS","leftShiftM","signPropagatingRightShift","signPropagatingRightShiftS","signPropagatingRightShiftM","rightShift","rightShiftS","rightShiftM","zeroFillRightShift","zeroFillRightShiftS","zeroFillRightShiftM","not","acos","acosh","asin","asinh","atan","atanh","cbrt","ceil","clz32","cos","cosh","expm1","floor","fround","log","log1p","log10","log2","round","sign","sin","sinh","sqrt","tan","tanh","trunc","arg0","powS","powM","checkRowIndex","outer","checkColumnIndex","checkRowVector","vector","to1DArray","checkColumnVector","checkRowIndices","rowIndices","checkColumnIndices","columnIndices","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","checkNonEmpty","isEmpty","sumByRow","sum","sumByColumn","sumAll","productByRow","productByColumn","productAll","varianceByRow","unbiased","mean","cols","variance","sum1","sum2","varianceByColumn","varianceAll","centerByRow","centerByColumn","centerAll","getScaleByRow","scale","scaleByRow","getScaleByColumn","scaleByColumn","getScaleAll","divider","scaleAll","from1DArray","newRows","newColumns","newData","column","rowVector","columnVector","zeros","ones","fill","rand","random","randInt","eye","diag","l","matrix1","matrix2","isMatrix","klass","apply","callback","to2DArray","copy","toJSON","isRowVector","isColumnVector","isVector","isSquare","isSymmetric","isEchelonForm","previousColumn","checked","isReducedEchelonForm","k","echelonForm","clone","iMax","swapRows","reducedEchelonForm","m","maxRow","p","pivot","setSubMatrix","neg","getRow","getRowVector","setRow","row1","row2","temp","getColumn","getColumnVector","setColumn","swapColumns","column1","column2","addRowVector","subRowVector","mulRowVector","divRowVector","addColumnVector","subColumnVector","mulColumnVector","divColumnVector","mulRow","mulColumn","by","NaN","NEGATIVE_INFINITY","maxIndex","idx","POSITIVE_INFINITY","minIndex","maxRowIndex","minRow","minRowIndex","maxColumn","maxColumnIndex","minColumn","minColumnIndex","norm","cumulativeSum","dot","vector2","vector1","mmul","other","Bcolj","s","strassen2x2","a11","b11","a12","b12","a21","b21","a22","b22","m1","m2","m3","m4","m5","m6","m7","c00","c01","c10","c11","strassen3x3","a00","a01","a02","a10","a20","b00","b01","b02","b10","b20","m8","m9","m10","m11","m12","m13","m14","m15","m16","m17","m18","m19","m20","m21","m22","m23","c02","c12","c20","c21","c22","mmulStrassen","r1","c1","r2","c2","console","warn","embed","mat","r","resultat","blockMult","halfRows","parseInt","halfCols","subMatrix","scaleRows","isFinite","scaleColumns","flipRows","middle","first","last","flipColumns","kroneckerProduct","q","kroneckerSum","AxI","IxB","transpose","sortRows","compareFunction","compareNumbers","sort","sortColumns","subMatrixRow","indices","subMatrixColumn","selection","rowIndex","columnIndex","trace","product","standardDeviation","center","Symbol","for","isArrayOfNumbers","every","element","randomInt","diagonal","identity","negate","tensorProduct","nRows","nColumns","arrayData","removeRow","splice","addRow","removeColumn","newRow","addColumn","WrapperMatrix2D","LuDecomposition","lu","pivotVector","pivotSign","t","LUcolj","kmax","LU","isSingular","col","solve","count","X","determinant","lowerTriangularMatrix","upperTriangularMatrix","pivotPermutationVector","hypotenuse","QrDecomposition","qr","rdiag","nrm","QR","Rdiag","isFullRank","orthogonalMatrix","SingularValueDecomposition","computeLeftSingularVectors","computeRightSingularVectors","autoTranspose","wantu","Boolean","wantv","swapped","aux","nu","ni","U","V","work","si","nct","nrt","mrc","pp","eps","EPSILON","kase","alpha","MIN_VALUE","ks","cs","sn","sp","spm1","epm1","sk","ek","Y","threshold","scols","Ls","rightSingularVectors","VL","vrows","urows","VLU","solveForDiagonal","inverse","vcols","ucols","condition","norm2","rank","tol","ii","leftSingularVectors","diagonalMatrix","useSVD","leftHandSide","rightHandSide","_typeof","obj","iterator","sequentialFill","_options","_options$from","_options$to","to","_options$size","isArray","_i","global","factory","this","ascending","bisector","compare","ascendingComparator","left","lo","hi","mid","right","ascendingBisect","bisectRight","bisectLeft","descending","number$1","deviation","extent","constant","range","stop","e10","e5","e2","ticks","tickStep","step0","step1","LN10","error","sturges","LN2","histogram","domain","xz","x1","tz","bins","bin","_","thresholds","quantile","freedmanDiaconis","scott","merge","arrays","merged","pairs","permute","indexes","permutes","scan","xi","xj","shuffle","i0","i1","zip","bisect","thresholdFreedmanDiaconis","thresholdScott","thresholdSturges","quincunx","u","smoothingSpline","sigma","lambda","params","mu","SplineInterpolator","xIn","yIn","interpolate","xStart","xStop","delta","Infinity","curve","nInterval","vals","splineInterpolator","postProcessingNMR","entriesFlat","entry","observeFrequency","shiftOffsetVal","ntuples","xUnits","nucleus","startsWith","$NUC2","f2index","$NUC1","yType","unit","pageSymbolIndex","pageSymbol","units","ratio0","ratio1","ratio","profiling","action","simpleChromatogram","intensity","postProcessing","newNtuples","twoD","wantXY","keepSpectra","prepareNtuplesDatatable","currentEntry","kind","xIndex","yIndex","firstVariable","secondVariable","charAt","lowerCaseSymbol","vardim","nbPoints","varname","yUnits","prepareSpectrum","ntuplesSeparatorRegExp","defaultOptions","keepRecordsRegExp","canonicDataLabels","canonicMetadataLabels","dynamicTyping","withoutXY","convert","jcamp","entries","tmpResult","children","parentsStack","ldrs","ldr","position","dataLabel","dataValue","infos","datatable","parentEntry","info","dataType","dataClass","xType","shiftOffsetNum","vartype","varform","page","sampleDescription","target","flatten","common","getBasename","filename","base","getReference","getExtension","extension","getFilename","typeEntry","basenameFind","typeEntries","reference","referenceFind","getTargetProperty","getContent","content","getTextContent","getBufferContent","getMetaFromJcamp","metaData","textContent","parsed","cheminfo","bufferContent","parseNetCDF","getProperty","months","MONTHS","genbankToJson","sequence","resultsArray","currentFeatureNote","genbankAnnotationKey","LOCUS_TAG","DEFINITION_TAG","ACCESSION_TAG","VERSION_TAG","KEYWORDS_TAG","SOURCE_TAG","ORGANISM_TAG","REFERENCE_TAG","AUTHORS_TAG","CONSORTIUM_TAG","TITLE_TAG","JOURNAL_TAG","PUBMED_TAG","REMARK_TAG","FEATURES_TAG","BASE_COUNT_TAG","ORIGIN_TAG","END_SEQUENCE_TAG","fieldName","subFieldType","featureLocationIndentation","lastLineWasFeaturesTag","lastLineWasLocation","hasFoundLocus","lineFieldName","getLineFieldName","getLineVal","isSubKey","isSubKeyword","isKey","isKeyword","parseLocus","parseFeatures","parseOrigin","parseMultiLineField","ref","references","parseReference","endSeq","postProcessCurSeq","getCurrentFeature","features","postProcessGenbankFeature","removeFieldName","locusName","moleculeType","circular","seq","dateStr","genbankDivision","dateMatch","setFullYear","setUTCMonth","setDate","setUTCHours","setMinutes","setSeconds","setMilliseconds","toISOString","fName","subType","refs","lastRef","strand","getLengthOfWhiteSpaceBeforeStartOfLetters","isFeatureLineRunon","parseFeatureLocation","isNote","parseFeatureNote","newFeature","feat","notes","qual","locStr","locArr","lineArr","currentNotes","resultKey","fieldValue","substr","gene","ApEinfo_label","organism","locus_tag","note","indentationOfLine","trimmed","exec","genbank","toReturn","genbankParser","parsedSequence","description","mf","molfile","mw","keyword","impurities","cdcl3","tms","proton","coupling","multiplicity","solvent","h2o","acetic_acid","acetone","acetonitrile","benzene","bhtb","chloroform","cyclohexane","dichloromethane","diethyl_ether","diglyme","dimethylacetamide","dimethylformamide","dimethyl_sulfoxide","dioxane","ethanol","ethyl_acetate","ethyl_methyl_ketone","ethylene_glycol","hmpag","methanol","nitromethane","pyridine","silicone_greasei","tetrahydrofuran","toluene","triethylamine","dmso","c6d6","cd3cn","cd3od","d2o","toCheck","peaksFilterImpurities","peakList","remove","solventImpurities","impurity","impurityShifts","checkImpurity","tolerance","difference","asymmetric","GAUSSIAN_EXP_FACTOR","ROOT_PI_OVER_LN2","PI","ROOT_THREE","ROOT_2LN2","ROOT_2LN2_MINUS_ONE","erfinv","ln1MinusXSqrd","lnEtcBy2Plus2","firstSqrt","secondSqrt","Shape1D","Gaussian","fwhm","sd","height","widthToFWHM","fwhmToWidth","fct","getArea","getFactor","area","getData","Lorentzian","PseudoVoigt","lorentzian","gaussian","getFactorLorentzian","getFactorGaussian","getShape1D","shapeOptions","unHandled","SavitzkyGolay","ys","xs","windowSize","derivative","polynomial","half","np","weights","fullWeights","hs","constantH","wg1","wg2","d1","d2","getHs","wg","GramPoly","Grampoly","GenFact","gf","Weight","gsd","noiseLevel","sgOptions","shape","smoothY","heightFactor","broadRatio","maxCriteria","minMaxRatio","derivativeThreshold","realTopDetection","equalSpaced","isEqualSpaced","getNoiseLevel","yData","dY","ddY","SG","xData","dX","maxDdy","lastMax","lastMin","minddY","intervalL","intervalR","broadMask","widthProcessor","signals","lastK","possible","frequency","distanceJ","minDistance","gettingCloser","MAX_VALUE","soft","yLeft","yRight","determineRealTop","maxDx","minDx","MAX_SAFE_INTEGER","stddev","averageDeviations","beta","gamma","currentPoint","isEnumerable","propertyIsEnumerable","getSymbols","getOwnPropertySymbols","assignSymbols","isObject","args","arg","names","isValidKey","assign","assignDeepModule","isPrimitive","setFWHM","setHeight","squareFWHM","setMu","sumOfGaussianLorentzians","nL","sumOfGaussians","sumOfLorentzians","checkInput","peaks","optimization","paramsFunc","defaultParameters","init","peak","gradientDifference","getMaxValue","parameters","assignDeep","par","object","checkOptions","parameterizedFunction","timeout","minValues","maxValues","initialValues","damping","dampingStepUp","dampingStepDown","maxIterations","errorTolerance","centralDifference","improvementThreshold","parLen","MIN_SAFE_INTEGER","filler","checkTimeout","endTime","weightSquare","errorCalculation","func","gradientFunction","evaluatedData","paramFunction","nbParams","param","auxParams","funcParam","point","funcParam2","matrixFunction","gradientFunc","residualError","inverseMatrix","jacobianWeigthResidualError","perturbations","levenbergMarquardt","converged","iteration","previousError","improvementMetric","parameterValues","parameterError","iterations","LEVENBERG_MARQUARDT","selectMethod","optimizationOptions","getKind","algorithm","LM","lmOptions","optimize","nbShapes","parameterKey","pMin","pMax","pInit","gradientDifferenceValue","pFit","xAbsolute","tmpArray","xAbsoluteMedian","xFindClosestIndex","low","high","xGetFromToIndex","Y1","P1","Q1","Y2","P2","Q2","Y3","P3","Q3","Y4","P4","Q4","Y5","P5","Q5","polyval","coef","calc","P","Q","erfcinv","rayleighCdf","xNoiseSanPlot","mask","cutOff","refine","magnitudeMode","scaleFactor","factorStd","fixOffset","filter","_e","medianIndex","firstNegativeValueIndex","findIndex","lastPositiveValueIndex","signPositive","signNegative","cutOffDist","determineCutOff","pIndex","initialNoiseLevelPositive","skyPoint","initialNoiseLevelNegative","nIndex","noiseLevelPositive","noiseLevelNegative","cloneSignPositive","cloneSignNegative","cutOffSignalsIndexPlus","cutOffSignalsIndexNeg","cutOffSignals","correctionFactor","simpleNormInv","effectiveCutOffDist","refinedCorrectionFactor","positive","negative","snr","sanplot","generateSanPlot","fromTo","considerList","indexMax","minKi","whereToCutStat","top","elementsOfCutOff","averageValue","reduce","kiSqrt","xTraining","createArray","yTraining","finalInput","interp","yValue","SQRT2","logBaseY","logOfBase","xAxis","xyCheck","zonesNormalize","zones","zone","currentZone","xyExtract","newX","newY","loop","xyIntegration","currentxyIntegration","groupPeaks","previousPeak","currentGroup","groups","group","optimizePeaks","factorWidth","factorLimits","results","firstPeak","lastPeak","currentRange","optimizedPeaks","concat","joinBroadPeaks","broadLines","candidates","fitted","xyAutoPeaksPicking","thresholdFactor","useSanPlot","broadWidth","lookNegative","getCutOff","getPeakOptions","getPeakList","getNegativePeaks","negativeDataY","formatResult","patterns","symRatio","maxErrorIter1","maxErrorIter2","jAxisKeys","jAxis","compilePattern","signal","jAxisKey","symRank","symmetrizeChoiseBest","maxError","peaksComp","n2","maxFlagged","Jc","normalize","validPattern","ranges","getRanges","heights","getNextCombination","numbering","nFlagged","jSum","pattern","idealPattern","updateSignal","observe","nbPeaks","startX","stopX","integralData","maskPattern","mask2","abstractPattern","cont","newNmrJs","nmrJs","hsum","lng","ok","currentIndex","active","symRank1","symmetrize","tmpPeaks","tmpMask","delta1","symRank2","avg","avgWidth","heightSum","diffL","diffR","chemicalShift","symFactor","weight","newSumHeights","dxi","joinRanges","integral","peaksToRanges","integrationSum","joinOverlapRanges","clean","compile","integralType","frequencyCluster","keepPeaks","signalOptions","detectSignals","nHi","jAnalyzer","peaksO","computeArea","peakR","peaks1","sumIntegral","sumObserved","signal1D","prevPeak","spectrumIntegral","integralPeaks","integralFactor","xyAutoRangesPicking","peakPicking","getNucleusFrom2DExperiment","experiment","getSpectrumType","pulse","spectyp","$SPECTYP","getMetaData","metadata","isFid","isFt","isComplex","maybeAdd","TITLE","PULPROG","parseFloat","TE","DATATYPE","PROBHD","FNTYPE","EXPNO","nuc","SYMBOL","symbols","DATE","computeRanges","defaultRangesOptions","defaultPeaksOptions","fromJcamp","jcampData","parsedJcamp","rangesOptions","peaksOptions","replaceFid","nmr","test","reg2","lib","reactiongeneral","samplechromatogram","samplecyclicVoltammetry","sampledifferentialCentrifugalSedimentation","sampledifferentialScanningCalorimetry","sampledls","sampleelementAnalysis","samplegenbank","samplegeneral","samplehgPorosimetry","sampleicp","sampleimage","sampleir","sampleisotherm","sampleiv","samplemass","samplenmr","sampleoan","samplepelletHardness","samplepermeability","samplephysical","sampleraman","samplestock","samplethermogravimetricAnalysis","sampleuv","samplevideo","samplevoidVolume","samplexps","samplexray","samplexrd","samplexrf","getType","custom","defaultType","default","getAllTypes","all","hasOwn","hasOwnProperty","toStr","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","defaults","copyIsArray","deep","elnPlugin","util","doc","customMetadata","typeProcessor","createFromJpath","property","keepContent","getFromJpath","typeProcessors","empty"],"mappings":"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