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
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
Metadata Files
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
- Repositories: 5
- Profile: https://github.com/ShaneFlandermeyer
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
- 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
- jax ^0.4.4
- matplotlib ^3.7.0
- python ^3.10