Skip to main content

Digital Communication Algorithms with Python

Project description


[![Build Status](https://secure.travis-ci.org/veeresht/CommPy.svg?branch=master)](https://secure.travis-ci.org/veeresht/CommPy)
[![Coverage](https://coveralls.io/repos/veeresht/CommPy/badge.svg)](https://coveralls.io/r/veeresht/CommPy)
[![PyPi](https://badge.fury.io/py/scikit-commpy.svg)](https://badge.fury.io/py/scikit-commpy)
[![Docs](https://readthedocs.org/projects/commpy/badge/?version=latest)](http://commpy.readthedocs.io/en/latest/?badge=latest)

CommPy
======

CommPy is an open source toolkit implementing digital communications algorithms
in Python using NumPy and SciPy.

Objectives
----------
- To provide readable and useable implementations of algorithms used in the research, design and implementation of digital communication systems.

Available Features
------------------
Channel Coding
--------------
- Encoder for Convolutional Codes (Polynomial, Recursive Systematic). Supports all rates and puncture matrices.
- Viterbi Decoder for Convolutional Codes (Hard Decision Output).
- MAP Decoder for Convolutional Codes (Based on the BCJR algorithm).
- Encoder for a rate-1/3 systematic parallel concatenated Turbo Code.
- Turbo Decoder for a rate-1/3 systematic parallel concatenated turbo code (Based on the MAP decoder/BCJR algorithm).
- Binary Galois Field GF(2^m) with minimal polynomials and cyclotomic cosets.
- Create all possible generator polynomials for a (n,k) cyclic code.
- Random Interleavers and De-interleavers.
- Belief Propagation (BP) Decoder for LDPC Codes.

Channel Models
--------------
- SISO Channel with Rayleigh or Rician fading.
- MIMO Channel with Rayleigh or Rician fading.
- Binary Erasure Channel (BEC)
- Binary Symmetric Channel (BSC)
- Binary AWGN Channel (BAWGNC)

Filters
-------
- Rectangular
- Raised Cosine (RC), Root Raised Cosine (RRC)
- Gaussian

Impairments
-----------
- Carrier Frequency Offset (CFO)

Modulation/Demodulation
-----------------------
- Phase Shift Keying (PSK)
- Quadrature Amplitude Modulation (QAM)
- OFDM Tx/Rx signal processing

Sequences
---------
- PN Sequence
- Zadoff-Chu (ZC) Sequence

Utilities
---------
- Decimal to bit-array, bit-array to decimal.
- Hamming distance, Euclidean distance.
- Upsample
- Power of a discrete-time signal

FAQs
----
Why are you developing this?
----------------------------
During my coursework in communication theory and systems at UCSD, I realized that the best way to actually learn and understand the theory is to try and implement ''the Math'' in practice :). Having used Scipy before, I thought there should be a similar package for Digital Communications in Python. This is a start!

What programming languages do you use?
--------------------------------------
CommPy uses Python as its base programming language and python packages like NumPy, SciPy and Matplotlib.

How can I contribute?
---------------------
Implement any feature you want and send me a pull request :). If you want to suggest new features or discuss anything related to CommPy, please get in touch with me (veeresht@gmail.com).

How do I use CommPy?
--------------------
Requirements/Dependencies
-------------------------
- python 2.7 or above
- numpy 1.10 or above
- scipy 0.15 or above
- matplotlib 1.4 or above
- nose 1.3 or above

Installation
------------

- To use the released version on PyPi, use pip or conda to install as follows::
```
$ pip install scikit-commpy
$ conda install -c https://conda.binstar.org/veeresht scikit-commpy
```
- To work with the development branch, clone from github and install as follows::
```
$ git clone https://github.com/veeresht/CommPy.git
$ cd CommPy
$ python setup.py install
```

Citing CommPy
-------------
If you use CommPy for a publication, presentation or a demo, I request you to please cite CommPy as follows:

Veeresh Taranalli, "CommPy: Digital Communication with Python, version 0.3.0. Available at https://github.com/veeresht/CommPy", 2015.

I would also greatly appreciate your feedback if you have found CommPy useful. Just send me a mail: veeresht@gmail.com

For more details on CommPy, please visit http://veeresht.github.com/CommPy


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

scikit-commpy-0.4.0.tar.gz (26.8 kB view details)

Uploaded Source

Built Distribution

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

scikit_commpy-0.4.0-py2-none-any.whl (33.8 kB view details)

Uploaded Python 2

File details

Details for the file scikit-commpy-0.4.0.tar.gz.

File metadata

  • Download URL: scikit-commpy-0.4.0.tar.gz
  • Upload date:
  • Size: 26.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/2.7.15

File hashes

Hashes for scikit-commpy-0.4.0.tar.gz
Algorithm Hash digest
SHA256 a3903df1a9af50654f354eaf3371d13406514405d75a7c0f8f4cf5957fac90e0
MD5 94c4aa4852beaf364c3e336a6b971e43
BLAKE2b-256 90ed5cc5461543cd29fd59346354c02703a89b7991f4f35f8b9229ace33afb1d

See more details on using hashes here.

File details

Details for the file scikit_commpy-0.4.0-py2-none-any.whl.

File metadata

  • Download URL: scikit_commpy-0.4.0-py2-none-any.whl
  • Upload date:
  • Size: 33.8 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/2.7.15

File hashes

Hashes for scikit_commpy-0.4.0-py2-none-any.whl
Algorithm Hash digest
SHA256 e39baeb8f705d048461e27f9a07c7133df1371896241439d604d8e1ef4114f53
MD5 ef1e342173f2e16b2db27f9280e0b287
BLAKE2b-256 55b2175afee1e40820f8f60d6721abfaed79bcdedc557dfe81ec6e7918b937f8

See more details on using hashes here.

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