Skip to main content

A module for general radar signal processing library

Project description

rad-lab

CI

A Python radar module for simulating pulse-Doppler returns and generating range-Doppler maps (RDMs). Designed for radar engineers and students who want to build intuition for how RDMs are formed, how waveforms affect resolution, and how DRFM electronic attack techniques appear in the RDM.

Modules

  • rdm — range-Doppler map generation
  • pulse_doppler_radar — radar system parameter model
  • waveform — uncoded, Barker, random-coded, and LFM pulse generation
  • returns — skin return and DRFM jammer return models
  • range_equation — radar and one-way link range equations
  • uniform_linear_arrays — ULA gain patterns and steering vectors
  • monopulse — amplitude monopulse angle estimation
  • vbm — velocity bin masking EA slow-time modulation functions
  • geometry — range and range-rate from geometry
  • noise — complex Gaussian noise generation
  • utilities — unit conversions and signal utilities

Installation

Requirements

  • Python >= 3.11
  • Python packages listed in pyproject.toml
  • A few exercises use LaTeX for plot labels — LaTeX must be installed for those to run

Steps

Clone the repository and install with pip:

git clone https://github.com/JohnNehls/radar-signal-processing
pip install radar-signal-processing/

Usage

RDM generator

from rad_lab import rdm, Radar, Target, Return, barker_coded_waveform

radar = Radar(
    fcar=10e9,
    tx_power=1e3,
    tx_gain=10 ** (30 / 10),
    rx_gain=10 ** (30 / 10),
    op_temp=290,
    sample_rate=20e6,
    noise_factor=10 ** (8 / 10),
    total_losses=10 ** (8 / 10),
    prf=200e3,
    dwell_time=2e-3,
)

waveform = barker_coded_waveform(10e6, nchips=13)

return_list = [Return(target=Target(range=0.5e3, range_rate=1.0e3, rcs=1))]

rdm.gen(radar, waveform, return_list)

image

Other available waveforms: uncoded_waveform, random_coded_waveform, lfm_waveform.

For additional examples including DRFM jammer returns and VBM, see apps/rdms. kitchen_sink.py shows all waveform and return options.

Everything else

For examples of the other module functions, see the exercises.

Testing

  • To run the pytests:
python -m pytest tests/ -v
  • To run all apps and check for errors:
./apps/run_apps.sh

This script runs all Python files in apps/exercises/, apps/rdms/, and apps/studies/ with the Agg matplotlib backend so no display is required. Files ending in _no_test.py are skipped. The script exits with a non-zero status if any file fails.

Contributing

Contributions are welcome. Please fork the repository and submit a pull request.

License

This project is licensed under the GPL-3.0 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

rad_lab-0.0.1.tar.gz (187.4 kB view details)

Uploaded Source

Built Distribution

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

rad_lab-0.0.1-py3-none-any.whl (44.8 kB view details)

Uploaded Python 3

File details

Details for the file rad_lab-0.0.1.tar.gz.

File metadata

  • Download URL: rad_lab-0.0.1.tar.gz
  • Upload date:
  • Size: 187.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rad_lab-0.0.1.tar.gz
Algorithm Hash digest
SHA256 a96193ee481bc6b7d598c8254c8111080b13b462b44413d27b0c325c19ac5061
MD5 5afd855b2b3447ac83c57793bb09c4e0
BLAKE2b-256 244f929cca385b71bed2b9a53981a7e5d01180e1ff17e8d39590649a14ad09b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for rad_lab-0.0.1.tar.gz:

Publisher: publish.yml on JohnNehls/rad-lab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rad_lab-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: rad_lab-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 44.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rad_lab-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7a39bf93fc9aedf120aa1dbdf8b0abd5630bfa887f88aa2d8b70432e509730b0
MD5 8499ca62ffeda42bb9d70a172822e5cd
BLAKE2b-256 4f958fdd12bd2cac69481186d9b403f1b04cd6f357828005681231e093e8abd7

See more details on using hashes here.

Provenance

The following attestation bundles were made for rad_lab-0.0.1-py3-none-any.whl:

Publisher: publish.yml on JohnNehls/rad-lab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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