Skip to main content

Zone

Struct Zone 

Source
pub struct Zone {
    pub label: Option<String>,
    pub zone_type: ZoneType,
    pub scheme: Scheme,
    pub bins: Vec<SolidAngleBin>,
    pub field_2d: Vec<ScattResult2D>,
    pub field_1d: Option<Vec<ScattResult1D>>,
    pub params: Params,
}
Expand description

A zone represents a region of the scattering sphere with its own binning, results, and computed parameters.

Fields§

§label: Option<String>

Optional user-provided label.

§zone_type: ZoneType

The type of zone (Full, Forward, Backward, Custom).

§scheme: Scheme

The binning scheme for this zone.

§bins: Vec<SolidAngleBin>

Generated bins for this zone.

§field_2d: Vec<ScattResult2D>

2D scattering results (one per bin).

§field_1d: Option<Vec<ScattResult1D>>

1D scattering results (integrated over phi), if applicable.

§params: Params

Zone-specific computed parameters.

Implementations§

Source§

impl Zone

Source

pub fn new( zone_type: ZoneType, bins: Vec<SolidAngleBin>, field_2d: Vec<ScattResult2D>, field_1d: Option<Vec<ScattResult1D>>, ) -> Self

Create a new zone with explicit fields.

Source

pub fn from_config(config: &ZoneConfig) -> Self

Create a new zone from a config, generating bins and initializing empty results.

Source

pub fn forward() -> Self

Create a forward scattering zone (single bin at theta≈0). Uses theta=ZONE_THETA_OFFSET to avoid singularity at exact zero.

Source

pub fn backward() -> Self

Create a backscatter zone (single bin at theta≈180). Uses theta=180-ZONE_THETA_OFFSET to avoid singularity at exact 180.

Source

pub fn display_name(&self) -> String

Get a display name for this zone.

Source

pub fn reset(&mut self)

Reset the zone’s results to empty state.

Source

pub fn ones_like(&self) -> Self

Returns a Zone with all values set to 1.0 (for weights).

Source

pub fn compute_params( &mut self, wavelength: f32, absorbed: f32, global_params: &Params, )

Compute zone-specific parameters based on zone type.

  • Full: scatt_cross, ext_cross, asymmetry, albedo
  • Forward: ext_cross_optical_theorem
  • Backward: backscatter_cross, depolarization_ratio, lidar_ratio
  • Custom: nothing (for now)
Source§

impl Zone

Source

pub fn get_label(&self) -> Option<String>

Get the zone label

Source

pub fn get_zone_type(&self) -> ZoneType

Get the zone type

Source

pub fn get_name(&self) -> String

Get the display name for this zone

Source

pub fn get_num_bins(&self) -> usize

Get the number of bins in this zone

Source

pub fn get_bins<'py>(&self, py: Python<'py>) -> Bound<'py, PyArray2<f32>>

Get the bins as a numpy array of shape (n_bins, 2) with columns [theta, phi]

Source

pub fn get_mueller<'py>(&self, py: Python<'py>) -> Bound<'py, PyArray2<f32>>

Get the Mueller matrix as a numpy array of shape (n_bins, 16)

Source

pub fn get_mueller_1d<'py>( &self, py: Python<'py>, ) -> Option<Bound<'py, PyArray2<f32>>>

Get the 1D Mueller matrix as a numpy array (if available)

Source

pub fn get_bins_1d<'py>( &self, py: Python<'py>, ) -> Option<Bound<'py, PyArray1<f32>>>

Get the 1D theta bins as a numpy array (if available)

Source

pub fn get_params(&self) -> PyResult<Py<PyAny>>

Get zone-specific parameters as a dict

Trait Implementations§

Source§

impl Add for Zone

Source§

type Output = Zone

The resulting type after applying the + operator.
Source§

fn add(self, other: Self) -> Self

Performs the + operation. Read more
Source§

impl Clone for Zone

Source§

fn clone(&self) -> Zone

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Convergeable for Zone

Source§

fn zero_like(&self) -> Self

Create a zero/empty version with the same structure
Source§

fn weighted_add(&self, other: &Self, w1: f32, w2: f32) -> Self

Weighted addition: combines self (with weight w1) and other (with weight w2). For simple quantities: (self * w1 + other * w2) / (w1 + w2) For derived quantities like asymmetry: uses appropriate weighting (e.g., by ScatCross)
Source§

fn mul_elem(&self, other: &Self) -> Self

Element-wise multiplication (for computing x²)
Source§

fn div_elem(&self, other: &Self) -> Self

Element-wise division
Source§

fn add_elem(&self, other: &Self) -> Self

Element-wise addition
Source§

fn sub_elem(&self, other: &Self) -> Self

Element-wise subtraction
Source§

fn scale(&self, scalar: f32) -> Self

Scale by a scalar
Source§

fn sqrt_elem(&self) -> Self

Element-wise square root (for SEM computation)
Source§

fn to_weighted(&self) -> Self

Returns a pre-weighted version for convergence tracking. e.g., asymmetry becomes asymmetry * scat_cross
Source§

fn weights(&self) -> Self

Returns the weights for each field. e.g., asymmetry weight is scat_cross, powers weight is 1.0
Source§

impl Debug for Zone

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl DerefToPyAny for Zone

Source§

impl Div for Zone

Source§

type Output = Zone

The resulting type after applying the / operator.
Source§

fn div(self, other: Self) -> Self

Performs the / operation. Read more
Source§

impl Div<f32> for Zone

Source§

type Output = Zone

The resulting type after applying the / operator.
Source§

fn div(self, rhs: f32) -> Self

Performs the / operation. Read more
Source§

impl ExtractPyClassWithClone for Zone

Source§

impl<'py> IntoPyObject<'py> for Zone

Source§

type Target = Zone

The Python output type
Source§

type Output = Bound<'py, <Zone as IntoPyObject<'py>>::Target>

The smart pointer type to use. Read more
Source§

type Error = PyErr

The type returned in the event of a conversion error.
Source§

fn into_pyobject( self, py: Python<'py>, ) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>

Performs the conversion.
Source§

impl Mul for Zone

Source§

type Output = Zone

The resulting type after applying the * operator.
Source§

fn mul(self, other: Self) -> Self

Performs the * operation. Read more
Source§

impl Mul<f32> for Zone

Source§

type Output = Zone

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: f32) -> Self

Performs the * operation. Read more
Source§

impl Pow<f32> for Zone

Source§

type Output = Zone

The result after applying the operator.
Source§

fn pow(self, rhs: f32) -> Self

Returns self to the power rhs. Read more
Source§

impl PyClass for Zone

Source§

type Frozen = False

Whether the pyclass is frozen. Read more
Source§

impl PyClassImpl for Zone

Source§

const IS_BASETYPE: bool = false

#[pyclass(subclass)]
Source§

const IS_SUBCLASS: bool = false

#[pyclass(extends=…)]
Source§

const IS_MAPPING: bool = false

#[pyclass(mapping)]
Source§

const IS_SEQUENCE: bool = false

#[pyclass(sequence)]
Source§

const IS_IMMUTABLE_TYPE: bool = false

#[pyclass(immutable_type)]
Source§

const RAW_DOC: &'static CStr = /// A zone represents a region of the scattering sphere with its own binning, /// results, and computed parameters.

Docstring for the class provided on the struct or enum. Read more
Source§

const DOC: &'static CStr

Fully rendered class doc, including the text_signature if a constructor is defined. Read more
Source§

type BaseType = PyAny

Base class
Source§

type ThreadChecker = SendablePyClass<Zone>

This handles following two situations: Read more
Source§

type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild

Immutable or mutable
Source§

type Dict = PyClassDummySlot

Specify this class has #[pyclass(dict)] or not.
Source§

type WeakRef = PyClassDummySlot

Specify this class has #[pyclass(weakref)] or not.
Source§

type BaseNativeType = PyAny

The closest native ancestor. This is PyAny by default, and when you declare #[pyclass(extends=PyDict)], it’s PyDict.
Source§

fn items_iter() -> PyClassItemsIter

Source§

fn lazy_type_object() -> &'static LazyTypeObject<Self>

Source§

fn dict_offset() -> Option<isize>

Source§

fn weaklist_offset() -> Option<isize>

Source§

impl PyMethods<Zone> for PyClassImplCollector<Zone>

Source§

fn py_methods(self) -> &'static PyClassItems

Source§

impl PyTypeInfo for Zone

Source§

const NAME: &'static str = "Zone"

Class name.
Source§

const MODULE: Option<&'static str>

Module name, if any.
Source§

fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject

Returns the PyTypeObject instance for this type.
Source§

fn type_object(py: Python<'_>) -> Bound<'_, PyType>

Returns the safe abstraction over the type object.
Source§

fn is_type_of(object: &Bound<'_, PyAny>) -> bool

Checks if object is an instance of this type or a subclass of this type.
Source§

fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool

Checks if object is an instance of this type.
Source§

impl Sub for Zone

Source§

type Output = Zone

The resulting type after applying the - operator.
Source§

fn sub(self, other: Self) -> Self

Performs the - operation. Read more

Auto Trait Implementations§

§

impl Freeze for Zone

§

impl RefUnwindSafe for Zone

§

impl Send for Zone

§

impl Sync for Zone

§

impl Unpin for Zone

§

impl UnsafeUnpin for Zone

§

impl UnwindSafe for Zone

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<'a, 'py, T> FromPyObject<'a, 'py> for T
where T: PyClass + Clone + ExtractPyClassWithClone,

Source§

type Error = PyClassGuardError<'a, 'py>

The type returned in the event of a conversion error. Read more
Source§

fn extract( obj: Borrowed<'a, 'py, PyAny>, ) -> Result<T, <T as FromPyObject<'a, 'py>>::Error>

Extracts Self from the bound smart pointer obj. Read more
Source§

impl<'py, T> FromPyObjectOwned<'py> for T
where T: for<'a> FromPyObject<'a, 'py>,

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<'py, T> IntoPyObjectExt<'py> for T
where T: IntoPyObject<'py>,

Source§

fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>

Converts self into an owned Python object, dropping type information.
Source§

fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>

Converts self into an owned Python object, dropping type information and unbinding it from the 'py lifetime.
Source§

fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>

Converts self into a Python object. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PyErrArguments for T
where T: for<'py> IntoPyObject<'py> + Send + Sync,

Source§

fn arguments(self, py: Python<'_>) -> Py<PyAny>

Arguments for exception
Source§

impl<T> PyTypeCheck for T
where T: PyTypeInfo,

Source§

const NAME: &'static str = T::NAME

👎Deprecated since 0.27.0:

Use ::classinfo_object() instead and format the type name at runtime. Note that using built-in cast features is often better than manual PyTypeCheck usage.

Name of self. This is used in error messages, for example.
Source§

fn type_check(object: &Bound<'_, PyAny>) -> bool

Checks if object is an instance of Self, which may include a subtype. Read more
Source§

fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>

Returns the expected type as a possible argument for the isinstance and issubclass function. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Ungil for T
where T: Send,

Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<G1, G2> Within<G2> for G1
where G2: Contains<G1>,

Source§

fn is_within(&self, b: &G2) -> bool