|
| 1 | +.. -*- mode: rst -*- |
| 2 | +
|
| 3 | +.. image:: https://secure.travis-ci.org/veeresht/CommPy.svg?branch=master |
| 4 | + :target: https://secure.travis-ci.org/veeresht/CommPy |
| 5 | + |
| 6 | +.. image:: https://coveralls.io/repos/veeresht/CommPy/badge.svg |
| 7 | + :target: https://coveralls.io/r/veeresht/CommPy |
| 8 | + |
| 9 | +.. image:: https://badge.fury.io/py/scikit-commpy.svg |
| 10 | + :target: https://badge.fury.io/py/scikit-commpy |
| 11 | + |
| 12 | +.. image:: https://readthedocs.org/projects/commpy/badge/?version=latest |
| 13 | + :target: http://commpy.readthedocs.io/en/latest/?badge=latest |
| 14 | + :alt: Documentation Status |
| 15 | + |
| 16 | + |
| 17 | +CommPy |
| 18 | +====== |
| 19 | + |
| 20 | +CommPy is an open source toolkit implementing digital communications algorithms |
| 21 | +in Python using NumPy and SciPy. |
| 22 | + |
| 23 | +Objectives |
| 24 | +---------- |
| 25 | +- To provide readable and useable implementations of algorithms used in the research, design and implementation of digital communication systems. |
| 26 | + |
| 27 | +Available Features |
| 28 | +------------------ |
| 29 | +Channel Coding |
| 30 | +~~~~~~~~~~~~~~ |
| 31 | +- Encoder for Convolutional Codes (Polynomial, Recursive Systematic). Supports all rates and puncture matrices. |
| 32 | +- Viterbi Decoder for Convolutional Codes (Hard Decision Output). |
| 33 | +- MAP Decoder for Convolutional Codes (Based on the BCJR algorithm). |
| 34 | +- Encoder for a rate-1/3 systematic parallel concatenated Turbo Code. |
| 35 | +- Turbo Decoder for a rate-1/3 systematic parallel concatenated turbo code (Based on the MAP decoder/BCJR algorithm). |
| 36 | +- Binary Galois Field GF(2^m) with minimal polynomials and cyclotomic cosets. |
| 37 | +- Create all possible generator polynomials for a (n,k) cyclic code. |
| 38 | +- Random Interleavers and De-interleavers. |
| 39 | +- Belief Propagation (BP) Decoder for LDPC Codes. |
| 40 | + |
| 41 | +Channel Models |
| 42 | +~~~~~~~~~~~~~~ |
| 43 | +- Binary Erasure Channel (BEC) |
| 44 | +- Binary Symmetric Channel (BSC) |
| 45 | +- Binary AWGN Channel (BAWGNC) |
| 46 | + |
| 47 | +Filters |
| 48 | +~~~~~~~ |
| 49 | +- Rectangular |
| 50 | +- Raised Cosine (RC), Root Raised Cosine (RRC) |
| 51 | +- Gaussian |
| 52 | + |
| 53 | +Impairments |
| 54 | +~~~~~~~~~~~ |
| 55 | +- Carrier Frequency Offset (CFO) |
| 56 | + |
| 57 | +Modulation/Demodulation |
| 58 | +~~~~~~~~~~~~~~~~~~~~~~~ |
| 59 | +- Phase Shift Keying (PSK) |
| 60 | +- Quadrature Amplitude Modulation (QAM) |
| 61 | +- OFDM Tx/Rx signal processing |
| 62 | + |
| 63 | +Sequences |
| 64 | +~~~~~~~~~ |
| 65 | +- PN Sequence |
| 66 | +- Zadoff-Chu (ZC) Sequence |
| 67 | + |
| 68 | +Utilities |
| 69 | +~~~~~~~~~ |
| 70 | +- Decimal to bit-array, bit-array to decimal. |
| 71 | +- Hamming distance, Euclidean distance. |
| 72 | +- Upsample |
| 73 | + |
| 74 | +FAQs |
| 75 | +---- |
| 76 | +Why are you developing this? |
| 77 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 78 | +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! |
| 79 | + |
| 80 | +What programming languages do you use? |
| 81 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 82 | +CommPy uses Python as its base programming language and python packages like NumPy, SciPy and Matplotlib. |
| 83 | + |
| 84 | +How can I contribute? |
| 85 | +~~~~~~~~~~~~~~~~~~~~~ |
| 86 | +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). |
| 87 | + |
| 88 | +How do I use CommPy? |
| 89 | +~~~~~~~~~~~~~~~~~~~~ |
| 90 | +Requirements/Dependencies |
| 91 | +^^^^^^^^^^^^^^^^^^^^^^^^^ |
| 92 | +- python 2.7 or above |
| 93 | +- numpy 1.9 or above |
| 94 | +- scipy 0.15 or above |
| 95 | +- matplotlib 1.4 or above |
| 96 | +- nose 1.3 or above |
| 97 | + |
| 98 | +Installation |
| 99 | +^^^^^^^^^^^^ |
| 100 | + |
| 101 | +- To use the released version on PyPi, use pip or conda to install as follows:: |
| 102 | + |
| 103 | + $ pip install scikit-commpy |
| 104 | + $ conda install -c https://conda.binstar.org/veeresht scikit-commpy |
| 105 | + |
| 106 | +- To work with the development branch, clone from github and install as follows:: |
| 107 | + |
| 108 | + $ git clone https://github.com/veeresht/CommPy.git |
| 109 | + $ cd CommPy |
| 110 | + $ python setup.py install |
| 111 | + |
| 112 | +Citing CommPy |
| 113 | +^^^^^^^^^^^^^ |
| 114 | +If you use CommPy for a publication, presentation or a demo, I request you to please cite CommPy as follows: |
| 115 | + |
| 116 | +Veeresh Taranalli, "CommPy: Digital Communication with Python, version 0.3.0. Available at https://github.com/veeresht/CommPy", 2015. |
| 117 | + |
| 118 | +I would also greatly appreciate your feedback if you have found CommPy useful. Just send me a mail: veeresht@gmail.com |
| 119 | + |
| 120 | +For more details on CommPy, please visit http://veeresht.github.com/CommPy |
0 commit comments