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 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;AAE1C,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"}
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';
@@ -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;AAE1C,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"}
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.1.0-pre.1663857509",
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.0",
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
- }