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

sgsim.Signal.pmnm(rec)[source]#

Calculate positive-minima and negative-maxima count.

Parameters:

rec (ndarray) – Input signal.

Returns:

Cumulative PMNM count.

Return type:

ndarray

sgsim.Signal.peak_abs_value(rec)[source]#

Calculate peak absolute value.

Parameters:

rec (ndarray) – Input signal.

Returns:

Peak value.

Return type:

float or ndarray