API
Main Implementation
Spectral Analysis: Distributed and Point Target Spectra
Attributes
Classes
Functions:
point_target_spectral_analysis
point_target_spectral_analysis(product: QualityInputProduct, point_targets: list[PointTarget], cropping_size: tuple[int, int] = (128, 128)) -> list[PointTargetSpectraDataOutput]
Function to compute Spectral Analysis for selected Point Targets.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
product
|
QualityInputProduct
|
object satisfying the QualityInputProduct protocol |
required |
point_targets
|
list[PointTarget]
|
list of point targets locations, as PointTarget objects |
required |
cropping_size
|
tuple[int, int]
|
roi cropping size, (number of samples, number of lines), by default (128, 128) |
(128, 128)
|
Returns:
| Type | Description |
|---|---|
list[PointTargetSpectraDataOutput]
|
spectral analysis results for each product channel and each Point Target |
block_wise_distributed_spectral_analysis
block_wise_distributed_spectral_analysis(product: QualityInputProduct, azimuth_block_size: int = 2000) -> list[DistributedSpectraDataOutput]
Compute Spectral Analysis for each channel of the input product raster, by partitioning the scene in blocks along azimuth. If the product's acquisition mode, bursts are considered as blocks and data is deramped.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
product
|
QualityInputProduct
|
object satisfying the QualityInputProduct protocol |
required |
azimuth_block_size
|
int
|
azimuth block size, by default 2000 |
2000
|
Returns:
| Type | Description |
|---|---|
list[DistributedSpectraDataOutput]
|
list of Spectral Data for every product channel and every block |
Spectral Analysis support functionalities
Attributes
Classes
Functions:
data_deramping
data_deramping(data: ndarray, channel_data: ChannelData, burst: int, roi_center_location_px: tuple[int, int]) -> np.ndarray
Deramping input raster data portion.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
ndarray
|
raster data portion, with shape (samples, lines) |
required |
channel_data
|
ChannelData
|
channel data manager instance |
required |
burst
|
int
|
current burst number |
required |
roi_center_location_px
|
tuple[int, int]
|
roi center location in pixels, (azimuth pixel, range pixel) |
required |
Returns:
| Type | Description |
|---|---|
ndarray
|
deramped raster data portion |
compute_deramping_phase_exponential
compute_deramping_phase_exponential(lines_per_burst: int, lines_step: float, doppler_centroid_axis: NDArray[floating], doppler_rate_axis: NDArray[floating], steering_rate_factor: NDArray[floating] | None = None) -> np.ndarray
Computing deramping exponential phase function. It can be used both for Scansar and Topsar acquisition modes, providing the azimuth steering rate for Topsar mode.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
lines_per_burst
|
int
|
lines per burst |
required |
lines_step
|
float
|
lines step in seconds |
required |
doppler_centroid_axis
|
NDArray[floating]
|
doppler centroid frequency axis, computed for each range sample, with shape (samples,) |
required |
doppler_rate_axis
|
NDArray[floating]
|
doppler rate axis, computed for each range sample, with shape (samples,) |
required |
steering_rate_factor
|
NDArray[floating]
|
azimuth steering rate contribution, computed for each range sample, with shape (samples,) |
None
|
Returns:
| Type | Description |
|---|---|
ndarray
|
deramping exponential phase function, with shape (lines per burst, samples) |
compute_deramping_azimuth_axis
compute_deramping_azimuth_axis(lines_per_burst: int, lines_step: float, doppler_centroid_axis: NDArray[floating], doppler_rate_axis: NDArray[floating]) -> npt.NDArray[np.floating]
Computing deramping phase burst azimuth relative axis.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
lines_per_burst
|
int
|
lines per burst |
required |
lines_step
|
float
|
lines step in seconds |
required |
doppler_centroid_axis
|
NDArray[floating]
|
doppler centroid frequency axis, computed for each range sample, with shape (samples,) |
required |
doppler_rate_axis
|
NDArray[floating]
|
doppler rate axis, computed for each range sample, with shape (samples,) |
required |
Returns:
| Type | Description |
|---|---|
NDArray[floating]
|
deramping phase burst azimuth relative axis, with shape (lines per burst, samples) |
compute_demodulation_phase_exponential
compute_demodulation_phase_exponential(lines_per_burst: int, lines_step: float, doppler_centroid_axis: NDArray[floating], doppler_rate_axis: NDArray[floating]) -> np.ndarray
Computing demodulation exponential phase function.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
lines_per_burst
|
int
|
lines per burst |
required |
lines_step
|
float
|
lines step in seconds |
required |
doppler_centroid_axis
|
NDArray[floating]
|
doppler centroid frequency axis, with shape (samples,) |
required |
doppler_rate_axis
|
NDArray[floating]
|
doppler rate axis, computed for each range sample, with shape (samples,) |
required |
Returns:
| Type | Description |
|---|---|
ndarray
|
demodulation exponential phase function, with shape (lines per burst, samples) |
compute_burst_deramping_function
compute_burst_deramping_function(mid_burst_az_time: PreciseDateTime, lines_per_burst: int, lines_step: float, slant_range_axis: NDArray[floating], doppler_centroid_poly: SARCoordinatesFunction, doppler_rate_poly: SARCoordinatesFunction, azimuth_steering_rate_axis: NDArray[floating] | None = None, sensor_velocity_norm_mid_burst: float | None = None, wavelength: float | None = None) -> np.ndarray
Computing the deramping and demodulation phase exponential function for Topsar and Scansar acquisition for a given burst, defined by the mid burst azimuth time.
Azimuth steering rate, Normalized sensor velocity and sensor wavelength are needed only for Topsar deramping phase computation.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
mid_burst_az_time
|
PreciseDateTime
|
azimuth time at mid burst |
required |
lines_per_burst
|
int
|
number of lines of the selected burst |
required |
lines_step
|
float
|
azimuth lines step in seconds |
required |
slant_range_axis
|
NDArray[floating]
|
slant range values |
required |
doppler_centroid_poly
|
SARCoordinatesFunction
|
doppler centroid polynomial |
required |
doppler_rate_poly
|
SARCoordinatesFunction
|
doppler rate polynomial |
required |
azimuth_steering_rate_axis
|
NDArray[floating] | None
|
steering rate axis, needed for Topsar deramping, by default None |
None
|
sensor_velocity_norm_mid_burst
|
float | None
|
normalized sensor velocity at mid burst, needed for Topsar deramping, by default None |
None
|
wavelength
|
float | None
|
sensor wavelength, needed for Topsar deramping, by default None |
None
|
Returns:
| Type | Description |
|---|---|
ndarray
|
deramping and demodulation phase exponential function to be multiplied to the selected burst data |
compute_steering_rate_factor
compute_steering_rate_factor(sensor_velocity_norm_mid_burst: float, wavelength: float, azimuth_steering_rate_axis: NDArray[floating]) -> npt.NDArray[np.floating]
Computing steering rate factor for Topsar deramping.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sensor_velocity_norm_mid_burst
|
float
|
normalized sensor velocity at mid burst |
required |
wavelength
|
float
|
sensor wavelength |
required |
azimuth_steering_rate_axis
|
NDArray[floating]
|
azimuth steering rate axis |
required |
Returns:
| Type | Description |
|---|---|
NDArray[floating]
|
steering rate factor for deramping |
recenter_data
compute_spectrogram_db
compute_polynomial_fit
compute_polynomial_fit(profile: NDArray[floating], freq_axis: NDArray[floating], boundaries: tuple[float, float]) -> Polynomial
FItting polynomial on profile portion.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
profile
|
NDArray[floating]
|
profile to be fit |
required |
freq_axis
|
NDArray[floating]
|
frequency axis |
required |
boundaries
|
tuple[float, float]
|
fitting region boundaries |
required |
Returns:
| Type | Description |
|---|---|
Polynomial
|
fitting Polynomial |
extract_abs_profiles
extract_phase_profiles
compute_spectrum_boundaries
spectral_analysis_profiles_to_netcdf
spectral_analysis_profiles_to_netcdf(data: list[PointTargetSpectraDataOutput] | list[DistributedSpectraDataOutput], out_path: str | Path) -> Path
Saving Spectral Analysis Profiles output data to NetCDF4 file.
Hierarchy::
Point Target Spectral Analysis Hierarchy::
root/
├── product_attributes...
└── swath
└── polarization
├── channel_attributes...
├── doppler_centroid [at target position]
├── phase_value [at target position]
├── azimuth_frequency_axis
├── range_frequency_axis
├── azimuth_profiles_abs
├── range_profiles_abs
├── azimuth_profiles_phase
├── range_profiles_phase
├── az_phase_polynomial_coefficients
└── rng_phase_polynomial_coefficients
Distributed Spectral Analysis Hierarchy::
root/
├── product_attributes...
└── swath
└── polarization
├── channel_attributes...
└── block
├── block_attributes...
├── azimuth_frequency_axis
├── range_frequency_axis
├── azimuth_profiles_abs
└── range_profiles_abs
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
list[PointTargetSpectraDataOutput] | list[DistributedSpectraDataOutput]
|
list of PointTargetSpectraDataOutput | DistributedSpectraDataOutput dataclasses, corresponding to the full output of the radiometric analysis |
required |
out_path
|
str | Path
|
path where to save the NetCDF file |
required |
Returns:
| Type | Description |
|---|---|
Path
|
path to the output NetCDF file |
Functions to generate plots for Spectral Analysis
Attributes
Classes
Functions:
spectral_graphs
spectral_graphs(data: list[PointTargetSpectraDataOutput] | list[DistributedSpectraDataOutput], output_dir: str | Path) -> None
Generating spectral analysis graphs.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
list[PointTargetSpectraDataOutput] | list[DistributedSpectraDataOutput]
|
list of spectral profiles and data portions to be plotted for each swath id and target/block |
required |
output_dir
|
str | Path
|
Path to the output folder where to save the files |
required |
spectral_graph_core
spectral_graph_core(data: PointTargetSpectraDataOutput | DistributedSpectraDataOutput, graph_mode: GraphType, out_dir: Path) -> None
Spectral graphs generator core functionality.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
PointTargetSpectraDataOutput | DistributedSpectraDataOutput
|
spectral profiles and data portions to be plotted for a given swath id, block or target |
required |
graph_mode
|
GraphType
|
graph mode, absolute or phase plots |
required |
out_dir
|
Path
|
Path to the output folder where to save the files |
required |
Utilities
Definition of Spectral Analysis specific dataclasses
Classes
SpectralAnalysisProductGeneralInfo
dataclass
General info for the analyzed product
Attributes
Methods:
SpectralAnalysisCoreInfo
dataclass
Output core results for single Target Spectral Analysis
Attributes
azimuth_frequency_axis
class-attribute
instance-attribute
range_frequency_axis
class-attribute
instance-attribute
spectrogram_db
class-attribute
instance-attribute
spectrogram_frequencies
class-attribute
instance-attribute
spectrogram_times
class-attribute
instance-attribute
range_profiles_db
class-attribute
instance-attribute
azimuth_profiles_db
class-attribute
instance-attribute
range_profiles_deg
class-attribute
instance-attribute
azimuth_profiles_deg
class-attribute
instance-attribute
Methods:
__init__
__init__(azimuth_frequency_axis: NDArray[floating] | None = None, range_frequency_axis: NDArray[floating] | None = None, spectrum_db: NDArray[floating] | None = None, spectrum_deg: NDArray[floating] | None = None, spectrogram_db: NDArray[floating] | None = None, spectrogram_frequencies: NDArray[floating] | None = None, spectrogram_times: NDArray[floating] | None = None, range_profiles_db: list[NDArray[floating]] | None = None, azimuth_profiles_db: list[NDArray[floating]] | None = None, range_profiles_deg: list[NDArray[floating]] | None = None, azimuth_profiles_deg: list[NDArray[floating]] | None = None) -> None
SpectralAnalysisTargetInfo
dataclass
Bases: SpectralAnalysisCoreInfo
Storing data for Point Target Spectral Analysis graphs
Attributes
target_azimuth_pixel
class-attribute
instance-attribute
range_profiles_norm_deg
class-attribute
instance-attribute
azimuth_profiles_norm_deg
class-attribute
instance-attribute
target_phase_value_deg
class-attribute
instance-attribute
target_doppler_centroid_Hz
class-attribute
instance-attribute
range_polynomial_fit
class-attribute
instance-attribute
azimuth_polynomial_fit
class-attribute
instance-attribute
rng_spectrum_boundaries
class-attribute
instance-attribute
az_spectrum_boundaries
class-attribute
instance-attribute
azimuth_frequency_axis
class-attribute
instance-attribute
range_frequency_axis
class-attribute
instance-attribute
spectrogram_db
class-attribute
instance-attribute
spectrogram_frequencies
class-attribute
instance-attribute
spectrogram_times
class-attribute
instance-attribute
range_profiles_db
class-attribute
instance-attribute
azimuth_profiles_db
class-attribute
instance-attribute
range_profiles_deg
class-attribute
instance-attribute
azimuth_profiles_deg
class-attribute
instance-attribute
Methods:
__init__
__init__(azimuth_frequency_axis: NDArray[floating] | None = None, range_frequency_axis: NDArray[floating] | None = None, spectrum_db: NDArray[floating] | None = None, spectrum_deg: NDArray[floating] | None = None, spectrogram_db: NDArray[floating] | None = None, spectrogram_frequencies: NDArray[floating] | None = None, spectrogram_times: NDArray[floating] | None = None, range_profiles_db: list[NDArray[floating]] | None = None, azimuth_profiles_db: list[NDArray[floating]] | None = None, range_profiles_deg: list[NDArray[floating]] | None = None, azimuth_profiles_deg: list[NDArray[floating]] | None = None, target_name: str | None = None, burst: int | None = None, roi_size_azimuth: int | None = None, roi_size_range: int | None = None, target_azimuth_pixel: float | None = None, target_range_pixel: float | None = None, azimuth_time: PreciseDateTime | None = None, range_time: float | None = None, range_profiles_norm_deg: list[NDArray[floating]] | None = None, azimuth_profiles_norm_deg: list[NDArray[floating]] | None = None, target_phase_value_deg: float | None = None, target_doppler_centroid_Hz: float | None = None, range_polynomial_fit: Polynomial | None = None, azimuth_polynomial_fit: Polynomial | None = None, rng_spectrum_boundaries: tuple[float, float] | None = None, az_spectrum_boundaries: tuple[float, float] | None = None) -> None
SpectralAnalysisBlockInfo
dataclass
Bases: SpectralAnalysisCoreInfo
Block-wise Spectral Analysis info
Attributes
doppler_centroid_mid_block
class-attribute
instance-attribute
azimuth_frequency_axis
class-attribute
instance-attribute
range_frequency_axis
class-attribute
instance-attribute
spectrogram_db
class-attribute
instance-attribute
spectrogram_frequencies
class-attribute
instance-attribute
spectrogram_times
class-attribute
instance-attribute
range_profiles_db
class-attribute
instance-attribute
azimuth_profiles_db
class-attribute
instance-attribute
range_profiles_deg
class-attribute
instance-attribute
azimuth_profiles_deg
class-attribute
instance-attribute
Methods:
__init__
__init__(azimuth_frequency_axis: NDArray[floating] | None = None, range_frequency_axis: NDArray[floating] | None = None, spectrum_db: NDArray[floating] | None = None, spectrum_deg: NDArray[floating] | None = None, spectrogram_db: NDArray[floating] | None = None, spectrogram_frequencies: NDArray[floating] | None = None, spectrogram_times: NDArray[floating] | None = None, range_profiles_db: list[NDArray[floating]] | None = None, azimuth_profiles_db: list[NDArray[floating]] | None = None, range_profiles_deg: list[NDArray[floating]] | None = None, azimuth_profiles_deg: list[NDArray[floating]] | None = None, block_num: int | None = None, first_az_line_block: int | None = None, lines_block: int | None = None, samples_block: int | None = None, doppler_centroid_mid_block: float | None = None) -> None
PointTargetSpectraDataOutput
dataclass
Storing data for Point Target Spectral Analysis graphs
Attributes
general_info
class-attribute
instance-attribute
targets_info
class-attribute
instance-attribute
Methods:
DistributedSpectraDataOutput
dataclass
Storing data for Distributed Spectral Analysis graphs