phased-array-modeling 1.0.0__tar.gz → 1.1.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.
- {phased_array_modeling-1.0.0/phased_array_modeling.egg-info → phased_array_modeling-1.1.0}/PKG-INFO +20 -4
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.1.0}/README.md +19 -3
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.1.0}/phased_array/__init__.py +62 -122
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.1.0}/phased_array/beamforming.py +4 -2
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.1.0}/phased_array/core.py +4 -2
- phased_array_modeling-1.1.0/phased_array/export.py +680 -0
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.1.0}/phased_array/geometry.py +4 -3
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.1.0}/phased_array/impairments.py +3 -2
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.1.0}/phased_array/utils.py +2 -1
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.1.0}/phased_array/visualization.py +5 -4
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.1.0/phased_array_modeling.egg-info}/PKG-INFO +20 -4
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.1.0}/phased_array_modeling.egg-info/SOURCES.txt +2 -0
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.1.0}/pyproject.toml +1 -1
- phased_array_modeling-1.1.0/tests/test_export.py +285 -0
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.1.0}/LICENSE +0 -0
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.1.0}/phased_array_modeling.egg-info/dependency_links.txt +0 -0
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.1.0}/phased_array_modeling.egg-info/requires.txt +0 -0
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.1.0}/phased_array_modeling.egg-info/top_level.txt +0 -0
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.1.0}/setup.cfg +0 -0
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.1.0}/tests/test_beamforming.py +0 -0
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.1.0}/tests/test_core.py +0 -0
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.1.0}/tests/test_geometry.py +0 -0
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.1.0}/tests/test_impairments.py +0 -0
{phased_array_modeling-1.0.0/phased_array_modeling.egg-info → phased_array_modeling-1.1.0}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: phased-array-modeling
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.1.0
|
|
4
4
|
Summary: Comprehensive Python library for phased array antenna modeling and visualization
|
|
5
5
|
Author-email: John Hodge <jah70@vt.edu>
|
|
6
6
|
License: MIT
|
|
@@ -42,9 +42,12 @@ Dynamic: license-file
|
|
|
42
42
|
# Phased Array Antenna Modeling
|
|
43
43
|
|
|
44
44
|
[](https://github.com/jman4162/Phased-Array-Antenna-Model/actions/workflows/ci.yml)
|
|
45
|
+
[](https://pypi.org/project/phased-array-modeling/)
|
|
46
|
+
[](https://pypi.org/project/phased-array-modeling/)
|
|
45
47
|
[](https://www.python.org/downloads/)
|
|
46
48
|
[](https://opensource.org/licenses/MIT)
|
|
47
49
|
[](https://colab.research.google.com/github/jman4162/Phased-Array-Antenna-Model/blob/main/Phased_Array_Demo.ipynb)
|
|
50
|
+
[](https://phased-array-antenna-model.streamlit.app/)
|
|
48
51
|
|
|
49
52
|
A comprehensive Python library for computing and visualizing phased array antenna radiation patterns. Features **125x faster** vectorized computations, multiple array geometries, advanced beamforming, and interactive 3D visualization.
|
|
50
53
|
|
|
@@ -56,23 +59,36 @@ A comprehensive Python library for computing and visualizing phased array antenn
|
|
|
56
59
|
- **Realistic Impairments**: Mutual coupling, phase quantization, element failures, scan blindness
|
|
57
60
|
- **Visualization**: 2D matplotlib, interactive 3D Plotly, UV-space representation
|
|
58
61
|
- **Subarray Support**: Subarray-level beamforming with quantized phase shifters
|
|
62
|
+
- **Data Export**: CSV, JSON, and NumPy formats for patterns, weights, and geometry
|
|
63
|
+
|
|
64
|
+
## Try it Online
|
|
65
|
+
|
|
66
|
+
**[Launch Interactive Web App](https://phased-array-antenna-model.streamlit.app/)** - No installation required!
|
|
67
|
+
|
|
68
|
+
The Streamlit app provides an interactive interface for:
|
|
69
|
+
- Designing array geometries (rectangular, triangular, circular, concentric rings, elliptical)
|
|
70
|
+
- Beam steering with real-time pattern visualization
|
|
71
|
+
- Amplitude tapering with sidelobe comparison
|
|
72
|
+
- Impairment simulation (phase quantization, element failures, mutual coupling)
|
|
73
|
+
- UV-space pattern analysis
|
|
74
|
+
- Export data to CSV for further analysis
|
|
59
75
|
|
|
60
76
|
## Installation
|
|
61
77
|
|
|
62
78
|
### From GitHub (recommended)
|
|
63
79
|
|
|
64
80
|
```bash
|
|
65
|
-
pip install
|
|
81
|
+
pip install phased-array-modeling
|
|
66
82
|
```
|
|
67
83
|
|
|
68
84
|
### With optional dependencies
|
|
69
85
|
|
|
70
86
|
```bash
|
|
71
87
|
# Include Plotly for 3D visualization
|
|
72
|
-
pip install "phased-array[plotting]
|
|
88
|
+
pip install "phased-array-modeling[plotting]"
|
|
73
89
|
|
|
74
90
|
# Include all optional dependencies
|
|
75
|
-
pip install "phased-array[full]
|
|
91
|
+
pip install "phased-array-modeling[full]"
|
|
76
92
|
```
|
|
77
93
|
|
|
78
94
|
### For development
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
# Phased Array Antenna Modeling
|
|
2
2
|
|
|
3
3
|
[](https://github.com/jman4162/Phased-Array-Antenna-Model/actions/workflows/ci.yml)
|
|
4
|
+
[](https://pypi.org/project/phased-array-modeling/)
|
|
5
|
+
[](https://pypi.org/project/phased-array-modeling/)
|
|
4
6
|
[](https://www.python.org/downloads/)
|
|
5
7
|
[](https://opensource.org/licenses/MIT)
|
|
6
8
|
[](https://colab.research.google.com/github/jman4162/Phased-Array-Antenna-Model/blob/main/Phased_Array_Demo.ipynb)
|
|
9
|
+
[](https://phased-array-antenna-model.streamlit.app/)
|
|
7
10
|
|
|
8
11
|
A comprehensive Python library for computing and visualizing phased array antenna radiation patterns. Features **125x faster** vectorized computations, multiple array geometries, advanced beamforming, and interactive 3D visualization.
|
|
9
12
|
|
|
@@ -15,23 +18,36 @@ A comprehensive Python library for computing and visualizing phased array antenn
|
|
|
15
18
|
- **Realistic Impairments**: Mutual coupling, phase quantization, element failures, scan blindness
|
|
16
19
|
- **Visualization**: 2D matplotlib, interactive 3D Plotly, UV-space representation
|
|
17
20
|
- **Subarray Support**: Subarray-level beamforming with quantized phase shifters
|
|
21
|
+
- **Data Export**: CSV, JSON, and NumPy formats for patterns, weights, and geometry
|
|
22
|
+
|
|
23
|
+
## Try it Online
|
|
24
|
+
|
|
25
|
+
**[Launch Interactive Web App](https://phased-array-antenna-model.streamlit.app/)** - No installation required!
|
|
26
|
+
|
|
27
|
+
The Streamlit app provides an interactive interface for:
|
|
28
|
+
- Designing array geometries (rectangular, triangular, circular, concentric rings, elliptical)
|
|
29
|
+
- Beam steering with real-time pattern visualization
|
|
30
|
+
- Amplitude tapering with sidelobe comparison
|
|
31
|
+
- Impairment simulation (phase quantization, element failures, mutual coupling)
|
|
32
|
+
- UV-space pattern analysis
|
|
33
|
+
- Export data to CSV for further analysis
|
|
18
34
|
|
|
19
35
|
## Installation
|
|
20
36
|
|
|
21
37
|
### From GitHub (recommended)
|
|
22
38
|
|
|
23
39
|
```bash
|
|
24
|
-
pip install
|
|
40
|
+
pip install phased-array-modeling
|
|
25
41
|
```
|
|
26
42
|
|
|
27
43
|
### With optional dependencies
|
|
28
44
|
|
|
29
45
|
```bash
|
|
30
46
|
# Include Plotly for 3D visualization
|
|
31
|
-
pip install "phased-array[plotting]
|
|
47
|
+
pip install "phased-array-modeling[plotting]"
|
|
32
48
|
|
|
33
49
|
# Include all optional dependencies
|
|
34
|
-
pip install "phased-array[full]
|
|
50
|
+
pip install "phased-array-modeling[full]"
|
|
35
51
|
```
|
|
36
52
|
|
|
37
53
|
### For development
|
|
@@ -32,133 +32,62 @@ Example
|
|
|
32
32
|
>>> theta, phi, pattern_dB = pa.compute_full_pattern(geom.x, geom.y, weights, k)
|
|
33
33
|
"""
|
|
34
34
|
|
|
35
|
-
__version__ = "1.
|
|
35
|
+
__version__ = "1.1.0"
|
|
36
36
|
|
|
37
|
+
# Beamforming functions
|
|
38
|
+
from .beamforming import ( # Amplitude tapers; Null steering; Multiple beams
|
|
39
|
+
apply_taper_to_geometry, chebyshev_taper_1d, chebyshev_taper_2d,
|
|
40
|
+
compute_beam_isolation, compute_null_depth, compute_taper_directivity_loss,
|
|
41
|
+
compute_taper_efficiency, cosine_on_pedestal_taper_1d,
|
|
42
|
+
cosine_on_pedestal_taper_2d, cosine_taper_1d, cosine_taper_2d,
|
|
43
|
+
gaussian_taper_1d, gaussian_taper_2d, hamming_taper_1d, hamming_taper_2d,
|
|
44
|
+
hanning_taper_1d, hanning_taper_2d, monopulse_weights,
|
|
45
|
+
multi_beam_weights_orthogonal, multi_beam_weights_superposition,
|
|
46
|
+
null_steering_lcmv, null_steering_projection, taylor_taper_1d,
|
|
47
|
+
taylor_taper_2d)
|
|
37
48
|
# Core computation functions
|
|
38
|
-
from .core import (
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
compute_half_power_beamwidth,
|
|
50
|
-
)
|
|
51
|
-
|
|
52
|
-
# Utility functions
|
|
53
|
-
from .utils import (
|
|
54
|
-
deg2rad,
|
|
55
|
-
rad2deg,
|
|
56
|
-
azel_to_thetaphi,
|
|
57
|
-
thetaphi_to_azel,
|
|
58
|
-
theta_phi_to_uv,
|
|
59
|
-
uv_to_theta_phi,
|
|
60
|
-
is_visible_region,
|
|
61
|
-
wavelength_to_k,
|
|
62
|
-
frequency_to_wavelength,
|
|
63
|
-
frequency_to_k,
|
|
64
|
-
db_to_linear,
|
|
65
|
-
linear_to_db,
|
|
66
|
-
normalize_pattern,
|
|
67
|
-
create_theta_phi_grid,
|
|
68
|
-
create_uv_grid,
|
|
69
|
-
)
|
|
70
|
-
|
|
49
|
+
from .core import (array_factor_fft, array_factor_uv, array_factor_vectorized,
|
|
50
|
+
compute_directivity, compute_full_pattern,
|
|
51
|
+
compute_half_power_beamwidth, compute_pattern_cuts,
|
|
52
|
+
element_pattern, element_pattern_cosine_tapered,
|
|
53
|
+
steering_vector, total_pattern)
|
|
54
|
+
# Export functions
|
|
55
|
+
from .export import (export_array_config_json, export_coupling_matrix_csv,
|
|
56
|
+
export_geometry_csv, export_pattern_2d_csv,
|
|
57
|
+
export_pattern_csv, export_pattern_npz,
|
|
58
|
+
export_summary_report, export_uv_pattern_csv,
|
|
59
|
+
export_weights_csv, load_pattern_npz)
|
|
71
60
|
# Geometry classes and functions
|
|
72
|
-
from .geometry import (
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
create_cylindrical_array,
|
|
81
|
-
create_spherical_array,
|
|
82
|
-
thin_array_random,
|
|
83
|
-
thin_array_density_tapered,
|
|
84
|
-
thin_array_genetic_algorithm,
|
|
85
|
-
create_rectangular_subarrays,
|
|
86
|
-
compute_subarray_weights,
|
|
87
|
-
array_factor_conformal,
|
|
88
|
-
)
|
|
89
|
-
|
|
90
|
-
# Beamforming functions
|
|
91
|
-
from .beamforming import (
|
|
92
|
-
# Amplitude tapers
|
|
93
|
-
taylor_taper_1d,
|
|
94
|
-
taylor_taper_2d,
|
|
95
|
-
chebyshev_taper_1d,
|
|
96
|
-
chebyshev_taper_2d,
|
|
97
|
-
hamming_taper_1d,
|
|
98
|
-
hamming_taper_2d,
|
|
99
|
-
hanning_taper_1d,
|
|
100
|
-
hanning_taper_2d,
|
|
101
|
-
cosine_taper_1d,
|
|
102
|
-
cosine_taper_2d,
|
|
103
|
-
cosine_on_pedestal_taper_1d,
|
|
104
|
-
cosine_on_pedestal_taper_2d,
|
|
105
|
-
gaussian_taper_1d,
|
|
106
|
-
gaussian_taper_2d,
|
|
107
|
-
compute_taper_efficiency,
|
|
108
|
-
compute_taper_directivity_loss,
|
|
109
|
-
apply_taper_to_geometry,
|
|
110
|
-
# Null steering
|
|
111
|
-
null_steering_projection,
|
|
112
|
-
null_steering_lcmv,
|
|
113
|
-
compute_null_depth,
|
|
114
|
-
# Multiple beams
|
|
115
|
-
multi_beam_weights_superposition,
|
|
116
|
-
multi_beam_weights_orthogonal,
|
|
117
|
-
compute_beam_isolation,
|
|
118
|
-
monopulse_weights,
|
|
119
|
-
)
|
|
120
|
-
|
|
61
|
+
from .geometry import (ArrayGeometry, SubarrayArchitecture,
|
|
62
|
+
array_factor_conformal, compute_subarray_weights,
|
|
63
|
+
create_circular_array, create_concentric_rings_array,
|
|
64
|
+
create_cylindrical_array, create_elliptical_array,
|
|
65
|
+
create_rectangular_array, create_rectangular_subarrays,
|
|
66
|
+
create_spherical_array, create_triangular_array,
|
|
67
|
+
thin_array_density_tapered,
|
|
68
|
+
thin_array_genetic_algorithm, thin_array_random)
|
|
121
69
|
# Impairment models
|
|
122
|
-
from .impairments import (
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
mutual_coupling_matrix_measured,
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
analyze_graceful_degradation,
|
|
136
|
-
# Scan blindness
|
|
137
|
-
surface_wave_scan_angle,
|
|
138
|
-
scan_blindness_model,
|
|
139
|
-
apply_scan_blindness,
|
|
140
|
-
compute_scan_loss,
|
|
141
|
-
)
|
|
142
|
-
|
|
70
|
+
from .impairments import ( # Mutual coupling; Phase quantization; Element failures; Scan blindness
|
|
71
|
+
active_element_pattern, analyze_graceful_degradation,
|
|
72
|
+
analyze_quantization_effect, apply_mutual_coupling, apply_scan_blindness,
|
|
73
|
+
compute_scan_loss, mutual_coupling_matrix_measured,
|
|
74
|
+
mutual_coupling_matrix_theoretical, quantization_rms_error,
|
|
75
|
+
quantization_sidelobe_increase, quantize_phase, scan_blindness_model,
|
|
76
|
+
simulate_element_failures, surface_wave_scan_angle)
|
|
77
|
+
# Utility functions
|
|
78
|
+
from .utils import (azel_to_thetaphi, create_theta_phi_grid, create_uv_grid,
|
|
79
|
+
db_to_linear, deg2rad, frequency_to_k,
|
|
80
|
+
frequency_to_wavelength, is_visible_region, linear_to_db,
|
|
81
|
+
normalize_pattern, rad2deg, theta_phi_to_uv,
|
|
82
|
+
thetaphi_to_azel, uv_to_theta_phi, wavelength_to_k)
|
|
143
83
|
# Visualization functions
|
|
144
|
-
from .visualization import (
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
compute_pattern_uv_space,
|
|
152
|
-
plot_pattern_uv_space,
|
|
153
|
-
# 3D Plotly plots
|
|
154
|
-
plot_pattern_3d_plotly,
|
|
155
|
-
plot_pattern_3d_cartesian_plotly,
|
|
156
|
-
plot_array_geometry_3d_plotly,
|
|
157
|
-
plot_pattern_uv_plotly,
|
|
158
|
-
# Utilities
|
|
159
|
-
plot_comparison_patterns,
|
|
160
|
-
create_pattern_animation_plotly,
|
|
161
|
-
)
|
|
84
|
+
from .visualization import ( # 2D matplotlib plots; UV-space; 3D Plotly plots; Utilities
|
|
85
|
+
compute_pattern_uv_space, create_pattern_animation_plotly,
|
|
86
|
+
plot_array_geometry, plot_array_geometry_3d_plotly,
|
|
87
|
+
plot_comparison_patterns, plot_pattern_2d,
|
|
88
|
+
plot_pattern_3d_cartesian_plotly, plot_pattern_3d_plotly,
|
|
89
|
+
plot_pattern_contour, plot_pattern_polar, plot_pattern_uv_plotly,
|
|
90
|
+
plot_pattern_uv_space)
|
|
162
91
|
|
|
163
92
|
__all__ = [
|
|
164
93
|
# Version
|
|
@@ -260,4 +189,15 @@ __all__ = [
|
|
|
260
189
|
"plot_pattern_uv_plotly",
|
|
261
190
|
"plot_comparison_patterns",
|
|
262
191
|
"create_pattern_animation_plotly",
|
|
192
|
+
# Export
|
|
193
|
+
"export_pattern_csv",
|
|
194
|
+
"export_pattern_2d_csv",
|
|
195
|
+
"export_uv_pattern_csv",
|
|
196
|
+
"export_weights_csv",
|
|
197
|
+
"export_geometry_csv",
|
|
198
|
+
"export_array_config_json",
|
|
199
|
+
"export_pattern_npz",
|
|
200
|
+
"load_pattern_npz",
|
|
201
|
+
"export_coupling_matrix_csv",
|
|
202
|
+
"export_summary_report",
|
|
263
203
|
]
|
|
@@ -4,11 +4,13 @@ Beamforming functions for phased arrays.
|
|
|
4
4
|
Includes amplitude tapering, null steering, and multiple simultaneous beams.
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
+
from typing import List, Optional, Tuple, Union
|
|
8
|
+
|
|
7
9
|
import numpy as np
|
|
8
10
|
from scipy import signal
|
|
9
|
-
|
|
10
|
-
from .geometry import ArrayGeometry
|
|
11
|
+
|
|
11
12
|
from .core import steering_vector
|
|
13
|
+
from .geometry import ArrayGeometry
|
|
12
14
|
|
|
13
15
|
ArrayLike = Union[np.ndarray, float]
|
|
14
16
|
|
|
@@ -5,9 +5,11 @@ Includes vectorized array factor, FFT-based computation, steering vectors,
|
|
|
5
5
|
and element patterns.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
+
from typing import Optional, Tuple, Union
|
|
9
|
+
|
|
8
10
|
import numpy as np
|
|
9
|
-
|
|
10
|
-
from .utils import
|
|
11
|
+
|
|
12
|
+
from .utils import create_theta_phi_grid, linear_to_db, theta_phi_to_uv
|
|
11
13
|
|
|
12
14
|
ArrayLike = Union[np.ndarray, float]
|
|
13
15
|
|