diff --git a/src/ria_toolkit_oss/annotations/cusum_annotator.py b/src/ria_toolkit_oss/annotations/cusum_annotator.py index 9556125..22ca4c4 100644 --- a/src/ria_toolkit_oss/annotations/cusum_annotator.py +++ b/src/ria_toolkit_oss/annotations/cusum_annotator.py @@ -42,7 +42,8 @@ def annotate_with_cusum( if sample_rate is None: raise ValueError( "Recording metadata does not contain 'sample_rate'. " - "Supply it with --sample-rate when using the CLI, or set recording.sample_rate before calling this function." + "Supply it with --sample-rate when using the CLI, or set " + "recording.sample_rate before calling this function." ) center_frequency = recording.metadata.get("center_frequency", 0) diff --git a/src/ria_toolkit_oss/annotations/energy_detector.py b/src/ria_toolkit_oss/annotations/energy_detector.py index 1a482bc..7a554c0 100644 --- a/src/ria_toolkit_oss/annotations/energy_detector.py +++ b/src/ria_toolkit_oss/annotations/energy_detector.py @@ -151,7 +151,8 @@ def detect_signals_energy( if sample_rate is None: raise ValueError( "Recording metadata does not contain 'sample_rate'. " - "Supply it with --sample-rate when using the CLI, or set recording.sample_rate before calling this function." + "Supply it with --sample-rate when using the CLI, or set " + "recording.sample_rate before calling this function." ) center_frequency = recording.metadata.get("center_frequency", 0) diff --git a/src/ria_toolkit_oss/annotations/parallel_signal_separator.py b/src/ria_toolkit_oss/annotations/parallel_signal_separator.py index 4e08353..2838ede 100644 --- a/src/ria_toolkit_oss/annotations/parallel_signal_separator.py +++ b/src/ria_toolkit_oss/annotations/parallel_signal_separator.py @@ -406,7 +406,8 @@ def split_recording_annotations( if sample_rate is None: raise ValueError( "Recording metadata does not contain 'sample_rate'. " - "Supply it with --sample-rate when using the CLI, or set recording.sample_rate before calling this function." + "Supply it with --sample-rate when using the CLI, or set " + "recording.sample_rate before calling this function." ) center_frequency = recording.metadata.get("center_frequency", 0.0) diff --git a/src/ria_toolkit_oss/annotations/threshold_qualifier.py b/src/ria_toolkit_oss/annotations/threshold_qualifier.py index 24ef833..d8701ca 100644 --- a/src/ria_toolkit_oss/annotations/threshold_qualifier.py +++ b/src/ria_toolkit_oss/annotations/threshold_qualifier.py @@ -221,7 +221,8 @@ def threshold_qualifier( if sample_rate is None: raise ValueError( "Recording metadata does not contain 'sample_rate'. " - "Supply it with --sample-rate when using the CLI, or set recording.sample_rate before calling this function." + "Supply it with --sample-rate when using the CLI, or set " + "recording.sample_rate before calling this function." ) center_frequency = recording.metadata.get("center_frequency", 0) diff --git a/src/ria_toolkit_oss_cli/ria_toolkit_oss/annotate.py b/src/ria_toolkit_oss_cli/ria_toolkit_oss/annotate.py index d8024eb..6477d40 100644 --- a/src/ria_toolkit_oss_cli/ria_toolkit_oss/annotate.py +++ b/src/ria_toolkit_oss_cli/ria_toolkit_oss/annotate.py @@ -501,7 +501,10 @@ def clear(input, output, overwrite, force, quiet): default="standalone", help="Annotation type", ) -@click.option("--sample-rate", type=float, default=None, help="Sample rate in Hz (overrides metadata; required if not in file)") +@click.option( + "--sample-rate", type=float, default=None, + help="Sample rate in Hz (overrides metadata; required if not in file)" +) @click.option("--output", "-o", type=click.Path(), help="Output file path") @click.option("--overwrite", is_flag=True, help="Overwrite input file (non-SigMF only)") @click.option("--quiet", is_flag=True, help="Quiet mode") @@ -613,7 +616,10 @@ def energy( default="standalone", help="Annotation type", ) -@click.option("--sample-rate", type=float, default=None, help="Sample rate in Hz (overrides metadata; required if not in file)") +@click.option( + "--sample-rate", type=float, default=None, + help="Sample rate in Hz (overrides metadata; required if not in file)" +) @click.option("--output", "-o", type=click.Path(), help="Output file path") @click.option("--overwrite", is_flag=True, help="Overwrite input file (non-SigMF only)") @click.option("--quiet", is_flag=True, help="Quiet mode") @@ -700,7 +706,10 @@ def cusum(input, label, min_duration, window_size, tolerance, annotation_type, s help="Annotation type", ) @click.option("--channel", type=int, default=0, help="Channel index to annotate (default: 0)") -@click.option("--sample-rate", type=float, default=None, help="Sample rate in Hz (overrides metadata; required if not in file)") +@click.option( + "--sample-rate", type=float, default=None, + help="Sample rate in Hz (overrides metadata; required if not in file)" +) @click.option("--output", "-o", type=click.Path(), help="Output file path") @click.option("--overwrite", is_flag=True, help="Overwrite input file (non-SigMF only)") @click.option("--quiet", is_flag=True, help="Quiet mode") @@ -777,11 +786,28 @@ def threshold(input, threshold, label, window_size, annotation_type, channel, sa @click.option("--nfft", type=int, default=65536, help="FFT size for spectral analysis") @click.option("--noise-threshold-db", type=float, help="Noise floor threshold in dB (auto-estimated if not specified)") @click.option("--min-component-bw", type=float, default=50e3, help="Min component bandwidth in Hz") -@click.option("--sample-rate", type=float, default=None, help="Sample rate in Hz (overrides metadata; required if not in file)") +@click.option( + "--sample-rate", type=float, default=None, + help="Sample rate in Hz (overrides metadata; required if not in file)" +) @click.option("--output", "-o", type=click.Path(), help="Output file path") @click.option("--overwrite", is_flag=True, help="Overwrite input file (non-SigMF only)") @click.option("--quiet", is_flag=True, help="Quiet mode") @click.option("--verbose", is_flag=True, help="Verbose output (show detected components)") +def _log_separate_start(quiet, recording, indices_list, nfft, noise_threshold_db, min_component_bw): + if not quiet: + click.echo("\nSplitting annotations by frequency components...") + click.echo(f" Input annotations: {len(recording.annotations)}") + if indices_list: + click.echo(f" Splitting indices: {indices_list}") + click.echo(f" FFT size: {nfft}") + if noise_threshold_db is not None: + click.echo(f" Noise threshold: {noise_threshold_db} dB") + else: + click.echo(" Noise threshold: auto-estimated") + click.echo(f" Min component BW: {format_frequency(min_component_bw)}") + + def separate( input, indices, nfft, noise_threshold_db, min_component_bw, sample_rate, output, overwrite, quiet, verbose): """ @@ -835,17 +861,7 @@ def separate( click.echo("No annotations to split") return - if not quiet: - click.echo("\nSplitting annotations by frequency components...") - click.echo(f" Input annotations: {len(recording.annotations)}") - if indices_list: - click.echo(f" Splitting indices: {indices_list}") - click.echo(f" FFT size: {nfft}") - if noise_threshold_db is not None: - click.echo(f" Noise threshold: {noise_threshold_db} dB") - else: - click.echo(" Noise threshold: auto-estimated") - click.echo(f" Min component BW: {format_frequency(min_component_bw)}") + _log_separate_start(quiet, recording, indices_list, nfft, noise_threshold_db, min_component_bw) try: initial_count = len(recording.annotations)