@@ -23,6 +23,7 @@ class NMRBlock(DataBlock):
23
23
description = "A data block for loading and visualizing 1D NMR data from Bruker projects or JCAMP-DX files."
24
24
25
25
accepted_file_extensions = BRUKER_FILE_EXTENSIONS + JCAMP_FILE_EXTENSIONS
26
+ processed_data : dict | None = None
26
27
defaults = {"process number" : 1 }
27
28
_supports_collections = False
28
29
@@ -34,7 +35,7 @@ def read_bruker_nmr_data(
34
35
self ,
35
36
filename : str | Path | None = None ,
36
37
file_info : dict | None = None ,
37
- ) -> tuple [dict | None , dict ] | None :
38
+ ) -> tuple [dict | None , dict ]:
38
39
"""Loads a Bruker project from the passed or attached zip file
39
40
and parses it into a serialized dataframe and metadata dictionary.
40
41
@@ -119,7 +120,6 @@ def read_bruker_nmr_data(
119
120
metadata ["title" ] = topspin_title
120
121
121
122
self .data ["metadata" ] = metadata
122
- self .data ["processed_data" ] = serialized_df
123
123
124
124
return serialized_df , metadata
125
125
@@ -202,24 +202,26 @@ def read_jcamp_nmr_data(
202
202
pass
203
203
204
204
serialized_df = df .to_dict () if (df is not None ) else None
205
-
206
- self .data ["processed_data" ] = serialized_df
207
205
self .data ["metadata" ] = metadata
208
206
207
+ return serialized_df , metadata
208
+
209
209
def load_nmr_data (self , file_info : dict ):
210
210
location , name , ext = self ._extract_file_info (file_info = file_info )
211
211
212
212
if ext == ".zip" :
213
- self .read_bruker_nmr_data (file_info = file_info )
213
+ df , metadata = self .read_bruker_nmr_data (file_info = file_info )
214
214
215
215
elif ext in (".jdx" , ".dx" ):
216
- self .read_jcamp_nmr_data (file_info = file_info )
216
+ df , metadata = self .read_jcamp_nmr_data (file_info = file_info )
217
217
218
218
else :
219
219
raise RuntimeError (
220
220
f"Unsupported file extension for NMR reader: { ext } (must be one of { self .accepted_file_extensions } )"
221
221
)
222
222
223
+ return df
224
+
223
225
def generate_nmr_plot (self , parse : bool = True ):
224
226
"""Generate an NMR plot and store processed data for the
225
227
data files attached to this block.
@@ -232,7 +234,7 @@ def generate_nmr_plot(self, parse: bool = True):
232
234
file_info = get_file_info_by_id (self .data ["file_id" ], update_if_live = True )
233
235
name , ext = os .path .splitext (file_info ["name" ])
234
236
235
- self .load_nmr_data (file_info )
237
+ self .processed_data = self . load_nmr_data (file_info )
236
238
237
239
processed_data_shape = self .data .get ("metadata" , {}).get ("processed_data_shape" , [])
238
240
if not processed_data_shape or len (processed_data_shape ) > 1 :
@@ -241,14 +243,14 @@ def generate_nmr_plot(self, parse: bool = True):
241
243
)
242
244
return
243
245
244
- if "processed_data" not in self .data or not self . data [ " processed_data" ] :
246
+ if not self .processed_data :
245
247
self .data ["bokeh_plot_data" ] = None
246
248
warnings .warn (
247
249
"No compatible processed data available for plotting, only metadata will be displayed."
248
250
)
249
251
return
250
252
251
- df = pd .DataFrame (self .data [ " processed_data" ] )
253
+ df = pd .DataFrame (self .processed_data )
252
254
df ["normalized intensity" ] = df .intensity / df .intensity .max ()
253
255
254
256
self .data ["bokeh_plot_data" ] = self .make_nmr_plot (df , self .data ["metadata" ])
0 commit comments