Phased array antenna system design, optimization, and performance visualization for wireless communications and radar applications.
Documentation | Getting Started | API Reference
- Model-Based Workflow: MBSE/MDAO approach from requirements through optimized designs
- Requirements-Driven: Every evaluation produces pass/fail with margins and traceability
- Trade-Space Exploration: DOE generation and Pareto analysis for systematic design exploration
- Dual Application: Supports both communications link budgets and radar detection scenarios
- Reproducible: Config-driven workflow with seed control and version stamping
Config (YAML/JSON) → Architecture + Scenario → DOE Generation → Batch Evaluation
↓ ↓
Requirements ───────────────────────────────────────────→ Verification
↓
Reports ← Visualization ← Pareto Extraction ←──┘
- Requirements as first-class objects: Every run produces pass/fail + margins with traceability
- Trade-space exploration: DOE + Pareto optimization over single-point designs
- Communications & Radar: Link budget analysis and radar detection modeling
- Flat metrics dictionary: All models return consistent
dict[str, float]for interchange - Config-driven reproducibility: Stable case IDs, seed control, version stamping
- CLI and Python API: Use from command line or integrate into scripts
pip install phased-array-systems
# Development dependencies
pip install phased-array-systems[dev]
# Visualization extras
pip install phased-array-systems[plotting]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")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"),
])See the examples/ directory:
01_comms_single_case.py- Single case evaluation02_comms_doe_trade.py- Full DOE trade study workflow
Try the interactive tutorial in Google Colab!
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
# 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 .# Single case evaluation
pasys run config.yaml
# DOE batch study
pasys doe config.yaml -n 100 --method lhs
# Generate report
pasys report results.parquet --format html
# Extract Pareto frontier
pasys pareto results.parquet -x cost_usd -y eirp_dbw --plotFull documentation is available at jman4162.github.io/phased-array-systems:
- Getting Started - Installation and quickstart
- User Guide - Detailed usage guides
- Tutorials - Step-by-step walkthroughs
- API Reference - Complete API documentation
- Theory - Background equations and theory
If you use phased-array-systems in academic work, please cite:
@software{phased_array_systems,
title = {phased-array-systems: Phased Array Antenna System Design and Optimization},
author = {{phased-array-systems contributors}},
year = {2024},
url = {https://github.com/jman4162/phased-array-systems}
}We welcome contributions! See CONTRIBUTING.md for guidelines.
MIT License - see LICENSE for details.