Skip to main content

Python bindings for the I2EM surface scattering/emissivity model

Project description

Tests

pyi2em

Python bindings for the I2EM rough-surface scattering and emissivity model.

Reference: Ulaby, F.T. and Long, D.G. (2014). Microwave Radar and Radiometric Remote Sensing. University of Michigan Press.

Install

pip install pyi2em

Notes on wheels vs source builds

  • PyPI wheels bundle required native libraries, including GSL and embedded cubature routines. End users do not need system packages.
  • Source builds require GSL available via pkg-config. The cubature integration code is compiled into the extension automatically.

From source

  • Ubuntu: sudo apt-get install -y cmake build-essential libgsl-dev
  • macOS: brew install cmake gsl

Then

pip install .

Note: The cubature library (hcubature/pcubature) is fetched automatically during build; you do not need to install a system package for it. GSL remains a system dependency for source builds.

Test

pytest -q

Usage

The high-level Python API exposes three functions. Units are GHz, meters, and degrees throughout.

  1. Emissivity
from pyi2em import emissivity

eh, ev = emissivity(
    freq_ghz=5.3,
    rms_height_m=0.0025,
    corr_length_m=0.10,
    theta_deg=30.0,
    er_complex=complex(11.3, 1.5),
    correl="gaussian",         # 'exponential' | 'gaussian' | 'x_power' | 'x_exponential'
)
print(eh, ev)  # linear emissivities
  1. Monostatic backscatter (scalar or array incidence)
import numpy as np
from pyi2em import sigma0_backscatter

thetas = np.array([20.0, 30.0, 40.0])
sig = sigma0_backscatter(
    freq_ghz=5.0,
    rms_height_m=0.01,
    corr_length_m=0.05,
    theta_deg=thetas,                 # scalar or array
    er_complex=complex(15.0, 3.0),
    correl="gaussian",
    include_hv=True,
    return_db=True,                   # return dB (default)
)
print(sig["hh"], sig["vv"], sig["hv"])  # arrays in dB
  1. Bistatic backscatter
from pyi2em import sigma0_bistatic

sig = sigma0_bistatic(
    freq_ghz=5.0,
    rms_height_m=0.01,
    corr_length_m=0.05,
    thi_deg=40.0,
    ths_deg=40.0,
    phs_deg=180.0,
    er_complex=complex(15.0, 3.0),
    correl="gaussian",
    xcoeff=1.0,
    return_db=True,
)
print(sig["hh"], sig["vv"])  # dB

Correlation options: 'exponential' | 'gaussian' | 'x_power' | 'x_exponential'.

Notes

  • sigma0_* return dB by default; set return_db=False for linear values.
  • sigma0_backscatter(theta_deg=...) accepts a scalar or a NumPy array.
  • emissivity returns linear values in [0, 1].

License and Notices

  • Wrapper: MIT (see LICENSE)
  • GSL: GPL-licensed dependency; the NOTICE and COPYING.GPL files are included.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyi2em-0.1.4.tar.gz (39.5 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyi2em-0.1.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (15.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pyi2em-0.1.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (15.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pyi2em-0.1.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (15.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pyi2em-0.1.4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (15.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

File details

Details for the file pyi2em-0.1.4.tar.gz.

File metadata

  • Download URL: pyi2em-0.1.4.tar.gz
  • Upload date:
  • Size: 39.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.12

File hashes

Hashes for pyi2em-0.1.4.tar.gz
Algorithm Hash digest
SHA256 8a04d358bb51052c7bc8434cf8d8bd18be364e39981e961d870f2ea43e6df287
MD5 f0b592eca698818768784eac3e763aa7
BLAKE2b-256 592b167020818abeab7bb6805f7449f1daf452296b5e54743740258c245b4032

See more details on using hashes here.

File details

Details for the file pyi2em-0.1.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyi2em-0.1.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4a2f8a8ec5ed4f109eeb6d324048428aee2b913d8aed23a0e197fe4b085f3d8d
MD5 e9833879727d9f11aa473aeaac5c7616
BLAKE2b-256 0f7c84184c9157b308a829d58a6e341ee9d707bf5f83efdd966efdc2fe48fc65

See more details on using hashes here.

File details

Details for the file pyi2em-0.1.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyi2em-0.1.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1585fad2d0347254a0ae27af40d74f092bd89ed61e5cac684a4eba5f9bd54a05
MD5 e08e193f06e0c7567464898562ce765b
BLAKE2b-256 26190da81de6a569bd1fa0005b1a6c1653a8b15cf2032ef299995269ac6df924

See more details on using hashes here.

File details

Details for the file pyi2em-0.1.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyi2em-0.1.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5af252644d21369a96356ddcdf5a7ef60bcae2b641b73ad5aecef0a480fbc956
MD5 c47d325793041b856bf6b9c074bf21e2
BLAKE2b-256 73cbbc9d48b27048367f98fc2be2e8e4f465a5bbbc7afde9382d29a86eb6cb67

See more details on using hashes here.

File details

Details for the file pyi2em-0.1.4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyi2em-0.1.4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7f7717a0b89c2e9406efc08a8b19312d3eff047120a711296558156ebd04dc3f
MD5 28d8ca3a258f54e929b8c0bdde89a24c
BLAKE2b-256 4317c04316beb85f1bedde8f779d6bc582b29f560b02f55716c373bb7224c2ae

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page