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:
SpecBasebase class for a defining set of Analysis specs
- class striqt.analysis.specs.Capture(*, duration=0.1, sample_rate=15360000.0, analysis_bandwidth=inf)¶
Bases:
SpecBasebare 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:
Analysissubcarrier_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)
- 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:
Analysiswindow (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:
StructBase 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¶
- 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¶