striqt.analysis.specs

class striqt.analysis.specs.Analysis

Bases: SpecBase

Returns:

Analysis result of type (xarray.DataArray if as_xarray else type(iq))

Parameters:
  • iq (numpy.ndarray or cupy.ndarray) – the M-channel input waveform of shape (M,N)

  • capture

  • as_xarray (bool) – True to return xarray.DataArray or False to match type(iq)

class striqt.analysis.specs.AnalysisFilter(*, nfft=8192, window='hamming', nfft_out=None)

Bases: SpecBase

Parameters:
  • nfft (int)

  • window (str | tuple[str, float])

  • nfft_out (int | None)

class striqt.analysis.specs.AnalysisGroup

Bases: SpecBase

base class for a defining set of Analysis specs

class striqt.analysis.specs.Capture(*, duration=0.1, sample_rate=15360000.0, analysis_bandwidth=inf)

Bases: SpecBase

bare minimum information about an IQ acquisition

Parameters:
  • duration (float) – Duration of the analysis waveform (Constraints: units: s)

  • sample_rate (float) – Analysis sample rate (Constraints: units: S/s)

  • analysis_bandwidth (float) – Analysis bandwidth (Constraints: units: Hz)

class striqt.analysis.specs.Cellular5GNPSSSync(*, subcarrier_spacing, sample_rate=7680000.0, discovery_periodicity=0.02, frequency_offset=0, shared_spectrum=False, delay=0, symbol_indexes='auto', max_lag_symbols=None, window_fill=1, per_port=False, max_beams=None)

Bases: _Cellular5GNRSSBSync

Parameters:
  • subcarrier_spacing (float)

  • sample_rate (float)

  • discovery_periodicity (float)

  • frequency_offset (float)

  • shared_spectrum (bool)

  • delay (float)

  • symbol_indexes (one of ['auto', 'a', 'b', 'c', 'd', 'e', 'f', 'g'] | tuple[int, ...]) – index locations in the SSB, or a cell search case from 3GPP TS 38.213 Sec. 4.1)

  • max_lag_symbols (int | None) – limit the number of symbols of lag in the 5G sync correlator (Constraints: >= 1, <= 6)

  • window_fill (float) – Fraction of a symbol to fill with weighting function (Constraints: > 0, <= 1)

  • per_port (bool) – whether to evaluate signal synchronization separately on each port

  • max_beams (int | None) – limit the beam count in 5G sync evaluation (Constraints: > 0)

class striqt.analysis.specs.Cellular5GNRPSSCorrelator(*, subcarrier_spacing, sample_rate=7680000.0, discovery_periodicity=0.02, frequency_offset=0, shared_spectrum=False, delay=0, symbol_indexes='auto', max_lag_symbols=None, max_block_count=1)

Bases: _Cellular5GNRSSBCorrelator

Parameters:
  • subcarrier_spacing (float)

  • sample_rate (float)

  • discovery_periodicity (float)

  • frequency_offset (float)

  • shared_spectrum (bool)

  • delay (float)

  • symbol_indexes (one of ['auto', 'a', 'b', 'c', 'd', 'e', 'f', 'g'] | tuple[int, ...]) – index locations in the SSB, or a cell search case from 3GPP TS 38.213 Sec. 4.1)

  • max_lag_symbols (int | None) – limit the number of symbols of lag in the 5G sync correlator (Constraints: >= 1, <= 6)

  • max_block_count (int | None)

class striqt.analysis.specs.Cellular5GNRSSBSpectrogram(*, subcarrier_spacing, sample_rate=7680000.0, discovery_periodicity=0.02, frequency_offset=0, max_block_count=None, window=('kaiser_by_enbw', 2), lo_bandstop=None)

Bases: Analysis

subcarrier_spacing (float): 3GPP channel subcarrier spacing (Hz) sample_rate (float): output sample rate for the resampled synchronization waveform (samples/s) discovery_periodicity (float): time period between synchronization blocks (s) frequency_offset (float or dict[float, float]):

center frequency offset (see notes)

shared_spectrum:

whether to follow the 3GPP “shared spectrum” synchronizatio block layout

max_block_count: number of synchronization blocks to evaluate

Parameters:
  • subcarrier_spacing (float)

  • sample_rate (float)

  • discovery_periodicity (float)

  • frequency_offset (float)

  • max_block_count (int | None)

  • window (str | tuple[str, float])

  • lo_bandstop (float | None)

shared_spectrum = False
class striqt.analysis.specs.Cellular5GNRSSSCorrelator(*, subcarrier_spacing, sample_rate=7680000.0, discovery_periodicity=0.02, frequency_offset=0, shared_spectrum=False, delay=0, symbol_indexes='auto', max_lag_symbols=None, max_block_count=1)

Bases: _Cellular5GNRSSBCorrelator

Parameters:
  • subcarrier_spacing (float)

  • sample_rate (float)

  • discovery_periodicity (float)

  • frequency_offset (float)

  • shared_spectrum (bool)

  • delay (float)

  • symbol_indexes (one of ['auto', 'a', 'b', 'c', 'd', 'e', 'f', 'g'] | tuple[int, ...]) – index locations in the SSB, or a cell search case from 3GPP TS 38.213 Sec. 4.1)

  • max_lag_symbols (int | None) – limit the number of symbols of lag in the 5G sync correlator (Constraints: >= 1, <= 6)

  • max_block_count (int | None)

class striqt.analysis.specs.Cellular5GNSSSSync(*, subcarrier_spacing, sample_rate=7680000.0, discovery_periodicity=0.02, frequency_offset=0, shared_spectrum=False, delay=0, symbol_indexes='auto', max_lag_symbols=None, window_fill=1, per_port=False, max_beams=None)

Bases: _Cellular5GNRSSBSync

Parameters:
  • subcarrier_spacing (float)

  • sample_rate (float)

  • discovery_periodicity (float)

  • frequency_offset (float)

  • shared_spectrum (bool)

  • delay (float)

  • symbol_indexes (one of ['auto', 'a', 'b', 'c', 'd', 'e', 'f', 'g'] | tuple[int, ...]) – index locations in the SSB, or a cell search case from 3GPP TS 38.213 Sec. 4.1)

  • max_lag_symbols (int | None) – limit the number of symbols of lag in the 5G sync correlator (Constraints: >= 1, <= 6)

  • window_fill (float) – Fraction of a symbol to fill with weighting function (Constraints: > 0, <= 1)

  • per_port (bool) – whether to evaluate signal synchronization separately on each port

  • max_beams (int | None) – limit the beam count in 5G sync evaluation (Constraints: > 0)

class striqt.analysis.specs.CellularCyclicAutocorrelator(*, subcarrier_spacings=(15000.0, 30000.0, 60000.0), frame_range=(0, 1), frame_slots=None, symbol_range=(0, None), generation='5G')

Bases: Analysis

Parameters:
  • subcarrier_spacings (float | tuple[float, ...])

  • frame_range (int | tuple[int, int])

  • frame_slots (str | None)

  • symbol_range (int | tuple[int, int | None])

  • generation (one of ['4G', '5G'])

class striqt.analysis.specs.CellularResourcePowerHistogram(*, window, subcarrier_spacing, power_low, power_high, power_resolution, average_rbs=False, average_slots=False, guard_bandwidths=(0, 0), frame_slots=None, special_symbols=None, cyclic_prefix='normal', lo_bandstop=None)

Bases: Analysis

Parameters:
  • window (str | tuple[str, float])

  • subcarrier_spacing (float)

  • power_low (float)

  • power_high (float)

  • power_resolution (float)

  • average_rbs (bool | one of ['half'])

  • average_slots (bool)

  • guard_bandwidths (tuple[float, float])

  • frame_slots (str | None)

  • special_symbols (str | None)

  • cyclic_prefix (one of ['normal', 'extended'])

  • lo_bandstop (float | None)

class striqt.analysis.specs.ChannelPowerHistogram(*, detector_period, power_detectors=('rms', 'peak'), power_low, power_high, power_resolution)

Bases: ChannelPowerTimeSeries

Parameters:
  • detector_period (fractions.Fraction)

  • power_detectors (tuple[str, ...])

  • power_low (float)

  • power_high (float)

  • power_resolution (float)

class striqt.analysis.specs.ChannelPowerTimeSeries(*, detector_period, power_detectors=('rms', 'peak'))

Bases: Analysis

Parameters:
  • detector_period (fractions.Fraction)

  • power_detectors (tuple[str, ...])

class striqt.analysis.specs.CyclicChannelPower(*, cyclic_period, detector_period, power_detectors=('rms', 'peak'), cyclic_statistics=('min', 'mean', 'max'))

Bases: Analysis

Parameters:
  • cyclic_period (float)

  • detector_period (fractions.Fraction)

  • power_detectors (tuple[str, ...])

  • cyclic_statistics (tuple[str | float, ...])

class striqt.analysis.specs.FilteredCapture(*, duration=0.1, sample_rate=15360000.0, analysis_bandwidth=inf, analysis_filter=AnalysisFilter(nfft=8192, window='hamming', nfft_out=None))

Bases: Capture

Parameters:
  • duration (float) – Duration of the analysis waveform (Constraints: units: s)

  • sample_rate (float) – Analysis sample rate (Constraints: units: S/s)

  • analysis_bandwidth (float) – Analysis bandwidth (Constraints: units: Hz)

  • analysis_filter (striqt.analysis.specs.AnalysisFilter)

class striqt.analysis.specs.FrequencyAnalysisSpecBase(*, window, frequency_resolution, fractional_overlap=0, window_fill=1, integration_bandwidth=None, trim_stopband=True, lo_bandstop=None)

Bases: Analysis

window (specs.types.WindowType): a window specification, following scipy.signal.get_window frequency_resolution (float): the STFT resolution (in Hz) fractional_overlap (float):

fraction of each FFT window that overlaps with its neighbor

window_fill (float):

fraction of each FFT window that is filled with the window function (leaving the rest zeroed)

integration_bandwidth (float): bin bandwidth for RMS averaging in the frequency domain trim_stopband (bool):

whether to trim the frequency axis to capture.analysis_bandwidth

Parameters:
  • window (str | tuple[str, float])

  • frequency_resolution (float)

  • fractional_overlap (fractions.Fraction)

  • window_fill (fractions.Fraction)

  • integration_bandwidth (float | None)

  • trim_stopband (bool)

  • lo_bandstop (float | None)

class striqt.analysis.specs.IQWaveform(*, start_time_sec=None, stop_time_sec=None)

Bases: Analysis

Parameters:
  • start_time_sec (float | None)

  • stop_time_sec (float | None)

striqt.analysis.specs.Meta(standard_name: str, units: str | None = None, **kws) Meta

annotation that is used to generate ‘standard_name’ and ‘units’ fields of xarray attrs objects

class striqt.analysis.specs.PowerSpectralDensity(*, window, frequency_resolution, fractional_overlap=0, window_fill=1, integration_bandwidth=None, trim_stopband=True, lo_bandstop=None, time_statistic=('mean',))

Bases: FrequencyAnalysisSpecBase

Parameters:
  • window (str | tuple[str, float])

  • frequency_resolution (float)

  • fractional_overlap (fractions.Fraction)

  • window_fill (fractions.Fraction)

  • integration_bandwidth (float | None)

  • trim_stopband (bool)

  • lo_bandstop (float | None)

  • time_statistic (tuple[str | float, ...])

class striqt.analysis.specs.SpecBase

Bases: Struct

Base type for structures that support validated (de)serialization.

It is a msgspec.Struct class with some often-used utility methods that fix encoding and decoding hooks for extra types.

classmethod from_dict(d: dict) _T
classmethod from_spec(other: SpecBase) _T
replace(**attrs) Self

returns a copy of self with changed attributes.

See also

Python standard library copy.replace

to_dict(unfreeze=False) dict

return a dictinary representation of self

validate() Self
class striqt.analysis.specs.Spectrogram(*, window, frequency_resolution, fractional_overlap=0, window_fill=1, integration_bandwidth=None, trim_stopband=True, lo_bandstop=None, time_aperture=None)

Bases: FrequencyAnalysisSpecBase

time_aperture (float):

if specified, binned RMS averaging is applied along time axis in the spectrogram to yield this coarser resolution (s)

dB (bool): if True, returned power is transformed into dB units

Parameters:
  • window (str | tuple[str, float])

  • frequency_resolution (float)

  • fractional_overlap (fractions.Fraction)

  • window_fill (fractions.Fraction)

  • integration_bandwidth (float | None)

  • trim_stopband (bool)

  • lo_bandstop (float | None)

  • time_aperture (float | None)

dB = True
class striqt.analysis.specs.SpectrogramHistogram(*, window, frequency_resolution, fractional_overlap=0, window_fill=1, integration_bandwidth=None, trim_stopband=True, lo_bandstop=None, time_aperture=None, power_low, power_high, power_resolution)

Bases: Spectrogram

Parameters:
  • window (str | tuple[str, float])

  • frequency_resolution (float)

  • fractional_overlap (fractions.Fraction)

  • window_fill (fractions.Fraction)

  • integration_bandwidth (float | None)

  • trim_stopband (bool)

  • lo_bandstop (float | None)

  • time_aperture (float | None)

  • power_low (float)

  • power_high (float)

  • power_resolution (float)

class striqt.analysis.specs.SpectrogramHistogramRatio(*, window, frequency_resolution, fractional_overlap=0, window_fill=1, integration_bandwidth=None, trim_stopband=True, lo_bandstop=None, time_aperture=None, power_low, power_high, power_resolution)

Bases: SpectrogramHistogram

Parameters:
  • window (str | tuple[str, float])

  • frequency_resolution (float)

  • fractional_overlap (fractions.Fraction)

  • window_fill (fractions.Fraction)

  • integration_bandwidth (float | None)

  • trim_stopband (bool)

  • lo_bandstop (float | None)

  • time_aperture (float | None)

  • power_low (float)

  • power_high (float)

  • power_resolution (float)

class striqt.analysis.specs.frozendict(*args: Any, **kwargs: Any)

Bases: Mapping[_K, _V]

An immutable dictionary that supports hashing

copy() frozendict[_K, _V]
classmethod fromkeys(seq: Iterable[_K], value: _V | None = None) frozendict[_K, _V]
items() a set-like object providing a view on D's items
keys() a set-like object providing a view on D's keys
update(other: dict[_K, _V], /)
values() an object providing a view on D's values