import { createAssayMatrixTemplate } from './assayMatrixBuilder' import { createFlowCytometryPanelTemplate } from './flowCytometryPanelBuilder' import { createSampleSheetTemplate } from './sampleSheetBuilder' import { presetSampleRecords } from './sampleNormalizers' import { createTemplateCollection } from './templateEnvelopes' import type { CreateFlowCytometryAssayCollectionOptions, TemplateCollectionEnvelope, } from './types' /** @deprecated Scheduled for removal from the core SDK in MINT 1.4; the biology templates move to a dedicated package or the owning plugins. */ export function createFlowCytometryAssayCollection( options: CreateFlowCytometryAssayCollectionOptions = {} ): TemplateCollectionEnvelope { const sampleRecords = presetSampleRecords(options.samples ?? ['Control', 'Treatment']) const markers = options.markers ?? ['CD3', 'CD4', 'CD8'] const sampleSheet = createSampleSheetTemplate({ samples: sampleRecords }) const flowPanel = createFlowCytometryPanelTemplate({ markers, instrument: options.instrument ?? 'Flow cytometer', includeDefaultControls: options.includeDefaultControls, }) const assayMatrix = createAssayMatrixTemplate({ samples: sampleRecords.map(sample => ({ sampleId: sample.sampleId, name: sample.name, group: sample.group, metadata: sample.metadata ?? {}, })), features: options.features ?? flowPanel.data.markers.map(marker => ({ id: marker.id, name: `${marker.marker}+ cells`, type: 'cell', unit: '%', metadata: { marker: marker.marker, fluorophore: marker.fluorophore }, })), }) return createTemplateCollection( [sampleSheet, flowPanel, assayMatrix], { preset: 'flow-cytometry-assay', ...(options.metadata ?? {}) } ) }