Name | dsproc JSON |
Version |
0.1.1
JSON |
| download |
home_page | None |
Summary | dsproc: a powerful digital signals processing toolkit |
upload_time | 2024-12-08 20:35:39 |
maintainer | None |
docs_url | None |
author | importThat |
requires_python | >=3.12 |
license | MIT License Copyright (c) 2024, dsproc Developers. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
keywords |
demodulation
dsp
gnu radio
modulation
radio
sdr
signal
wave
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
<picture align="center">
<img alt="dsproc logo" src="dsproc_logo.png">
</picture>
------------------
# dsproc: a powerful digital signals processing toolkit
## What is it?
**dsproc** is a Python package that enables the analysis and processing of digital radio
signals using an intuitive and approachable framework. It supports end to end digital communcations,
which gives users the ability to fully encode and modulate data into radio waves of all types.
<picture align="center">
<img alt="dsproc logo" src="e2e_digital_comms.png">
</picture>
------------------
## Main Features
Here are some of the things you can do with dsproc:
- Perform end to end digital signal processing! Compress, randomise, error correct,
interleave and then modulate data into a complex wave ready for transmitting through
your software defined radio (SDR) of choice.
- Supports a variety of modulation and demodulation types such as ASK, FSK, QAM, MFSK,
and PSK using symbol sets of arbitrary size.
- Create custom QAM constellations using a simple click gui.
- Use clustering to aid in automatic demodulation of FSK, ASK and QAM signals.
- Create spectrum art by converting images to waves and transmit them via SDR!
## Minimal example
```python
# Import the library
import dsproc
# Read in a file
message = dsproc.Message(fn="my_picture.png")
# The file is current stored as bits. We could leave it that way and transmit one bit per symbol,
# but instead lets convert the message to symbols. Here I will convert to symbols using 2 bits per symbol,
# this gives us four possible symbols, e.g.
# Symbol | Bits
# ---------------------
# 0 | 00
# 1 | 01
# 2 | 10
# 3 | 11
# Convert to symbols
message.symbolise(bits_per_symbol=2)
# Now we want to create a modulation object which we will use to write our bits to a signal
# fs = the sampling frequency, which is how many times per second we are creating samples for our radio wave
# sps = samples per symbol, how many samples we will allow per symbol transmitted. minimum is 1 but it's best to do
# at least 4.
radio_wave = dsproc.Mod(fs=10000, message=message.data, sps=8)
# Apply Amplitude Shift Keying (aka amplitude modulation) to our radio wave. This encodes the radio wave so each
# symbol is represented by a unique amplitude
radio_wave.ASK()
# The wave can be viewed with various plotting methods
radio_wave.amp_view()
radio_wave.time()
# Save the wave as 64 bit complex numbers. This file can then be used directly with GNU radio or Software defined radio
# software. It's best to save the file with the sample rate (fs) in the name because you will need this number for
# transmitting this wave.
radio_wave.save_wave("my_picture_wave_fs=10000_sps=8")
```
## Installation
To install dsproc and it's dependencies I recommend using the pip installer:
```commandline
pip install dsproc
```
## Dependencies
- [NumPy - Adds support for multi-dimensional arrays](https://www.numpy.org)
- [SciPy - Filter and clustering functions](https://scipy.org/)
- [matplotlib - Plotting](https://matplotlib.org/)
## Testing
I use hatch, 'hatch test --doctest-modules --ignore="Examples/*', to run all the tests and the doctests while ignoring
the Examples folder.
Otherwise, tests are in the tests folder, and many functions have doctests.
Raw data
{
"_id": null,
"home_page": null,
"name": "dsproc",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.12",
"maintainer_email": null,
"keywords": "demodulation, dsp, gnu radio, modulation, radio, sdr, signal, wave",
"author": "importThat",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/13/84/4c9143e47cdc1d4a02f8d4651c9c2a7dd37f1a1e0ffc7b8bf3703636d5cf/dsproc-0.1.1.tar.gz",
"platform": null,
"description": "<picture align=\"center\">\n <img alt=\"dsproc logo\" src=\"dsproc_logo.png\">\n</picture>\n\n------------------\n\n# dsproc: a powerful digital signals processing toolkit\n\n## What is it?\n\n**dsproc** is a Python package that enables the analysis and processing of digital radio\nsignals using an intuitive and approachable framework. It supports end to end digital communcations,\n which gives users the ability to fully encode and modulate data into radio waves of all types.\n\n<picture align=\"center\">\n <img alt=\"dsproc logo\" src=\"e2e_digital_comms.png\">\n</picture>\n\n------------------\n\n## Main Features\nHere are some of the things you can do with dsproc:\n \n- Perform end to end digital signal processing! Compress, randomise, error correct, \n interleave and then modulate data into a complex wave ready for transmitting through\n your software defined radio (SDR) of choice.\n- Supports a variety of modulation and demodulation types such as ASK, FSK, QAM, MFSK,\n and PSK using symbol sets of arbitrary size.\n- Create custom QAM constellations using a simple click gui.\n- Use clustering to aid in automatic demodulation of FSK, ASK and QAM signals.\n- Create spectrum art by converting images to waves and transmit them via SDR!\n\n## Minimal example\n\n```python\n# Import the library\nimport dsproc\n\n# Read in a file\nmessage = dsproc.Message(fn=\"my_picture.png\")\n# The file is current stored as bits. We could leave it that way and transmit one bit per symbol,\n# but instead lets convert the message to symbols. Here I will convert to symbols using 2 bits per symbol,\n# this gives us four possible symbols, e.g.\n\n# Symbol | Bits \n# ---------------------\n# 0 | 00\n# 1 | 01\n# 2 | 10\n# 3 | 11\n\n# Convert to symbols\nmessage.symbolise(bits_per_symbol=2)\n\n# Now we want to create a modulation object which we will use to write our bits to a signal\n# fs = the sampling frequency, which is how many times per second we are creating samples for our radio wave\n# sps = samples per symbol, how many samples we will allow per symbol transmitted. minimum is 1 but it's best to do\n# at least 4.\n\nradio_wave = dsproc.Mod(fs=10000, message=message.data, sps=8)\n# Apply Amplitude Shift Keying (aka amplitude modulation) to our radio wave. This encodes the radio wave so each \n# symbol is represented by a unique amplitude\nradio_wave.ASK()\n\n# The wave can be viewed with various plotting methods\nradio_wave.amp_view()\nradio_wave.time()\n\n# Save the wave as 64 bit complex numbers. This file can then be used directly with GNU radio or Software defined radio\n# software. It's best to save the file with the sample rate (fs) in the name because you will need this number for \n# transmitting this wave.\nradio_wave.save_wave(\"my_picture_wave_fs=10000_sps=8\")\n```\n\n## Installation\nTo install dsproc and it's dependencies I recommend using the pip installer:\n```commandline\npip install dsproc\n```\n\n\n## Dependencies\n- [NumPy - Adds support for multi-dimensional arrays](https://www.numpy.org)\n- [SciPy - Filter and clustering functions](https://scipy.org/)\n- [matplotlib - Plotting](https://matplotlib.org/)\n\n## Testing\nI use hatch, 'hatch test --doctest-modules --ignore=\"Examples/*', to run all the tests and the doctests while ignoring\nthe Examples folder.\nOtherwise, tests are in the tests folder, and many functions have doctests.\n\n\n\n\n\n",
"bugtrack_url": null,
"license": "MIT License Copyright (c) 2024, dsproc Developers. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
"summary": "dsproc: a powerful digital signals processing toolkit",
"version": "0.1.1",
"project_urls": {
"Documentation": "https://github.com/importThat/dsproc",
"Homepage": "https://github.com/importThat/dsproc",
"Issues": "https://github.com/importThat/dsproc/issues",
"Source": "https://github.com/importThat/dsproc"
},
"split_keywords": [
"demodulation",
" dsp",
" gnu radio",
" modulation",
" radio",
" sdr",
" signal",
" wave"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "e551f9b35a372a92ebe78ad866e65fdcdf29b9ed3724e6bb181c9daa85665bac",
"md5": "08d2cafb8f0ef9295eb5f2b1ca2a9f9c",
"sha256": "35848abfb61e7ff81e204c9fce4a7e0b275f5d1a53e5e758942c2951bbbf5c34"
},
"downloads": -1,
"filename": "dsproc-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "08d2cafb8f0ef9295eb5f2b1ca2a9f9c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.12",
"size": 41893,
"upload_time": "2024-12-08T20:35:32",
"upload_time_iso_8601": "2024-12-08T20:35:32.450508Z",
"url": "https://files.pythonhosted.org/packages/e5/51/f9b35a372a92ebe78ad866e65fdcdf29b9ed3724e6bb181c9daa85665bac/dsproc-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "13844c9143e47cdc1d4a02f8d4651c9c2a7dd37f1a1e0ffc7b8bf3703636d5cf",
"md5": "d65ef7b05bb3efaaa0d4e115f9573565",
"sha256": "bd6b0f6d787020d469d805e95095bc514fa86ad56ba63f64d9805f2af16c62c0"
},
"downloads": -1,
"filename": "dsproc-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "d65ef7b05bb3efaaa0d4e115f9573565",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.12",
"size": 929824,
"upload_time": "2024-12-08T20:35:39",
"upload_time_iso_8601": "2024-12-08T20:35:39.360402Z",
"url": "https://files.pythonhosted.org/packages/13/84/4c9143e47cdc1d4a02f8d4651c9c2a7dd37f1a1e0ffc7b8bf3703636d5cf/dsproc-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-08 20:35:39",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "importThat",
"github_project": "dsproc",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "dsproc"
}