{"version":3,"file":"vamas.js","sources":["../src/parser/parse.js","../src/parser/casa/appendCalibration.js","../src/parser/casa/appendComponent.js","../src/parser/casa/appendRegion.js","../src/parser/parseCASA.js","../src/parser/kratos/parseKratosMeta.js"],"sourcesContent":["/* eslint-disable no-unused-vars */\nconst experiments = [\n  'MAP',\n  'MAPDP',\n  'MAPSV',\n  'MAPSVDP',\n  'NORM',\n  'SDP',\n  'SDPSV',\n  'SEM',\n  'NOEXP',\n];\n\nconst technics = [\n  'AES diff',\n  'AES dir',\n  'EDX',\n  'ELS',\n  'FABMS',\n  'FABMS energy spec',\n  'ISS',\n  'SIMS',\n  'SIMS energy spec',\n  'SNMS',\n  'SNMS energy spec',\n  'UPS',\n  'XPS',\n  'XRF',\n];\n\nconst scans = ['REGULAR', 'IRREGULAR', 'MAPPING'];\n\nexport function parse(text) {\n  const lines = text.split(/\\r?\\n/);\n  let pointer = 0;\n  let parsed = { header: {}, blocks: [], info: {} };\n  pointer = parseHeader(lines, parsed, pointer);\n  for (let i = 0; i < parsed.info.nbBlocks; i++) {\n    pointer = parseBlock(lines, parsed, pointer);\n  }\n  return parsed;\n}\n\nfunction parseHeader(lines, parsed, pointer) {\n  const { header, info } = parsed;\n  header['format identifier'] = lines[pointer++];\n  header['institution identifier'] = lines[pointer++];\n  header['instrument model identifier'] = lines[pointer++];\n  header['operator identifier'] = lines[pointer++];\n  header['experiment identifier'] = lines[pointer++];\n  info.nbComments = Number(lines[pointer++]);\n  header['number of lines in comment'] = info.nbComments;\n  const comments = [];\n  for (let i = 0; i < info.nbComments; i++) {\n    comments.push(lines[pointer++]);\n  }\n  header['comment line'] = comments.join('\\n');\n  header['experiment mode'] = lines[pointer++];\n  header['scan mode'] = lines[pointer++];\n  if (['MAP', 'MAPD', 'NORM', 'SDP'].includes(header['experiment mode'])) {\n    header['number of spectral regions'] = Number(lines[pointer++]);\n  }\n  if (['MAP', 'MAPD'].includes(header['experiment mode'])) {\n    header['number of analysis positions'] = Number(lines[pointer++]);\n    header['number of discrete x coordinates available in full map'] = Number(\n      lines[pointer++],\n    );\n    header['number of discrete y coordinates available in full map'] = Number(\n      lines[pointer++],\n    );\n  }\n  info.nbExperimentVariables = Number(lines[pointer++]);\n  const experimentVariables = [];\n  header['number of experimental variables'] = info.nbExperimentVariables;\n  for (let i = 0; i < info.nbExperimentVariables; i++) {\n    experimentVariables.push({\n      label: lines[pointer++],\n      unit: lines[pointer++],\n    });\n  }\n  header.experimentVariables = experimentVariables;\n\n  /*\n    If the values of any of the block parameters are the same in all of the\n    blocks their values may be sent in the first block and then omitted\n    from all subsequent blocks.\n    - n > 0 : the parameters listed are to be included\n    - n < 0 : the parameters listed are to be excluded\n    - n = 0 : all parameters are to be given in all blocks\n    A complete block contains 40 parts.\n    */\n  info.nbEntriesInclusionExclusion = Number(lines[pointer++]);\n  header['number of entries in parameter inclusion or exclusion list'] =\n    info.nbEntriesInclusionExclusion;\n  info.blockParametersincludes = new Array(40).fill(\n    info.nbEntriesInclusionExclusion <= 0,\n  );\n  for (let i = 0; i < Math.abs(info.nbEntriesInclusionExclusion); i++) {\n    info.blockParametersincludes[Number(lines[pointer++]) + 1] =\n      info.nbEntriesInclusionExclusion > 0;\n  }\n\n  header['number of manually entered items in block'] = Number(\n    lines[pointer++],\n  );\n  info.nbFutureUpgradeExperimentEntries = Number(lines[pointer++]);\n  header['number of future upgrade experiment entries'] =\n    info.nbFutureUpgradeExperimentEntries;\n  const futureUpgradeExperimentEntries = [];\n  for (let i = 0; i < info.nbFutureUpgradeExperimentEntries; i++) {\n    futureUpgradeExperimentEntries.push({\n      label: lines[pointer++],\n      unit: lines[pointer++],\n    });\n  }\n  header.futureUpgradeExperimentEntries = futureUpgradeExperimentEntries;\n  if (info.nbFutureUpgradeExperimentEntries !== 0) {\n    throw Error('unsupported future upgrade experiment entries');\n  }\n\n  header['number of future upgrade block entries'] = Number(lines[pointer++]);\n  if (header['number of future upgrade block entries'] !== 0) {\n    throw Error('unsupported future upgrade block entries');\n  }\n  info.nbBlocks = Number(lines[pointer++]);\n  header['number of blocks'] = info.nbBlocks;\n  return pointer;\n}\n\nfunction parseBlock(lines, parsed, pointer) {\n  const { blocks, header, info } = parsed;\n\n  const firstBlock = blocks[0];\n  const includes =\n    blocks.length === 0\n      ? new Array(40).fill(true)\n      : info.blockParametersincludes;\n\n  const block = {};\n  block['block identifier'] = lines[pointer++];\n  block['sample identifier'] = lines[pointer++];\n  block['year in full'] = includes[0]\n    ? Number(lines[pointer++])\n    : firstBlock['year in full'];\n  block.month = includes[1] ? Number(lines[pointer++]) : firstBlock.month;\n  block['day of month'] = includes[2]\n    ? Number(lines[pointer++])\n    : firstBlock['day of month'];\n  block.hours = includes[3] ? Number(lines[pointer++]) : firstBlock.hours;\n  block.minutes = includes[4] ? Number(lines[pointer++]) : firstBlock.minutes;\n  block.seconds = includes[5] ? Number(lines[pointer++]) : firstBlock.seconds;\n  block['number of hours in advance of Greenwich Mean Time'] = includes[6]\n    ? Number(lines[pointer++])\n    : firstBlock['number of hours in advance of Greenwich Mean Time'];\n\n  if (includes[7]) {\n    const nbComments = Number(lines[pointer++]);\n    block['number of lines in block comment'] = nbComments;\n    const comments = [];\n    for (let i = 0; i < nbComments; i++) {\n      comments.push(lines[pointer++]);\n    }\n    block.blockComment = comments.join('\\n');\n  } else {\n    block['number of lines in block comment'] =\n      firstBlock['number of lines in block comment'];\n    block.blockComment = firstBlock.blockComment;\n  }\n\n  block.technique = includes[8] ? lines[pointer++] : firstBlock.technique;\n  if (['MAP', 'MAPDP'].includes(header['experiment mode'])) {\n    block['x coordinate'] = includes[9]\n      ? Number(lines[pointer++])\n      : firstBlock['x coordinate'];\n    block['y coordinate'] = includes[9]\n      ? Number(lines[pointer++])\n      : firstBlock['y coordinate'];\n  }\n\n  if (includes[10]) {\n    let values = [];\n    for (let i = 0; i < header.experimentVariables.length; i++) {\n      values.push(lines[pointer++]);\n    }\n    block['value of experimental variable'] = values;\n  } else {\n    block['value of experimental variable'] =\n      firstBlock['value of experimental variable'];\n  }\n\n  block['analysis source label'] = includes[11]\n    ? lines[pointer++]\n    : firstBlock['analysis source label'];\n\n  if (\n    ['MAPDP', 'MAPSVDP', 'SDP', 'SDPSV'].includes(header['experiment mode']) ||\n    [\n      'SNMS energy spec',\n      'FABMS',\n      'FABMS energy spec',\n      'ISS',\n      'SIMS',\n      'SIMS energy spec',\n      'SNMS',\n    ].includes(block.technique)\n  ) {\n    block['sputtering ion or atom atomic number'] = includes[12]\n      ? Number(lines[pointer++])\n      : firstBlock['sputtering ion or atom atomic number'];\n    block['number of atoms in sputtering ion or atom particle'] = includes[12]\n      ? Number(lines[pointer++])\n      : firstBlock['number of atoms in sputtering ion or atom particle'];\n    block['sputtering ion or atom charge sign and number'] = includes[12]\n      ? lines[pointer++]\n      : firstBlock['sputtering ion or atom charge sign and number'];\n  }\n\n  block['analysis source characteristic energy'] = includes[13]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis source characteristic energy'];\n\n  block['analysis source strength'] = includes[14]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis source strength'];\n\n  block['analysis source beam width x'] = includes[15]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis source beam width x'];\n  block['analysis source beam width y'] = includes[15]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis source beam width y'];\n\n  if (\n    ['MAP', 'MAPDP', 'MAPSV', 'MAPSVDP', 'SEM'].includes(\n      header['experiment mode'],\n    )\n  ) {\n    block['field of view x'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['field of view x'];\n    block['field of view y'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['field of view y'];\n  }\n\n  if (['SEM', 'MAPSV', 'MAPSVDP'].includes(header['experiment mode'])) {\n    block['first linescan start x coordinate'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['first linescan start x coordinate'];\n    block['first linescan start y coordinate'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['first linescan start y coordinate'];\n    block['first linescan finish x coordinate'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['first linescan finish x coordinate'];\n    block['first linescan finish y coordinate'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['first linescan finish y coordinate'];\n    block['last linescan start x coordinate'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['first linescan last x coordinate'];\n    block['last linescan start y coordinate'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['first linescan last y coordinate'];\n  }\n\n  block['analysis source polar angle of incidence'] = includes[18]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis source polar angle of incidence'];\n\n  block['analysis source azimuth'] = includes[19]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis source azimuth'];\n\n  block['analyser mode'] = includes[20]\n    ? lines[pointer++]\n    : firstBlock['analyser mode'];\n\n  block[\n    'analyser pass energy or retard ratio or mass resolution'\n  ] = includes[21]\n    ? Number(lines[pointer++])\n    : firstBlock['analyser pass energy or retard ratio or mass resolution'];\n\n  if (block.technique === 'AES diff') {\n    block['differential width'] = includes[22]\n      ? lines[pointer++]\n      : firstBlock['differential width'];\n  }\n\n  block['magnification of analyser transfer lens'] = includes[23]\n    ? Number(lines[pointer++])\n    : firstBlock['magnification of analyser transfer lens'];\n\n  block[\n    'analyser work function or acceptance energy of atom or ion'\n  ] = includes[24]\n    ? Number(lines[pointer++])\n    : firstBlock['analyser work function or acceptance energy of atom or ion'];\n\n  block['target bias'] = includes[25]\n    ? Number(lines[pointer++])\n    : firstBlock['target bias'];\n\n  block['analysis width x'] = includes[26]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis width x'];\n  block['analysis width y'] = includes[26]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis width y'];\n\n  block['analyser axis take off polar angle'] = includes[27]\n    ? Number(lines[pointer++])\n    : firstBlock['analyser axis take off polar angle'];\n  block['analyser axis take off azimuth'] = includes[27]\n    ? Number(lines[pointer++])\n    : firstBlock['analyser axis take off azimuth'];\n\n  block['species label'] = includes[28]\n    ? lines[pointer++]\n    : firstBlock['species label'];\n\n  block['transition or charge state label'] = includes[29]\n    ? lines[pointer++]\n    : firstBlock['transition or charge state label'];\n  block['charge of detected particle'] = includes[29]\n    ? Number(lines[pointer++])\n    : firstBlock['charge of detected particle'];\n\n  if (header['scan mode'] !== 'REGULAR') {\n    throw Error('Only REGULAR scans are supported');\n  }\n\n  block['abscissa label'] = includes[30]\n    ? lines[pointer++]\n    : firstBlock['abscissa label'];\n  block['abscissa units'] = includes[30]\n    ? lines[pointer++]\n    : firstBlock['abscissa units'];\n\n  block['abscissa start'] = includes[30]\n    ? Number(lines[pointer++])\n    : firstBlock['abscissa start'];\n  block['abscissa increment'] = includes[30]\n    ? Number(lines[pointer++])\n    : firstBlock['abscissa increment'];\n\n  if (includes[31]) {\n    const nbCorrespondingVariables = Number(lines[pointer++]);\n    block['number of corresponding variables'] = nbCorrespondingVariables;\n    const correspondingVariables = [];\n    for (let i = 0; i < nbCorrespondingVariables; i++) {\n      correspondingVariables.push({\n        label: lines[pointer++],\n        unit: lines[pointer++],\n        array: [],\n      });\n    }\n    block.correspondingVariables = correspondingVariables;\n  } else {\n    block['number of corresponding variables'] =\n      firstBlock['number of corresponding variables'];\n    block.correspondingVariables = JSON.parse(\n      JSON.stringify(firstBlock.correspondingVariables),\n    );\n    block.correspondingVariables.array = [];\n  }\n\n  block['signal mode'] = includes[32]\n    ? lines[pointer++]\n    : firstBlock['signal mode'];\n\n  block['signal collection time'] = includes[33]\n    ? Number(lines[pointer++])\n    : firstBlock['signal collection time'];\n\n  block['number of scans to compile this block'] = includes[34]\n    ? Number(lines[pointer++])\n    : firstBlock['number of scans to compile this block'];\n\n  block['signal time correction'] = includes[35]\n    ? Number(lines[pointer++])\n    : firstBlock['signal time correction'];\n\n  if (\n    ['MAPDP', 'MAPSVDP', 'SDP', 'SDPSV'].includes(header['experiment mode']) &&\n    ['AES diff', 'AES dir', 'EDX', 'ELS', 'UPS', 'XPS', 'XRF'].includes(\n      block.technique,\n    )\n  ) {\n    block['sputtering source energy'] = includes[36]\n      ? Number(lines[pointer++])\n      : firstBlock['sputtering source energy'];\n    block['sputtering source beam current'] = includes[36]\n      ? Number(lines[pointer++])\n      : firstBlock['sputtering source beam current'];\n    block['sputtering source width x'] = includes[36]\n      ? Number(lines[pointer++])\n      : firstBlock['sputtering source width x'];\n    block['sputtering source width y'] = includes[36]\n      ? Number(lines[pointer++])\n      : firstBlock['sputtering source width y'];\n    block['sputtering source polar angle of incidence'] = includes[36]\n      ? Number(lines[pointer++])\n      : firstBlock['sputtering source polar angle of incidence'];\n    block['sputtering source azimuth'] = includes[36]\n      ? Number(lines[pointer++])\n      : firstBlock['sputtering source azimuth'];\n    block['sputtering mode'] = includes[36]\n      ? lines[pointer++]\n      : firstBlock['sputtering mode'];\n  }\n\n  block['sample normal polar angle of tilt'] = includes[37]\n    ? Number(lines[pointer++])\n    : firstBlock['sample normal polar angle of tilt'];\n  block['sample normal tilt azimuth'] = includes[37]\n    ? Number(lines[pointer++])\n    : firstBlock['sample normal tilt azimuth'];\n\n  block['sample rotation angle'] = includes[38]\n    ? Number(lines[pointer++])\n    : firstBlock['sample rotation angle'];\n\n  if (includes[39]) {\n    const nbAdditionalNumericalParameters = Number(lines[pointer++]);\n    block[\n      'number of additional numerical parameters'\n    ] = nbAdditionalNumericalParameters;\n    const additionalNumericalParameters = [];\n    for (let i = 0; i < nbAdditionalNumericalParameters; i++) {\n      additionalNumericalParameters.push({\n        label: lines[pointer++],\n        unit: lines[pointer++],\n        value: lines[pointer++],\n      });\n    }\n    block.additionalNumericalParameters = additionalNumericalParameters;\n  } else {\n    block['number of additional numerical parameters'] =\n      firstBlock['number of additional numerical parameters'];\n    block.additionalNumericalParameters =\n      firstBlock.additionalNumericalParameters;\n  }\n\n  block.nbOrdinateValues = Number(lines[pointer++]);\n  for (let correspondingVariable of block.correspondingVariables) {\n    correspondingVariable.minimumOrdinateValue = Number(lines[pointer++]);\n    correspondingVariable.maximumOrdinateValue = Number(lines[pointer++]);\n  }\n  for (\n    let i = 0;\n    i < block.nbOrdinateValues / block.correspondingVariables.length;\n    i++\n  ) {\n    for (let correspondingVariable of block.correspondingVariables) {\n      correspondingVariable.array.push(Number(lines[pointer++]));\n    }\n  }\n\n  parsed.blocks.push(block);\n  return pointer;\n}\n","export function appendCalibration(calibrations, line) {\n  let calibration = {};\n  // Calib M = 281.1700 A = 284.8 BE AD\n  let fields = line.match(/Calib (M = .*) (A = [^ ]*) (.*)/);\n  if (!fields) {\n    throw new Error(`appendCalibration fails on: ${line}`);\n  }\n  calibrations.push(calibration);\n}\n","export function appendComponent(components, line) {\n  // CASA comp (*Mo 3d MoS2 2H*) (*LA(1.53,243)*) Area 230.36971 1e-020 2327991 -1 1 MFWHM 0.88528218 0.2 2 -1 1 Position 1257.22 1257.02 1257.22 -1 1 RSF 10.804667 MASS 95.9219 INDEX -1 (*Mo 3d*) CONST (**) UNCORRECTEDRSF 9.5\n  let component = {};\n  const componentRegex = new RegExp(\n    [\n      /CASA comp /,\n      /\\((?<name>.*)\\) /,\n      /\\((?<shape>[^ ]*)\\) /,\n      /(?<area>Area .*)/,\n      /(?<fwhm>MFWHM .*)/,\n      /(?<position>Position .*) /,\n      /(?<rsf>RSF .*) /,\n      /(?<mass>MASS .*) /,\n      /(?<index>INDEX .*) /,\n      /(?<const>CONST .*) /,\n      /(?<uncorrectedRSF>UNCORRECTEDRSF.*)/,\n    ]\n      .map((r) => r.source)\n      .join(''),\n  );\n\n  let fields = line.match(componentRegex);\n  if (!fields) {\n    throw new Error(`appendComponent fails on: ${line}`);\n  }\n  component = {\n    name: fields.groups.name,\n    shape: parseShape(fields.groups.shape),\n    area: parseArea(fields.groups.area),\n    fwhm: parseFWHM(fields.groups.fwhm),\n    position: parsePosition(fields.groups.position),\n    rsf: parseRSF(fields.groups.rsf),\n    mass: parseMass(fields.groups.mass),\n    index: parseIndex(fields.groups.index),\n    const: parseConst(fields.groups.const),\n    uncorrectedRSF: parseUncorrectedRSF(fields.groups.uncorrectedRSF),\n  };\n  components.push(component);\n}\n\nfunction parseShape(value) {\n  let parts = value\n    .replace(/[*(),]/g, ' ')\n    .trim()\n    .split(/ +/);\n  let options = {};\n  let kind;\n  switch (parts[0]) {\n    case 'LA':\n      kind = `${parts[0]}`;\n      options.asymmetry = Number(parts[1]);\n      options.extension = Number(parts[2]);\n      break;\n    case 'GL':\n      kind = `${parts[0]}`;\n      options.unknown = Number(parts[1]);\n      break;\n    default:\n      throw Error(`appendComponent: unknown shape: ${parts[0]}`);\n  }\n  return {\n    kind,\n    options,\n  };\n}\nfunction parseArea(value) {\n  let parts = value.split(' ');\n  return {\n    value: Number(parts[1]),\n    from: Number(parts[2]),\n    to: Number(parts[3]),\n    unknown1: Number(parts[4]),\n    unknown2: Number(parts[5]),\n  };\n}\nfunction parseFWHM(value) {\n  let parts = value.split(' ');\n  return {\n    value: Number(parts[1]),\n    from: Number(parts[2]),\n    to: Number(parts[3]),\n    unknown1: Number(parts[4]),\n    unknown2: Number(parts[5]),\n  };\n}\nfunction parsePosition(value) {\n  let parts = value.split(' ');\n  return {\n    value: Number(parts[1]),\n    from: Number(parts[2]),\n    to: Number(parts[3]),\n    unknown1: Number(parts[4]),\n    unknown2: Number(parts[5]),\n  };\n}\nfunction parseRSF(value) {\n  let parts = value.split(' ');\n  return Number(parts[1]);\n}\nfunction parseMass(value) {\n  let parts = value.split(' ');\n  return Number(parts[1]);\n}\nfunction parseIndex(value) {\n  let parts = value.split(' ');\n  return Number(parts[1]);\n}\nfunction parseConst(value) {return value} // We do not really know what this value means and hence just parse the string\nfunction parseUncorrectedRSF(value) {\n  let parts = value.split(' ');\n  return Number(parts[1]);\n}\n","export function appendRegion(regions, line) {\n  // CASA region (*Mo 3d*) (*Shirley*) 1249.3343 1262.7065 10.804667 2 0 0 392.54541 -450 0 0 (*Mo 3d*) 95.9219 0 9.5\n  let fields = line.match(\n    /CASA region \\(\\*(?<name>.*)\\*\\) \\(\\*(?<backgroundKind>.*)\\*\\) (?<backgroundOptions>.*) \\((?<comment>.*)\\) (?<surface>.*)/,\n  );\n  if (!fields) {\n    throw new Error(`appendRegion fails on: ${line}`);\n  }\n\n  let region = {\n    name: fields.groups.name,\n    background: {\n      name: fields.groups.backgroundKind,\n      options: fields.groups.backgroundOptions\n    }\n  };\n\n  regions.push(region);\n}\n","import { appendCalibration } from './casa/appendCalibration';\nimport { appendComponent } from './casa/appendComponent';\nimport { appendRegion } from './casa/appendRegion';\n\nexport function parseCASA(text) {\n  const casa = { regions: [], components: [], calibrations: [] };\n  const lines = text.split(/\\r?\\n/);\n  for (const line of lines) {\n    if (line.startsWith('CASA comp ')) {\n      appendComponent(casa.components, line);\n    }\n    if (line.startsWith('CASA region')) {\n      appendRegion(casa.regions, line);\n    }\n    if (line.startsWith('Calib')) {\n      appendCalibration(casa.calibrations, line);\n    }\n  }\n  return casa;\n}\n","/**\n * Instrument manufacturers store some key metadata in their own fields\n * in the vamas file. This does not follow the ISO specification.\n *\n * For this reason, there needs to be one parsing step that is specific to the manufacturer that extracts this data.\n *\n * Note that we only parse data that is not in ISO-specified block, in the case of Kratos, this is, for example, information about charge neutralization\n *\n * To avoid an additional for loop this function takes an object and a line and updates key/value pairs as appropriate\n */\n\nfunction splitTrim(line) {\n  return line.replace(/\\s/).split(':')[1];\n}\n\nfunction splitTrimValueUnit(line) {\n  let intermediate = splitTrim(line);\n  const unit = intermediate.match(/[a-zA-Z]+/g)[0];\n  const value = parseFloat(intermediate.replace(unit, ''));\n  return { value: value, unit: unit };\n}\n\nexport function parseKratosMeta(text) {\n  const meta = {};\n  meta.chargeNeutraliser = {};\n  meta.scanSettings = {};\n  const lines = text.split(/\\r?\\n/);\n  for (const line of lines) {\n    if (line.startsWith('Charge Neutraliser :')) {\n      if (line.includes('On')) {\n        meta.chargeNeutraliser.activated = true;\n      }\n    }\n    if (line.startsWith('Sweeps :')) {\n      meta.scanSettings.numberSweeps = splitTrim(line);\n    }\n    if (line.startsWith('Dwell time :')) {\n      meta.scanSettings.dwellTime = splitTrimValueUnit(line);\n    }\n    if (line.startsWith('Sweep time :')) {\n      meta.scanSettings.sweepTime = splitTrimValueUnit(line);\n    }\n    if (line.startsWith('Charge Balance :')) {\n      meta.chargeNeutraliser.chargeBalance = splitTrimValueUnit(line);\n    }\n  }\n  return meta;\n}\n"],"names":["parse","text","lines","split","pointer","parsed","header","blocks","info","parseHeader","i","nbBlocks","parseBlock","nbComments","Number","comments","push","join","includes","nbExperimentVariables","experimentVariables","label","unit","nbEntriesInclusionExclusion","blockParametersincludes","Array","fill","Math","abs","nbFutureUpgradeExperimentEntries","futureUpgradeExperimentEntries","Error","firstBlock","length","block","month","hours","minutes","seconds","blockComment","technique","values","nbCorrespondingVariables","correspondingVariables","array","JSON","stringify","nbAdditionalNumericalParameters","additionalNumericalParameters","value","nbOrdinateValues","correspondingVariable","minimumOrdinateValue","maximumOrdinateValue","appendCalibration","calibrations","line","calibration","fields","match","appendComponent","components","component","componentRegex","RegExp","map","r","source","name","groups","shape","parseShape","area","parseArea","fwhm","parseFWHM","position","parsePosition","rsf","parseRSF","mass","parseMass","index","parseIndex","const","parseConst","uncorrectedRSF","parseUncorrectedRSF","parts","replace","trim","options","kind","asymmetry","extension","unknown","from","to","unknown1","unknown2","appendRegion","regions","region","background","backgroundKind","backgroundOptions","parseCASA","casa","startsWith","splitTrim","splitTrimValueUnit","intermediate","parseFloat","parseKratosMeta","meta","chargeNeutraliser","scanSettings","activated","numberSweeps","dwellTime","sweepTime","chargeBalance"],"mappings":"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"}