screening
Version:
Tools for numbering screening plate
37 lines • 1.42 kB
JavaScript
import { generateIconNMRFile } from "./generateIconNMRFile.js";
import { positionToNumber } from "./utils/positionToNumber.js";
/**
* Generate iconNMR text file from requests with plate positions
* @param requests - array of PlateRequest objects
* @param options - options for generating the file
* @returns iconNMR text file
*/
export function generateIconNMRFileFromPlate(requests, options = {}) {
const { plateNumber = 1 } = options;
const holderRequests = [];
for (const request of requests) {
const { position, holder, experiments, ...rest } = request;
const newHolder = holder ?? getHolder(position, plateNumber);
let experimentNumber = getExperimentNumber(position);
const experimentsWithHolder = [];
for (const experiment of experiments) {
experimentsWithHolder.push({
experimentNumber: experimentNumber++,
...experiment,
});
}
holderRequests.push({
holder: newHolder,
experiments: experimentsWithHolder,
...rest,
});
}
return generateIconNMRFile(holderRequests, options);
}
function getHolder(position, plateNumber) {
return plateNumber * 100 + positionToNumber(position, 12);
}
function getExperimentNumber(position) {
return positionToNumber(position, 12) * 10;
}
//# sourceMappingURL=generateIconNMRFileFromPlate.js.map