nmr-processing 17.1.3 → 17.3.0

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.
@@ -7,16 +7,16 @@ import type { DoubleArray } from 'cheminfo-types';
7
7
  import { ExponentialRegression } from 'ml-regression-exponential';
8
8
  import type { FilterXYType } from 'ml-signal-processing';
9
9
  import { FromTo } from 'cheminfo-types';
10
+ import type { GenerateSpectrumOptions } from 'spectrum-generator';
10
11
  import type { GroupedDiaID } from 'openchemlib-utils';
11
12
  import type { GSDOptions } from 'ml-gsd';
12
13
  import { GSDPeakOptimized } from 'ml-gsd';
13
14
  import { GSDPeakOptimizedID } from 'ml-gsd';
14
15
  import type { JoinBroadPeaksOptions } from 'ml-gsd';
15
- import type { LightLogger } from 'cheminfo-types';
16
+ import { LightLogger } from 'cheminfo-types';
16
17
  import type { Logger } from 'cheminfo-types';
17
18
  import { Matrix } from 'ml-matrix';
18
19
  import type { Molecule } from 'openchemlib/full';
19
- import type { Molecule as Molecule_2 } from 'openchemlib/minimal';
20
20
  import type { NmrData1D } from 'cheminfo-types';
21
21
  import type { NmrData2D } from 'cheminfo-types';
22
22
  import type { NmrData2DContent } from 'cheminfo-types';
@@ -28,8 +28,9 @@ import type { OptionsSG1D } from 'spectrum-generator';
28
28
  import type { Peak2D as Peak2D_2 } from 'ml-matrix-peaks-finder';
29
29
  import type { PeakXYWidth } from 'cheminfo-types';
30
30
  import { PointXY } from 'cheminfo-types';
31
- import { Shape1D } from 'ml-peak-shape-generator';
31
+ import type { Shape1D } from 'ml-peak-shape-generator';
32
32
  import type { TopicMolecule } from 'openchemlib-utils';
33
+ import type { XDistributionStats } from 'ml-spectra-processing';
33
34
  import type { XYEquallySpacedOptions } from 'ml-spectra-processing';
34
35
  import type { XYNumber } from 'spectrum-generator';
35
36
 
@@ -42,8 +43,6 @@ export declare interface AirplsOptions {
42
43
  tolerance: number;
43
44
  }
44
45
 
45
- declare type AnalysisInfoSection = Record<string, string>;
46
-
47
46
  declare type Apodization1D = FilterFactory<Entry1D, Apodization2DOptions> & Pick<Apodization1DFilterOptions, 'name'>;
48
47
 
49
48
  declare interface Apodization1DFilterOptions extends BaseFilter {
@@ -128,11 +127,58 @@ export declare interface ApplyWindowOptions {
128
127
  output?: DoubleArray;
129
128
  }
130
129
 
131
- export declare interface AtomMapping {
130
+ declare type Atom = ReturnType<typeof getAtoms>[0];
131
+
132
+ declare interface AtomInput {
133
+ id: ID;
134
+ pid: ID;
135
+ n: string;
136
+ r: string;
137
+ nc: number;
138
+ crcan: number;
139
+ crrd: number;
140
+ crnmr: number;
141
+ o: number;
142
+ rs: number[];
143
+ sf: number[];
144
+ fc: number;
145
+ c: number;
146
+ c2d: [number, number, number];
147
+ c3d: [number, number, number];
148
+ p2d: string | null;
149
+ s: ID | null;
150
+ }
151
+
152
+ /**
153
+ * Interface for atom mapping information
154
+ */
155
+ declare interface AtomMapping {
132
156
  label: string;
133
157
  atom: number;
134
158
  }
135
159
 
160
+ declare interface AtomOutput {
161
+ id: ID;
162
+ parentID: ID;
163
+ name: string;
164
+ remarks: string;
165
+ nucleusType: NucleusType;
166
+ cipRank: {
167
+ canonical: number;
168
+ rd: number;
169
+ nmr: number;
170
+ };
171
+ ordinal: number;
172
+ stereochemistryFlags: number[];
173
+ spinSystemFlags: number[];
174
+ formalcharge: number;
175
+ partialCharge: number;
176
+ coordinates2D: [number, number, number];
177
+ coordinates3D: [number, number, number];
178
+ parent2D: string | null;
179
+ shift: ID | null;
180
+ }
181
+
136
182
  declare type AtomTypes = 'H' | 'C';
137
183
 
138
184
  export declare interface AutoPhaseCorrection2D {
@@ -266,6 +312,14 @@ declare interface BasePeak {
266
312
  id: string;
267
313
  }
268
314
 
315
+ declare interface BondInput {
316
+ id: ID;
317
+ b: number;
318
+ rs: number[];
319
+ sf: number[];
320
+ a: [ID, ID];
321
+ }
322
+
269
323
  declare interface BooleanField extends Field<boolean> {
270
324
  type: 'boolean';
271
325
  }
@@ -306,14 +360,6 @@ declare function checkRangeKind(range: Range_2): boolean;
306
360
 
307
361
  declare function checkSignalKinds(range: Range_2, kinds: string[]): boolean;
308
362
 
309
- export declare interface ChemicalShift {
310
- Element: string;
311
- Shift: string;
312
- Spincount: string;
313
- Nucleicount: string;
314
- Name: string;
315
- }
316
-
317
363
  declare type CommonField = SelectField | StringField | NumberField | BooleanField | LabelField;
318
364
 
319
365
  declare interface CompilePatternOptions {
@@ -325,22 +371,27 @@ declare interface CompilePatternOptions {
325
371
  };
326
372
  }
327
373
 
328
- export declare interface Coupling {
329
- atomFrom: number;
330
- atomTo: number;
331
- atomLabelTo: string;
332
- value: number;
333
- key: string;
334
- toDiaID: number;
335
- pathLength: number;
336
- }
337
-
338
374
  export declare const couplingACSPatterns: string[];
339
375
 
340
- declare interface CouplingConstant {
341
- Coupling: string;
342
- Shift1: string;
343
- Shift2: string;
376
+ declare interface CouplingGroupInput {
377
+ id: string;
378
+ parentID: string;
379
+ name: string;
380
+ remarks: string;
381
+ v: number;
382
+ vl: number;
383
+ vh: number;
384
+ sf: number[];
385
+ t: string;
386
+ }
387
+
388
+ declare interface CouplingInput {
389
+ id: ID;
390
+ pid: ID;
391
+ n: string;
392
+ r: string;
393
+ cg: ID;
394
+ s: [ID, ID];
344
395
  }
345
396
 
346
397
  export declare const couplingPatterns: OneLetterMultiplet[];
@@ -373,39 +424,36 @@ export declare interface CreateSignals2DOptions {
373
424
  maxX: number;
374
425
  }
375
426
 
376
- /**
377
- * CT results are stored in a CSV file with a specific format and a SDF file.
378
- * This function will parse the CSV and return an object with the different sections.
379
- * @param csv
380
- * @returns
381
- */
382
- declare function ctCSVParser(csv: string, options: {
383
- logger: LightLogger;
384
- }): CtCSVParserResult;
385
-
386
- declare interface CtCSVParserResult {
387
- 'ANALYSIS INFO'?: AnalysisInfoSection;
388
- SCORES?: ScoreEntry[];
389
- SPINSYSTEMS?: ParsedRow[];
390
- 'CHEMICAL SHIFTS (ppm)'?: ParsedRow[];
391
- 'COUPLING CONSTANTS (Hz)'?: ParsedRow[];
392
- LINESHAPES?: ParsedRow[];
393
- QMGI?: ParsedRow[];
394
- [key: string]: SectionData | undefined;
395
- }
396
-
397
- export declare function ctParser(sdf: string, csv: string, options: {
398
- OCL: {
399
- Molecule: typeof Molecule_2;
400
- };
401
- logger?: LightLogger;
402
- }): {
403
- molecules: ParsedMolecule[];
404
- sections: ReturnType<typeof ctCSVParser>;
405
- groups: GroupData[];
406
- };
427
+ declare interface CTJSONInput {
428
+ v: number;
429
+ vl: number;
430
+ vh: number;
431
+ f: number;
432
+ bi: number;
433
+ il: number;
434
+ sf: number[];
435
+ sst: number;
436
+ at: number;
437
+ ik: string;
438
+ p: PopulationInput[];
439
+ l: LineShapeData[];
440
+ sg: ShiftGroupEntry[];
441
+ s: ShiftInput[];
442
+ cg: CouplingGroupInput[];
443
+ c: CouplingInput[];
444
+ a: AtomInput[];
445
+ b: BondInput[];
446
+ }
447
+
448
+ declare interface CTSignal {
449
+ delta: number;
450
+ diaIDs: string[];
451
+ js: Jcoupling[];
452
+ nbAtoms: number;
453
+ atoms: number[];
454
+ }
407
455
 
408
- export declare type DataBaseLevelEntry = number | [number] | [number, number, number, number | null, number] | undefined | NMRSignalStatistics;
456
+ export declare type DataBaseLevelEntry = number | [number] | [number, number, number, number | null, number] | undefined | XDistributionStats;
409
457
 
410
458
  export declare type DataBaseLevelStructure = Record<string, DataBaseLevelEntry>;
411
459
 
@@ -867,10 +915,12 @@ export declare interface GetAssignmentsOptions {
867
915
  * correlation options
868
916
  */
869
917
  correlation?: {
870
- tolerance?: number;
918
+ tolerance?: Record<string, number>;
871
919
  };
872
920
  }
873
921
 
922
+ declare function getAtoms(a: AtomInput[]): AtomOutput[];
923
+
874
924
  export declare interface GetAutoAssignmentInput {
875
925
  spectra: SpectraData[];
876
926
  /**
@@ -948,19 +998,20 @@ export declare interface GetPeakListOptions extends GSDOptions, OptimizePeaksOpt
948
998
 
949
999
  export declare function getShiftX(spectrum: Entry1D): number;
950
1000
 
951
- export declare interface GroupData {
952
- id: string;
953
- molfile: string;
954
- spinSystem: {
955
- SSType: string;
956
- };
957
- couplingConstants: CouplingConstant[];
958
- chemicalShifts: ChemicalShift[];
959
- atomsMapping: AtomMapping[];
960
- atomsMappingLookup: Record<string, number>;
961
- signals?: NMRSignal1D[];
1001
+ declare interface HOSEPrediction {
1002
+ /**
1003
+ * In case the prediction is based on HOSE codes, this is the sphere
1004
+ * used to make the prediction.
1005
+ */
1006
+ sphere: number;
1007
+ /**
1008
+ * The HOSE code used to make the prediction.
1009
+ */
1010
+ idCode: string;
962
1011
  }
963
1012
 
1013
+ declare type ID = string;
1014
+
964
1015
  export declare const impurities: SolventImpurities;
965
1016
 
966
1017
  export declare type Impurity = Record<string, ImpuritySignal[]>;
@@ -1077,6 +1128,24 @@ declare interface LabelField extends BaseField {
1077
1128
  type: 'label';
1078
1129
  }
1079
1130
 
1131
+ declare interface LineShapeData {
1132
+ id: string;
1133
+ pid: string;
1134
+ n: string;
1135
+ r: string;
1136
+ sf: number[];
1137
+ l: {
1138
+ v: number;
1139
+ low: number;
1140
+ high: number;
1141
+ };
1142
+ g: {
1143
+ v: number;
1144
+ low: number;
1145
+ high: number;
1146
+ };
1147
+ }
1148
+
1080
1149
  declare interface ListField extends Field<string[]> {
1081
1150
  type: 'list';
1082
1151
  properties: Record<string, CommonField>;
@@ -1104,44 +1173,7 @@ declare interface MapOptions {
1104
1173
 
1105
1174
  export declare function mapPeaks(peaks: Peak1D[], spectrum: Entry1D, options?: MapOptions): Peak1D[];
1106
1175
 
1107
- export declare function mapRanges(ranges: Range_2[] | NMRRange[], spectrum: Entry1D, options?: MapOptions): {
1108
- absolute: number;
1109
- signals: {
1110
- originalDelta: number | undefined;
1111
- delta: number;
1112
- multiplicity: string;
1113
- js: Jcoupling[];
1114
- nbAtoms?: number | undefined;
1115
- atoms?: number[] | undefined;
1116
- assignment?: string | undefined;
1117
- diaIDs?: string[] | undefined;
1118
- integration?: number | undefined;
1119
- statistics?: NMRSignalStatistics | undefined;
1120
- kind: string;
1121
- id: string;
1122
- peaks: {
1123
- originalX: number;
1124
- x: number;
1125
- id: string;
1126
- kind?: string;
1127
- shape?: Shape1D;
1128
- y: number;
1129
- width: number;
1130
- }[];
1131
- }[];
1132
- originalFrom: number | undefined;
1133
- originalTo: number | undefined;
1134
- from: number;
1135
- to: number;
1136
- id: string;
1137
- kind: string;
1138
- integration: number;
1139
- nbAtoms?: number;
1140
- multiplicity?: string | undefined;
1141
- assignment?: string | undefined;
1142
- diaIDs?: string[] | undefined;
1143
- pubIntegral?: number | undefined;
1144
- }[];
1176
+ export declare function mapRanges(ranges: Range_2[] | NMRRange[], spectrum: Entry1D, options?: MapOptions): Range_2[];
1145
1177
 
1146
1178
  export declare function mapZones(zones: Zone[], datum: Entry2D, options?: MapOptions): {
1147
1179
  signals: {
@@ -1339,9 +1371,13 @@ export declare interface NMRSignal1D {
1339
1371
  nbAtoms?: number;
1340
1372
  integration?: number;
1341
1373
  peaks?: NMRPeak1D[];
1342
- statistics?: NMRSignalStatistics;
1343
1374
  }
1344
1375
 
1376
+ export declare type NMRSignal1DFromPrediction = MakeMandatory<NMRSignal1D, 'nbAtoms' | 'atoms' | 'diaIDs'> & {
1377
+ statistics?: XDistributionStats;
1378
+ metadata?: HOSEPrediction;
1379
+ };
1380
+
1345
1381
  export declare type NMRSignal1DWithAtomsAndDiaIDs = MakeMandatory<NMRSignal1D, 'atoms' | 'diaIDs' | 'nbAtoms'>;
1346
1382
 
1347
1383
  export declare type NMRSignal1DWithId = MakeMandatory<NMRSignal1D, 'id'>;
@@ -1361,21 +1397,6 @@ export declare type NMRSignal2DWithID<T extends Peak2D_2 = Peak2D_2> = MakeManda
1361
1397
 
1362
1398
  export declare type NMRSignal2DWithId = MakeMandatory<NMRSignal2D, 'id'>;
1363
1399
 
1364
- /**
1365
- * When predicted signals we obtain in some case statistics about the signals.
1366
- * This allows to determine what are the expected range of chemical shifts to expect.
1367
- */
1368
- export declare interface NMRSignalStatistics {
1369
- mean: number;
1370
- min: number;
1371
- q1?: number;
1372
- median: number;
1373
- q3?: number;
1374
- max: number;
1375
- sd?: number;
1376
- nb: number;
1377
- }
1378
-
1379
1400
  export declare interface NMRZone {
1380
1401
  x: FromTo;
1381
1402
  y: FromTo;
@@ -1396,10 +1417,17 @@ declare interface NMRZoneWithIds extends Omit<NMRZone, 'signals' | 'id'> {
1396
1417
  */
1397
1418
  export declare function normalizeNucleus(nucleus: string): string;
1398
1419
 
1420
+ declare interface NucleusType {
1421
+ atomicNumber: number;
1422
+ isotope: number;
1423
+ }
1424
+
1399
1425
  declare interface NumberField extends Field<number> {
1400
1426
  type: 'number';
1401
1427
  }
1402
1428
 
1429
+ declare type NumToNumFn = (x: number) => number;
1430
+
1403
1431
  declare type NUSDimension2 = FilterFactory<Entry2D, IndirectDimensionOptions> & Pick<NUSDimension2Options, 'name'>;
1404
1432
 
1405
1433
  declare interface NUSDimension2Options extends BaseFilter {
@@ -1525,7 +1553,7 @@ declare interface OptionsPeaksToRanges {
1525
1553
  symRatio?: number;
1526
1554
  }
1527
1555
 
1528
- export declare interface OptionsSignalsToXY {
1556
+ export declare interface OptionsSignalsToXY extends Partial<Simulate1DOptions> {
1529
1557
  frequency?: number;
1530
1558
  /**
1531
1559
  * The low limit of the ordinate variable.
@@ -1611,17 +1639,35 @@ declare type ParametersFromOptions = Record<Parameter, Record<string, number | (
1611
1639
 
1612
1640
  declare type ParametersFromSignal = Record<string, Record<string, number>>;
1613
1641
 
1614
- declare interface ParsedMolecule {
1615
- atomsMapping: Array<{
1616
- atom: number;
1617
- label: string;
1618
- }>;
1642
+ export declare function parseCT(json: CTJSONInput, molfile: string, options: {
1643
+ logger?: LightLogger;
1644
+ atomicNumber?: number;
1645
+ }): {
1646
+ signals: CTSignal[];
1647
+ atomsMapping: Array<AtomMapping>;
1619
1648
  atomsMappingLookup: Record<string, number>;
1620
1649
  molfile: string;
1621
1650
  id: string;
1651
+ shifts: ParsedShift[];
1652
+ couplings: ParsedCoupling[];
1653
+ };
1654
+
1655
+ /**
1656
+ * Interface for coupling data between atoms
1657
+ */
1658
+ declare interface ParsedCoupling {
1659
+ from: Atom[];
1660
+ to: Atom[];
1661
+ value: number;
1622
1662
  }
1623
1663
 
1624
- declare type ParsedRow = Record<string, string>;
1664
+ /**
1665
+ * Interface for chemical shift data
1666
+ */
1667
+ declare interface ParsedShift {
1668
+ atoms: Atom[];
1669
+ value: number;
1670
+ }
1625
1671
 
1626
1672
  export declare interface Peak1D extends Omit<NMRPeak1D, 'id'>, BasePeak {
1627
1673
  originalX?: number;
@@ -1766,6 +1812,17 @@ export declare interface PolynomialOptions {
1766
1812
  degree: number;
1767
1813
  }
1768
1814
 
1815
+ declare interface PopulationInput {
1816
+ id: ID;
1817
+ pid: ID;
1818
+ n: string;
1819
+ r: string;
1820
+ v: number;
1821
+ vl: number;
1822
+ vh: number;
1823
+ sf: number[];
1824
+ }
1825
+
1769
1826
  /**
1770
1827
  * Generate the 2D correlation nmr peaks based on the number of bonds between a pair of atoms
1771
1828
  * @param molecule
@@ -1994,8 +2051,8 @@ export declare interface Prediction2D extends PredictionBase2D {
1994
2051
 
1995
2052
  export declare interface PredictionBase1D {
1996
2053
  nucleus: string;
1997
- joinedSignals: NMRSignal1D[];
1998
- signals: NMRSignal1D[];
2054
+ joinedSignals: NMRSignal1DFromPrediction[];
2055
+ signals: NMRSignal1DFromPrediction[];
1999
2056
  ranges: NMRRange[];
2000
2057
  }
2001
2058
 
@@ -2229,13 +2286,6 @@ export declare interface ResurrectOptions {
2229
2286
  logger?: Logger;
2230
2287
  }
2231
2288
 
2232
- declare interface ScoreEntry {
2233
- key: string;
2234
- value: string;
2235
- }
2236
-
2237
- declare type SectionData = AnalysisInfoSection | ScoreEntry[] | ParsedRow[];
2238
-
2239
2289
  declare interface SelectField extends Field<any> {
2240
2290
  type: 'select';
2241
2291
  choices: any[];
@@ -2282,6 +2332,38 @@ declare interface Shift2DYOptions {
2282
2332
  shift: number;
2283
2333
  }
2284
2334
 
2335
+ declare interface ShiftGroupEntry {
2336
+ id: string;
2337
+ pid: string;
2338
+ n: string;
2339
+ r: string;
2340
+ v: number;
2341
+ vl: number;
2342
+ vh: number;
2343
+ s: number;
2344
+ c: number;
2345
+ ex: boolean;
2346
+ sf: number[];
2347
+ g: number;
2348
+ iw: number;
2349
+ rs: {
2350
+ v: number;
2351
+ vl: number;
2352
+ vh: number;
2353
+ sf: number[];
2354
+ };
2355
+ p: ID;
2356
+ l: ID;
2357
+ }
2358
+
2359
+ declare interface ShiftInput {
2360
+ id: ID;
2361
+ pid: ID;
2362
+ n: string;
2363
+ r: string;
2364
+ sg: ID;
2365
+ }
2366
+
2285
2367
  declare type ShiftTarget = 'origin' | 'current';
2286
2368
 
2287
2369
  declare type ShiftX = FilterFactory<Entry1D, ShiftXOptions> & Pick<ShiftXFilterOptions, 'name'>;
@@ -2342,7 +2424,7 @@ declare interface SignalAxis {
2342
2424
  }
2343
2425
 
2344
2426
  /**
2345
- * Join couplings smaller than a define tolerance.
2427
+ * Join couplings smaller than a defined tolerance.
2346
2428
  * The resulting coupling should be an average of the existing one.
2347
2429
  * If pathLength is specified and is not always the same this property will be removed.
2348
2430
  * @param signal
@@ -2352,7 +2434,7 @@ export declare function signalJoinCouplings(signal: NMRSignal1D, options?: Signa
2352
2434
 
2353
2435
  export declare interface SignalJoinCouplingsOptions {
2354
2436
  /**
2355
- * if it is true the coupling pattens will normalized to ACS suggested values
2437
+ * if it is true the coupling patterns will be normalized to ACS suggested values
2356
2438
  * @default false
2357
2439
  */
2358
2440
  acsFormat?: boolean;
@@ -2523,22 +2605,7 @@ export declare function signalsToXY(signals: NMRSignal1D[], options?: OptionsSig
2523
2605
  */
2524
2606
  export declare function simulate1D(spinSystemInput: SpinSystem, options?: Simulate1DOptions): DataXY<Float64Array<ArrayBufferLike>>;
2525
2607
 
2526
- declare interface Simulate1DOptions {
2527
- /**
2528
- * The linewidth of the output spectrum, expresed in Hz.
2529
- * @default 1
2530
- */
2531
- lineWidth?: number;
2532
- /**
2533
- * Maximum number of atoms on each cluster that can be considered to be simulated together. It affects the the quality and speed of the simulation.
2534
- * @default 8
2535
- */
2536
- maxClusterSize?: number;
2537
- /**
2538
- * The frequency in Mhz of the fake spectrometer that records the spectrum.
2539
- * @default 400
2540
- */
2541
- frequency?: number;
2608
+ export declare interface Simulate1DOptions extends SimulateXYPeaksOptions {
2542
2609
  /**
2543
2610
  * The low limit of the ordinate variable.
2544
2611
  * @default 0
@@ -2559,6 +2626,32 @@ declare interface Simulate1DOptions {
2559
2626
  * @default {kind:'gaussian'}
2560
2627
  */
2561
2628
  shape?: Shape1D;
2629
+ /**
2630
+ * Function to generate or add a baseline
2631
+ */
2632
+ baseline?: NumToNumFn;
2633
+ /**
2634
+ * Options to add noise to the spectrum
2635
+ */
2636
+ noise?: Extract<GenerateSpectrumOptions, 'noise'>;
2637
+ }
2638
+
2639
+ declare interface SimulateXYPeaksOptions {
2640
+ /**
2641
+ * The frequency in Mhz of the fake spectrometer that records the spectrum.
2642
+ * @default 400
2643
+ */
2644
+ frequency?: number;
2645
+ /**
2646
+ * The linewidth of the output spectrum, expresed in Hz.
2647
+ * @default 1
2648
+ */
2649
+ lineWidth?: number;
2650
+ /**
2651
+ * Maximum number of atoms on each cluster that can be considered to be simulated together. It affects the the quality and speed of the simulation.
2652
+ * @default 8
2653
+ */
2654
+ maxClusterSize?: number;
2562
2655
  }
2563
2656
 
2564
2657
  /**
@@ -2606,7 +2699,7 @@ export declare type SpectraData = SpectraData1D | SpectraData2D;
2606
2699
  export declare interface SpectraData1D {
2607
2700
  id?: string;
2608
2701
  ranges: NMRRange[];
2609
- info: any;
2702
+ info: Info1D;
2610
2703
  }
2611
2704
 
2612
2705
  export declare interface SpectraData1DWithIds extends Omit<SpectraData1D, 'ranges'> {
@@ -2620,7 +2713,7 @@ export declare interface SpectraData2D {
2620
2713
  * object with information about the spectrum, it is mandatory at the moment
2621
2714
  * to generate correlations.
2622
2715
  */
2623
- info: any;
2716
+ info: Info2D;
2624
2717
  }
2625
2718
 
2626
2719
  export declare interface SpectraData2DWithIds extends Omit<SpectraData2D, 'zones'> {