nmr-processing 9.0.3 → 9.0.4-pre.1660646769

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.
@@ -1,9 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.peakToXY = void 0;
4
+ const ml_gsd_1 = require("ml-gsd");
5
+ const ml_peak_shape_generator_1 = require("ml-peak-shape-generator");
4
6
  const peaksToXY_1 = require("./peaksToXY");
5
7
  function peakToXY(peak, options) {
6
- return (0, peaksToXY_1.peaksToXY)([peak], options);
8
+ const newPeak = (0, ml_gsd_1.addMissingShape)([peak])[0];
9
+ const factor = (0, ml_peak_shape_generator_1.getShape1D)(newPeak.shape).getFactor();
10
+ const { from = newPeak.x - peak.width * factor, to = newPeak.x + peak.width * factor, } = options;
11
+ return (0, peaksToXY_1.peaksToXY)([peak], { ...options, from, to });
7
12
  }
8
13
  exports.peakToXY = peakToXY;
9
14
  //# sourceMappingURL=peakToXY.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"peakToXY.js","sourceRoot":"","sources":["../../src/peaks/peakToXY.ts"],"names":[],"mappings":";;;AACA,2CAA0D;AAE1D,SAAgB,QAAQ,CAAC,IAAe,EAAE,OAAyB;IACjE,OAAO,IAAA,qBAAS,EAAC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAFD,4BAEC"}
1
+ {"version":3,"file":"peakToXY.js","sourceRoot":"","sources":["../../src/peaks/peakToXY.ts"],"names":[],"mappings":";;;AAAA,mCAAyC;AACzC,qEAAqD;AAGrD,2CAA0D;AAE1D,SAAgB,QAAQ,CAAC,IAAe,EAAE,OAAyB;IACjE,MAAM,OAAO,GAAG,IAAA,wBAAe,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAA,oCAAU,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;IAErD,MAAM,EACJ,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,EACtC,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,GACrC,GAAG,OAAO,CAAC;IAEZ,OAAO,IAAA,qBAAS,EAAC,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;AACrD,CAAC;AAVD,4BAUC"}
@@ -5,6 +5,9 @@ const spectrum_generator_1 = require("spectrum-generator");
5
5
  const convertWidthToPPM_1 = require("./util/convertWidthToPPM");
6
6
  function peaksToXY(peaks, options) {
7
7
  const { frequency, nbPoints = 1024, shape } = options;
8
+ if (!frequency) {
9
+ throw new Error('frequency is mandatory');
10
+ }
8
11
  const newPeaks = (0, convertWidthToPPM_1.convertWidthToPPM)(peaks, { frequency });
9
12
  return (0, spectrum_generator_1.generateSpectrum)(newPeaks, {
10
13
  generator: {
@@ -1 +1 @@
1
- {"version":3,"file":"peaksToXY.js","sourceRoot":"","sources":["../../src/peaks/peaksToXY.ts"],"names":[],"mappings":";;;AAAA,2DAAmE;AAGnE,gEAA6D;AAuB7D,SAAgB,SAAS,CAAC,KAAkB,EAAE,OAAyB;IACrE,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAA,qCAAiB,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAEzD,OAAO,IAAA,qCAAgB,EAAC,QAAQ,EAAE;QAChC,SAAS,EAAE;YACT,GAAG,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;YAC/B,QAAQ;YACR,KAAK;SACN;KACF,CAAC,CAAC;AACL,CAAC;AAXD,8BAWC;AAED,SAAS,SAAS,CAAC,QAAqB,EAAE,OAAyB;IACjE,IAAI,IAAI,IAAI,OAAO,IAAI,MAAM,IAAI,OAAO,EAAE;QACxC,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,EAAE,EAAE,OAAO,CAAC,EAAE;SACf,CAAC;KACH;IAED,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE/C,MAAM,EACJ,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,EACxC,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,GACrC,GAAG,OAAO,CAAC;IAEZ,OAAO;QACL,IAAI;QACJ,EAAE;KACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"peaksToXY.js","sourceRoot":"","sources":["../../src/peaks/peaksToXY.ts"],"names":[],"mappings":";;;AAAA,2DAAmE;AAGnE,gEAA6D;AAuB7D,SAAgB,SAAS,CAAC,KAAkB,EAAE,OAAyB;IACrE,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAEtD,IAAI,CAAC,SAAS,EAAE;QACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;KAC3C;IACD,MAAM,QAAQ,GAAG,IAAA,qCAAiB,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACzD,OAAO,IAAA,qCAAgB,EAAC,QAAQ,EAAE;QAChC,SAAS,EAAE;YACT,GAAG,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;YAC/B,QAAQ;YACR,KAAK;SACN;KACF,CAAC,CAAC;AACL,CAAC;AAdD,8BAcC;AAED,SAAS,SAAS,CAAC,QAAqB,EAAE,OAAyB;IACjE,IAAI,IAAI,IAAI,OAAO,IAAI,MAAM,IAAI,OAAO,EAAE;QACxC,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,EAAE,EAAE,OAAO,CAAC,EAAE;SACf,CAAC;KACH;IAED,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE/C,MAAM,EACJ,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,EACxC,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,GACrC,GAAG,OAAO,CAAC;IAEZ,OAAO;QACL,IAAI;QACJ,EAAE;KACH,CAAC;AACJ,CAAC"}
@@ -11,4 +11,4 @@ export interface ConvertWidthOptions {
11
11
  /**
12
12
  * convert width and fwhm to ppm
13
13
  */
14
- export declare function convertWidth(peaks: NMRPeak1D[], options: ConvertWidthOptions): any;
14
+ export declare function convertWidth(peaks: NMRPeak1D[], options: ConvertWidthOptions): NMRPeak1D[];
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.convertWidth = void 0;
4
+ const hasProperty_1 = require("../../utilities/hasProperty");
4
5
  /**
5
6
  * convert width and fwhm to ppm
6
7
  */
@@ -9,7 +10,7 @@ function convertWidth(peaks, options) {
9
10
  const convert = getConverter(convertTo, frequency);
10
11
  for (const peak of output) {
11
12
  peak.width = convert(peak.width);
12
- if (hasShape(peak)) {
13
+ if ((0, hasProperty_1.hasProperty)(peak, 'shape')) {
13
14
  if (peak.shape.fwhm) {
14
15
  peak.shape.fwhm = convert(peak.shape.fwhm);
15
16
  }
@@ -18,9 +19,6 @@ function convertWidth(peaks, options) {
18
19
  return output;
19
20
  }
20
21
  exports.convertWidth = convertWidth;
21
- function hasShape(peak) {
22
- return 'shape' in peak;
23
- }
24
22
  function getConverter(convertTo, frequency) {
25
23
  switch (convertTo) {
26
24
  case 'ppm':
@@ -1 +1 @@
1
- {"version":3,"file":"convertWidth.js","sourceRoot":"","sources":["../../../src/peaks/util/convertWidth.ts"],"names":[],"mappings":";;;AAUA;;GAEG;AACH,SAAgB,YAAY,CAAC,KAAkB,EAAE,OAA4B;IAC3E,MAAM,EACJ,SAAS,EACT,SAAS,EACT,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAC3C,GAAG,OAAO,CAAC;IAEZ,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEnD,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;QACzB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;YAClB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;gBACnB,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC5C;SACF;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAlBD,oCAkBC;AAED,SAAS,QAAQ,CAAC,IAAe;IAC/B,OAAO,OAAO,IAAI,IAAI,CAAC;AACzB,CAAC;AAED,SAAS,YAAY,CAAC,SAAiB,EAAE,SAAiB;IACxD,QAAQ,SAAS,EAAE;QACjB,KAAK,KAAK;YACR,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;QACtC,KAAK,IAAI;YACP,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;QACtC;YACE,MAAM,IAAI,KAAK,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;KAC/D;AACH,CAAC"}
1
+ {"version":3,"file":"convertWidth.js","sourceRoot":"","sources":["../../../src/peaks/util/convertWidth.ts"],"names":[],"mappings":";;;AACA,6DAA0D;AAU1D;;GAEG;AACH,SAAgB,YAAY,CAAC,KAAkB,EAAE,OAA4B;IAC3E,MAAM,EACJ,SAAS,EACT,SAAS,EACT,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAgB,GAC1D,GAAG,OAAO,CAAC;IAEZ,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEnD,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;QACzB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,IAAA,yBAAW,EAAC,IAAI,EAAE,OAAO,CAAC,EAAE;YAC9B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;gBACnB,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC5C;SACF;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAlBD,oCAkBC;AAED,SAAS,YAAY,CAAC,SAAiB,EAAE,SAAiB;IACxD,QAAQ,SAAS,EAAE;QACjB,KAAK,KAAK;YACR,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;QACtC,KAAK,IAAI;YACP,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;QACtC;YACE,MAAM,IAAI,KAAK,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;KAC/D;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { NMRPeak1D } from '../NMRPeak1D';
2
2
  import { ConvertWidthOptions } from './convertWidth';
3
3
  export declare type ConvertWidthTo = Omit<ConvertWidthOptions, 'convertTo'>;
4
- export declare function convertWidthToHz(peaks: NMRPeak1D[], options: ConvertWidthTo): any;
4
+ export declare function convertWidthToHz(peaks: NMRPeak1D[], options: ConvertWidthTo): NMRPeak1D[];
@@ -1,3 +1,3 @@
1
1
  import { NMRPeak1D } from '../NMRPeak1D';
2
2
  import { ConvertWidthTo } from './convertWidthToHz';
3
- export declare function convertWidthToPPM(peaks: NMRPeak1D[], options: ConvertWidthTo): any;
3
+ export declare function convertWidthToPPM(peaks: NMRPeak1D[], options: ConvertWidthTo): NMRPeak1D[];
@@ -0,0 +1,3 @@
1
+ export declare function hasProperty<T, K extends keyof T>(data: T, key: K): data is T & {
2
+ [P in K]-?: T[P];
3
+ };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasProperty = void 0;
4
+ function hasProperty(data, key) {
5
+ return key in data;
6
+ }
7
+ exports.hasProperty = hasProperty;
8
+ //# sourceMappingURL=hasProperty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hasProperty.js","sourceRoot":"","sources":["../../src/utilities/hasProperty.ts"],"names":[],"mappings":";;;AAAA,SAAgB,WAAW,CACzB,IAAO,EACP,GAAM;IAEN,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AALD,kCAKC"}
@@ -6,4 +6,4 @@ export interface XYPeaksOptimizationOptions extends OptimizePeaksOptions {
6
6
  */
7
7
  frequency: number;
8
8
  }
9
- export declare function xyPeaksOptimization(data: DataXY, peaks: PeakXYWidth[], options: XYPeaksOptimizationOptions): any;
9
+ export declare function xyPeaksOptimization(data: DataXY, peaks: PeakXYWidth[], options: XYPeaksOptimizationOptions): import("..").NMRPeak1D[];
@@ -1,5 +1,10 @@
1
+ import { addMissingShape } from 'ml-gsd';
2
+ import { getShape1D } from 'ml-peak-shape-generator';
1
3
  import { peaksToXY } from './peaksToXY';
2
4
  export function peakToXY(peak, options) {
3
- return peaksToXY([peak], options);
5
+ const newPeak = addMissingShape([peak])[0];
6
+ const factor = getShape1D(newPeak.shape).getFactor();
7
+ const { from = newPeak.x - peak.width * factor, to = newPeak.x + peak.width * factor, } = options;
8
+ return peaksToXY([peak], { ...options, from, to });
4
9
  }
5
10
  //# sourceMappingURL=peakToXY.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"peakToXY.js","sourceRoot":"","sources":["../../src/peaks/peakToXY.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAoB,MAAM,aAAa,CAAC;AAE1D,MAAM,UAAU,QAAQ,CAAC,IAAe,EAAE,OAAyB;IACjE,OAAO,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"peakToXY.js","sourceRoot":"","sources":["../../src/peaks/peakToXY.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,OAAO,EAAE,SAAS,EAAoB,MAAM,aAAa,CAAC;AAE1D,MAAM,UAAU,QAAQ,CAAC,IAAe,EAAE,OAAyB;IACjE,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;IAErD,MAAM,EACJ,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,EACtC,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,GACrC,GAAG,OAAO,CAAC;IAEZ,OAAO,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;AACrD,CAAC"}
@@ -2,6 +2,9 @@ import { generateSpectrum } from 'spectrum-generator';
2
2
  import { convertWidthToPPM } from './util/convertWidthToPPM';
3
3
  export function peaksToXY(peaks, options) {
4
4
  const { frequency, nbPoints = 1024, shape } = options;
5
+ if (!frequency) {
6
+ throw new Error('frequency is mandatory');
7
+ }
5
8
  const newPeaks = convertWidthToPPM(peaks, { frequency });
6
9
  return generateSpectrum(newPeaks, {
7
10
  generator: {
@@ -1 +1 @@
1
- {"version":3,"file":"peaksToXY.js","sourceRoot":"","sources":["../../src/peaks/peaksToXY.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAe,MAAM,oBAAoB,CAAC;AAGnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAuB7D,MAAM,UAAU,SAAS,CAAC,KAAkB,EAAE,OAAyB;IACrE,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IACtD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAEzD,OAAO,gBAAgB,CAAC,QAAQ,EAAE;QAChC,SAAS,EAAE;YACT,GAAG,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;YAC/B,QAAQ;YACR,KAAK;SACN;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,QAAqB,EAAE,OAAyB;IACjE,IAAI,IAAI,IAAI,OAAO,IAAI,MAAM,IAAI,OAAO,EAAE;QACxC,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,EAAE,EAAE,OAAO,CAAC,EAAE;SACf,CAAC;KACH;IAED,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE/C,MAAM,EACJ,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,EACxC,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,GACrC,GAAG,OAAO,CAAC;IAEZ,OAAO;QACL,IAAI;QACJ,EAAE;KACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"peaksToXY.js","sourceRoot":"","sources":["../../src/peaks/peaksToXY.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAe,MAAM,oBAAoB,CAAC;AAGnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAuB7D,MAAM,UAAU,SAAS,CAAC,KAAkB,EAAE,OAAyB;IACrE,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAEtD,IAAI,CAAC,SAAS,EAAE;QACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;KAC3C;IACD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACzD,OAAO,gBAAgB,CAAC,QAAQ,EAAE;QAChC,SAAS,EAAE;YACT,GAAG,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;YAC/B,QAAQ;YACR,KAAK;SACN;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,QAAqB,EAAE,OAAyB;IACjE,IAAI,IAAI,IAAI,OAAO,IAAI,MAAM,IAAI,OAAO,EAAE;QACxC,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,EAAE,EAAE,OAAO,CAAC,EAAE;SACf,CAAC;KACH;IAED,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE/C,MAAM,EACJ,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,EACxC,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,GACrC,GAAG,OAAO,CAAC;IAEZ,OAAO;QACL,IAAI;QACJ,EAAE;KACH,CAAC;AACJ,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { hasProperty } from '../../utilities/hasProperty';
1
2
  /**
2
3
  * convert width and fwhm to ppm
3
4
  */
@@ -6,7 +7,7 @@ export function convertWidth(peaks, options) {
6
7
  const convert = getConverter(convertTo, frequency);
7
8
  for (const peak of output) {
8
9
  peak.width = convert(peak.width);
9
- if (hasShape(peak)) {
10
+ if (hasProperty(peak, 'shape')) {
10
11
  if (peak.shape.fwhm) {
11
12
  peak.shape.fwhm = convert(peak.shape.fwhm);
12
13
  }
@@ -14,9 +15,6 @@ export function convertWidth(peaks, options) {
14
15
  }
15
16
  return output;
16
17
  }
17
- function hasShape(peak) {
18
- return 'shape' in peak;
19
- }
20
18
  function getConverter(convertTo, frequency) {
21
19
  switch (convertTo) {
22
20
  case 'ppm':
@@ -1 +1 @@
1
- {"version":3,"file":"convertWidth.js","sourceRoot":"","sources":["../../../src/peaks/util/convertWidth.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAkB,EAAE,OAA4B;IAC3E,MAAM,EACJ,SAAS,EACT,SAAS,EACT,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAC3C,GAAG,OAAO,CAAC;IAEZ,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEnD,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;QACzB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;YAClB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;gBACnB,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC5C;SACF;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,QAAQ,CAAC,IAAe;IAC/B,OAAO,OAAO,IAAI,IAAI,CAAC;AACzB,CAAC;AAED,SAAS,YAAY,CAAC,SAAiB,EAAE,SAAiB;IACxD,QAAQ,SAAS,EAAE;QACjB,KAAK,KAAK;YACR,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;QACtC,KAAK,IAAI;YACP,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;QACtC;YACE,MAAM,IAAI,KAAK,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;KAC/D;AACH,CAAC"}
1
+ {"version":3,"file":"convertWidth.js","sourceRoot":"","sources":["../../../src/peaks/util/convertWidth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAU1D;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAkB,EAAE,OAA4B;IAC3E,MAAM,EACJ,SAAS,EACT,SAAS,EACT,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAgB,GAC1D,GAAG,OAAO,CAAC;IAEZ,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEnD,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;QACzB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;YAC9B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;gBACnB,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC5C;SACF;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,SAAiB,EAAE,SAAiB;IACxD,QAAQ,SAAS,EAAE;QACjB,KAAK,KAAK;YACR,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;QACtC,KAAK,IAAI;YACP,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;QACtC;YACE,MAAM,IAAI,KAAK,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;KAC/D;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export function hasProperty(data, key) {
2
+ return key in data;
3
+ }
4
+ //# sourceMappingURL=hasProperty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hasProperty.js","sourceRoot":"","sources":["../../src/utilities/hasProperty.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,WAAW,CACzB,IAAO,EACP,GAAM;IAEN,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nmr-processing",
3
- "version": "9.0.3",
3
+ "version": "9.0.4-pre.1660646769",
4
4
  "description": "Pure functions allowing to process NMR spectra.",
5
5
  "main": "./lib/index.js",
6
6
  "module": "./lib-esm/index.js",
@@ -78,4 +78,4 @@
78
78
  "openchemlib-utils": "^2.0.0",
79
79
  "spectrum-generator": "^8.0.4"
80
80
  }
81
- }
81
+ }
@@ -1,6 +1,17 @@
1
+ import { addMissingShape } from 'ml-gsd';
2
+ import { getShape1D } from 'ml-peak-shape-generator';
3
+
1
4
  import { NMRPeak1D } from './NMRPeak1D';
2
5
  import { peaksToXY, PeaksToXYOptions } from './peaksToXY';
3
6
 
4
7
  export function peakToXY(peak: NMRPeak1D, options: PeaksToXYOptions) {
5
- return peaksToXY([peak], options);
8
+ const newPeak = addMissingShape([peak])[0];
9
+ const factor = getShape1D(newPeak.shape).getFactor();
10
+
11
+ const {
12
+ from = newPeak.x - peak.width * factor,
13
+ to = newPeak.x + peak.width * factor,
14
+ } = options;
15
+
16
+ return peaksToXY([peak], { ...options, from, to });
6
17
  }
@@ -26,8 +26,11 @@ export interface PeaksToXYOptions extends OptionsSG1D {
26
26
 
27
27
  export function peaksToXY(peaks: NMRPeak1D[], options: PeaksToXYOptions) {
28
28
  const { frequency, nbPoints = 1024, shape } = options;
29
- const newPeaks = convertWidthToPPM(peaks, { frequency });
30
29
 
30
+ if (!frequency) {
31
+ throw new Error('frequency is mandatory');
32
+ }
33
+ const newPeaks = convertWidthToPPM(peaks, { frequency });
31
34
  return generateSpectrum(newPeaks, {
32
35
  generator: {
33
36
  ...getFromTo(newPeaks, options),
@@ -1,4 +1,5 @@
1
1
  import { MakeMandatory } from '../../utilities/MakeMandatory';
2
+ import { hasProperty } from '../../utilities/hasProperty';
2
3
  import { NMRPeak1D } from '../NMRPeak1D';
3
4
 
4
5
  export type NMRPeak1DWithShape = MakeMandatory<NMRPeak1D, 'shape'>;
@@ -15,14 +16,14 @@ export function convertWidth(peaks: NMRPeak1D[], options: ConvertWidthOptions) {
15
16
  const {
16
17
  frequency,
17
18
  convertTo,
18
- output = JSON.parse(JSON.stringify(peaks)),
19
+ output = JSON.parse(JSON.stringify(peaks)) as NMRPeak1D[],
19
20
  } = options;
20
21
 
21
22
  const convert = getConverter(convertTo, frequency);
22
23
 
23
24
  for (const peak of output) {
24
25
  peak.width = convert(peak.width);
25
- if (hasShape(peak)) {
26
+ if (hasProperty(peak, 'shape')) {
26
27
  if (peak.shape.fwhm) {
27
28
  peak.shape.fwhm = convert(peak.shape.fwhm);
28
29
  }
@@ -31,10 +32,6 @@ export function convertWidth(peaks: NMRPeak1D[], options: ConvertWidthOptions) {
31
32
  return output;
32
33
  }
33
34
 
34
- function hasShape(peak: NMRPeak1D): peak is NMRPeak1DWithShape {
35
- return 'shape' in peak;
36
- }
37
-
38
35
  function getConverter(convertTo: string, frequency: number) {
39
36
  switch (convertTo) {
40
37
  case 'ppm':
@@ -0,0 +1,6 @@
1
+ export function hasProperty<T, K extends keyof T>(
2
+ data: T,
3
+ key: K,
4
+ ): data is T & { [P in K]-?: T[P] } {
5
+ return key in data;
6
+ }