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

Installation options

(Option 1) Clone the repository with all the apps and docs

git clone https://github.com/JohnNehls/rad-lab
pip install rad-lab

(Option 2) Install from PyPI (library only, no apps)

pip install rad-lab

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.2.tar.gz (198.0 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.2-py3-none-any.whl (45.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: rad_lab-0.0.2.tar.gz
  • Upload date:
  • Size: 198.0 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.2.tar.gz
Algorithm Hash digest
SHA256 6926dba34ceca8e63cf4c515180042695b7b91af1dec66ca7105e88c50b75ddc
MD5 0a03c390a07483e4468c7e599dccf86c
BLAKE2b-256 f4e590237712d95aab72644a53e75239cf2c41b22312744eb63186b97f1b6fc9

See more details on using hashes here.

Provenance

The following attestation bundles were made for rad_lab-0.0.2.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.2-py3-none-any.whl.

File metadata

  • Download URL: rad_lab-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 45.7 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3ef7e294b466af81af883c0c096e17daa8513e65318a4a29cdfbccc5117cbeeb
MD5 157306b62dbe212fa9f87f781a6b535c
BLAKE2b-256 21ee76aed815c5c6ac421dacdb93c6119dfa1f24c2e71944c6d9205248db7abc

See more details on using hashes here.

Provenance

The following attestation bundles were made for rad_lab-0.0.2-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