nmr-processing 17.1.2 → 17.2.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,7 +28,7 @@ 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
33
  import type { XYEquallySpacedOptions } from 'ml-spectra-processing';
34
34
  import type { XYNumber } from 'spectrum-generator';
@@ -42,8 +42,6 @@ export declare interface AirplsOptions {
42
42
  tolerance: number;
43
43
  }
44
44
 
45
- declare type AnalysisInfoSection = Record<string, string>;
46
-
47
45
  declare type Apodization1D = FilterFactory<Entry1D, Apodization2DOptions> & Pick<Apodization1DFilterOptions, 'name'>;
48
46
 
49
47
  declare interface Apodization1DFilterOptions extends BaseFilter {
@@ -128,11 +126,58 @@ export declare interface ApplyWindowOptions {
128
126
  output?: DoubleArray;
129
127
  }
130
128
 
131
- export declare interface AtomMapping {
129
+ declare type Atom = ReturnType<typeof getAtoms>[0];
130
+
131
+ declare interface AtomInput {
132
+ id: ID;
133
+ pid: ID;
134
+ n: string;
135
+ r: string;
136
+ nc: number;
137
+ crcan: number;
138
+ crrd: number;
139
+ crnmr: number;
140
+ o: number;
141
+ rs: number[];
142
+ sf: number[];
143
+ fc: number;
144
+ c: number;
145
+ c2d: [number, number, number];
146
+ c3d: [number, number, number];
147
+ p2d: string | null;
148
+ s: ID | null;
149
+ }
150
+
151
+ /**
152
+ * Interface for atom mapping information
153
+ */
154
+ declare interface AtomMapping {
132
155
  label: string;
133
156
  atom: number;
134
157
  }
135
158
 
159
+ declare interface AtomOutput {
160
+ id: ID;
161
+ parentID: ID;
162
+ name: string;
163
+ remarks: string;
164
+ nucleusType: NucleusType;
165
+ cipRank: {
166
+ canonical: number;
167
+ rd: number;
168
+ nmr: number;
169
+ };
170
+ ordinal: number;
171
+ stereochemistryFlags: number[];
172
+ spinSystemFlags: number[];
173
+ formalcharge: number;
174
+ partialCharge: number;
175
+ coordinates2D: [number, number, number];
176
+ coordinates3D: [number, number, number];
177
+ parent2D: string | null;
178
+ shift: ID | null;
179
+ }
180
+
136
181
  declare type AtomTypes = 'H' | 'C';
137
182
 
138
183
  export declare interface AutoPhaseCorrection2D {
@@ -266,6 +311,14 @@ declare interface BasePeak {
266
311
  id: string;
267
312
  }
268
313
 
314
+ declare interface BondInput {
315
+ id: ID;
316
+ b: number;
317
+ rs: number[];
318
+ sf: number[];
319
+ a: [ID, ID];
320
+ }
321
+
269
322
  declare interface BooleanField extends Field<boolean> {
270
323
  type: 'boolean';
271
324
  }
@@ -306,14 +359,6 @@ declare function checkRangeKind(range: Range_2): boolean;
306
359
 
307
360
  declare function checkSignalKinds(range: Range_2, kinds: string[]): boolean;
308
361
 
309
- export declare interface ChemicalShift {
310
- Element: string;
311
- Shift: string;
312
- Spincount: string;
313
- Nucleicount: string;
314
- Name: string;
315
- }
316
-
317
362
  declare type CommonField = SelectField | StringField | NumberField | BooleanField | LabelField;
318
363
 
319
364
  declare interface CompilePatternOptions {
@@ -325,22 +370,27 @@ declare interface CompilePatternOptions {
325
370
  };
326
371
  }
327
372
 
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
373
  export declare const couplingACSPatterns: string[];
339
374
 
340
- declare interface CouplingConstant {
341
- Coupling: string;
342
- Shift1: string;
343
- Shift2: string;
375
+ declare interface CouplingGroupInput {
376
+ id: string;
377
+ parentID: string;
378
+ name: string;
379
+ remarks: string;
380
+ v: number;
381
+ vl: number;
382
+ vh: number;
383
+ sf: number[];
384
+ t: string;
385
+ }
386
+
387
+ declare interface CouplingInput {
388
+ id: ID;
389
+ pid: ID;
390
+ n: string;
391
+ r: string;
392
+ cg: ID;
393
+ s: [ID, ID];
344
394
  }
345
395
 
346
396
  export declare const couplingPatterns: OneLetterMultiplet[];
@@ -373,39 +423,36 @@ export declare interface CreateSignals2DOptions {
373
423
  maxX: number;
374
424
  }
375
425
 
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
- };
426
+ declare interface CTJSONInput {
427
+ v: number;
428
+ vl: number;
429
+ vh: number;
430
+ f: number;
431
+ bi: number;
432
+ il: number;
433
+ sf: number[];
434
+ sst: number;
435
+ at: number;
436
+ ik: string;
437
+ p: PopulationInput[];
438
+ l: LineShapeData[];
439
+ sg: ShiftGroupEntry[];
440
+ s: ShiftInput[];
441
+ cg: CouplingGroupInput[];
442
+ c: CouplingInput[];
443
+ a: AtomInput[];
444
+ b: BondInput[];
445
+ }
446
+
447
+ declare interface CTSignal {
448
+ delta: number;
449
+ diaIDs: string[];
450
+ js: Jcoupling[];
451
+ nbAtoms: number;
452
+ atoms: number[];
453
+ }
407
454
 
408
- export declare type DataBaseLevelEntry = number | [number] | [number, number, number, number | null, number] | undefined | NMRSignalStatistics;
455
+ export declare type DataBaseLevelEntry = number | [number] | [number, number, number, number | null, number] | undefined | HOSEPredictionStatistics;
409
456
 
410
457
  export declare type DataBaseLevelStructure = Record<string, DataBaseLevelEntry>;
411
458
 
@@ -867,10 +914,12 @@ export declare interface GetAssignmentsOptions {
867
914
  * correlation options
868
915
  */
869
916
  correlation?: {
870
- tolerance?: number;
917
+ tolerance?: Record<string, number>;
871
918
  };
872
919
  }
873
920
 
921
+ declare function getAtoms(a: AtomInput[]): AtomOutput[];
922
+
874
923
  export declare interface GetAutoAssignmentInput {
875
924
  spectra: SpectraData[];
876
925
  /**
@@ -948,19 +997,36 @@ export declare interface GetPeakListOptions extends GSDOptions, OptimizePeaksOpt
948
997
 
949
998
  export declare function getShiftX(spectrum: Entry1D): number;
950
999
 
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[];
1000
+ declare interface HOSEPrediction {
1001
+ /**
1002
+ * In case the prediction is based on HOSE codes, this is the sphere
1003
+ * used to make the prediction.
1004
+ */
1005
+ sphere: number;
1006
+ /**
1007
+ * If the prediction is based on a database of HOSE codes, those
1008
+ * are the statistics for this specific HOSE code used for the prediction.
1009
+ */
1010
+ statistics: HOSEPredictionStatistics;
1011
+ }
1012
+
1013
+ /**
1014
+ * When predicted signals we obtain in some case statistics about the signals.
1015
+ * This allows to determine what are the expected range of chemical shifts to expect.
1016
+ */
1017
+ export declare interface HOSEPredictionStatistics {
1018
+ mean: number;
1019
+ min: number;
1020
+ q1?: number;
1021
+ median: number;
1022
+ q3?: number;
1023
+ max: number;
1024
+ sd?: number;
1025
+ nb: number;
962
1026
  }
963
1027
 
1028
+ declare type ID = string;
1029
+
964
1030
  export declare const impurities: SolventImpurities;
965
1031
 
966
1032
  export declare type Impurity = Record<string, ImpuritySignal[]>;
@@ -1077,6 +1143,24 @@ declare interface LabelField extends BaseField {
1077
1143
  type: 'label';
1078
1144
  }
1079
1145
 
1146
+ declare interface LineShapeData {
1147
+ id: string;
1148
+ pid: string;
1149
+ n: string;
1150
+ r: string;
1151
+ sf: number[];
1152
+ l: {
1153
+ v: number;
1154
+ low: number;
1155
+ high: number;
1156
+ };
1157
+ g: {
1158
+ v: number;
1159
+ low: number;
1160
+ high: number;
1161
+ };
1162
+ }
1163
+
1080
1164
  declare interface ListField extends Field<string[]> {
1081
1165
  type: 'list';
1082
1166
  properties: Record<string, CommonField>;
@@ -1104,44 +1188,7 @@ declare interface MapOptions {
1104
1188
 
1105
1189
  export declare function mapPeaks(peaks: Peak1D[], spectrum: Entry1D, options?: MapOptions): Peak1D[];
1106
1190
 
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
- }[];
1191
+ export declare function mapRanges(ranges: Range_2[] | NMRRange[], spectrum: Entry1D, options?: MapOptions): Range_2[];
1145
1192
 
1146
1193
  export declare function mapZones(zones: Zone[], datum: Entry2D, options?: MapOptions): {
1147
1194
  signals: {
@@ -1339,7 +1386,7 @@ export declare interface NMRSignal1D {
1339
1386
  nbAtoms?: number;
1340
1387
  integration?: number;
1341
1388
  peaks?: NMRPeak1D[];
1342
- statistics?: NMRSignalStatistics;
1389
+ prediction?: Prediction;
1343
1390
  }
1344
1391
 
1345
1392
  export declare type NMRSignal1DWithAtomsAndDiaIDs = MakeMandatory<NMRSignal1D, 'atoms' | 'diaIDs' | 'nbAtoms'>;
@@ -1361,21 +1408,6 @@ export declare type NMRSignal2DWithID<T extends Peak2D_2 = Peak2D_2> = MakeManda
1361
1408
 
1362
1409
  export declare type NMRSignal2DWithId = MakeMandatory<NMRSignal2D, 'id'>;
1363
1410
 
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
1411
  export declare interface NMRZone {
1380
1412
  x: FromTo;
1381
1413
  y: FromTo;
@@ -1396,10 +1428,17 @@ declare interface NMRZoneWithIds extends Omit<NMRZone, 'signals' | 'id'> {
1396
1428
  */
1397
1429
  export declare function normalizeNucleus(nucleus: string): string;
1398
1430
 
1431
+ declare interface NucleusType {
1432
+ atomicNumber: number;
1433
+ isotope: number;
1434
+ }
1435
+
1399
1436
  declare interface NumberField extends Field<number> {
1400
1437
  type: 'number';
1401
1438
  }
1402
1439
 
1440
+ declare type NumToNumFn = (x: number) => number;
1441
+
1403
1442
  declare type NUSDimension2 = FilterFactory<Entry2D, IndirectDimensionOptions> & Pick<NUSDimension2Options, 'name'>;
1404
1443
 
1405
1444
  declare interface NUSDimension2Options extends BaseFilter {
@@ -1525,7 +1564,7 @@ declare interface OptionsPeaksToRanges {
1525
1564
  symRatio?: number;
1526
1565
  }
1527
1566
 
1528
- export declare interface OptionsSignalsToXY {
1567
+ export declare interface OptionsSignalsToXY extends Partial<Simulate1DOptions> {
1529
1568
  frequency?: number;
1530
1569
  /**
1531
1570
  * The low limit of the ordinate variable.
@@ -1611,17 +1650,35 @@ declare type ParametersFromOptions = Record<Parameter, Record<string, number | (
1611
1650
 
1612
1651
  declare type ParametersFromSignal = Record<string, Record<string, number>>;
1613
1652
 
1614
- declare interface ParsedMolecule {
1615
- atomsMapping: Array<{
1616
- atom: number;
1617
- label: string;
1618
- }>;
1653
+ export declare function parseCT(json: CTJSONInput, molfile: string, options: {
1654
+ logger?: LightLogger;
1655
+ atomicNumber?: number;
1656
+ }): {
1657
+ signals: CTSignal[];
1658
+ atomsMapping: Array<AtomMapping>;
1619
1659
  atomsMappingLookup: Record<string, number>;
1620
1660
  molfile: string;
1621
1661
  id: string;
1662
+ shifts: ParsedShift[];
1663
+ couplings: ParsedCoupling[];
1664
+ };
1665
+
1666
+ /**
1667
+ * Interface for coupling data between atoms
1668
+ */
1669
+ declare interface ParsedCoupling {
1670
+ from: Atom[];
1671
+ to: Atom[];
1672
+ value: number;
1622
1673
  }
1623
1674
 
1624
- declare type ParsedRow = Record<string, string>;
1675
+ /**
1676
+ * Interface for chemical shift data
1677
+ */
1678
+ declare interface ParsedShift {
1679
+ atoms: Atom[];
1680
+ value: number;
1681
+ }
1625
1682
 
1626
1683
  export declare interface Peak1D extends Omit<NMRPeak1D, 'id'>, BasePeak {
1627
1684
  originalX?: number;
@@ -1766,6 +1823,17 @@ export declare interface PolynomialOptions {
1766
1823
  degree: number;
1767
1824
  }
1768
1825
 
1826
+ declare interface PopulationInput {
1827
+ id: ID;
1828
+ pid: ID;
1829
+ n: string;
1830
+ r: string;
1831
+ v: number;
1832
+ vl: number;
1833
+ vh: number;
1834
+ sf: number[];
1835
+ }
1836
+
1769
1837
  /**
1770
1838
  * Generate the 2D correlation nmr peaks based on the number of bonds between a pair of atoms
1771
1839
  * @param molecule
@@ -1980,6 +2048,10 @@ declare interface PredictHSQCOptions {
1980
2048
  };
1981
2049
  }
1982
2050
 
2051
+ declare interface Prediction {
2052
+ hose?: HOSEPrediction;
2053
+ }
2054
+
1983
2055
  export declare interface Prediction1D extends PredictionBase1D {
1984
2056
  molfile: string;
1985
2057
  diaIDs: string[];
@@ -2229,13 +2301,6 @@ export declare interface ResurrectOptions {
2229
2301
  logger?: Logger;
2230
2302
  }
2231
2303
 
2232
- declare interface ScoreEntry {
2233
- key: string;
2234
- value: string;
2235
- }
2236
-
2237
- declare type SectionData = AnalysisInfoSection | ScoreEntry[] | ParsedRow[];
2238
-
2239
2304
  declare interface SelectField extends Field<any> {
2240
2305
  type: 'select';
2241
2306
  choices: any[];
@@ -2282,6 +2347,38 @@ declare interface Shift2DYOptions {
2282
2347
  shift: number;
2283
2348
  }
2284
2349
 
2350
+ declare interface ShiftGroupEntry {
2351
+ id: string;
2352
+ pid: string;
2353
+ n: string;
2354
+ r: string;
2355
+ v: number;
2356
+ vl: number;
2357
+ vh: number;
2358
+ s: number;
2359
+ c: number;
2360
+ ex: boolean;
2361
+ sf: number[];
2362
+ g: number;
2363
+ iw: number;
2364
+ rs: {
2365
+ v: number;
2366
+ vl: number;
2367
+ vh: number;
2368
+ sf: number[];
2369
+ };
2370
+ p: ID;
2371
+ l: ID;
2372
+ }
2373
+
2374
+ declare interface ShiftInput {
2375
+ id: ID;
2376
+ pid: ID;
2377
+ n: string;
2378
+ r: string;
2379
+ sg: ID;
2380
+ }
2381
+
2285
2382
  declare type ShiftTarget = 'origin' | 'current';
2286
2383
 
2287
2384
  declare type ShiftX = FilterFactory<Entry1D, ShiftXOptions> & Pick<ShiftXFilterOptions, 'name'>;
@@ -2342,7 +2439,7 @@ declare interface SignalAxis {
2342
2439
  }
2343
2440
 
2344
2441
  /**
2345
- * Join couplings smaller than a define tolerance.
2442
+ * Join couplings smaller than a defined tolerance.
2346
2443
  * The resulting coupling should be an average of the existing one.
2347
2444
  * If pathLength is specified and is not always the same this property will be removed.
2348
2445
  * @param signal
@@ -2352,7 +2449,7 @@ export declare function signalJoinCouplings(signal: NMRSignal1D, options?: Signa
2352
2449
 
2353
2450
  export declare interface SignalJoinCouplingsOptions {
2354
2451
  /**
2355
- * if it is true the coupling pattens will normalized to ACS suggested values
2452
+ * if it is true the coupling patterns will be normalized to ACS suggested values
2356
2453
  * @default false
2357
2454
  */
2358
2455
  acsFormat?: boolean;
@@ -2523,22 +2620,7 @@ export declare function signalsToXY(signals: NMRSignal1D[], options?: OptionsSig
2523
2620
  */
2524
2621
  export declare function simulate1D(spinSystemInput: SpinSystem, options?: Simulate1DOptions): DataXY<Float64Array<ArrayBufferLike>>;
2525
2622
 
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;
2623
+ export declare interface Simulate1DOptions extends SimulateXYPeaksOptions {
2542
2624
  /**
2543
2625
  * The low limit of the ordinate variable.
2544
2626
  * @default 0
@@ -2559,6 +2641,32 @@ declare interface Simulate1DOptions {
2559
2641
  * @default {kind:'gaussian'}
2560
2642
  */
2561
2643
  shape?: Shape1D;
2644
+ /**
2645
+ * Function to generate or add a baseline
2646
+ */
2647
+ baseline?: NumToNumFn;
2648
+ /**
2649
+ * Options to add noise to the spectrum
2650
+ */
2651
+ noise?: Extract<GenerateSpectrumOptions, 'noise'>;
2652
+ }
2653
+
2654
+ declare interface SimulateXYPeaksOptions {
2655
+ /**
2656
+ * The frequency in Mhz of the fake spectrometer that records the spectrum.
2657
+ * @default 400
2658
+ */
2659
+ frequency?: number;
2660
+ /**
2661
+ * The linewidth of the output spectrum, expresed in Hz.
2662
+ * @default 1
2663
+ */
2664
+ lineWidth?: number;
2665
+ /**
2666
+ * 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.
2667
+ * @default 8
2668
+ */
2669
+ maxClusterSize?: number;
2562
2670
  }
2563
2671
 
2564
2672
  /**
@@ -2606,7 +2714,7 @@ export declare type SpectraData = SpectraData1D | SpectraData2D;
2606
2714
  export declare interface SpectraData1D {
2607
2715
  id?: string;
2608
2716
  ranges: NMRRange[];
2609
- info: any;
2717
+ info: Info1D;
2610
2718
  }
2611
2719
 
2612
2720
  export declare interface SpectraData1DWithIds extends Omit<SpectraData1D, 'ranges'> {
@@ -2620,7 +2728,7 @@ export declare interface SpectraData2D {
2620
2728
  * object with information about the spectrum, it is mandatory at the moment
2621
2729
  * to generate correlations.
2622
2730
  */
2623
- info: any;
2731
+ info: Info2D;
2624
2732
  }
2625
2733
 
2626
2734
  export declare interface SpectraData2DWithIds extends Omit<SpectraData2D, 'zones'> {