{"version":3,"file":"openchemlib-utils.js","sources":["../src/util/tagAtom.js","../src/diastereotopic/addDiastereotopicMissingChirality.js","../src/util/makeRacemic.js","../src/diastereotopic/getDiastereotopicAtomIDs.js","../src/diastereotopic/getDiastereotopicAtomIDsAndH.js","../src/diastereotopic/toDiastereotopicSVG.js","../src/diastereotopic/groupDiastereotopicAtomIDs.js","../src/diastereotopic/getGroupedDiastereotopicAtomIDs.js","../src/diastereotopic/getDiastereotopicAtomIDsFromMolfile.js","../src/util/isCsp3.js","../src/hose/getHoseCodesForAtoms.js","../src/hose/getHoseCodesForAtom.js","../src/hose/getHoseCodesFromDiastereotopicID.js","../src/hose/getHoseCodesAndDiastereotopicIDs.js","../src/hose/getHoseCodesForPath.js","../src/util/combineSmiles.js","../src/util/getAtomsInfo.js","../node_modules/is-any-array/lib-esm/index.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-floyd-warshall/src/index.js","../src/util/getConnectivityMatrix.js","../node_modules/atom-sorter/src/index.js","../src/util/getMF.js","../src/util/nbOH.js","../src/util/nbCOOH.js","../src/util/nbCHO.js","../src/util/nbNH2.js","../src/util/nbCN.js","../src/path/getPathAndTorsion.js","../src/path/getPathsInfo.js","../src/path/getShortestPaths.js","../node_modules/isutf8/dist/index.esm.js","../node_modules/ensure-string/lib-esm/index.js","../node_modules/papaparse/papaparse.min.js","../src/db/utils/getMoleculeCreators.js","../src/db/utils/appendCSV.js","../src/db/utils/appendColor.js","../node_modules/sdf-parser/src/getEntriesBoundaries.js","../node_modules/sdf-parser/src/util/getMolecule.js","../node_modules/sdf-parser/src/parse.js","../src/db/utils/appendSDF.js","../src/db/utils/appendSmilesList.js","../src/db/utils/pushEntry.js","../src/db/utils/pushMoleculeInfo.js","../src/util/noWait.js","../src/db/utils/search.js","../src/db/MoleculesDB.js","../src/features/getAtomFeatures.js","../src/misc/toVisualizerMolfile.js","../src/misc/dwar/utils/getParts.js","../src/misc/dwar/utils/parseColumnbProperties.js","../src/misc/dwar/utils/parseData.js","../src/misc/dwar/parseDwar.js","../src/fragment/fragmentAcyclicSingleBonds.js","../src/reaction/utils/getReactantInfo.js","../src/reaction/utils/applyOneReactantReaction.js","../src/reaction/applyReactions.js"],"sourcesContent":["let xAtomicNumber = 0;\n\n/**\n * Tag an atom to be able to visualize it\n * @param {import('openchemlib').Molecule} molecule\n * @param {number} iAtom\n */\nexport function tagAtom(molecule, iAtom) {\n  let customLabel = `${molecule.getAtomLabel(iAtom)}*`;\n  molecule.setAtomCustomLabel(iAtom, customLabel);\n  if (molecule.getAtomicNo(iAtom) === 1) {\n    molecule.setAtomicNo(iAtom, getXAtomicNumber(molecule));\n  } else {\n    // we can not use X because we would have problems with valencies if it is\n    // expanded hydrogens or not\n    // we can not only use a custom label because it does not count for the canonisation\n    molecule.setAtomMass(iAtom, molecule.getAtomMass(iAtom) + 5);\n  }\n  return customLabel;\n}\n\nfunction getXAtomicNumber(molecule) {\n  if (!xAtomicNumber) {\n    const OCL = molecule.getOCL();\n    xAtomicNumber = OCL.Molecule.getAtomicNoFromLabel(\n      'X',\n      OCL.Molecule.cPseudoAtomX,\n    );\n  }\n  return xAtomicNumber;\n}\n","import { tagAtom } from '../util/tagAtom';\n\n/**\n * Add either missing chirality of diastereotopic missing chirality\n * The problem is that sometimes we need to add chiral bond that was not planned because it is the same group\n * This is the case for example for the valine where the 2 C of the methyl groups are diastereotopic\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} [options={}]\n * @param {number} [options.esrType=cESRTypeAnd]\n */\nexport function addDiastereotopicMissingChirality(molecule, options = {}) {\n  const { Molecule } = molecule.getOCL();\n  const { esrType = Molecule.cESRTypeAnd } = options;\n\n  for (let iAtom = 0; iAtom < molecule.getAllAtoms(); iAtom++) {\n    let tempMolecule = molecule.getCompactCopy();\n    tagAtom(tempMolecule, iAtom);\n    // After copy, helpers must be recalculated\n    tempMolecule.ensureHelperArrays(Molecule.cHelperBitsStereo);\n    // We need to have >0 and not >1 because there could be unspecified chirality in racemate\n\n    for (let i = 0; i < tempMolecule.getAtoms(); i++) {\n      // changed from from handling below; TLS 9.Nov.2015\n      if (\n        tempMolecule.isAtomStereoCenter(i) &&\n        tempMolecule.getStereoBond(i) === -1\n      ) {\n        let stereoBond = tempMolecule.getAtomPreferredStereoBond(i);\n        if (stereoBond !== -1) {\n          molecule.setBondType(stereoBond, Molecule.cBondTypeUp);\n          if (molecule.getBondAtom(1, stereoBond) === i) {\n            let connAtom = molecule.getBondAtom(0, stereoBond);\n            molecule.setBondAtom(0, stereoBond, i);\n            molecule.setBondAtom(1, stereoBond, connAtom);\n          }\n          // To me it seems that we have to add all stereo centers into AND group 0. TLS 9.Nov.2015\n          molecule.setAtomESR(i, esrType, 0);\n        }\n      }\n    }\n  }\n}\n","/**\n *\n * @param {import('openchemlib').Molecule} [molecule] An instance of a molecule\n * @param {object} [options={}]\n * @param {object} [options.OCL] openchemlib library\n */\nexport function makeRacemic(molecule) {\n  const { Molecule } = molecule.getOCL();\n\n  // if we don't calculate this we have 2 epimers\n  molecule.ensureHelperArrays(Molecule.cHelperCIP);\n\n  // we need to make one group \"AND\" for chiral (to force to racemic, this means diastereotopic and not enantiotopic)\n  for (let i = 0; i < molecule.getAllAtoms(); i++) {\n    if (molecule.getAtomParity(i) !== Molecule.cAtomParityNone) {\n      molecule.setAtomESR(i, Molecule.cESRTypeAnd, 0); // changed to group 0; TLS 9.Nov.2015\n    }\n  }\n}\n","import { makeRacemic } from '../util/makeRacemic';\nimport { tagAtom } from '../util/tagAtom';\n\nimport { addDiastereotopicMissingChirality } from './addDiastereotopicMissingChirality';\n\n/**\n * Returns an array of diastereotopic ID (as oclCode)\n * @param {import('openchemlib').Molecule} molecule\n */\nexport function getDiastereotopicAtomIDs(molecule) {\n  const OCL = molecule.getOCL();\n  addDiastereotopicMissingChirality(molecule);\n\n  let numberAtoms = molecule.getAllAtoms();\n  let ids = [];\n  for (let iAtom = 0; iAtom < numberAtoms; iAtom++) {\n    let tempMolecule = molecule.getCompactCopy();\n    tagAtom(tempMolecule, iAtom);\n    makeRacemic(tempMolecule);\n    // We need to ensure the helper array in order to get correctly the result of racemisation\n    ids[iAtom] = tempMolecule.getCanonizedIDCode(\n      OCL.Molecule.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS,\n    );\n  }\n  return ids;\n}\n","import { getDiastereotopicAtomIDs } from './getDiastereotopicAtomIDs';\n\n/**\n *\n * @param {import('openchemlib').Molecule} molecule\n */\nexport function getDiastereotopicAtomIDsAndH(molecule) {\n  const OCL = molecule.getOCL();\n  molecule = molecule.getCompactCopy();\n  molecule.addImplicitHydrogens();\n  // TODO Temporary code ???\n  molecule.ensureHelperArrays(OCL.Molecule.cHelperNeighbours);\n\n  const diaIDs = getDiastereotopicAtomIDs(molecule);\n  const newDiaIDs = [];\n\n  for (let i = 0; i < diaIDs.length; i++) {\n    const diaID = diaIDs[i];\n    const newDiaID = {\n      oclID: diaID,\n      hydrogenOCLIDs: [],\n      nbHydrogens: 0,\n    };\n    if (molecule.getAtomicNo(i) === 1) {\n      const atom = molecule.getConnAtom(i, 0);\n      newDiaID.heavyAtom = diaIDs[atom];\n    }\n    for (let j = 0; j < molecule.getAllConnAtoms(i); j++) {\n      const atom = molecule.getConnAtom(i, j);\n      if (molecule.getAtomicNo(atom) === 1) {\n        newDiaID.nbHydrogens++;\n        if (newDiaID.hydrogenOCLIDs.indexOf(diaIDs[atom]) === -1) {\n          newDiaID.hydrogenOCLIDs.push(diaIDs[atom]);\n        }\n      }\n    }\n\n    newDiaIDs.push(newDiaID);\n  }\n\n  return newDiaIDs;\n}\n","import { getDiastereotopicAtomIDsAndH } from './getDiastereotopicAtomIDsAndH';\n\n/**\n * Returns a SVG\n * @param {*} molecule\n * @param {*} [options={}]\n */\nexport function toDiastereotopicSVG(molecule, options = {}) {\n  let {\n    width = 300,\n    height = 200,\n    prefix = 'ocl',\n    heavyAtomHydrogen = false,\n  } = options;\n  let svg = options.svg;\n  let diaIDs = [];\n\n  let hydrogenInfo = {};\n  getDiastereotopicAtomIDsAndH(molecule).forEach((line) => {\n    hydrogenInfo[line.oclID] = line;\n  });\n\n  if (heavyAtomHydrogen) {\n    for (let i = 0; i < molecule.getAtoms(); i++) {\n      diaIDs.push([]);\n    }\n    let groupedDiaIDs = molecule.getGroupedDiastereotopicAtomIDs();\n    groupedDiaIDs.forEach((diaID) => {\n      if (\n        hydrogenInfo[diaID.oclID] &&\n        hydrogenInfo[diaID.oclID].nbHydrogens > 0\n      ) {\n        diaID.atoms.forEach((atom) => {\n          hydrogenInfo[diaID.oclID].hydrogenOCLIDs.forEach((id) => {\n            if (!diaIDs[atom * 1].includes(id)) diaIDs[atom].push(id);\n          });\n        });\n      }\n    });\n  } else {\n    diaIDs = molecule.getDiastereotopicAtomIDs().map((a) => [a]);\n  }\n\n  if (!svg) svg = molecule.toSVG(width, height, prefix);\n\n  svg = svg.replace(/Atom:[0-9]+\"/g, (value) => {\n    let atom = value.replace(/[^0-9]/g, '');\n    return `${value} data-diaid=\"${diaIDs[atom].join(',')}\"`;\n  });\n\n  return svg;\n}\n","export function groupDiastereotopicAtomIDs(diaIDs, molecule, options = {}) {\n  const { atomLabel } = options;\n  const diaIDsObject = {};\n  for (let i = 0; i < diaIDs.length; i++) {\n    if (!atomLabel || molecule.getAtomLabel(i) === atomLabel) {\n      let diaID = diaIDs[i];\n      if (!diaIDsObject[diaID]) {\n        diaIDsObject[diaID] = {\n          counter: 0,\n          atoms: [],\n          oclID: diaID,\n          atomLabel: molecule.getAtomLabel(i),\n        };\n      }\n      diaIDsObject[diaID].counter++;\n      diaIDsObject[diaID].atoms.push(i);\n    }\n  }\n\n  return Object.keys(diaIDsObject).map((key) => diaIDsObject[key]);\n}\n","import { getDiastereotopicAtomIDs } from './getDiastereotopicAtomIDs';\nimport { groupDiastereotopicAtomIDs } from './groupDiastereotopicAtomIDs';\n/**\n * This function groups the diasterotopic atomIds of the molecule based on equivalence of atoms. The output object contains\n * a set of chemically equivalent atoms(element.atoms) and the groups of magnetically equivalent atoms (element.magneticGroups)\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} [options={}]\n * @param {string} [options.atomLabel] Select atoms of the given atomLabel. By default it returns all the explicit atoms in the molecule\n * @returns {Array}\n */\n\nexport function getGroupedDiastereotopicAtomIDs(molecule, options = {}) {\n  let diaIDs = getDiastereotopicAtomIDs(molecule);\n  return groupDiastereotopicAtomIDs(diaIDs, molecule, options);\n}\n","import { getDiastereotopicAtomIDsAndH } from './getDiastereotopicAtomIDsAndH.js';\n\n/**\n * Parse a molfile and returns an object containing the molecule, the map and the diaIDs\n * The map allows to reload properties assigned to the atom molfile\n * Pelase take care than numbering of atoms starts at 0 !\n * @param {import('openchemlib')} OCL - openchemlib library\n * @param {string} molfile\n * @returns\n */\nexport function getDiastereotopicAtomIDsFromMolfile(OCL, molfile) {\n  const { map, molecule } = OCL.Molecule.fromMolfileWithAtomMap(molfile);\n\n  const diaIDsArray = getDiastereotopicAtomIDsAndH(molecule);\n  const diaIDs = {};\n\n  for (let i = 0; i < map.length; i++) {\n    diaIDs[map[i]] = { source: map[i], destination: i, ...diaIDsArray[i] };\n  }\n\n  return { map: diaIDs, molecule, diaIDs: diaIDsArray };\n}\n","/**\n * Check if a specific atom is a sp3 carbon\n * @param {import('openchemlib').Molecule} molecule\n * @param {number} atomID\n */\n\nexport function isCsp3(molecule, atomID) {\n  if (molecule.getAtomicNo(atomID) !== 6) return false;\n  if (molecule.getAtomCharge(atomID) !== 0) return false;\n  if (\n    molecule.getImplicitHydrogens(atomID) + molecule.getConnAtoms(atomID) !==\n    4\n  ) {\n    return false;\n  }\n  return true;\n}\n","import { isCsp3 } from '../util/isCsp3';\nimport { makeRacemic } from '../util/makeRacemic';\nimport { tagAtom } from '../util/tagAtom';\n\nexport const FULL_HOSE_CODE = 1;\nexport const HOSE_CODE_CUT_C_SP3_SP3 = 2;\n\n/**\n * Returns the hose code for a specific atom number\n * @param {import('openchemlib').Molecule} originalMolecule - The OCL molecule to be fragmented\n * @param {number[]} rootAtoms\n * @param {object} [options={}]\n * @param {boolean} [options.isTagged] Specify is the atoms are already tagged\n * @param {number} [options.minSphereSize=0] Smallest hose code sphere\n * @param {number} [options.maxSphereSize=4] Largest hose code sphere\n * @param {number} [options.kind=FULL_HOSE_CODE] Kind of hose code, default usual sphere\n */\nexport function getHoseCodesForAtoms(\n  originalMolecule,\n  rootAtoms = [],\n  options = {},\n) {\n  const OCL = originalMolecule.getOCL();\n  const {\n    minSphereSize = 0,\n    maxSphereSize = 4,\n    kind = FULL_HOSE_CODE,\n    isTagged = false,\n  } = options;\n\n  const molecule = originalMolecule.getCompactCopy();\n\n  if (!isTagged) {\n    const tags = [];\n    for (let i = 0; i < rootAtoms.length; i++) {\n      let rootAtom = rootAtoms[i];\n      tags.push(tagAtom(molecule, rootAtom));\n      molecule.addImplicitHydrogens();\n      molecule.addMissingChirality();\n      molecule.ensureHelperArrays(OCL.Molecule.cHelperNeighbours);\n      // because ensuring helper reorder atoms we need to look again for it\n    }\n    rootAtoms.length = 0;\n    for (let j = 0; j < molecule.getAllAtoms(); j++) {\n      if (tags.includes(molecule.getAtomCustomLabel(j))) {\n        rootAtoms.push(j);\n      }\n    }\n  }\n\n  let fragment = new OCL.Molecule(0, 0);\n  let results = [];\n  let min = 0;\n  let max = 0;\n  let atomMask = new Array(molecule.getAllAtoms());\n  let atomList = new Array(molecule.getAllAtoms());\n\n  for (let sphere = 0; sphere <= maxSphereSize; sphere++) {\n    if (max === 0) {\n      for (let rootAtom of rootAtoms) {\n        atomList[max] = rootAtom;\n        atomMask[rootAtom] = true;\n        max++;\n      }\n    } else {\n      let newMax = max;\n      for (let i = min; i < max; i++) {\n        let atom = atomList[i];\n        for (let j = 0; j < molecule.getAllConnAtoms(atom); j++) {\n          let connAtom = molecule.getConnAtom(atom, j);\n          if (!atomMask[connAtom]) {\n            switch (kind) {\n              case FULL_HOSE_CODE:\n                atomMask[connAtom] = true;\n                atomList[newMax++] = connAtom;\n                break;\n              case HOSE_CODE_CUT_C_SP3_SP3:\n                if (!(isCsp3(molecule, atom) && isCsp3(molecule, connAtom))) {\n                  atomMask[connAtom] = true;\n                  atomList[newMax++] = connAtom;\n                }\n                break;\n              default:\n                throw new Error('getHoseCoesForAtom unknown kind');\n            }\n          }\n        }\n      }\n      min = max;\n      max = newMax;\n    }\n    molecule.copyMoleculeByAtoms(fragment, atomMask, true, null);\n    if (sphere >= minSphereSize) {\n      makeRacemic(fragment);\n      results.push(\n        fragment.getCanonizedIDCode(\n          OCL.Molecule.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS,\n        ),\n      );\n    }\n  }\n  return results;\n}\n","import { getHoseCodesForAtoms } from './getHoseCodesForAtoms.js';\n\n/**\n * Returns the hose code for a specific atom number\n * @param {import('openchemlib').Molecule} originalMolecule\n * @param {number} rootAtom\n * @param {object} [options={}]\n * @param {boolean} [options.isTagged] Specify is the atom is already tagged\n * @param {number} [options.minSphereSize=0] Smallest hose code sphere\n * @param {number} [options.maxSphereSize=4] Largest hose code sphere\n * @param {number} [options.kind=FULL_HOSE_CODE] Kind of hose code, default usual sphere\n */\nexport function getHoseCodesForAtom(originalMolecule, rootAtom, options = {}) {\n  return getHoseCodesForAtoms(originalMolecule, [rootAtom], options);\n}\n","import { getHoseCodesForAtom } from './getHoseCodesForAtom';\n/**\n * Returns the hose code for a specific marked atom\n * @param {import('openchemlib').Molecule} diastereotopicID\n * @param {object} options\n */\n\nexport function getHoseCodesFromDiastereotopicID(molecule, options = {}) {\n  molecule.addImplicitHydrogens();\n  molecule.addMissingChirality();\n\n  // One of the atom has to be marked !\n  let atomID = -1;\n  for (let i = 0; i < molecule.getAllAtoms(); i++) {\n    // we need to find the marked atom\n    const atomCustomLabel = molecule.getAtomCustomLabel(i);\n    if (atomCustomLabel != null && atomCustomLabel.endsWith('*')) {\n      atomID = i;\n      break;\n    }\n  }\n  if (atomID >= 0) {\n    options.isTagged = true;\n    return getHoseCodesForAtom(molecule, atomID, options);\n  }\n  return undefined;\n}\n","import { getDiastereotopicAtomIDs } from '../diastereotopic/getDiastereotopicAtomIDs';\n\nimport { getHoseCodesFromDiastereotopicID } from './getHoseCodesFromDiastereotopicID';\n/**\n * Returns an array containing one entry per atom containing\n * diaID and hose code\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} options\n */\n\nexport function getHoseCodesAndDiastereotopicIDs(molecule, options) {\n  const diaIDs = getDiastereotopicAtomIDs(molecule).map((oclID) => ({\n    oclID,\n  }));\n  const OCL = molecule.getOCL();\n  // TODO: seems like a very slow approach\n  diaIDs.forEach((diaID) => {\n    const hoses = getHoseCodesFromDiastereotopicID(\n      OCL.Molecule.fromIDCode(diaID.oclID),\n      options,\n    );\n    diaID.hoses = [];\n    let sphere = 0;\n    for (const hose of hoses) {\n      diaID.hoses.push({\n        sphere: sphere++,\n        oclID: hose,\n      });\n    }\n  });\n  return diaIDs;\n}\n","import { makeRacemic } from '../util/makeRacemic';\nimport { tagAtom } from '../util/tagAtom';\n\nlet fragment;\n\n/**\n * Returns the hose code for a specific atom number\n * @param {import('openchemlib').Molecule} molecule\n */\nexport function getHoseCodesForPath(molecule, from, to, maxLength) {\n  const OCL = molecule.getOCL();\n  const originalFrom = from;\n  const originalTo = to;\n  molecule = molecule.getCompactCopy();\n\n  let originalAtoms = []; // path before renumbering\n  molecule.getPath(originalAtoms, from, to, maxLength + 1);\n  let torsion;\n  if (originalAtoms.length === 4) {\n    torsion = molecule.calculateTorsion(originalAtoms);\n  }\n\n  const tag1 = tagAtom(molecule, from);\n  const tag2 = tagAtom(molecule, to);\n\n  molecule.addImplicitHydrogens();\n  molecule.addMissingChirality();\n\n  molecule.ensureHelperArrays(OCL.Molecule.cHelperNeighbours);\n\n  from = -1;\n  to = -1;\n  for (let i = 0; i < molecule.getAllAtoms(); i++) {\n    if (tag1 === tag2) {\n      if (molecule.getAtomCustomLabel(i) === tag1) {\n        if (from === -1) {\n          from = i;\n        } else {\n          to = i;\n        }\n      }\n    } else {\n      if (tag1 === molecule.getAtomCustomLabel(i)) {\n        from = i;\n      }\n      if (tag2 === molecule.getAtomCustomLabel(i)) {\n        to = i;\n      }\n    }\n  }\n\n  if (!fragment) fragment = new OCL.Molecule(0, 0);\n\n  let atoms = [];\n  molecule.getPath(atoms, from, to, maxLength + 1);\n\n  let min = 0;\n  let max = 0;\n  let atomMask = new Array(molecule.getAllAtoms()).fill(false);\n  let atomList = new Array(molecule.getAllAtoms()).fill(-1);\n  let hoses = [];\n\n  for (let sphere = 0; sphere <= 2; sphere++) {\n    if (max === 0) {\n      for (let atom of atoms) {\n        atomMask[atom] = true;\n        atomList[max++] = atom;\n      }\n    } else {\n      let newMax = max;\n      for (let i = min; i < max; i++) {\n        let atom = atomList[i];\n        for (let j = 0; j < molecule.getAllConnAtoms(atom); j++) {\n          let connAtom = molecule.getConnAtom(atom, j);\n          if (!atomMask[connAtom]) {\n            atomMask[connAtom] = true;\n            atomList[newMax++] = connAtom;\n          }\n        }\n      }\n      min = max;\n      max = newMax;\n    }\n    let atomMap = [];\n\n    molecule.copyMoleculeByAtoms(fragment, atomMask, true, atomMap);\n    makeRacemic(fragment);\n    let oclID = fragment.getCanonizedIDCode(\n      OCL.Molecule.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS,\n    );\n\n    hoses.push({\n      sphere,\n      oclID,\n    });\n  }\n\n  return {\n    atoms: originalAtoms,\n    from: originalFrom,\n    to: originalTo,\n    torsion,\n    hoses,\n    length: originalAtoms.length - 1,\n  };\n}\n","const MAX_R = 10;\n\n/**\n * Generate molecules and calcule predicted properties form a list of smiles and fragments\n * @param {string} [coreSmiles]\n * @param {array} [fragments] Array of {smiles,R1,R2,...}\n * @param {import('openchemlib')} OCL - openchemlib library\n * @param {object} [options={}]\n * @param {function} [options.onStep] method to execute each new molecules\n * @param {boolean} [options.complexity] returns only the number of molecules to evaluate\n * @return {Promise} promise that resolves to molecules or complexity as a number\n */\nexport async function combineSmiles(coreSmiles, fragments, OCL, options = {}) {\n  const { complexity = false } = options;\n  const core = getCore(coreSmiles);\n  const rGroups = getRGroups(core, fragments);\n  if (complexity) {\n    return getComplexity(rGroups);\n  }\n  return generate(core, rGroups, OCL, options);\n}\n\nfunction getComplexity(rGroups) {\n  let complexity = 1;\n  for (let rGroup of rGroups) {\n    complexity *= rGroup.smiles.length;\n  }\n  return complexity;\n}\n\nasync function generate(core, rGroups, OCL, options = {}) {\n  const { onStep } = options;\n  const molecules = {};\n  const sizes = new Array(rGroups.length);\n  const currents = new Array(rGroups.length);\n  for (let i = 0; i < rGroups.length; i++) {\n    sizes[i] = rGroups[i].smiles.length - 1;\n    currents[i] = 0;\n  }\n  let position = 0;\n  let counter = 0;\n\n  while (true) {\n    counter++;\n    while (position < currents.length) {\n      if (currents[position] < sizes[position]) {\n        if (onStep) {\n          await onStep(counter);\n        }\n        appendMolecule(molecules, core, rGroups, currents, OCL);\n        currents[position]++;\n        for (let i = 0; i < position; i++) {\n          currents[i] = 0;\n        }\n        position = 0;\n      } else {\n        position++;\n      }\n    }\n    if ((position = currents.length)) {\n      if (onStep) {\n        await onStep(counter);\n      }\n      appendMolecule(molecules, core, rGroups, currents, OCL);\n      break;\n    }\n  }\n  return Object.keys(molecules)\n    .map((key) => molecules[key])\n    .sort((m1, m2) => m1.mw - m2.mw);\n}\n\nfunction appendMolecule(molecules, core, rGroups, currents, OCL) {\n  let newSmiles = core.smiles;\n  for (let i = 0; i < currents.length; i++) {\n    newSmiles += `.${rGroups[i].smiles[currents[i]]}`;\n  }\n\n  const currentMol = OCL.Molecule.fromSmiles(newSmiles);\n  const idCode = currentMol.getIDCode();\n\n  if (!molecules[idCode]) {\n    let molecule = {};\n    molecules[idCode] = molecule;\n    molecule.smiles = currentMol.toSmiles();\n    molecule.combinedSmiles = newSmiles;\n    molecule.idCode = idCode;\n    molecule.molfile = currentMol.toMolfile();\n\n    const props = new OCL.MoleculeProperties(currentMol);\n    molecule.nbHAcceptor = props.acceptorCount;\n    molecule.nbHDonor = props.donorCount;\n    molecule.logP = props.logP;\n    molecule.logS = props.logS;\n    molecule.PSA = props.polarSurfaceArea;\n    molecule.nbRottable = props.rotatableBondCount;\n    molecule.nbStereoCenter = props.stereoCenterCount;\n    let mf = currentMol.getMolecularFormula();\n    molecule.mf = mf.formula;\n    molecule.mw = mf.relativeWeight;\n  }\n}\n\nfunction getCore(coreSmiles) {\n  let core = {\n    originalSmiles: coreSmiles,\n    smiles: coreSmiles.replace(/\\[R(?<group>[1-4])\\]/g, '%5$<group>'),\n  };\n\n  for (let i = 0; i < MAX_R; i++) {\n    if (core.originalSmiles.indexOf(`[R${i}]`) > -1) core[`R${i}`] = true;\n  }\n  return core;\n}\n\nfunction getRGroups(core, fragments) {\n  let rGroups = {};\n  for (const fragment of fragments) {\n    if (fragment.smiles) {\n      const smiles = updateRPosition(fragment.smiles);\n      for (let i = 0; i < MAX_R; i++) {\n        if (core[`R${i}`]) {\n          // we only consider the R that are in the core\n          if (fragment[`R${i}`]) {\n            if (!rGroups[`R${i}`]) {\n              rGroups[`R${i}`] = {\n                group: `R${i}`,\n                smiles: [],\n              };\n            }\n            rGroups[`R${i}`].smiles.push(smiles.replace(/\\[R\\]/, `(%5${i})`));\n          }\n        }\n      }\n    }\n  }\n  return Object.keys(rGroups).map((key) => rGroups[key]);\n}\n\nfunction updateRPosition(smiles) {\n  // R group should not be at the beginning\n  if (smiles.indexOf('[R]') !== 0) return smiles;\n  if (smiles.length === 3) return '[H][R]';\n  // we are in trouble ... we need to move the R\n  let newSmiles = smiles.replace('[R]', '');\n  // we need to check where we should put the R group\n  let level = 0;\n  for (let j = 0; j < newSmiles.length; j++) {\n    let currentChar = newSmiles.charAt(j);\n    let currentSubstring = newSmiles.substr(j);\n    if (currentChar === '(') {\n      level++;\n    } else if (currentChar === ')') {\n      level--;\n    } else if (level === 0) {\n      if (currentSubstring.match(/^[a-z]/)) {\n        return `${newSmiles.substr(0, j + 1)}([R])${newSmiles.substr(j + 1)}`;\n      } else if (currentSubstring.match(/^[A-Z][a-z]/)) {\n        return `${newSmiles.substr(0, j + 2)}([R])${newSmiles.substr(j + 2)}`;\n      } else if (currentSubstring.match(/^[A-Z]/)) {\n        return `${newSmiles.substr(0, j + 1)}([R])${newSmiles.substr(j + 1)}`;\n      }\n    }\n  }\n  return smiles;\n}\n","import { getDiastereotopicAtomIDs } from '../diastereotopic/getDiastereotopicAtomIDs';\n\n/**\n * Returns various information about atoms in the molecule\n * @param {import('openchemlib').Molecule} [molecule]\n */\nexport function getAtomsInfo(molecule) {\n  const OCL = molecule.getOCL();\n  molecule.ensureHelperArrays(OCL.Molecule.cHelperRings);\n\n  let diaIDs = getDiastereotopicAtomIDs(molecule);\n\n  let results = [];\n  for (let i = 0; i < diaIDs.length; i++) {\n    let result = {\n      oclID: diaIDs[i],\n      extra: {\n        singleBonds: 0,\n        doubleBonds: 0,\n        tripleBonds: 0,\n        aromaticBonds: 0,\n        cnoHybridation: 0, // should be 1 (sp), 2 (sp2) or 3 (sp3)\n      },\n    };\n    let extra = result.extra;\n    results.push(result);\n    result.abnormalValence = molecule.getAtomAbnormalValence(i); // -1 is normal otherwise specified\n    result.charge = molecule.getAtomCharge(i);\n    result.cipParity = molecule.getAtomCIPParity(i);\n    result.color = molecule.getAtomColor(i);\n    result.customLabel = molecule.getAtomCustomLabel(i);\n    //        result.esrGroup=molecule.getAtomESRGroup(i);\n    //        result.esrType=molecule.getAtomESRType(i);\n    result.atomicNo = molecule.getAtomicNo(i);\n    result.label = molecule.getAtomLabel(i);\n    //        result.list=molecule.getAtomList(i);\n    //        result.listString=molecule.getAtomListString(i);\n    //        result.mapNo=molecule.getAtomMapNo(i);\n    result.mass = molecule.getAtomMass(i);\n    //        result.parity=molecule.getAtomParity(i);\n    //        result.pi=molecule.getAtomPi(i);\n    //        result.preferredStereoBond=molecule.getAtomPreferredStereoBond(i);\n    //        result.queryFeatures=molecule.getAtomQueryFeatures(i);\n    result.radical = molecule.getAtomRadical(i);\n    result.ringBondCount = molecule.getAtomRingBondCount(i);\n    //        result.ringCount=molecule.getAtomRingCount(i);\n    result.ringSize = molecule.getAtomRingSize(i);\n    result.x = molecule.getAtomX(i);\n    result.y = molecule.getAtomY(i);\n    result.z = molecule.getAtomZ(i);\n    result.allHydrogens = molecule.getAllHydrogens(i);\n    result.connAtoms = molecule.getConnAtoms(i);\n    result.allConnAtoms = molecule.getAllConnAtoms(i);\n\n    result.implicitHydrogens =\n      result.allHydrogens + result.connAtoms - result.allConnAtoms;\n\n    result.isAromatic = molecule.isAromaticAtom(i);\n    result.isAllylic = molecule.isAllylicAtom(i);\n    result.isStereoCenter = molecule.isAtomStereoCenter(i);\n    result.isRing = molecule.isRingAtom(i);\n    result.isSmallRing = molecule.isSmallRingAtom(i);\n    result.isStabilized = molecule.isStabilizedAtom(i);\n\n    // todo HACK to circumvent bug in OCL that consider than an hydrogen is connected to itself\n    result.extra.singleBonds =\n      result.atomicNo === 1 ? 0 : result.implicitHydrogens;\n    for (let j = 0; j < molecule.getAllConnAtoms(i); j++) {\n      let bond = molecule.getConnBond(i, j);\n      let bondOrder = molecule.getBondOrder(bond);\n      if (molecule.isAromaticBond(bond)) {\n        extra.aromaticBonds++;\n      } else if (bondOrder === 1) {\n        // not an hydrogen\n        extra.singleBonds++;\n      } else if (bondOrder === 2) {\n        extra.doubleBonds++;\n      } else if (bondOrder === 3) {\n        extra.tripleBonds++;\n      }\n    }\n    result.extra.totalBonds =\n      result.extra.singleBonds +\n      result.extra.doubleBonds +\n      result.extra.tripleBonds +\n      result.extra.aromaticBonds;\n\n    if (result.atomicNo === 6) {\n      result.extra.cnoHybridation = result.extra.totalBonds - 1;\n    } else if (result.atomicNo === 7) {\n      result.extra.cnoHybridation = result.extra.totalBonds;\n    } else if (result.atomicNo === 8) {\n      result.extra.cnoHybridation = result.extra.totalBonds + 1;\n    } else if (result.atomicNo === 1) {\n      let connectedAtom =\n        molecule.getAllConnAtoms(i) === 0\n          ? 0\n          : molecule.getAtomicNo(molecule.getConnAtom(i, 0));\n      result.extra.hydrogenOnAtomicNo = connectedAtom;\n      if (connectedAtom === 7 || connectedAtom === 8) {\n        result.extra.labileHydrogen = true;\n      }\n    }\n  }\n  return results;\n}\n","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","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 {\n    maxRows = 15,\n    maxColumns = 10,\n    maxNumSize = 8,\n    padMinus = 'auto',\n  } = options;\n  return `${matrix.constructor.name} {\n${indent}[\n${indentData}${inspectData(matrix, maxRows, maxColumns, maxNumSize, padMinus)}\n${indent}]\n${indent}rows: ${matrix.rows}\n${indent}columns: ${matrix.columns}\n}`;\n}\n\nfunction inspectData(matrix, maxRows, maxColumns, maxNumSize, padMinus) {\n  const { rows, columns } = matrix;\n  const maxI = Math.min(rows, maxRows);\n  const maxJ = Math.min(columns, maxColumns);\n  const result = [];\n\n  if (padMinus === 'auto') {\n    padMinus = false;\n    loop: for (let i = 0; i < maxI; i++) {\n      for (let j = 0; j < maxJ; j++) {\n        if (matrix.get(i, j) < 0) {\n          padMinus = true;\n          break loop;\n        }\n      }\n    }\n  }\n\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, padMinus));\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, padMinus) {\n  return (\n    num >= 0 && padMinus\n      ? ` ${formatNumber2(num, maxNumSize - 1)}`\n      : formatNumber2(num, maxNumSize)\n  ).padEnd(maxNumSize);\n}\n\nfunction formatNumber2(num, len) {\n  // small.length numbers should be as is\n  let str = num.toString();\n  if (str.length <= len) return str;\n\n  // (7)'0.00123' is better then (7)'1.23e-2'\n  // (8)'0.000123' is worse then (7)'1.23e-3',\n  let fix = num.toFixed(len);\n  if (fix.length > len) {\n    fix = num.toFixed(Math.max(0, len - (fix.length - len)));\n  }\n  if (\n    fix.length <= len &&\n    !fix.startsWith('0.000') &&\n    !fix.startsWith('-0.000')\n  ) {\n    return fix;\n  }\n\n  // well, if it's still too long the user should've used longer numbers\n  let exp = num.toExponential(len);\n  if (exp.length > len) {\n    exp = num.toExponential(Math.max(0, len - (exp.length - len)));\n  }\n  return exp.slice(0);\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 { Matrix } from 'ml-matrix';\n\n/**\n * Algorithm that finds the shortest distance from one node to the other\n * @param {Matrix} adjMatrix - A squared adjacency matrix\n * @return {Matrix} - Distance from a node to the other, -1 if the node is unreachable\n */\nexport function floydWarshall(adjMatrix) {\n  if (Matrix.isMatrix(adjMatrix) && adjMatrix.columns !== adjMatrix.rows) {\n    throw new TypeError('The adjacency matrix should be squared');\n  }\n  const numVertices = adjMatrix.columns;\n  let distMatrix = new Matrix(numVertices, numVertices);\n  distMatrix.apply((row, column) => {\n    // principal diagonal is 0\n    if (row === column) {\n      distMatrix.set(row, column, 0);\n    } else {\n      let val = adjMatrix.get(row, column);\n\n      if (val || Object.is(val, -0)) {\n        // edges values remain the same\n        distMatrix.set(row, column, val);\n      } else {\n        // 0 values become infinity\n        distMatrix.set(row, column, Number.POSITIVE_INFINITY);\n      }\n    }\n  });\n\n  for (let k = 0; k < numVertices; ++k) {\n    for (let i = 0; i < numVertices; ++i) {\n      for (let j = 0; j < numVertices; ++j) {\n        let dist = distMatrix.get(i, k) + distMatrix.get(k, j);\n        if (distMatrix.get(i, j) > dist) {\n          distMatrix.set(i, j, dist);\n        }\n      }\n    }\n  }\n\n  // When there's no connection the value is -1\n  distMatrix.apply((row, column) => {\n    if (distMatrix.get(row, column) === Number.POSITIVE_INFINITY) {\n      distMatrix.set(row, column, -1);\n    }\n  });\n  return distMatrix;\n}\n","import { floydWarshall } from 'ml-floyd-warshall';\nimport { Matrix } from 'ml-matrix';\n\n/**\n * Returns a connectivity matrix\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} [options={}]\n * @param {boolean} [options.pathLength=false] get the path length between atoms\n * @param {boolean} [options.mass=false] set the nominal mass of the atoms on diagonal\n * @param {boolean} [options.atomicNo=false] set the atomic number of the atom on diagonal\n * @param {boolean} [options.negativeAtomicNo=false] set the atomic number * -1 of the atom on diagonal\n * @param {boolean} [options.sdt=false] set 1, 2 or 3 depending if single, double or triple bond\n * @param {boolean} [options.sdta=false] set 1, 2, 3 or 4 depending if single, double, triple or aromatic  bond\n */\nexport function getConnectivityMatrix(molecule, options = {}) {\n  const OCL = molecule.getOCL();\n  molecule.ensureHelperArrays(OCL.Molecule.cHelperNeighbours);\n  let nbAtoms = molecule.getAllAtoms();\n\n  let result = new Array(nbAtoms).fill();\n  result = result.map(() => new Array(nbAtoms).fill(0));\n\n  if (!options.pathLength) {\n    if (options.atomicNo) {\n      for (let i = 0; i < nbAtoms; i++) {\n        result[i][i] = molecule.getAtomicNo(i);\n      }\n    } else if (options.negativeAtomicNo) {\n      for (let i = 0; i < nbAtoms; i++) {\n        result[i][i] = -molecule.getAtomicNo(i);\n      }\n    } else if (options.mass) {\n      for (let i = 0; i < nbAtoms; i++) {\n        result[i][i] = OCL.Molecule.cRoundedMass[molecule.getAtomicNo(i)];\n      }\n    } else {\n      for (let i = 0; i < nbAtoms; i++) {\n        result[i][i] = 1;\n      }\n    }\n  }\n\n  if (options.sdt) {\n    for (let i = 0; i < nbAtoms; i++) {\n      let l = molecule.getAllConnAtoms(i);\n      for (let j = 0; j < l; j++) {\n        result[i][molecule.getConnAtom(i, j)] = molecule.getConnBondOrder(i, j);\n      }\n    }\n  } else if (options.sdta) {\n    for (let i = 0; i < nbAtoms; i++) {\n      let l = molecule.getAllConnAtoms(i);\n      for (let j = 0; j < l; j++) {\n        let bondNumber = molecule.getConnBond(i, j);\n        if (molecule.isAromaticBond(bondNumber)) {\n          result[i][molecule.getConnAtom(i, j)] = 4;\n        } else {\n          result[i][molecule.getConnAtom(i, j)] = molecule.getConnBondOrder(\n            i,\n            j,\n          );\n        }\n      }\n    }\n  } else {\n    for (let i = 0; i < nbAtoms; i++) {\n      let l = molecule.getAllConnAtoms(i);\n      for (let j = 0; j < l; j++) {\n        result[i][molecule.getConnAtom(i, j)] = 1;\n      }\n    }\n  }\n\n  if (options.pathLength) {\n    result = floydWarshall(new Matrix(result)).to2DArray();\n  }\n  return result;\n}\n","/**\n * Implementation of the Hill system for sorting atoms\n * https://en.wikipedia.org/wiki/Chemical_formula#Hill_system\n * @param {string} a - first atom to compare\n * @param {string} b - second atom to compare\n * @returns\n */\n\nexport function atomSorter(a, b) {\n  if (a === b) return 0;\n  if (a === 'C') return -1;\n  if (b === 'C') return 1;\n  if (a === 'H') return -1;\n  if (b === 'H') return 1;\n  if (a < b) return -1;\n  return 1;\n}\n","import { atomSorter } from 'atom-sorter';\n\n/**\n * Calculate the molecular formula in 'chemcalc' notation taking into account fragments, isotopes and charges\n * {OCL.Molecule} [molecule] an instance of OCL.Molecule\n * @returns {object}\n */\n\nexport function getMF(molecule) {\n  let entries = molecule.getFragments();\n  let result = {};\n  let parts = [];\n  let allAtoms = [];\n\n  entries.forEach((entry) => {\n    let mf = getFragmentMF(entry, allAtoms);\n    parts.push(mf);\n  });\n\n  let counts = {};\n  for (let part of parts) {\n    if (!counts[part]) counts[part] = 0;\n    counts[part]++;\n  }\n  parts = [];\n  for (let key of Object.keys(counts).sort()) {\n    if (counts[key] > 1) {\n      parts.push(counts[key] + key);\n    } else {\n      parts.push(key);\n    }\n  }\n\n  result.parts = parts;\n  result.mf = toMFString(allAtoms);\n  return result;\n}\n\nfunction getFragmentMF(molecule, allAtoms) {\n  let atoms = [];\n  for (let i = 0; i < molecule.getAllAtoms(); i++) {\n    let atom = {};\n    atom.charge = molecule.getAtomCharge(i);\n    atom.label = molecule.getAtomLabel(i);\n    atom.mass = molecule.getAtomMass(i);\n    atom.implicitHydrogens = molecule.getImplicitHydrogens(i);\n    atoms.push(atom);\n    allAtoms.push(atom);\n  }\n  return toMFString(atoms);\n}\n\nfunction toMFString(atoms) {\n  let charge = 0;\n  let mfs = {};\n  for (let atom of atoms) {\n    let label = atom.label;\n    charge += atom.charge;\n    if (atom.mass) {\n      label = `[${atom.mass}${label}]`;\n    }\n    let mfAtom = mfs[label];\n    if (!mfAtom) {\n      mfs[label] = 0;\n    }\n    mfs[label] += 1;\n    if (atom.implicitHydrogens) {\n      if (!mfs.H) mfs.H = 0;\n      mfs.H += atom.implicitHydrogens;\n    }\n  }\n\n  let mf = '';\n  let keys = Object.keys(mfs).sort(atomSorter);\n  for (let key of keys) {\n    mf += key;\n    if (mfs[key] > 1) mf += mfs[key];\n  }\n\n  if (charge > 0) {\n    mf += `(+${charge > 1 ? charge : ''})`;\n  } else if (charge < 0) {\n    mf += `(${charge < -1 ? charge : '-'})`;\n  }\n  return mf;\n}\n","/**\n * Return the number of Hydroxyl groups in a molecule or fragment\n * @param {import('openchemlib').Molecule} molecule\n * @returns {number} 'Number of Hydroxyl groups'\n */\n\nexport function nbOH(molecule) {\n  let counter = 0;\n  for (let i = 0; i < molecule.getAllAtoms(); i++) {\n    if (molecule.getAtomicNo(i) === 6) {\n      let carbonyl = false;\n      let hydroxyl = false;\n      let carbonOrHydrogen = true;\n      for (\n        let neighbour = 0;\n        neighbour < molecule.getConnAtoms(i);\n        neighbour++\n      ) {\n        const neighbourAtom = molecule.getConnAtom(i, neighbour);\n\n        const neighbourBond = molecule.getConnBond(i, neighbour);\n        if (molecule.getAtomicNo(neighbourAtom) === 8) {\n          if (\n            molecule.getBondOrder(neighbourBond) === 1 &&\n            molecule.getAllHydrogens(neighbourAtom) > 0\n          ) {\n            // If there is more than a Hydroxyl in the same carbon atome they are not couted as Hydroxyl groups\n            if (hydroxyl) {\n              hydroxyl = false;\n              break;\n            }\n            hydroxyl = true;\n          } else if (molecule.getBondOrder(neighbourBond) === 2) {\n            // If there is Carbonyl group on the same carbon atom it is not couted as Hydroxyl group\n            carbonyl = true;\n          }\n        } else if (\n          // If there is not at least one carbon or hydrogen as neighbour atom it is not counted as Hydroxyl group\n          molecule.getAtomicNo(neighbourAtom) !== 6 &&\n          molecule.getAtomicNo(neighbourAtom) !== 1\n        ) {\n          carbonOrHydrogen = false;\n        }\n      }\n      if (carbonyl === false && hydroxyl && carbonOrHydrogen) counter++;\n    }\n  }\n\n  return counter;\n}\n","/**\n * Return the number of Carboxyl groups in a molecule or fragment\n * @param {import('openchemlib').Molecule} molecule\n * @returns {number} 'Number of Carboxyl groups'\n */\n\nexport function nbCOOH(molecule) {\n  let counter = 0;\n  for (let i = 0; i < molecule.getAllAtoms(); i++) {\n    if (molecule.getAtomicNo(i) === 6) {\n      let carbonyl = false;\n      let hydroxyl = false;\n      let carbonOrHydrogen = true;\n      for (\n        let neighbour = 0;\n        neighbour < molecule.getConnAtoms(i);\n        neighbour++\n      ) {\n        const neighbourAtom = molecule.getConnAtom(i, neighbour);\n\n        const neighbourBond = molecule.getConnBond(i, neighbour);\n        if (molecule.getAtomicNo(neighbourAtom) === 8) {\n          if (\n            molecule.getBondOrder(neighbourBond) === 1 &&\n            molecule.getAllHydrogens(neighbourAtom) > 0\n          ) {\n            // If there is more than a Hydroxyl in the same carbon atom it is not couted as Carboxyl group\n            if (hydroxyl) {\n              hydroxyl = false;\n              break;\n            }\n            hydroxyl = true;\n          } else if (molecule.getBondOrder(neighbourBond) === 2) {\n            // If there is more than one carbonyl in the same carbon atom it is not count as Carboxyl group\n            if (carbonyl) {\n              carbonyl = false;\n              break;\n            }\n            carbonyl = true;\n          }\n        } else if (\n          // If there is not at least one carbon or hydrogen as neighbour atom it is not counted as Carboxyl group\n          molecule.getAtomicNo(neighbourAtom) !== 6 &&\n          molecule.getAtomicNo(neighbourAtom) !== 1\n        ) {\n          carbonOrHydrogen = false;\n        }\n      }\n      if (carbonyl && hydroxyl && carbonOrHydrogen) counter++;\n    }\n  }\n  return counter;\n}\n","/**\n * Return the number of Carbonyl groups in a molecule or fragment\n * @param {import('openchemlib').Molecule} molecule\n * @returns {number} 'Number of Carbonyl groups'\n */\n\nexport function nbCHO(molecule) {\n  let counter = 0;\n  for (let i = 0; i < molecule.getAllAtoms(); i++) {\n    // if there is not at least one hydrogen in the carbon atom there can not be a carbonyl group\n    if (molecule.getAtomicNo(i) === 6 && molecule.getAllHydrogens(i) > 0) {\n      let carbonyl = false;\n      let carbonOrHydrogen = true;\n      for (\n        let neighbour = 0;\n        neighbour < molecule.getConnAtoms(i);\n        neighbour++\n      ) {\n        const neighbourAtom = molecule.getConnAtom(i, neighbour);\n\n        const neighbourBond = molecule.getConnBond(i, neighbour);\n        if (molecule.getAtomicNo(neighbourAtom) === 8) {\n          if (molecule.getBondOrder(neighbourBond) === 2) {\n            // If there is more than one carbonyl group on the same carbon atom they are not counted as carbonyl groups\n            if (carbonyl) {\n              carbonyl = false;\n              break;\n            }\n            carbonyl = true;\n          }\n        } else if (\n          // If there is not at least one carbon or hydrogen as neighbour atom it is not counted as Carbonyl group\n          molecule.getAtomicNo(neighbourAtom) !== 6 &&\n          molecule.getAtomicNo(neighbourAtom) !== 1\n        ) {\n          carbonOrHydrogen = false;\n        }\n      }\n      if (carbonyl && carbonOrHydrogen) counter++;\n    }\n  }\n\n  return counter;\n}\n","/**\n * Return the number of Primary amine groups in a molecule or fragment\n * @param {import('openchemlib').Molecule} molecule\n * @returns {number} 'Number of Primary amine groups'\n */\n\nexport function nbNH2(molecule) {\n  let counter = 0;\n  for (let i = 0; i < molecule.getAllAtoms(); i++) {\n    if (molecule.getAtomicNo(i) === 6) {\n      let amine = false;\n      let carbonOrHydrogen = true;\n      for (\n        let neighbour = 0;\n        neighbour < molecule.getConnAtoms(i);\n        neighbour++\n      ) {\n        const neighbourAtom = molecule.getConnAtom(i, neighbour);\n\n        const neighbourBond = molecule.getConnBond(i, neighbour);\n\n        if (\n          molecule.getAtomicNo(neighbourAtom) === 7 &&\n          molecule.getBondOrder(neighbourBond) === 1 &&\n          molecule.getAllHydrogens(neighbourAtom) > 1\n        ) {\n          // If there is more than a Primary amine in the same carbon atom they are not couted as Primary amines groups\n          if (amine) {\n            amine = false;\n            break;\n          }\n          amine = true;\n        } else if (\n          // If there is not at least one carbon or hydrogen as neighbour atom it is not counted as Primary amine group\n          molecule.getAtomicNo(neighbourAtom) !== 6 &&\n          molecule.getAtomicNo(neighbourAtom) !== 1\n        ) {\n          carbonOrHydrogen = false;\n        }\n      }\n      if (amine && carbonOrHydrogen) counter++;\n    }\n  }\n\n  return counter;\n}\n","/**\n * Return the number of Nitrile groups in a molecule or fragment\n * @param {import('openchemlib').Molecule} molecule\n * @returns {number} 'Number of Nitrile groups'\n */\n\nexport function nbCN(molecule) {\n  let counter = 0;\n  for (let i = 0; i < molecule.getAllAtoms(); i++) {\n    if (molecule.getAtomicNo(i) === 6) {\n      let cn = false;\n      let carbonOrHydrogen = true;\n      for (\n        let neighbour = 0;\n        neighbour < molecule.getConnAtoms(i);\n        neighbour++\n      ) {\n        const neighbourAtom = molecule.getConnAtom(i, neighbour);\n\n        const neighbourBond = molecule.getConnBond(i, neighbour);\n\n        if (\n          molecule.getAtomicNo(neighbourAtom) === 7 &&\n          molecule.getBondOrder(neighbourBond) === 3\n        ) {\n          // If there is more than one Nitrile group in the same carbon atome they are not counted as Nitrile groups\n          if (cn) {\n            cn = false;\n            break;\n          }\n          cn = true;\n        } else if (\n          // If there is not at least one carbon or hydrogen as neighbour atom it is not counted as Nitrile group\n          molecule.getAtomicNo(neighbourAtom) !== 6 &&\n          molecule.getAtomicNo(neighbourAtom) !== 1\n        ) {\n          carbonOrHydrogen = false;\n        }\n      }\n\n      if (cn && carbonOrHydrogen) counter++;\n    }\n  }\n\n  return counter;\n}\n","/**\n * Calculates the path between 2 atoms\n * @param {import('openchemlib').Molecule} molecule\n * @param {number} from - index of the first atom\n * @param {number} to - index of the end atom\n * @param {number} maxLength - maximal length of the path\n */\nexport function getPathAndTorsion(molecule, from, to, maxLength) {\n  let originalAtoms = []; // path before renumbering\n  molecule.getPath(originalAtoms, from, to, maxLength + 1);\n  let torsion;\n  if (originalAtoms.length === 4) {\n    torsion = molecule.calculateTorsion(originalAtoms);\n  }\n\n  return {\n    atoms: originalAtoms,\n    from,\n    to,\n    torsion,\n    length: originalAtoms.length - 1,\n  };\n}\n","import { getHoseCodesForPath } from '../hose/getHoseCodesForPath';\nimport { getAtomsInfo } from '../util/getAtomsInfo';\nimport { getConnectivityMatrix } from '../util/getConnectivityMatrix';\n\nimport { getPathAndTorsion } from './getPathAndTorsion.js';\n\nlet fragment;\n\n/**\n *\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} [options={}]\n * @param {string} [options.fromLabel='H']\n * @param {string} [options.toLabel='H']\n * @param {number} [options.minLength=1]\n * @param {number} [options.maxLength=4]\n * @param {boolean} [options.withHOSES=false]\n\n */\nexport function getPathsInfo(molecule, options = {}) {\n  const {\n    fromLabel = 'H',\n    toLabel = 'H',\n    minLength = 1,\n    maxLength = 4,\n    withHOSES = false,\n  } = options;\n\n  const OCL = molecule.getOCL();\n\n  if (!fragment) {\n    fragment = new OCL.Molecule(0, 0);\n  }\n\n  let fromAtomicNumber = OCL.Molecule.getAtomicNoFromLabel(fromLabel);\n  let toAtomicNumber = OCL.Molecule.getAtomicNoFromLabel(toLabel);\n\n  // we need to find all the atoms 'fromLabel' and 'toLabel'\n  let atomsInfo = getAtomsInfo(molecule);\n\n  let pathLengthMatrix = getConnectivityMatrix(molecule, {\n    pathLength: true,\n  });\n\n  for (let from = 0; from < molecule.getAllAtoms(); from++) {\n    atomsInfo[from].paths = [];\n    for (let to = 0; to < molecule.getAllAtoms(); to++) {\n      if (from !== to) {\n        if (molecule.getAtomicNo(from) === fromAtomicNumber) {\n          if (molecule.getAtomicNo(to) === toAtomicNumber) {\n            let pathLength = pathLengthMatrix[from][to];\n            if (pathLength >= minLength && pathLength <= maxLength) {\n              if (withHOSES) {\n                atomsInfo[from].paths.push(\n                  getHoseCodesForPath(molecule, from, to, pathLength),\n                );\n              } else {\n                atomsInfo[from].paths.push(\n                  getPathAndTorsion(molecule, from, to, pathLength),\n                );\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n\n  return atomsInfo;\n}\n","/**\n * Get the shortest path between each pair of atoms in the molecule\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} [options={}]\n * @param {string} [opions.fromLabel='H']\n * @param {string} [opions.toLabel='H']\n * @param {string} [opions.maxLength=4]\n * @returns {Array<Array>} A matrix containing on each cell (i,j) the shortest path from atom i to atom j\n */\nexport function getShortestPaths(molecule, options = {}) {\n  const OCL = molecule.getOCL();\n  const { fromLabel = '', toLabel = '', maxLength = 3 } = options;\n\n  let fromAtomicNumber = OCL.Molecule.getAtomicNoFromLabel(fromLabel);\n  let toAtomicNumber = OCL.Molecule.getAtomicNoFromLabel(toLabel);\n\n  const nbAtoms = molecule.getAllAtoms();\n  let allShortestPaths = new Array(nbAtoms);\n  for (let i = 0; i < nbAtoms; i++) {\n    allShortestPaths[i] = new Array(nbAtoms);\n  }\n\n  for (let from = 0; from < nbAtoms; from++) {\n    allShortestPaths[from][from] = [from];\n    for (let to = from + 1; to < nbAtoms; to++) {\n      if (\n        (fromAtomicNumber === 0 ||\n          molecule.getAtomicNo(from) === fromAtomicNumber) &&\n        (toAtomicNumber === 0 || molecule.getAtomicNo(to) === toAtomicNumber)\n      ) {\n        let path = [];\n        molecule.getPath(path, from, to, maxLength);\n        if (path.length) {\n          allShortestPaths[from][to] = path.slice();\n          allShortestPaths[to][from] = path.reverse();\n        } else {\n          allShortestPaths[from][to] = null;\n          allShortestPaths[to][from] = null;\n        }\n      } else {\n        allShortestPaths[from][to] = null;\n        allShortestPaths[to][from] = null;\n      }\n    }\n  }\n\n  return allShortestPaths;\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","/* @license\nPapa Parse\nv5.3.2\nhttps://github.com/mholt/PapaParse\nLicense: MIT\n*/\n!function(e,t){\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof module&&\"undefined\"!=typeof exports?module.exports=t():e.Papa=t()}(this,function s(){\"use strict\";var f=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==f?f:{};var n=!f.document&&!!f.postMessage,o=n&&/blob:/i.test((f.location||{}).protocol),a={},h=0,b={parse:function(e,t){var i=(t=t||{}).dynamicTyping||!1;M(i)&&(t.dynamicTypingFunction=i,i={});if(t.dynamicTyping=i,t.transform=!!M(t.transform)&&t.transform,t.worker&&b.WORKERS_SUPPORTED){var r=function(){if(!b.WORKERS_SUPPORTED)return!1;var e=(i=f.URL||f.webkitURL||null,r=s.toString(),b.BLOB_URL||(b.BLOB_URL=i.createObjectURL(new Blob([\"(\",r,\")();\"],{type:\"text/javascript\"})))),t=new f.Worker(e);var i,r;return t.onmessage=_,t.id=h++,a[t.id]=t}();return r.userStep=t.step,r.userChunk=t.chunk,r.userComplete=t.complete,r.userError=t.error,t.step=M(t.step),t.chunk=M(t.chunk),t.complete=M(t.complete),t.error=M(t.error),delete t.worker,void r.postMessage({input:e,config:t,workerId:r.id})}var n=null;b.NODE_STREAM_INPUT,\"string\"==typeof e?n=t.download?new l(t):new p(t):!0===e.readable&&M(e.read)&&M(e.on)?n=new g(t):(f.File&&e instanceof File||e instanceof Object)&&(n=new c(t));return n.stream(e)},unparse:function(e,t){var n=!1,_=!0,m=\",\",y=\"\\r\\n\",s='\"',a=s+s,i=!1,r=null,o=!1;!function(){if(\"object\"!=typeof t)return;\"string\"!=typeof t.delimiter||b.BAD_DELIMITERS.filter(function(e){return-1!==t.delimiter.indexOf(e)}).length||(m=t.delimiter);(\"boolean\"==typeof t.quotes||\"function\"==typeof t.quotes||Array.isArray(t.quotes))&&(n=t.quotes);\"boolean\"!=typeof t.skipEmptyLines&&\"string\"!=typeof t.skipEmptyLines||(i=t.skipEmptyLines);\"string\"==typeof t.newline&&(y=t.newline);\"string\"==typeof t.quoteChar&&(s=t.quoteChar);\"boolean\"==typeof t.header&&(_=t.header);if(Array.isArray(t.columns)){if(0===t.columns.length)throw new Error(\"Option columns is empty\");r=t.columns}void 0!==t.escapeChar&&(a=t.escapeChar+s);(\"boolean\"==typeof t.escapeFormulae||t.escapeFormulae instanceof RegExp)&&(o=t.escapeFormulae instanceof RegExp?t.escapeFormulae:/^[=+\\-@\\t\\r].*$/)}();var h=new RegExp(j(s),\"g\");\"string\"==typeof e&&(e=JSON.parse(e));if(Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return u(null,e,i);if(\"object\"==typeof e[0])return u(r||Object.keys(e[0]),e,i)}else if(\"object\"==typeof e)return\"string\"==typeof e.data&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||(e.fields=e.meta&&e.meta.fields||r),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:\"object\"==typeof e.data[0]?Object.keys(e.data[0]):[]),Array.isArray(e.data[0])||\"object\"==typeof e.data[0]||(e.data=[e.data])),u(e.fields||[],e.data||[],i);throw new Error(\"Unable to serialize unrecognized input\");function u(e,t,i){var r=\"\";\"string\"==typeof e&&(e=JSON.parse(e)),\"string\"==typeof t&&(t=JSON.parse(t));var n=Array.isArray(e)&&0<e.length,s=!Array.isArray(t[0]);if(n&&_){for(var a=0;a<e.length;a++)0<a&&(r+=m),r+=v(e[a],a);0<t.length&&(r+=y)}for(var o=0;o<t.length;o++){var h=n?e.length:t[o].length,u=!1,f=n?0===Object.keys(t[o]).length:0===t[o].length;if(i&&!n&&(u=\"greedy\"===i?\"\"===t[o].join(\"\").trim():1===t[o].length&&0===t[o][0].length),\"greedy\"===i&&n){for(var d=[],l=0;l<h;l++){var c=s?e[l]:l;d.push(t[o][c])}u=\"\"===d.join(\"\").trim()}if(!u){for(var p=0;p<h;p++){0<p&&!f&&(r+=m);var g=n&&s?e[p]:p;r+=v(t[o][g],p)}o<t.length-1&&(!i||0<h&&!f)&&(r+=y)}}return r}function v(e,t){if(null==e)return\"\";if(e.constructor===Date)return JSON.stringify(e).slice(1,25);var i=!1;o&&\"string\"==typeof e&&o.test(e)&&(e=\"'\"+e,i=!0);var r=e.toString().replace(h,a);return(i=i||!0===n||\"function\"==typeof n&&n(e,t)||Array.isArray(n)&&n[t]||function(e,t){for(var i=0;i<t.length;i++)if(-1<e.indexOf(t[i]))return!0;return!1}(r,b.BAD_DELIMITERS)||-1<r.indexOf(m)||\" \"===r.charAt(0)||\" \"===r.charAt(r.length-1))?s+r+s:r}}};if(b.RECORD_SEP=String.fromCharCode(30),b.UNIT_SEP=String.fromCharCode(31),b.BYTE_ORDER_MARK=\"\\ufeff\",b.BAD_DELIMITERS=[\"\\r\",\"\\n\",'\"',b.BYTE_ORDER_MARK],b.WORKERS_SUPPORTED=!n&&!!f.Worker,b.NODE_STREAM_INPUT=1,b.LocalChunkSize=10485760,b.RemoteChunkSize=5242880,b.DefaultDelimiter=\",\",b.Parser=E,b.ParserHandle=i,b.NetworkStreamer=l,b.FileStreamer=c,b.StringStreamer=p,b.ReadableStreamStreamer=g,f.jQuery){var d=f.jQuery;d.fn.parse=function(o){var i=o.config||{},h=[];return this.each(function(e){if(!(\"INPUT\"===d(this).prop(\"tagName\").toUpperCase()&&\"file\"===d(this).attr(\"type\").toLowerCase()&&f.FileReader)||!this.files||0===this.files.length)return!0;for(var t=0;t<this.files.length;t++)h.push({file:this.files[t],inputElem:this,instanceConfig:d.extend({},i)})}),e(),this;function e(){if(0!==h.length){var e,t,i,r,n=h[0];if(M(o.before)){var s=o.before(n.file,n.inputElem);if(\"object\"==typeof s){if(\"abort\"===s.action)return e=\"AbortError\",t=n.file,i=n.inputElem,r=s.reason,void(M(o.error)&&o.error({name:e},t,i,r));if(\"skip\"===s.action)return void u();\"object\"==typeof s.config&&(n.instanceConfig=d.extend(n.instanceConfig,s.config))}else if(\"skip\"===s)return void u()}var a=n.instanceConfig.complete;n.instanceConfig.complete=function(e){M(a)&&a(e,n.file,n.inputElem),u()},b.parse(n.file,n.instanceConfig)}else M(o.complete)&&o.complete()}function u(){h.splice(0,1),e()}}}function u(e){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine=\"\",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},function(e){var t=w(e);t.chunkSize=parseInt(t.chunkSize),e.step||e.chunk||(t.chunkSize=null);this._handle=new i(t),(this._handle.streamer=this)._config=t}.call(this,e),this.parseChunk=function(e,t){if(this.isFirstChunk&&M(this._config.beforeFirstChunk)){var i=this._config.beforeFirstChunk(e);void 0!==i&&(e=i)}this.isFirstChunk=!1,this._halted=!1;var r=this._partialLine+e;this._partialLine=\"\";var n=this._handle.parse(r,this._baseIndex,!this._finished);if(!this._handle.paused()&&!this._handle.aborted()){var s=n.meta.cursor;this._finished||(this._partialLine=r.substring(s-this._baseIndex),this._baseIndex=s),n&&n.data&&(this._rowCount+=n.data.length);var a=this._finished||this._config.preview&&this._rowCount>=this._config.preview;if(o)f.postMessage({results:n,workerId:b.WORKER_ID,finished:a});else if(M(this._config.chunk)&&!t){if(this._config.chunk(n,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);n=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(n.data),this._completeResults.errors=this._completeResults.errors.concat(n.errors),this._completeResults.meta=n.meta),this._completed||!a||!M(this._config.complete)||n&&n.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),a||n&&n.meta.paused||this._nextChunk(),n}this._halted=!0},this._sendError=function(e){M(this._config.error)?this._config.error(e):o&&this._config.error&&f.postMessage({workerId:b.WORKER_ID,error:e,finished:!1})}}function l(e){var r;(e=e||{}).chunkSize||(e.chunkSize=b.RemoteChunkSize),u.call(this,e),this._nextChunk=n?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(r=new XMLHttpRequest,this._config.withCredentials&&(r.withCredentials=this._config.withCredentials),n||(r.onload=v(this._chunkLoaded,this),r.onerror=v(this._chunkError,this)),r.open(this._config.downloadRequestBody?\"POST\":\"GET\",this._input,!n),this._config.downloadRequestHeaders){var e=this._config.downloadRequestHeaders;for(var t in e)r.setRequestHeader(t,e[t])}if(this._config.chunkSize){var i=this._start+this._config.chunkSize-1;r.setRequestHeader(\"Range\",\"bytes=\"+this._start+\"-\"+i)}try{r.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}n&&0===r.status&&this._chunkError()}},this._chunkLoaded=function(){4===r.readyState&&(r.status<200||400<=r.status?this._chunkError():(this._start+=this._config.chunkSize?this._config.chunkSize:r.responseText.length,this._finished=!this._config.chunkSize||this._start>=function(e){var t=e.getResponseHeader(\"Content-Range\");if(null===t)return-1;return parseInt(t.substring(t.lastIndexOf(\"/\")+1))}(r),this.parseChunk(r.responseText)))},this._chunkError=function(e){var t=r.statusText||e;this._sendError(new Error(t))}}function c(e){var r,n;(e=e||{}).chunkSize||(e.chunkSize=b.LocalChunkSize),u.call(this,e);var s=\"undefined\"!=typeof FileReader;this.stream=function(e){this._input=e,n=e.slice||e.webkitSlice||e.mozSlice,s?((r=new FileReader).onload=v(this._chunkLoaded,this),r.onerror=v(this._chunkError,this)):r=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input;if(this._config.chunkSize){var t=Math.min(this._start+this._config.chunkSize,this._input.size);e=n.call(e,this._start,t)}var i=r.readAsText(e,this._config.encoding);s||this._chunkLoaded({target:{result:i}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(r.error)}}function p(e){var i;u.call(this,e=e||{}),this.stream=function(e){return i=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e,t=this._config.chunkSize;return t?(e=i.substring(0,t),i=i.substring(t)):(e=i,i=\"\"),this._finished=!i,this.parseChunk(e)}}}function g(e){u.call(this,e=e||{});var t=[],i=!0,r=!1;this.pause=function(){u.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){u.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on(\"data\",this._streamData),this._input.on(\"end\",this._streamEnd),this._input.on(\"error\",this._streamError)},this._checkIsFinished=function(){r&&1===t.length&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):i=!0},this._streamData=v(function(e){try{t.push(\"string\"==typeof e?e:e.toString(this._config.encoding)),i&&(i=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}},this),this._streamError=v(function(e){this._streamCleanUp(),this._sendError(e)},this),this._streamEnd=v(function(){this._streamCleanUp(),r=!0,this._streamData(\"\")},this),this._streamCleanUp=v(function(){this._input.removeListener(\"data\",this._streamData),this._input.removeListener(\"end\",this._streamEnd),this._input.removeListener(\"error\",this._streamError)},this)}function i(m){var a,o,h,r=Math.pow(2,53),n=-r,s=/^\\s*-?(\\d+\\.?|\\.\\d+|\\d+\\.\\d+)([eE][-+]?\\d+)?\\s*$/,u=/^(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))$/,t=this,i=0,f=0,d=!1,e=!1,l=[],c={data:[],errors:[],meta:{}};if(M(m.step)){var p=m.step;m.step=function(e){if(c=e,_())g();else{if(g(),0===c.data.length)return;i+=e.data.length,m.preview&&i>m.preview?o.abort():(c.data=c.data[0],p(c,t))}}}function y(e){return\"greedy\"===m.skipEmptyLines?\"\"===e.join(\"\").trim():1===e.length&&0===e[0].length}function g(){return c&&h&&(k(\"Delimiter\",\"UndetectableDelimiter\",\"Unable to auto-detect delimiting character; defaulted to '\"+b.DefaultDelimiter+\"'\"),h=!1),m.skipEmptyLines&&(c.data=c.data.filter(function(e){return!y(e)})),_()&&function(){if(!c)return;function e(e,t){M(m.transformHeader)&&(e=m.transformHeader(e,t)),l.push(e)}if(Array.isArray(c.data[0])){for(var t=0;_()&&t<c.data.length;t++)c.data[t].forEach(e);c.data.splice(0,1)}else c.data.forEach(e)}(),function(){if(!c||!m.header&&!m.dynamicTyping&&!m.transform)return c;function e(e,t){var i,r=m.header?{}:[];for(i=0;i<e.length;i++){var n=i,s=e[i];m.header&&(n=i>=l.length?\"__parsed_extra\":l[i]),m.transform&&(s=m.transform(s,n)),s=v(n,s),\"__parsed_extra\"===n?(r[n]=r[n]||[],r[n].push(s)):r[n]=s}return m.header&&(i>l.length?k(\"FieldMismatch\",\"TooManyFields\",\"Too many fields: expected \"+l.length+\" fields but parsed \"+i,f+t):i<l.length&&k(\"FieldMismatch\",\"TooFewFields\",\"Too few fields: expected \"+l.length+\" fields but parsed \"+i,f+t)),r}var t=1;!c.data.length||Array.isArray(c.data[0])?(c.data=c.data.map(e),t=c.data.length):c.data=e(c.data,0);m.header&&c.meta&&(c.meta.fields=l);return f+=t,c}()}function _(){return m.header&&0===l.length}function v(e,t){return i=e,m.dynamicTypingFunction&&void 0===m.dynamicTyping[i]&&(m.dynamicTyping[i]=m.dynamicTypingFunction(i)),!0===(m.dynamicTyping[i]||m.dynamicTyping)?\"true\"===t||\"TRUE\"===t||\"false\"!==t&&\"FALSE\"!==t&&(function(e){if(s.test(e)){var t=parseFloat(e);if(n<t&&t<r)return!0}return!1}(t)?parseFloat(t):u.test(t)?new Date(t):\"\"===t?null:t):t;var i}function k(e,t,i,r){var n={type:e,code:t,message:i};void 0!==r&&(n.row=r),c.errors.push(n)}this.parse=function(e,t,i){var r=m.quoteChar||'\"';if(m.newline||(m.newline=function(e,t){e=e.substring(0,1048576);var i=new RegExp(j(t)+\"([^]*?)\"+j(t),\"gm\"),r=(e=e.replace(i,\"\")).split(\"\\r\"),n=e.split(\"\\n\"),s=1<n.length&&n[0].length<r[0].length;if(1===r.length||s)return\"\\n\";for(var a=0,o=0;o<r.length;o++)\"\\n\"===r[o][0]&&a++;return a>=r.length/2?\"\\r\\n\":\"\\r\"}(e,r)),h=!1,m.delimiter)M(m.delimiter)&&(m.delimiter=m.delimiter(e),c.meta.delimiter=m.delimiter);else{var n=function(e,t,i,r,n){var s,a,o,h;n=n||[\",\",\"\\t\",\"|\",\";\",b.RECORD_SEP,b.UNIT_SEP];for(var u=0;u<n.length;u++){var f=n[u],d=0,l=0,c=0;o=void 0;for(var p=new E({comments:r,delimiter:f,newline:t,preview:10}).parse(e),g=0;g<p.data.length;g++)if(i&&y(p.data[g]))c++;else{var _=p.data[g].length;l+=_,void 0!==o?0<_&&(d+=Math.abs(_-o),o=_):o=_}0<p.data.length&&(l/=p.data.length-c),(void 0===a||d<=a)&&(void 0===h||h<l)&&1.99<l&&(a=d,s=f,h=l)}return{successful:!!(m.delimiter=s),bestDelimiter:s}}(e,m.newline,m.skipEmptyLines,m.comments,m.delimitersToGuess);n.successful?m.delimiter=n.bestDelimiter:(h=!0,m.delimiter=b.DefaultDelimiter),c.meta.delimiter=m.delimiter}var s=w(m);return m.preview&&m.header&&s.preview++,a=e,o=new E(s),c=o.parse(a,t,i),g(),d?{meta:{paused:!0}}:c||{meta:{paused:!1}}},this.paused=function(){return d},this.pause=function(){d=!0,o.abort(),a=M(m.chunk)?\"\":a.substring(o.getCharIndex())},this.resume=function(){t.streamer._halted?(d=!1,t.streamer.parseChunk(a,!0)):setTimeout(t.resume,3)},this.aborted=function(){return e},this.abort=function(){e=!0,o.abort(),c.meta.aborted=!0,M(m.complete)&&m.complete(c),a=\"\"}}function j(e){return e.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}function E(e){var S,O=(e=e||{}).delimiter,x=e.newline,I=e.comments,T=e.step,D=e.preview,A=e.fastMode,L=S=void 0===e.quoteChar||null===e.quoteChar?'\"':e.quoteChar;if(void 0!==e.escapeChar&&(L=e.escapeChar),(\"string\"!=typeof O||-1<b.BAD_DELIMITERS.indexOf(O))&&(O=\",\"),I===O)throw new Error(\"Comment character same as delimiter\");!0===I?I=\"#\":(\"string\"!=typeof I||-1<b.BAD_DELIMITERS.indexOf(I))&&(I=!1),\"\\n\"!==x&&\"\\r\"!==x&&\"\\r\\n\"!==x&&(x=\"\\n\");var F=0,z=!1;this.parse=function(r,t,i){if(\"string\"!=typeof r)throw new Error(\"Input must be a string\");var n=r.length,e=O.length,s=x.length,a=I.length,o=M(T),h=[],u=[],f=[],d=F=0;if(!r)return C();if(A||!1!==A&&-1===r.indexOf(S)){for(var l=r.split(x),c=0;c<l.length;c++){if(f=l[c],F+=f.length,c!==l.length-1)F+=x.length;else if(i)return C();if(!I||f.substring(0,a)!==I){if(o){if(h=[],k(f.split(O)),R(),z)return C()}else k(f.split(O));if(D&&D<=c)return h=h.slice(0,D),C(!0)}}return C()}for(var p=r.indexOf(O,F),g=r.indexOf(x,F),_=new RegExp(j(L)+j(S),\"g\"),m=r.indexOf(S,F);;)if(r[F]!==S)if(I&&0===f.length&&r.substring(F,F+a)===I){if(-1===g)return C();F=g+s,g=r.indexOf(x,F),p=r.indexOf(O,F)}else if(-1!==p&&(p<g||-1===g))f.push(r.substring(F,p)),F=p+e,p=r.indexOf(O,F);else{if(-1===g)break;if(f.push(r.substring(F,g)),w(g+s),o&&(R(),z))return C();if(D&&h.length>=D)return C(!0)}else for(m=F,F++;;){if(-1===(m=r.indexOf(S,m+1)))return i||u.push({type:\"Quotes\",code:\"MissingQuotes\",message:\"Quoted field unterminated\",row:h.length,index:F}),E();if(m===n-1)return E(r.substring(F,m).replace(_,S));if(S!==L||r[m+1]!==L){if(S===L||0===m||r[m-1]!==L){-1!==p&&p<m+1&&(p=r.indexOf(O,m+1)),-1!==g&&g<m+1&&(g=r.indexOf(x,m+1));var y=b(-1===g?p:Math.min(p,g));if(r.substr(m+1+y,e)===O){f.push(r.substring(F,m).replace(_,S)),r[F=m+1+y+e]!==S&&(m=r.indexOf(S,F)),p=r.indexOf(O,F),g=r.indexOf(x,F);break}var v=b(g);if(r.substring(m+1+v,m+1+v+s)===x){if(f.push(r.substring(F,m).replace(_,S)),w(m+1+v+s),p=r.indexOf(O,F),m=r.indexOf(S,F),o&&(R(),z))return C();if(D&&h.length>=D)return C(!0);break}u.push({type:\"Quotes\",code:\"InvalidQuotes\",message:\"Trailing quote on quoted field is malformed\",row:h.length,index:F}),m++}}else m++}return E();function k(e){h.push(e),d=F}function b(e){var t=0;if(-1!==e){var i=r.substring(m+1,e);i&&\"\"===i.trim()&&(t=i.length)}return t}function E(e){return i||(void 0===e&&(e=r.substring(F)),f.push(e),F=n,k(f),o&&R()),C()}function w(e){F=e,k(f),f=[],g=r.indexOf(x,F)}function C(e){return{data:h,errors:u,meta:{delimiter:O,linebreak:x,aborted:z,truncated:!!e,cursor:d+(t||0)}}}function R(){T(C()),h=[],u=[]}},this.abort=function(){z=!0},this.getCharIndex=function(){return F}}function _(e){var t=e.data,i=a[t.workerId],r=!1;if(t.error)i.userError(t.error,t.file);else if(t.results&&t.results.data){var n={abort:function(){r=!0,m(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:y,resume:y};if(M(i.userStep)){for(var s=0;s<t.results.data.length&&(i.userStep({data:t.results.data[s],errors:t.results.errors,meta:t.results.meta},n),!r);s++);delete t.results}else M(i.userChunk)&&(i.userChunk(t.results,n,t.file),delete t.results)}t.finished&&!r&&m(t.workerId,t.results)}function m(e,t){var i=a[e];M(i.userComplete)&&i.userComplete(t),i.terminate(),delete a[e]}function y(){throw new Error(\"Not implemented.\")}function w(e){if(\"object\"!=typeof e||null===e)return e;var t=Array.isArray(e)?[]:{};for(var i in e)t[i]=w(e[i]);return t}function v(e,t){return function(){e.apply(t,arguments)}}function M(e){return\"function\"==typeof e}return o&&(f.onmessage=function(e){var t=e.data;void 0===b.WORKER_ID&&t&&(b.WORKER_ID=t.workerId);if(\"string\"==typeof t.input)f.postMessage({workerId:b.WORKER_ID,results:b.parse(t.input,t.config),finished:!0});else if(f.File&&t.input instanceof File||t.input instanceof Object){var i=b.parse(t.input,t.config);i&&f.postMessage({workerId:b.WORKER_ID,results:i,finished:!0})}}),(l.prototype=Object.create(u.prototype)).constructor=l,(c.prototype=Object.create(u.prototype)).constructor=c,(p.prototype=Object.create(p.prototype)).constructor=p,(g.prototype=Object.create(u.prototype)).constructor=g,b});","export default function getMoleculeCreators(Molecule) {\n  const fields = new Map();\n\n  fields.set('oclid', Molecule.fromIDCode);\n  fields.set('idcode', Molecule.fromIDCode);\n  fields.set('smiles', Molecule.fromSmiles);\n  fields.set('molfile', Molecule.fromMolfile);\n\n  return fields;\n}\n","import { ensureString } from 'ensure-string';\nimport Papa from 'papaparse';\n\nimport getMoleculeCreators from './getMoleculeCreators';\n\nconst defaultCSVOptions = {\n  header: true,\n  dynamicTyping: true,\n  skipEmptyLines: true,\n};\n\nexport default async function appendCSV(moleculesDB, csv, options = {}) {\n  const { onStep } = options;\n  csv = ensureString(csv);\n  const moleculeCreators = getMoleculeCreators(moleculesDB.OCL.Molecule);\n\n  if (typeof csv !== 'string') {\n    throw new TypeError('csv must be a string');\n  }\n  options = { ...defaultCSVOptions, ...options };\n\n  const parsed = Papa.parse(csv, options);\n  const fields = parsed.meta.fields;\n  const stats = new Array(fields.length);\n  const firstElement = parsed.data[0];\n  let moleculeCreator, moleculeField;\n  for (let i = 0; i < fields.length; i++) {\n    stats[i] = {\n      label: fields[i],\n      isNumeric: typeof firstElement[fields[i]] === 'number',\n    };\n    const lowerField = fields[i].toLowerCase();\n    if (moleculeCreators.has(lowerField)) {\n      moleculeCreator = moleculeCreators.get(lowerField);\n      moleculeField = fields[i];\n    }\n  }\n  if (!moleculeCreator) {\n    throw new Error('this document does not contain any molecule field');\n  }\n  moleculesDB.statistics = stats;\n\n  for (let i = 0; i < parsed.data.length; i++) {\n    moleculesDB.pushEntry(\n      moleculeCreator(parsed.data[i][moleculeField]),\n      parsed.data[i],\n    );\n    if (onStep) {\n      await onStep(i + 1, parsed.data.length);\n    }\n  }\n}\n","export default function appendColor(moleculesDB, options = {}) {\n  const {\n    dataLabel,\n    propertyLabel,\n    minValue,\n    maxValue,\n    minHue = 0,\n    maxHue = 360,\n    saturation = 65,\n    lightness = 65,\n    colorLabel = 'color',\n  } = options;\n\n  const db = moleculesDB.getDB();\n  let values;\n  if (dataLabel) {\n    values = db\n      .map((result) =>\n        result.data.map((datum) => ({ value: datum[dataLabel], data: datum })),\n      )\n      .flat();\n  } else if (propertyLabel) {\n    values = db\n      .map((result) =>\n        result.data.map((datum) => ({\n          value: result.properties[propertyLabel],\n          data: datum,\n        })),\n      )\n      .flat();\n  } else {\n    values = db\n      .map((result) =>\n        result.data.map((datum) => ({ value: undefined, data: datum })),\n      )\n      .flat();\n  }\n\n  if (minValue !== undefined) {\n    values = values.forEach((value) => {\n      if (value.value !== undefined && value.value < minValue) {\n        value.value = minValue;\n      }\n    });\n  }\n\n  if (maxValue !== undefined) {\n    values = values.forEach((value) => {\n      if (value.value !== undefined && value.value > maxValue) {\n        value.value = maxValue;\n      }\n    });\n  }\n\n  const definedValues = values.filter((value) => value.value !== undefined);\n  const min = Math.min(...definedValues.map((value) => value.value));\n  const max = Math.max(...definedValues.map((value) => value.value));\n\n  for (let value of values) {\n    if (value.value !== undefined) {\n      value.data[colorLabel] = `hsl(${Math.floor(\n        ((value.value - min) / (max - min)) * (maxHue - minHue) + minHue,\n      )},${saturation}%,${lightness}%)`;\n    } else {\n      value.data.color = 'black';\n    }\n  }\n}\n","export function getEntriesBoundaries(string, substring, eol) {\n  const res = [];\n  let previous = 0;\n  let next = 0;\n  while (next !== -1) {\n    next = string.indexOf(substring, previous);\n    if (next !== -1) {\n      res.push([previous, next]);\n      const nextMatch = string.indexOf(eol, next + substring.length);\n      if (nextMatch === -1) {\n        next = -1;\n      } else {\n        previous = nextMatch + eol.length;\n        next = previous;\n      }\n    } else {\n      res.push([previous, string.length]);\n    }\n  }\n  return res;\n}\n","export function getMolecule(sdfPart, labels, currentLabels, options) {\n  let parts = sdfPart.split(`${options.eol}>`);\n  if (parts.length === 0 || parts[0].length <= 5) return;\n  let molecule = {};\n  molecule.molfile = parts[0] + options.eol;\n  for (let j = 1; j < parts.length; j++) {\n    let lines = parts[j].split(options.eol);\n    let from = lines[0].indexOf('<');\n    let to = lines[0].indexOf('>');\n    let label = lines[0].substring(from + 1, to);\n    currentLabels.push(label);\n    if (!labels[label]) {\n      labels[label] = {\n        counter: 0,\n        isNumeric: options.dynamicTyping,\n        keep: false,\n      };\n      if (\n        (!options.exclude || options.exclude.indexOf(label) === -1) &&\n        (!options.include || options.include.indexOf(label) > -1)\n      ) {\n        labels[label].keep = true;\n        if (options.modifiers[label]) {\n          labels[label].modifier = options.modifiers[label];\n        }\n        if (options.forEach[label]) {\n          labels[label].forEach = options.forEach[label];\n        }\n      }\n    }\n    if (labels[label].keep) {\n      for (let k = 1; k < lines.length - 1; k++) {\n        if (molecule[label]) {\n          molecule[label] += options.eol + lines[k];\n        } else {\n          molecule[label] = lines[k];\n        }\n      }\n      if (labels[label].modifier) {\n        let modifiedValue = labels[label].modifier(molecule[label]);\n        if (modifiedValue === undefined || modifiedValue === null) {\n          delete molecule[label];\n        } else {\n          molecule[label] = modifiedValue;\n        }\n      }\n      if (labels[label].isNumeric) {\n        if (!isFinite(molecule[label]) || molecule[label].match(/^0[0-9]/)) {\n          labels[label].isNumeric = false;\n        }\n      }\n    }\n  }\n  return molecule;\n}\n","import { ensureString } from 'ensure-string';\n\nimport { getEntriesBoundaries } from './getEntriesBoundaries';\nimport { getMolecule } from './util/getMolecule';\n/**\n *  Parse a SDF file\n * @param {string|ArrayBuffer|Uint8Array} sdf SDF file to parse\n * @param {object} [options={}]\n * @param {string[]} [options.include] List of fields to include\n * @param {string[]} [options.exclude] List of fields to exclude\n * @param {Function} [options.filter] Callback allowing to filter the molecules\n * @param {boolean} [options.dynamicTyping] Dynamically type the data\n * @param {object} [options.modifiers] Object containing callbacks to apply on some specific fields\n * @param {boolean} [options.mixedEOL=false] Set to true if you know there is a mixture between \\r\\n and \\n\n * @param {string} [options.eol] Specify the end of line character. Default will be the one found in the file\n */\nexport function parse(sdf, options = {}) {\n  options = { ...options };\n  if (options.modifiers === undefined) options.modifiers = {};\n  if (options.forEach === undefined) options.forEach = {};\n  if (options.dynamicTyping === undefined) options.dynamicTyping = true;\n\n  sdf = ensureString(sdf);\n  if (typeof sdf !== 'string') {\n    throw new TypeError('Parameter \"sdf\" must be a string');\n  }\n\n  if (options.eol === undefined) {\n    options.eol = '\\n';\n    if (options.mixedEOL) {\n      sdf = sdf.replace(/\\r\\n/g, '\\n');\n      sdf = sdf.replace(/\\r/g, '\\n');\n    } else {\n      // we will find the delimiter in order to be much faster and not use regular expression\n      let header = sdf.substr(0, 1000);\n      if (header.indexOf('\\r\\n') > -1) {\n        options.eol = '\\r\\n';\n      } else if (header.indexOf('\\r') > -1) {\n        options.eol = '\\r';\n      }\n    }\n  }\n\n  let entriesBoundaries = getEntriesBoundaries(\n    sdf,\n    `${options.eol}$$$$`,\n    options.eol,\n  );\n  let molecules = [];\n  let labels = {};\n\n  let start = Date.now();\n\n  for (let i = 0; i < entriesBoundaries.length; i++) {\n    let sdfPart = sdf.substring(...entriesBoundaries[i]);\n\n    let currentLabels = [];\n    const molecule = getMolecule(sdfPart, labels, currentLabels, options);\n    if (!molecule) continue;\n    if (!options.filter || options.filter(molecule)) {\n      molecules.push(molecule);\n      // only now we can increase the counter\n      for (let j = 0; j < currentLabels.length; j++) {\n        labels[currentLabels[j]].counter++;\n      }\n    }\n  }\n  // all numeric fields should be converted to numbers\n  for (let label in labels) {\n    let currentLabel = labels[label];\n    if (currentLabel.isNumeric) {\n      currentLabel.minValue = Infinity;\n      currentLabel.maxValue = -Infinity;\n      for (let j = 0; j < molecules.length; j++) {\n        if (molecules[j][label]) {\n          let value = parseFloat(molecules[j][label]);\n          molecules[j][label] = value;\n          if (value > currentLabel.maxValue) {\n            currentLabel.maxValue = value;\n          }\n          if (value < currentLabel.minValue) {\n            currentLabel.minValue = value;\n          }\n        }\n      }\n    }\n  }\n\n  // we check that a label is in all the records\n  for (let key in labels) {\n    if (labels[key].counter === molecules.length) {\n      labels[key].always = true;\n    } else {\n      labels[key].always = false;\n    }\n  }\n\n  let statistics = [];\n  for (let key in labels) {\n    let statistic = labels[key];\n    statistic.label = key;\n    statistics.push(statistic);\n  }\n\n  return {\n    time: Date.now() - start,\n    molecules,\n    labels: Object.keys(labels),\n    statistics,\n  };\n}\n","import { ensureString } from 'ensure-string';\nimport { parse } from 'sdf-parser';\n\nexport default async function appendSDF(moleculesDB, sdf, options = {}) {\n  const { onStep } = options;\n  sdf = ensureString(sdf);\n  if (typeof sdf !== 'string') {\n    throw new TypeError('sdf must be a string');\n  }\n  const parsed = parse(sdf);\n  moleculesDB.statistics = parsed.statistics;\n  for (let i = 0; i < parsed.molecules.length; i++) {\n    const molecule = parsed.molecules[i];\n    moleculesDB.pushEntry(\n      moleculesDB.OCL.Molecule.fromMolfile(molecule.molfile),\n      molecule,\n    );\n    if (onStep) {\n      await onStep(i + 1, parsed.molecules.length);\n    }\n  }\n}\n","import { ensureString } from 'ensure-string';\n\nexport default async function appendSmilesList(\n  moleculesDB,\n  text,\n  options = {},\n) {\n  const { onStep } = options;\n  text = ensureString(text);\n  if (typeof text !== 'string') {\n    throw new TypeError('text must be a string');\n  }\n  const smilesArray = text\n    .split(/\\r?\\n/)\n    .map((line) => line.trim())\n    .filter((line) => line);\n  for (let i = 0; i < smilesArray.length; i++) {\n    const oneSmiles = smilesArray[i];\n    moleculesDB.pushEntry(moleculesDB.OCL.Molecule.fromSmiles(oneSmiles));\n    if (onStep) {\n      await onStep(i + 1, smilesArray.length);\n    }\n  }\n}\n","/**\n *\n * @param {MoleculesDB} moleculesDB\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} data\n * @param {object} [moleculeInfo]\n * @param {string} [moleculeInfo.idCode]\n * @param {number[]} [moleculeInfo.index]\n */\n\nexport default function pushEntry(\n  moleculesDB,\n  molecule,\n  data = {},\n  moleculeInfo = {},\n) {\n  // the following line could be the source of problems if the idCode version\n  // changes\n\n  let moleculeIDCode = moleculeInfo.idCode\n    ? moleculeInfo.idCode\n    : molecule.getIDCode();\n  let entry = moleculesDB.db[moleculeIDCode];\n  if (!entry) {\n    // a new molecule\n    entry = { molecule, properties: {}, data: [], idCode: moleculeIDCode };\n    moleculesDB.db[moleculeIDCode] = entry;\n\n    // ensure helper arrays needed for substructure search\n    molecule.ensureHelperArrays(moleculesDB.OCL.Molecule.cHelperRings);\n    if (!moleculeInfo.index) {\n      entry.index = molecule.getIndex();\n    } else {\n      entry.index = moleculeInfo.index;\n    }\n\n    let molecularFormula;\n    if (!moleculeInfo.mw) {\n      molecularFormula = molecule.getMolecularFormula();\n      entry.properties.mw = molecularFormula.relativeWeight;\n    } else {\n      entry.properties.mw = moleculeInfo.mw;\n    }\n\n    if (moleculesDB.computeProperties) {\n      if (!molecularFormula) {\n        molecularFormula = molecule.getMolecularFormula();\n      }\n      const properties = new moleculesDB.OCL.MoleculeProperties(molecule);\n      entry.properties.em = molecularFormula.absoluteWeight;\n      entry.properties.mf = molecularFormula.formula;\n      entry.properties.acceptorCount = properties.acceptorCount;\n      entry.properties.donorCount = properties.donorCount;\n      entry.properties.logP = properties.logP;\n      entry.properties.logS = properties.logS;\n      entry.properties.polarSurfaceArea = properties.polarSurfaceArea;\n      entry.properties.rotatableBondCount = properties.rotatableBondCount;\n      entry.properties.stereoCenterCount = properties.stereoCenterCount;\n    }\n  }\n  entry.data.push(data);\n}\n","export default function pushMoleculeInfo(moleculesDB, moleculeInfo, data = {}) {\n  if (typeof moleculeInfo !== 'object') {\n    throw new Error('pushMoleculeInfo requires an object as first parameter');\n  }\n  const Molecule = moleculesDB.OCL.Molecule;\n  let molecule;\n  if (moleculeInfo.molfile) {\n    molecule = Molecule.fromMolfile(moleculeInfo.molfile);\n  }\n  if (moleculeInfo.smiles) molecule = Molecule.fromSmiles(moleculeInfo.smiles);\n  if (moleculeInfo.idCode) {\n    if (moleculesDB.db[moleculeInfo.idCode]) {\n      molecule = moleculesDB.db[moleculeInfo.idCode].molecule;\n    } else {\n      molecule = Molecule.fromIDCode(\n        moleculeInfo.idCode,\n        moleculeInfo.coordinates || false,\n      );\n    }\n  }\n\n  if (molecule) {\n    moleculesDB.pushEntry(molecule, data, moleculeInfo);\n  }\n}\n","export async function noWait() {\n  return new Promise((resolve) => {\n    if (typeof setImmediate === 'function') {\n      setImmediate(() => resolve());\n    } else {\n      // didn't find a better way to do it in the browser\n      setTimeout(() => resolve(), 0);\n    }\n  });\n}\n","import { noWait } from '../../util/noWait.js';\n\nimport getMoleculeCreators from './getMoleculeCreators';\n\nclass AbortError extends Error {\n  name = 'AbortError';\n  code = 20;\n}\n\nfunction getQuery(moleculesDB, query, options) {\n  const { format = 'idCode' } = options;\n\n  if (typeof query === 'string') {\n    const moleculeCreators = getMoleculeCreators(moleculesDB.OCL.Molecule);\n    query = moleculeCreators.get(format.toLowerCase())(query);\n  } else if (!(query instanceof moleculesDB.OCL.Molecule)) {\n    throw new TypeError('toSearch must be a Molecule or string');\n  }\n  return query;\n}\n\nexport function search(moleculesDB, query = '', options = {}) {\n  const { mode = 'substructure' } = options;\n\n  query = getQuery(moleculesDB, query, options);\n\n  let result;\n  switch (mode.toLowerCase()) {\n    case 'exact':\n      result = exactSearch(moleculesDB, query);\n      break;\n    case 'substructure':\n      result = subStructureSearch(moleculesDB, query);\n      break;\n    case 'similarity':\n      result = similaritySearch(moleculesDB, query);\n      break;\n    default:\n      throw new Error(`unknown search mode: ${options.mode}`);\n  }\n  return processResult(result, options);\n}\n\nexport async function searchAsync(moleculesDB, query = '', options = {}) {\n  const { mode = 'substructure' } = options;\n\n  query = getQuery(moleculesDB, query, options);\n\n  let result;\n  switch (mode.toLowerCase()) {\n    case 'exact':\n      result = exactSearch(moleculesDB, query);\n      break;\n    case 'substructure':\n      result = await subStructureSearchAsync(moleculesDB, query, options);\n      break;\n    case 'similarity':\n      result = similaritySearch(moleculesDB, query);\n      break;\n    default:\n      throw new Error(`unknown search mode: ${options.mode}`);\n  }\n  return processResult(result, options);\n}\n\nfunction exactSearch(moleculesDB, query) {\n  const queryIDCode = query.getIDCode();\n  let searchResult = moleculesDB.db[queryIDCode]\n    ? [moleculesDB.db[queryIDCode]]\n    : [];\n  return searchResult;\n}\n\nfunction substructureSearchBegin(moleculesDB, query) {\n  let resetFragment = false;\n  if (!query.isFragment()) {\n    resetFragment = true;\n    query.setFragment(true);\n  }\n\n  const queryMW = getMW(query);\n  const searchResult = [];\n  if (query.getAllAtoms() === 0) {\n    for (let idCode in moleculesDB.db) {\n      searchResult.push(moleculesDB.db[idCode]);\n    }\n  }\n  return { resetFragment, queryMW, searchResult };\n}\n\nfunction substructureSearchEnd(searchResult, queryMW, resetFragment, query) {\n  searchResult.sort((a, b) => {\n    return (\n      Math.abs(queryMW - a.properties.mw) - Math.abs(queryMW - b.properties.mw)\n    );\n  });\n\n  if (resetFragment) {\n    query.setFragment(false);\n  }\n\n  return searchResult;\n}\n\nfunction subStructureSearch(moleculesDB, query) {\n  const { resetFragment, queryMW, searchResult } = substructureSearchBegin(\n    moleculesDB,\n    query,\n  );\n\n  if (searchResult.length === 0) {\n    const queryIndex = query.getIndex();\n    const searcher = moleculesDB.searcher;\n    searcher.setFragment(query, queryIndex);\n    for (let idCode in moleculesDB.db) {\n      let entry = moleculesDB.db[idCode];\n      searcher.setMolecule(entry.molecule, entry.index);\n      if (searcher.isFragmentInMolecule()) {\n        searchResult.push(entry);\n      }\n    }\n  }\n\n  return substructureSearchEnd(searchResult, queryMW, resetFragment, query);\n}\n\nasync function subStructureSearchAsync(moleculesDB, query, options = {}) {\n  const { interval = 100, onStep, controller } = options;\n  let shouldAbort = false;\n\n  if (controller) {\n    const abortEventListener = () => {\n      shouldAbort = true;\n    };\n    controller.signal.addEventListener('abort', abortEventListener);\n  }\n\n  const { resetFragment, queryMW, searchResult } = substructureSearchBegin(\n    moleculesDB,\n    query,\n  );\n\n  let begin = performance.now();\n\n  if (searchResult.length === 0) {\n    const queryIndex = query.getIndex();\n    const searcher = moleculesDB.searcher;\n    searcher.setFragment(query, queryIndex);\n    let index = 0;\n    let length = Object.keys(moleculesDB.db).length;\n    for (let idCode in moleculesDB.db) {\n      if (shouldAbort) {\n        throw new AbortError('Query aborted');\n      }\n      let entry = moleculesDB.db[idCode];\n      searcher.setMolecule(entry.molecule, entry.index);\n      if (searcher.isFragmentInMolecule()) {\n        searchResult.push(entry);\n      }\n      if ((onStep || controller) && performance.now() - begin >= interval) {\n        begin = performance.now();\n        if (onStep) {\n          onStep(index, length);\n        }\n        if (controller && !onStep) {\n          await noWait();\n        }\n      }\n      index++;\n    }\n  }\n  return substructureSearchEnd(searchResult, queryMW, resetFragment, query);\n}\n\nfunction similaritySearch(moleculesDB, query) {\n  const queryIndex = query.getIndex();\n  const queryMW = getMW(query);\n  const queryIdCode = query.getIDCode();\n\n  const searchResult = [];\n  let similarity;\n  for (let idCode in moleculesDB.db) {\n    let entry = moleculesDB.db[idCode];\n    if (entry.idCode === queryIdCode) {\n      similarity = Number.MAX_SAFE_INTEGER;\n    } else {\n      similarity =\n        moleculesDB.OCL.SSSearcherWithIndex.getSimilarityTanimoto(\n          queryIndex,\n          entry.index,\n        ) *\n          1000000 -\n        Math.abs(queryMW - entry.properties.mw) / 10000;\n    }\n    searchResult.push({ similarity, entry });\n  }\n  searchResult.sort((a, b) => {\n    return b.similarity - a.similarity;\n  });\n  return searchResult.map((entry) => entry.entry);\n}\n\nfunction getMW(query) {\n  let copy = query.getCompactCopy();\n  copy.setFragment(false);\n  return copy.getMolecularFormula().relativeWeight;\n}\n\nfunction processResult(entries, options = {}) {\n  const {\n    flattenResult = true,\n    keepMolecule = false,\n    limit = Number.MAX_SAFE_INTEGER,\n  } = options;\n  let results = [];\n\n  if (flattenResult) {\n    for (let entry of entries) {\n      for (let data of entry.data) {\n        results.push({\n          data,\n          idCode: entry.idCode,\n          properties: entry.properties,\n          molecule: keepMolecule ? entry.molecule : undefined,\n        });\n      }\n    }\n  } else {\n    for (let entry of entries) {\n      results.push({\n        data: entry.data,\n        idCode: entry.idCode,\n        properties: entry.properties,\n        molecule: keepMolecule ? entry.molecule : undefined,\n      });\n    }\n  }\n  if (limit < results.length) results.length = limit;\n  return results;\n}\n","import appendCSV from './utils/appendCSV';\nimport appendColor from './utils/appendColor';\nimport appendSDF from './utils/appendSDF';\nimport appendSmilesList from './utils/appendSmilesList';\nimport pushEntry from './utils/pushEntry';\nimport pushMoleculeInfo from './utils/pushMoleculeInfo';\nimport { search, searchAsync } from './utils/search';\n/*\n    this.db is an object with properties 'oclID' that has as value\n    an object that contains the following properties:\n    * molecule: an OCL molecule instance\n    * index: OCL index used for substructure searching\n    * properties: all the calculates properties\n    * data: array containing free data associated with this molecule\n  */\n\nexport class MoleculesDB {\n  /**\n   *\n   * @param {import('openchemlib')} OCL - openchemlib library\n   * @param {object} [options={}]\n   * @param {boolean} [options.computeProperties=false]\n   */\n  constructor(OCL, options = {}) {\n    const { computeProperties = false } = options;\n    this.OCL = OCL;\n    this.db = {};\n    this.statistics = null;\n    this.computeProperties = computeProperties;\n    this.searcher = new OCL.SSSearcherWithIndex();\n  }\n\n  /**\n   * append to the current database a CSV file\n   * @param {string|ArrayBuffer} csv - text file containing the comma separated value file\n   * @param {object} [options={}]\n   * @param {boolean} [options.header=true]\n   * @param {boolean} [options.dynamicTyping=true]\n   * @param {boolean} [options.skipEmptyLines=true]\n   * @param {function} [options.onStep] call back to execute after each molecule\n   */\n\n  appendCSV(csv, options) {\n    return appendCSV(this, csv, {\n      computeProperties: this.computeProperties,\n      ...options,\n    });\n  }\n\n  /**\n   * Append a SDF to the current database\n   * @param {string|ArrayBuffer} sdf - text file containing the sdf\n   * @param {object} [options={}]\n   * @param {function} [options.onStep] call back to execute after each molecule\n   * @returns {DB}\n   */\n\n  appendSDF(sdf, options) {\n    return appendSDF(this, sdf, {\n      computeProperties: this.computeProperties,\n      ...options,\n    });\n  }\n\n  /**\n   * Append a SDF to the current database\n   * @param {string|ArrayBuffer} smiles - text file containing a list of smiles\n   * @param {object} [options={}]\n   * @param {function} [options.onStep] call back to execute after each molecule\n   * @returns {DB}\n   */\n\n  appendSmilesList(text, options) {\n    return appendSmilesList(this, text, {\n      computeProperties: this.computeProperties,\n      ...options,\n    });\n  }\n\n  /**\n   * Add a molecule to the current database\n   * @param {import('openchemlib').Molecule} molecule\n   * @param {object} [data={}]\n   * @param {object} [moleculeInfo={}] may contain precalculated index and mw\n   */\n\n  pushEntry(molecule, data, moleculeInfo) {\n    pushEntry(this, molecule, data, moleculeInfo);\n  }\n\n  /**\n   * Add an entry in the database\n   * @param {object} moleculeInfo - a molecule as a JSON that may contain the following properties: molfile, smiles, idCode, mf, index\n   * @param {object} [data={}]\n   */\n\n  pushMoleculeInfo(moleculeInfo, data) {\n    return pushMoleculeInfo(this, moleculeInfo, data);\n  }\n\n  /**\n   * Search in a MoleculesDB\n   * Inside the database all the same molecules are group together\n   * @param {string|OCL.Molecule} [query] smiles, molfile, oclCode or instance of Molecule to look for\n   * @param {object} [options={}]\n   * @param {string} [options.format='idCode'] - query is in the format 'smiles', 'oclid' or 'molfile'\n   * @param {string} [options.mode='substructure'] - search by 'substructure', 'exact' or 'similarity'\n   * @param {boolean} [options.flattenResult=true] - The database group the data for the same product. This allows to flatten the result\n   * @param {boolean} [options.keepMolecule=false] - keep the OCL.Molecule object in the result\n   * @param {number} [options.limit=Number.MAX_SAFE_INTEGER] - maximal number of result\n   * @return {Array} array of object of the type {(molecule), idCode, data, properties}\n   */\n  search(query, options) {\n    return search(this, query, options);\n  }\n\n  /**\n   * Search in a MoleculesDB\n   * Inside the database all the same molecules are group together\n   * @param {string|OCL.Molecule} [query] smiles, molfile, oclCode or instance of Molecule to look for\n   * @param {object} [options={}]\n   * @param {string} [options.format='idCode'] - query is in the format 'smiles', 'oclid' or 'molfile'\n   * @param {string} [options.mode='substructure'] - search by 'substructure', 'exact' or 'similarity'\n   * @param {boolean} [options.flattenResult=true] - The database group the data for the same product. This allows to flatten the result\n   * @param {boolean} [options.keepMolecule=false] - keep the OCL.Molecule object in the result\n   * @param {number} [options.limit=Number.MAX_SAFE_INTEGER] - maximal number of result\n   * @param {number} [options.interval=100] - interval in ms to call the onStep callback\n   * @param {function} [options.onStep] - callback to execute after each interval\n   * @param {AbortController} [options.controler] - callback to execute to check if the search should be aborted\n   * @return {Promise<Array>} array of object of the type {(molecule), idCode, data, properties}\n   */\n  searchAsync(query, options) {\n    return searchAsync(this, query, options);\n  }\n\n  /**\n   * Returns an array with the current database\n   * @returns\n   */\n  getDB() {\n    return Object.keys(this.db).map((key) => this.db[key]);\n  }\n\n  /**\n   * Append the property `data.color` to each entry based on a data or property label\n   * {object} [options={}]\n   * {string} [options.dataLabel] name of the property from `data` to use\n   * {string} [options.propertyLabel] name of the property from `properties` to use\n   * {number} [options.colorLabel='color'] name of the property to add in data that will contain the color\n   * {number} [options.minValue]\n   * {number} [options.maxValue]\n   * {number} [options.minHue=0]\n   * {number} [options.maxHue=360]\n   * {number} [options.saturation=65] percent of color saturation\n   * {number} [options.lightness=65] percent of color lightness\n   */\n  appendColor(options) {\n    appendColor(this, options);\n  }\n}\n","import { makeRacemic } from '../util/makeRacemic';\n\nexport function getAtomFeatures(originalMolecule, options = {}) {\n  const OCL = originalMolecule.getOCL();\n\n  const { sphere = 1 } = options;\n  const fragment = new OCL.Molecule(0, 0);\n  const results = [];\n\n  for (\n    let rootAtom = 0;\n    rootAtom < originalMolecule.getAllAtoms();\n    rootAtom++\n  ) {\n    let min = 0;\n    let max = 0;\n    let atomMask = new Array(originalMolecule.getAtoms());\n    let atomList = new Array(originalMolecule.getAtoms());\n\n    const molecule = originalMolecule.getCompactCopy();\n    for (let currentSphere = 0; currentSphere <= sphere; currentSphere++) {\n      if (max === 0) {\n        atomList[max] = rootAtom;\n        atomMask[rootAtom] = true;\n        max++;\n      } else {\n        let newMax = max;\n        for (let i = min; i < max; i++) {\n          let atom = atomList[i];\n          for (let j = 0; j < molecule.getAllConnAtoms(atom); j++) {\n            let connAtom = molecule.getConnAtom(atom, j);\n            if (!atomMask[connAtom]) {\n              atomMask[connAtom] = true;\n              atomList[newMax++] = connAtom;\n            }\n          }\n        }\n        min = max;\n        max = newMax;\n      }\n      molecule.copyMoleculeByAtoms(fragment, atomMask, true, null);\n      if (currentSphere === sphere) {\n        makeRacemic(fragment);\n        results.push(fragment.getCanonizedIDCode());\n      }\n    }\n  }\n\n  const atoms = {};\n  for (let result of results) {\n    if (!atoms[result]) {\n      atoms[result] = 1;\n    } else {\n      atoms[result]++;\n    }\n  }\n\n  return atoms;\n}\n","import { getDiastereotopicAtomIDsAndH } from '../diastereotopic/getDiastereotopicAtomIDsAndH';\nimport { getGroupedDiastereotopicAtomIDs } from '../diastereotopic/getGroupedDiastereotopicAtomIDs';\n\nexport function toVisualizerMolfile(molecule, options = {}) {\n  const { diastereotopic, heavyAtomHydrogen } = options;\n\n  let highlight = [];\n  let atoms = {};\n  if (diastereotopic) {\n    let hydrogenInfo = {};\n    let extendedIDs = getDiastereotopicAtomIDsAndH(molecule);\n    for (let line of extendedIDs) {\n      hydrogenInfo[line.oclID] = line;\n    }\n\n    let diaIDs = getGroupedDiastereotopicAtomIDs(molecule);\n    for (const diaID of diaIDs) {\n      atoms[diaID.oclID] = diaID.atoms;\n      highlight.push(diaID.oclID);\n      if (heavyAtomHydrogen) {\n        if (\n          hydrogenInfo[diaID.oclID] &&\n          hydrogenInfo[diaID.oclID].nbHydrogens > 0\n        ) {\n          for (let id of hydrogenInfo[diaID.oclID].hydrogenOCLIDs) {\n            highlight.push(id);\n            atoms[id] = diaID.atoms;\n          }\n        }\n      }\n    }\n  } else {\n    let size = molecule.getAllAtoms();\n    highlight = new Array(size).fill(0).map((a, index) => index);\n    atoms = highlight.map((a) => [a]);\n  }\n\n  let molfile = {\n    type: 'mol2d',\n    value: molecule.toMolfile(),\n    _highlight: highlight,\n    _atoms: atoms,\n  };\n\n  return molfile;\n}\n","import { getCamelCase } from '../parseDwar';\n\nexport function getParts(text) {\n  const lines = text.split(/\\r?\\n/);\n  let parts = { data: [] };\n  let currentPart = parts.data;\n  let currentLabel = '';\n  for (let line of lines) {\n    if (line.startsWith('</')) {\n      // close existing part\n      if (!currentLabel === line.slice(2, -1)) {\n        throw new Error('This should not happen');\n      }\n      currentLabel = '';\n      currentPart = parts.data;\n    } else if (line.startsWith('<') && !line.includes('=')) {\n      // open new part\n      if (currentLabel) {\n        throw new Error('This should not happen');\n      }\n      currentLabel = line.slice(1, -1);\n      const target = getCamelCase(currentLabel);\n      parts[target] = [];\n      currentPart = parts[target];\n    } else if (currentLabel) {\n      // add line to current part\n      currentPart.push(line);\n    } else {\n      //data lines\n      currentPart.push(line);\n    }\n  }\n  return parts;\n}\n","export function parseColumnbProperties(lines) {\n  lines = lines.map((line) => {\n    const [key, value] = line.slice(1, -1).split('=');\n    return { key, value: value.slice(1, -1) };\n  });\n  const columnProperties = {};\n  let currentColumnName = '';\n  for (let line of lines) {\n    switch (line.key) {\n      case 'columnName':\n        currentColumnName = line.value;\n        columnProperties[currentColumnName] = {};\n        break;\n      case 'columnProperty':\n        {\n          if (!currentColumnName) {\n            throw new Error('This should not happen');\n          }\n          const [key, value] = line.value.split('\\t');\n          columnProperties[currentColumnName][key] = value;\n        }\n        break;\n      default:\n        throw new Error('This should not happen');\n    }\n  }\n  for (let key in columnProperties) {\n    const columnPropery = columnProperties[key];\n    if (columnProperties[key].parent) {\n      const target = columnProperties[columnPropery.parent];\n      if (!target) {\n        throw new Error('Parent column not found');\n      }\n      if (!target.related) {\n        target.related = {};\n      }\n      target.related[columnPropery.specialType] = key;\n    }\n  }\n\n  return columnProperties;\n}\n","export function parseData(lines, options = {}) {\n  lines = lines.filter((line) => !line.match(/^\\s*$/));\n  const { columnProperties = {} } = options;\n  const headers = lines\n    .shift()\n    .split('\\t')\n    .map((header) => {\n      if (columnProperties[header]) {\n        return { label: header, ...columnProperties[header] };\n      }\n      return { label: header };\n    });\n  const entries = [];\n  const rawEntries = [];\n\n  for (let line of lines) {\n    const fields = line.split('\\t');\n    const rawEntry = {};\n    headers.forEach((header, index) => {\n      rawEntry[header.label] = fields[index];\n    });\n    rawEntries.push(rawEntry);\n    const entry = {};\n    headers.forEach((header) => {\n      if (header.parent) return;\n      entry[header.label] = valueEhnhancer(header, rawEntry);\n    });\n    entries.push(entry);\n  }\n\n  return { entries, rawEntries };\n}\n\nfunction valueEhnhancer(header, rawEntry) {\n  if (header?.specialType === 'rxncode') {\n    return `${rawEntry[header.label]}#${rawEntry[header.related.atomMapping]}#${\n      rawEntry[header.related.idcoordinates2D]\n    }`;\n  }\n\n  return rawEntry[header.label];\n}\n\n/*\nentry.rxnCode =\n*/\n","import { ensureString } from 'ensure-string';\n\nimport { getParts } from './utils/getParts';\nimport { parseColumnbProperties } from './utils/parseColumnbProperties';\nimport { parseData } from './utils/parseData';\n\n/**\n * Convert a DataWarrior database into a JSON object\n * @param {string} text\n * @returns\n */\nexport function parseDwar(text) {\n  text = ensureString(text);\n  const parts = getParts(text);\n  improveParts(parts);\n  return parts;\n}\n\nexport function getCamelCase(name) {\n  return name.replace(/[ -][a-z]/g, (string) => string[1].toUpperCase());\n}\n\nfunction improveParts(parts) {\n  for (let key in parts) {\n    switch (key) {\n      case 'columnProperties':\n        parts[key] = parseColumnbProperties(parts[key]);\n        break;\n      case 'data':\n        break;\n      default:\n        parts[key] = parseDefault(parts[key]);\n    }\n  }\n  const data = parseData(parts.data, {\n    columnProperties: parts.columnProperties,\n  });\n  parts.data = data.entries;\n  parts.rawData = data.rawEntries;\n}\n\nfunction parseDefault(lines) {\n  const result = {};\n  for (let line of lines) {\n    const [key, value] = line.slice(1, -1).split('=');\n    result[key] = value.slice(1, -1);\n  }\n  return result;\n}\n","import { getMF } from '../util/getMF';\n\nexport function fragmentAcyclicSingleBonds(molecule) {\n  const OCL = molecule.getOCL();\n  let atoms = [];\n  for (let i = 0; i < molecule.getAllAtoms(); i++) {\n    let atom = {};\n    atoms.push(atom);\n    atom.i = i;\n    atom.links = []; // we will store connected atoms of broken bonds\n  }\n\n  let bonds = [];\n  for (let i = 0; i < molecule.getAllBonds(); i++) {\n    let bond = {};\n    bonds.push(bond);\n    bond.i = i;\n    bond.order = molecule.getBondOrder(i);\n    bond.atom1 = molecule.getBondAtom(0, i);\n    bond.atom2 = molecule.getBondAtom(1, i);\n    bond.type = molecule.getBondType(i);\n    bond.isAromatic = molecule.isAromaticBond(i);\n    bond.isRingBond = molecule.isRingBond(i);\n    if (!bond.isAromatic && (bond.type & 0b11) === 1 && !bond.isRingBond) {\n      bond.selected = true;\n      atoms[bond.atom1].links.push(bond.atom2);\n      atoms[bond.atom2].links.push(bond.atom1);\n    }\n  }\n\n  //  console.log(bonds);\n\n  let brokenMolecule = molecule.getCompactCopy();\n  for (let bond of bonds) {\n    if (bond.selected) {\n      brokenMolecule.markBondForDeletion(bond.i);\n    }\n  }\n\n  brokenMolecule.deleteMarkedAtomsAndBonds();\n  let fragmentMap = [];\n  let nbFragments = brokenMolecule.getFragmentNumbers(fragmentMap);\n  let results = [];\n  for (let i = 0; i < nbFragments; i++) {\n    let result = {};\n    result.atomMap = [];\n    let includeAtom = fragmentMap.map((id) => {\n      return id === i;\n    });\n    let fragment = new OCL.Molecule(0, 0);\n    let atomMap = [];\n    brokenMolecule.copyMoleculeByAtoms(fragment, includeAtom, false, atomMap);\n    // we will add some R groups at the level of the broken bonds\n    for (let j = 0; j < atomMap.length; j++) {\n      if (atomMap[j] > -1) {\n        result.atomMap.push(j);\n        if (atoms[j].links.length > 0) {\n          for (let k = 0; k < atoms[j].links.length; k++) {\n            fragment.addBond(atomMap[j], fragment.addAtom(154), 1);\n          }\n        }\n      }\n    }\n    fragment.setFragment(false);\n    result.idCode = fragment.getIDCode();\n    result.mf = getMF(fragment).mf.replace(/R[1-9]?/, '');\n    results.push(result);\n  }\n\n  return results;\n}\n","import { getMF } from '../../util/getMF.js';\n\n/**\n *\n * @param {import('openchemlib').Molecule} molecule\n * @param {Map} moleculesInfo\n * @returns\n */\nexport function getInfo(molecule, moleculesInfo) {\n  if (moleculesInfo.has(molecule)) {\n    return moleculesInfo.get(molecule);\n  }\n  const reactantInfo = {\n    molfile: molecule.toMolfile(),\n    idCode: molecule.getIDCode(),\n    mf: getMF(molecule).mf,\n  };\n  moleculesInfo.set(molecule, reactantInfo);\n  return reactantInfo;\n}\n","import { getInfo } from './getReactantInfo.js';\n\nexport function applyOneReactantReaction(reactants, reactions, options) {\n  const { currentDepth, maxDepth, moleculesInfo, processedMolecules, results } =\n    options;\n  const todoNextDepth = [];\n  if (currentDepth >= maxDepth) return [];\n  if (!Array.isArray(reactants)) {\n    reactants = [reactants];\n  }\n  const { OCL } = options;\n  for (const reactant of reactants) {\n    const idCode = reactant.getIDCode();\n    if (processedMolecules.has(idCode)) {\n      continue;\n    } else {\n      processedMolecules.add(idCode);\n    }\n    for (const reaction of reactions) {\n      const reactor = new OCL.Reactor(reaction.oclReaction);\n      const isMatching = Boolean(reactor.setReactant(0, reactant));\n      if (isMatching) {\n        const oneReactionProducts = reactor.getProducts();\n        for (let i = 0; i < oneReactionProducts.length; i++) {\n          const products = [];\n          for (let j = 0; j < oneReactionProducts[i].length; j++) {\n            const moleculeInfo = getInfo(\n              oneReactionProducts[i][j],\n              moleculesInfo,\n            );\n            if (!processedMolecules.has(moleculeInfo.idCode)) {\n              const product = {\n                ...moleculeInfo,\n                children: [],\n              };\n              products.push(product);\n\n              todoNextDepth.push(() => {\n                return applyOneReactantReaction(\n                  oneReactionProducts[i][j],\n                  reactions,\n                  {\n                    ...options,\n                    currentDepth: options.currentDepth + 1,\n                    results: product.children,\n                  },\n                );\n              });\n            }\n          }\n          if (products.length > 0) {\n            // eslint-disable-next-line no-unused-vars\n            const { oclReaction, ...reactionWithoutOCL } = reaction;\n            const oneReaction = {\n              reaction: reactionWithoutOCL,\n              reactant: getInfo(reactant, moleculesInfo),\n              products,\n            };\n            results.push(oneReaction);\n          }\n        }\n      }\n    }\n  }\n  return todoNextDepth;\n}\n","import { applyOneReactantReaction } from './utils/applyOneReactantReaction.js';\n\n/**\n * Create a tree of products based on reactions and reactants\n * @param {import('openchemlib').Molecule[]} reactants\n * @param {Array} reactions\n * @param {object} options\n * @param {number} [options.maxDepth=10]\n * @returns\n */\nexport function applyReactions(reactants, reactions, options = {}) {\n  const { maxDepth = 10 } = options;\n  const moleculesInfo = new Map();\n  const processedMolecules = new Set();\n  if (!reactants.length) {\n    throw new Error('Can not extract OCL because there is no reactants');\n  }\n  const OCL = reactants[0].getOCL();\n\n  reactions = appendOCLReaction(reactions, OCL);\n\n  const results = [];\n\n  let todoCurrentLevel = applyOneReactantReaction(reactants, reactions, {\n    OCL,\n    currentDepth: 0,\n    moleculesInfo,\n    processedMolecules,\n    maxDepth,\n    results,\n  });\n\n  do {\n    const nexts = [];\n    for (const todo of todoCurrentLevel) {\n      nexts.push(todo());\n    }\n    todoCurrentLevel = nexts.flat();\n  } while (todoCurrentLevel.length > 0);\n\n  return results;\n}\n\nfunction appendOCLReaction(reactions, OCL) {\n  reactions = JSON.parse(JSON.stringify(reactions)).filter(\n    (reaction) => reaction.rxnCode,\n  );\n  for (const reaction of reactions) {\n    reaction.oclReaction = OCL.ReactionEncoder.decode(reaction.rxnCode);\n  }\n  return reactions;\n}\n"],"names":["xAtomicNumber","tagAtom","molecule","iAtom","customLabel","getAtomLabel","setAtomCustomLabel","getAtomicNo","setAtomicNo","getXAtomicNumber","setAtomMass","getAtomMass","OCL","getOCL","Molecule","getAtomicNoFromLabel","cPseudoAtomX","addDiastereotopicMissingChirality","options","esrType","cESRTypeAnd","getAllAtoms","tempMolecule","getCompactCopy","ensureHelperArrays","cHelperBitsStereo","i","getAtoms","isAtomStereoCenter","getStereoBond","stereoBond","getAtomPreferredStereoBond","setBondType","cBondTypeUp","getBondAtom","connAtom","setBondAtom","setAtomESR","makeRacemic","cHelperCIP","getAtomParity","cAtomParityNone","getDiastereotopicAtomIDs","numberAtoms","ids","getCanonizedIDCode","CANONIZER_ENCODE_ATOM_CUSTOM_LABELS","getDiastereotopicAtomIDsAndH","addImplicitHydrogens","cHelperNeighbours","diaIDs","newDiaIDs","length","diaID","newDiaID","oclID","hydrogenOCLIDs","nbHydrogens","atom","getConnAtom","heavyAtom","j","getAllConnAtoms","indexOf","push","toDiastereotopicSVG","width","height","prefix","heavyAtomHydrogen","svg","hydrogenInfo","forEach","line","groupedDiaIDs","getGroupedDiastereotopicAtomIDs","atoms","id","includes","map","a","toSVG","replace","value","join","groupDiastereotopicAtomIDs","atomLabel","diaIDsObject","counter","Object","keys","key","getDiastereotopicAtomIDsFromMolfile","molfile","fromMolfileWithAtomMap","diaIDsArray","source","destination","isCsp3","atomID","getAtomCharge","getImplicitHydrogens","getConnAtoms","FULL_HOSE_CODE","HOSE_CODE_CUT_C_SP3_SP3","getHoseCodesForAtoms","originalMolecule","rootAtoms","minSphereSize","maxSphereSize","kind","isTagged","tags","rootAtom","addMissingChirality","getAtomCustomLabel","fragment","results","min","max","atomMask","Array","atomList","sphere","newMax","Error","copyMoleculeByAtoms","getHoseCodesForAtom","getHoseCodesFromDiastereotopicID","atomCustomLabel","endsWith","undefined","getHoseCodesAndDiastereotopicIDs","hoses","fromIDCode","hose","getHoseCodesForPath","from","to","maxLength","originalFrom","originalTo","originalAtoms","getPath","torsion","calculateTorsion","tag1","tag2","fill","atomMap","MAX_R","combineSmiles","coreSmiles","fragments","complexity","core","getCore","rGroups","getRGroups","getComplexity","generate","rGroup","smiles","onStep","molecules","sizes","currents","position","appendMolecule","sort","m1","m2","mw","newSmiles","currentMol","fromSmiles","idCode","getIDCode","toSmiles","combinedSmiles","toMolfile","props","MoleculeProperties","nbHAcceptor","acceptorCount","nbHDonor","donorCount","logP","logS","PSA","polarSurfaceArea","nbRottable","rotatableBondCount","nbStereoCenter","stereoCenterCount","mf","getMolecularFormula","formula","relativeWeight","originalSmiles","updateRPosition","group","level","currentChar","charAt","currentSubstring","substr","match","getAtomsInfo","cHelperRings","result","extra","singleBonds","doubleBonds","tripleBonds","aromaticBonds","cnoHybridation","abnormalValence","getAtomAbnormalValence","charge","cipParity","getAtomCIPParity","color","getAtomColor","atomicNo","label","mass","radical","getAtomRadical","ringBondCount","getAtomRingBondCount","ringSize","getAtomRingSize","x","getAtomX","y","getAtomY","z","getAtomZ","allHydrogens","getAllHydrogens","connAtoms","allConnAtoms","implicitHydrogens","isAromatic","isAromaticAtom","isAllylic","isAllylicAtom","isStereoCenter","isRing","isRingAtom","isSmallRing","isSmallRingAtom","isStabilized","isStabilizedAtom","bond","getConnBond","bondOrder","getBondOrder","isAromaticBond","totalBonds","connectedAtom","hydrogenOnAtomicNo","labileHydrogen","toString","prototype","isAnyArray","call","input","arguments","TypeError","_options$fromIndex","fromIndex","_options$toIndex","toIndex","Number","isInteger","maxValue","minValue","rescale","output","currentMin","currentMax","RangeError","_options$min","autoMinMax","_options$max","factor","indent","repeat","indentData","inspectMatrix","inspectMatrixWithOptions","matrix","maxRows","maxColumns","maxNumSize","padMinus","constructor","name","inspectData","rows","columns","maxI","Math","maxJ","loop","get","formatNumber","num","formatNumber2","padEnd","len","str","fix","toFixed","startsWith","exp","toExponential","slice","installMathOperations","AbstractMatrix","Matrix","add","addS","addM","set","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","abs","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","pow","arg0","powS","powM","checkRowIndex","index","outer","checkColumnIndex","checkRowVector","vector","to1DArray","checkColumnVector","checkRowIndices","rowIndices","checkColumnIndices","columnIndices","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","newArray","array","checkNonEmpty","isEmpty","sumByRow","sum","sumByColumn","sumAll","v","productByRow","productByColumn","productAll","varianceByRow","unbiased","mean","cols","variance","sum1","sum2","varianceByColumn","varianceAll","size","centerByRow","centerByColumn","centerAll","getScaleByRow","scale","scaleByRow","getScaleByColumn","scaleByColumn","getScaleAll","divider","scaleAll","from1DArray","newRows","newColumns","newData","row","column","rowVector","columnVector","zeros","ones","rand","random","randInt","interval","eye","diag","data","l","matrix1","matrix2","isMatrix","klass","apply","callback","to2DArray","copy","toJSON","isRowVector","isColumnVector","isVector","isSquare","isSymmetric","isEchelonForm","previousColumn","checked","isReducedEchelonForm","k","echelonForm","clone","h","iMax","swapRows","tmp","reducedEchelonForm","m","n","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","type","cumulativeSum","dot","vector2","vector1","mmul","other","Bcolj","Float64Array","s","strassen2x2","a11","b11","a12","b12","a21","b21","a22","b22","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","c","resultat","blockMult","b","halfRows","parseInt","halfCols","subMatrix","scaleRows","isFinite","scaleColumns","flipRows","middle","first","last","flipColumns","kroneckerProduct","q","kroneckerSum","AxI","IxB","transpose","sortRows","compareFunction","compareNumbers","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","floydWarshall","adjMatrix","numVertices","distMatrix","val","is","dist","getConnectivityMatrix","nbAtoms","pathLength","negativeAtomicNo","cRoundedMass","sdt","getConnBondOrder","sdta","bondNumber","atomSorter","getMF","entries","getFragments","parts","allAtoms","entry","getFragmentMF","counts","part","toMFString","mfs","mfAtom","H","nbOH","carbonyl","hydroxyl","carbonOrHydrogen","neighbour","neighbourAtom","neighbourBond","nbCOOH","nbCHO","nbNH2","amine","nbCN","cn","getPathAndTorsion","getPathsInfo","fromLabel","toLabel","minLength","withHOSES","fromAtomicNumber","toAtomicNumber","atomsInfo","pathLengthMatrix","paths","getShortestPaths","allShortestPaths","path","reverse","isUtf8","buf","ensureString","blob","ArrayBuffer","isView","encoding","guessEncoding","decoder","TextDecoder","decode","uint8","Uint8Array","buffer","byteOffset","byteLength","isutf8","e","t","module","exports","this","f","self","window","document","postMessage","o","test","location","protocol","parse","dynamicTyping","M","dynamicTypingFunction","transform","worker","WORKERS_SUPPORTED","URL","webkitURL","BLOB_URL","createObjectURL","Blob","Worker","onmessage","_","userStep","step","userChunk","chunk","userComplete","complete","userError","error","config","workerId","NODE_STREAM_INPUT","download","readable","read","on","g","File","stream","unparse","delimiter","BAD_DELIMITERS","filter","quotes","isArray","skipEmptyLines","newline","quoteChar","header","escapeChar","escapeFormulae","RegExp","JSON","u","fields","meta","trim","d","Date","stringify","RECORD_SEP","String","fromCharCode","UNIT_SEP","BYTE_ORDER_MARK","LocalChunkSize","RemoteChunkSize","DefaultDelimiter","Parser","E","ParserHandle","NetworkStreamer","FileStreamer","StringStreamer","ReadableStreamStreamer","jQuery","fn","each","prop","toUpperCase","attr","toLowerCase","FileReader","files","file","inputElem","instanceConfig","extend","before","action","reason","_handle","_finished","_completed","_halted","_input","_baseIndex","_partialLine","_rowCount","_start","_nextChunk","isFirstChunk","_completeResults","errors","w","chunkSize","streamer","_config","parseChunk","beforeFirstChunk","paused","aborted","cursor","substring","preview","WORKER_ID","finished","concat","_sendError","_readChunk","_chunkLoaded","XMLHttpRequest","withCredentials","onload","onerror","_chunkError","open","downloadRequestBody","downloadRequestHeaders","setRequestHeader","send","message","status","readyState","responseText","getResponseHeader","lastIndexOf","statusText","webkitSlice","mozSlice","FileReaderSync","readAsText","target","pause","resume","_streamData","_streamEnd","_streamError","_checkIsFinished","shift","_streamCleanUp","removeListener","abort","transformHeader","parseFloat","code","split","comments","successful","bestDelimiter","delimitersToGuess","getCharIndex","setTimeout","S","O","I","T","D","A","fastMode","L","F","C","R","linebreak","truncated","terminate","create","getMoleculeCreators","Map","fromMolfile","defaultCSVOptions","appendCSV","moleculesDB","csv","moleculeCreators","parsed","Papa","stats","firstElement","moleculeCreator","moleculeField","isNumeric","lowerField","has","statistics","pushEntry","appendColor","dataLabel","propertyLabel","minHue","maxHue","saturation","lightness","colorLabel","db","getDB","values","datum","flat","properties","definedValues","getEntriesBoundaries","string","eol","res","previous","next","nextMatch","getMolecule","sdfPart","labels","currentLabels","lines","keep","exclude","include","modifiers","modifier","modifiedValue","sdf","mixedEOL","entriesBoundaries","start","now","currentLabel","Infinity","always","statistic","time","appendSDF","appendSmilesList","text","smilesArray","oneSmiles","moleculeInfo","moleculeIDCode","getIndex","molecularFormula","computeProperties","em","absoluteWeight","pushMoleculeInfo","coordinates","noWait","Promise","resolve","setImmediate","AbortError","getQuery","query","format","search","mode","exactSearch","subStructureSearch","similaritySearch","processResult","searchAsync","subStructureSearchAsync","queryIDCode","searchResult","substructureSearchBegin","resetFragment","isFragment","setFragment","queryMW","getMW","substructureSearchEnd","queryIndex","searcher","setMolecule","isFragmentInMolecule","controller","shouldAbort","abortEventListener","signal","addEventListener","begin","performance","queryIdCode","similarity","MAX_SAFE_INTEGER","SSSearcherWithIndex","getSimilarityTanimoto","flattenResult","keepMolecule","limit","MoleculesDB","getAtomFeatures","currentSphere","toVisualizerMolfile","diastereotopic","highlight","extendedIDs","_highlight","_atoms","getParts","currentPart","getCamelCase","parseColumnbProperties","columnProperties","currentColumnName","columnPropery","parent","related","specialType","parseData","headers","rawEntries","rawEntry","valueEhnhancer","atomMapping","idcoordinates2D","parseDwar","improveParts","parseDefault","rawData","fragmentAcyclicSingleBonds","links","bonds","getAllBonds","order","atom1","atom2","getBondType","isRingBond","selected","brokenMolecule","markBondForDeletion","deleteMarkedAtomsAndBonds","fragmentMap","nbFragments","getFragmentNumbers","includeAtom","addBond","addAtom","getInfo","moleculesInfo","reactantInfo","applyOneReactantReaction","reactants","reactions","currentDepth","maxDepth","processedMolecules","todoNextDepth","reactant","reaction","reactor","Reactor","oclReaction","isMatching","Boolean","setReactant","oneReactionProducts","getProducts","products","children","reactionWithoutOCL","oneReaction","applyReactions","Set","appendOCLReaction","todoCurrentLevel","nexts","todo","rxnCode","ReactionEncoder"],"mappings":"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"}