UNPKG

screening

Version:

Tools for numbering screening plate

66 lines (63 loc) 1.96 kB
import type { HolderRequest } from './RequestsTypes.ts'; export interface GenerateIconNMRFileOptions { /** * End of line character * @default '\r\n' */ eol?: string; /** * Flag specifying if existing experiments should be deleted * @default false */ deleteExistingHolder?: boolean; /** * Submit automatically * @default false */ autoSubmit?: boolean; } /** * Generate iconNMR text file from requests * @param requests - array of PlateRequest objects * @param options - options for generating the file * @returns iconNMR text file */ export function generateIconNMRFile( requests: HolderRequest[], options: GenerateIconNMRFileOptions = {}, ): string { const { eol = '\r\n', deleteExistingHolder = false, autoSubmit = false, } = options; const textFile = []; for (const request of requests) { let experimentNumberCounter = 1; const { holder } = request; if (deleteExistingHolder) { textFile.push(`USER ${request.user}`, `HOLDER ${holder}`, 'DELETE'); // this is required to delete already existing entries } textFile.push(`USER ${request.user}`, `HOLDER ${holder}`); if (!autoSubmit) textFile.push('NO_SUBMIT'); textFile.push(`NAME ${request.name}`, `TITLE ${request.title}`); for (const experiment of request.experiments) { let experimentNumber = experiment.experimentNumber || experimentNumberCounter++; textFile.push( `EXPNO ${experimentNumber++}`, `SOLVENT ${experiment.solvent}`, ); if (experiment.parameters && experiment.parameters.length > 0) { const parameters = []; for (const parameter of experiment.parameters) { parameters.push(parameter.label, parameter.value); } textFile.push(`PARAMETERS ${parameters.join(',')}`); } textFile.push(`EXPERIMENT ${experiment.experiment}`); } textFile.push(''); } return textFile.join(eol); }