phased-array-systems 0.2.0__tar.gz → 0.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. phased_array_systems-0.4.0/.github/workflows/docs.yml +45 -0
  2. phased_array_systems-0.4.0/CHANGELOG.md +77 -0
  3. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/CLAUDE.md +39 -16
  4. phased_array_systems-0.4.0/CONTRIBUTING.md +210 -0
  5. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/PKG-INFO +79 -2
  6. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/README.md +68 -0
  7. phased_array_systems-0.4.0/docs/api/architecture.md +102 -0
  8. phased_array_systems-0.4.0/docs/api/index.md +112 -0
  9. phased_array_systems-0.4.0/docs/api/io.md +250 -0
  10. phased_array_systems-0.4.0/docs/api/models/antenna.md +103 -0
  11. phased_array_systems-0.4.0/docs/api/models/comms.md +142 -0
  12. phased_array_systems-0.4.0/docs/api/models/index.md +103 -0
  13. phased_array_systems-0.4.0/docs/api/models/radar.md +161 -0
  14. phased_array_systems-0.4.0/docs/api/models/swapc.md +157 -0
  15. phased_array_systems-0.4.0/docs/api/reports.md +163 -0
  16. phased_array_systems-0.4.0/docs/api/requirements.md +128 -0
  17. phased_array_systems-0.4.0/docs/api/scenarios.md +92 -0
  18. phased_array_systems-0.4.0/docs/api/trades.md +179 -0
  19. phased_array_systems-0.4.0/docs/api/viz.md +179 -0
  20. phased_array_systems-0.4.0/docs/changelog.md +29 -0
  21. phased_array_systems-0.4.0/docs/cli/doe.md +213 -0
  22. phased_array_systems-0.4.0/docs/cli/index.md +143 -0
  23. phased_array_systems-0.4.0/docs/cli/pareto.md +178 -0
  24. phased_array_systems-0.4.0/docs/cli/report.md +215 -0
  25. phased_array_systems-0.4.0/docs/cli/run.md +182 -0
  26. phased_array_systems-0.4.0/docs/contributing.md +42 -0
  27. phased_array_systems-0.4.0/docs/faq.md +251 -0
  28. phased_array_systems-0.4.0/docs/getting-started/concepts.md +421 -0
  29. phased_array_systems-0.4.0/docs/getting-started/index.md +55 -0
  30. phased_array_systems-0.4.0/docs/getting-started/installation.md +232 -0
  31. phased_array_systems-0.4.0/docs/getting-started/quickstart.md +299 -0
  32. phased_array_systems-0.4.0/docs/index.md +166 -0
  33. phased_array_systems-0.4.0/docs/javascripts/mathjax.js +23 -0
  34. phased_array_systems-0.4.0/docs/stylesheets/extra.css +131 -0
  35. phased_array_systems-0.4.0/docs/theory/index.md +68 -0
  36. phased_array_systems-0.4.0/docs/theory/link-budget-equations.md +247 -0
  37. phased_array_systems-0.4.0/docs/theory/pareto-optimization.md +269 -0
  38. phased_array_systems-0.4.0/docs/theory/phased-arrays.md +255 -0
  39. phased_array_systems-0.4.0/docs/theory/radar-equation.md +237 -0
  40. phased_array_systems-0.4.0/docs/tutorials/comms-trade-study.md +319 -0
  41. phased_array_systems-0.4.0/docs/tutorials/config-driven-workflow.md +393 -0
  42. phased_array_systems-0.4.0/docs/tutorials/index.md +67 -0
  43. phased_array_systems-0.4.0/docs/tutorials/radar-detection-trade.md +371 -0
  44. phased_array_systems-0.4.0/docs/tutorials/sensitivity-analysis.md +365 -0
  45. phased_array_systems-0.4.0/docs/user-guide/architecture.md +333 -0
  46. phased_array_systems-0.4.0/docs/user-guide/index.md +132 -0
  47. phased_array_systems-0.4.0/docs/user-guide/link-budget.md +343 -0
  48. phased_array_systems-0.4.0/docs/user-guide/pareto-analysis.md +385 -0
  49. phased_array_systems-0.4.0/docs/user-guide/radar-detection.md +348 -0
  50. phased_array_systems-0.4.0/docs/user-guide/reports.md +386 -0
  51. phased_array_systems-0.4.0/docs/user-guide/requirements.md +340 -0
  52. phased_array_systems-0.4.0/docs/user-guide/scenarios.md +268 -0
  53. phased_array_systems-0.4.0/docs/user-guide/trade-studies.md +409 -0
  54. phased_array_systems-0.4.0/docs/user-guide/visualization.md +470 -0
  55. phased_array_systems-0.4.0/examples/03_radar_detection_trade.py +377 -0
  56. phased_array_systems-0.4.0/mkdocs.yml +167 -0
  57. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/notebooks/tutorial_phased_array_trade_study.ipynb +2 -38
  58. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/pyproject.toml +11 -1
  59. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/__about__.py +1 -1
  60. phased_array_systems-0.4.0/src/phased_array_systems/cli.py +376 -0
  61. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/constants.py +1 -0
  62. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/evaluate.py +4 -2
  63. phased_array_systems-0.4.0/src/phased_array_systems/models/__init__.py +85 -0
  64. phased_array_systems-0.4.0/src/phased_array_systems/models/digital/__init__.py +58 -0
  65. phased_array_systems-0.4.0/src/phased_array_systems/models/digital/bandwidth.py +261 -0
  66. phased_array_systems-0.4.0/src/phased_array_systems/models/digital/converters.py +273 -0
  67. phased_array_systems-0.4.0/src/phased_array_systems/models/digital/scheduling.py +341 -0
  68. phased_array_systems-0.4.0/src/phased_array_systems/models/radar/__init__.py +25 -0
  69. phased_array_systems-0.4.0/src/phased_array_systems/models/radar/detection.py +259 -0
  70. phased_array_systems-0.4.0/src/phased_array_systems/models/radar/equation.py +253 -0
  71. phased_array_systems-0.4.0/src/phased_array_systems/models/radar/integration.py +140 -0
  72. phased_array_systems-0.4.0/src/phased_array_systems/models/rf/__init__.py +37 -0
  73. phased_array_systems-0.4.0/src/phased_array_systems/models/rf/cascade.py +538 -0
  74. phased_array_systems-0.4.0/src/phased_array_systems/reports/__init__.py +11 -0
  75. phased_array_systems-0.4.0/src/phased_array_systems/reports/generator.py +167 -0
  76. phased_array_systems-0.4.0/src/phased_array_systems/reports/html.py +452 -0
  77. phased_array_systems-0.4.0/src/phased_array_systems/reports/markdown.py +256 -0
  78. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/scenarios/radar.py +22 -3
  79. phased_array_systems-0.4.0/tests/test_cli.py +210 -0
  80. phased_array_systems-0.4.0/tests/test_radar.py +365 -0
  81. phased_array_systems-0.4.0/tests/test_reports.py +283 -0
  82. phased_array_systems-0.2.0/src/phased_array_systems/cli.py +0 -25
  83. phased_array_systems-0.2.0/src/phased_array_systems/models/__init__.py +0 -5
  84. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/.github/workflows/ci.yml +0 -0
  85. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/.github/workflows/publish.yml +0 -0
  86. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/.gitignore +0 -0
  87. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/LICENSE +0 -0
  88. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/examples/01_comms_single_case.py +0 -0
  89. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/examples/02_comms_doe_trade.py +0 -0
  90. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/examples/configs/comms_basic.yaml +0 -0
  91. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/examples/configs/comms_doe.yaml +0 -0
  92. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/ruff.toml +0 -0
  93. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/__init__.py +0 -0
  94. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/architecture/__init__.py +0 -0
  95. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/architecture/config.py +0 -0
  96. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/io/__init__.py +0 -0
  97. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/io/config_loader.py +0 -0
  98. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/io/exporters.py +0 -0
  99. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/io/schema.py +0 -0
  100. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/models/antenna/__init__.py +0 -0
  101. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/models/antenna/adapter.py +0 -0
  102. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/models/antenna/metrics.py +0 -0
  103. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/models/base.py +0 -0
  104. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/models/comms/__init__.py +0 -0
  105. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/models/comms/link_budget.py +0 -0
  106. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/models/comms/propagation.py +0 -0
  107. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/models/swapc/__init__.py +0 -0
  108. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/models/swapc/cost.py +0 -0
  109. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/models/swapc/power.py +0 -0
  110. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/requirements/__init__.py +0 -0
  111. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/requirements/core.py +0 -0
  112. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/scenarios/__init__.py +0 -0
  113. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/scenarios/base.py +0 -0
  114. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/scenarios/comms.py +0 -0
  115. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/trades/__init__.py +0 -0
  116. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/trades/design_space.py +0 -0
  117. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/trades/doe.py +0 -0
  118. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/trades/pareto.py +0 -0
  119. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/trades/runner.py +0 -0
  120. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/types.py +0 -0
  121. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/utils/__init__.py +0 -0
  122. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/utils/hashing.py +0 -0
  123. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/viz/__init__.py +0 -0
  124. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/src/phased_array_systems/viz/plots.py +0 -0
  125. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/tests/__init__.py +0 -0
  126. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/tests/test_antenna_adapter.py +0 -0
  127. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/tests/test_architecture.py +0 -0
  128. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/tests/test_comms_link_budget.py +0 -0
  129. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/tests/test_doe.py +0 -0
  130. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/tests/test_evaluate.py +0 -0
  131. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/tests/test_pareto.py +0 -0
  132. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/tests/test_requirements.py +0 -0
  133. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/tests/test_runner.py +0 -0
  134. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/tests/test_swapc.py +0 -0
  135. {phased_array_systems-0.2.0 → phased_array_systems-0.4.0}/tests/test_viz.py +0 -0
@@ -0,0 +1,45 @@
1
+ name: Deploy Documentation
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ release:
7
+ types: [published]
8
+ workflow_dispatch:
9
+
10
+ permissions:
11
+ contents: write
12
+ pages: write
13
+ id-token: write
14
+
15
+ concurrency:
16
+ group: deploy-docs
17
+ cancel-in-progress: true
18
+
19
+ jobs:
20
+ deploy:
21
+ runs-on: ubuntu-latest
22
+ steps:
23
+ - name: Checkout repository
24
+ uses: actions/checkout@v4
25
+ with:
26
+ fetch-depth: 0
27
+
28
+ - name: Set up Python
29
+ uses: actions/setup-python@v5
30
+ with:
31
+ python-version: '3.11'
32
+ cache: 'pip'
33
+
34
+ - name: Install dependencies
35
+ run: |
36
+ python -m pip install --upgrade pip
37
+ pip install -e ".[docs]"
38
+
39
+ - name: Configure Git
40
+ run: |
41
+ git config --global user.name "github-actions[bot]"
42
+ git config --global user.email "github-actions[bot]@users.noreply.github.com"
43
+
44
+ - name: Deploy to GitHub Pages
45
+ run: mkdocs gh-deploy --force
@@ -0,0 +1,77 @@
1
+ # Changelog
2
+
3
+ All notable changes to phased-array-systems will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Added
11
+ - Comprehensive documentation site with MkDocs Material
12
+ - API reference with mkdocstrings
13
+ - User guides for all major features
14
+ - Tutorials for communications and radar trade studies
15
+ - Theory documentation for phased arrays and link budgets
16
+
17
+ ## [0.3.0] - 2024-01-15
18
+
19
+ ### Added
20
+ - Radar detection model with pulse integration
21
+ - `RadarDetectionScenario` for radar trade studies
22
+ - Radar equation calculator with Swerling models
23
+ - Detection probability and false alarm rate computations
24
+ - CLI commands: `pasys run`, `pasys doe`, `pasys report`, `pasys pareto`
25
+ - HTML and Markdown report generation
26
+ - Example: `03_radar_detection_trade.py`
27
+
28
+ ### Changed
29
+ - Improved Pareto extraction algorithm efficiency
30
+ - Enhanced visualization with 3D trade space plots
31
+
32
+ ### Fixed
33
+ - Hypervolume calculation for 3+ objectives
34
+
35
+ ## [0.2.0] - 2024-01-01
36
+
37
+ ### Added
38
+ - Design of Experiments (DOE) generation with LHS, random, and grid methods
39
+ - `BatchRunner` for parallel evaluation with progress tracking
40
+ - Pareto frontier extraction and ranking (weighted sum, TOPSIS)
41
+ - Scatter matrix visualization
42
+ - Parquet and CSV export functionality
43
+ - Requirements verification with pass/fail and margins
44
+ - `DesignSpace` for defining variable bounds and types
45
+
46
+ ### Changed
47
+ - Refactored architecture configuration to use Pydantic v2
48
+ - Improved error handling for batch evaluation
49
+
50
+ ### Fixed
51
+ - Array gain calculation for non-square arrays
52
+ - Case ID generation collision in augmented DOE
53
+
54
+ ## [0.1.0] - 2023-12-15
55
+
56
+ ### Added
57
+ - Initial release
58
+ - `Architecture` configuration: `ArrayConfig`, `RFChainConfig`, `CostConfig`
59
+ - `CommsLinkScenario` for communications link analysis
60
+ - Communications link budget model (`CommsLinkModel`)
61
+ - Free space path loss propagation model
62
+ - Power and cost models for SWaP-C analysis
63
+ - `Requirement` and `RequirementSet` for requirements management
64
+ - Pareto plot visualization
65
+ - YAML/JSON configuration loading
66
+ - Example: `01_comms_single_case.py`
67
+ - Example: `02_comms_doe_trade.py`
68
+ - Tutorial Jupyter notebook
69
+
70
+ ### Dependencies
71
+ - Requires `phased-array-modeling>=1.2.0`
72
+ - Python 3.10+
73
+
74
+ [Unreleased]: https://github.com/jman4162/phased-array-systems/compare/v0.3.0...HEAD
75
+ [0.3.0]: https://github.com/jman4162/phased-array-systems/compare/v0.2.0...v0.3.0
76
+ [0.2.0]: https://github.com/jman4162/phased-array-systems/compare/v0.1.0...v0.2.0
77
+ [0.1.0]: https://github.com/jman4162/phased-array-systems/releases/tag/v0.1.0
@@ -8,30 +8,31 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
8
8
 
9
9
  **Core dependency:** `phased-array-modeling>=1.2.0` (provides array geometries, steering, tapering, impairments, and pattern visualization)
10
10
 
11
- **Project status:** Design phase (no code implemented yet). See `package_design_and_requirements.txt` for the complete SDD.
11
+ **Project status:** v0.4.0 - All 4 implementation phases complete. See `package_design_and_requirements.txt` for the original SDD.
12
12
 
13
13
  ## Build & Development Commands
14
14
 
15
15
  ```bash
16
- # Installation (once implemented)
17
- pip install phased-array-systems
18
- pip install phased-array-systems[dev] # Development deps (pytest, ruff, mypy)
19
- pip install phased-array-systems[plotting] # Visualization (plotly, kaleido)
16
+ # Installation
17
+ pip install -e . # Editable install
18
+ pip install -e ".[dev]" # Development deps (pytest, ruff, mypy)
19
+ pip install -e ".[plotting]" # Visualization (plotly, kaleido)
20
20
 
21
21
  # Testing
22
- pytest tests/
23
- pytest tests/test_comms_link_budget.py -v
24
- pytest tests/ --cov=phased_array_systems
22
+ pytest tests/ # Run all tests
23
+ pytest tests/test_comms_link_budget.py -v # Run specific test file
24
+ pytest tests/ --cov=phased_array_systems # With coverage
25
25
 
26
26
  # Linting & Formatting
27
27
  ruff check .
28
28
  ruff format .
29
29
  mypy src/phased_array_systems
30
30
 
31
- # CLI (planned)
32
- pasys run config.yaml # Single case evaluation
33
- pasys doe config.yaml # DOE batch study
34
- pasys pareto results.parquet --x cost_usd --y eirp_dbw
31
+ # CLI
32
+ pasys run config.yaml # Single case evaluation
33
+ pasys doe config.yaml # DOE batch study
34
+ pasys pareto results.parquet --x cost_usd --y eirp_dbw # Pareto analysis
35
+ pasys report results.parquet -o report.html # Generate HTML report
35
36
  ```
36
37
 
37
38
  ## Architecture
@@ -88,10 +89,32 @@ Config (YAML/JSON) → Pydantic validation → [Architecture + Scenario + Requir
88
89
 
89
90
  ## Implementation Phases
90
91
 
91
- 1. **Phase 1 (MVP):** Schemas, config loader, requirements verification, antenna adapter, comms link budget
92
- 2. **Phase 2:** DOE generator, batch runner with resume, Pareto extraction, plots, Parquet export
93
- 3. **Phase 3:** Radar equation, detection threshold helpers, radar trade examples
94
- 4. **Phase 4:** CLI (`pasys`), HTML/Markdown report generation, PyPI publish
92
+ All phases are complete as of v0.4.0:
93
+
94
+ 1. **Phase 1 (MVP):** ✅ Complete
95
+ - Pydantic schemas for Architecture, Scenario, RequirementSet
96
+ - YAML/JSON config loader with validation
97
+ - Requirements verification with pass/fail and margin reporting
98
+ - Antenna adapter wrapping `phased-array-modeling`
99
+ - Comms link budget model (EIRP, path loss, SNR, margins)
100
+
101
+ 2. **Phase 2:** ✅ Complete
102
+ - DOE generator with full-factorial and Latin hypercube sampling
103
+ - Batch runner with parallel execution and resume capability
104
+ - Pareto extraction for multi-objective optimization
105
+ - Interactive plots (Pareto fronts, scatter matrices)
106
+ - Parquet/CSV export for results
107
+
108
+ 3. **Phase 3:** ✅ Complete
109
+ - Radar equation model (SNR, detection range)
110
+ - Detection threshold helpers (PD/PFA calculations)
111
+ - Integration gain for pulse integration
112
+ - Radar trade study examples
113
+
114
+ 4. **Phase 4:** ✅ Complete
115
+ - `pasys` CLI with run, doe, pareto, and report commands
116
+ - HTML and Markdown report generation
117
+ - Ready for PyPI publish
95
118
 
96
119
  ## Future Goals
97
120
 
@@ -0,0 +1,210 @@
1
+ # Contributing to phased-array-systems
2
+
3
+ Thank you for your interest in contributing to phased-array-systems! This document provides guidelines and instructions for contributing.
4
+
5
+ ## Code of Conduct
6
+
7
+ Please be respectful and constructive in all interactions. We welcome contributors of all experience levels.
8
+
9
+ ## Getting Started
10
+
11
+ ### Development Setup
12
+
13
+ 1. **Fork and clone the repository:**
14
+ ```bash
15
+ git clone https://github.com/YOUR_USERNAME/phased-array-systems.git
16
+ cd phased-array-systems
17
+ ```
18
+
19
+ 2. **Create a virtual environment:**
20
+ ```bash
21
+ python -m venv venv
22
+ source venv/bin/activate # On Windows: venv\Scripts\activate
23
+ ```
24
+
25
+ 3. **Install in development mode:**
26
+ ```bash
27
+ pip install -e ".[dev,docs,plotting]"
28
+ ```
29
+
30
+ 4. **Verify the installation:**
31
+ ```bash
32
+ pytest tests/ -v
33
+ ```
34
+
35
+ ### Running Tests
36
+
37
+ ```bash
38
+ # Run all tests
39
+ pytest tests/
40
+
41
+ # Run with coverage
42
+ pytest tests/ --cov=phased_array_systems
43
+
44
+ # Run a specific test file
45
+ pytest tests/test_link_budget.py -v
46
+ ```
47
+
48
+ ### Code Quality
49
+
50
+ We use `ruff` for linting and formatting, and `mypy` for type checking:
51
+
52
+ ```bash
53
+ # Lint the codebase
54
+ ruff check .
55
+
56
+ # Auto-format code
57
+ ruff format .
58
+
59
+ # Type check
60
+ mypy src/phased_array_systems
61
+ ```
62
+
63
+ ## Making Changes
64
+
65
+ ### Branching Strategy
66
+
67
+ 1. Create a feature branch from `main`:
68
+ ```bash
69
+ git checkout -b feature/your-feature-name
70
+ ```
71
+
72
+ 2. Make your changes with clear, atomic commits
73
+
74
+ 3. Push to your fork and create a Pull Request
75
+
76
+ ### Commit Messages
77
+
78
+ Write clear, descriptive commit messages:
79
+
80
+ ```
81
+ Add support for triangular array geometry
82
+
83
+ - Implement triangular element positioning
84
+ - Add tests for new geometry type
85
+ - Update documentation with examples
86
+ ```
87
+
88
+ ### Pull Request Guidelines
89
+
90
+ - **Title:** Use a clear, descriptive title
91
+ - **Description:** Explain what changes you made and why
92
+ - **Tests:** Add tests for new functionality
93
+ - **Documentation:** Update docs if adding new features
94
+ - **Small PRs:** Keep changes focused; large changes should be split into multiple PRs
95
+
96
+ ## What to Contribute
97
+
98
+ ### Good First Issues
99
+
100
+ Look for issues labeled `good first issue` - these are ideal for newcomers.
101
+
102
+ ### Areas We Need Help
103
+
104
+ - **New models:** Additional propagation models, antenna patterns
105
+ - **Documentation:** Tutorials, examples, API docs improvements
106
+ - **Testing:** Increase test coverage, add edge case tests
107
+ - **Performance:** Optimization of batch evaluation, caching improvements
108
+ - **Visualization:** New plot types, interactive visualizations
109
+
110
+ ### Feature Requests
111
+
112
+ Before starting on a large feature:
113
+ 1. Check existing issues to avoid duplicates
114
+ 2. Open an issue describing the feature
115
+ 3. Wait for discussion/approval before implementing
116
+
117
+ ## Code Style
118
+
119
+ ### Python Style
120
+
121
+ - Follow PEP 8 (enforced by ruff)
122
+ - Use type hints for all public functions
123
+ - Use Google-style docstrings
124
+ - Keep functions focused and under 50 lines when possible
125
+
126
+ ### Docstring Example
127
+
128
+ ```python
129
+ def compute_link_margin(
130
+ eirp_dbw: float,
131
+ path_loss_db: float,
132
+ required_snr_db: float,
133
+ ) -> dict[str, float]:
134
+ """Compute the communications link margin.
135
+
136
+ Calculates received SNR and margin to the required threshold
137
+ for a point-to-point link.
138
+
139
+ Args:
140
+ eirp_dbw: Effective Isotropic Radiated Power in dBW.
141
+ path_loss_db: Total path loss in dB.
142
+ required_snr_db: Required SNR for demodulation in dB.
143
+
144
+ Returns:
145
+ Dictionary containing:
146
+ - snr_db: Received signal-to-noise ratio
147
+ - margin_db: Margin above required SNR (positive = passes)
148
+
149
+ Raises:
150
+ ValueError: If any input is NaN or infinite.
151
+
152
+ Example:
153
+ >>> result = compute_link_margin(50.0, 150.0, 10.0)
154
+ >>> print(f"Margin: {result['margin_db']:.1f} dB")
155
+ """
156
+ ```
157
+
158
+ ### Testing Guidelines
159
+
160
+ - Test both happy path and edge cases
161
+ - Use descriptive test names: `test_extract_pareto_with_empty_dataframe`
162
+ - Use pytest fixtures for shared setup
163
+ - Mock external dependencies (e.g., `phased-array-modeling`)
164
+
165
+ ## Documentation
166
+
167
+ ### Building Docs Locally
168
+
169
+ ```bash
170
+ # Install docs dependencies
171
+ pip install -e ".[docs]"
172
+
173
+ # Serve locally with live reload
174
+ mkdocs serve
175
+
176
+ # Build static site
177
+ mkdocs build
178
+ ```
179
+
180
+ ### Documentation Structure
181
+
182
+ - `docs/getting-started/` - Installation and quickstart
183
+ - `docs/user-guide/` - Detailed usage guides
184
+ - `docs/tutorials/` - Step-by-step tutorials
185
+ - `docs/api/` - API reference (auto-generated from docstrings)
186
+ - `docs/theory/` - Background theory and equations
187
+
188
+ ## Release Process
189
+
190
+ Releases are managed by maintainers:
191
+
192
+ 1. Update `__about__.py` with new version
193
+ 2. Update `CHANGELOG.md`
194
+ 3. Create a GitHub release with tag `vX.Y.Z`
195
+ 4. GitHub Actions will publish to PyPI
196
+
197
+ ## Getting Help
198
+
199
+ - **Questions:** Open a GitHub Discussion
200
+ - **Bugs:** Open a GitHub Issue
201
+ - **Security:** Email maintainers directly (do not open public issues)
202
+
203
+ ## Recognition
204
+
205
+ Contributors are recognized in:
206
+ - The GitHub contributors page
207
+ - Release notes for significant contributions
208
+ - The project README for major contributions
209
+
210
+ Thank you for contributing to phased-array-systems!
@@ -1,11 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: phased-array-systems
3
- Version: 0.2.0
3
+ Version: 0.4.0
4
4
  Summary: Phased array antenna system design, optimization, and performance visualization
5
5
  Project-URL: Homepage, https://github.com/jman4162/phased-array-systems
6
- Project-URL: Documentation, https://github.com/jman4162/phased-array-systems#readme
6
+ Project-URL: Documentation, https://jman4162.github.io/phased-array-systems
7
7
  Project-URL: Repository, https://github.com/jman4162/phased-array-systems
8
8
  Project-URL: Issues, https://github.com/jman4162/phased-array-systems/issues
9
+ Project-URL: Changelog, https://jman4162.github.io/phased-array-systems/changelog
9
10
  Author: phased-array-systems contributors
10
11
  License-Expression: MIT
11
12
  License-File: LICENSE
@@ -35,6 +36,14 @@ Requires-Dist: pandas-stubs>=2.0; extra == 'dev'
35
36
  Requires-Dist: pytest-cov>=4.0; extra == 'dev'
36
37
  Requires-Dist: pytest>=7.0; extra == 'dev'
37
38
  Requires-Dist: ruff>=0.1.0; extra == 'dev'
39
+ Provides-Extra: docs
40
+ Requires-Dist: mkdocs-gen-files>=0.5; extra == 'docs'
41
+ Requires-Dist: mkdocs-jupyter>=0.24; extra == 'docs'
42
+ Requires-Dist: mkdocs-literate-nav>=0.6; extra == 'docs'
43
+ Requires-Dist: mkdocs-material>=9.4; extra == 'docs'
44
+ Requires-Dist: mkdocs-section-index>=0.3; extra == 'docs'
45
+ Requires-Dist: mkdocs>=1.5; extra == 'docs'
46
+ Requires-Dist: mkdocstrings[python]>=0.24; extra == 'docs'
38
47
  Provides-Extra: plotting
39
48
  Requires-Dist: kaleido>=0.2; extra == 'plotting'
40
49
  Requires-Dist: plotly>=5.0; extra == 'plotting'
@@ -43,18 +52,43 @@ Description-Content-Type: text/markdown
43
52
  # phased-array-systems
44
53
 
45
54
  [![CI](https://github.com/jman4162/phased-array-systems/actions/workflows/ci.yml/badge.svg)](https://github.com/jman4162/phased-array-systems/actions/workflows/ci.yml)
55
+ [![Documentation](https://img.shields.io/badge/docs-mkdocs-blue.svg)](https://jman4162.github.io/phased-array-systems)
46
56
  [![PyPI version](https://badge.fury.io/py/phased-array-systems.svg)](https://badge.fury.io/py/phased-array-systems)
47
57
  [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
48
58
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
49
59
 
50
60
  Phased array antenna system design, optimization, and performance visualization for wireless communications and radar applications.
51
61
 
62
+ **[Documentation](https://jman4162.github.io/phased-array-systems)** |
63
+ **[Getting Started](https://jman4162.github.io/phased-array-systems/getting-started/quickstart/)** |
64
+ **[API Reference](https://jman4162.github.io/phased-array-systems/api/)**
65
+
66
+ ## Why phased-array-systems?
67
+
68
+ - **Model-Based Workflow**: MBSE/MDAO approach from requirements through optimized designs
69
+ - **Requirements-Driven**: Every evaluation produces pass/fail with margins and traceability
70
+ - **Trade-Space Exploration**: DOE generation and Pareto analysis for systematic design exploration
71
+ - **Dual Application**: Supports both communications link budgets and radar detection scenarios
72
+ - **Reproducible**: Config-driven workflow with seed control and version stamping
73
+
74
+ ## Workflow
75
+
76
+ ```
77
+ Config (YAML/JSON) → Architecture + Scenario → DOE Generation → Batch Evaluation
78
+ ↓ ↓
79
+ Requirements ───────────────────────────────────────────→ Verification
80
+ ↓
81
+ Reports ← Visualization ← Pareto Extraction ←──┘
82
+ ```
83
+
52
84
  ## Features
53
85
 
54
86
  - **Requirements as first-class objects**: Every run produces pass/fail + margins with traceability
55
87
  - **Trade-space exploration**: DOE + Pareto optimization over single-point designs
88
+ - **Communications & Radar**: Link budget analysis and radar detection modeling
56
89
  - **Flat metrics dictionary**: All models return consistent `dict[str, float]` for interchange
57
90
  - **Config-driven reproducibility**: Stable case IDs, seed control, version stamping
91
+ - **CLI and Python API**: Use from command line or integrate into scripts
58
92
 
59
93
  ## Installation
60
94
 
@@ -169,6 +203,49 @@ pytest tests/ -v
169
203
  ruff check .
170
204
  ```
171
205
 
206
+ ## CLI
207
+
208
+ ```bash
209
+ # Single case evaluation
210
+ pasys run config.yaml
211
+
212
+ # DOE batch study
213
+ pasys doe config.yaml -n 100 --method lhs
214
+
215
+ # Generate report
216
+ pasys report results.parquet --format html
217
+
218
+ # Extract Pareto frontier
219
+ pasys pareto results.parquet -x cost_usd -y eirp_dbw --plot
220
+ ```
221
+
222
+ ## Documentation
223
+
224
+ Full documentation is available at **[jman4162.github.io/phased-array-systems](https://jman4162.github.io/phased-array-systems)**:
225
+
226
+ - [Getting Started](https://jman4162.github.io/phased-array-systems/getting-started/quickstart/) - Installation and quickstart
227
+ - [User Guide](https://jman4162.github.io/phased-array-systems/user-guide/) - Detailed usage guides
228
+ - [Tutorials](https://jman4162.github.io/phased-array-systems/tutorials/) - Step-by-step walkthroughs
229
+ - [API Reference](https://jman4162.github.io/phased-array-systems/api/) - Complete API documentation
230
+ - [Theory](https://jman4162.github.io/phased-array-systems/theory/) - Background equations and theory
231
+
232
+ ## Citation
233
+
234
+ If you use phased-array-systems in academic work, please cite:
235
+
236
+ ```bibtex
237
+ @software{phased_array_systems,
238
+ title = {phased-array-systems: Phased Array Antenna System Design and Optimization},
239
+ author = {{phased-array-systems contributors}},
240
+ year = {2024},
241
+ url = {https://github.com/jman4162/phased-array-systems}
242
+ }
243
+ ```
244
+
245
+ ## Contributing
246
+
247
+ We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
248
+
172
249
  ## License
173
250
 
174
251
  MIT License - see [LICENSE](LICENSE) for details.
@@ -1,18 +1,43 @@
1
1
  # phased-array-systems
2
2
 
3
3
  [![CI](https://github.com/jman4162/phased-array-systems/actions/workflows/ci.yml/badge.svg)](https://github.com/jman4162/phased-array-systems/actions/workflows/ci.yml)
4
+ [![Documentation](https://img.shields.io/badge/docs-mkdocs-blue.svg)](https://jman4162.github.io/phased-array-systems)
4
5
  [![PyPI version](https://badge.fury.io/py/phased-array-systems.svg)](https://badge.fury.io/py/phased-array-systems)
5
6
  [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
6
7
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
8
 
8
9
  Phased array antenna system design, optimization, and performance visualization for wireless communications and radar applications.
9
10
 
11
+ **[Documentation](https://jman4162.github.io/phased-array-systems)** |
12
+ **[Getting Started](https://jman4162.github.io/phased-array-systems/getting-started/quickstart/)** |
13
+ **[API Reference](https://jman4162.github.io/phased-array-systems/api/)**
14
+
15
+ ## Why phased-array-systems?
16
+
17
+ - **Model-Based Workflow**: MBSE/MDAO approach from requirements through optimized designs
18
+ - **Requirements-Driven**: Every evaluation produces pass/fail with margins and traceability
19
+ - **Trade-Space Exploration**: DOE generation and Pareto analysis for systematic design exploration
20
+ - **Dual Application**: Supports both communications link budgets and radar detection scenarios
21
+ - **Reproducible**: Config-driven workflow with seed control and version stamping
22
+
23
+ ## Workflow
24
+
25
+ ```
26
+ Config (YAML/JSON) → Architecture + Scenario → DOE Generation → Batch Evaluation
27
+ ↓ ↓
28
+ Requirements ───────────────────────────────────────────→ Verification
29
+ ↓
30
+ Reports ← Visualization ← Pareto Extraction ←──┘
31
+ ```
32
+
10
33
  ## Features
11
34
 
12
35
  - **Requirements as first-class objects**: Every run produces pass/fail + margins with traceability
13
36
  - **Trade-space exploration**: DOE + Pareto optimization over single-point designs
37
+ - **Communications & Radar**: Link budget analysis and radar detection modeling
14
38
  - **Flat metrics dictionary**: All models return consistent `dict[str, float]` for interchange
15
39
  - **Config-driven reproducibility**: Stable case IDs, seed control, version stamping
40
+ - **CLI and Python API**: Use from command line or integrate into scripts
16
41
 
17
42
  ## Installation
18
43
 
@@ -127,6 +152,49 @@ pytest tests/ -v
127
152
  ruff check .
128
153
  ```
129
154
 
155
+ ## CLI
156
+
157
+ ```bash
158
+ # Single case evaluation
159
+ pasys run config.yaml
160
+
161
+ # DOE batch study
162
+ pasys doe config.yaml -n 100 --method lhs
163
+
164
+ # Generate report
165
+ pasys report results.parquet --format html
166
+
167
+ # Extract Pareto frontier
168
+ pasys pareto results.parquet -x cost_usd -y eirp_dbw --plot
169
+ ```
170
+
171
+ ## Documentation
172
+
173
+ Full documentation is available at **[jman4162.github.io/phased-array-systems](https://jman4162.github.io/phased-array-systems)**:
174
+
175
+ - [Getting Started](https://jman4162.github.io/phased-array-systems/getting-started/quickstart/) - Installation and quickstart
176
+ - [User Guide](https://jman4162.github.io/phased-array-systems/user-guide/) - Detailed usage guides
177
+ - [Tutorials](https://jman4162.github.io/phased-array-systems/tutorials/) - Step-by-step walkthroughs
178
+ - [API Reference](https://jman4162.github.io/phased-array-systems/api/) - Complete API documentation
179
+ - [Theory](https://jman4162.github.io/phased-array-systems/theory/) - Background equations and theory
180
+
181
+ ## Citation
182
+
183
+ If you use phased-array-systems in academic work, please cite:
184
+
185
+ ```bibtex
186
+ @software{phased_array_systems,
187
+ title = {phased-array-systems: Phased Array Antenna System Design and Optimization},
188
+ author = {{phased-array-systems contributors}},
189
+ year = {2024},
190
+ url = {https://github.com/jman4162/phased-array-systems}
191
+ }
192
+ ```
193
+
194
+ ## Contributing
195
+
196
+ We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
197
+
130
198
  ## License
131
199
 
132
200
  MIT License - see [LICENSE](LICENSE) for details.