Phased array antenna system design, optimization, and performance visualization
Project description
phased-array-systems
Phased array antenna system design, optimization, and performance visualization for wireless communications and radar applications.
Features
- Requirements as first-class objects: Every run produces pass/fail + margins with traceability
- Trade-space exploration: DOE + Pareto optimization over single-point designs
- Flat metrics dictionary: All models return consistent
dict[str, float]for interchange - Config-driven reproducibility: Stable case IDs, seed control, version stamping
Installation
pip install phased-array-systems
# Development dependencies
pip install phased-array-systems[dev]
# Visualization extras
pip install phased-array-systems[plotting]
Quick Start
Single Case Evaluation
from phased_array_systems.architecture import Architecture, ArrayConfig, RFChainConfig
from phased_array_systems.scenarios import CommsLinkScenario
from phased_array_systems.evaluate import evaluate_case
# Define architecture
arch = Architecture(
array=ArrayConfig(nx=8, ny=8, dx_lambda=0.5, dy_lambda=0.5),
rf=RFChainConfig(tx_power_w_per_elem=1.0, pa_efficiency=0.3),
)
# Define scenario
scenario = CommsLinkScenario(
freq_hz=10e9,
bandwidth_hz=10e6,
range_m=100e3,
required_snr_db=10.0,
)
# Evaluate
metrics = evaluate_case(arch, scenario)
print(f"EIRP: {metrics['eirp_dbw']:.1f} dBW")
print(f"Link Margin: {metrics['link_margin_db']:.1f} dB")
DOE Trade Study
from phased_array_systems.trades import DesignSpace, generate_doe, BatchRunner, extract_pareto
# Define design space
space = (
DesignSpace()
.add_variable("array.nx", "int", low=4, high=16)
.add_variable("array.ny", "int", low=4, high=16)
.add_variable("rf.tx_power_w_per_elem", "float", low=0.5, high=3.0)
)
# Generate DOE
doe = generate_doe(space, method="lhs", n_samples=100, seed=42)
# Run batch evaluation
runner = BatchRunner(scenario)
results = runner.run(doe)
# Extract Pareto frontier
pareto = extract_pareto(results, [
("cost_usd", "minimize"),
("eirp_dbw", "maximize"),
])
Examples
See the examples/ directory:
01_comms_single_case.py- Single case evaluation02_comms_doe_trade.py- Full DOE trade study workflow
Tutorial Notebook
Try the interactive tutorial in Google Colab!
Package Structure
phased_array_systems/
├── architecture/ # Array, RF chain, cost configurations
├── scenarios/ # CommsLinkScenario, RadarDetectionScenario
├── requirements/ # Requirement definitions and verification
├── models/
│ ├── antenna/ # Phased array adapter and metrics
│ ├── comms/ # Link budget, propagation models
│ └── swapc/ # Power and cost models
├── trades/ # DOE, batch runner, Pareto analysis
├── viz/ # Plotting utilities
└── io/ # Config loading, results export
Development
# Clone the repository
git clone https://github.com/jman4162/phased-array-systems.git
cd phased-array-systems
# Install in development mode
pip install -e ".[dev]"
# Run tests
pytest tests/ -v
# Run linting
ruff check .
License
MIT License - see LICENSE for details.
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
Built Distribution
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 phased_array_systems-0.1.0.tar.gz.
File metadata
- Download URL: phased_array_systems-0.1.0.tar.gz
- Upload date:
- Size: 60.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
29d0a739f02971ec0f170efffc573950d2857612e6b0633aa5c3429280d679e7
|
|
| MD5 |
e6170bf9ed5ab50e6e3242e332370eeb
|
|
| BLAKE2b-256 |
c74119a8c577387991712d2e1e0efcf5ddaa5e8d0245667f65dee1bf26fdfe5b
|
Provenance
The following attestation bundles were made for phased_array_systems-0.1.0.tar.gz:
Publisher:
publish.yml on jman4162/phased-array-systems
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
phased_array_systems-0.1.0.tar.gz -
Subject digest:
29d0a739f02971ec0f170efffc573950d2857612e6b0633aa5c3429280d679e7 - Sigstore transparency entry: 868696739
- Sigstore integration time:
-
Permalink:
jman4162/phased-array-systems@288b38b2beaf9b9bc0d72f58b7246c57d4cbf428 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/jman4162
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@288b38b2beaf9b9bc0d72f58b7246c57d4cbf428 -
Trigger Event:
release
-
Statement type:
File details
Details for the file phased_array_systems-0.1.0-py3-none-any.whl.
File metadata
- Download URL: phased_array_systems-0.1.0-py3-none-any.whl
- Upload date:
- Size: 46.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77bacd80e57db354c5da2a152397bde7a3423ea2ee56a004e3a25264e16b2d3a
|
|
| MD5 |
d539647a76f4b70859b28c6623f241a7
|
|
| BLAKE2b-256 |
dfdee330e846196b794f3ed858b648a82ea99864e79c263018f7d535fb2e897b
|
Provenance
The following attestation bundles were made for phased_array_systems-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on jman4162/phased-array-systems
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
phased_array_systems-0.1.0-py3-none-any.whl -
Subject digest:
77bacd80e57db354c5da2a152397bde7a3423ea2ee56a004e3a25264e16b2d3a - Sigstore transparency entry: 868696748
- Sigstore integration time:
-
Permalink:
jman4162/phased-array-systems@288b38b2beaf9b9bc0d72f58b7246c57d4cbf428 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/jman4162
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@288b38b2beaf9b9bc0d72f58b7246c57d4cbf428 -
Trigger Event:
release
-
Statement type: