Compute PSD RMS

Compute per-frequency-band RMS from PSD NetCDF files.

Reads the per-day PSD NetCDF files written by msnoise.s20_psd_compute, concatenates all requested days for each station-channel, and for each configured frequency band computes the RMS amplitude in displacement, velocity, or acceleration (controlled by |psd_rms.psd_rms_type|).

The RMS is derived by integrating the PSD over the frequency band:

RMS = sqrt(integral(PSD(f) df, f_min, f_max))

converted to the requested physical unit.

Frequency bands are configured via |psd_rms.psd_rms_frequency_ranges| as a list of (f_min, f_max) tuples, e.g. [(1.0, 10.0), (4.0, 14.0)].

Output is written as a NetCDF file per station-channel under the lineage output path:

<output_folder>/<psd_step>/<psd_rms_step>/_output/<NET.STA.LOC.CHAN>/RMS.nc

The NetCDF file has two dimensions: times (one row per PPSD window) and bands (one column per configured frequency band).

To run this step:

$ msnoise qc compute_psd_rms

Parallel processing:

$ msnoise -t 4 qc compute_psd_rms

Configuration Parameters

  • psd_rms.psd_rms_frequency_ranges : Specify the frequency bounds (in Hz) to compute the RMS from PSDs (default=[(1.0, 20.0), (4.0, 14.0), (4.0, 40.0), (4.0, 9.0)])

  • psd_rms.psd_rms_type : What units do you want for the exported RMS (default=DISP)

  • psd.psd_components : Components to process for PSD, defaults to [E,N,Z], but can be any comma separated list (e.g. ‘Z,E,N’) (default=E,N,Z)

See also

Reading these results in Python — use MSNoiseResult:

from msnoise.results import MSNoiseResult
from msnoise.core.db import connect
db = connect()
r = MSNoiseResult.from_ids(db, ...)  # include the steps you need
# then call r.get_psd_rms(...)

See Reading outputs with MSNoiseResult for the full guide and all available methods.