nmr-processing 9.1.0-pre.1663857509 → 9.2.0-pre.1668170175
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/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/signals/signalsToFID.d.ts +13 -0
- package/lib/signals/signalsToFID.js +56 -0
- package/lib/signals/signalsToFID.js.map +1 -0
- package/lib-esm/index.js +1 -0
- package/lib-esm/index.js.map +1 -1
- package/lib-esm/signals/signalsToFID.js +52 -0
- package/lib-esm/signals/signalsToFID.js.map +1 -0
- package/package.json +2 -2
- package/src/index.ts +1 -0
- package/src/signals/signalsToFID.ts +84 -0
- package/src/signals/optimization/ml-direct.d.ts +0 -21
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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { NMRSignal1D } from './NMRSignal1D';
|
|
2
|
+
export interface SignalsToFIDOptions {
|
|
3
|
+
lb?: number;
|
|
4
|
+
from?: number;
|
|
5
|
+
to?: number;
|
|
6
|
+
nbPoints?: number;
|
|
7
|
+
frequency?: number;
|
|
8
|
+
maxClusterSize?: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function signalsToFID(signals: NMRSignal1D[], options: SignalsToFIDOptions): {
|
|
11
|
+
re: import("cheminfo-types").DoubleArray;
|
|
12
|
+
im: import("cheminfo-types").DoubleArray;
|
|
13
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
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
|
+
function signalsToFID(signals, options) {
|
|
11
|
+
const { lb = 1, from = 0, to = 10, nbPoints = 1024, frequency = 400, maxClusterSize = 8, } = options;
|
|
12
|
+
let spinSystem = (0, signalsToSpinSystem_1.signalsToSpinSystem)(signals);
|
|
13
|
+
spinSystem.clusters = (0, splitSpinSystem_1.splitSpinSystem)(spinSystem, {
|
|
14
|
+
frequency,
|
|
15
|
+
maxClusterSize,
|
|
16
|
+
});
|
|
17
|
+
const peaks = (0, simulateXYPeaks_1.simulateXYPeaks)(spinSystem, { frequency });
|
|
18
|
+
const re = new Float64Array(nbPoints);
|
|
19
|
+
const im = new Float64Array(nbPoints);
|
|
20
|
+
const sw = Math.abs(to - from);
|
|
21
|
+
const adquisitionTime = nbPoints / (2 * sw * frequency);
|
|
22
|
+
const time = (0, ml_spectra_processing_1.xSequentialFill)({
|
|
23
|
+
size: nbPoints,
|
|
24
|
+
from: 0,
|
|
25
|
+
to: adquisitionTime,
|
|
26
|
+
});
|
|
27
|
+
for (const peak of peaks) {
|
|
28
|
+
const { x, y } = peak;
|
|
29
|
+
const cs = x * frequency * twoPi;
|
|
30
|
+
for (let i = 0; i < nbPoints; i++) {
|
|
31
|
+
re[i] += y * Math.cos(cs * time[i]);
|
|
32
|
+
im[i] += y * Math.sin(cs * time[i]);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const { windowData, ...result } = (0, apodization_1.apodization)({ re, im }, {
|
|
36
|
+
pointsToShift: 0,
|
|
37
|
+
compose: {
|
|
38
|
+
length: nbPoints,
|
|
39
|
+
shapes: [
|
|
40
|
+
{
|
|
41
|
+
start: 0,
|
|
42
|
+
shape: {
|
|
43
|
+
kind: 'exponential',
|
|
44
|
+
options: {
|
|
45
|
+
dw: adquisitionTime / (nbPoints - 1),
|
|
46
|
+
lb,
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
exports.signalsToFID = signalsToFID;
|
|
56
|
+
//# 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;AAW/D,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAE1B,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,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;IACxD,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"}
|
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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
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
|
+
export function signalsToFID(signals, options) {
|
|
8
|
+
const { lb = 1, from = 0, to = 10, nbPoints = 1024, frequency = 400, maxClusterSize = 8, } = options;
|
|
9
|
+
let spinSystem = signalsToSpinSystem(signals);
|
|
10
|
+
spinSystem.clusters = splitSpinSystem(spinSystem, {
|
|
11
|
+
frequency,
|
|
12
|
+
maxClusterSize,
|
|
13
|
+
});
|
|
14
|
+
const peaks = simulateXYPeaks(spinSystem, { frequency });
|
|
15
|
+
const re = new Float64Array(nbPoints);
|
|
16
|
+
const im = new Float64Array(nbPoints);
|
|
17
|
+
const sw = Math.abs(to - from);
|
|
18
|
+
const adquisitionTime = nbPoints / (2 * sw * frequency);
|
|
19
|
+
const time = xSequentialFill({
|
|
20
|
+
size: nbPoints,
|
|
21
|
+
from: 0,
|
|
22
|
+
to: adquisitionTime,
|
|
23
|
+
});
|
|
24
|
+
for (const peak of peaks) {
|
|
25
|
+
const { x, y } = peak;
|
|
26
|
+
const cs = x * frequency * twoPi;
|
|
27
|
+
for (let i = 0; i < nbPoints; i++) {
|
|
28
|
+
re[i] += y * Math.cos(cs * time[i]);
|
|
29
|
+
im[i] += y * Math.sin(cs * time[i]);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const { windowData, ...result } = apodization({ re, im }, {
|
|
33
|
+
pointsToShift: 0,
|
|
34
|
+
compose: {
|
|
35
|
+
length: nbPoints,
|
|
36
|
+
shapes: [
|
|
37
|
+
{
|
|
38
|
+
start: 0,
|
|
39
|
+
shape: {
|
|
40
|
+
kind: 'exponential',
|
|
41
|
+
options: {
|
|
42
|
+
dw: adquisitionTime / (nbPoints - 1),
|
|
43
|
+
lb,
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
//# 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;AAW/D,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAE1B,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,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;IACxD,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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nmr-processing",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.2.0-pre.1668170175",
|
|
4
4
|
"description": "Pure functions allowing to process NMR spectra.",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"module": "./lib-esm/index.js",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"ml-array-mean": "^1.1.6",
|
|
65
65
|
"ml-array-rescale": "^1.3.7",
|
|
66
66
|
"ml-array-sum": "^1.1.6",
|
|
67
|
-
"ml-direct": "^0.1.
|
|
67
|
+
"ml-direct": "^0.1.1",
|
|
68
68
|
"ml-gsd": "^12.1.2",
|
|
69
69
|
"ml-hclust": "^3.1.0",
|
|
70
70
|
"ml-levenberg-marquardt": "^4.1.0",
|
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';
|
|
@@ -0,0 +1,84 @@
|
|
|
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
|
+
lb?: number;
|
|
12
|
+
from?: number;
|
|
13
|
+
to?: number;
|
|
14
|
+
nbPoints?: number;
|
|
15
|
+
frequency?: number;
|
|
16
|
+
maxClusterSize?: number;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const twoPi = Math.PI * 2;
|
|
20
|
+
|
|
21
|
+
export function signalsToFID(
|
|
22
|
+
signals: NMRSignal1D[],
|
|
23
|
+
options: SignalsToFIDOptions,
|
|
24
|
+
) {
|
|
25
|
+
const {
|
|
26
|
+
lb = 1,
|
|
27
|
+
from = 0,
|
|
28
|
+
to = 10,
|
|
29
|
+
nbPoints = 1024,
|
|
30
|
+
frequency = 400,
|
|
31
|
+
maxClusterSize = 8,
|
|
32
|
+
} = options;
|
|
33
|
+
|
|
34
|
+
let spinSystem = signalsToSpinSystem(signals);
|
|
35
|
+
|
|
36
|
+
spinSystem.clusters = splitSpinSystem(spinSystem, {
|
|
37
|
+
frequency,
|
|
38
|
+
maxClusterSize,
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
const peaks = simulateXYPeaks(spinSystem, { frequency });
|
|
42
|
+
const re = new Float64Array(nbPoints);
|
|
43
|
+
const im = new Float64Array(nbPoints);
|
|
44
|
+
|
|
45
|
+
const sw = Math.abs(to - from);
|
|
46
|
+
const adquisitionTime = nbPoints / (2 * sw * frequency);
|
|
47
|
+
const time = xSequentialFill({
|
|
48
|
+
size: nbPoints,
|
|
49
|
+
from: 0,
|
|
50
|
+
to: adquisitionTime,
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
for (const peak of peaks) {
|
|
54
|
+
const { x, y } = peak;
|
|
55
|
+
const cs = x * frequency * twoPi;
|
|
56
|
+
for (let i = 0; i < nbPoints; i++) {
|
|
57
|
+
re[i] += y * Math.cos(cs * time[i]);
|
|
58
|
+
im[i] += y * Math.sin(cs * time[i]);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const { windowData, ...result } = apodization(
|
|
63
|
+
{ re, im },
|
|
64
|
+
{
|
|
65
|
+
pointsToShift: 0,
|
|
66
|
+
compose: {
|
|
67
|
+
length: nbPoints,
|
|
68
|
+
shapes: [
|
|
69
|
+
{
|
|
70
|
+
start: 0,
|
|
71
|
+
shape: {
|
|
72
|
+
kind: 'exponential',
|
|
73
|
+
options: {
|
|
74
|
+
dw: adquisitionTime / (nbPoints - 1),
|
|
75
|
+
lb,
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
);
|
|
83
|
+
return result;
|
|
84
|
+
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
declare module 'ml-direct' {
|
|
2
|
-
export interface DirectOptions {
|
|
3
|
-
iterations?: number;
|
|
4
|
-
epsilon?: number;
|
|
5
|
-
tolerance?: number;
|
|
6
|
-
tolerance2?: number;
|
|
7
|
-
initialState?: any;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export default function direct(
|
|
11
|
-
objectiveFunction: (parameters: number[]) => number,
|
|
12
|
-
lowerBoundaries: number[],
|
|
13
|
-
upperBoundaries: number[],
|
|
14
|
-
options?: DirectOptions,
|
|
15
|
-
): {
|
|
16
|
-
minFunctionValue: number;
|
|
17
|
-
iterations: number;
|
|
18
|
-
optima: number[][];
|
|
19
|
-
finalState: any;
|
|
20
|
-
};
|
|
21
|
-
}
|