Signal#
Signal processing and spectral analysis tools for ground motion data.
- sgsim.Signal.butterworth_filter(dt, rec, lowcut=0.1, highcut=25.0, order=4)[source]#
Apply bandpass Butterworth filter using second-order sections.
- Parameters:
dt (float) – Time step.
rec (ndarray) – Input signal.
lowcut (float, optional) – Low cutoff frequency (default is 0.1).
highcut (float, optional) – High cutoff frequency (default is 25.0).
order (int, optional) – Filter order (default is 4).
- Returns:
Filtered signal.
- Return type:
ndarray
- sgsim.Signal.baseline_correction(rec, degree=1)[source]#
Remove baseline drift using polynomial fitting.
- Parameters:
rec (ndarray) – Input signal.
degree (int, optional) – Polynomial degree (default is 1).
- Returns:
Corrected signal.
- Return type:
ndarray
- sgsim.Signal.taper(rec, alpha=0.05)[source]#
Apply Tukey window tapering to signal ends.
- Parameters:
rec (ndarray) – Input signal.
alpha (float, optional) – Taper fraction (default is 0.05).
- Returns:
Tapered signal.
- Return type:
ndarray
- sgsim.Signal.resample(dt, dt_new, rec)[source]#
Resample signal to new time step.
- Parameters:
dt (float) – Original time step.
dt_new (float) – Target time step.
rec (ndarray) – Input signal.
- Returns:
npts_new (int) – Number of points after resampling.
dt_new (float) – New time step.
resampled (ndarray) – Resampled signal.
- sgsim.Signal.smooth(rec, window_size=9)[source]#
Apply moving average smoothing.
- Parameters:
rec (ndarray) – Input signal.
window_size (int, optional) – Window size (default is 9).
- Returns:
Smoothed signal.
- Return type:
ndarray
- sgsim.Signal.response_spectra(dt, rec, period, zeta=0.05)[source]#
Calculate response spectra.
- Parameters:
dt (float) – Time step.
rec (ndarray) – Input acceleration (1D or 2D).
period (ndarray) – Spectral periods.
zeta (float, optional) – Damping ratio (default is 0.05).
- Returns:
sd (ndarray) – Spectral displacement.
sv (ndarray) – Spectral velocity.
sa (ndarray) – Spectral acceleration.
- sgsim.Signal.sdof_response(dt, rec, period, zeta=0.05, mass=1.0)[source]#
Compute SDOF response time histories.
- Parameters:
dt (float) – Time step.
rec (ndarray) – Input acceleration (1D or 2D).
period (ndarray) – SDOF natural periods.
zeta (float, optional) – Damping ratio (default is 0.05).
mass (float, optional) – SDOF mass (default is 1.0).
- Returns:
disp (ndarray) – Displacement time histories.
vel (ndarray) – Velocity time histories.
acc (ndarray) – Relative acceleration time histories.
acc_total (ndarray) – Total acceleration time histories.
- sgsim.Signal.fas(dt, rec)[source]#
Calculate Fourier amplitude spectrum.
- Parameters:
dt (float) – Time step.
rec (ndarray) – Input signal.
- Returns:
Fourier amplitude spectrum.
- Return type:
ndarray
Notes
Scaled by dt for seismological convention. Units are input units × time (e.g., g·s for acceleration in g, or m/s for acceleration in m/s²).
- sgsim.Signal.fps(rec)[source]#
Calculate Fourier phase spectrum (unwrapped).
- Parameters:
rec (ndarray) – Input signal.
- Returns:
Unwrapped phase in radians.
- Return type:
ndarray
Notes
Unlike fas(), phase spectrum is independent of time step.
- sgsim.Signal.frequency(npts, dt)[source]#
Generate frequency array.
- Parameters:
npts (int) – Number of points.
dt (float) – Time step.
- Returns:
Frequency array.
- Return type:
ndarray
- sgsim.Signal.time(npts, dt)[source]#
Generate time array.
- Parameters:
npts (int) – Number of points.
dt (float) – Time step.
- Returns:
Time array.
- Return type:
ndarray
- sgsim.Signal.principal_angle(rec1, rec2)[source]#
Find rotation angle for principal axes (max/min energy).
Computes the angle that rotates two orthogonal components to their principal directions, where one component has maximum energy and the other has minimum energy.
- Parameters:
rec1 (ndarray) – First orthogonal component.
rec2 (ndarray) – Second orthogonal component.
- Returns:
Rotation angle in radians.
- Return type:
float
Examples
>>> theta = principal_angle(rec_ns, rec_ew) >>> rec_major, rec_minor = rotate(rec_ns, rec_ew, theta)
- sgsim.Signal.rotate(rec1, rec2, angle)[source]#
Rotate two-component signal.
- Parameters:
rec1 (ndarray) – First component.
rec2 (ndarray) – Second component.
angle (float) – Rotation angle.
- Returns:
rotated_1 (ndarray) – Rotated first component.
rotated_2 (ndarray) – Rotated second component.
- sgsim.Signal.slice_energy(ce, target_range=(0.001, 0.999))[source]#
Create slice for cumulative energy range.
- Parameters:
ce (ndarray) – Cumulative energy array.
target_range (tuple of float, optional) – Energy fraction range (default is (0.001, 0.999)).
- Returns:
Slice object.
- Return type:
slice
- sgsim.Signal.slice_amplitude(rec, threshold)[source]#
Create slice based on amplitude threshold.
- Parameters:
rec (ndarray) – Input signal.
threshold (float) – Amplitude threshold.
- Returns:
Slice object.
- Return type:
slice
- Raises:
ValueError – If no values exceed threshold.
- sgsim.Signal.slice_freq(freq, target_range=(0.1, 25.0))[source]#
Create slice for frequency range.
- Parameters:
freq (ndarray) – Frequency array.
target_range (tuple of float, optional) – Frequency range (default is (0.1, 25.0)).
- Returns:
Slice object.
- Return type:
slice
- sgsim.Signal.integrate(dt, rec)[source]#
Integrate signal using cumulative sum.
- Parameters:
dt (float) – Time step.
rec (ndarray) – Input signal.
- Returns:
Integrated signal.
- Return type:
ndarray
- sgsim.Signal.integrate_detrend(dt, rec)[source]#
Integrate signal with linear detrending.
- Parameters:
dt (float) – Time step.
rec (ndarray) – Input signal.
- Returns:
Integrated and detrended signal.
- Return type:
ndarray
- sgsim.Signal.ce(dt, rec)[source]#
Compute cumulative energy.
- Parameters:
dt (float) – Time step.
rec (ndarray) – Input signal.
- Returns:
Cumulative energy array.
- Return type:
ndarray
- sgsim.Signal.cav(dt, rec)[source]#
Calculate cumulative absolute velocity.
- Parameters:
dt (float) – Time step.
rec (ndarray) – Input signal.
- Returns:
CAV value.
- Return type:
float or ndarray
- sgsim.Signal.le(rec)[source]#
Calculate local extrema count.
- Parameters:
rec (ndarray) – Input signal.
- Returns:
Cumulative local extrema.
- Return type:
ndarray
- sgsim.Signal.zc(rec)[source]#
Calculate zero-crossing rate.
- Parameters:
rec (ndarray) – Input signal.
- Returns:
Cumulative zero crossings.
- Return type:
ndarray