UNPKG

ml-spectra-fitting

Version:

Fit spectra using gaussian or lorentzian

43 lines (38 loc) 1.11 kB
import { levenbergMarquardt } from 'ml-levenberg-marquardt'; import type { OptimizationOptions } from '../index.ts'; import { directOptimization } from './wrappers/directOptimization.ts'; /** Algorithm to select the method. * @param optimizationOptions - Optimization options * @returns - The algorithm and optimization options */ export function selectMethod(optimizationOptions: OptimizationOptions = {}) { const { kind = 'lm', options } = optimizationOptions; switch (kind) { case 'lm': case 'levenbergMarquardt': return { algorithm: levenbergMarquardt, optimizationOptions: { damping: 1.5, maxIterations: 100, errorTolerance: 1e-8, ...options, }, }; case 'direct': { return { algorithm: directOptimization, optimizationOptions: { iterations: 20, epsilon: 1e-4, tolerance: 1e-16, tolerance2: 1e-12, initialState: {}, ...options, }, }; } default: throw new Error(`Unknown fitting algorithm`); } }