Releases: qLDPCOrg/qLDPC
Releases · qLDPCOrg/qLDPC
Release list
v0.3.3
Major changes
- add
QuditCode.to_sweland.maybe_to_swelby @perlinm in #542 - Add
QuditCode.get_destabilizer_opsby @perlinm in #543 - Add
CSS.get_destabilizer_opsby @perlinm in #544 - Add
PauliChannelSequence: sequence of independent Pauli-string errors by @perlinm in #545 - allow
NoiseRuleandPauliChannelto act ontsimcircuits by @perlinm in #547 - Add
confidence_ratiooption to LookupDecoder by @perlinm in #552 - add
GolayCodeandQuantumGolayCodeby @perlinm in #555
Minor changes
- Add
drop_correlationsoption toPauliChannel.to_circuitby @perlinm in #541 - Add
CSSCode.from_stringsby @perlinm in #546 - Update to
ruff=0.16.0by @perlinm in #548 - Add
DetectorErrorModelArrays.without_detectorsby @perlinm in #549 - Use lazy module imports by @perlinm in #550
- Cheaper tests by @perlinm in #551
- Typing fixes by @perlinm in #553
- Consolidate SymPy polynomial handling into a single helper by @perlinm in #556
- Fix QTCode.eq and some typos by @perlinm in #557
- Documentation review by @perlinm in #558
- Clean up trivial code by @perlinm in #559
Full Changelog: v0.3.2...v0.3.3
v0.3.2
Major changes
- User-specified idling errors and treat one/two-qubit
SPP/SPP_DAGas one/two-qubit Cliffords by @perlinm in #519 - Support multi-qubit noise rules by @perlinm in #521
- Condition errors on noiseless qubits by @perlinm in #446
- Support target- and tag-specific noise rules by @perlinm in #525
- Add
PauliChannel.to_circuitby @perlinm in #529 - Transversal logical
Sgate for SWEL codes by @perlinm in #532 - Add option for the
LookupDecoderto predict observable flips directly by @perlinm in #533 - Add
CSSCode.is_self_dualandCSSCode.is_swelby @perlinm in #535 - Allow a
LookupDecoderto ignore post-selected syndrome bits by @perlinm in #538 - Add SWEL (self-dual with equivalent logicals) support for CSS codes over arbitrary finite fields by @perlinm in #536
Minor changes
- Use galois.GF2 by @perlinm in #515
- Add
tsimsupport toNoiseModelby @perlinm in #516 - Accept a
pathlib.Pathfor disk cache path by @perlinm in #517 - Add
ErrorTargetsby @perlinm in #520 - Hygiene: enforce line width limit for docstrings by @perlinm in #522
- Rename
ErrorTargetstoFlipPatternby @perlinm in #523 - Minor notebook update by @perlinm in #524
- Minor bugfixes and cleanup in recent
noise_model.pyadditions by @perlinm in #526 - Make
NoiseModels serializable, when possible by @perlinm in #527 - Add
NoiseModel.__repr__by @perlinm in #528 - Add a missing guard + raise error for invalid inputs to
circuits.get_logical_tableauby @perlinm in #531 - Allow
tsim.Circuitinputs/outputs toqldpc.circuits.with_remapped_qubitsby @perlinm in #534 - Allow initializing
QubitIDs from integer qubit numbers by @perlinm in #537 - Fix decoder when post-selecting in
get_logical_error_and_discard_rateby @perlinm in #539
Full Changelog: v0.3.0...v0.3.2
v0.3.0
Major Changes
- Cyclic Hypergraph Product Codes by @michaelontiveros in #431
- 4D Geometric Codes by @michaelontiveros in #433
- Add an example notebook for decoding tqec circuits by @HaoTy in #445
- Compute logical error rates of logical state preparation circuits by @perlinm in #444
- Add option to intercept the DEM to decode in
get_logical_error_and_discard_rateby @perlinm in #453 - Human-readable
RingArrays and Howell normal form by @perlinm in #455 - Add
ErrorRateFuncclass by @perlinm in #461 - Support post-selection in code-capacity error rate calculations by @perlinm in #464
- Add Wedderburn-Artin decomposition of semisimple Abelian rings by @perlinm in #465
- Add Howell normal form for matrices over semisimple rings by @perlinm in #467
- Add line operators for lifted product codes by @perlinm in #470
- Finish Wedderburn-Artin decomposition of non-commutative rings by @perlinm in #478
- Add candidate Howell normal form for matrices over non-commutative rings by @perlinm in #481
- Add erasure support to decoders by @perlinm in #483
- Identify most likely observable flips in a LookupDecoder by @perlinm in #486
- Clean up and refactor
abstractmodule by @perlinm in #494 - Add
abstract.linalgby @perlinm in #495 - Fix: DetectorErrorModelArrays ignores stim's ^ decomposition separator by @HaoTy in #462
- Add synthetic post-selection to
DetectorErrorModelArraysby @perlinm in #507 - Add post-selection on observables by @perlinm in #511
Minor Changes
- Add
Ring.evalandGroup.evalby @perlinm in #432 - Minor cleanup of CHGPCodes by @perlinm in #435
- Separately compute the X and Z distance of an
HGPCodeby @perlinm in #436 - Rename keyword argument:
validate-->skip_validationby @perlinm in #437 - Minor revision of
T4Codeby @perlinm in #438 - Pass decoder_args through to RelayBP decoder construction by @perlinm in #439
- Allow setting only X-type or only Z-type logicals of a QuditCode by @perlinm in #441
- Sliding window decoder bug fix by @beitom in #442
- Factor out
get_pauli_product_measurementstocircuits.commonby @perlinm in #443 - Allow initializing
Records withdict[Hashable, int]by @perlinm in #447 - Add option to change target qubits in
get_pauli_product_measurementsby @perlinm in #448 - Add
get_logical_error_and_discard_rateby @perlinm in #449 - Add example notebook for Knill QEC by @perlinm in #450
- Clean up post-selection options in circuit benchmarking methods by @perlinm in #451
- Minor typing improvements by @perlinm in #452
- Add a trivial decoder by @perlinm in #457
- Replace uint with uint64 for improved compatibility by @SpyroL7 in #456
- fix bug in DetectorErrorModelArrays.from_arrays by @perlinm in #459
- Allow
HGPCode.get_canonical_logical_opsto accept/returnabstract.RingArrays by @perlinm in #460 - Fix
get_distance_bound()for large codes by @cduck in #458 - Reorganize abstract algebra module by @perlinm in #463
- Minor fixes to
abstract/rings.pyby @perlinm in #466 - Minor fix to
RingArray.howell_normal_formby @perlinm in #468 - Fix and simplify
WedderburnArtinComponentTransformer._get_embeddingsby @perlinm in #469 - Some gap fixes by @perlinm in #471
- Save any constructed WedderburnArtinTransformer to its ring by @perlinm in #472
- Work towards supporting Wedderburn-Artin decomposition of non-commutative rings by @perlinm in #473
- Compute primitive idempotents of a ring by @perlinm in #474
- Recycle X and Z decoders if possible in
CSSCode.get_logical_error_rate_funcby @perlinm in #475 - Build standard basis for non-commutative Wedderburn-Artin components by @perlinm in #476
- fix bug introduced in #475 by @perlinm in #477
- Store raw importance-sampling data in
ErrorRateFuncby @perlinm in #479 - Factor out dual basis calculation by @perlinm in #480
- Minor change to post-selection argument in code-capacity calculations by @perlinm in #482
- Cleanup: unit tests and typos by @perlinm in #484
- Some coverage fixes by @perlinm in #485
- Find logical stabilizers of state prep circuits more robustly by @perlinm in #487
- Fix bug in HNF for non-commutative rings by @perlinm in #488
- Add fixtures to some unit tests by @perlinm in #489
- Update readme by @perlinm in #490
- Add group lift to right-regular antirepresentation by @perlinm in #491
- Add
WedderburnArtinTransformer.transposeby @perlinm in #492 - Add
ErrorRateFunc.truncation_error_boundby @perlinm in #493 - Update
stimandsinterdependencies by @perlinm in #496 - Typing cleanup in
qldpc.decodersby @perlinm in #497 - Fix treatment of detectors in state prep circuit benchmarking methods by @perlinm in #499
- More robust code retrieval from the qecdb by @perlinm in #500
- Fix benchmarking circuit validation by @perlinm in #501
- Reorganize
qldpc.circuitsmodule by @perlinm in #502 - Allow passing fields to
fieldarguments by @perlinm in #503 - Add the
TrivialCodeby @perlinm in #506 - Make
get_state_stabilizerscode-agnostic by @perlinm in #505 - Add
DetectorErrorModelArrays.to_circuitby @perlinm in #508 - Encode into native stabilizer basis, if possible by @perlinm in #509
- Fix and simplify synthetic post-selection by @perlinm in #510
- Cheaper abstract algebra tests by @perlinm in #513
- Simplify permutation automorphism finding for non-self-dual CSS codes by @perlinm in #514
- version bump to v0.3.0 by @perlinm in #504
New Contributors
- @SpyroL7 made their first contribution in #456
- @cduck made their first contribution in #458
- @HaoTy made their first contribution in #445
Full Changelog: v0.2.9...v0.3.0
v0.2.9
Major changes
- Prevent Stim from merging scheduled gate layers by @abbrazi in #423
- Split logical error rate example notebook into multiple notebooks by @perlinm in #425
- Allow initializing a decoder from a DEM by @perlinm in #427
- [BREAKING CHANGE for Relay-BP] Clean up decoder retrieval and allow MWPM to ignore non-graphlike errors by @perlinm in #428
- Add AlphaSyndrome measurement strategy (arXiv:2601.12509) by @acasta-yhliu in #422
Minor changes
- update checks-superstaq version by @perlinm in #420
- Minor syndrome measurement test cleanup by @perlinm in #424
New Contributors
- @abbrazi made their first contribution in #423
- @acasta-yhliu made their first contribution in #422
Full Changelog: v0.2.8...v0.2.9
v0.2.8
What's Changed
- Clarify duality between puncturing and shortening by @perlinm in #413
- Update workflows by @perlinm in #414
- Update
relay-bpto fix build issues by @perlinm in #415 - Workflow test fixes by @perlinm in #416
- Update to fixed relay-bp version by @perlinm in #418
- version bump to v0.2.8 by @perlinm in #419
Full Changelog: v0.2.7...v0.2.8
v0.2.7
Major changes
- Sliding Window Decoding Support by @jviszlai in #398
- Streamline the human API to GAP/MAGMA by @perlinm in #397
Minor changes
- Minor fixes after
mypyupdates by @perlinm in #404 - Use uv build system by @perlinm in #405
- Use
uvfor workflows by @perlinm in #406 - Clean up SinterDecoder API by @perlinm in #411
- version bump to v0.2.7 by @perlinm in #412
Full Changelog: v0.2.6...v0.2.7
v0.2.6
What's Changed
- Add
qldpc.math.block_matrixto simplify building block matrices by @perlinm in #381 - Fix python 3.10 support by @perlinm in #383
- Gap fix by @perlinm in #384
- Simplify cache keys and add option to delete cache entries by @perlinm in #388
- Add option to compute automorphism groups with MAGMA by @perlinm in #387
- Retrieve codes from qecdb.org by @perlinm in #392
- [BREAKING CHANGE] Pass sequences to some methods that previously accepted many arguments by @perlinm in #393
- Add "human API" to GAP, if GAP cannot be called automatically by @perlinm in #391
- Make workflows use python 3.10 by @perlinm in #395
- version bump to v0.2.6 by @perlinm in #394
Full Changelog: v0.2.4...v0.2.6
v0.2.4
What's Changed
- Change conventions for the IcebergCode by @perlinm in #364
- Clean up behavior of QuditCode.conjugated and QuditCode.deformed by @perlinm in #366
- Add [15, 1, 3] TetrahedralCode by @perlinm in #365
- Add CSSCode.classical by @perlinm in #367
- Add more helper circuits by @perlinm in #368
- allow segments to address the same observables in CompiledCompositeSinterDecoder by @perlinm in #369
- Rename
QuditCode.get_dual_subsystem_codetoQuditCode.dualby @perlinm in #370 - Add
CSSCode.set_logical_ops_x, which automatically finds suitable Z-type logicals by @perlinm in #371 - Allow passing a cutoff to
QuditCode.get_distance_exactby @perlinm in #373 - make circuits.Record a proper Mapping by @perlinm in #374
- Allow passing an error_channel to a LookupDecoder by @perlinm in #375
- [REVERTED] Allow excluding detectors from segments of a CompositeSinterDecoder by @perlinm in #376
- Add capability to post-select detector error models by @perlinm in #377
- Rename CompositeSinterDecoder to SubgraphSinterDecoder by @perlinm in #378
- Add SequentialSinterDecoder by @perlinm in #379
- Build the DetectorRecord after post-selection by @perlinm in #380
Full Changelog: v0.2.2c...v0.2.4
v0.2.2c
v0.2.2b
What's Changed
- Pass log-likelihood priors to MWPM SinterDecoder by @perlinm in #341
- Add CardinalEdgeColoring syndrome measurement strategy by @perlinm in #339
- (EdgeColoring, CardinalEdgeColoring) -> (EdgeColoringXZ, EdgeColoring) by @perlinm in #342
- Move sinter_decoder to decoders module by @perlinm in #343
- Refactor syndrome measurement methods by @perlinm in #344
- Clean up memory experiments and related code by @perlinm in #347
- Add option to make operations immune to noise by @perlinm in #349
- Simpler all-0 encoding circuits by @perlinm in #350
- Add custom syndrome measurement circuits for
QCCodes (andBBCodes) by @perlinm in #351 - Add capability to relabel qubits in a Stim circuit (
circuits.with_remapped_qubits) by @perlinm in #352 - add circuits/bookkeeping.py by @perlinm in #353
- Add DetectorErrorModelArrays.from_arrays and .simplify by @perlinm in #354
- Add QuantumHammingCode by @perlinm in #355
- Support parallel decoding with Relay-BP by @perlinm in #357
- Identify the error rates of all logical operators in QEC memory cycles by @perlinm in #346
- version bump to v0.2.2 by @perlinm in #358
Full Changelog: v0.2.1...v0.2.2b