@morscherlab/mint-sdk 1.0.28 → 1.0.30
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/dist/components/index.js +1 -1
- package/dist/{components-BT_uVU5B.js → components-CzE7YHWY.js} +3 -3
- package/dist/components-CzE7YHWY.js.map +1 -0
- package/dist/composables/autoGroup/compose.d.ts +2 -0
- package/dist/composables/index.js +2 -2
- package/dist/composables/useAutoGroup.d.ts +8 -4
- package/dist/{composables-BNP5NZte.js → composables-BLLXhxKE.js} +2 -2
- package/dist/{composables-BNP5NZte.js.map → composables-BLLXhxKE.js.map} +1 -1
- package/dist/index.js +3 -3
- package/dist/install.js +1 -1
- package/dist/{useProtocolTemplates-COIsmhsZ.js → useProtocolTemplates-CXP2ZosM.js} +63 -25
- package/dist/useProtocolTemplates-CXP2ZosM.js.map +1 -0
- package/package.json +1 -1
- package/src/__tests__/composables/useAutoGroup.test.ts +68 -0
- package/src/__tests__/composables/useAutoGroupInputSources.test.ts +20 -0
- package/src/components/AutoGroupModal.vue +1 -1
- package/src/composables/autoGroup/compose.ts +17 -6
- package/src/composables/useAutoGroup.ts +85 -27
- package/src/composables/useAutoGroupInputSources.ts +1 -1
- package/dist/components-BT_uVU5B.js.map +0 -1
- package/dist/useProtocolTemplates-COIsmhsZ.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as SampleLegend_default, A as ReagentEditor_default, B as ProgressBar_default, C as formatSequenceRemaining, Ct as BaseTabs_default, D as ScientificNumber_default, E as ChemicalFormula_default, F as BioTemplateExperimentWorkspaceView_default, G as ControlWorkspaceView_default, H as Divider_default, I as BioTemplateRenderer_default, J as SampleSelector_default, K as ComponentBindingRenderer_default, L as ChartContainer_default, M as RackEditor_default, N as BioTemplatePresetWorkspaceView_default, O as ProtocolStepEditor_default, P as BioTemplatePackWorkspaceView_default, Q as PlateMapEditor_default, R as Breadcrumb_default, S as formatSequenceEta, St as SegmentedControl_default, T as sequenceSamplesRemaining, U as AppContainer_default, V as StatusIndicator_default, W as DoseDesignWorkspaceView_default, X as LoadingSpinner_default, Y as AutoGroupModal_default, Z as ReagentList_default, _ as InstrumentStateBadge_default, _t as AppToastContainer_default, a as ExperimentDataViewer_default, at as AppLayout_default, b as estimateSequenceFinishDate, bt as Calendar_default, c as LcmsSequenceTable_default, ct as FormActions_default, d as extractLcmsCommonPrefix, dt as AppPluginSwitcher_default, et as WellPlate_default, f as extractLcmsSampleName, ft as AppAvatarMenu_default, g as InstrumentStatusCard_default, gt as IconButton_default, h as reconstructLcmsPlateCellsFromSequenceItems, ht as ThemeToggle_default, i as TimeRangeInput_default, it as MobileSupportGate_default, j as GroupAssigner_default, k as SampleHierarchyTree_default, l as DEFAULT_LCMS_SEQUENCE_COLUMNS, lt as StepWizard_default, m as lcmsWellIdFromPosition, mt as CollapsibleCard_default, n as FitPanel_default, nt as DoseCalculator_default, o as BatchProgressList_default, ot as AppSidebar_default, p as inferLcmsPlateTypeFromWellIds, pt as PluginIcon_default, q as ScheduleCalendar_default, r as ResourceCard_default, rt as PluginWorkspaceView_default, s as AuditTrail_default, st as FormBuilder_default, tt as ExperimentTimeline_default, u as basenameFromWindowsPath, ut as AppTopBar_default, v as InstrumentAlertLog_default, vt as AlertBox_default, w as sequenceProgressPercent, wt as ColorSlider_default, x as estimateSequenceRemainingSeconds, xt as DropdownButton_default, y as SequenceProgressBar_default, yt as DataFrame_default, z as Avatar_default } from "./components-
|
|
1
|
+
import { $ as SampleLegend_default, A as ReagentEditor_default, B as ProgressBar_default, C as formatSequenceRemaining, Ct as BaseTabs_default, D as ScientificNumber_default, E as ChemicalFormula_default, F as BioTemplateExperimentWorkspaceView_default, G as ControlWorkspaceView_default, H as Divider_default, I as BioTemplateRenderer_default, J as SampleSelector_default, K as ComponentBindingRenderer_default, L as ChartContainer_default, M as RackEditor_default, N as BioTemplatePresetWorkspaceView_default, O as ProtocolStepEditor_default, P as BioTemplatePackWorkspaceView_default, Q as PlateMapEditor_default, R as Breadcrumb_default, S as formatSequenceEta, St as SegmentedControl_default, T as sequenceSamplesRemaining, U as AppContainer_default, V as StatusIndicator_default, W as DoseDesignWorkspaceView_default, X as LoadingSpinner_default, Y as AutoGroupModal_default, Z as ReagentList_default, _ as InstrumentStateBadge_default, _t as AppToastContainer_default, a as ExperimentDataViewer_default, at as AppLayout_default, b as estimateSequenceFinishDate, bt as Calendar_default, c as LcmsSequenceTable_default, ct as FormActions_default, d as extractLcmsCommonPrefix, dt as AppPluginSwitcher_default, et as WellPlate_default, f as extractLcmsSampleName, ft as AppAvatarMenu_default, g as InstrumentStatusCard_default, gt as IconButton_default, h as reconstructLcmsPlateCellsFromSequenceItems, ht as ThemeToggle_default, i as TimeRangeInput_default, it as MobileSupportGate_default, j as GroupAssigner_default, k as SampleHierarchyTree_default, l as DEFAULT_LCMS_SEQUENCE_COLUMNS, lt as StepWizard_default, m as lcmsWellIdFromPosition, mt as CollapsibleCard_default, n as FitPanel_default, nt as DoseCalculator_default, o as BatchProgressList_default, ot as AppSidebar_default, p as inferLcmsPlateTypeFromWellIds, pt as PluginIcon_default, q as ScheduleCalendar_default, r as ResourceCard_default, rt as PluginWorkspaceView_default, s as AuditTrail_default, st as FormBuilder_default, tt as ExperimentTimeline_default, u as basenameFromWindowsPath, ut as AppTopBar_default, v as InstrumentAlertLog_default, vt as AlertBox_default, w as sequenceProgressPercent, wt as ColorSlider_default, x as estimateSequenceRemainingSeconds, xt as DropdownButton_default, y as SequenceProgressBar_default, yt as DataFrame_default, z as Avatar_default } from "./components-CzE7YHWY.js";
|
|
2
2
|
import { t as BaseButton_default } from "./BaseButton-Dgqrze41.js";
|
|
3
3
|
import { r as BaseInput_default, t as BaseSelect_default } from "./BaseSelect-ekgr9fDo.js";
|
|
4
4
|
import { $ as parseTime, A as useConcentrationUnits, B as TagsInput_default, C as controlsToViewIds, D as getTypeDefault, E as getFieldRegistryEntry, F as ATOMIC_WEIGHTS, G as findAvailableSlots, H as addMinutes, I as useChemicalFormula, J as formatTime, K as findNearestTimeSlotIndex, L as DateTimePicker_default, M as SequenceInput_default, N as useSequenceUtils, O as ConcentrationInput_default, P as FormulaInput_default, Q as isTimeInRange, R as FileUploader_default, S as controlsToTopBarSettingsConfig, T as getDefaultControlView, U as compareTime, V as TimePicker_default, W as durationMinutes, X as fromMinutes, Y as formatTimeSlot, Z as generateTimeSlots, _ as controlsToFormSchema, a as defineDoseCalculatorControlProps, at as MultiSelect_default, b as controlsToSettingsSchema, c as defineWellPlateDoseComponentBindings, ct as BaseSlider_default, d as defineControlModel, dt as BaseCheckbox_default, et as rangesOverlap, ft as Tooltip_default, h as controlValuesToComponentProps, i as useControlSchema, it as DatePicker_default, j as MoleculeInput_default, k as UnitInput_default, l as defineWellPlateDoseControlProps, lt as BaseRadioGroup_default, m as controlValuesToComponentBindingsById, n as defineControls, nt as toMinutes, o as defineDoseDesignControlModel, ot as useListSelection, p as controlValuesToComponentBindings, pt as BaseTextarea_default, q as formatDuration, r as getControlDefaults, rt as useTimeUtils, s as defineWellPlateControlProps, st as useSelectionLimit, t as defineControlComponentBindings, tt as snapToSlot, u as useControlWorkspace, ut as BaseToggle_default, v as controlsToSectionFormSchema, w as controlsToViewItems, x as controlsToSidebarPanels, y as controlsToSectionFormSchemas, z as NumberInput_default } from "./useControlSchema-BZNdalmL.js";
|
|
@@ -6,7 +6,7 @@ import { t as useEventListener } from "./useEventListener-CfVkP9Xz.js";
|
|
|
6
6
|
import { o as FormField_default, t as SettingsModal_default } from "./SettingsModal-CJgLadsN.js";
|
|
7
7
|
import { t as BaseModal_default } from "./BaseModal-B9UA8Y_I.js";
|
|
8
8
|
import { a as BasePill_default, i as Skeleton_default, n as ExperimentCodeBadge_default, r as EmptyState_default, t as ExperimentSelectorModal_default } from "./ExperimentSelectorModal-CKV5w9IR.js";
|
|
9
|
-
import { B as APP_EXPERIMENT_KEY, C as useExpansionSet, D as hslToHex, E as hexToHsl, G as normalizeSearchQuery, H as useTheme, I as useWellPlateEditor, J as useSortedItems, K as useTextSearch, L as useDoseCalculator, M as extractSampleOptionsFromDesignData, N as unwrapExperimentDesignData, O as extractSamplesFromDesignData, P as DEFAULT_COLORS, R as DEFAULT_MOBILE_VIEWPORT_QUERY, T as deriveShade, U as useToast, V as useAppExperiment, W as candidateMatchesSearch, _ as useScheduleDrag, a as useReagentSeries, c as useBioTemplatePresetWorkspace, d as getBioTemplateComponentProps, f as toBioTemplateComponentPropsByComponent, g as useExperimentSave, h as useTemplateCollection, i as generateDilutionSeries, j as extractSampleNamesFromDesignData, k as useAutoGroup, l as useBioTemplatePackWorkspace, m as useBioTemplateControls, n as DEFAULT_PRESETS, o as useGroupAssignment, p as useBioTemplateComponents, q as compareSortValues, r as DEFAULT_UNITS, s as useRackEditor, t as useProtocolTemplates, u as useBioTemplateWorkspace, v as useExperimentSamples, w as useSampleGroups, y as useExperimentData, z as useMobileSupportGate } from "./useProtocolTemplates-
|
|
9
|
+
import { B as APP_EXPERIMENT_KEY, C as useExpansionSet, D as hslToHex, E as hexToHsl, G as normalizeSearchQuery, H as useTheme, I as useWellPlateEditor, J as useSortedItems, K as useTextSearch, L as useDoseCalculator, M as extractSampleOptionsFromDesignData, N as unwrapExperimentDesignData, O as extractSamplesFromDesignData, P as DEFAULT_COLORS, R as DEFAULT_MOBILE_VIEWPORT_QUERY, T as deriveShade, U as useToast, V as useAppExperiment, W as candidateMatchesSearch, _ as useScheduleDrag, a as useReagentSeries, c as useBioTemplatePresetWorkspace, d as getBioTemplateComponentProps, f as toBioTemplateComponentPropsByComponent, g as useExperimentSave, h as useTemplateCollection, i as generateDilutionSeries, j as extractSampleNamesFromDesignData, k as useAutoGroup, l as useBioTemplatePackWorkspace, m as useBioTemplateControls, n as DEFAULT_PRESETS, o as useGroupAssignment, p as useBioTemplateComponents, q as compareSortValues, r as DEFAULT_UNITS, s as useRackEditor, t as useProtocolTemplates, u as useBioTemplateWorkspace, v as useExperimentSamples, w as useSampleGroups, y as useExperimentData, z as useMobileSupportGate } from "./useProtocolTemplates-CXP2ZosM.js";
|
|
10
10
|
import { n as colorPalettes, r as useSettingsStore, t as useAuthStore } from "./auth-DZAwEeis.js";
|
|
11
11
|
import { i as usePlatformContext, n as evaluateCondition, r as useForm, t as useFormBuilder } from "./useFormBuilder-DKekvXRs.js";
|
|
12
12
|
import { a as SORT_OPTIONS, c as formatExperimentStatus, i as EXPERIMENT_STATUS_VARIANT_MAP, l as getExperimentStatusVariant, n as EXPERIMENT_STATUS_LABELS, o as datePresetToISO, r as EXPERIMENT_STATUS_OPTIONS, s as formatExperimentDate, t as DATE_PRESET_OPTIONS, u as resolveExperimentCode } from "./experiment-utils-Bfa7CwPU.js";
|
|
@@ -15,7 +15,7 @@ import { i as useApi, n as useDebouncedWatch, r as useRequestSyncState, t as use
|
|
|
15
15
|
import { n as ConfirmDialog_default, t as ExperimentPopover_default } from "./ExperimentPopover-mzmSfAUp.js";
|
|
16
16
|
import { $ as toTimeCourseRows, $t as listBioTemplatePacks, A as createSamplePrepTemplate, At as toCalibrationCurveRows, B as toBioTemplateComponentProps, Bt as validatePlateMapData, C as createFlowCytometryPanelTemplate, Ct as toInstrumentRunScheduleEvents, D as createTimeCourseTemplate, Dt as toFlowPanelRows, E as createProtocolStepsTemplate, Et as toFlowPanelDataFrame, Ft as validateAssayMatrixData, G as toTemplateDataFrame, Gt as validateSampleSheetData, H as toBioTemplateComponentPropsById, Ht as validateQpcrPlateData, I as listBioTemplateComponentBindings, It as validateCalibrationCurveData, J as toDoseLayoutState, Jt as getBioTemplatePresetInfo, K as toWellMapArray, Kt as validateTimeCourseData, L as toBioTemplateComponentBindings, Lt as validateDoseResponseData, M as createPlateMapTemplate, Mt as toAssayMatrixDataFrame, N as bioTemplatePresetControlValuesToOptions, Nt as toAssayMatrixRows, O as createCalibrationCurveTemplate, Ot as toCalibrationCurveColumns, P as getBioTemplateComponentBindings, Pt as toAssayMatrixSampleOptions, Q as toTimeCourseDataFrame, Qt as getBioTemplatePackInfo, R as toBioTemplateComponentBindingsById, Rt as validateFlowCytometryPanelData, S as createInstrumentRunTemplate, St as toInstrumentRunRows, T as createAssayMatrixTemplate, Tt as toFlowPanelColumns, U as toBioTemplateComponentSnippets, Ut as validateReagentListData, Vt as validateProtocolStepsData, W as toBioTemplateComponentUsage, Wt as validateSamplePrepData, X as toWellPlateWells, Xt as searchBioTemplatePresets, Y as toPlateMapEditorState, Yt as listBioTemplatePresets, Z as toTimeCourseColumns, Zt as bioTemplatePacks, _ as createElisaAssayCollection, _t as toProtocolDataFrame, a as getBioTemplateControlDefaults, an as TEMPLATE_COLLECTION_KEY, at as toSamplePrepColumns, b as createQpcrExpressionCollection, bt as toInstrumentRunColumns, c as listBioTemplatePresetControlSchemas, cn as createTemplateEnvelope, ct as toReagentColumns, d as createBioTemplatePresetCollectionFromControls, dn as extractTemplateCollection, dt as toReagentRows, en as searchBioTemplatePacks, et as toTimeCourseSteps, f as createWellPlateScreenCollection, fn as getTemplateData, ft as toQpcrColumns, g as createFlowCytometryAssayCollection, gt as toProtocolColumns, h as createWesternBlotAssayCollection, ht as toQpcrWellPlateWells, i as createBioTemplateControlToolkit, in as searchBioTemplateCatalog, it as toSampleRows, j as createSampleSheetTemplate, jt as toAssayMatrixColumns, k as createDoseResponseTemplate, kt as toCalibrationCurveDataFrame, l as requireBioTemplateControlSchema, ln as ensureTemplateEnvelope, lt as toReagentDataFrame, m as createDefaultBioTemplate, mt as toQpcrRows, n as bioTemplateControlsToSectionFormSchemas, nn as getBioTemplateInfo, nt as toSampleDataFrame, o as getBioTemplateControlSchema, on as assertTemplateEnvelope, ot as toSamplePrepDataFrame, p as createBioTemplatePackCollection, pt as toQpcrDataFrame, q as toDoseConditions, qt as bioTemplatePresets, r as bioTemplateControlsToSidebarPanels, rn as listBioTemplateCatalog, rt as toSampleOptions, s as listBioTemplateControlSchemas, sn as createTemplateCollection, st as toSamplePrepRows, t as bioTemplateControlsToFormSchema, tn as bioTemplateCatalog, tt as toSampleColumns, u as createBioTemplatePresetCollection, un as ensureTemplateFromCollection, ut as toReagentListItems, v as createTargetedMetabolomicsCollection, vt as toProtocolRows, w as createReagentListTemplate, wt as toInstrumentRunSteps, x as createQpcrPlateTemplate, xt as toInstrumentRunDataFrame, y as createLcmsBatchCollection, yt as toProtocolSteps, z as toBioTemplateComponentImports, zt as validateInstrumentRunData } from "./templates-CNbPQNID.js";
|
|
17
17
|
import { MINTSdk } from "./install.js";
|
|
18
|
-
import { A as useCommandHistory, C as parseDelimitedText, D as createPluginResourceClient, E as validateImportFile, F as useAuth, M as useAsync, N as useAsyncBatch, O as useResourceCrud, P as usePasskey, S as detectDelimiter, T as useFileImport, _ as useWellPlateAdapter, a as pluginFormDataFromPayload, b as wellIdToCoordinate, c as usePluginClient, d as resolvePluginBaseUrl, f as runWellPlateValidation, g as createWellPlateWells, h as createRowConditions, i as getPluginPageSelectorItems, j as usePluginConfig, k as useOptimisticMutation, l as usePluginSettings, m as createColumnConditions, n as downloadBlob, o as uploadPluginEndpoint, p as useWellPlateValidation, r as downloadPluginEndpoint, s as useCurrentExperiment, t as createPluginClient, u as buildPluginEndpointUrl, v as coordinateToWellId, w as readFileAsText, x as wellIdsInRectangle, y as useWellPainting } from "./composables-
|
|
18
|
+
import { A as useCommandHistory, C as parseDelimitedText, D as createPluginResourceClient, E as validateImportFile, F as useAuth, M as useAsync, N as useAsyncBatch, O as useResourceCrud, P as usePasskey, S as detectDelimiter, T as useFileImport, _ as useWellPlateAdapter, a as pluginFormDataFromPayload, b as wellIdToCoordinate, c as usePluginClient, d as resolvePluginBaseUrl, f as runWellPlateValidation, g as createWellPlateWells, h as createRowConditions, i as getPluginPageSelectorItems, j as usePluginConfig, k as useOptimisticMutation, l as usePluginSettings, m as createColumnConditions, n as downloadBlob, o as uploadPluginEndpoint, p as useWellPlateValidation, r as downloadPluginEndpoint, s as useCurrentExperiment, t as createPluginClient, u as buildPluginEndpointUrl, v as coordinateToWellId, w as readFileAsText, x as wellIdsInRectangle, y as useWellPainting } from "./composables-BLLXhxKE.js";
|
|
19
19
|
import "./stores/index.js";
|
|
20
20
|
//#region src/utils/rack.ts
|
|
21
21
|
var LCMS_DEFAULT_CONTROL_POSITIONS = {
|
package/dist/install.js
CHANGED
|
@@ -1384,7 +1384,9 @@ function composeGroups(input) {
|
|
|
1384
1384
|
const col = colByIdx.get(idx);
|
|
1385
1385
|
return fieldValues[col.displayName ?? col.name];
|
|
1386
1386
|
}) : [cls.label];
|
|
1387
|
-
const
|
|
1387
|
+
const hasMissingGroupPart = input.missingGroupName && cls.disposition === "group" && keyParts.some((part) => part.trim().length === 0);
|
|
1388
|
+
const useClassPrefix = input.prefixClassLabels !== false && cls.disposition === "group" && cls.kind !== "unknown" && keyParts.length > 0;
|
|
1389
|
+
const groupKey = hasMissingGroupPart ? input.missingGroupName : useClassPrefix ? `${cls.label} / ${keyParts.join(" / ")}` : keyParts.length > 0 ? keyParts.join(" / ") : cls.label;
|
|
1388
1390
|
const bucket = groupMap.get(groupKey);
|
|
1389
1391
|
if (bucket) bucket.samples.push(rowName);
|
|
1390
1392
|
else groupMap.set(groupKey, {
|
|
@@ -1774,6 +1776,7 @@ function parseCSV(text) {
|
|
|
1774
1776
|
}
|
|
1775
1777
|
//#endregion
|
|
1776
1778
|
//#region src/composables/useAutoGroup.ts
|
|
1779
|
+
var STRUCTURED_MISSING_GROUP = "Outlier";
|
|
1777
1780
|
var deprecationWarned = false;
|
|
1778
1781
|
var outlierDeprecationWarned = false;
|
|
1779
1782
|
function warnDeprecated(api) {
|
|
@@ -1827,24 +1830,22 @@ function useAutoGroup() {
|
|
|
1827
1830
|
}
|
|
1828
1831
|
const tokens = csv.rows.map((r) => nonSampleCols.map((col) => r[col] ?? ""));
|
|
1829
1832
|
tokenized.value = tokens;
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
schemas.value = newSchemas;
|
|
1847
|
-
if (detected.length > 0) activeClassKey.value = classKey(detected[0]);
|
|
1833
|
+
classes.value = [{
|
|
1834
|
+
kind: "unknown",
|
|
1835
|
+
label: "Unknown",
|
|
1836
|
+
members: csv.rows.map((_, i) => i),
|
|
1837
|
+
classTagPositions: [],
|
|
1838
|
+
disposition: "group"
|
|
1839
|
+
}];
|
|
1840
|
+
const schema = buildClassSchema(tokens, "unknown", void 0, []);
|
|
1841
|
+
schema.columns = schema.columns.map((c, i) => ({
|
|
1842
|
+
...c,
|
|
1843
|
+
name: nonSampleCols[i] ?? c.name,
|
|
1844
|
+
originalName: nonSampleCols[i]
|
|
1845
|
+
}));
|
|
1846
|
+
schema.groupBy = schema.columns.map((c) => c.index);
|
|
1847
|
+
schemas.value = { unknown: schema };
|
|
1848
|
+
activeClassKey.value = "unknown";
|
|
1848
1849
|
}
|
|
1849
1850
|
function parseInputFromPaste() {
|
|
1850
1851
|
const lines = samples.value;
|
|
@@ -1884,7 +1885,9 @@ function useAutoGroup() {
|
|
|
1884
1885
|
tokenizedSamples: tokenized.value,
|
|
1885
1886
|
sampleNames: pre ? pre.baseNames : samples.value,
|
|
1886
1887
|
schemas: schemas.value,
|
|
1887
|
-
classes: classes.value
|
|
1888
|
+
classes: classes.value,
|
|
1889
|
+
prefixClassLabels: !(csvData.value && (inputMode.value === "csv" || inputMode.value === "experiment")),
|
|
1890
|
+
missingGroupName: csvData.value && (inputMode.value === "csv" || inputMode.value === "experiment") ? STRUCTURED_MISSING_GROUP : void 0
|
|
1888
1891
|
});
|
|
1889
1892
|
if (!pre) return composed;
|
|
1890
1893
|
return {
|
|
@@ -2066,8 +2069,8 @@ function useAutoGroup() {
|
|
|
2066
2069
|
warnDeprecated("renameField");
|
|
2067
2070
|
if (activeClassKey.value) setColumnName(activeClassKey.value, index, name);
|
|
2068
2071
|
}
|
|
2069
|
-
function loadExperimentData(rawData) {
|
|
2070
|
-
const parsed = extractSamplesFromDesignData(rawData);
|
|
2072
|
+
function loadExperimentData(rawData, options = {}) {
|
|
2073
|
+
const parsed = extractSamplesFromDesignData(rawData, options);
|
|
2071
2074
|
if (!parsed) return false;
|
|
2072
2075
|
inputMode.value = "experiment";
|
|
2073
2076
|
csvData.value = parsed;
|
|
@@ -2135,7 +2138,7 @@ function useAutoGroup() {
|
|
|
2135
2138
|
renameField
|
|
2136
2139
|
};
|
|
2137
2140
|
}
|
|
2138
|
-
function extractSamplesFromDesignData(rawData) {
|
|
2141
|
+
function extractSamplesFromDesignData(rawData, options = {}) {
|
|
2139
2142
|
const designData = unwrapExperimentDesignData(rawData);
|
|
2140
2143
|
if (!designData) return null;
|
|
2141
2144
|
const samples = designData.samples;
|
|
@@ -2155,7 +2158,7 @@ function extractSamplesFromDesignData(rawData) {
|
|
|
2155
2158
|
}
|
|
2156
2159
|
}
|
|
2157
2160
|
if (allConditionKeys.length === 0) return null;
|
|
2158
|
-
return {
|
|
2161
|
+
return constrainParsedSamplesToInput({
|
|
2159
2162
|
columns: [
|
|
2160
2163
|
"sample_name",
|
|
2161
2164
|
...allConditionKeys,
|
|
@@ -2173,6 +2176,41 @@ function extractSamplesFromDesignData(rawData) {
|
|
|
2173
2176
|
sampleColumn: "sample_name",
|
|
2174
2177
|
delimiter: ",",
|
|
2175
2178
|
sampleTypeHints
|
|
2179
|
+
}, options.samples);
|
|
2180
|
+
}
|
|
2181
|
+
function constrainParsedSamplesToInput(parsed, samples) {
|
|
2182
|
+
const requested = samples?.map((sample) => sample.trim()).filter((sample) => sample.length > 0);
|
|
2183
|
+
if (!requested || requested.length === 0) return parsed;
|
|
2184
|
+
const rowBySample = /* @__PURE__ */ new Map();
|
|
2185
|
+
parsed.rows.forEach((row, index) => {
|
|
2186
|
+
const sample = row[parsed.sampleColumn];
|
|
2187
|
+
if (sample && !rowBySample.has(sample)) rowBySample.set(sample, {
|
|
2188
|
+
row,
|
|
2189
|
+
hint: parsed.sampleTypeHints[index]
|
|
2190
|
+
});
|
|
2191
|
+
});
|
|
2192
|
+
const metadataColumns = parsed.columns.filter((column) => column !== parsed.sampleColumn && column !== "sample_type");
|
|
2193
|
+
const rows = [];
|
|
2194
|
+
const sampleTypeHints = [];
|
|
2195
|
+
for (const sample of requested) {
|
|
2196
|
+
const match = rowBySample.get(sample);
|
|
2197
|
+
if (match) {
|
|
2198
|
+
rows.push(match.row);
|
|
2199
|
+
sampleTypeHints.push(match.hint);
|
|
2200
|
+
continue;
|
|
2201
|
+
}
|
|
2202
|
+
const outlierRow = {
|
|
2203
|
+
[parsed.sampleColumn]: sample,
|
|
2204
|
+
sample_type: "sample"
|
|
2205
|
+
};
|
|
2206
|
+
for (const column of metadataColumns) outlierRow[column] = "";
|
|
2207
|
+
rows.push(outlierRow);
|
|
2208
|
+
sampleTypeHints.push(void 0);
|
|
2209
|
+
}
|
|
2210
|
+
return {
|
|
2211
|
+
...parsed,
|
|
2212
|
+
rows,
|
|
2213
|
+
sampleTypeHints
|
|
2176
2214
|
};
|
|
2177
2215
|
}
|
|
2178
2216
|
//#endregion
|
|
@@ -4184,4 +4222,4 @@ function useProtocolTemplates() {
|
|
|
4184
4222
|
//#endregion
|
|
4185
4223
|
export { parseCSV as A, APP_EXPERIMENT_KEY as B, useExpansionSet as C, hslToHex as D, hexToHsl as E, classKey as F, normalizeSearchQuery as G, useTheme as H, useWellPlateEditor as I, useSortedItems as J, useTextSearch as K, useDoseCalculator as L, extractSampleOptionsFromDesignData as M, unwrapExperimentDesignData as N, extractSamplesFromDesignData as O, DEFAULT_COLORS as P, DEFAULT_MOBILE_VIEWPORT_QUERY as R, resolveCurrentExperimentId as S, deriveShade as T, useToast as U, useAppExperiment as V, candidateMatchesSearch as W, useScheduleDrag as _, useReagentSeries as a, currentExperimentFromContext as b, useBioTemplatePresetWorkspace as c, getBioTemplateComponentProps as d, toBioTemplateComponentPropsByComponent as f, useExperimentSave as g, useTemplateCollection as h, generateDilutionSeries as i, extractSampleNamesFromDesignData as j, useAutoGroup as k, useBioTemplatePackWorkspace as l, useBioTemplateControls as m, DEFAULT_PRESETS as n, useGroupAssignment as o, useBioTemplateComponents as p, compareSortValues as q, DEFAULT_UNITS as r, useRackEditor as s, useProtocolTemplates as t, useBioTemplateWorkspace as u, useExperimentSamples as v, useSampleGroups as w, getInjectedPlatformContext as x, useExperimentData as y, useMobileSupportGate as z };
|
|
4186
4224
|
|
|
4187
|
-
//# sourceMappingURL=useProtocolTemplates-
|
|
4225
|
+
//# sourceMappingURL=useProtocolTemplates-CXP2ZosM.js.map
|