From 070c78b1a8b45fd46c5c0b188c8cff39e7ffb4bd Mon Sep 17 00:00:00 2001 From: Luc Patiny Date: Sat, 10 Jan 2026 07:19:41 +0100 Subject: [PATCH] feat: update dependencies and improve return type of filterXY --- package.json | 22 +++++++++---------- src/__tests__/filterXY.test.ts | 2 +- src/filterMatrix.ts | 2 +- src/filterXY.ts | 9 +++++--- src/filters/baseline/airPLSBaseline.ts | 4 +++- .../baseline/iterativePolynomialBaseline.ts | 4 +++- .../baseline/rollingAverageBaseline.ts | 4 +++- src/filters/baseline/rollingBallBaseline.ts | 4 +++- src/filters/baseline/rollingMedianBaseline.ts | 4 +++- src/filters/scaling/centerMean.ts | 4 +++- src/filters/scaling/centerMedian.ts | 4 +++- src/filters/scaling/divideBySD.ts | 4 +++- src/filters/scaling/normed.ts | 2 +- src/filters/scaling/paretoNormalization.ts | 4 +++- src/filters/scaling/rescale.ts | 2 +- src/filters/sg/firstDerivative.ts | 2 +- src/filters/sg/savitzkyGolay.ts | 2 +- src/filters/sg/secondDerivative.ts | 2 +- src/filters/sg/thirdDerivative.ts | 2 +- src/filters/x/__tests__/calibrateX.test.ts | 2 +- src/filters/x/calibrateX.ts | 2 +- src/filters/x/ensureGrowing.ts | 4 +++- src/filters/x/equallySpaced.ts | 2 +- src/filters/x/filterX.ts | 2 +- src/filters/x/fromTo.ts | 2 +- src/filters/x/reverseIfNeeded.ts | 4 +++- src/filters/x/setMaxX.ts | 2 +- src/filters/x/setMinX.ts | 2 +- src/filters/x/xFunction.ts | 2 +- src/filters/y/setMaxY.ts | 2 +- src/filters/y/setMinY.ts | 2 +- src/matrixFilters/centerZMean.ts | 2 +- src/matrixFilters/pqn.ts | 2 +- src/matrixFilters/zRescale.ts | 2 +- 34 files changed, 71 insertions(+), 46 deletions(-) diff --git a/package.json b/package.json index ef45cb7..877cabb 100644 --- a/package.json +++ b/package.json @@ -38,22 +38,22 @@ }, "homepage": "https://github.com/mljs/signal-processing#readme", "devDependencies": { - "@vitest/coverage-v8": "^3.2.4", + "@vitest/coverage-v8": "^4.0.16", "@zakodium/tsconfig": "^1.0.2", - "eslint": "^9.35.0", - "eslint-config-cheminfo-typescript": "^20.0.0", + "eslint": "^9.39.2", + "eslint-config-cheminfo-typescript": "^21.0.1", "jest-matcher-deep-close-to": "^3.0.2", - "prettier": "^3.6.2", - "rimraf": "^6.0.1", - "typescript": "^5.9.2", - "typescript-json-schema": "^0.65.1", - "vitest": "^3.2.4" + "prettier": "^3.7.4", + "rimraf": "^6.1.2", + "typescript": "^5.9.3", + "typescript-json-schema": "^0.67.1", + "vitest": "^4.0.16" }, "dependencies": { "baselines": "^1.1.9", - "cheminfo-types": "^1.8.1", - "ml-gsd": "^13.0.1", + "cheminfo-types": "^1.10.0", + "ml-gsd": "^13.1.1", "ml-savitzky-golay-generalized": "^4.2.0", - "ml-spectra-processing": "^14.17.1" + "ml-spectra-processing": "^14.19.0" } } diff --git a/src/__tests__/filterXY.test.ts b/src/__tests__/filterXY.test.ts index cadc09d..b69b600 100644 --- a/src/__tests__/filterXY.test.ts +++ b/src/__tests__/filterXY.test.ts @@ -74,5 +74,5 @@ test('unknown filter', () => { y: Float64Array.from([1, 2, 3, 4, 1]), }; - expect(() => filterXY(data, filters)).toThrow('Unknown filter: abc'); + expect(() => filterXY(data, filters)).toThrowError('Unknown filter: abc'); }); diff --git a/src/filterMatrix.ts b/src/filterMatrix.ts index ccd9127..592b975 100644 --- a/src/filterMatrix.ts +++ b/src/filterMatrix.ts @@ -1,4 +1,4 @@ -import type { DoubleMatrix } from 'ml-spectra-processing'; +import type { DoubleMatrix } from 'cheminfo-types'; import type { FilterMatrixType } from './FilterMatrixType.ts'; diff --git a/src/filterXY.ts b/src/filterXY.ts index 5469ade..4627565 100644 --- a/src/filterXY.ts +++ b/src/filterXY.ts @@ -1,4 +1,4 @@ -import type { DataXY } from 'cheminfo-types'; +import type { DataXY, DoubleArray } from 'cheminfo-types'; import { xEnsureFloat64, xyGrowingX } from 'ml-spectra-processing'; import type { FilterXYType } from './FilterXYType.ts'; @@ -8,9 +8,12 @@ import * as Filters from './filters/filters.ts'; * Apply filters on {x:[], y:[]} * @param data * @param filters - * @returns A very important number + * @returns */ -export function filterXY(data: DataXY, filters: FilterXYType[]) { +export function filterXY( + data: DataXY, + filters: FilterXYType[], +): { logs: Array<{ name: string; time: number }>; data: DataXY } { let result = { data: xyGrowingX({ x: xEnsureFloat64(data.x), y: xEnsureFloat64(data.y) }), }; diff --git a/src/filters/baseline/airPLSBaseline.ts b/src/filters/baseline/airPLSBaseline.ts index 65f3c8b..71f8eb5 100644 --- a/src/filters/baseline/airPLSBaseline.ts +++ b/src/filters/baseline/airPLSBaseline.ts @@ -9,7 +9,9 @@ export interface AirPLSBaselineFilter { /** * @param data */ -export function airPLSBaseline(data: DataXY) { +export function airPLSBaseline(data: DataXY): { + data: DataXY; +} { data.y = baselineFct(data.y).correctedSpectrum; return { data }; } diff --git a/src/filters/baseline/iterativePolynomialBaseline.ts b/src/filters/baseline/iterativePolynomialBaseline.ts index f0d10bc..6a27ff8 100644 --- a/src/filters/baseline/iterativePolynomialBaseline.ts +++ b/src/filters/baseline/iterativePolynomialBaseline.ts @@ -9,7 +9,9 @@ export interface IterativePolynomialBaselineFilter { /** * @param data */ -export function iterativePolynomialBaseline(data: DataXY) { +export function iterativePolynomialBaseline(data: DataXY): { + data: DataXY; +} { data.y = baselineFct(data.y).correctedSpectrum; return { data }; } diff --git a/src/filters/baseline/rollingAverageBaseline.ts b/src/filters/baseline/rollingAverageBaseline.ts index ba7b8f1..b4f0dd8 100644 --- a/src/filters/baseline/rollingAverageBaseline.ts +++ b/src/filters/baseline/rollingAverageBaseline.ts @@ -9,7 +9,9 @@ export interface RollingAverageBaselineFilter { /** * @param data */ -export function rollingAverageBaseline(data: DataXY) { +export function rollingAverageBaseline(data: DataXY): { + data: DataXY; +} { data.y = baselineFct(data.y).correctedSpectrum; return { data }; } diff --git a/src/filters/baseline/rollingBallBaseline.ts b/src/filters/baseline/rollingBallBaseline.ts index 9f8de17..9758df9 100644 --- a/src/filters/baseline/rollingBallBaseline.ts +++ b/src/filters/baseline/rollingBallBaseline.ts @@ -9,7 +9,9 @@ export interface RollingBallBaselineFilter { /** * @param data */ -export function rollingBallBaseline(data: DataXY) { +export function rollingBallBaseline(data: DataXY): { + data: DataXY; +} { data.y = baselineFct(data.y).correctedSpectrum; return { data }; } diff --git a/src/filters/baseline/rollingMedianBaseline.ts b/src/filters/baseline/rollingMedianBaseline.ts index 8cb8c03..3ca327a 100644 --- a/src/filters/baseline/rollingMedianBaseline.ts +++ b/src/filters/baseline/rollingMedianBaseline.ts @@ -9,7 +9,9 @@ export interface RollingMedianBaselineFilter { /** * @param data */ -export function rollingMedianBaseline(data: DataXY) { +export function rollingMedianBaseline(data: DataXY): { + data: DataXY; +} { data.y = baselineFct(data.y).correctedSpectrum; return { data }; } diff --git a/src/filters/scaling/centerMean.ts b/src/filters/scaling/centerMean.ts index 4d705ad..02d3c50 100644 --- a/src/filters/scaling/centerMean.ts +++ b/src/filters/scaling/centerMean.ts @@ -9,7 +9,9 @@ export interface CenterMeanFilter { * Center the mean * @param data */ -export function centerMean(data: DataXY) { +export function centerMean(data: DataXY): { + data: DataXY; +} { const { y } = data; const mean = xMean(y); for (let i = 0; i < y.length; i++) { diff --git a/src/filters/scaling/centerMedian.ts b/src/filters/scaling/centerMedian.ts index a2a29e6..f84cb35 100644 --- a/src/filters/scaling/centerMedian.ts +++ b/src/filters/scaling/centerMedian.ts @@ -9,7 +9,9 @@ export interface CenterMedianFilter { * Center the median * @param data */ -export function centerMedian(data: DataXY) { +export function centerMedian(data: DataXY): { + data: DataXY; +} { const { y } = data; const median = xMedian(y); for (let i = 0; i < y.length; i++) { diff --git a/src/filters/scaling/divideBySD.ts b/src/filters/scaling/divideBySD.ts index a866be2..b0244ca 100644 --- a/src/filters/scaling/divideBySD.ts +++ b/src/filters/scaling/divideBySD.ts @@ -9,7 +9,9 @@ export interface DivideBySDFilter { * Center the mean * @param data */ -export function divideBySD(data: DataXY) { +export function divideBySD(data: DataXY): { + data: DataXY; +} { const { y } = data; const sd = xStandardDeviation(y); for (let i = 0; i < y.length; i++) { diff --git a/src/filters/scaling/normed.ts b/src/filters/scaling/normed.ts index e1d9325..54d1bbf 100644 --- a/src/filters/scaling/normed.ts +++ b/src/filters/scaling/normed.ts @@ -19,7 +19,7 @@ export type NormedOptions = Omit< export function normed( data: DataXY, options: NormedOptions = {}, -) { +): { data: DataXY } { xNormed(data.y, { ...options, output: data.y }); return { data }; } diff --git a/src/filters/scaling/paretoNormalization.ts b/src/filters/scaling/paretoNormalization.ts index c44fb22..aeb7868 100644 --- a/src/filters/scaling/paretoNormalization.ts +++ b/src/filters/scaling/paretoNormalization.ts @@ -9,7 +9,9 @@ export interface ParetoNormalizationFilter { * Filter that allows to * @param data */ -export function paretoNormalization(data: DataXY) { +export function paretoNormalization(data: DataXY): { + data: DataXY; +} { return { data: { x: data.x, diff --git a/src/filters/scaling/rescale.ts b/src/filters/scaling/rescale.ts index 550f49f..a12ba62 100644 --- a/src/filters/scaling/rescale.ts +++ b/src/filters/scaling/rescale.ts @@ -19,7 +19,7 @@ export type RescaleOptions = Omit< export function rescale( data: DataXY, options: RescaleOptions = {}, -) { +): { data: DataXY } { xRescale(data.y, { ...options, output: data.y }); return { data }; } diff --git a/src/filters/sg/firstDerivative.ts b/src/filters/sg/firstDerivative.ts index 8bf2d8e..62f2009 100644 --- a/src/filters/sg/firstDerivative.ts +++ b/src/filters/sg/firstDerivative.ts @@ -17,7 +17,7 @@ export type FirstDerivativeOptions = Omit; export function firstDerivative( data: DataXY, options: FirstDerivativeOptions = {}, -) { +): { data: DataXY } { const { x, y } = data; return { data: { x, y: sgg(y, x, { ...options, derivative: 1 }) } }; } diff --git a/src/filters/sg/savitzkyGolay.ts b/src/filters/sg/savitzkyGolay.ts index 62db39c..77c8d54 100644 --- a/src/filters/sg/savitzkyGolay.ts +++ b/src/filters/sg/savitzkyGolay.ts @@ -17,7 +17,7 @@ export type SavitzkyGolayOptions = SGGOptions; export function savitzkyGolay( data: DataXY, options: SavitzkyGolayOptions = {}, -) { +): { data: DataXY } { const { x, y } = data; return { data: { x, y: sgg(y, x, options) } }; } diff --git a/src/filters/sg/secondDerivative.ts b/src/filters/sg/secondDerivative.ts index 96a810c..2098867 100644 --- a/src/filters/sg/secondDerivative.ts +++ b/src/filters/sg/secondDerivative.ts @@ -17,7 +17,7 @@ export type SecondDerivativeOptions = Omit; export function secondDerivative( data: DataXY, options: SecondDerivativeOptions = {}, -) { +): { data: DataXY } { const { x, y } = data; return { data: { x, y: sgg(y, x, { ...options, derivative: 2 }) } }; } diff --git a/src/filters/sg/thirdDerivative.ts b/src/filters/sg/thirdDerivative.ts index efcfcf2..f0ec4cb 100644 --- a/src/filters/sg/thirdDerivative.ts +++ b/src/filters/sg/thirdDerivative.ts @@ -17,7 +17,7 @@ export type ThirdDerivativeOptions = Omit; export function thirdDerivative( data: DataXY, options: ThirdDerivativeOptions = {}, -) { +): { data: DataXY } { const { x, y } = data; return { data: { x, y: sgg(y, x, { ...options, derivative: 3 }) } }; } diff --git a/src/filters/x/__tests__/calibrateX.test.ts b/src/filters/x/__tests__/calibrateX.test.ts index 0659f99..94a0457 100644 --- a/src/filters/x/__tests__/calibrateX.test.ts +++ b/src/filters/x/__tests__/calibrateX.test.ts @@ -23,7 +23,7 @@ describe('calibrateX', () => { y: Float64Array.from([1, 1, 5, 1]), }; - expect(() => calibrateX(data, { from: 1, to: 10 })).toThrow( + expect(() => calibrateX(data, { from: 1, to: 10 })).toThrowError( 'Window size is higher than the data lengt', ); }); diff --git a/src/filters/x/calibrateX.ts b/src/filters/x/calibrateX.ts index 93bf27c..f276440 100644 --- a/src/filters/x/calibrateX.ts +++ b/src/filters/x/calibrateX.ts @@ -43,7 +43,7 @@ export interface CalibrateOptions { export function calibrateX( data: DataXY, options: CalibrateOptions = {}, -) { +): { data: DataXY } { const { targetX = 0, nbPeaks = 1, diff --git a/src/filters/x/ensureGrowing.ts b/src/filters/x/ensureGrowing.ts index 537d391..8e6e388 100644 --- a/src/filters/x/ensureGrowing.ts +++ b/src/filters/x/ensureGrowing.ts @@ -10,6 +10,8 @@ export interface EnsureGrowingFilter { * http://www-groups.mcs.st-andrews.ac.uk/~john/analysis/Lectures/L8.html * @param data */ -export function ensureGrowing(data: DataXY) { +export function ensureGrowing(data: DataXY): { + data: DataXY; +} { return { data: xyEnsureGrowingX(data) }; } diff --git a/src/filters/x/equallySpaced.ts b/src/filters/x/equallySpaced.ts index 59beda9..70d18f4 100644 --- a/src/filters/x/equallySpaced.ts +++ b/src/filters/x/equallySpaced.ts @@ -42,6 +42,6 @@ export interface EquallySpacedOptions { export function equallySpaced( data: DataXY, options: EquallySpacedOptions = {}, -) { +): { data: DataXY } { return { data: xyEquallySpaced(data, options) }; } diff --git a/src/filters/x/filterX.ts b/src/filters/x/filterX.ts index c07c2d0..2eb49e3 100644 --- a/src/filters/x/filterX.ts +++ b/src/filters/x/filterX.ts @@ -37,7 +37,7 @@ export interface FilterXOptions { export function filterX( data: DataXY, options: FilterXOptions = {}, -) { +): { data: DataXY } { return { data: xyFilterX(data, options), }; diff --git a/src/filters/x/fromTo.ts b/src/filters/x/fromTo.ts index 724e651..cf80847 100644 --- a/src/filters/x/fromTo.ts +++ b/src/filters/x/fromTo.ts @@ -16,7 +16,7 @@ export type FromToOptions = Parameters[1]; export function fromTo( data: DataXY, options: FromToOptions = {}, -) { +): { data: DataXY } { const { fromIndex, toIndex } = xGetFromToIndex(data.x, options); return { data: { diff --git a/src/filters/x/reverseIfNeeded.ts b/src/filters/x/reverseIfNeeded.ts index d7b20a8..6c24e5a 100644 --- a/src/filters/x/reverseIfNeeded.ts +++ b/src/filters/x/reverseIfNeeded.ts @@ -10,6 +10,8 @@ export interface ReverseIfNeededFilter { * http://www-groups.mcs.st-andrews.ac.uk/~john/analysis/Lectures/L8.html * @param data */ -export function reverseIfNeeded(data: DataXY) { +export function reverseIfNeeded(data: DataXY): { + data: DataXY; +} { return { data: xyGrowingX(data) }; } diff --git a/src/filters/x/setMaxX.ts b/src/filters/x/setMaxX.ts index 31d91d3..05fa907 100644 --- a/src/filters/x/setMaxX.ts +++ b/src/filters/x/setMaxX.ts @@ -20,7 +20,7 @@ export interface SetMaxXOptions { export function setMaxX( data: DataXY, options: SetMaxXOptions = {}, -) { +): { data: DataXY } { const { max = 1 } = options; const existingMax = xMaxValue(data.x); if (existingMax === max) { diff --git a/src/filters/x/setMinX.ts b/src/filters/x/setMinX.ts index c3f3b41..9a8cb81 100644 --- a/src/filters/x/setMinX.ts +++ b/src/filters/x/setMinX.ts @@ -20,7 +20,7 @@ export interface SetMinXOptions { export function setMinX( data: DataXY, options: SetMinXOptions = {}, -) { +): { data: DataXY } { const { min = 0 } = options; const existingMin = xMinValue(data.x); if (existingMin === min) { diff --git a/src/filters/x/xFunction.ts b/src/filters/x/xFunction.ts index a451cb1..0057500 100644 --- a/src/filters/x/xFunction.ts +++ b/src/filters/x/xFunction.ts @@ -23,7 +23,7 @@ export interface XFunctionOptions { export function xFunction( data: DataXY, options: XFunctionOptions = {}, -) { +): { data: DataXY } { return { data: { x: xApplyFunctionStr(data.x, { diff --git a/src/filters/y/setMaxY.ts b/src/filters/y/setMaxY.ts index 3356161..f6f9ee2 100644 --- a/src/filters/y/setMaxY.ts +++ b/src/filters/y/setMaxY.ts @@ -20,7 +20,7 @@ export interface SetMaxYOptions { export function setMaxY( data: DataXY, options: SetMaxYOptions = {}, -) { +): { data: DataXY } { const { max = 1 } = options; const existingMax = xMaxValue(data.y); if (existingMax === max) { diff --git a/src/filters/y/setMinY.ts b/src/filters/y/setMinY.ts index 7d25454..30a36b4 100644 --- a/src/filters/y/setMinY.ts +++ b/src/filters/y/setMinY.ts @@ -20,7 +20,7 @@ export interface SetMinYOptions { export function setMinY( data: DataXY, options: SetMinYOptions = {}, -) { +): { data: DataXY } { const { min = 0 } = options; const existingMin = xMinValue(data.y); if (existingMin === min) { diff --git a/src/matrixFilters/centerZMean.ts b/src/matrixFilters/centerZMean.ts index 514b4a1..f8902b3 100644 --- a/src/matrixFilters/centerZMean.ts +++ b/src/matrixFilters/centerZMean.ts @@ -1,4 +1,4 @@ -import type { DoubleMatrix } from 'ml-spectra-processing'; +import type { DoubleMatrix } from 'cheminfo-types'; import { matrixCenterZMean } from 'ml-spectra-processing'; export interface MatrixCenterZMeanFilter { diff --git a/src/matrixFilters/pqn.ts b/src/matrixFilters/pqn.ts index 30bd331..1532b33 100644 --- a/src/matrixFilters/pqn.ts +++ b/src/matrixFilters/pqn.ts @@ -1,4 +1,4 @@ -import type { DoubleMatrix } from 'ml-spectra-processing'; +import type { DoubleMatrix } from 'cheminfo-types'; import { matrixPQN } from 'ml-spectra-processing'; export interface PQNFilter { diff --git a/src/matrixFilters/zRescale.ts b/src/matrixFilters/zRescale.ts index 6c294c7..142bd57 100644 --- a/src/matrixFilters/zRescale.ts +++ b/src/matrixFilters/zRescale.ts @@ -1,4 +1,4 @@ -import type { DoubleMatrix } from 'ml-spectra-processing'; +import type { DoubleMatrix } from 'cheminfo-types'; import { matrixZRescale } from 'ml-spectra-processing'; export interface MatrixZRescaleFilter {