Skip to content

Commit

Permalink
chore: update dependencies
Browse files Browse the repository at this point in the history
  • Loading branch information
lpatiny committed Apr 15, 2024
1 parent 1fa0b3a commit 5c67b8e
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 48 deletions.
18 changes: 9 additions & 9 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,17 +47,17 @@
},
"homepage": "https://github.com/mljs/savitzky-golay-generalized",
"devDependencies": {
"@types/jest": "^27.4.1",
"@types/jest": "^29.5.12",
"eslint": "^8.9.0",
"eslint-config-cheminfo-typescript": "^10.3.0",
"jest": "^27.5.1",
"prettier": "^2.5.1",
"rimraf": "^3.0.2",
"ts-jest": "^27.1.3",
"typescript": "^4.5.5"
"eslint-config-cheminfo-typescript": "^12.3.0",
"jest": "^29.7.0",
"prettier": "^3.2.5",
"rimraf": "^5.0.5",
"ts-jest": "^29.1.2",
"typescript": "^5.4.5"
},
"dependencies": {
"cheminfo-types": "^1.0.0",
"is-any-array": "^2.0.0"
"cheminfo-types": "^1.7.3",
"is-any-array": "^2.0.1"
}
}
42 changes: 21 additions & 21 deletions src/__tests__/test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ describe('Savitzky Golay Generalized–', () => {
for (let i = 51; i <= 100; i++) {
ys.push(100 - i);
}
let result = sgg(ys, xs, {
const result = sgg(ys, xs, {
windowSize: 9,
derivative: 0,
});
Expand All @@ -27,7 +27,7 @@ describe('Savitzky Golay Generalized–', () => {
for (let i = 51; i <= 100; i++) {
ys.push(100 - i);
}
let result = sgg(ys, 1, {
const result = sgg(ys, 1, {
windowSize: 9,
derivative: 0,
});
Expand All @@ -37,20 +37,20 @@ describe('Savitzky Golay Generalized–', () => {
});

it('Smoothing test', () => {
let options = {
const options = {
windowSize: 15,
derivative: 0,
polynomial: 3,
};

let noiseLevel = 0.01;
let data = new Array(200);
const noiseLevel = 0.01;
const data = new Array(200);
for (let i = 0; i < data.length; i++) {
data[i] =
Math.sin((i * Math.PI * 2) / data.length) +
(Math.random() - 0.5) * noiseLevel;
}
let ans = sgg(data, (Math.PI * 2) / data.length, options);
const ans = sgg(data, (Math.PI * 2) / data.length, options);
for (
let j = Math.round(options.windowSize / 2);
j < ans.length - Math.round(options.windowSize / 2);
Expand All @@ -61,20 +61,20 @@ describe('Savitzky Golay Generalized–', () => {
});

it('First derivative test', () => {
let options = {
const options = {
windowSize: 47,
derivative: 1,
polynomial: 3,
};

let noiseLevel = 0.1;
let data = new Array(200);
const noiseLevel = 0.1;
const data = new Array(200);
for (let i = 0; i < data.length; i++) {
data[i] =
Math.sin((i * Math.PI * 2) / data.length) +
(Math.random() - 0.5) * noiseLevel;
}
let ans = sgg(data, (Math.PI * 2) / data.length, options);
const ans = sgg(data, (Math.PI * 2) / data.length, options);

for (
let j = Math.round(options.windowSize / 2);
Expand All @@ -89,24 +89,24 @@ describe('Savitzky Golay Generalized–', () => {
});

it('First derivative test x as vector', () => {
let options = {
const options = {
windowSize: 47,
derivative: 1,
polynomial: 3,
};

let noiseLevel = 0.1;
let data = new Array(200);
let x = new Array(200);
const noiseLevel = 0.1;
const data = new Array(200);
const x = new Array(200);
for (let i = 0; i < data.length; i++) {
data[i] =
Math.sin((i * Math.PI * 2) / data.length) +
(Math.random() - 0.5) * noiseLevel;
x[i] = (i * Math.PI * 2) / data.length;
}

let ans = sgg(data, (Math.PI * 2) / data.length, options);
let ans2 = sgg(data, x, options);
const ans = sgg(data, (Math.PI * 2) / data.length, options);
const ans2 = sgg(data, x, options);

for (
let j = Math.round(options.windowSize / 2);
Expand All @@ -118,19 +118,19 @@ describe('Savitzky Golay Generalized–', () => {
});

it('Border test', () => {
let options = {
const options = {
windowSize: 9,
derivative: 1,
polynomial: 3,
};

let data = new Array(20);
const data = new Array(20);
for (let i = 0; i < data.length; i++) {
data[i] = Math.pow(i, 3) - 4 * Math.pow(i, 2) + 5 * i;
data[i] = i ** 3 - 4 * i ** 2 + 5 * i;
}
let ans = sgg(data, 1, options);
const ans = sgg(data, 1, options);
for (let j = 0; j < data.length; j++) {
expect(ans[j]).toBeCloseTo(3 * Math.pow(j, 2) - 8 * j + 5, 6);
expect(ans[j]).toBeCloseTo(3 * j ** 2 - 8 * j + 5, 6);
}
});
});
34 changes: 16 additions & 18 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export function sgg(
xs: DoubleArray | number,
options: SGGOptions = {},
): Float64Array {
let { windowSize = 9, derivative = 0, polynomial = 3 } = options;
const { windowSize = 9, derivative = 0, polynomial = 3 } = options;

if (windowSize % 2 === 0 || windowSize < 5 || !Number.isInteger(windowSize)) {
throw new RangeError(
Expand Down Expand Up @@ -60,22 +60,22 @@ export function sgg(
);
}

let half = Math.floor(windowSize / 2);
let np = ys.length;
let ans = new Float64Array(np);
let weights = fullWeights(windowSize, polynomial, derivative);
const half = Math.floor(windowSize / 2);
const np = ys.length;
const ans = new Float64Array(np);
const weights = fullWeights(windowSize, polynomial, derivative);
let hs = 0;
let constantH = true;
if (isAnyArray(xs)) {
constantH = false;
} else {
hs = Math.pow(xs as number, derivative);
hs = xs ** derivative;
}

//For the borders
for (let i = 0; i < half; i++) {
let wg1 = weights[half - i - 1];
let wg2 = weights[half + i + 1];
const wg1 = weights[half - i - 1];
const wg2 = weights[half + i + 1];
let d1 = 0;
let d2 = 0;
for (let l = 0; l < windowSize; l++) {
Expand All @@ -94,7 +94,7 @@ export function sgg(
}

//For the internal points
let wg = weights[half];
const wg = weights[half];
for (let i = windowSize; i <= np; i++) {
let d = 0;
for (let l = 0; l < windowSize; l++) d += wg[l] * ys[l + i - windowSize];
Expand All @@ -120,7 +120,7 @@ function getHs(
count++;
}
}
return Math.pow(hs / count, derivative);
return (hs / count) ** derivative;
}

function gramPoly(i: number, m: number, k: number, s: number): number {
Expand All @@ -131,12 +131,10 @@ function gramPoly(i: number, m: number, k: number, s: number): number {
(i * gramPoly(i, m, k - 1, s) + s * gramPoly(i, m, k - 1, s - 1)) -
(((k - 1) * (2 * m + k)) / (k * (2 * m - k + 1))) *
gramPoly(i, m, k - 2, s);
} else if (k === 0 && s === 0) {
Grampoly = 1;
} else {
if (k === 0 && s === 0) {
Grampoly = 1;
} else {
Grampoly = 0;
}
Grampoly = 0;
}
return Grampoly;
}
Expand Down Expand Up @@ -169,9 +167,9 @@ function weight(i: number, t: number, m: number, n: number, s: number): number {
* @param n Polynomial grade
* @param s Derivative
*/
function fullWeights(m: number, n: number, s: number): Array<Float64Array> {
let weights = new Array(m);
let np = Math.floor(m / 2);
function fullWeights(m: number, n: number, s: number): Float64Array[] {
const weights = new Array(m);
const np = Math.floor(m / 2);
for (let t = -np; t <= np; t++) {
weights[t + np] = new Float64Array(m);
for (let j = -np; j <= np; j++) {
Expand Down

0 comments on commit 5c67b8e

Please sign in to comment.