{"id":23960,"library":"ldpc","title":"LDPC: Python Tools for Low Density Parity Check Codes","description":"A Python library for constructing, encoding, and decoding Low Density Parity Check (LDPC) codes. Current version 2.4.1, active development with periodic releases. Supports a variety of constructions (e.g., random, protograph, QCLDPC) and decoders (belief propagation, min-sum).","status":"active","version":"2.4.1","language":"python","source_language":"en","source_url":"https://github.com/quantumgizmos/ldpc","tags":["ldpc","error-correcting codes","channel coding","belief propagation","quantum"],"install":[{"cmd":"pip install ldpc","lang":"bash","label":"PyPI install"}],"dependencies":[{"reason":"Core dependency for array operations.","package":"numpy","optional":false},{"reason":"Used for sparse matrix operations and linear algebra.","package":"scipy","optional":false},{"reason":"Used for JIT compilation of decoding loops (optional but recommended for performance).","package":"numba","optional":true}],"imports":[{"note":"Main entry points. Avoid using old module path ldpc.modules.ldpc which was restructured.","symbol":"LDPC code classes","correct":"from ldpc import LdpcCode, RandomLdpcCode, ProtographLdpcCode, QCLdpcCode"},{"note":"Encoder class for linear encoding.","symbol":"Encoder","correct":"from ldpc import LdpcEncoder"},{"note":"Provides belief propagation (BP) and min-sum decoders.","symbol":"Decoder","correct":"from ldpc import LdpcDecoder"},{"note":"Utility functions moved here.","symbol":"Utils","correct":"from ldpc.utils import hamming_distance, ..."}],"quickstart":{"code":"import numpy as np\nfrom ldpc import RandomLdpcCode, LdpcEncoder, LdpcDecoder\n\n# Create a random LDPC code with rate 0.5, block length 100\ncode = RandomLdpcCode(block_len=100, rate=0.5)\n\n# Encode: generate random message\nmsg = np.random.randint(0, 2, code.k)\ncodeword = code.encode(msg)\n\n# Introduce noise (BSC)\nnoise = np.random.binomial(1, 0.1, codeword.shape)\nreceived = (codeword + noise) % 2\n\n# Decode\ndecoder = code.decoder()\ndecoded = decoder.decode(received, max_iter=50)\nprint('Decoded correctly:', np.array_equal(decoded, codeword))","lang":"python","description":"Basic example: create a random LDPC code, encode, add noise, and decode."},"warnings":[{"fix":"Ensure H is a 2D numpy array. Use np.array(H_list) if you have a list of lists.","message":"In version 2.0+, the internal package structure was refactored. Custom parity-check matrices (H) must be passed as numpy arrays or scipy sparse matrices, not as lists.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"For BSC: received = (codeword + noise) % 2. For AWGN: received = -2*noisey_llr + 1 (or similar).","message":"The decoder's decode() method expects a 1D array of received symbols (0/1 for BSC, or soft bits for AWGN). For soft decoding, set decoder_type='bp' and provide log-likelihood ratios.","severity":"gotcha","affected_versions":"all"},{"fix":"Replace `ldpc.decode(...)` with `decoder.decode(...)` where decoder = code.decoder().","message":"The function `ldpc.decode` (top-level) is deprecated; use `LdpcDecoder.decode` instead.","severity":"deprecated","affected_versions":">=2.0.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Update imports: from ldpc import LdpcCode, etc. Do not import from ldpc.modules.","cause":"Package restructured in v2.0; old internal modules no longer exist.","error":"ModuleNotFoundError: No module named 'ldpc.modules'"},{"fix":"Use code.decoder().decode(...) or LdpcDecoder.from_code(code).decode(...).","cause":"Top-level decode function removed in v2.0.","error":"AttributeError: module 'ldpc' has no attribute 'decode'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}