@@ -323,7 +323,6 @@ def gen_methods_report_str(concise=False):
323323 return output
324324
325325
326- # TODO: UPDATE
327326def gen_methods_text_str (model = None ):
328327 """Generate a string representation of a template methods report.
329328
@@ -334,32 +333,43 @@ def gen_methods_text_str(model=None):
334333 If None, the text is returned as a template, without values.
335334 """
336335
337- template = (
336+ if model :
337+ settings_names = list (model .algorithm .settings .values .keys ())
338+ settings_values = list (model .algorithm .settings .values .values ())
339+ else :
340+ settings_names = []
341+ settings_values = []
342+
343+ template = [
338344 "The periodic & aperiodic spectral parameterization algorithm (version {}) "
339345 "was used to parameterize neural power spectra. "
340346 "The model was fit with {} aperiodic mode and {} periodic mode. "
341347 "Settings for the algorithm were set as: "
342- "peak width limits : {}; "
343- "max number of peaks : {}; "
344- "minimum peak height : {}; "
345- "peak threshold : {}; ."
348+ ]
349+
350+ if settings_names :
351+ settings_strs = [el + ' : {}, ' for el in settings_names ]
352+ settings_strs [- 1 ] = settings_strs [- 1 ][:- 2 ] + '. '
353+ template .extend (settings_strs )
354+ else :
355+ template .extend ('XX. ' )
356+
357+ template .extend ([
346358 "Power spectra were parameterized across the frequency range "
347359 "{} to {} Hz."
348- )
360+ ] )
349361
350- if model :
351- freq_range = model .data .freq_range if model . data . has_data else ( 'XX' , 'XX' )
362+ if model and model . data . has_data :
363+ freq_range = model .data .freq_range
352364 else :
353365 freq_range = ('XX' , 'XX' )
354366
355- methods_str = template .format (MODULE_VERSION ,
356- model .modes .aperiodic .name if model else 'XX' ,
357- model .modes .periodic .name if model else 'XX' ,
358- model .algorithm .settings .peak_width_limits if model else 'XX' ,
359- model .algorithm .settings .max_n_peaks if model else 'XX' ,
360- model .algorithm .settings .min_peak_height if model else 'XX' ,
361- model .algorithm .settings .peak_threshold if model else 'XX' ,
362- * freq_range )
367+ methods_str = '' .join (template ).format (\
368+ MODULE_VERSION ,
369+ model .modes .aperiodic .name if model else 'XX' ,
370+ model .modes .periodic .name if model else 'XX' ,
371+ * settings_values ,
372+ * freq_range )
363373
364374 return methods_str
365375
@@ -401,21 +411,18 @@ def gen_model_results_str(model, concise=False):
401411 _report_str_model (model ),
402412 '' ,
403413
404- # Aperiodic parameters
405414 'Aperiodic Parameters (\' {}\' mode)' .format (model .modes .aperiodic .name ),
406415 '(' + ', ' .join (model .modes .aperiodic .params .labels ) + ')' ,
407416 ', ' .join (['{:2.4f}' ] * \
408417 len (model .results .params .aperiodic .params )).format (* model .results .params .aperiodic .params ),
409418 '' ,
410419
411- # Peak parameters
412420 'Peak Parameters (\' {}\' mode) {} peaks found' .format (\
413421 model .modes .periodic .name , model .results .n_peaks ),
414422 * [peak_str .format (* op ) for op in model .results .params .periodic .params ],
415423 '' ,
416424
417- # Metrics
418- 'Model fit quality metrics:' ,
425+ 'Model metrics:' ,
419426 * ['{:>18s} is {:1.4f} {:8s}' .format ('{:s} ({:s})' .format (* key .split ('_' )), res , ' ' ) \
420427 for key , res in model .results .metrics .results .items ()],
421428 '' ,
@@ -460,28 +467,31 @@ def gen_group_results_str(group, concise=False):
460467 _report_str_model (group ),
461468 '' ,
462469
463- # Aperiodic parameters
464470 'Aperiodic Parameters (\' {}\' mode)' .format (group .modes .aperiodic .name ),
465471 * [el for el in [\
466472 '{:8s} - Min: {:6.2f}, Max: {:6.2f}, Mean: {:5.2f}' .format (label , \
467473 * compute_arr_desc (group .results .get_params ('aperiodic' , label ))) \
468474 for label in group .modes .aperiodic .params .labels ]],
469475 '' ,
470476
471- # Peak Parameters
472477 'Peak Parameters (\' {}\' mode) {} total peaks found' .format (\
473478 group .modes .periodic .name , sum (group .results .n_peaks )),
474479 '' ,
480+ ]
475481
476- # Metrics
477- 'Model fit quality metrics:' ,
478- * ['{:>18s} - Min: {:6.3f}, Max: {:6.3f}, Mean: {:5.3f}' .format (\
479- '{:s} ({:s})' .format (* label .split ('_' )),
480- * compute_arr_desc (group .results .get_metrics (label ))) \
481- for label in group .results .metrics .labels ],
482- '' ,
482+ if len (group .results .metrics ) > 0 :
483+ str_lst .extend ([
484+ 'Model metrics:' ,
485+ * ['{:>18s} - Min: {:6.3f}, Max: {:6.3f}, Mean: {:5.3f}' .format (\
486+ '{:s} ({:s})' .format (* label .split ('_' )),
487+ * compute_arr_desc (group .results .get_metrics (label ))) \
488+ for label in group .results .metrics .labels ],
489+ '' ,
490+ ])
491+
492+ str_lst .extend ([
483493 DIVIDER ,
484- ]
494+ ])
485495
486496 output = _format (str_lst , concise )
487497
@@ -525,15 +535,13 @@ def gen_time_results_str(time, concise=False):
525535 _report_str_model (time ),
526536 '' ,
527537
528- # Aperiodic parameters
529538 'Aperiodic Parameters (\' {}\' mode)' .format (time .modes .aperiodic .name ),
530539 * [el for el in [\
531540 '{:8s} - Min: {:6.2f}, Max: {:6.2f}, Mean: {:5.2f}' .format (label , \
532541 * compute_arr_desc (time .results .time_results [label ])) \
533542 for label in time .modes .aperiodic .params .labels ]],
534543 '' ,
535544
536- # Peak Parameters
537545 'Peak Parameters (\' {}\' mode) - mean values across windows' .format (\
538546 time .modes .periodic .name ),
539547 * [peak_str .format (* [band_label ] + \
@@ -543,8 +551,7 @@ def gen_time_results_str(time, concise=False):
543551 for band_label in time .results .bands .labels ],
544552 '' ,
545553
546- # Metrics
547- 'Model fit quality metrics (values across windows):' ,
554+ 'Model metrics (values across windows):' ,
548555 * ['{:>18s} - Min: {:6.3f}, Max: {:6.3f}, Mean: {:5.3f}' .format (\
549556 '{:s} ({:s})' .format (* key .split ('_' )),
550557 * compute_arr_desc (time .results .time_results [key ])) \
@@ -597,15 +604,13 @@ def gen_event_results_str(event, concise=False):
597604 _report_str_model (event ),
598605 '' ,
599606
600- # Aperiodic parameters
601607 'Aperiodic Parameters (\' {}\' mode)' .format (event .modes .aperiodic .name ),
602608 * [el for el in [\
603609 '{:8s} - Min: {:6.2f}, Max: {:6.2f}, Mean: {:5.2f}' .format (label , \
604610 * compute_arr_desc (np .mean (event .results .event_time_results [label ]))) \
605611 for label in event .modes .aperiodic .params .labels ]],
606612 '' ,
607613
608- # Peak Parameters
609614 'Peak Parameters (\' {}\' mode) - mean values across windows' .format (\
610615 event .modes .periodic .name ),
611616 * [peak_str .format (* [band_label ] + \
@@ -616,8 +621,7 @@ def gen_event_results_str(event, concise=False):
616621 for band_label in event .results .bands .labels ],
617622 '' ,
618623
619- # Metrics
620- 'Model fit quality metrics (values across events):' ,
624+ 'Model metrics (values across events):' ,
621625 * ['{:>18s} - Min: {:6.3f}, Max: {:6.3f}, Mean: {:5.3f}' .format (\
622626 '{:s} ({:s})' .format (* key .split ('_' )),
623627 * compute_arr_desc (np .mean (event .results .event_time_results [key ], 1 ))) \
0 commit comments