Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: ieee.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.4%) to scientific vocabulary
Last synced: 10 months ago · JSON representation ·

Repository

Basic Info
  • Host: GitHub
  • Owner: ShaneFlandermeyer
  • License: mit
  • Language: C++
  • Default Branch: master
  • Size: 450 KB
Statistics
  • Stars: 19
  • Watchers: 3
  • Forks: 10
  • Open Issues: 1
  • Releases: 0
Created over 4 years ago · Last pushed over 2 years ago
Metadata Files
Readme License Citation Codeowners

README.md

plasma_dsp

plasma_dsp is a radar signal processing library written in C++. It is primarily useful for generating radar waveforms, although it has some algorithm implementations that have not yet been optimized. To support experimentation on software-defined radio platforms, a GNU Radio module using plasma can also be found here.

Modules and Features

Waveforms

Several objects have been implemented to generate common radar waveforms. A list of waveforms that can be generated is given below:

  • Linear FM (LFM)
  • FMCW
    • Linear upsweep and downsweep
  • Frequency modulated continuous wave (FMCW)
    • Linear upsweep
    • Linear downsweep
  • Linear frequency modulated (LFM)
  • Polyphase coded frequency modulated (PCFM)
  • Phase codes
    • Barker
    • Frank
  • Square wave

Windows

  • Rectangular
  • Blackman
  • Hamming
  • Hanning

Signal Processing

  • FFT/IFFT
  • 1D Constant False Alarm Rate (CFAR) detector
    • Cell averaging (CA)
  • 2D CFAR detector
    • Cell averaging (CA)

Dependencies

Most of the heavy signal processing lifting is handled by ArrayFire, which can be installed through apt by running the following

bash wget https://repo.arrayfire.com/GPG-PUB-KEY-ARRAYFIRE-2020.PUB gpg --no-default-keyring --keyring ./temp-keyring.gpg --import GPG-PUB-KEY-ARRAYFIRE-2020.PUB gpg --no-default-keyring --keyring ./temp-keyring.gpg --export --output arrayfire.gpg rm temp-keyring.gpg sudo mkdir -p /etc/apt/keyrings/ sudo mv arrayfire.gpg /etc/apt/keyrings/arrayfire.gpg echo "deb [signed-by=/etc/apt/keyrings/arrayfire.gpg, arch=amd64] https://repo.arrayfire.com/debian all main" | sudo tee -a /etc/apt/sources.list.d/arrayfire.list sudo apt update sudo apt install arrayfire

If this process fails, you can choose an installation method from the official repository

GoogleTest is also a dependency, but it is installed through a FetchContent call if it is not found.

Installation

The easiest way to use this tool is to obtain the source code from git

bash git clone https://github.com/ShaneFlandermeyer/plasma_dsp.git

To install the tool system-wide, run the commands below from the top-level CMake directory:

bash mkdir -p build cd build cmake .. make sudo make install sudo ldconfig

To uninstall, run the following from the build folder

bash sudo make uninstall sudo ldconfig

Python Usage

Although no Python bindings have been explicitly written for this project, cppyy has been tested and works for all objects. Below is a minimal working example for generating a waveform, converting the data to a numpy array, and plotting

```python import cppyy import cppyy.gbl.std as std import numpy as np import matplotlib.pyplot as plt

Load the library and any headers you want to use in Python

cppyy.loadlibrary('libplasmadsp') cppyy.include('plasmadsp/linearfm_waveform.h')

Generate the waveform data

waveform = cppyy.gbl.plasma.LinearFMWaveform(10e6, 10e-6, 10e3, 20e6) samps = waveform.sample() x = std.vectorstd.complex['double'] samps.host(x.data()) x = np.array(list(x),dtype=np.complex128)

Plot for verification

plt.plot(np.real(x)) plt.show() ```

Owner

  • Name: Shane Flandermeyer
  • Login: ShaneFlandermeyer
  • Kind: user
  • Location: Norman
  • Company: Advanced Radar Research Center

Master's student at the University of Oklahoma. Using reinforcement learning to control radars.

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: Plasma DSP
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Shane
    family-names: Flandermeyer
    email: shaneflandermeyer@gmail.com
    affiliation: The University of Oklahoma
    orcid: 'https://orcid.org/0009-0001-9395-5396'
repository-code: 'https://github.com/ShaneFlandermeyer/plasma-dsp'
abstract: >-
  Plasma DSP is a GPU-accelerated radar signal processing
  library written in C++
license: MIT

GitHub Events

Total
  • Watch event: 5
  • Fork event: 5
Last Year
  • Watch event: 5
  • Fork event: 5

Dependencies

poetry.lock pypi
  • contourpy 1.0.7
  • cycler 0.11.0
  • fonttools 4.38.0
  • jax 0.4.4
  • jaxlib 0.4.4
  • kiwisolver 1.4.4
  • matplotlib 3.7.0
  • numpy 1.24.2
  • opt-einsum 3.3.0
  • packaging 23.0
  • pillow 9.4.0
  • pyparsing 3.0.9
  • python-dateutil 2.8.2
  • scipy 1.9.3
  • setuptools-scm 7.1.0
  • six 1.16.0
  • tomli 2.0.1
  • typing-extensions 4.5.0
pyproject.toml pypi
  • jax ^0.4.4
  • matplotlib ^3.7.0
  • python ^3.10