react-science 9.0.1 → 11.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/accordion/accordion.d.ts +5 -0
- package/lib/components/accordion/accordion.d.ts.map +1 -1
- package/lib/components/accordion/accordion.js +6 -3
- package/lib/components/accordion/accordion.js.map +1 -1
- package/lib/components/accordion/accordion_context.d.ts +2 -1
- package/lib/components/accordion/accordion_context.d.ts.map +1 -1
- package/lib/components/accordion/accordion_context.js +3 -2
- package/lib/components/accordion/accordion_context.js.map +1 -1
- package/lib/components/accordion/accordion_context.provider.d.ts +2 -1
- package/lib/components/accordion/accordion_context.provider.d.ts.map +1 -1
- package/lib/components/accordion/accordion_context.provider.js +4 -2
- package/lib/components/accordion/accordion_context.provider.js.map +1 -1
- package/lib/components/accordion/accordion_context.state.d.ts +1 -0
- package/lib/components/accordion/accordion_context.state.d.ts.map +1 -1
- package/lib/components/accordion/accordion_context.state.js.map +1 -1
- package/lib/components/activity_bar/activity_bar.d.ts +5 -6
- package/lib/components/activity_bar/activity_bar.d.ts.map +1 -1
- package/lib/components/activity_bar/activity_bar.js +39 -33
- package/lib/components/activity_bar/activity_bar.js.map +1 -1
- package/lib/components/activity_panel/activity_panel.d.ts +15 -0
- package/lib/components/activity_panel/activity_panel.d.ts.map +1 -0
- package/lib/components/activity_panel/activity_panel.js +45 -0
- package/lib/components/activity_panel/activity_panel.js.map +1 -0
- package/lib/components/activity_panel/index.d.ts +2 -0
- package/lib/components/activity_panel/index.d.ts.map +1 -0
- package/lib/components/activity_panel/index.js +2 -0
- package/lib/components/activity_panel/index.js.map +1 -0
- package/lib/components/button/Button.d.ts +2 -2
- package/lib/components/button/Button.d.ts.map +1 -1
- package/lib/components/button/Button.js +4 -1
- package/lib/components/button/Button.js.map +1 -1
- package/lib/components/color-picker/color-picker-dropdown/ColorPickerDropdown.d.ts +2 -2
- package/lib/components/color-picker/color-picker-dropdown/ColorPickerDropdown.d.ts.map +1 -1
- package/lib/components/color-picker/color-picker-dropdown/ColorPickerDropdown.js +1 -1
- package/lib/components/color-picker/color-picker-dropdown/ColorPickerDropdown.js.map +1 -1
- package/lib/components/color-picker/gradient_select/gradient_select.d.ts +1 -1
- package/lib/components/color-picker/gradient_select/gradient_select.d.ts.map +1 -1
- package/lib/components/color-picker/gradient_select/gradient_select.js +1 -1
- package/lib/components/color-picker/gradient_select/gradient_select.js.map +1 -1
- package/lib/components/color-picker/preview/ColorPreview.d.ts +8 -1
- package/lib/components/color-picker/preview/ColorPreview.d.ts.map +1 -1
- package/lib/components/color-picker/preview/ColorPreview.js.map +1 -1
- package/lib/components/color-picker/preview/FixedGradientPreview.d.ts +1 -1
- package/lib/components/color-picker/preview/FixedGradientPreview.d.ts.map +1 -1
- package/lib/components/color-picker/preview/FixedGradientPreview.js +1 -1
- package/lib/components/color-picker/preview/FixedGradientPreview.js.map +1 -1
- package/lib/components/color-picker/react-color/ColorPicker.d.ts +1 -1
- package/lib/components/color-picker/react-color/ColorPicker.d.ts.map +1 -1
- package/lib/components/color-picker/react-color/ColorPicker.js +1 -1
- package/lib/components/color-picker/react-color/ColorPicker.js.map +1 -1
- package/lib/components/color-picker/react-color/sketch/SketchFields.d.ts.map +1 -1
- package/lib/components/color-picker/react-color/sketch/SketchFields.js.map +1 -1
- package/lib/components/color-picker/react-color/sketch/SketchPresetColors.d.ts.map +1 -1
- package/lib/components/color-picker/react-color/sketch/SketchPresetColors.js.map +1 -1
- package/lib/components/dialog/ConfirmDialog.d.ts +1 -1
- package/lib/components/dialog/ConfirmDialog.d.ts.map +1 -1
- package/lib/components/dialog/ConfirmDialog.js +1 -2
- package/lib/components/dialog/ConfirmDialog.js.map +1 -1
- package/lib/components/forms/radio-group/ButtonRadioItem.d.ts.map +1 -1
- package/lib/components/forms/radio-group/ButtonRadioItem.js.map +1 -1
- package/lib/components/fullscreen/fullscreen_context.provider.d.ts +1 -1
- package/lib/components/fullscreen/fullscreen_context.provider.d.ts.map +1 -1
- package/lib/components/fullscreen/fullscreen_context.provider.js +0 -1
- package/lib/components/fullscreen/fullscreen_context.provider.js.map +1 -1
- package/lib/components/hooks/useModifiedPopper.d.ts +2 -2
- package/lib/components/hooks/useModifiedPopper.d.ts.map +1 -1
- package/lib/components/hooks/useModifiedPopper.js +0 -1
- package/lib/components/hooks/useModifiedPopper.js.map +1 -1
- package/lib/components/hooks/useOnClickOutside.d.ts +1 -1
- package/lib/components/hooks/useOnClickOutside.d.ts.map +1 -1
- package/lib/components/hooks/useOnClickOutside.js.map +1 -1
- package/lib/components/hooks/useSelect.d.ts +2 -2
- package/lib/components/hooks/useSelect.d.ts.map +1 -1
- package/lib/components/hooks/useSelect.js +0 -1
- package/lib/components/hooks/useSelect.js.map +1 -1
- package/lib/components/index.d.ts +1 -0
- package/lib/components/index.d.ts.map +1 -1
- package/lib/components/index.js +1 -0
- package/lib/components/index.js.map +1 -1
- package/lib/components/info-panel/InfoPanel.d.ts +1 -1
- package/lib/components/info-panel/InfoPanel.d.ts.map +1 -1
- package/lib/components/info-panel/InfoPanel.js +14 -25
- package/lib/components/info-panel/InfoPanel.js.map +1 -1
- package/lib/components/logger/FifoLoggerDialog.d.ts.map +1 -1
- package/lib/components/logger/FifoLoggerDialog.js.map +1 -1
- package/lib/components/logger/FifoLoggerToolbarItem.js +0 -1
- package/lib/components/logger/FifoLoggerToolbarItem.js.map +1 -1
- package/lib/components/root-layout/root_layout.d.ts +1 -1
- package/lib/components/root-layout/root_layout.d.ts.map +1 -1
- package/lib/components/root-layout/root_layout.js +1 -1
- package/lib/components/root-layout/root_layout.js.map +1 -1
- package/lib/components/split-pane/SplitPane.d.ts +1 -1
- package/lib/components/split-pane/SplitPane.d.ts.map +1 -1
- package/lib/components/split-pane/SplitPane.js +4 -3
- package/lib/components/split-pane/SplitPane.js.map +1 -1
- package/lib/components/table/table_header_cell.d.ts +1 -1
- package/lib/components/table/table_header_cell.d.ts.map +1 -1
- package/lib/components/table/table_header_cell.js.map +1 -1
- package/lib/components/table/table_root.d.ts +1 -1
- package/lib/components/table/table_root.d.ts.map +1 -1
- package/lib/components/table/table_root.js.map +1 -1
- package/lib/components/table/table_row_cell.d.ts +1 -1
- package/lib/components/table/table_row_cell.d.ts.map +1 -1
- package/lib/components/table/table_row_cell.js.map +1 -1
- package/lib/components/table/table_utils.d.ts +1 -1
- package/lib/components/table/table_utils.d.ts.map +1 -1
- package/lib/components/table/table_utils.js +1 -1
- package/lib/components/table/table_utils.js.map +1 -1
- package/lib/components/toolbar/Toolbar.d.ts +12 -8
- package/lib/components/toolbar/Toolbar.d.ts.map +1 -1
- package/lib/components/toolbar/Toolbar.js +11 -10
- package/lib/components/toolbar/Toolbar.js.map +1 -1
- package/lib/components/toolbar/toolbarContext.d.ts +1 -1
- package/lib/components/toolbar/toolbarContext.d.ts.map +1 -1
- package/lib/components/toolbar/toolbarContext.js +0 -1
- package/lib/components/toolbar/toolbarContext.js.map +1 -1
- package/package.json +60 -67
- package/src/components/accordion/accordion.tsx +31 -17
- package/src/components/accordion/accordion_context.provider.tsx +12 -5
- package/src/components/accordion/accordion_context.state.ts +3 -1
- package/src/components/accordion/accordion_context.ts +6 -5
- package/src/components/activity_bar/activity_bar.tsx +49 -53
- package/src/components/activity_panel/activity_panel.tsx +75 -0
- package/src/components/activity_panel/index.ts +1 -0
- package/src/components/button/Button.tsx +12 -5
- package/src/components/color-picker/color-picker-dropdown/ColorPickerDropdown.tsx +4 -5
- package/src/components/color-picker/gradient_select/gradient_select.tsx +4 -5
- package/src/components/color-picker/preview/ColorPreview.tsx +5 -1
- package/src/components/color-picker/preview/FixedGradientPreview.tsx +2 -4
- package/src/components/color-picker/react-color/ColorPicker.tsx +2 -7
- package/src/components/color-picker/react-color/sketch/SketchFields.tsx +2 -1
- package/src/components/color-picker/react-color/sketch/SketchPresetColors.tsx +2 -1
- package/src/components/dialog/ConfirmDialog.tsx +2 -6
- package/src/components/forms/radio-group/ButtonRadioItem.tsx +2 -1
- package/src/components/fullscreen/fullscreen_context.provider.tsx +2 -1
- package/src/components/hooks/useModifiedPopper.ts +5 -3
- package/src/components/hooks/useOnClickOutside.ts +2 -1
- package/src/components/hooks/useSelect.tsx +3 -2
- package/src/components/index.ts +1 -0
- package/src/components/info-panel/InfoPanel.tsx +20 -32
- package/src/components/logger/FifoLoggerDialog.tsx +2 -1
- package/src/components/logger/FifoLoggerToolbarItem.tsx +1 -1
- package/src/components/root-layout/root_layout.tsx +2 -6
- package/src/components/split-pane/SplitPane.tsx +9 -11
- package/src/components/table/table_header_cell.tsx +2 -1
- package/src/components/table/table_root.tsx +1 -2
- package/src/components/table/table_row_cell.tsx +2 -1
- package/src/components/table/table_utils.ts +2 -6
- package/src/components/toolbar/Toolbar.tsx +32 -35
- package/src/components/toolbar/toolbarContext.ts +1 -1
- package/lib/app/about/AboutDialogToolbarButton.d.ts +0 -10
- package/lib/app/about/AboutDialogToolbarButton.d.ts.map +0 -1
- package/lib/app/about/AboutDialogToolbarButton.js +0 -10
- package/lib/app/about/AboutDialogToolbarButton.js.map +0 -1
- package/lib/app/about/index.d.ts +0 -2
- package/lib/app/about/index.d.ts.map +0 -1
- package/lib/app/about/index.js +0 -2
- package/lib/app/about/index.js.map +0 -1
- package/lib/app/explorer/ExplorerPlotView.d.ts +0 -2
- package/lib/app/explorer/ExplorerPlotView.d.ts.map +0 -1
- package/lib/app/explorer/ExplorerPlotView.js +0 -20
- package/lib/app/explorer/ExplorerPlotView.js.map +0 -1
- package/lib/app/explorer/MeasurementExplorer.d.ts +0 -11
- package/lib/app/explorer/MeasurementExplorer.d.ts.map +0 -1
- package/lib/app/explorer/MeasurementExplorer.js +0 -114
- package/lib/app/explorer/MeasurementExplorer.js.map +0 -1
- package/lib/app/explorer/MeasurementExplorerWithState.d.ts +0 -2
- package/lib/app/explorer/MeasurementExplorerWithState.d.ts.map +0 -1
- package/lib/app/explorer/MeasurementExplorerWithState.js +0 -11
- package/lib/app/explorer/MeasurementExplorerWithState.js.map +0 -1
- package/lib/app/explorer/index.d.ts +0 -3
- package/lib/app/explorer/index.d.ts.map +0 -1
- package/lib/app/explorer/index.js +0 -3
- package/lib/app/explorer/index.js.map +0 -1
- package/lib/app/helpers/MeasurementPlot.d.ts +0 -22
- package/lib/app/helpers/MeasurementPlot.d.ts.map +0 -1
- package/lib/app/helpers/MeasurementPlot.js +0 -39
- package/lib/app/helpers/MeasurementPlot.js.map +0 -1
- package/lib/app/helpers/MeasurementVariableSelect.d.ts +0 -9
- package/lib/app/helpers/MeasurementVariableSelect.d.ts.map +0 -1
- package/lib/app/helpers/MeasurementVariableSelect.js +0 -11
- package/lib/app/helpers/MeasurementVariableSelect.js.map +0 -1
- package/lib/app/helpers/getColorFromConfig.d.ts +0 -3
- package/lib/app/helpers/getColorFromConfig.d.ts.map +0 -1
- package/lib/app/helpers/getColorFromConfig.js +0 -11
- package/lib/app/helpers/getColorFromConfig.js.map +0 -1
- package/lib/app/helpers/index.d.ts +0 -6
- package/lib/app/helpers/index.d.ts.map +0 -1
- package/lib/app/helpers/index.js +0 -6
- package/lib/app/helpers/index.js.map +0 -1
- package/lib/app/helpers/react-plot.d.ts +0 -8
- package/lib/app/helpers/react-plot.d.ts.map +0 -1
- package/lib/app/helpers/react-plot.js +0 -44
- package/lib/app/helpers/react-plot.js.map +0 -1
- package/lib/app/helpers/splitEntries.d.ts +0 -6
- package/lib/app/helpers/splitEntries.d.ts.map +0 -1
- package/lib/app/helpers/splitEntries.js +0 -16
- package/lib/app/helpers/splitEntries.js.map +0 -1
- package/lib/app/hooks/file-loading.d.ts +0 -9
- package/lib/app/hooks/file-loading.d.ts.map +0 -1
- package/lib/app/hooks/file-loading.js +0 -36
- package/lib/app/hooks/file-loading.js.map +0 -1
- package/lib/app/hooks/index.d.ts +0 -2
- package/lib/app/hooks/index.d.ts.map +0 -1
- package/lib/app/hooks/index.js +0 -2
- package/lib/app/hooks/index.js.map +0 -1
- package/lib/app/index.d.ts +0 -6
- package/lib/app/index.d.ts.map +0 -1
- package/lib/app/index.js +0 -6
- package/lib/app/index.js.map +0 -1
- package/lib/app/kinds/index.d.ts +0 -4
- package/lib/app/kinds/index.d.ts.map +0 -1
- package/lib/app/kinds/index.js +0 -4
- package/lib/app/kinds/index.js.map +0 -1
- package/lib/app/kinds/ir/IrPeaksPanel.d.ts +0 -25
- package/lib/app/kinds/ir/IrPeaksPanel.d.ts.map +0 -1
- package/lib/app/kinds/ir/IrPeaksPanel.js +0 -28
- package/lib/app/kinds/ir/IrPeaksPanel.js.map +0 -1
- package/lib/app/kinds/ir/index.d.ts +0 -2
- package/lib/app/kinds/ir/index.d.ts.map +0 -1
- package/lib/app/kinds/ir/index.js +0 -2
- package/lib/app/kinds/ir/index.js.map +0 -1
- package/lib/app/kinds/iv/index.d.ts +0 -2
- package/lib/app/kinds/iv/index.d.ts.map +0 -1
- package/lib/app/kinds/iv/index.js +0 -2
- package/lib/app/kinds/iv/index.js.map +0 -1
- package/lib/app/kinds/iv/plot-view/IvMeasurementsPlot.d.ts +0 -2
- package/lib/app/kinds/iv/plot-view/IvMeasurementsPlot.d.ts.map +0 -1
- package/lib/app/kinds/iv/plot-view/IvMeasurementsPlot.js +0 -50
- package/lib/app/kinds/iv/plot-view/IvMeasurementsPlot.js.map +0 -1
- package/lib/app/kinds/iv/plot-view/IvPlotVariablesSelector.d.ts +0 -2
- package/lib/app/kinds/iv/plot-view/IvPlotVariablesSelector.d.ts.map +0 -1
- package/lib/app/kinds/iv/plot-view/IvPlotVariablesSelector.js +0 -30
- package/lib/app/kinds/iv/plot-view/IvPlotVariablesSelector.js.map +0 -1
- package/lib/app/kinds/iv/plot-view/IvPlotView.d.ts +0 -2
- package/lib/app/kinds/iv/plot-view/IvPlotView.d.ts.map +0 -1
- package/lib/app/kinds/iv/plot-view/IvPlotView.js +0 -32
- package/lib/app/kinds/iv/plot-view/IvPlotView.js.map +0 -1
- package/lib/app/kinds/iv/plot-view/IvSeries.d.ts +0 -11
- package/lib/app/kinds/iv/plot-view/IvSeries.d.ts.map +0 -1
- package/lib/app/kinds/iv/plot-view/IvSeries.js +0 -23
- package/lib/app/kinds/iv/plot-view/IvSeries.js.map +0 -1
- package/lib/app/kinds/mass/MassPlotView.d.ts +0 -2
- package/lib/app/kinds/mass/MassPlotView.d.ts.map +0 -1
- package/lib/app/kinds/mass/MassPlotView.js +0 -11
- package/lib/app/kinds/mass/MassPlotView.js.map +0 -1
- package/lib/app/kinds/mass/MeasurementMassPlot.d.ts +0 -3
- package/lib/app/kinds/mass/MeasurementMassPlot.d.ts.map +0 -1
- package/lib/app/kinds/mass/MeasurementMassPlot.js +0 -75
- package/lib/app/kinds/mass/MeasurementMassPlot.js.map +0 -1
- package/lib/app/kinds/mass/index.d.ts +0 -3
- package/lib/app/kinds/mass/index.d.ts.map +0 -1
- package/lib/app/kinds/mass/index.js +0 -3
- package/lib/app/kinds/mass/index.js.map +0 -1
- package/lib/app/panels/SignalProcessingPanel.d.ts +0 -11
- package/lib/app/panels/SignalProcessingPanel.d.ts.map +0 -1
- package/lib/app/panels/SignalProcessingPanel.js +0 -104
- package/lib/app/panels/SignalProcessingPanel.js.map +0 -1
- package/lib/app/panels/index.d.ts +0 -5
- package/lib/app/panels/index.d.ts.map +0 -1
- package/lib/app/panels/index.js +0 -5
- package/lib/app/panels/index.js.map +0 -1
- package/lib/app/panels/measurement-config/MeasurementConfigPanel.d.ts +0 -2
- package/lib/app/panels/measurement-config/MeasurementConfigPanel.d.ts.map +0 -1
- package/lib/app/panels/measurement-config/MeasurementConfigPanel.js +0 -25
- package/lib/app/panels/measurement-config/MeasurementConfigPanel.js.map +0 -1
- package/lib/app/panels/measurement-config/MeasurementConfigPanelAccordion.d.ts +0 -2
- package/lib/app/panels/measurement-config/MeasurementConfigPanelAccordion.d.ts.map +0 -1
- package/lib/app/panels/measurement-config/MeasurementConfigPanelAccordion.js +0 -14
- package/lib/app/panels/measurement-config/MeasurementConfigPanelAccordion.js.map +0 -1
- package/lib/app/panels/measurement-config/index.d.ts +0 -3
- package/lib/app/panels/measurement-config/index.d.ts.map +0 -1
- package/lib/app/panels/measurement-config/index.js +0 -3
- package/lib/app/panels/measurement-config/index.js.map +0 -1
- package/lib/app/panels/measurement-info/MeasurementInfoPanel.d.ts +0 -2
- package/lib/app/panels/measurement-info/MeasurementInfoPanel.d.ts.map +0 -1
- package/lib/app/panels/measurement-info/MeasurementInfoPanel.js +0 -23
- package/lib/app/panels/measurement-info/MeasurementInfoPanel.js.map +0 -1
- package/lib/app/panels/measurement-info/MeasurementInfoPanelAccordion.d.ts +0 -2
- package/lib/app/panels/measurement-info/MeasurementInfoPanelAccordion.d.ts.map +0 -1
- package/lib/app/panels/measurement-info/MeasurementInfoPanelAccordion.js +0 -7
- package/lib/app/panels/measurement-info/MeasurementInfoPanelAccordion.js.map +0 -1
- package/lib/app/panels/measurement-info/index.d.ts +0 -3
- package/lib/app/panels/measurement-info/index.d.ts.map +0 -1
- package/lib/app/panels/measurement-info/index.js +0 -3
- package/lib/app/panels/measurement-info/index.js.map +0 -1
- package/lib/app/panels/measurements/MeasurementCheckbox.d.ts +0 -8
- package/lib/app/panels/measurements/MeasurementCheckbox.d.ts.map +0 -1
- package/lib/app/panels/measurements/MeasurementCheckbox.js +0 -22
- package/lib/app/panels/measurements/MeasurementCheckbox.js.map +0 -1
- package/lib/app/panels/measurements/MeasurementColorPreview.d.ts +0 -9
- package/lib/app/panels/measurements/MeasurementColorPreview.d.ts.map +0 -1
- package/lib/app/panels/measurements/MeasurementColorPreview.js +0 -45
- package/lib/app/panels/measurements/MeasurementColorPreview.js.map +0 -1
- package/lib/app/panels/measurements/MeasurementVisibilityToggle.d.ts +0 -12
- package/lib/app/panels/measurements/MeasurementVisibilityToggle.d.ts.map +0 -1
- package/lib/app/panels/measurements/MeasurementVisibilityToggle.js +0 -26
- package/lib/app/panels/measurements/MeasurementVisibilityToggle.js.map +0 -1
- package/lib/app/panels/measurements/MeasurementsPanel.d.ts +0 -4
- package/lib/app/panels/measurements/MeasurementsPanel.d.ts.map +0 -1
- package/lib/app/panels/measurements/MeasurementsPanel.js +0 -43
- package/lib/app/panels/measurements/MeasurementsPanel.js.map +0 -1
- package/lib/app/panels/measurements/MeasurementsPanelAccordion.d.ts +0 -2
- package/lib/app/panels/measurements/MeasurementsPanelAccordion.d.ts.map +0 -1
- package/lib/app/panels/measurements/MeasurementsPanelAccordion.js +0 -20
- package/lib/app/panels/measurements/MeasurementsPanelAccordion.js.map +0 -1
- package/lib/app/panels/measurements/MeasurementsTable.d.ts +0 -6
- package/lib/app/panels/measurements/MeasurementsTable.d.ts.map +0 -1
- package/lib/app/panels/measurements/MeasurementsTable.js +0 -159
- package/lib/app/panels/measurements/MeasurementsTable.js.map +0 -1
- package/lib/app/panels/measurements/index.d.ts +0 -9
- package/lib/app/panels/measurements/index.d.ts.map +0 -1
- package/lib/app/panels/measurements/index.js +0 -9
- package/lib/app/panels/measurements/index.js.map +0 -1
- package/lib/app/panels/measurements/measurement_panel_context.d.ts +0 -7
- package/lib/app/panels/measurements/measurement_panel_context.d.ts.map +0 -1
- package/lib/app/panels/measurements/measurement_panel_context.js +0 -11
- package/lib/app/panels/measurements/measurement_panel_context.js.map +0 -1
- package/lib/app/panels/measurements/measurement_panel_context.provider.d.ts +0 -7
- package/lib/app/panels/measurements/measurement_panel_context.provider.d.ts.map +0 -1
- package/lib/app/panels/measurements/measurement_panel_context.provider.js +0 -6
- package/lib/app/panels/measurements/measurement_panel_context.provider.js.map +0 -1
- package/lib/app-data/enhancers/enhance.d.ts +0 -8
- package/lib/app-data/enhancers/enhance.d.ts.map +0 -1
- package/lib/app-data/enhancers/enhance.js +0 -13
- package/lib/app-data/enhancers/enhance.js.map +0 -1
- package/lib/app-data/enhancers/index.d.ts +0 -2
- package/lib/app-data/enhancers/index.d.ts.map +0 -1
- package/lib/app-data/enhancers/index.js +0 -2
- package/lib/app-data/enhancers/index.js.map +0 -1
- package/lib/app-data/helpers/index.d.ts +0 -2
- package/lib/app-data/helpers/index.d.ts.map +0 -1
- package/lib/app-data/helpers/index.js +0 -2
- package/lib/app-data/helpers/index.js.map +0 -1
- package/lib/app-data/helpers/variables.d.ts +0 -6
- package/lib/app-data/helpers/variables.d.ts.map +0 -1
- package/lib/app-data/helpers/variables.js +0 -20
- package/lib/app-data/helpers/variables.js.map +0 -1
- package/lib/app-data/index.d.ts +0 -7
- package/lib/app-data/index.d.ts.map +0 -1
- package/lib/app-data/index.js +0 -7
- package/lib/app-data/index.js.map +0 -1
- package/lib/app-data/kinds/index.d.ts +0 -3
- package/lib/app-data/kinds/index.d.ts.map +0 -1
- package/lib/app-data/kinds/index.js +0 -3
- package/lib/app-data/kinds/index.js.map +0 -1
- package/lib/app-data/kinds/ir/IrMeasurement.d.ts +0 -13
- package/lib/app-data/kinds/ir/IrMeasurement.d.ts.map +0 -1
- package/lib/app-data/kinds/ir/IrMeasurement.js +0 -2
- package/lib/app-data/kinds/ir/IrMeasurement.js.map +0 -1
- package/lib/app-data/kinds/ir/IrPeak.d.ts +0 -8
- package/lib/app-data/kinds/ir/IrPeak.d.ts.map +0 -1
- package/lib/app-data/kinds/ir/IrPeak.js +0 -2
- package/lib/app-data/kinds/ir/IrPeak.js.map +0 -1
- package/lib/app-data/kinds/ir/index.d.ts +0 -5
- package/lib/app-data/kinds/ir/index.d.ts.map +0 -1
- package/lib/app-data/kinds/ir/index.js +0 -5
- package/lib/app-data/kinds/ir/index.js.map +0 -1
- package/lib/app-data/kinds/ir/irAutoPeakPickingEnhancer.d.ts +0 -20
- package/lib/app-data/kinds/ir/irAutoPeakPickingEnhancer.d.ts.map +0 -1
- package/lib/app-data/kinds/ir/irAutoPeakPickingEnhancer.js +0 -50
- package/lib/app-data/kinds/ir/irAutoPeakPickingEnhancer.js.map +0 -1
- package/lib/app-data/kinds/ir/irMeasurementEnhancer.d.ts +0 -8
- package/lib/app-data/kinds/ir/irMeasurementEnhancer.d.ts.map +0 -1
- package/lib/app-data/kinds/ir/irMeasurementEnhancer.js +0 -47
- package/lib/app-data/kinds/ir/irMeasurementEnhancer.js.map +0 -1
- package/lib/app-data/kinds/iv/IvMeasurement.d.ts +0 -3
- package/lib/app-data/kinds/iv/IvMeasurement.d.ts.map +0 -1
- package/lib/app-data/kinds/iv/IvMeasurement.js +0 -2
- package/lib/app-data/kinds/iv/IvMeasurement.js.map +0 -1
- package/lib/app-data/kinds/iv/index.d.ts +0 -2
- package/lib/app-data/kinds/iv/index.d.ts.map +0 -1
- package/lib/app-data/kinds/iv/index.js +0 -2
- package/lib/app-data/kinds/iv/index.js.map +0 -1
- package/lib/app-data/loaders/biologicLoader.d.ts +0 -11
- package/lib/app-data/loaders/biologicLoader.d.ts.map +0 -1
- package/lib/app-data/loaders/biologicLoader.js +0 -141
- package/lib/app-data/loaders/biologicLoader.js.map +0 -1
- package/lib/app-data/loaders/cdfLoader.d.ts +0 -5
- package/lib/app-data/loaders/cdfLoader.d.ts.map +0 -1
- package/lib/app-data/loaders/cdfLoader.js +0 -164
- package/lib/app-data/loaders/cdfLoader.js.map +0 -1
- package/lib/app-data/loaders/index.d.ts +0 -9
- package/lib/app-data/loaders/index.d.ts.map +0 -1
- package/lib/app-data/loaders/index.js +0 -9
- package/lib/app-data/loaders/index.js.map +0 -1
- package/lib/app-data/loaders/jcampLoader.d.ts +0 -11
- package/lib/app-data/loaders/jcampLoader.d.ts.map +0 -1
- package/lib/app-data/loaders/jcampLoader.js +0 -100
- package/lib/app-data/loaders/jcampLoader.js.map +0 -1
- package/lib/app-data/loaders/loadMeasurements.d.ts +0 -14
- package/lib/app-data/loaders/loadMeasurements.d.ts.map +0 -1
- package/lib/app-data/loaders/loadMeasurements.js +0 -37
- package/lib/app-data/loaders/loadMeasurements.js.map +0 -1
- package/lib/app-data/loaders/proprietary/agilent/cary500Loader.d.ts +0 -5
- package/lib/app-data/loaders/proprietary/agilent/cary500Loader.d.ts.map +0 -1
- package/lib/app-data/loaders/proprietary/agilent/cary500Loader.js +0 -71
- package/lib/app-data/loaders/proprietary/agilent/cary500Loader.js.map +0 -1
- package/lib/app-data/loaders/spcLoader.d.ts +0 -11
- package/lib/app-data/loaders/spcLoader.d.ts.map +0 -1
- package/lib/app-data/loaders/spcLoader.js +0 -41
- package/lib/app-data/loaders/spcLoader.js.map +0 -1
- package/lib/app-data/loaders/utility/getMeasurementInfoFromFile.d.ts +0 -20
- package/lib/app-data/loaders/utility/getMeasurementInfoFromFile.d.ts.map +0 -1
- package/lib/app-data/loaders/utility/getMeasurementInfoFromFile.js +0 -17
- package/lib/app-data/loaders/utility/getMeasurementInfoFromFile.js.map +0 -1
- package/lib/app-data/loaders/utility/index.d.ts +0 -4
- package/lib/app-data/loaders/utility/index.d.ts.map +0 -1
- package/lib/app-data/loaders/utility/index.js +0 -4
- package/lib/app-data/loaders/utility/index.js.map +0 -1
- package/lib/app-data/loaders/utility/measurementLoader.d.ts +0 -6
- package/lib/app-data/loaders/utility/measurementLoader.d.ts.map +0 -1
- package/lib/app-data/loaders/utility/measurementLoader.js +0 -14
- package/lib/app-data/loaders/utility/measurementLoader.js.map +0 -1
- package/lib/app-data/loaders/utility/parserLog.d.ts +0 -10
- package/lib/app-data/loaders/utility/parserLog.d.ts.map +0 -1
- package/lib/app-data/loaders/utility/parserLog.js +0 -19
- package/lib/app-data/loaders/utility/parserLog.js.map +0 -1
- package/lib/app-data/loaders/wdfLoader.d.ts +0 -11
- package/lib/app-data/loaders/wdfLoader.d.ts.map +0 -1
- package/lib/app-data/loaders/wdfLoader.js +0 -104
- package/lib/app-data/loaders/wdfLoader.js.map +0 -1
- package/lib/app-data/state/app_state.actions.d.ts +0 -38
- package/lib/app-data/state/app_state.actions.d.ts.map +0 -1
- package/lib/app-data/state/app_state.actions.js +0 -3
- package/lib/app-data/state/app_state.actions.js.map +0 -1
- package/lib/app-data/state/app_state.d.ts +0 -1323
- package/lib/app-data/state/app_state.d.ts.map +0 -1
- package/lib/app-data/state/app_state.js +0 -44
- package/lib/app-data/state/app_state.js.map +0 -1
- package/lib/app-data/state/app_state.provider.d.ts +0 -5
- package/lib/app-data/state/app_state.provider.d.ts.map +0 -1
- package/lib/app-data/state/app_state.provider.js +0 -8
- package/lib/app-data/state/app_state.provider.js.map +0 -1
- package/lib/app-data/state/data/AppData.d.ts +0 -69
- package/lib/app-data/state/data/AppData.d.ts.map +0 -1
- package/lib/app-data/state/data/AppData.js +0 -2
- package/lib/app-data/state/data/AppData.js.map +0 -1
- package/lib/app-data/state/data/data.helpers.d.ts +0 -54
- package/lib/app-data/state/data/data.helpers.d.ts.map +0 -1
- package/lib/app-data/state/data/data.helpers.js +0 -119
- package/lib/app-data/state/data/data.helpers.js.map +0 -1
- package/lib/app-data/state/data/getEmptyAppData.d.ts +0 -3
- package/lib/app-data/state/data/getEmptyAppData.d.ts.map +0 -1
- package/lib/app-data/state/data/getEmptyAppData.js +0 -17
- package/lib/app-data/state/data/getEmptyAppData.js.map +0 -1
- package/lib/app-data/state/data/index.d.ts +0 -5
- package/lib/app-data/state/data/index.d.ts.map +0 -1
- package/lib/app-data/state/data/index.js +0 -5
- package/lib/app-data/state/data/index.js.map +0 -1
- package/lib/app-data/state/data/kinds.d.ts +0 -4
- package/lib/app-data/state/data/kinds.d.ts.map +0 -1
- package/lib/app-data/state/data/kinds.js +0 -14
- package/lib/app-data/state/data/kinds.js.map +0 -1
- package/lib/app-data/state/index.d.ts +0 -6
- package/lib/app-data/state/index.d.ts.map +0 -1
- package/lib/app-data/state/index.js +0 -6
- package/lib/app-data/state/index.js.map +0 -1
- package/lib/app-data/state/producers/app_state_producer.d.ts +0 -7
- package/lib/app-data/state/producers/app_state_producer.d.ts.map +0 -1
- package/lib/app-data/state/producers/app_state_producer.js +0 -41
- package/lib/app-data/state/producers/app_state_producer.js.map +0 -1
- package/lib/app-data/state/producers/index.d.ts +0 -2
- package/lib/app-data/state/producers/index.d.ts.map +0 -1
- package/lib/app-data/state/producers/index.js +0 -2
- package/lib/app-data/state/producers/index.js.map +0 -1
- package/lib/app-data/state/producers/measurements/addMeasurements.d.ts +0 -3
- package/lib/app-data/state/producers/measurements/addMeasurements.d.ts.map +0 -1
- package/lib/app-data/state/producers/measurements/addMeasurements.js +0 -55
- package/lib/app-data/state/producers/measurements/addMeasurements.js.map +0 -1
- package/lib/app-data/state/producers/measurements/measurements.d.ts +0 -10
- package/lib/app-data/state/producers/measurements/measurements.d.ts.map +0 -1
- package/lib/app-data/state/producers/measurements/measurements.js +0 -95
- package/lib/app-data/state/producers/measurements/measurements.js.map +0 -1
- package/lib/app-data/state/producers/plot-view/helpers/zoom.d.ts +0 -5
- package/lib/app-data/state/producers/plot-view/helpers/zoom.d.ts.map +0 -1
- package/lib/app-data/state/producers/plot-view/helpers/zoom.js +0 -43
- package/lib/app-data/state/producers/plot-view/helpers/zoom.js.map +0 -1
- package/lib/app-data/state/producers/plot-view/plot-view.d.ts +0 -5
- package/lib/app-data/state/producers/plot-view/plot-view.d.ts.map +0 -1
- package/lib/app-data/state/producers/plot-view/plot-view.js +0 -20
- package/lib/app-data/state/producers/plot-view/plot-view.js.map +0 -1
- package/lib/app-data/state/producers/types.d.ts +0 -8
- package/lib/app-data/state/producers/types.d.ts.map +0 -1
- package/lib/app-data/state/producers/types.js +0 -2
- package/lib/app-data/state/producers/types.js.map +0 -1
- package/lib/app-data/state/settings/app_settings.d.ts +0 -9
- package/lib/app-data/state/settings/app_settings.d.ts.map +0 -1
- package/lib/app-data/state/settings/app_settings.js +0 -2
- package/lib/app-data/state/settings/app_settings.js.map +0 -1
- package/lib/app-data/state/settings/get_empty_app_settings.d.ts +0 -3
- package/lib/app-data/state/settings/get_empty_app_settings.d.ts.map +0 -1
- package/lib/app-data/state/settings/get_empty_app_settings.js +0 -9
- package/lib/app-data/state/settings/get_empty_app_settings.js.map +0 -1
- package/lib/app-data/state/settings/index.d.ts +0 -3
- package/lib/app-data/state/settings/index.d.ts.map +0 -1
- package/lib/app-data/state/settings/index.js +0 -3
- package/lib/app-data/state/settings/index.js.map +0 -1
- package/lib/app-data/state/view/app_view.d.ts +0 -35
- package/lib/app-data/state/view/app_view.d.ts.map +0 -1
- package/lib/app-data/state/view/app_view.js +0 -2
- package/lib/app-data/state/view/app_view.js.map +0 -1
- package/lib/app-data/state/view/get_empty_app_view.d.ts +0 -3
- package/lib/app-data/state/view/get_empty_app_view.d.ts.map +0 -1
- package/lib/app-data/state/view/get_empty_app_view.js +0 -9
- package/lib/app-data/state/view/get_empty_app_view.js.map +0 -1
- package/lib/app-data/state/view/index.d.ts +0 -3
- package/lib/app-data/state/view/index.d.ts.map +0 -1
- package/lib/app-data/state/view/index.js +0 -3
- package/lib/app-data/state/view/index.js.map +0 -1
- package/lib/app-data/utils.d.ts +0 -2
- package/lib/app-data/utils.d.ts.map +0 -1
- package/lib/app-data/utils.js +0 -12
- package/lib/app-data/utils.js.map +0 -1
- package/src/app/about/AboutDialogToolbarButton.tsx +0 -35
- package/src/app/about/index.ts +0 -1
- package/src/app/explorer/ExplorerPlotView.tsx +0 -20
- package/src/app/explorer/MeasurementExplorer.tsx +0 -198
- package/src/app/explorer/MeasurementExplorerWithState.tsx +0 -19
- package/src/app/explorer/index.ts +0 -2
- package/src/app/helpers/MeasurementPlot.tsx +0 -92
- package/src/app/helpers/MeasurementVariableSelect.tsx +0 -33
- package/src/app/helpers/getColorFromConfig.ts +0 -12
- package/src/app/helpers/index.ts +0 -5
- package/src/app/helpers/react-plot.tsx +0 -129
- package/src/app/helpers/splitEntries.ts +0 -26
- package/src/app/hooks/file-loading.ts +0 -50
- package/src/app/hooks/index.ts +0 -1
- package/src/app/index.ts +0 -5
- package/src/app/kinds/index.ts +0 -3
- package/src/app/kinds/ir/IrPeaksPanel.tsx +0 -65
- package/src/app/kinds/ir/index.ts +0 -1
- package/src/app/kinds/iv/index.ts +0 -1
- package/src/app/kinds/iv/plot-view/IvMeasurementsPlot.tsx +0 -112
- package/src/app/kinds/iv/plot-view/IvPlotVariablesSelector.tsx +0 -63
- package/src/app/kinds/iv/plot-view/IvPlotView.tsx +0 -55
- package/src/app/kinds/iv/plot-view/IvSeries.tsx +0 -40
- package/src/app/kinds/mass/MassPlotView.tsx +0 -19
- package/src/app/kinds/mass/MeasurementMassPlot.tsx +0 -144
- package/src/app/kinds/mass/index.ts +0 -2
- package/src/app/panels/SignalProcessingPanel.tsx +0 -218
- package/src/app/panels/index.ts +0 -4
- package/src/app/panels/measurement-config/MeasurementConfigPanel.tsx +0 -98
- package/src/app/panels/measurement-config/MeasurementConfigPanelAccordion.tsx +0 -26
- package/src/app/panels/measurement-config/index.ts +0 -2
- package/src/app/panels/measurement-info/MeasurementInfoPanel.tsx +0 -27
- package/src/app/panels/measurement-info/MeasurementInfoPanelAccordion.tsx +0 -11
- package/src/app/panels/measurement-info/index.ts +0 -2
- package/src/app/panels/measurements/MeasurementCheckbox.tsx +0 -37
- package/src/app/panels/measurements/MeasurementColorPreview.tsx +0 -102
- package/src/app/panels/measurements/MeasurementVisibilityToggle.tsx +0 -60
- package/src/app/panels/measurements/MeasurementsPanel.tsx +0 -85
- package/src/app/panels/measurements/MeasurementsPanelAccordion.tsx +0 -35
- package/src/app/panels/measurements/MeasurementsTable.tsx +0 -348
- package/src/app/panels/measurements/index.ts +0 -11
- package/src/app/panels/measurements/measurement_panel_context.provider.tsx +0 -20
- package/src/app/panels/measurements/measurement_panel_context.ts +0 -18
- package/src/app-data/enhancers/enhance.ts +0 -26
- package/src/app-data/enhancers/index.ts +0 -1
- package/src/app-data/helpers/index.ts +0 -1
- package/src/app-data/helpers/variables.ts +0 -29
- package/src/app-data/index.ts +0 -6
- package/src/app-data/kinds/index.ts +0 -2
- package/src/app-data/kinds/ir/IrMeasurement.ts +0 -15
- package/src/app-data/kinds/ir/IrPeak.ts +0 -8
- package/src/app-data/kinds/ir/index.ts +0 -4
- package/src/app-data/kinds/ir/irAutoPeakPickingEnhancer.ts +0 -93
- package/src/app-data/kinds/ir/irMeasurementEnhancer.ts +0 -51
- package/src/app-data/kinds/iv/IvMeasurement.ts +0 -3
- package/src/app-data/kinds/iv/index.ts +0 -1
- package/src/app-data/loaders/biologicLoader.ts +0 -166
- package/src/app-data/loaders/cdfLoader.ts +0 -206
- package/src/app-data/loaders/index.ts +0 -8
- package/src/app-data/loaders/jcampLoader.ts +0 -105
- package/src/app-data/loaders/loadMeasurements.ts +0 -60
- package/src/app-data/loaders/proprietary/agilent/cary500Loader.ts +0 -85
- package/src/app-data/loaders/spcLoader.ts +0 -55
- package/src/app-data/loaders/utility/getMeasurementInfoFromFile.ts +0 -21
- package/src/app-data/loaders/utility/index.ts +0 -3
- package/src/app-data/loaders/utility/measurementLoader.ts +0 -26
- package/src/app-data/loaders/utility/parserLog.ts +0 -39
- package/src/app-data/loaders/wdfLoader.ts +0 -139
- package/src/app-data/state/app_state.actions.ts +0 -49
- package/src/app-data/state/app_state.provider.tsx +0 -23
- package/src/app-data/state/app_state.ts +0 -66
- package/src/app-data/state/data/AppData.ts +0 -77
- package/src/app-data/state/data/data.helpers.ts +0 -192
- package/src/app-data/state/data/getEmptyAppData.ts +0 -18
- package/src/app-data/state/data/index.ts +0 -4
- package/src/app-data/state/data/kinds.ts +0 -16
- package/src/app-data/state/index.ts +0 -14
- package/src/app-data/state/producers/app_state_producer.ts +0 -65
- package/src/app-data/state/producers/index.ts +0 -1
- package/src/app-data/state/producers/measurements/addMeasurements.ts +0 -83
- package/src/app-data/state/producers/measurements/measurements.ts +0 -143
- package/src/app-data/state/producers/plot-view/helpers/zoom.ts +0 -63
- package/src/app-data/state/producers/plot-view/plot-view.ts +0 -29
- package/src/app-data/state/producers/types.ts +0 -11
- package/src/app-data/state/settings/app_settings.ts +0 -8
- package/src/app-data/state/settings/get_empty_app_settings.ts +0 -9
- package/src/app-data/state/settings/index.ts +0 -2
- package/src/app-data/state/view/app_view.ts +0 -29
- package/src/app-data/state/view/get_empty_app_view.ts +0 -9
- package/src/app-data/state/view/index.ts +0 -2
- package/src/app-data/utils.ts +0 -13
- package/src/test-utils.ts +0 -11
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
import { parseMPR, parseMPT } from 'biologic-converter';
|
|
2
|
-
import type { MeasurementVariable } from 'cheminfo-types';
|
|
3
|
-
import type { FifoLogger } from 'fifo-logger';
|
|
4
|
-
import type { FileCollection } from 'filelist-utils';
|
|
5
|
-
|
|
6
|
-
import type { MeasurementBase, Measurements } from '../index.js';
|
|
7
|
-
|
|
8
|
-
import { getMeasurementInfoFromFile } from './utility/getMeasurementInfoFromFile.js';
|
|
9
|
-
|
|
10
|
-
/* the MeasurementBase has got a data key,
|
|
11
|
-
and inside a variable key, compatible with this type */
|
|
12
|
-
type MeasurementDataVariable = Record<string, MeasurementVariable>;
|
|
13
|
-
/**
|
|
14
|
-
*
|
|
15
|
-
* @param fileCollection - the dragged file/files
|
|
16
|
-
* @param logs - pass to append errors to the logs, it mutates the external array.
|
|
17
|
-
* @returns - new measurements object to be merged
|
|
18
|
-
*/
|
|
19
|
-
export async function biologicLoader(
|
|
20
|
-
fileCollection: FileCollection,
|
|
21
|
-
logger?: FifoLogger,
|
|
22
|
-
): Promise<Partial<Measurements>> {
|
|
23
|
-
const measurements: Partial<Measurements> = {};
|
|
24
|
-
const entries: MeasurementBase[] = [];
|
|
25
|
-
|
|
26
|
-
for (const file of fileCollection.files) {
|
|
27
|
-
try {
|
|
28
|
-
if (/\.mpr$/i.test(file.name)) {
|
|
29
|
-
// TODO: load in parallel
|
|
30
|
-
// eslint-disable-next-line no-await-in-loop
|
|
31
|
-
const mpr = parseMPR(await file.arrayBuffer());
|
|
32
|
-
const meta = mpr.settings.variables;
|
|
33
|
-
const info = getMeasurementInfoFromFile(
|
|
34
|
-
file,
|
|
35
|
-
`Experiment: ${meta.technique}`,
|
|
36
|
-
);
|
|
37
|
-
// puts the "useful" variables at x and y for default plot.
|
|
38
|
-
const variables = preferredXY(meta.technique, mpr.data.variables);
|
|
39
|
-
const result: MeasurementBase = {
|
|
40
|
-
...info,
|
|
41
|
-
meta,
|
|
42
|
-
data: [{ variables }],
|
|
43
|
-
};
|
|
44
|
-
entries.push(result);
|
|
45
|
-
} else if (/\.mpt$/i.test(file.name)) {
|
|
46
|
-
// TODO: load in parallel
|
|
47
|
-
// eslint-disable-next-line no-await-in-loop
|
|
48
|
-
const { data, settings } = parseMPT(await file.arrayBuffer());
|
|
49
|
-
if (data.variables) {
|
|
50
|
-
const metaData = settings?.variables;
|
|
51
|
-
const info = getMeasurementInfoFromFile(
|
|
52
|
-
file,
|
|
53
|
-
metaData?.technique
|
|
54
|
-
? `Experiment: ${metaData.technique}`
|
|
55
|
-
: file.name,
|
|
56
|
-
);
|
|
57
|
-
// puts the "useful" variables at x and y for default plot.
|
|
58
|
-
const variables = preferredXY(metaData?.technique, data.variables);
|
|
59
|
-
const result: MeasurementBase = {
|
|
60
|
-
...info,
|
|
61
|
-
meta: metaData || {},
|
|
62
|
-
data: [{ variables }],
|
|
63
|
-
};
|
|
64
|
-
entries.push(result);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
} catch (error) {
|
|
68
|
-
//send error to UI to show to User ?
|
|
69
|
-
if (error instanceof Error) {
|
|
70
|
-
if (logger) {
|
|
71
|
-
logger.error(error);
|
|
72
|
-
} else {
|
|
73
|
-
throw error;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
logger?.debug(`Loaded ${entries.length} entries with biologicLoader`);
|
|
79
|
-
measurements.iv = { entries };
|
|
80
|
-
return measurements;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Each biologic experiment stores measurement variables (not just `x` and `y`) in the
|
|
85
|
-
* `data.variables` object.
|
|
86
|
-
* this function takes "useful ones", and place them as `x` and `y`.
|
|
87
|
-
* so they are default for the plot.
|
|
88
|
-
* @param technique technique used in the experiment
|
|
89
|
-
* @param variables experiment variables
|
|
90
|
-
* @returns the same data (and type) with rearranged variables.
|
|
91
|
-
* (does not need return type as it is inferred)
|
|
92
|
-
*/
|
|
93
|
-
function preferredXY(
|
|
94
|
-
technique: string | undefined,
|
|
95
|
-
variables: MeasurementDataVariable,
|
|
96
|
-
) {
|
|
97
|
-
if (!technique) return variables;
|
|
98
|
-
|
|
99
|
-
switch (technique) {
|
|
100
|
-
case 'CA': {
|
|
101
|
-
//Chronoamperometry or Chronocoulometry (distinguish?)
|
|
102
|
-
variables = setDefault(variables, 'I', 'y');
|
|
103
|
-
variables = setDefault(variables, 'time', 'x');
|
|
104
|
-
break;
|
|
105
|
-
}
|
|
106
|
-
case 'CP': {
|
|
107
|
-
//Chronopotentiometry. <average>
|
|
108
|
-
variables = setDefault(variables, '<Ewe>', 'y');
|
|
109
|
-
variables = setDefault(variables, 'time', 'x');
|
|
110
|
-
break;
|
|
111
|
-
}
|
|
112
|
-
case 'CV': {
|
|
113
|
-
//cyclic voltammetry. <average>
|
|
114
|
-
variables = setDefault(variables, '<I>', 'y');
|
|
115
|
-
variables = setDefault(variables, 'Ewe', 'x');
|
|
116
|
-
break;
|
|
117
|
-
}
|
|
118
|
-
case 'GCPL': {
|
|
119
|
-
variables = setDefault(variables, 'Ewe', 'y');
|
|
120
|
-
variables = setDefault(variables, 'time', 'x');
|
|
121
|
-
break;
|
|
122
|
-
}
|
|
123
|
-
case 'OCV': {
|
|
124
|
-
variables = setDefault(variables, 'Ewe', 'y');
|
|
125
|
-
variables = setDefault(variables, 'time', 'x');
|
|
126
|
-
break;
|
|
127
|
-
}
|
|
128
|
-
default:
|
|
129
|
-
break;
|
|
130
|
-
}
|
|
131
|
-
return variables;
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Stores object with "label" at either "x" or "y".
|
|
135
|
-
* the data stored is still the same.
|
|
136
|
-
* @param variables experimental variables
|
|
137
|
-
* @param label label to search for in the variables object (time, potential, current, etc)
|
|
138
|
-
* @param storeAt which key to move that data to
|
|
139
|
-
* @returns the new variables object.
|
|
140
|
-
*/
|
|
141
|
-
function setDefault(
|
|
142
|
-
variables: MeasurementDataVariable,
|
|
143
|
-
label: string,
|
|
144
|
-
storeAt: 'x' | 'y',
|
|
145
|
-
) {
|
|
146
|
-
for (const varum in variables) {
|
|
147
|
-
// find the key with `label` (or skip if not found)
|
|
148
|
-
if (
|
|
149
|
-
variables[varum].label === label && //if not already at the right key
|
|
150
|
-
varum !== storeAt
|
|
151
|
-
) {
|
|
152
|
-
// populate key, if there is no data there.
|
|
153
|
-
if (!variables[storeAt]) {
|
|
154
|
-
variables[storeAt] = variables[varum];
|
|
155
|
-
delete variables[varum];
|
|
156
|
-
} else {
|
|
157
|
-
// if the storeAt is already occupied, swap the two
|
|
158
|
-
const originalX = variables[storeAt];
|
|
159
|
-
const newX = variables[varum];
|
|
160
|
-
variables[storeAt] = newX;
|
|
161
|
-
variables[varum] = originalX;
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
return variables;
|
|
166
|
-
}
|
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
import type { FifoLogger } from 'fifo-logger';
|
|
2
|
-
import type { FileCollection } from 'filelist-utils';
|
|
3
|
-
import { NetCDFReader } from 'netcdfjs';
|
|
4
|
-
|
|
5
|
-
import { assert } from '../../components/index.js';
|
|
6
|
-
import type {
|
|
7
|
-
MeasurementBase,
|
|
8
|
-
MeasurementKind,
|
|
9
|
-
Measurements,
|
|
10
|
-
} from '../index.js';
|
|
11
|
-
|
|
12
|
-
import { getMeasurementInfoFromFile } from './utility/index.js';
|
|
13
|
-
|
|
14
|
-
export async function cdfLoader(
|
|
15
|
-
fileCollection: FileCollection,
|
|
16
|
-
logger?: FifoLogger,
|
|
17
|
-
): Promise<Partial<Measurements>> {
|
|
18
|
-
const newMeasurements: Partial<Measurements> = {};
|
|
19
|
-
let kind: MeasurementKind | undefined;
|
|
20
|
-
let count = 0;
|
|
21
|
-
for (const file of fileCollection) {
|
|
22
|
-
if (/\.cdf$/i.test(file.name)) {
|
|
23
|
-
try {
|
|
24
|
-
// TODO: load in parallel
|
|
25
|
-
// eslint-disable-next-line no-await-in-loop
|
|
26
|
-
const reader = new NetCDFReader(await file.arrayBuffer());
|
|
27
|
-
|
|
28
|
-
if (
|
|
29
|
-
reader.dataVariableExists('mass_values') &&
|
|
30
|
-
reader.dataVariableExists('time_values')
|
|
31
|
-
) {
|
|
32
|
-
kind = 'gclcms';
|
|
33
|
-
} else if (
|
|
34
|
-
reader.dataVariableExists('ordinate_values') &&
|
|
35
|
-
(reader.getAttribute('detector_name') as string | null)?.match(
|
|
36
|
-
/dad|tic/i,
|
|
37
|
-
)
|
|
38
|
-
) {
|
|
39
|
-
kind = 'gclc';
|
|
40
|
-
} else {
|
|
41
|
-
return newMeasurements;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
addMeta(reader, reader.globalAttributes);
|
|
45
|
-
if (!newMeasurements[kind]) {
|
|
46
|
-
newMeasurements[kind] = { entries: [] };
|
|
47
|
-
}
|
|
48
|
-
assert(
|
|
49
|
-
newMeasurements[kind],
|
|
50
|
-
'Error while loading, kind is not defined',
|
|
51
|
-
);
|
|
52
|
-
const newMeasurement = {
|
|
53
|
-
...getMeasurementInfoFromFile(
|
|
54
|
-
file,
|
|
55
|
-
reader.getAttribute('experiment_title') as string,
|
|
56
|
-
),
|
|
57
|
-
// @ts-expect-error meta is not defined in reader.
|
|
58
|
-
meta: reader.header.meta,
|
|
59
|
-
data:
|
|
60
|
-
kind === 'gclcms'
|
|
61
|
-
? chromatogramWithMassSpectra(reader)
|
|
62
|
-
: chromatogram(reader),
|
|
63
|
-
};
|
|
64
|
-
newMeasurements[kind]?.entries.push(newMeasurement);
|
|
65
|
-
count++;
|
|
66
|
-
} catch (error) {
|
|
67
|
-
if (error instanceof Error) {
|
|
68
|
-
//send error to UI ?
|
|
69
|
-
if (logger) {
|
|
70
|
-
logger.error(error);
|
|
71
|
-
} else {
|
|
72
|
-
throw error;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
logger?.debug(`Loaded ${count} measurements with cdfLoader`);
|
|
79
|
-
return newMeasurements;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
function chromatogramWithMassSpectra(
|
|
83
|
-
reader: NetCDFReader,
|
|
84
|
-
): MeasurementBase['data'] {
|
|
85
|
-
// Taken from: https://github.com/cheminfo/netcdf-gcms
|
|
86
|
-
const pointCount = reader.getDataVariable('point_count') as number[];
|
|
87
|
-
const massValues = reader.getDataVariable('mass_values') as number[];
|
|
88
|
-
const intensityValues = reader.getDataVariable(
|
|
89
|
-
'intensity_values',
|
|
90
|
-
) as number[];
|
|
91
|
-
const times = reader.getDataVariable('scan_acquisition_time');
|
|
92
|
-
const tics = reader.getDataVariable('total_intensity');
|
|
93
|
-
|
|
94
|
-
let index = 0;
|
|
95
|
-
const allMasses: Float64Array[] = [];
|
|
96
|
-
const allIntensities: Float64Array[] = [];
|
|
97
|
-
for (const size of pointCount) {
|
|
98
|
-
const masses = new Float64Array(size);
|
|
99
|
-
const intensities = new Float64Array(size);
|
|
100
|
-
for (let j = 0; j < size; j++) {
|
|
101
|
-
masses[j] = massValues[index];
|
|
102
|
-
intensities[j] = intensityValues[index++];
|
|
103
|
-
}
|
|
104
|
-
allIntensities.push(intensities);
|
|
105
|
-
allMasses.push(masses);
|
|
106
|
-
}
|
|
107
|
-
const data: MeasurementBase['data'] = [];
|
|
108
|
-
for (let i = 0; i < times.length; i++) {
|
|
109
|
-
data.push({
|
|
110
|
-
info: {
|
|
111
|
-
time: { value: times[i], units: 's' },
|
|
112
|
-
tic: tics[i],
|
|
113
|
-
},
|
|
114
|
-
variables: {
|
|
115
|
-
x: {
|
|
116
|
-
symbol: 'X',
|
|
117
|
-
label: 'm/z',
|
|
118
|
-
units: '',
|
|
119
|
-
data: allMasses[i] || [],
|
|
120
|
-
},
|
|
121
|
-
y: {
|
|
122
|
-
symbol: 'Y',
|
|
123
|
-
label: 'relative intensity',
|
|
124
|
-
units: '',
|
|
125
|
-
data: allIntensities[i] || [],
|
|
126
|
-
},
|
|
127
|
-
},
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
return data;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
function chromatogram(reader: NetCDFReader): MeasurementBase['data'] {
|
|
134
|
-
// Taken from: https://github.com/cheminfo/netcdf-gcms
|
|
135
|
-
const data: MeasurementBase['data'] = [];
|
|
136
|
-
const intensities = reader.getDataVariable('ordinate_values') as number[];
|
|
137
|
-
const numberPoints = intensities.length;
|
|
138
|
-
const detector = reader.getAttribute('detector_name') as string;
|
|
139
|
-
let channel: string;
|
|
140
|
-
if (/dad/i.test(detector)) {
|
|
141
|
-
const uvNumber = detector.match(/.*Sig=(?<uvNumber>\d+).*/)?.groups
|
|
142
|
-
?.uvNumber;
|
|
143
|
-
channel = `uv${Number(uvNumber) || ''}`;
|
|
144
|
-
} else if (/tic/i.test(detector)) {
|
|
145
|
-
channel = 'tic';
|
|
146
|
-
} else {
|
|
147
|
-
channel = 'unknown';
|
|
148
|
-
}
|
|
149
|
-
const delayTime = reader.getDataVariable('actual_delay_time')[0] as number;
|
|
150
|
-
const runtimeLength: number = reader.getDataVariable(
|
|
151
|
-
'actual_run_time_length',
|
|
152
|
-
)[0] as number;
|
|
153
|
-
let samplingInterval;
|
|
154
|
-
if (reader.dataVariableExists('actual_sampling_interval')) {
|
|
155
|
-
samplingInterval = reader.getDataVariable(
|
|
156
|
-
'actual_sampling_interval',
|
|
157
|
-
)[0] as number;
|
|
158
|
-
|
|
159
|
-
if (
|
|
160
|
-
Math.abs(delayTime + samplingInterval * numberPoints - runtimeLength) > 3
|
|
161
|
-
) {
|
|
162
|
-
throw new Error(
|
|
163
|
-
'The expected last time does not correspond to the runtimeLength',
|
|
164
|
-
);
|
|
165
|
-
}
|
|
166
|
-
} else {
|
|
167
|
-
samplingInterval = (runtimeLength - delayTime) / numberPoints;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
const times: number[] = [];
|
|
171
|
-
let time = delayTime;
|
|
172
|
-
for (let i = 0; i < numberPoints; i++) {
|
|
173
|
-
times.push(time);
|
|
174
|
-
time += samplingInterval;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
data.push({
|
|
178
|
-
variables: {
|
|
179
|
-
x: {
|
|
180
|
-
symbol: 'X',
|
|
181
|
-
label: 'time',
|
|
182
|
-
units: 's',
|
|
183
|
-
data: times || [],
|
|
184
|
-
},
|
|
185
|
-
y: {
|
|
186
|
-
symbol: 'Y',
|
|
187
|
-
label: channel,
|
|
188
|
-
units: '',
|
|
189
|
-
data: intensities || [],
|
|
190
|
-
},
|
|
191
|
-
},
|
|
192
|
-
});
|
|
193
|
-
return data;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
function addMeta(
|
|
197
|
-
reader: NetCDFReader,
|
|
198
|
-
globalAttributes: NetCDFReader['globalAttributes'],
|
|
199
|
-
) {
|
|
200
|
-
// @ts-expect-error meta is not defined in reader.
|
|
201
|
-
reader.header.meta = {};
|
|
202
|
-
for (const item of globalAttributes) {
|
|
203
|
-
// @ts-expect-error meta is not defined in reader.
|
|
204
|
-
reader.header.meta[item.name] = item.value;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export * from './proprietary/agilent/cary500Loader.js';
|
|
2
|
-
export * from './utility/index.js';
|
|
3
|
-
export * from './biologicLoader.js';
|
|
4
|
-
export * from './cdfLoader.js';
|
|
5
|
-
export * from './jcampLoader.js';
|
|
6
|
-
export * from './loadMeasurements.js';
|
|
7
|
-
export * from './spcLoader.js';
|
|
8
|
-
export * from './wdfLoader.js';
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import type { FifoLogger } from 'fifo-logger';
|
|
2
|
-
import type { FileCollection } from 'filelist-utils';
|
|
3
|
-
import { convert } from 'jcampconverter';
|
|
4
|
-
|
|
5
|
-
import { assert } from '../../components/index.js';
|
|
6
|
-
import type { MeasurementKind, Measurements } from '../index.js';
|
|
7
|
-
|
|
8
|
-
import { getMeasurementInfoFromFile } from './utility/index.js';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
*
|
|
12
|
-
* @param fileCollection - the dragged file/files
|
|
13
|
-
* @param logger - whether to log to console or not
|
|
14
|
-
* @returns - new measurements object to be merged
|
|
15
|
-
*/
|
|
16
|
-
export async function jcampLoader(
|
|
17
|
-
fileCollection: FileCollection,
|
|
18
|
-
logger?: FifoLogger,
|
|
19
|
-
): Promise<Partial<Measurements>> {
|
|
20
|
-
let count = 0;
|
|
21
|
-
const newMeasurements: Partial<Measurements> = {};
|
|
22
|
-
for (const file of fileCollection) {
|
|
23
|
-
if (/(?:\.jdx|\.dx)$/i.test(file.name)) {
|
|
24
|
-
try {
|
|
25
|
-
// TODO: load in parallel
|
|
26
|
-
// eslint-disable-next-line no-await-in-loop
|
|
27
|
-
const parsed = convert(await file.text(), { keepRecordsRegExp: /.*/ });
|
|
28
|
-
for (const measurement of parsed.flatten) {
|
|
29
|
-
let kind: MeasurementKind | undefined;
|
|
30
|
-
if (measurement?.dataType?.match(/infrared|ir/i)) {
|
|
31
|
-
kind = 'ir';
|
|
32
|
-
} else if (measurement?.dataType?.match(/raman/i)) {
|
|
33
|
-
kind = 'raman';
|
|
34
|
-
} else if (measurement?.dataType?.match(/uv/i)) {
|
|
35
|
-
kind = 'uv';
|
|
36
|
-
} else if (measurement?.dataType?.match(/mass/i)) {
|
|
37
|
-
kind = 'mass';
|
|
38
|
-
} else if (measurement?.dataType?.match(/nmr/i)) {
|
|
39
|
-
kind = 'nmr';
|
|
40
|
-
}
|
|
41
|
-
if (kind) {
|
|
42
|
-
if (!newMeasurements[kind]) {
|
|
43
|
-
newMeasurements[kind] = { entries: [] };
|
|
44
|
-
}
|
|
45
|
-
assert(
|
|
46
|
-
newMeasurements[kind],
|
|
47
|
-
'Error while loading, kind is not defined',
|
|
48
|
-
);
|
|
49
|
-
const newMeasurement = {
|
|
50
|
-
...getMeasurementInfoFromFile(file, measurement.title || ''),
|
|
51
|
-
meta: measurement.meta,
|
|
52
|
-
data: normalizeSpectra(measurement.spectra),
|
|
53
|
-
};
|
|
54
|
-
count++;
|
|
55
|
-
Object.assign(newMeasurement.info, measurement.info);
|
|
56
|
-
newMeasurements[kind]?.entries.push(newMeasurement);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
} catch (error) {
|
|
60
|
-
if (error instanceof Error) {
|
|
61
|
-
if (logger) {
|
|
62
|
-
logger?.error(error);
|
|
63
|
-
} else {
|
|
64
|
-
throw error;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
logger?.debug(`Loaded ${count} measurements with jcampLoader`);
|
|
72
|
-
return newMeasurements;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
function normalizeSpectra(spectra: any) {
|
|
76
|
-
const data: any[] = [];
|
|
77
|
-
for (const spectrum of spectra) {
|
|
78
|
-
let variables = spectrum.variables;
|
|
79
|
-
if (!variables) {
|
|
80
|
-
variables = {};
|
|
81
|
-
variables.x = {
|
|
82
|
-
label: spectrum.xUnits,
|
|
83
|
-
symbol: 'X',
|
|
84
|
-
data: spectrum.data.x || spectrum.data.X,
|
|
85
|
-
};
|
|
86
|
-
variables.y = {
|
|
87
|
-
label: spectrum.yUnits,
|
|
88
|
-
symbol: 'Y',
|
|
89
|
-
data: spectrum.data.y || spectrum.data.Y,
|
|
90
|
-
};
|
|
91
|
-
} else {
|
|
92
|
-
for (const key in variables) {
|
|
93
|
-
const variable = variables[key];
|
|
94
|
-
if (variable.label) continue;
|
|
95
|
-
let label: string = variable.name || variable.symbol || key;
|
|
96
|
-
if (variable.units && !label.includes(variable.units)) {
|
|
97
|
-
label += ` [${variable.units}]`;
|
|
98
|
-
}
|
|
99
|
-
variable.label = label;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
data.push({ variables });
|
|
103
|
-
}
|
|
104
|
-
return data;
|
|
105
|
-
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import type { FifoLogger } from 'fifo-logger';
|
|
2
|
-
import type { FileCollection } from 'filelist-utils';
|
|
3
|
-
import { xMinMaxValues } from 'ml-spectra-processing';
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
enhance,
|
|
7
|
-
type Enhancers,
|
|
8
|
-
type MeasurementBase,
|
|
9
|
-
type Measurements,
|
|
10
|
-
} from '../index.js';
|
|
11
|
-
|
|
12
|
-
import {
|
|
13
|
-
type MeasurementsLoader,
|
|
14
|
-
mergeMeasurements,
|
|
15
|
-
type ParserLog,
|
|
16
|
-
} from './utility/index.js';
|
|
17
|
-
|
|
18
|
-
export interface LoadOptions {
|
|
19
|
-
loaders?: MeasurementsLoader[];
|
|
20
|
-
enhancers?: Partial<Enhancers>;
|
|
21
|
-
logger?: FifoLogger;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export async function loadMeasurements(
|
|
25
|
-
fileCollection: FileCollection,
|
|
26
|
-
options: LoadOptions,
|
|
27
|
-
) {
|
|
28
|
-
const measurements: Partial<Measurements> = {};
|
|
29
|
-
const logs: ParserLog[] = [];
|
|
30
|
-
const { loaders = [], enhancers = {}, logger } = options;
|
|
31
|
-
for (const loader of loaders) {
|
|
32
|
-
// TODO: load in parallel
|
|
33
|
-
// eslint-disable-next-line no-await-in-loop
|
|
34
|
-
const loaderData = await loader(fileCollection, logger);
|
|
35
|
-
for (const { entries } of Object.values(loaderData)) {
|
|
36
|
-
for (const entry of entries) {
|
|
37
|
-
computeMinMax(entry);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
enhance(loaderData, enhancers);
|
|
41
|
-
mergeMeasurements(measurements, loaderData);
|
|
42
|
-
}
|
|
43
|
-
return { measurements, logs };
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
function computeMinMax(measurement: MeasurementBase) {
|
|
47
|
-
for (const datum of measurement.data) {
|
|
48
|
-
for (const variable of Object.values(datum.variables)) {
|
|
49
|
-
if (variable.data.length === 0) {
|
|
50
|
-
// TODO: should we accept empty data?
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
if (variable.min === undefined || variable.max === undefined) {
|
|
54
|
-
const { min, max } = xMinMaxValues(variable.data);
|
|
55
|
-
variable.min = min;
|
|
56
|
-
variable.max = max;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import type { FifoLogger } from 'fifo-logger';
|
|
2
|
-
import type { FileCollection, FileCollectionItem } from 'filelist-utils';
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
getMeasurementInfoFromFile,
|
|
6
|
-
type MeasurementBase,
|
|
7
|
-
type Measurements,
|
|
8
|
-
} from '../../../index.js';
|
|
9
|
-
|
|
10
|
-
export async function cary500Loader(
|
|
11
|
-
fileCollection: FileCollection,
|
|
12
|
-
logger?: FifoLogger,
|
|
13
|
-
): Promise<Partial<Measurements>> {
|
|
14
|
-
const newMeasurements: Partial<Measurements> = {};
|
|
15
|
-
const entries: MeasurementBase[] = [];
|
|
16
|
-
|
|
17
|
-
for (const file of fileCollection) {
|
|
18
|
-
if (/\.csv$/i.test(file.name)) {
|
|
19
|
-
try {
|
|
20
|
-
// TODO: load in parallel
|
|
21
|
-
// eslint-disable-next-line no-await-in-loop
|
|
22
|
-
const experiments = await convert(file);
|
|
23
|
-
for (const experiment of experiments) {
|
|
24
|
-
entries.push(experiment);
|
|
25
|
-
}
|
|
26
|
-
} catch (error) {
|
|
27
|
-
if (error instanceof Error) {
|
|
28
|
-
if (logger) {
|
|
29
|
-
logger.error(error);
|
|
30
|
-
} else {
|
|
31
|
-
throw error;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
logger?.debug(`Loaded ${entries.length} entries with cary500Loader`);
|
|
38
|
-
newMeasurements.uvvis = { entries };
|
|
39
|
-
return newMeasurements;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
async function convert(file: FileCollectionItem): Promise<MeasurementBase[]> {
|
|
43
|
-
const text = await file.text();
|
|
44
|
-
// this format allows many experiments in one file
|
|
45
|
-
const lines = text.split(/\r?\n/).map((line) => line.trim());
|
|
46
|
-
|
|
47
|
-
const titles = lines[0].split(',').map((field) => field.trim());
|
|
48
|
-
const labelUnits = lines[1].split(',').map((field) => field.trim());
|
|
49
|
-
|
|
50
|
-
let lastDataIndex;
|
|
51
|
-
for (lastDataIndex = 2; lastDataIndex < lines.length; lastDataIndex++) {
|
|
52
|
-
if (!lines[lastDataIndex].match(/^[\d,.Ee-]+$/)) {
|
|
53
|
-
break;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
const data = lines.slice(2, lastDataIndex).map((line) => line.split(','));
|
|
57
|
-
const meta = lines.slice(lastDataIndex);
|
|
58
|
-
const nbExperiments = Math.floor(labelUnits.length / 2);
|
|
59
|
-
|
|
60
|
-
const experiments: MeasurementBase[] = [];
|
|
61
|
-
for (let i = 0; i < nbExperiments; i++) {
|
|
62
|
-
const column = i * 2;
|
|
63
|
-
const xVariable = {
|
|
64
|
-
...labelAndUnits(labelUnits[column]),
|
|
65
|
-
data: data.map((row) => Number(row[column])),
|
|
66
|
-
};
|
|
67
|
-
const yVariable = {
|
|
68
|
-
...labelAndUnits(labelUnits[column + 1]),
|
|
69
|
-
data: data.map((row) => Number(row[column + 1])),
|
|
70
|
-
};
|
|
71
|
-
experiments.push({
|
|
72
|
-
...getMeasurementInfoFromFile(file, titles[column]),
|
|
73
|
-
meta: structuredClone(meta),
|
|
74
|
-
data: [{ variables: { x: xVariable, y: yVariable } }],
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
return experiments;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
function labelAndUnits(labelUnits: string) {
|
|
81
|
-
const groups = labelUnits.match(/(?<label>.*) \((?<units>.*)\)/)?.groups;
|
|
82
|
-
return groups
|
|
83
|
-
? { label: groups.label, units: groups.units }
|
|
84
|
-
: { label: labelUnits, units: '' };
|
|
85
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import type { FifoLogger } from 'fifo-logger';
|
|
2
|
-
import type { FileCollection } from 'filelist-utils';
|
|
3
|
-
import { guessSpectraType, parse } from 'spc-parser';
|
|
4
|
-
|
|
5
|
-
import { assert } from '../../components/index.js';
|
|
6
|
-
import type {
|
|
7
|
-
MeasurementBase,
|
|
8
|
-
MeasurementKind,
|
|
9
|
-
Measurements,
|
|
10
|
-
} from '../index.js';
|
|
11
|
-
|
|
12
|
-
import { getMeasurementInfoFromFile } from './utility/index.js';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
*
|
|
16
|
-
* @param fileCollection - the dragged file/files
|
|
17
|
-
* @param logger - whether to log to console or not
|
|
18
|
-
* @returns - new measurements object to be merged
|
|
19
|
-
*/
|
|
20
|
-
export async function spcLoader(
|
|
21
|
-
fileCollection: FileCollection,
|
|
22
|
-
logger?: FifoLogger,
|
|
23
|
-
): Promise<Partial<Measurements>> {
|
|
24
|
-
const measurements: Partial<Measurements> = {};
|
|
25
|
-
for (const file of fileCollection) {
|
|
26
|
-
if (/\.spc$/i.test(file.name)) {
|
|
27
|
-
try {
|
|
28
|
-
// TODO: load in parallel
|
|
29
|
-
// eslint-disable-next-line no-await-in-loop
|
|
30
|
-
const parsed = parse(await file.arrayBuffer());
|
|
31
|
-
const spectraType: MeasurementKind = guessSpectraType(parsed.meta);
|
|
32
|
-
if (!measurements[spectraType]) {
|
|
33
|
-
measurements[spectraType] = { entries: [] };
|
|
34
|
-
}
|
|
35
|
-
assert(
|
|
36
|
-
measurements[spectraType],
|
|
37
|
-
'Error while loading, kind is not defined',
|
|
38
|
-
);
|
|
39
|
-
measurements[spectraType]?.entries.push({
|
|
40
|
-
meta: parsed.meta,
|
|
41
|
-
...getMeasurementInfoFromFile(file, parsed.meta.memo),
|
|
42
|
-
data: parsed.spectra as unknown as MeasurementBase['data'],
|
|
43
|
-
});
|
|
44
|
-
} catch (error) {
|
|
45
|
-
if (error instanceof Error && logger) {
|
|
46
|
-
logger.error(error);
|
|
47
|
-
} else {
|
|
48
|
-
throw error;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return measurements;
|
|
55
|
-
}
|