Skip to main content

ceil-feature-detection

PyPI version License

Ceilometer feature detection from NetCDF files: clouds, precipitation, fog, and boundary-layer detection.


Features

  • A-trous (stationary) wavelet transform: multi‑scale analysis of attenuated backscatter.
  • Automated thresholding: blockwise Otsu on combined wavelet/remnant field.
  • Denoising: remove erroneous regions/artifacts prior to layer extraction
  • Cloud/precip/fog flags: per-time-step boolean indicators.
  • Layer extraction: Thresholded PBL/Residual Layer/other stored in a multidimensional ndarray.
  • NetCDF I/O: read/write with atomic file replacement.
  • Command-line & Python API

Installation

pip install ceilfeat

To install the latest version from GitHub:

pip install git+https://github.com/DanielWefer/ceil-feature-detection.git

For development (editable) install with tests:

git clone https://github.com/DanielWefer/ceil-feature-detection.git
cd ceil-feature-detection
env=".venv"
python -m venv "$env"
source "$env/bin/activate"
pip install -e '.[dev]'
pytest -q

Quickstart CLI

Process one or more NetCDF files via the built-in pipeline:

python -m ceilfeat.pipeline --in /path/to/input1.nc /path/to/input2.nc \
    --out /path/to/output_dir -vv
  • --in: input file(s) or glob(s).
  • --out: output file or directory. If a directory, filenames are auto-generated.
  • -v, -vv: increase verbosity.

Python API

import xarray as xr
import ceilfeat as cf

# 1. Open dataset
 ds = xr.open_dataset("input.nc").sortby("time")

# 2. Compute wavelet transforms
 row_wt, col_wt, remnant = cf.get_wavelets(ds.copy(), ds.range.values, ds.time.values)

# 3. Detect clouds & precip
 clouds, precip = cf.get_clouds_and_precip(
     ds.beta_att.T.values, ds.range.values, ds.time.values
 )

# 4. Flags and threshold
 fog, cloud, rain, clear = cf.get_flags(
     ds.beta_att.T.values, ds.range.values, ds.time.values
 )
 thresh = cf.get_thresh(remnant, row_wt, col_wt)

# 5. Denoise & extract layers
 clean = cf.remove_noisy_regions(
     ds.beta_att.T.values, thresh, ds.range.values, ds.time.values
 )
 layers = cf.get_layers(clean.values, clean.range.values)

# 6. Write results
 cf.create_file(
     ds, row_wt, col_wt, remnant,
     clouds, precip, fog, rain, cloud, clear,
     clean, layers, ds.overlap_function,
     output_path="output.nc",
     overwrite=True
 )

Contributing

  1. Fork the repo and create a feature branch.
  2. Write code, tests, and update docs.
  3. Follow style: ruff, mypy, pytest.
  4. Submit a pull request.

License

This project is licensed under the GNU Lesser General Public License v2.1 or later. See LICENSE for details.

Metadata

Release files for ceilfeat 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ceilfeat 0.1.2
File Size Uploaded
ceilfeat-0.1.2.tar.gz 32.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ceilfeat 0.1.2
File Interpreter ABI Platform
ceilfeat-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 68.9 kB

Release files / ceilfeat-0.1.2.tar.gz

Download URL ceilfeat-0.1.2.tar.gz
Size 32.5 kB
Tags Source
SHA-256 checksum
How to use checksums
42aa227292a992a33f6f52b7b05a3840e18f07af1f6b6d5d18d7b0800226edf1
BLAKE2b-256 checksum
How to use checksums
10f16f87dbcf5d492cb47f09e5ca8fc655612e514cad9b20d20b80a7628a21ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.12

Release files / ceilfeat-0.1.2-py3-none-any.whl

Download URL ceilfeat-0.1.2-py3-none-any.whl
Size 36.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cf92910539a230c1024f168470c5c92c996a39decadcf03a5c53f483ffbe8bb3
BLAKE2b-256 checksum
How to use checksums
15aa948be12358cacfc1861cfcb06388233d6bec0acd3b9b62abf6e617969ea2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.12

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page