nmr-processing 9.2.0 → 9.3.0-pre.1669145798
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/lib/apodization/shapes/WindowFunctions.d.ts +1 -1
- package/lib/assignment/get1HAssignments.d.ts +2 -2
- package/lib/assignment/getAssignments.d.ts +1 -1
- package/lib/assignment/nmrAssigment.d.ts +3 -3
- package/lib/assignment/utils/createMapPossibleAssignments.d.ts +1 -1
- package/lib/assignment/utils/getAssignment/buildAssignments.d.ts +3 -3
- package/lib/assignment/utils/getAssignment/formatData.d.ts +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/peaks/peaksFilterImpurities.d.ts +1 -1
- package/lib/peaks/peaksToRanges.d.ts +1 -1
- package/lib/peaks/peaksToRanges.js +20 -19
- package/lib/peaks/peaksToRanges.js.map +1 -1
- package/lib/peaks/util/convertWidth.d.ts +1 -1
- package/lib/peaks/util/convertWidthToHz.d.ts +1 -1
- package/lib/prediction/dataStructure.d.ts +1 -1
- package/lib/prediction/predictCarbon.d.ts +1 -1
- package/lib/prediction/predictProton.d.ts +1 -1
- package/lib/prediction/utils/getFilteredIDiaIDs.d.ts +1 -1
- package/lib/prediction/utils/predict2D.d.ts +1 -1
- package/lib/signals/optimization/getInternalSignals.d.ts +3 -3
- package/lib/signals/optimization/getSumOfShapes.d.ts +1 -1
- package/lib/signals/optimizeSignals.d.ts +1 -1
- package/lib/signals/signalsJoin.d.ts +3 -3
- package/lib/signals/signalsToFID.d.ts +42 -0
- package/lib/signals/signalsToFID.js +62 -0
- package/lib/signals/signalsToFID.js.map +1 -0
- package/lib/signals/signalsToRanges.d.ts +1 -1
- package/lib/signals/utils/jAnalyzer.d.ts +2 -2
- package/lib/utilities/MakeMandatory.d.ts +1 -1
- package/lib/utilities/getFrequency.d.ts +1 -1
- package/lib/utilities/hasProperty.d.ts +1 -1
- package/lib/xy/xyAutoPeaksPicking.d.ts +1 -1
- package/lib/xy/xyAutoPeaksPicking.js +4 -1
- package/lib/xy/xyAutoPeaksPicking.js.map +1 -1
- package/lib/xyz/xyzAutoZonesPicking.d.ts +2 -2
- package/lib-esm/index.js +1 -0
- package/lib-esm/index.js.map +1 -1
- package/lib-esm/peaks/peaksToRanges.js +20 -19
- package/lib-esm/peaks/peaksToRanges.js.map +1 -1
- package/lib-esm/signals/signalsToFID.js +58 -0
- package/lib-esm/signals/signalsToFID.js.map +1 -0
- package/lib-esm/xy/xyAutoPeaksPicking.js +4 -1
- package/lib-esm/xy/xyAutoPeaksPicking.js.map +1 -1
- package/package.json +11 -11
- package/src/index.ts +1 -0
- package/src/peaks/peaksToRanges.ts +23 -19
- package/src/signals/signalsToFID.ts +113 -0
- package/src/utilities/hasProperty.ts +1 -1
- package/src/xy/xyAutoPeaksPicking.ts +5 -1
package/README.md
CHANGED
|
@@ -4,8 +4,8 @@ import { PredictProtonOptions } from '../prediction/predictProton';
|
|
|
4
4
|
import type { NMRSignal1D } from '../signals/NMRSignal1D';
|
|
5
5
|
import { MakeMandatory } from '../utilities/MakeMandatory';
|
|
6
6
|
import { RestrictionByCS1D } from './utils/buildAssignments';
|
|
7
|
-
export
|
|
8
|
-
export
|
|
7
|
+
export type NMRSignal1DWithAtomsAndDiaIDs = MakeMandatory<NMRSignal1D, 'atoms' | 'diaIDs' | 'nbAtoms'>;
|
|
8
|
+
export type NMRRangeWithIntegration = MakeMandatory<NMRRange, 'integration'>;
|
|
9
9
|
export interface Get1HAssignmentsOptions {
|
|
10
10
|
restrictionByCS?: Partial<RestrictionByCS1D>;
|
|
11
11
|
/**
|
|
@@ -19,7 +19,7 @@ export interface SpectraData2D {
|
|
|
19
19
|
*/
|
|
20
20
|
info: any;
|
|
21
21
|
}
|
|
22
|
-
export
|
|
22
|
+
export type SpectraData = SpectraData1D | SpectraData2D;
|
|
23
23
|
export interface GetAutoAssignmentInput {
|
|
24
24
|
spectra: SpectraData[];
|
|
25
25
|
/**
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { NMRRange, NMRSignal1D, NMRSignal2D, NMRZone } from '..';
|
|
2
2
|
import { MakeMandatory } from '../utilities/MakeMandatory';
|
|
3
3
|
import type { SpectraData1D, SpectraData2D } from './getAssignments';
|
|
4
|
-
export
|
|
5
|
-
export
|
|
4
|
+
export type NMRSignal1DWithId = MakeMandatory<NMRSignal1D, 'id'>;
|
|
5
|
+
export type NMRSignal2DWithId = MakeMandatory<NMRSignal2D, 'id'>;
|
|
6
6
|
export interface NMRZoneWithIds extends Omit<NMRZone, 'signals' | 'id'> {
|
|
7
7
|
id: string;
|
|
8
8
|
signals: Array<NMRSignal2DWithId>;
|
|
@@ -17,4 +17,4 @@ export interface SpectraData1DWithIds extends Omit<SpectraData1D, 'ranges'> {
|
|
|
17
17
|
export interface SpectraData2DWithIds extends Omit<SpectraData2D, 'zones'> {
|
|
18
18
|
zones: NMRZoneWithIds[];
|
|
19
19
|
}
|
|
20
|
-
export
|
|
20
|
+
export type SpectraDataWithIds = SpectraData1DWithIds | SpectraData2DWithIds;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { MakeMandatory } from '../../utilities/MakeMandatory';
|
|
2
2
|
import type { Targets } from '../get1HAssignments';
|
|
3
3
|
import type { RestrictionByCS1D, Predictions1Dassignments } from './buildAssignments';
|
|
4
|
-
|
|
4
|
+
type RestrictionByCSMandatory = MakeMandatory<RestrictionByCS1D, 'chemicalShiftRestriction' | 'tolerance' | 'useChemicalShiftScore'>;
|
|
5
5
|
interface CreateMapPossibleAssignments {
|
|
6
6
|
predictions: Predictions1Dassignments;
|
|
7
7
|
restrictionByCS: RestrictionByCSMandatory;
|
|
@@ -4,8 +4,8 @@ import { NMRSignal1D, PredictCarbonOptions, PredictProtonOptions } from '../../.
|
|
|
4
4
|
import { MakeMandatory } from '../../../utilities/MakeMandatory';
|
|
5
5
|
import { SpectraDataWithIds } from '../../nmrAssigment';
|
|
6
6
|
import { TargetsByAtomType } from './getTargetsAndCorrelations';
|
|
7
|
-
export
|
|
8
|
-
export
|
|
7
|
+
export type AtomTypes = 'H' | 'C';
|
|
8
|
+
export type CurrentAtoms = Array<AtomTypes>;
|
|
9
9
|
export interface Partial {
|
|
10
10
|
[key: string]: Array<string | null>;
|
|
11
11
|
}
|
|
@@ -41,7 +41,7 @@ export interface BuildAssignmentInput {
|
|
|
41
41
|
};
|
|
42
42
|
targets: TargetsByAtomType;
|
|
43
43
|
}
|
|
44
|
-
|
|
44
|
+
type NMRSignal1DFromPrediction = MakeMandatory<NMRSignal1D, 'nbAtoms' | 'diaIDs' | 'atoms'>;
|
|
45
45
|
export interface Prediction extends NMRSignal1DFromPrediction {
|
|
46
46
|
diaIDIndex: number;
|
|
47
47
|
allHydrogens: number;
|
|
@@ -9,6 +9,6 @@ interface SpectraData2DFormatted extends Omit<SpectraData2DWithIds, 'zones'> {
|
|
|
9
9
|
values: NMRZoneWithIds[];
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
|
-
export
|
|
12
|
+
export type SpectraDataFormatted = SpectraData1DFormatted | SpectraData2DFormatted;
|
|
13
13
|
export declare function formatData(input?: SpectraDataWithIds[]): SpectraDataFormatted[];
|
|
14
14
|
export {};
|
package/lib/index.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ export * from './signals/signalsToRanges';
|
|
|
20
20
|
export * from './signals/signalsToXY';
|
|
21
21
|
export * from './signals/signals2DToZ';
|
|
22
22
|
export * from './signals/optimizeSignals';
|
|
23
|
+
export * from './signals/signalsToFID';
|
|
23
24
|
export * from './utilities/resurrect';
|
|
24
25
|
export * from './utilities/rangeFromSignal';
|
|
25
26
|
export * from './utilities/getFrequency';
|
package/lib/index.js
CHANGED
|
@@ -36,6 +36,7 @@ __exportStar(require("./signals/signalsToRanges"), exports);
|
|
|
36
36
|
__exportStar(require("./signals/signalsToXY"), exports);
|
|
37
37
|
__exportStar(require("./signals/signals2DToZ"), exports);
|
|
38
38
|
__exportStar(require("./signals/optimizeSignals"), exports);
|
|
39
|
+
__exportStar(require("./signals/signalsToFID"), exports);
|
|
39
40
|
__exportStar(require("./utilities/resurrect"), exports);
|
|
40
41
|
__exportStar(require("./utilities/rangeFromSignal"), exports);
|
|
41
42
|
__exportStar(require("./utilities/getFrequency"), exports);
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,yDAAuC;AACvC,+DAA6C;AAE7C,gEAA8C;AAC9C,oDAAkC;AAClC,mDAAiC;AAEjC,6DAA2C;AAC3C,6DAA2C;AAC3C,2DAAyC;AACzC,2DAAyC;AACzC,2DAAyC;AACzC,0DAAwC;AACxC,iEAA+C;AAE/C,gEAA8C;AAC9C,iEAA+C;AAC/C,8DAA4C;AAE5C,uDAAqC;AACrC,sDAAoC;AAEpC,4DAA0C;AAC1C,wDAAsC;AACtC,yDAAuC;AACvC,4DAA0C;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,yDAAuC;AACvC,+DAA6C;AAE7C,gEAA8C;AAC9C,oDAAkC;AAClC,mDAAiC;AAEjC,6DAA2C;AAC3C,6DAA2C;AAC3C,2DAAyC;AACzC,2DAAyC;AACzC,2DAAyC;AACzC,0DAAwC;AACxC,iEAA+C;AAE/C,gEAA8C;AAC9C,iEAA+C;AAC/C,8DAA4C;AAE5C,uDAAqC;AACrC,sDAAoC;AAEpC,4DAA0C;AAC1C,wDAAsC;AACtC,yDAAuC;AACvC,4DAA0C;AAC1C,yDAAuC;AAEvC,wDAAsC;AACtC,8DAA4C;AAC5C,2DAAyC;AAEzC,0DAAwC;AACxC,2DAAyC;AACzC,2DAAyC;AAEzC,4DAA0C;AAC1C,wDAAsC;AAEtC,0DAAwC;AACxC,+DAA6C;AAC7C,+DAA6C;AAE7C,6DAA2C;AAC3C,6DAA2C;AAE3C,4DAA0C"}
|
|
@@ -55,7 +55,7 @@ export interface OptionsDetectSignals {
|
|
|
55
55
|
frequency?: number;
|
|
56
56
|
nucleus?: string;
|
|
57
57
|
}
|
|
58
|
-
|
|
58
|
+
type NMRPeak1DIntern = Omit<NMRPeak1D, 'fwhm' | 'shape'>;
|
|
59
59
|
/**
|
|
60
60
|
* This function clustering peaks and calculate the integration value for each range from the peak list returned from extractPeaks function.
|
|
61
61
|
*/
|
|
@@ -114,17 +114,7 @@ function peaksToRanges(data, peakList, options = {}) {
|
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
// it was a updateIntegrals function.
|
|
117
|
-
|
|
118
|
-
let sumObserved = 0;
|
|
119
|
-
for (const signal of signals) {
|
|
120
|
-
sumObserved += Math.abs(Math.round(signal.integralData.value));
|
|
121
|
-
}
|
|
122
|
-
if (sumObserved !== integrationSum) {
|
|
123
|
-
sumIntegral = integrationSum / sumObserved;
|
|
124
|
-
for (const signal of signals) {
|
|
125
|
-
signal.integralData.value *= sumIntegral;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
117
|
+
updateIntegration(signals, integrationSum);
|
|
128
118
|
}
|
|
129
119
|
signals.sort((a, b) => {
|
|
130
120
|
return b.delta - a.delta;
|
|
@@ -149,7 +139,6 @@ function peaksToRanges(data, peakList, options = {}) {
|
|
|
149
139
|
delta: signal.delta,
|
|
150
140
|
kind: signal.kind || 'signal',
|
|
151
141
|
multiplicity: signal.multiplicity,
|
|
152
|
-
integration: signal.integralData.value,
|
|
153
142
|
};
|
|
154
143
|
if (keepPeaks) {
|
|
155
144
|
signalResult.peaks = signal.peaks.map((peak) => {
|
|
@@ -192,7 +181,6 @@ function detectSignals(data, peakList, options = {}) {
|
|
|
192
181
|
let peaks;
|
|
193
182
|
let signals = [];
|
|
194
183
|
let prevPeak = { x: Number.MIN_SAFE_INTEGER };
|
|
195
|
-
let spectrumIntegral = 0;
|
|
196
184
|
frequencyCluster /= frequency;
|
|
197
185
|
for (const peak of peakList) {
|
|
198
186
|
if (Math.abs(peak.x - prevPeak.x) > frequencyCluster) {
|
|
@@ -238,14 +226,9 @@ function detectSignals(data, peakList, options = {}) {
|
|
|
238
226
|
else {
|
|
239
227
|
integration.value = integralPeaks;
|
|
240
228
|
}
|
|
241
|
-
spectrumIntegral += integration.value;
|
|
242
229
|
}
|
|
243
230
|
if (integrationSum > 0) {
|
|
244
|
-
|
|
245
|
-
for (let signal of signals) {
|
|
246
|
-
let integration = signal.integralData;
|
|
247
|
-
integration.value *= integralFactor;
|
|
248
|
-
}
|
|
231
|
+
updateIntegration(signals, integrationSum);
|
|
249
232
|
}
|
|
250
233
|
return signals;
|
|
251
234
|
}
|
|
@@ -257,4 +240,22 @@ exports.detectSignals = detectSignals;
|
|
|
257
240
|
function computeArea(peak, frequency) {
|
|
258
241
|
return Math.abs(((peak.intensity * peak.width) / frequency) * 1.57); // todo add an option with this value: 1.772453851
|
|
259
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* update the integration Values
|
|
245
|
+
* @param signals
|
|
246
|
+
* @param integrationSum
|
|
247
|
+
*/
|
|
248
|
+
function updateIntegration(signals, integrationSum) {
|
|
249
|
+
let sumIntegral = 0;
|
|
250
|
+
let sumObserved = 0;
|
|
251
|
+
for (const signal of signals) {
|
|
252
|
+
sumObserved += Math.abs(Math.round(signal.integralData.value));
|
|
253
|
+
}
|
|
254
|
+
if (sumObserved !== integrationSum) {
|
|
255
|
+
sumIntegral = integrationSum / sumObserved;
|
|
256
|
+
for (const signal of signals) {
|
|
257
|
+
signal.integralData.value *= sumIntegral;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
260
261
|
//# sourceMappingURL=peaksToRanges.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peaksToRanges.js","sourceRoot":"","sources":["../../src/peaks/peaksToRanges.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"peaksToRanges.js","sourceRoot":"","sources":["../../src/peaks/peaksToRanges.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MakeMandatory } from '../../utilities/MakeMandatory';
|
|
2
2
|
import { NMRPeak1D } from '../NMRPeak1D';
|
|
3
|
-
export
|
|
3
|
+
export type NMRPeak1DWithShape = MakeMandatory<NMRPeak1D, 'shape'>;
|
|
4
4
|
export interface ConvertWidthOptions<T> {
|
|
5
5
|
convertTo: string & {
|
|
6
6
|
_kind?: 'hz' | 'ppm';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { NMRPeak1D } from '../NMRPeak1D';
|
|
2
2
|
import { ConvertWidthOptions } from './convertWidth';
|
|
3
|
-
export
|
|
3
|
+
export type ConvertWidthTo<T> = Omit<ConvertWidthOptions<T>, 'convertTo'>;
|
|
4
4
|
export declare function convertWidthToHz<T extends NMRPeak1D>(peaks: T[], options: ConvertWidthTo<T>): T[];
|
|
@@ -22,7 +22,7 @@ export interface PredictCarbonOptions {
|
|
|
22
22
|
*/
|
|
23
23
|
maxSphereSize?: number;
|
|
24
24
|
}
|
|
25
|
-
export
|
|
25
|
+
export type PredictCarbon = typeof predictCarbon;
|
|
26
26
|
/**
|
|
27
27
|
* Make a query to a hose code based database to predict carbon chemical shift
|
|
28
28
|
* @returns {Promise<object>} - object with molfile, diaIDs, signals, joined signals by diaIDs and ranges.
|
|
@@ -10,5 +10,5 @@ export interface PredictProtonOptions {
|
|
|
10
10
|
*/
|
|
11
11
|
cache?: (molfile: string, result?: string) => void | string | undefined;
|
|
12
12
|
}
|
|
13
|
-
export
|
|
13
|
+
export type PredictProton = typeof predictProton;
|
|
14
14
|
export declare function predictProton(molecule: Molecule, options?: PredictProtonOptions): Promise<Prediction1D>;
|
|
@@ -4,7 +4,7 @@ import type { GroupDiastereotopicAtomIDs } from 'openchemlib-utils';
|
|
|
4
4
|
export interface GroupDiaIDsWithHose extends GroupDiastereotopicAtomIDs {
|
|
5
5
|
hose: string[];
|
|
6
6
|
}
|
|
7
|
-
export
|
|
7
|
+
export type GroupedDiaIDsWithHose = GroupDiaIDsWithHose[];
|
|
8
8
|
export declare function getFilteredIDiaIDs(molecule: Molecule, options: {
|
|
9
9
|
maxSphereSize: number;
|
|
10
10
|
}): {
|
|
@@ -8,7 +8,7 @@ import type { PredictProton, PredictProtonOptions } from '../predictProton';
|
|
|
8
8
|
* Generate the correlation bidimensional nmr peaks based on the number of bonds between a pair of atoms
|
|
9
9
|
* @returns {object} - object with molfile, diaIDs, 2D signals and zones.
|
|
10
10
|
*/
|
|
11
|
-
export
|
|
11
|
+
export type Predictor = PredictCarbon | PredictProton;
|
|
12
12
|
export interface Predictors {
|
|
13
13
|
[key: string]: Predictor | undefined;
|
|
14
14
|
H?: Predictor;
|
|
@@ -14,8 +14,8 @@ export interface InternalSignal {
|
|
|
14
14
|
fromIndexCoupling: number;
|
|
15
15
|
toIndexCoupling: number;
|
|
16
16
|
}
|
|
17
|
-
export
|
|
18
|
-
export
|
|
17
|
+
export type Parameter = 'delta' | 'intensity' | 'fwhm' | 'mu' | 'coupling';
|
|
18
|
+
export type ParametersFromOptions = Record<Parameter, Record<string, number | ((options?: {
|
|
19
19
|
signal?: Signal;
|
|
20
20
|
shape?: Shape1D;
|
|
21
21
|
index?: number;
|
|
@@ -35,7 +35,7 @@ export interface GetInternalSignalsOptions {
|
|
|
35
35
|
shape?: Shape1D;
|
|
36
36
|
parameters?: ParametersFromOptions;
|
|
37
37
|
}
|
|
38
|
-
export
|
|
38
|
+
export type Shape1DWithFWHM = Omit<Shape1D, 'fwhm'> & {
|
|
39
39
|
fwhm: number;
|
|
40
40
|
};
|
|
41
41
|
export declare function getInternalSignals(data: DataXY, signals: Signal[], minMaxY: Record<string, number>, options: GetInternalSignalsOptions): {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { InternalSignal } from './getInternalSignals';
|
|
2
2
|
import { SignalsToPointXYOptions } from './signalsToPointXY';
|
|
3
|
-
export
|
|
3
|
+
export type SumOfShapes = (parameters: number[]) => (x: number) => number;
|
|
4
4
|
export declare function getSumOfShapes(internalSignals: InternalSignal[], options: SignalsToPointXYOptions): (parameters: number[]) => (currentX: number) => number;
|
|
@@ -4,7 +4,7 @@ import { NMRPeak1D } from '../peaks/NMRPeak1D';
|
|
|
4
4
|
import { NMRSignal1D } from './NMRSignal1D';
|
|
5
5
|
import { ParametersFromOptions, Shape1DWithFWHM } from './optimization/getInternalSignals';
|
|
6
6
|
import { SignalsToPointXYOptions } from './optimization/signalsToPointXY';
|
|
7
|
-
|
|
7
|
+
type ParametersFromSignal = Record<string, Record<string, number>>;
|
|
8
8
|
export interface Signal extends NMRSignal1D {
|
|
9
9
|
intensity?: number;
|
|
10
10
|
shape?: Shape1D;
|
|
@@ -9,9 +9,9 @@ export interface SignalsJoinOptions {
|
|
|
9
9
|
*/
|
|
10
10
|
joinCouplings?: SignalJoinCouplingsOptions;
|
|
11
11
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
type JcouplingFromPrediction = MakeMandatory<Jcoupling, 'multiplicity' | 'diaIDs' | 'pathLength'>;
|
|
13
|
+
type Signal1DWidthDiaID = MakeMandatory<NMRSignal1D, 'diaIDs'>;
|
|
14
|
+
type Signal1DWidthJsAndDiaID = Omit<Signal1DWidthDiaID, 'js'> & {
|
|
15
15
|
js: JcouplingFromPrediction[];
|
|
16
16
|
};
|
|
17
17
|
/**
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { NMRSignal1D } from './NMRSignal1D';
|
|
2
|
+
export interface SignalsToFIDOptions {
|
|
3
|
+
/**
|
|
4
|
+
* at the end of the superposition of all component, an exponential apodization will be applied
|
|
5
|
+
* in order to have FID like shape.
|
|
6
|
+
* @default 1
|
|
7
|
+
*/
|
|
8
|
+
lb?: number;
|
|
9
|
+
/**
|
|
10
|
+
* lower limit of the spectrum
|
|
11
|
+
* @default 0
|
|
12
|
+
*/
|
|
13
|
+
from?: number;
|
|
14
|
+
/**
|
|
15
|
+
* upper limit of the spectrum
|
|
16
|
+
* @default 10
|
|
17
|
+
*/
|
|
18
|
+
to?: number;
|
|
19
|
+
/**
|
|
20
|
+
* number of points of the resulting FID
|
|
21
|
+
*/
|
|
22
|
+
nbPoints?: number;
|
|
23
|
+
/**
|
|
24
|
+
* It is the frequency of the carrier (e.g. SFO1 for bruker spectrometers)
|
|
25
|
+
*/
|
|
26
|
+
frequency?: number;
|
|
27
|
+
/**
|
|
28
|
+
* Maximum number of atoms on each cluster that can be considered to be simulated together.
|
|
29
|
+
* It affects the the quality and speed of the simulation.
|
|
30
|
+
*/
|
|
31
|
+
maxClusterSize?: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* it use the chemical shifts and the coupling between them in order to generate a FID.
|
|
35
|
+
* It does not propagate the hamiltonian of the spin system, instead it simulate all the
|
|
36
|
+
* frequencies in the spectrum (including second order) and add all the waves in a real and
|
|
37
|
+
* imaginary parts, that is why the couplings should be assigned in order to generate the spin system.
|
|
38
|
+
*/
|
|
39
|
+
export declare function signalsToFID(signals: NMRSignal1D[], options: SignalsToFIDOptions): {
|
|
40
|
+
re: import("cheminfo-types").DoubleArray;
|
|
41
|
+
im: import("cheminfo-types").DoubleArray;
|
|
42
|
+
};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.signalsToFID = void 0;
|
|
4
|
+
const ml_spectra_processing_1 = require("ml-spectra-processing");
|
|
5
|
+
const apodization_1 = require("../apodization/apodization");
|
|
6
|
+
const signalsToSpinSystem_1 = require("./simulation/signalsToSpinSystem");
|
|
7
|
+
const simulateXYPeaks_1 = require("./simulation/simulateXYPeaks");
|
|
8
|
+
const splitSpinSystem_1 = require("./simulation/splitSpinSystem");
|
|
9
|
+
const twoPi = Math.PI * 2;
|
|
10
|
+
/**
|
|
11
|
+
* it use the chemical shifts and the coupling between them in order to generate a FID.
|
|
12
|
+
* It does not propagate the hamiltonian of the spin system, instead it simulate all the
|
|
13
|
+
* frequencies in the spectrum (including second order) and add all the waves in a real and
|
|
14
|
+
* imaginary parts, that is why the couplings should be assigned in order to generate the spin system.
|
|
15
|
+
*/
|
|
16
|
+
function signalsToFID(signals, options) {
|
|
17
|
+
const { lb = 1, from = 0, to = 10, nbPoints = 1024, frequency = 400, maxClusterSize = 8, } = options;
|
|
18
|
+
let spinSystem = (0, signalsToSpinSystem_1.signalsToSpinSystem)(signals);
|
|
19
|
+
spinSystem.clusters = (0, splitSpinSystem_1.splitSpinSystem)(spinSystem, {
|
|
20
|
+
frequency,
|
|
21
|
+
maxClusterSize,
|
|
22
|
+
});
|
|
23
|
+
const peaks = (0, simulateXYPeaks_1.simulateXYPeaks)(spinSystem, { frequency });
|
|
24
|
+
const re = new Float64Array(nbPoints);
|
|
25
|
+
const im = new Float64Array(nbPoints);
|
|
26
|
+
const sw = Math.abs(to - from);
|
|
27
|
+
const adquisitionTime = nbPoints / (sw * frequency);
|
|
28
|
+
const time = (0, ml_spectra_processing_1.xSequentialFill)({
|
|
29
|
+
size: nbPoints,
|
|
30
|
+
from: 0,
|
|
31
|
+
to: adquisitionTime,
|
|
32
|
+
});
|
|
33
|
+
for (const peak of peaks) {
|
|
34
|
+
const { x, y } = peak;
|
|
35
|
+
const cs = x * frequency * twoPi;
|
|
36
|
+
for (let i = 0; i < nbPoints; i++) {
|
|
37
|
+
re[i] += y * Math.cos(cs * time[i]);
|
|
38
|
+
im[i] += y * Math.sin(cs * time[i]);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const { windowData, ...result } = (0, apodization_1.apodization)({ re, im }, {
|
|
42
|
+
pointsToShift: 0,
|
|
43
|
+
compose: {
|
|
44
|
+
length: nbPoints,
|
|
45
|
+
shapes: [
|
|
46
|
+
{
|
|
47
|
+
start: 0,
|
|
48
|
+
shape: {
|
|
49
|
+
kind: 'exponential',
|
|
50
|
+
options: {
|
|
51
|
+
dw: adquisitionTime / (nbPoints - 1),
|
|
52
|
+
lb,
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
exports.signalsToFID = signalsToFID;
|
|
62
|
+
//# sourceMappingURL=signalsToFID.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signalsToFID.js","sourceRoot":"","sources":["../../src/signals/signalsToFID.ts"],"names":[],"mappings":";;;AAAA,iEAAwD;AAExD,4DAAyD;AAGzD,0EAAuE;AACvE,kEAA+D;AAC/D,kEAA+D;AAkC/D,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAE1B;;;;;GAKG;AACH,SAAgB,YAAY,CAC1B,OAAsB,EACtB,OAA4B;IAE5B,MAAM,EACJ,EAAE,GAAG,CAAC,EACN,IAAI,GAAG,CAAC,EACR,EAAE,GAAG,EAAE,EACP,QAAQ,GAAG,IAAI,EACf,SAAS,GAAG,GAAG,EACf,cAAc,GAAG,CAAC,GACnB,GAAG,OAAO,CAAC;IAEZ,IAAI,UAAU,GAAG,IAAA,yCAAmB,EAAC,OAAO,CAAC,CAAC;IAE9C,UAAU,CAAC,QAAQ,GAAG,IAAA,iCAAe,EAAC,UAAU,EAAE;QAChD,SAAS;QACT,cAAc;KACf,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,IAAA,iCAAe,EAAC,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACzD,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;IAEtC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAC/B,MAAM,eAAe,GAAG,QAAQ,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,IAAA,uCAAe,EAAC;QAC3B,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,CAAC;QACP,EAAE,EAAE,eAAe;KACpB,CAAC,CAAC;IAEH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;QACtB,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;YACjC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACrC;KACF;IAED,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,GAAG,IAAA,yBAAW,EAC3C,EAAE,EAAE,EAAE,EAAE,EAAE,EACV;QACE,aAAa,EAAE,CAAC;QAChB,OAAO,EAAE;YACP,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE;gBACN;oBACE,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE;wBACL,IAAI,EAAE,aAAa;wBACnB,OAAO,EAAE;4BACP,EAAE,EAAE,eAAe,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;4BACpC,EAAE;yBACH;qBACF;iBACF;aACF;SACF;KACF,CACF,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AA/DD,oCA+DC"}
|
|
@@ -13,6 +13,6 @@ interface SignalsToRangesOptions {
|
|
|
13
13
|
*/
|
|
14
14
|
frequency?: number;
|
|
15
15
|
}
|
|
16
|
-
|
|
16
|
+
type RangeFullfiled = MakeMandatory<NMRRange, 'integration' | 'signals' | 'id'>;
|
|
17
17
|
export declare function signalsToRanges(signals: NMRSignal1D[], options?: SignalsToRangesOptions): RangeFullfiled[];
|
|
18
18
|
export {};
|
|
@@ -10,7 +10,7 @@ interface IntergralData {
|
|
|
10
10
|
from: number;
|
|
11
11
|
to: number;
|
|
12
12
|
}
|
|
13
|
-
export
|
|
13
|
+
export type Peak1DIntern = Omit<NMRPeak1D, 'y' | 'shape'> & {
|
|
14
14
|
intensity: number;
|
|
15
15
|
};
|
|
16
16
|
export interface SignalIntern {
|
|
@@ -37,7 +37,7 @@ export interface SignalIntern {
|
|
|
37
37
|
peaks: Peak1DIntern[];
|
|
38
38
|
peaksComp?: Peak1DIntern[];
|
|
39
39
|
}
|
|
40
|
-
|
|
40
|
+
type SignalInternMandatory = MakeMandatory<SignalIntern, 'symRank' | 'mask' | 'peaksComp'>;
|
|
41
41
|
export interface OpitonsCompilePatter {
|
|
42
42
|
jAxisKey?: JAxisKeys;
|
|
43
43
|
}
|
|
@@ -9,7 +9,7 @@ export interface ObjervedNucleusData {
|
|
|
9
9
|
*/
|
|
10
10
|
frequency: number;
|
|
11
11
|
}
|
|
12
|
-
|
|
12
|
+
type Nucleus = Nuclei | (string & Record<never, never>);
|
|
13
13
|
/**
|
|
14
14
|
* calculate the frequency of a nucleus with respect to a reference nucleus
|
|
15
15
|
*/
|
|
@@ -42,5 +42,5 @@ export interface OptionsXYAutoPeaksPicking extends Partial<GetPeakListOptions> {
|
|
|
42
42
|
*/
|
|
43
43
|
frequency: number;
|
|
44
44
|
}
|
|
45
|
-
export
|
|
45
|
+
export type NMRPeak1DWithShapeID = MakeMandatory<NMRPeak1D, 'id' | 'shape'>;
|
|
46
46
|
export declare function xyAutoPeaksPicking(data: DataXY, options: OptionsXYAutoPeaksPicking): NMRPeak1DWithShapeID[];
|
|
@@ -6,7 +6,10 @@ const ml_spectra_processing_1 = require("ml-spectra-processing");
|
|
|
6
6
|
const convertWidthToHz_1 = require("../peaks/util/convertWidthToHz");
|
|
7
7
|
function xyAutoPeaksPicking(data, options) {
|
|
8
8
|
const { from, to, frequency, noiseLevel, thresholdFactor = 3, minMaxRatio = 0.05, broadRatio = 0.00025, useSanPlot = false, smoothY = true, optimize = false, factorLimits = 4, realTopDetection = true, shape = { kind: 'gaussian' }, optimization = { kind: 'lm' }, broadWidth = 0.25, sgOptions = {}, direction = 'positive', } = options;
|
|
9
|
-
|
|
9
|
+
let pointsPerHz = 1 / frequency / (data.x[1] - data.x[0]);
|
|
10
|
+
// we can consider a peak with of 0.5 Hz for the windowSize
|
|
11
|
+
let ws = Math.max(Math.round(pointsPerHz / 2), 5);
|
|
12
|
+
const { windowSize = ws - (ws % 2) + 1, polynomial = 3 } = sgOptions;
|
|
10
13
|
if (data.x.length < windowSize)
|
|
11
14
|
return [];
|
|
12
15
|
if (from !== undefined && to !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xyAutoPeaksPicking.js","sourceRoot":"","sources":["../../src/xy/xyAutoPeaksPicking.ts"],"names":[],"mappings":";;;AACA,mCAUgB;AAEhB,iEAI+B;AAG/B,qEAAkE;AAgElE,SAAgB,kBAAkB,CAChC,IAAY,EACZ,OAAkC;IAElC,MAAM,EACJ,IAAI,EACJ,EAAE,EACF,SAAS,EACT,UAAU,EACV,eAAe,GAAG,CAAC,EACnB,WAAW,GAAG,IAAI,EAClB,UAAU,GAAG,OAAO,EACpB,UAAU,GAAG,KAAK,EAClB,OAAO,GAAG,IAAI,EACd,QAAQ,GAAG,KAAK,EAChB,YAAY,GAAG,CAAC,EAChB,gBAAgB,GAAG,IAAI,EACvB,KAAK,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAC5B,YAAY,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAC7B,UAAU,GAAG,IAAI,EACjB,SAAS,GAAG,EAAE,EACd,SAAS,GAAG,UAAU,GACvB,GAAG,OAAO,CAAC;IAEZ,MAAM,EAAE,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"xyAutoPeaksPicking.js","sourceRoot":"","sources":["../../src/xy/xyAutoPeaksPicking.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,8 +65,8 @@ export interface XYZAutoZonesPickingOptions {
|
|
|
65
65
|
*/
|
|
66
66
|
kernel?: GetKernelOptions;
|
|
67
67
|
}
|
|
68
|
-
export
|
|
69
|
-
export
|
|
68
|
+
export type NMRSignal2DWithID<T extends Peak2D = Peak2D> = MakeMandatory<NMRSignal2D<T>, 'id'>;
|
|
69
|
+
export type NMRZoneWithID = MakeMandatory<NMRZone, 'id'>;
|
|
70
70
|
export declare function xyzAutoZonesPicking(spectraData: Data2D, options: XYZAutoZonesPickingOptions): NMRZoneWithID[];
|
|
71
71
|
/**
|
|
72
72
|
* This function converts a set of 2D-peaks in 2D-signals. Each signal could be composed
|
package/lib-esm/index.js
CHANGED
|
@@ -20,6 +20,7 @@ export * from './signals/signalsToRanges';
|
|
|
20
20
|
export * from './signals/signalsToXY';
|
|
21
21
|
export * from './signals/signals2DToZ';
|
|
22
22
|
export * from './signals/optimizeSignals';
|
|
23
|
+
export * from './signals/signalsToFID';
|
|
23
24
|
export * from './utilities/resurrect';
|
|
24
25
|
export * from './utilities/rangeFromSignal';
|
|
25
26
|
export * from './utilities/getFrequency';
|
package/lib-esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAE/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAE/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AAEvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AAEzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AAEtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAE7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,2BAA2B,CAAC"}
|
|
@@ -108,17 +108,7 @@ export function peaksToRanges(data, peakList, options = {}) {
|
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
110
|
// it was a updateIntegrals function.
|
|
111
|
-
|
|
112
|
-
let sumObserved = 0;
|
|
113
|
-
for (const signal of signals) {
|
|
114
|
-
sumObserved += Math.abs(Math.round(signal.integralData.value));
|
|
115
|
-
}
|
|
116
|
-
if (sumObserved !== integrationSum) {
|
|
117
|
-
sumIntegral = integrationSum / sumObserved;
|
|
118
|
-
for (const signal of signals) {
|
|
119
|
-
signal.integralData.value *= sumIntegral;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
111
|
+
updateIntegration(signals, integrationSum);
|
|
122
112
|
}
|
|
123
113
|
signals.sort((a, b) => {
|
|
124
114
|
return b.delta - a.delta;
|
|
@@ -143,7 +133,6 @@ export function peaksToRanges(data, peakList, options = {}) {
|
|
|
143
133
|
delta: signal.delta,
|
|
144
134
|
kind: signal.kind || 'signal',
|
|
145
135
|
multiplicity: signal.multiplicity,
|
|
146
|
-
integration: signal.integralData.value,
|
|
147
136
|
};
|
|
148
137
|
if (keepPeaks) {
|
|
149
138
|
signalResult.peaks = signal.peaks.map((peak) => {
|
|
@@ -185,7 +174,6 @@ export function detectSignals(data, peakList, options = {}) {
|
|
|
185
174
|
let peaks;
|
|
186
175
|
let signals = [];
|
|
187
176
|
let prevPeak = { x: Number.MIN_SAFE_INTEGER };
|
|
188
|
-
let spectrumIntegral = 0;
|
|
189
177
|
frequencyCluster /= frequency;
|
|
190
178
|
for (const peak of peakList) {
|
|
191
179
|
if (Math.abs(peak.x - prevPeak.x) > frequencyCluster) {
|
|
@@ -231,14 +219,9 @@ export function detectSignals(data, peakList, options = {}) {
|
|
|
231
219
|
else {
|
|
232
220
|
integration.value = integralPeaks;
|
|
233
221
|
}
|
|
234
|
-
spectrumIntegral += integration.value;
|
|
235
222
|
}
|
|
236
223
|
if (integrationSum > 0) {
|
|
237
|
-
|
|
238
|
-
for (let signal of signals) {
|
|
239
|
-
let integration = signal.integralData;
|
|
240
|
-
integration.value *= integralFactor;
|
|
241
|
-
}
|
|
224
|
+
updateIntegration(signals, integrationSum);
|
|
242
225
|
}
|
|
243
226
|
return signals;
|
|
244
227
|
}
|
|
@@ -249,4 +232,22 @@ export function detectSignals(data, peakList, options = {}) {
|
|
|
249
232
|
function computeArea(peak, frequency) {
|
|
250
233
|
return Math.abs(((peak.intensity * peak.width) / frequency) * 1.57); // todo add an option with this value: 1.772453851
|
|
251
234
|
}
|
|
235
|
+
/**
|
|
236
|
+
* update the integration Values
|
|
237
|
+
* @param signals
|
|
238
|
+
* @param integrationSum
|
|
239
|
+
*/
|
|
240
|
+
function updateIntegration(signals, integrationSum) {
|
|
241
|
+
let sumIntegral = 0;
|
|
242
|
+
let sumObserved = 0;
|
|
243
|
+
for (const signal of signals) {
|
|
244
|
+
sumObserved += Math.abs(Math.round(signal.integralData.value));
|
|
245
|
+
}
|
|
246
|
+
if (sumObserved !== integrationSum) {
|
|
247
|
+
sumIntegral = integrationSum / sumObserved;
|
|
248
|
+
for (const signal of signals) {
|
|
249
|
+
signal.integralData.value *= sumIntegral;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
252
253
|
//# sourceMappingURL=peaksToRanges.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peaksToRanges.js","sourceRoot":"","sources":["../../src/peaks/peaksToRanges.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"peaksToRanges.js","sourceRoot":"","sources":["../../src/peaks/peaksToRanges.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { xSequentialFill } from 'ml-spectra-processing';
|
|
2
|
+
import { apodization } from '../apodization/apodization';
|
|
3
|
+
import { signalsToSpinSystem } from './simulation/signalsToSpinSystem';
|
|
4
|
+
import { simulateXYPeaks } from './simulation/simulateXYPeaks';
|
|
5
|
+
import { splitSpinSystem } from './simulation/splitSpinSystem';
|
|
6
|
+
const twoPi = Math.PI * 2;
|
|
7
|
+
/**
|
|
8
|
+
* it use the chemical shifts and the coupling between them in order to generate a FID.
|
|
9
|
+
* It does not propagate the hamiltonian of the spin system, instead it simulate all the
|
|
10
|
+
* frequencies in the spectrum (including second order) and add all the waves in a real and
|
|
11
|
+
* imaginary parts, that is why the couplings should be assigned in order to generate the spin system.
|
|
12
|
+
*/
|
|
13
|
+
export function signalsToFID(signals, options) {
|
|
14
|
+
const { lb = 1, from = 0, to = 10, nbPoints = 1024, frequency = 400, maxClusterSize = 8, } = options;
|
|
15
|
+
let spinSystem = signalsToSpinSystem(signals);
|
|
16
|
+
spinSystem.clusters = splitSpinSystem(spinSystem, {
|
|
17
|
+
frequency,
|
|
18
|
+
maxClusterSize,
|
|
19
|
+
});
|
|
20
|
+
const peaks = simulateXYPeaks(spinSystem, { frequency });
|
|
21
|
+
const re = new Float64Array(nbPoints);
|
|
22
|
+
const im = new Float64Array(nbPoints);
|
|
23
|
+
const sw = Math.abs(to - from);
|
|
24
|
+
const adquisitionTime = nbPoints / (sw * frequency);
|
|
25
|
+
const time = xSequentialFill({
|
|
26
|
+
size: nbPoints,
|
|
27
|
+
from: 0,
|
|
28
|
+
to: adquisitionTime,
|
|
29
|
+
});
|
|
30
|
+
for (const peak of peaks) {
|
|
31
|
+
const { x, y } = peak;
|
|
32
|
+
const cs = x * frequency * twoPi;
|
|
33
|
+
for (let i = 0; i < nbPoints; i++) {
|
|
34
|
+
re[i] += y * Math.cos(cs * time[i]);
|
|
35
|
+
im[i] += y * Math.sin(cs * time[i]);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const { windowData, ...result } = apodization({ re, im }, {
|
|
39
|
+
pointsToShift: 0,
|
|
40
|
+
compose: {
|
|
41
|
+
length: nbPoints,
|
|
42
|
+
shapes: [
|
|
43
|
+
{
|
|
44
|
+
start: 0,
|
|
45
|
+
shape: {
|
|
46
|
+
kind: 'exponential',
|
|
47
|
+
options: {
|
|
48
|
+
dw: adquisitionTime / (nbPoints - 1),
|
|
49
|
+
lb,
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=signalsToFID.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signalsToFID.js","sourceRoot":"","sources":["../../src/signals/signalsToFID.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAGzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAkC/D,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAsB,EACtB,OAA4B;IAE5B,MAAM,EACJ,EAAE,GAAG,CAAC,EACN,IAAI,GAAG,CAAC,EACR,EAAE,GAAG,EAAE,EACP,QAAQ,GAAG,IAAI,EACf,SAAS,GAAG,GAAG,EACf,cAAc,GAAG,CAAC,GACnB,GAAG,OAAO,CAAC;IAEZ,IAAI,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE9C,UAAU,CAAC,QAAQ,GAAG,eAAe,CAAC,UAAU,EAAE;QAChD,SAAS;QACT,cAAc;KACf,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACzD,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;IAEtC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAC/B,MAAM,eAAe,GAAG,QAAQ,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,eAAe,CAAC;QAC3B,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,CAAC;QACP,EAAE,EAAE,eAAe;KACpB,CAAC,CAAC;IAEH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;QACtB,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;YACjC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACrC;KACF;IAED,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,GAAG,WAAW,CAC3C,EAAE,EAAE,EAAE,EAAE,EAAE,EACV;QACE,aAAa,EAAE,CAAC;QAChB,OAAO,EAAE;YACP,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE;gBACN;oBACE,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE;wBACL,IAAI,EAAE,aAAa;wBACnB,OAAO,EAAE;4BACP,EAAE,EAAE,eAAe,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;4BACpC,EAAE;yBACH;qBACF;iBACF;aACF;SACF;KACF,CACF,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -3,7 +3,10 @@ import { xyExtract, xNoiseSanPlot, xAbsoluteMedian, } from 'ml-spectra-processin
|
|
|
3
3
|
import { convertWidthToHz } from '../peaks/util/convertWidthToHz';
|
|
4
4
|
export function xyAutoPeaksPicking(data, options) {
|
|
5
5
|
const { from, to, frequency, noiseLevel, thresholdFactor = 3, minMaxRatio = 0.05, broadRatio = 0.00025, useSanPlot = false, smoothY = true, optimize = false, factorLimits = 4, realTopDetection = true, shape = { kind: 'gaussian' }, optimization = { kind: 'lm' }, broadWidth = 0.25, sgOptions = {}, direction = 'positive', } = options;
|
|
6
|
-
|
|
6
|
+
let pointsPerHz = 1 / frequency / (data.x[1] - data.x[0]);
|
|
7
|
+
// we can consider a peak with of 0.5 Hz for the windowSize
|
|
8
|
+
let ws = Math.max(Math.round(pointsPerHz / 2), 5);
|
|
9
|
+
const { windowSize = ws - (ws % 2) + 1, polynomial = 3 } = sgOptions;
|
|
7
10
|
if (data.x.length < windowSize)
|
|
8
11
|
return [];
|
|
9
12
|
if (from !== undefined && to !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xyAutoPeaksPicking.js","sourceRoot":"","sources":["../../src/xy/xyAutoPeaksPicking.ts"],"names":[],"mappings":"AACA,OAAO,EACL,GAAG,EACH,aAAa,EACb,cAAc,EAMd,QAAQ,GACT,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,SAAS,EACT,aAAa,EACb,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAgElE,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,OAAkC;IAElC,MAAM,EACJ,IAAI,EACJ,EAAE,EACF,SAAS,EACT,UAAU,EACV,eAAe,GAAG,CAAC,EACnB,WAAW,GAAG,IAAI,EAClB,UAAU,GAAG,OAAO,EACpB,UAAU,GAAG,KAAK,EAClB,OAAO,GAAG,IAAI,EACd,QAAQ,GAAG,KAAK,EAChB,YAAY,GAAG,CAAC,EAChB,gBAAgB,GAAG,IAAI,EACvB,KAAK,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAC5B,YAAY,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAC7B,UAAU,GAAG,IAAI,EACjB,SAAS,GAAG,EAAE,EACd,SAAS,GAAG,UAAU,GACvB,GAAG,OAAO,CAAC;IAEZ,MAAM,EAAE,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"xyAutoPeaksPicking.js","sourceRoot":"","sources":["../../src/xy/xyAutoPeaksPicking.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nmr-processing",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.3.0-pre.1669145798",
|
|
4
4
|
"description": "Pure functions allowing to process NMR spectra.",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"module": "./lib-esm/index.js",
|
|
@@ -38,20 +38,20 @@
|
|
|
38
38
|
},
|
|
39
39
|
"homepage": "https://github.com/cheminfo/nmr-processing#readme",
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@types/jest": "^
|
|
41
|
+
"@types/jest": "^29.2.2",
|
|
42
42
|
"cheminfo-build": "^1.1.11",
|
|
43
43
|
"cheminfo-types": "^1.4.0",
|
|
44
|
-
"eslint": "^8.
|
|
45
|
-
"eslint-config-cheminfo-typescript": "^11.
|
|
46
|
-
"jest": "^
|
|
44
|
+
"eslint": "^8.27.0",
|
|
45
|
+
"eslint-config-cheminfo-typescript": "^11.2.2",
|
|
46
|
+
"jest": "^29.3.1",
|
|
47
47
|
"jest-matcher-deep-close-to": "^3.0.2",
|
|
48
48
|
"md5": "^2.3.0",
|
|
49
49
|
"nmr-xy-testdata": "^0.5.1",
|
|
50
|
-
"openchemlib": "^8.0.
|
|
50
|
+
"openchemlib": "^8.0.1",
|
|
51
51
|
"prettier": "^2.7.1",
|
|
52
52
|
"rimraf": "^3.0.2",
|
|
53
|
-
"ts-jest": "^
|
|
54
|
-
"typescript": "^4.
|
|
53
|
+
"ts-jest": "^29.0.3",
|
|
54
|
+
"typescript": "^4.8.4"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
57
|
"@lukeed/uuid": "^2.0.0",
|
|
@@ -68,16 +68,16 @@
|
|
|
68
68
|
"ml-gsd": "^12.1.2",
|
|
69
69
|
"ml-hclust": "^3.1.0",
|
|
70
70
|
"ml-levenberg-marquardt": "^4.1.0",
|
|
71
|
-
"ml-matrix": "^6.10.
|
|
71
|
+
"ml-matrix": "^6.10.4",
|
|
72
72
|
"ml-matrix-convolution": "^1.0.0",
|
|
73
73
|
"ml-matrix-peaks-finder": "^1.0.0",
|
|
74
74
|
"ml-peak-shape-generator": "^4.1.2",
|
|
75
75
|
"ml-simple-clustering": "^0.1.0",
|
|
76
76
|
"ml-sparse-matrix": "^2.1.0",
|
|
77
|
-
"ml-spectra-processing": "^11.
|
|
77
|
+
"ml-spectra-processing": "^11.14.0",
|
|
78
78
|
"ml-tree-set": "^0.1.1",
|
|
79
79
|
"nmr-correlation": "^2.3.3",
|
|
80
|
-
"openchemlib-utils": "^2.
|
|
80
|
+
"openchemlib-utils": "^2.1.0",
|
|
81
81
|
"spectrum-generator": "^8.0.4"
|
|
82
82
|
}
|
|
83
83
|
}
|
package/src/index.ts
CHANGED
|
@@ -25,6 +25,7 @@ export * from './signals/signalsToRanges';
|
|
|
25
25
|
export * from './signals/signalsToXY';
|
|
26
26
|
export * from './signals/signals2DToZ';
|
|
27
27
|
export * from './signals/optimizeSignals';
|
|
28
|
+
export * from './signals/signalsToFID';
|
|
28
29
|
|
|
29
30
|
export * from './utilities/resurrect';
|
|
30
31
|
export * from './utilities/rangeFromSignal';
|
|
@@ -206,17 +206,7 @@ export function peaksToRanges(
|
|
|
206
206
|
}
|
|
207
207
|
}
|
|
208
208
|
// it was a updateIntegrals function.
|
|
209
|
-
|
|
210
|
-
let sumObserved = 0;
|
|
211
|
-
for (const signal of signals) {
|
|
212
|
-
sumObserved += Math.abs(Math.round(signal.integralData.value));
|
|
213
|
-
}
|
|
214
|
-
if (sumObserved !== integrationSum) {
|
|
215
|
-
sumIntegral = integrationSum / sumObserved;
|
|
216
|
-
for (const signal of signals) {
|
|
217
|
-
signal.integralData.value *= sumIntegral;
|
|
218
|
-
}
|
|
219
|
-
}
|
|
209
|
+
updateIntegration(signals, integrationSum);
|
|
220
210
|
}
|
|
221
211
|
|
|
222
212
|
signals.sort((a, b) => {
|
|
@@ -230,6 +220,7 @@ export function peaksToRanges(
|
|
|
230
220
|
}
|
|
231
221
|
}
|
|
232
222
|
}
|
|
223
|
+
|
|
233
224
|
let ranges: NMRRange[] = [];
|
|
234
225
|
for (let i = 0; i < signals.length; i++) {
|
|
235
226
|
let signal = signals[i];
|
|
@@ -243,7 +234,6 @@ export function peaksToRanges(
|
|
|
243
234
|
delta: signal.delta,
|
|
244
235
|
kind: signal.kind || 'signal',
|
|
245
236
|
multiplicity: signal.multiplicity,
|
|
246
|
-
integration: signal.integralData.value,
|
|
247
237
|
};
|
|
248
238
|
if (keepPeaks) {
|
|
249
239
|
signalResult.peaks = signal.peaks.map((peak) => {
|
|
@@ -299,7 +289,7 @@ export function detectSignals(
|
|
|
299
289
|
let peaks;
|
|
300
290
|
let signals = [];
|
|
301
291
|
let prevPeak = { x: Number.MIN_SAFE_INTEGER };
|
|
302
|
-
|
|
292
|
+
|
|
303
293
|
frequencyCluster /= frequency;
|
|
304
294
|
for (const peak of peakList) {
|
|
305
295
|
if (Math.abs(peak.x - prevPeak.x) > frequencyCluster) {
|
|
@@ -349,15 +339,10 @@ export function detectSignals(
|
|
|
349
339
|
} else {
|
|
350
340
|
integration.value = integralPeaks;
|
|
351
341
|
}
|
|
352
|
-
spectrumIntegral += integration.value;
|
|
353
342
|
}
|
|
354
343
|
|
|
355
344
|
if (integrationSum > 0) {
|
|
356
|
-
|
|
357
|
-
for (let signal of signals) {
|
|
358
|
-
let integration = signal.integralData;
|
|
359
|
-
integration.value *= integralFactor;
|
|
360
|
-
}
|
|
345
|
+
updateIntegration(signals, integrationSum);
|
|
361
346
|
}
|
|
362
347
|
|
|
363
348
|
return signals;
|
|
@@ -370,3 +355,22 @@ export function detectSignals(
|
|
|
370
355
|
function computeArea(peak: Peak1DIntern, frequency: number) {
|
|
371
356
|
return Math.abs(((peak.intensity * peak.width) / frequency) * 1.57); // todo add an option with this value: 1.772453851
|
|
372
357
|
}
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* update the integration Values
|
|
361
|
+
* @param signals
|
|
362
|
+
* @param integrationSum
|
|
363
|
+
*/
|
|
364
|
+
function updateIntegration(signals: SignalIntern[], integrationSum: number) {
|
|
365
|
+
let sumIntegral = 0;
|
|
366
|
+
let sumObserved = 0;
|
|
367
|
+
for (const signal of signals) {
|
|
368
|
+
sumObserved += Math.abs(Math.round(signal.integralData.value));
|
|
369
|
+
}
|
|
370
|
+
if (sumObserved !== integrationSum) {
|
|
371
|
+
sumIntegral = integrationSum / sumObserved;
|
|
372
|
+
for (const signal of signals) {
|
|
373
|
+
signal.integralData.value *= sumIntegral;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { xSequentialFill } from 'ml-spectra-processing';
|
|
2
|
+
|
|
3
|
+
import { apodization } from '../apodization/apodization';
|
|
4
|
+
|
|
5
|
+
import { NMRSignal1D } from './NMRSignal1D';
|
|
6
|
+
import { signalsToSpinSystem } from './simulation/signalsToSpinSystem';
|
|
7
|
+
import { simulateXYPeaks } from './simulation/simulateXYPeaks';
|
|
8
|
+
import { splitSpinSystem } from './simulation/splitSpinSystem';
|
|
9
|
+
|
|
10
|
+
export interface SignalsToFIDOptions {
|
|
11
|
+
/**
|
|
12
|
+
* at the end of the superposition of all component, an exponential apodization will be applied
|
|
13
|
+
* in order to have FID like shape.
|
|
14
|
+
* @default 1
|
|
15
|
+
*/
|
|
16
|
+
lb?: number;
|
|
17
|
+
/**
|
|
18
|
+
* lower limit of the spectrum
|
|
19
|
+
* @default 0
|
|
20
|
+
*/
|
|
21
|
+
from?: number;
|
|
22
|
+
/**
|
|
23
|
+
* upper limit of the spectrum
|
|
24
|
+
* @default 10
|
|
25
|
+
*/
|
|
26
|
+
to?: number;
|
|
27
|
+
/**
|
|
28
|
+
* number of points of the resulting FID
|
|
29
|
+
*/
|
|
30
|
+
nbPoints?: number;
|
|
31
|
+
/**
|
|
32
|
+
* It is the frequency of the carrier (e.g. SFO1 for bruker spectrometers)
|
|
33
|
+
*/
|
|
34
|
+
frequency?: number;
|
|
35
|
+
/**
|
|
36
|
+
* Maximum number of atoms on each cluster that can be considered to be simulated together.
|
|
37
|
+
* It affects the the quality and speed of the simulation.
|
|
38
|
+
*/
|
|
39
|
+
maxClusterSize?: number;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const twoPi = Math.PI * 2;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* it use the chemical shifts and the coupling between them in order to generate a FID.
|
|
46
|
+
* It does not propagate the hamiltonian of the spin system, instead it simulate all the
|
|
47
|
+
* frequencies in the spectrum (including second order) and add all the waves in a real and
|
|
48
|
+
* imaginary parts, that is why the couplings should be assigned in order to generate the spin system.
|
|
49
|
+
*/
|
|
50
|
+
export function signalsToFID(
|
|
51
|
+
signals: NMRSignal1D[],
|
|
52
|
+
options: SignalsToFIDOptions,
|
|
53
|
+
) {
|
|
54
|
+
const {
|
|
55
|
+
lb = 1,
|
|
56
|
+
from = 0,
|
|
57
|
+
to = 10,
|
|
58
|
+
nbPoints = 1024,
|
|
59
|
+
frequency = 400,
|
|
60
|
+
maxClusterSize = 8,
|
|
61
|
+
} = options;
|
|
62
|
+
|
|
63
|
+
let spinSystem = signalsToSpinSystem(signals);
|
|
64
|
+
|
|
65
|
+
spinSystem.clusters = splitSpinSystem(spinSystem, {
|
|
66
|
+
frequency,
|
|
67
|
+
maxClusterSize,
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
const peaks = simulateXYPeaks(spinSystem, { frequency });
|
|
71
|
+
const re = new Float64Array(nbPoints);
|
|
72
|
+
const im = new Float64Array(nbPoints);
|
|
73
|
+
|
|
74
|
+
const sw = Math.abs(to - from);
|
|
75
|
+
const adquisitionTime = nbPoints / (sw * frequency);
|
|
76
|
+
const time = xSequentialFill({
|
|
77
|
+
size: nbPoints,
|
|
78
|
+
from: 0,
|
|
79
|
+
to: adquisitionTime,
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
for (const peak of peaks) {
|
|
83
|
+
const { x, y } = peak;
|
|
84
|
+
const cs = x * frequency * twoPi;
|
|
85
|
+
for (let i = 0; i < nbPoints; i++) {
|
|
86
|
+
re[i] += y * Math.cos(cs * time[i]);
|
|
87
|
+
im[i] += y * Math.sin(cs * time[i]);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const { windowData, ...result } = apodization(
|
|
92
|
+
{ re, im },
|
|
93
|
+
{
|
|
94
|
+
pointsToShift: 0,
|
|
95
|
+
compose: {
|
|
96
|
+
length: nbPoints,
|
|
97
|
+
shapes: [
|
|
98
|
+
{
|
|
99
|
+
start: 0,
|
|
100
|
+
shape: {
|
|
101
|
+
kind: 'exponential',
|
|
102
|
+
options: {
|
|
103
|
+
dw: adquisitionTime / (nbPoints - 1),
|
|
104
|
+
lb,
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
],
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
);
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
@@ -106,7 +106,11 @@ export function xyAutoPeaksPicking(
|
|
|
106
106
|
direction = 'positive',
|
|
107
107
|
} = options;
|
|
108
108
|
|
|
109
|
-
|
|
109
|
+
let pointsPerHz = 1 / frequency / (data.x[1] - data.x[0]);
|
|
110
|
+
// we can consider a peak with of 0.5 Hz for the windowSize
|
|
111
|
+
let ws = Math.max(Math.round(pointsPerHz / 2), 5);
|
|
112
|
+
|
|
113
|
+
const { windowSize = ws - (ws % 2) + 1, polynomial = 3 } = sgOptions;
|
|
110
114
|
|
|
111
115
|
if (data.x.length < windowSize) return [];
|
|
112
116
|
|