Skip to main content

Comprehensive Python library for phased array antenna modeling and visualization

Project description

Phased Array Antenna Modeling

CI Python 3.8+ License: MIT Open In Colab

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.

Features

  • High Performance: Vectorized array factor computation (125x faster than naive loops)
  • Multiple Geometries: Rectangular, triangular, circular, cylindrical, spherical, sparse/thinned arrays
  • Beamforming: Amplitude tapering (Taylor, Chebyshev, etc.), null steering, multi-beam
  • Realistic Impairments: Mutual coupling, phase quantization, element failures, scan blindness
  • Visualization: 2D matplotlib, interactive 3D Plotly, UV-space representation
  • Subarray Support: Subarray-level beamforming with quantized phase shifters

Installation

From GitHub (recommended)

pip install git+https://github.com/jman4162/Phased-Array-Antenna-Model.git

With optional dependencies

# Include Plotly for 3D visualization
pip install "phased-array[plotting] @ git+https://github.com/jman4162/Phased-Array-Antenna-Model.git"

# Include all optional dependencies
pip install "phased-array[full] @ git+https://github.com/jman4162/Phased-Array-Antenna-Model.git"

For development

git clone https://github.com/jman4162/Phased-Array-Antenna-Model.git
cd Phased-Array-Antenna-Model
pip install -e ".[dev]"

Quick Start

import phased_array as pa
import numpy as np

# Create a 16x16 rectangular array with half-wavelength spacing
geom = pa.create_rectangular_array(16, 16, dx=0.5, dy=0.5)

# Wavenumber for normalized wavelength
k = pa.wavelength_to_k(1.0)

# Steering weights for 30 degree scan with Taylor taper
weights = pa.steering_vector(k, geom.x, geom.y, theta0_deg=30, phi0_deg=0)
weights *= pa.taylor_taper_2d(16, 16, sidelobe_dB=-30)

# Compute full 2D pattern
theta, phi, pattern_dB = pa.compute_full_pattern(geom.x, geom.y, weights, k)

# Plot
pa.plot_pattern_contour(np.rad2deg(theta), np.rad2deg(phi), pattern_dB,
                        title="16x16 Array - 30deg Scan with Taylor Taper")

Examples

Beam Steering

# Steer beam to theta=25 deg, phi=45 deg
weights = pa.steering_vector(k, geom.x, geom.y, theta0_deg=25, phi0_deg=45)

# Compute E-plane and H-plane cuts
angles, E_plane, H_plane = pa.compute_pattern_cuts(
    geom.x, geom.y, weights, k,
    theta0_deg=25, phi0_deg=45
)

Null Steering

# Place nulls at specific directions to reject interference
null_directions = [(20, 0), (-20, 0)]  # (theta, phi) in degrees

weights = pa.null_steering_projection(
    geom, k,
    theta_main_deg=0, phi_main_deg=0,
    null_directions=null_directions
)

Multiple Simultaneous Beams

# Create 3 simultaneous beams
beam_directions = [(0, 0), (25, 0), (25, 180)]

weights = pa.multi_beam_weights_superposition(
    geom, k, beam_directions,
    amplitudes=[1.0, 0.7, 0.7]
)

Circular/Conformal Arrays

# Cylindrical array
geom_cyl = pa.create_cylindrical_array(
    n_azimuth=16, n_vertical=8,
    radius=2.0, height=4.0
)

# Compute pattern accounting for element orientations
AF = pa.array_factor_conformal(theta, phi, geom_cyl, weights, k)

Phase Quantization Analysis

# Simulate 4-bit phase shifters
weights_quantized = pa.quantize_phase(weights, n_bits=4)

# Analyze effect on pattern
results = pa.analyze_quantization_effect(weights, geom, k, n_bits=4)
print(f"RMS phase error: {results['rms_error_deg']:.1f} degrees")

3D Interactive Visualization

# Create interactive 3D pattern plot
fig = pa.plot_pattern_3d_plotly(theta, phi, pattern_dB,
                                 title="3D Radiation Pattern")
fig.show()

Documentation

For comprehensive documentation, see the demo notebook which covers:

  1. Basic array factor computation
  2. Beam steering
  3. Performance benchmarking
  4. Amplitude tapering comparison
  5. Array geometries (rectangular, triangular, circular, etc.)
  6. Null steering
  7. Multiple simultaneous beams
  8. Phase quantization effects
  9. Element failure analysis
  10. UV-space visualization
  11. 3D Plotly visualization
  12. Conformal array patterns
  13. Mutual coupling effects
  14. Subarray beamforming

Package Structure

phased_array/
├── core.py          # Vectorized AF, FFT, steering, element patterns
├── geometry.py      # Array geometries and subarray architectures
├── beamforming.py   # Tapering, null steering, multi-beam
├── impairments.py   # Coupling, quantization, failures, scan blindness
├── visualization.py # 2D, 3D Plotly, UV-space plotting
└── utils.py         # Coordinate transforms, helpers

Requirements

  • Python 3.8+
  • NumPy >= 1.20.0
  • Matplotlib >= 3.5.0
  • SciPy >= 1.7.0
  • Plotly >= 5.0.0 (optional, for 3D visualization)

Running Tests

pytest tests/ -v

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Citation

If you use this library in your research, please cite:

@software{phased_array,
  author = {Hodge, John},
  title = {Phased Array Antenna Modeling},
  url = {https://github.com/jman4162/Phased-Array-Antenna-Model},
  year = {2024}
}

Contact

John Hodge - jah70@vt.edu

Project Link: https://github.com/jman4162/Phased-Array-Antenna-Model

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

phased_array_modeling-1.0.0.tar.gz (38.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

phased_array_modeling-1.0.0-py3-none-any.whl (33.5 kB view details)

Uploaded Python 3

File details

Details for the file phased_array_modeling-1.0.0.tar.gz.

File metadata

  • Download URL: phased_array_modeling-1.0.0.tar.gz
  • Upload date:
  • Size: 38.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for phased_array_modeling-1.0.0.tar.gz
Algorithm Hash digest
SHA256 93dc0021465feac43b9f31cb6fbe73dba4414a39b0f0488796612c658590d6eb
MD5 caab8554e6c6e9d5706849e402868ceb
BLAKE2b-256 f43b3fbf93d58c8497ddb50d2b28fa86cd38b0e438fd660d4fc4c49464d6cf4f

See more details on using hashes here.

File details

Details for the file phased_array_modeling-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for phased_array_modeling-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9977614839b2e7fbe29f29796ed47c4faf32799aaaf994ddf29cc9df60881aaa
MD5 f03cbcd8a0f35ef25918fe127bd8355e
BLAKE2b-256 2a6c890345eaf9c203ff0c3c7a7a6355997c9af8522a17c25b26e25332ef97e3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page