From b5cc426e7694831bccbc2a2e796b3acd9e412b97 Mon Sep 17 00:00:00 2001 From: jobo322 Date: Fri, 14 Jun 2024 09:35:31 -0500 Subject: [PATCH 1/4] chore: update dep --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0c792fd..506c1ad 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,6 @@ }, "dependencies": { "ml-peak-shape-generator": "^4.1.2", - "ml-spectra-processing": "^14.2.0" + "ml-spectra-processing": "^14.2.2" } } From 78d80413a6f61f4e8aa38858c7baf094adccb543 Mon Sep 17 00:00:00 2001 From: jobo322 Date: Fri, 14 Jun 2024 09:36:34 -0500 Subject: [PATCH 2/4] fix: add negative peaks with intensity bigger than 1e-6 --- src/Spectrum2DGenerator.ts | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/src/Spectrum2DGenerator.ts b/src/Spectrum2DGenerator.ts index 3339a18..0f53452 100644 --- a/src/Spectrum2DGenerator.ts +++ b/src/Spectrum2DGenerator.ts @@ -4,7 +4,7 @@ import type { Shape2DInstance, XYNumber, } from 'ml-peak-shape-generator'; -import { matrixMinMaxZ } from 'ml-spectra-processing'; +import { matrixCreateEmpty, matrixMinMaxZ } from 'ml-spectra-processing'; import type { Data2D } from './types/Data2D'; import type { Peak2D, Peak2DSeries } from './types/Peaks2D'; @@ -27,12 +27,12 @@ const convertWidthToFWHM = (shape: Shape2DClass, width: number | XYNumber) => { export interface OptionsSG2D { /** - * First x value (inclusive). + * First xy value (inclusive). * @default `0` */ from?: number | XYNumber; /** - * Last x value (inclusive). + * Last xy value (inclusive). * @default `100` */ to?: number | XYNumber; @@ -99,7 +99,7 @@ export interface Spectrum2D { maxY: number; minZ: number; maxZ: number; - z: Float64Array[] | number[][]; + z: Float64Array[]; } export class Spectrum2DGenerator { @@ -145,7 +145,10 @@ export class Spectrum2DGenerator { this.data = { x: new Float64Array(nbPoints.x), y: new Float64Array(nbPoints.y), - z: createMatrix(this.nbPoints), + z: matrixCreateEmpty({ + nbRows: this.nbPoints.y, + nbColumns: this.nbPoints.x, + }), }; for (const axis of axis2D) { @@ -289,7 +292,7 @@ export class Spectrum2DGenerator { this.data.x[xIndex] - position.x, this.data.y[yIndex] - position.y, ); - if (value > 1e-6) { + if (Math.abs(value) > 1e-6) { this.data.z[yIndex][xIndex] += value; } } @@ -367,11 +370,3 @@ function assertNumber(value: number, name: string) { throw new TypeError(`${name} option must be a number`); } } - -function createMatrix(nbPoints: XYNumber) { - const zMatrix = new Array(nbPoints.y); - for (let i = 0; i < nbPoints.y; i++) { - zMatrix[i] = new Float64Array(nbPoints.x); - } - return zMatrix; -} From 41b6cce41b4220e0904ee52e58ba83f72279b5a0 Mon Sep 17 00:00:00 2001 From: jobo322 Date: Fri, 14 Jun 2024 09:53:29 -0500 Subject: [PATCH 3/4] chore: add test case --- src/Spectrum2DGenerator.ts | 3 ++- src/__tests__/generateSpectrum2D.test.ts | 27 +++++++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/Spectrum2DGenerator.ts b/src/Spectrum2DGenerator.ts index 0f53452..4f61919 100644 --- a/src/Spectrum2DGenerator.ts +++ b/src/Spectrum2DGenerator.ts @@ -1,3 +1,4 @@ +import { NumberArray } from 'cheminfo-types'; import { getShape2D, Shape2DClass } from 'ml-peak-shape-generator'; import type { Shape2D, @@ -99,7 +100,7 @@ export interface Spectrum2D { maxY: number; minZ: number; maxZ: number; - z: Float64Array[]; + z: NumberArray[]; } export class Spectrum2DGenerator { diff --git a/src/__tests__/generateSpectrum2D.test.ts b/src/__tests__/generateSpectrum2D.test.ts index 7bfd727..2bfc660 100644 --- a/src/__tests__/generateSpectrum2D.test.ts +++ b/src/__tests__/generateSpectrum2D.test.ts @@ -1,4 +1,4 @@ -import { xMaxValue } from 'ml-spectra-processing'; +import { xMaxValue, xMinMaxValues } from 'ml-spectra-processing'; import type { Spectrum2D } from '../Spectrum2DGenerator'; import { generateSpectrum2D } from '../Spectrum2DGenerator'; @@ -66,6 +66,31 @@ describe('generateSpectrum with one peak and small window', () => { checkMax(spectrum, 10); }); + it('should have negative min value', () => { + const spectrum = generateSpectrum2D( + [ + { x: 1, y: 1, z: 0.3, width: 0.01 }, + { x: 1.3, y: 0.8, z: -0.3, width: 0.01 }, + ], + { + generator: { + nbPoints: 101, + from: { x: 0.6, y: 0.6 }, + to: { x: 2, y: 1.5 }, + }, + }, + ); + + let max = Number.MIN_SAFE_INTEGER; + let min = Number.MAX_SAFE_INTEGER; + for (const row of spectrum.z) { + const rowMinMax = xMinMaxValues(row); + if (max < rowMinMax.max) max = rowMinMax.max; + if (min > rowMinMax.min) min = rowMinMax.min; + } + expect(max).toBeCloseTo(0.3, 0); + expect(min).toBeCloseTo(-0.3, 0); + }); it('should work with shape 17/4, peak width 0.2', () => { const spectrum = generateSpectrum2D([[10, 10, 1]], { generator: { From c9bb1e17e4f09a2243d20bdbcce057911564b17b Mon Sep 17 00:00:00 2001 From: jobo322 Date: Fri, 14 Jun 2024 10:05:03 -0500 Subject: [PATCH 4/4] chore: reverse major update of eslint --- package.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 506c1ad..d42e98e 100644 --- a/package.json +++ b/package.json @@ -49,19 +49,19 @@ "@types/d3-random": "^3.0.3", "@types/jest": "^29.5.12", "cheminfo-build": "^1.2.0", - "cheminfo-types": "^1.7.2", + "cheminfo-types": "^1.7.3", "eslint": "^8.57.0", - "eslint-config-cheminfo-typescript": "^12.2.0", + "eslint-config-cheminfo-typescript": "^12.4.0", "jest": "^29.7.0", "jest-matcher-deep-close-to": "^3.0.2", - "ml-savitzky-golay-generalized": "^4.0.1", - "prettier": "^3.2.5", - "rimraf": "^5.0.5", - "ts-jest": "^29.1.2", - "typescript": "^5.4.2" + "ml-savitzky-golay-generalized": "^4.2.0", + "prettier": "^3.3.2", + "rimraf": "^5.0.7", + "ts-jest": "^29.1.4", + "typescript": "^5.4.5" }, "dependencies": { "ml-peak-shape-generator": "^4.1.2", - "ml-spectra-processing": "^14.2.2" + "ml-spectra-processing": "^14.5.0" } }