Python bindings for the I2EM surface scattering/emissivity model
Project description
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.
- 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
- 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
- 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
NOTICEandCOPYING.GPLfiles are included.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8a04d358bb51052c7bc8434cf8d8bd18be364e39981e961d870f2ea43e6df287
|
|
| MD5 |
f0b592eca698818768784eac3e763aa7
|
|
| BLAKE2b-256 |
592b167020818abeab7bb6805f7449f1daf452296b5e54743740258c245b4032
|
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
- Download URL: pyi2em-0.1.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 15.4 MB
- Tags: CPython 3.12, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a2f8a8ec5ed4f109eeb6d324048428aee2b913d8aed23a0e197fe4b085f3d8d
|
|
| MD5 |
e9833879727d9f11aa473aeaac5c7616
|
|
| BLAKE2b-256 |
0f7c84184c9157b308a829d58a6e341ee9d707bf5f83efdd966efdc2fe48fc65
|
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
- Download URL: pyi2em-0.1.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 15.4 MB
- Tags: CPython 3.11, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1585fad2d0347254a0ae27af40d74f092bd89ed61e5cac684a4eba5f9bd54a05
|
|
| MD5 |
e08e193f06e0c7567464898562ce765b
|
|
| BLAKE2b-256 |
26190da81de6a569bd1fa0005b1a6c1653a8b15cf2032ef299995269ac6df924
|
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
- Download URL: pyi2em-0.1.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 15.4 MB
- Tags: CPython 3.10, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5af252644d21369a96356ddcdf5a7ef60bcae2b641b73ad5aecef0a480fbc956
|
|
| MD5 |
c47d325793041b856bf6b9c074bf21e2
|
|
| BLAKE2b-256 |
73cbbc9d48b27048367f98fc2be2e8e4f465a5bbbc7afde9382d29a86eb6cb67
|
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
- Download URL: pyi2em-0.1.4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 15.4 MB
- Tags: CPython 3.9, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f7717a0b89c2e9406efc08a8b19312d3eff047120a711296558156ebd04dc3f
|
|
| MD5 |
28d8ca3a258f54e929b8c0bdde89a24c
|
|
| BLAKE2b-256 |
4317c04316beb85f1bedde8f779d6bc582b29f560b02f55716c373bb7224c2ae
|