libera_utils.scene_id.calculate_cloud_phase#

libera_utils.scene_id.calculate_cloud_phase(cloud_phase_lower: float | ndarray[Any, dtype[floating]], cloud_phase_upper: float | ndarray[Any, dtype[floating]], cloud_fraction_lower: float | ndarray[Any, dtype[floating]], cloud_fraction_upper: float | ndarray[Any, dtype[floating]], cloud_fraction: float | ndarray[Any, dtype[floating]], optical_depth_lower: float | ndarray[Any, dtype[floating]], optical_depth_upper: float | ndarray[Any, dtype[floating]]) float | ndarray[Any, dtype[floating]]#

Calculate weighted cloud phase from upper and lower cloud layers.

Computes the dominant cloud phase by weighting each layer’s phase by its cloud fraction contribution and rounding to the nearest integer phase classification (1=liquid, 2=ice).

Parameters:
  • cloud_phase_lower (float or ndarray) – Cloud phase for lower layer (1=liquid, 2=ice)

  • cloud_phase_upper (float or ndarray) – Cloud phase for upper layer (1=liquid, 2=ice)

  • cloud_fraction_lower (float or ndarray) – Cloud fraction for lower layer (0-100)

  • cloud_fraction_upper (float or ndarray) – Cloud fraction for upper layer (0-100)

  • cloud_fraction (float or ndarray) – Total cloud fraction (0-100)

  • optical_depth_lower (float or ndarray) – Optical depth for lower layer (used for NaN check)

  • optical_depth_upper (float or ndarray) – Optical depth for upper layer (used for NaN check)

Returns:

Cloud phase weighted by cloud fraction and rounded to nearest integer (1=liquid, 2=ice), or np.nan if no valid data

Return type:

float or ndarray