Metadata-Version: 2.4
Name: aeris-channel
Version: 1.0.5
Summary: 3GPP channel models and deterministic-stochastic hybrid workflows for 5G NR and 6G research
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: numpy>=1.26
Requires-Dist: scipy>=1.7.0
Requires-Dist: aeris-license<2.0,>=1.0.2
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: pytest-xdist>=3.0; extra == "dev"
Requires-Dist: pytest-timeout>=2.2; extra == "dev"
Provides-Extra: gpu
Requires-Dist: cupy-cuda12x>=12.0; extra == "gpu"
Provides-Extra: plots
Requires-Dist: matplotlib>=3.7; extra == "plots"
Provides-Extra: profiles
Requires-Dist: pyyaml>=6.0; extra == "profiles"

# aeris-channel

`aeris-channel` is a Python library for 5G NR and 6G channel modeling,
deterministic/stochastic hybrid workflows, and hardware-in-the-loop
integration.

It provides public APIs for:

- 3GPP TR 38.901 stochastic, CDL, and TDL channel models.
- TR 36.777 aerial-UE/UAV and TR 38.811/38.821 non-terrestrial channel models.
- MIMO, massive-MIMO, XL-MIMO, near-field, and beam-management workflows.
- ISAC sensing, channel estimation, and system-level metrics.
- Deterministic-path and stochastic-residual composition, plus time-domain,
  frequency-domain, resource-grid, and impulse-response interfaces.

## Installation

Install the latest release from PyPI:

```bash
python -m pip install aeris-channel
```

Prebuilt wheels are provided for Windows and Linux with CPython 3.11-3.14.
The package installs its `aeris-license` dependency automatically.

Optional feature groups are available:

```bash
python -m pip install "aeris-channel[gpu]"      # CuPy for CUDA 12.x
python -m pip install "aeris-channel[plots]"    # Matplotlib
python -m pip install "aeris-channel[profiles]" # YAML profile loading
```

## License

Runtime use requires a valid `aeris.lic`. Obtain a license through the
approved Keysight process and configure its location using the supplied
licensing instructions before running licensed functionality.

## Quick start: stochastic channel

```python
from aeris_channel.tr38901 import (
    StochasticChannelConfig,
    generate_stochastic_channel,
)

config = StochasticChannelConfig(
    scenario="UMi",
    carrier_freq_hz=3.5e9,
    n_tx=2,
    n_rx=2,
    num_time_samples=64,
    seed=42,
)
result = generate_stochastic_channel(config)

print(result.H.shape)  # (2, 2, 64)
print(result.pathloss_db)
```

## Map-based hybrid channels

For the TR 38.901 map-based hybrid workflow, `aeris-channel` consumes complete
Step 3 deterministic path sets produced by a connected scene or ray-tracing
tool, then generates the stochastic residual and ray-resolved channel for one
link and snapshot. Map preparation and deterministic ray tracing are upstream
responsibilities; the package does not replace a ray tracer.

The documented Clause 8 profiles include UMa, UMi Street Canyon, RMa through
7 GHz, InH-Office, and InF-SL/DL/SH/DH for LOS/NLOS, plus LOS-only InF-HH.
RMa, InH, and InF require caller-supplied cluster delay spread where the
referenced table marks it N/A. The map-based model is intended for
company-specific use and calibration; it does not claim universal
cross-company calibration.

## Documentation and examples

Release-matched public documentation and runnable examples are distributed
separately from the PyPI wheel. Use the documentation and examples marked for
the installed package version. They cover stochastic/CDL/TDL channels, NTN and
aerial UE workflows, spatial consistency, MIMO/XL-MIMO, ISAC, deterministic
path interoperability, resource grids, and RF/HIL or PROPSIM integrations.

## Support

Contact `support.aeris@keysight.com` for licensing and product support.
