import { compoundIdFromName } from './builderIdUtils' import { normalizeCompound, normalizeControl, } from './calibrationNormalizers' import { createTemplateEnvelope, getTemplateData, } from './templateEnvelopes' import { validateDoseResponseData } from './templateValidators' import type { CreateDoseResponseTemplateOptions, DoseResponseTemplate, DoseResponseTemplateData, PlateMapTemplateData, } 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 createDoseResponseTemplate( options: CreateDoseResponseTemplateOptions ): DoseResponseTemplate { const compounds = Array.isArray(options.compounds) ? options.compounds.map(normalizeCompound) : Object.entries(options.compounds).map(([name, concentrations], index) => normalizeCompound({ id: compoundIdFromName(name, index), name, concentrations, metadata: {}, })) const layout = options.layout ? getTemplateData(options.layout) : undefined const data: DoseResponseTemplateData = { compounds, unit: options.unit, replicates: options.replicates ?? 1, controls: (options.controls ?? []).map(normalizeControl), layout, metadata: options.metadata ?? {}, } validateDoseResponseData(data) return createTemplateEnvelope('dose-response', data, options.metadata ?? {}) }