python-polar-coding

Polar coding implementation in Python


Keywords
polar, codes, fec, simulation, bpsk, decoding, polar-codes, sc-decoding
License
MIT
Install
pip install python-polar-coding==0.0.1

Documentation

Python-polar-coding

A package for Polar codes simulation.

Installation

pip install python-polar-coding

Example

Here is a simple example of simulation using python_polar_coding.

Binary messages encoded with Polar code, modulated using BPSK, transmitted over channel with AWGN and decoded using Fast SSC algorithm.

from python_polar_coding.channels import SimpleBPSKModulationAWGN
from python_polar_coding.polar_codes import FastSSCPolarCodec
from python_polar_coding.simulation.functions import (
    compute_fails,
    generate_binary_message,
)

N = 128
K = 64
design_snr = 0.0
messages = 10000
# SNR in [.0, .5, ..., 4.5, 5]
snr_range = [i / 2 for i in range(11)]

codec = FastSSCPolarCodec(N=N, K=K, design_snr=design_snr)
bpsk = SimpleBPSKModulationAWGN(fec_rate=K/N)

result_ber = dict()
result_fer = dict()

for snr in snr_range:
    ber = 0
    fer = 0

    for _ in range(messages):
        msg = generate_binary_message(size=K)
        encoded = codec.encode(msg)
        transmitted = bpsk.transmit(message=encoded, snr_db=snr)
        decoded = codec.decode(transmitted)

        bit_errors, frame_error = compute_fails(msg, decoded)
        ber += bit_errors
        fer += frame_error

    result_ber[snr] = ber / messages
    result_fer[snr] = fer / messages

print('\tSNR (dB)\t|\tBER\t|\tFER')
for snr in snr_range:
    print(f'\t{snr}\t|\t{result_ber[snr]}\t|\t{result_fer[snr]}')

Current progress

Polar code construction

Decoding

Modulation

  • BPSK

TODO

Polar code construction

Decoding

Modulation

  • Q-PSK
  • 4-QAM

License

MIT License