eas-3d-pattern
A Python library for visualizing and computing beam efficiency on 3D antenna radiation patterns conforming to the NGMN BASTA JSON schema.
What is this?
Given a 3D radiation pattern in JSON format which follows the NGMN BASTA (Base Station Antenna Standards) specification, with this library you can:
- Parse the BASTA-compliant JSON, handles multiple coordinate systems and sampling formats automatically
- Calculate beam efficiency across configurable sectors (EAS methodology)
- Visualize patterns as 2D heatmaps and 3D polar plots
Installation
pip install eas-3d-pattern
Development installation
git clone https://github.com/Ericsson/eas-3d-pattern.git
cd eas-3d-pattern
poetry install
Run tests:
poetry run pytest
Lint and format:
poetry run ruff check .
poetry run ruff format .
Quick Start
from eas_3d_pattern import AntennaPattern, SAMPLE_JSON
# Load a 3D radiation pattern from JSON
pattern = AntennaPattern(SAMPLE_JSON[0])
# Inspect antenna parameters
print(f"{pattern.antenna_model} @ {pattern.frequency_hz / 1e6:.0f} MHz — {pattern.gain_dbi:.1f} dBi")
# → ANTMODEL1 @ 2100 MHz — 18.3 dBi
# Calculate beam efficiency (EAS default sectors)
efficiency = pattern.calculate_beam_efficiency()
print(f"Cell sector: {efficiency['Cell'] * 100:.1f}%")
# → Cell sector: 72.4%
# Visualize the normalized power pattern
pattern.plot()
Features
| Feature | Description |
|---|---|
| Multi-format parsing | Accepts uniform and non-uniform sampling, all NGMN coordinate systems (SPCS_Polar, SPCS_CW, SPCS_CCW, SPCS_Geo) |
| Schema validation | Optional validation against the official NGMN BASTA JSON Schema |
| Beam efficiency | Compute power distribution across predefined EAS sectors or custom rectangular regions |
| Custom sectors | Define your own analysis regions with arbitrary θ/φ boundaries |
| Directivity & losses | Calculate directivity and estimate ohmic losses from declared gain |
| Visualization | Interactive heatmaps and 3D polar plots |
| Batch reporting | Process a directory of JSON files into a structured Excel report with optional PNG exports |
Examples
See the example notebooks for detailed walkthroughs.
Resources
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
Metadata
Release files for eas-3d-pattern 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| eas_3d_pattern-0.2.1.tar.gz | 5.3 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| eas_3d_pattern-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 10.8 MB
Release files / eas_3d_pattern-0.2.1.tar.gz
| Download URL | eas_3d_pattern-0.2.1.tar.gz |
|---|---|
| Size | 5.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7f39e609052d788193565739b6746d8256991a635b0ed77e40d23eb02ad9651b
|
|
BLAKE2b-256 checksum How to use checksums |
aba97e2eacedfa5087836c8f5190fa44a6c91ef62ead89cc13c346bbb846928b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.1 CPython/3.14.4 Linux/6.18.33.2-microsoft-standard-WSL2
|
Release files / eas_3d_pattern-0.2.1-py3-none-any.whl
| Download URL | eas_3d_pattern-0.2.1-py3-none-any.whl |
|---|---|
| Size | 5.5 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e4f0d8993565ec6757af2325127c9a52c03606973358d4dbcbbdaec29016ef1e
|
|
BLAKE2b-256 checksum How to use checksums |
8f2387817a22b59d4fc4fc5b8ffbd0d42e64b239e21c371a7ed11cb3f9ebcec1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.1 CPython/3.14.4 Linux/6.18.33.2-microsoft-standard-WSL2
|