Komm

Welcome to Komm’s documentation page!

Komm is an open-source library for Python 3 providing tools for analysis and simulation of analog and digital communication systems. This project is inspired by—but is not meant to be compatible with—the MATLAB® Communications System Toolbox™. Other sources of inspiration include GNU Radio, CommPy, and SageMath. Komm is licensed under the GNU General Public License v3.0.

For installation instructions and source code, please check the project’s development page at GitHub.

This software is still under development. Contributions are very welcome!

Algebra

BinaryPolynomial

Binary polynomial.

BinaryPolynomialFraction

Binary polynomial fraction.

FiniteBifield

Finite field with binary characteristic.

RationalPolynomial

Rational polynomial.

RationalPolynomialFraction

Rational polynomial fraction.

Channels

AWGNChannel

Additive white gaussian noise (AWGN) channel.

DiscreteMemorylessChannel

Discrete memoryless channel (DMC).

BinarySymmetricChannel

Binary symmetric channel (BSC).

BinaryErasureChannel

Binary erasure channel (BEC).

Error control

Block coding

BlockCode

General binary linear block code.

HammingCode

Hamming code.

SimplexCode

Simplex (maximum-length) code.

GolayCode

Binary Golay code.

RepetitionCode

Repetition code.

SingleParityCheckCode

Single parity check code.

CordaroWagnerCode

Cordaro–Wagner code.

ReedMullerCode

Reed–Muller code.

CyclicCode

General binary cyclic code.

BCHCode

Bose–Chaudhuri–Hocquenghem (BCH) code.

Convolutional coding

ConvolutionalCode

Binary convolutional code.

ConvolutionalStreamEncoder

Convolutional stream encoder.

ConvolutionalStreamDecoder

Convolutional stream decoder using Viterbi algorithm.

TerminatedConvolutionalCode

Terminated convolutional code.

Finite-state machine

FiniteStateMachine

Finite-state machine (Mealy machine).

Modulation

Real modulation schemes

RealModulation

General real modulation scheme.

PAModulation

Pulse-amplitude modulation (PAM).

Complex modulation schemes

ComplexModulation

General complex modulation scheme.

ASKModulation

Amplitude-shift keying (ASK) modulation.

PSKModulation

Phase-shift keying (PSK) modulation.

APSKModulation

Amplitude- and phase-shift keying (APSK) modulation.

QAModulation

Quadratude-amplitude modulation (QAM).

Pulse formatting

Pulses

RectangularPulse

Rectangular pulse.

ManchesterPulse

Manchester pulse.

SincPulse

Sinc pulse.

RaisedCosinePulse

Raised cosine pulse.

RootRaisedCosinePulse

Root raised cosine pulse.

GaussianPulse

Gaussian pulse.

Filtering

TransmitFilter

Transmit filter.

ReceiveFilter

Receive filter [Not implemented yet].

Quantization

ScalarQuantizer

General scalar quantizer.

LloydMaxQuantizer

Lloyd–Max scalar quantizer [Not implemented yet].

UniformQuantizer

Uniform scalar quantizer.

Sequences

Binary sequences

BinarySequence

General binary sequence.

BarkerSequence

Barker sequence.

WalshHadamardSequence

Walsh–Hadamard sequence.

LFSRSequence

Linear-feedback shift register (LFSR) sequence.

GoldSequence

Gold sequence [Not implemented yet].

KasamiSequence

Kasami sequence [Not implemented yet].

Other sequences

ZadoffChuSequence

Zadoff–Chu sequence [Not implemented yet].

Source coding

Sources

DiscreteMemorylessSource

Discrete memoryless source (DMS).

Lossless coding

FixedToVariableCode

Binary (prefix-free) fixed-to-variable length code.

HuffmanCode

Huffman code.

VariableToFixedCode

Binary (prefix-free) variable-to-fixed length code.

TunstallCode

Tunstall code.

Utilities

binlist2int

Converts a bit array to its integer representation.

int2binlist

Converts an integer to its bit array representation.

pack

Packs a given integer array.

unpack

Unpacks a given bit array.

qfunc

Computes the gaussian Q-function.

qfuncinv

Computes the inverse gaussian Q-function.

entropy

Computes the entropy of a random variable with a given pmf.