codedistance 0.0.5__tar.gz → 0.0.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. {codedistance-0.0.5 → codedistance-0.0.6}/PKG-INFO +1 -1
  2. {codedistance-0.0.5 → codedistance-0.0.6}/codedistance/.DS_Store +0 -0
  3. {codedistance-0.0.5 → codedistance-0.0.6}/codedistance/NHow.py +6 -1
  4. {codedistance-0.0.5 → codedistance-0.0.6}/codedistance/distance.py +44 -4
  5. {codedistance-0.0.5 → codedistance-0.0.6}/examples/.DS_Store +0 -0
  6. {codedistance-0.0.5 → codedistance-0.0.6}/examples/exampleCSS.py +5 -11
  7. {codedistance-0.0.5 → codedistance-0.0.6}/examples/exampleCircuit.py +1 -0
  8. codedistance-0.0.6/examples/exampleCodeDecomp.py +54 -0
  9. {codedistance-0.0.5 → codedistance-0.0.6}/examples/exampleQECC.py +1 -0
  10. {codedistance-0.0.5 → codedistance-0.0.6}/pyproject.toml +1 -1
  11. codedistance-0.0.5/codedistance/distance-old.py +0 -2473
  12. {codedistance-0.0.5 → codedistance-0.0.6}/LICENSE +0 -0
  13. {codedistance-0.0.5 → codedistance-0.0.6}/README.md +0 -0
  14. {codedistance-0.0.5 → codedistance-0.0.6}/codedistance/__init__.py +0 -0
  15. {codedistance-0.0.5 → codedistance-0.0.6}/codedistance/code_library.py +0 -0
  16. {codedistance-0.0.5 → codedistance-0.0.6}/codedistance/common.py +0 -0
  17. {codedistance-0.0.5 → codedistance-0.0.6}/codedistance/complex_utils.py +0 -0
  18. {codedistance-0.0.5 → codedistance-0.0.6}/codedistance/dem_detector_filtering.py +0 -0
  19. {codedistance-0.0.5 → codedistance-0.0.6}/examples/BB_codes.py +0 -0
  20. {codedistance-0.0.5 → codedistance-0.0.6}/examples/QT_codes.py +0 -0
  21. {codedistance-0.0.5 → codedistance-0.0.6}/examples/__init__.py +0 -0
  22. {codedistance-0.0.5 → codedistance-0.0.6}/examples/bivariate_bicycle.py +0 -0
  23. {codedistance-0.0.5 → codedistance-0.0.6}/examples/codeTables/.DS_Store +0 -0
  24. {codedistance-0.0.5 → codedistance-0.0.6}/examples/codeTables/GF2_32.txt +0 -0
  25. {codedistance-0.0.5 → codedistance-0.0.6}/examples/codeTables/GF2_64.txt +0 -0
  26. {codedistance-0.0.5 → codedistance-0.0.6}/examples/codeTables/GF2_sample.txt +0 -0
  27. {codedistance-0.0.5 → codedistance-0.0.6}/examples/codeTables/QECC_32.txt +0 -0
  28. {codedistance-0.0.5 → codedistance-0.0.6}/examples/codeTables/QECC_64.txt +0 -0
  29. {codedistance-0.0.5 → codedistance-0.0.6}/examples/codeTables/QECC_sample.txt +0 -0
  30. {codedistance-0.0.5 → codedistance-0.0.6}/examples/hyperbolic_codes/.DS_Store +0 -0
  31. {codedistance-0.0.5 → codedistance-0.0.6}/examples/hyperbolic_codes/RG-3-10.txt +0 -0
  32. {codedistance-0.0.5 → codedistance-0.0.6}/examples/hyperbolic_codes/RG-3-12.txt +0 -0
  33. {codedistance-0.0.5 → codedistance-0.0.6}/examples/hyperbolic_codes/RG-3-8.txt +0 -0
  34. {codedistance-0.0.5 → codedistance-0.0.6}/examples/lifted_product.py +0 -0
  35. {codedistance-0.0.5 → codedistance-0.0.6}/examples/runDistanceTest.sh +0 -0
  36. {codedistance-0.0.5 → codedistance-0.0.6}/examples/runTest.py +0 -0
  37. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/.DS_Store +0 -0
  38. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/01_surfacecodes/.DS_Store +0 -0
  39. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/01_surfacecodes/01_r=3,d=3,p=0.0005,noise=si1000,c=surface_code_Z,q=17,gates=cz.stim +0 -0
  40. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/01_surfacecodes/02_r=5,d=5,p=0.0005,noise=si1000,c=surface_code_Z,q=49,gates=cz.stim +0 -0
  41. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/01_surfacecodes/03_r=7,d=7,p=0.0005,noise=si1000,c=surface_code_Z,q=97,gates=cz.stim +0 -0
  42. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/01_surfacecodes/04_r=9,d=9,p=0.0005,noise=si1000,c=surface_code_Z,q=161,gates=cz.stim +0 -0
  43. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/01_surfacecodes/05_r=11,d=11,p=0.0005,noise=si1000,c=surface_code_Z,q=241,gates=cz.stim +0 -0
  44. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/03_colorcodes_midout/01_r=3,d=3,p=0.0005,noise=uniform,c=midout_color_code_Z,q=9,gates=all.stim +0 -0
  45. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/03_colorcodes_midout/02_r=5,d=5,p=0.0005,noise=uniform,c=midout_color_code_Z,q=23,gates=all.stim +0 -0
  46. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/03_colorcodes_midout/03_r=7,d=7,p=0.0005,noise=uniform,c=midout_color_code_Z,q=43,gates=all.stim +0 -0
  47. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/03_colorcodes_midout/04_r=9,d=9,p=0.0005,noise=uniform,c=midout_color_code_Z,q=69,gates=all.stim +0 -0
  48. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/03_colorcodes_midout/05_r=11,d=11,p=0.0005,noise=uniform,c=midout_color_code_Z,q=101,gates=all.stim +0 -0
  49. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/04_colorcodes_superdense/01_r=3,d=3,p=0.0005,noise=uniform,c=superdense_color_code_Z,q=13,gates=all.stim +0 -0
  50. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/04_colorcodes_superdense/02_r=5,d=5,p=0.0005,noise=uniform,c=superdense_color_code_Z,q=37,gates=all.stim +0 -0
  51. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/04_colorcodes_superdense/03_r=7,d=7,p=0.0005,noise=uniform,c=superdense_color_code_Z,q=73,gates=all.stim +0 -0
  52. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/04_colorcodes_superdense/04_r=9,d=9,p=0.0005,noise=uniform,c=superdense_color_code_Z,q=121,gates=all.stim +0 -0
  53. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/04_colorcodes_superdense/05_r=11,d=11,p=0.0005,noise=uniform,c=superdense_color_code_Z,q=181,gates=all.stim +0 -0
  54. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/04_colorcodes_superdense/06_r=1,d=15,p=0.161473,noise=data_qubit_X,c=color_code_mpp,q=169,gates=mpp.stim +0 -0
  55. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/05_bivariatebicyclecodes/.DS_Store +0 -0
  56. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/05_bivariatebicyclecodes/01_r=6,d=6,p=0.009,noise=si1000,c=bivariate_bicycle_Z,nkd=[[72,12,6]],q=144,iscolored=True,A_poly=x^3+y+y^2,B_poly=y^3+x+x^2.stim +0 -0
  57. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/05_bivariatebicyclecodes/02_r=10,d=10,p=0.009,noise=si1000,c=bivariate_bicycle_Z,nkd=[[90,8,10]],q=180,iscolored=True,A_poly=x^9+y+y^2,B_poly=x^7+1+x^2.stim +0 -0
  58. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/05_bivariatebicyclecodes/03_r=10,d=10,p=0.009,noise=si1000,c=bivariate_bicycle_Z,nkd=[[108,8,10]],q=216,iscolored=True,A_poly=x^3+y+y^2,B_poly=y^3+x+x^2.stim +0 -0
  59. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/05_bivariatebicyclecodes/04_r=12,d=12,p=0.009,noise=si1000,c=bivariate_bicycle_Z,nkd=[[144,12,12]],q=288,iscolored=True,A_poly=x^3+y+y^2,B_poly=y^3+x+x^2.stim +0 -0
  60. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/05_bivariatebicyclecodes/05_r=18,d=18,p=0.009,noise=si1000,c=bivariate_bicycle_Z,nkd=[[288,12,18]],q=576,iscolored=True,A_poly=x^3+y^2+y^7,B_poly=y^3+x+x^2.stim +0 -0
  61. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/05_bivariatebicyclecodes/06_r=24,d=24,p=0.009,noise=si1000,c=bivariate_bicycle_Z,nkd=[[360,12,24]],q=720,iscolored=True,A_poly=x^9+y+y^2,B_poly=y^3+x^25+x^26.stim +0 -0
  62. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/05_bivariatebicyclecodes/07_r=34,d=34,p=0.009,noise=si1000,c=bivariate_bicycle_Z,nkd=[[756,16,34]],q=1512,iscolored=True,A_poly=x^3+y^10+y^17,B_poly=y^5+x^3+x^19.stim +0 -0
  63. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/06_bivariatebicyclecodes_nlr5wb/.DS_Store +0 -0
  64. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/06_bivariatebicyclecodes_nlr5wb/01_r=6,d=6,p=0.009,noise=nlr5wb,c=bivariate_bicycle_Z,k=12,q=144,iscolored=True,A_poly=x^3+y+y^2,B_poly=y^3+x+x^2.stim +0 -0
  65. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/06_bivariatebicyclecodes_nlr5wb/02_r=10,d=10,p=0.009,noise=nlr5wb,c=bivariate_bicycle_Z,k=8,q=180,iscolored=True,A_poly=x^9+y+y^2,B_poly=x^7+1+x^2.stim +0 -0
  66. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/06_bivariatebicyclecodes_nlr5wb/03_r=10,d=10,p=0.009,noise=nlr5wb,c=bivariate_bicycle_Z,k=8,q=216,iscolored=True,A_poly=x^3+y+y^2,B_poly=y^3+x+x^2.stim +0 -0
  67. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/06_bivariatebicyclecodes_nlr5wb/04_r=12,d=12,p=0.009,noise=nlr5wb,c=bivariate_bicycle_Z,k=12,q=288,iscolored=True,A_poly=x^3+y+y^2,B_poly=y^3+x+x^2.stim +0 -0
  68. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/06_bivariatebicyclecodes_nlr5wb/05_r=18,d=18,p=0.009,noise=nlr5wb,c=bivariate_bicycle_Z,k=12,q=576,iscolored=True,A_poly=x^3+y^2+y^7,B_poly=y^3+x+x^2.stim +0 -0
  69. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/06_bivariatebicyclecodes_nlr5wb/06_r=24,d=24,p=0.009,noise=nlr5wb,c=bivariate_bicycle_Z,k=12,q=720,iscolored=True,A_poly=x^9+y+y^2,B_poly=y^3+x^25+x^26.stim +0 -0
  70. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/06_bivariatebicyclecodes_nlr5wb/07_r=34,d=34,p=0.009,noise=nlr5wb,c=bivariate_bicycle_Z,k=16,q=1512,iscolored=True,A_poly=x^3+y^10+y^17,B_poly=y^5+x^3+x^19.stim +0 -0
  71. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/07_bivariatebicyclecodes_nlr10wb/.DS_Store +0 -0
  72. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/07_bivariatebicyclecodes_nlr10wb/01_r=6,d=6,p=0.009,noise=nlr10wb,c=bivariate_bicycle_Z,k=12,q=144,iscolored=True,A_poly=x^3+y+y^2,B_poly=y^3+x+x^2.stim +0 -0
  73. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/07_bivariatebicyclecodes_nlr10wb/02_r=10,d=10,p=0.009,noise=nlr10wb,c=bivariate_bicycle_Z,k=8,q=180,iscolored=True,A_poly=x^9+y+y^2,B_poly=x^7+1+x^2.stim +0 -0
  74. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/07_bivariatebicyclecodes_nlr10wb/03_r=10,d=10,p=0.009,noise=nlr10wb,c=bivariate_bicycle_Z,k=8,q=216,iscolored=True,A_poly=x^3+y+y^2,B_poly=y^3+x+x^2.stim +0 -0
  75. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/07_bivariatebicyclecodes_nlr10wb/04_r=12,d=12,p=0.009,noise=nlr10wb,c=bivariate_bicycle_Z,k=12,q=288,iscolored=True,A_poly=x^3+y+y^2,B_poly=y^3+x+x^2.stim +0 -0
  76. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/07_bivariatebicyclecodes_nlr10wb/05_r=18,d=18,p=0.009,noise=nlr10wb,c=bivariate_bicycle_Z,k=12,q=576,iscolored=True,A_poly=x^3+y^2+y^7,B_poly=y^3+x+x^2.stim +0 -0
  77. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/07_bivariatebicyclecodes_nlr10wb/06_r=24,d=24,p=0.009,noise=nlr10wb,c=bivariate_bicycle_Z,k=12,q=720,iscolored=True,A_poly=x^9+y+y^2,B_poly=y^3+x^25+x^26.stim +0 -0
  78. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/07_bivariatebicyclecodes_nlr10wb/07_r=34,d=34,p=0.009,noise=nlr10wb,c=bivariate_bicycle_Z,k=16,q=1512,iscolored=True,A_poly=x^3+y^10+y^17,B_poly=y^5+x^3+x^19.stim +0 -0
  79. {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/README.md +0 -0
  80. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/.DS_Store +0 -0
  81. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_108_2_12.mtx +0 -0
  82. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_144_2_13.mtx +0 -0
  83. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_180_2_17.mtx +0 -0
  84. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_216_4_18.mtx +0 -0
  85. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_252_2_21.mtx +0 -0
  86. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_288_2_24.mtx +0 -0
  87. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_324_4_25.mtx +0 -0
  88. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_360_4_24.mtx +0 -0
  89. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_36_8_4.mtx +0 -0
  90. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_396_4_26.mtx +0 -0
  91. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_432_8_33.mtx +0 -0
  92. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_468_4_31.mtx +0 -0
  93. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_496_2_32.mtx +0 -0
  94. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_504_2_45.mtx +0 -0
  95. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_540_4_40.mtx +0 -0
  96. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_576_2_57.mtx +0 -0
  97. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_576_2_59.mtx +0 -0
  98. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_612_2_52.mtx +0 -0
  99. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_648_10_71.mtx +0 -0
  100. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_648_14_50.mtx +0 -0
  101. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_684_2_29.mtx +0 -0
  102. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_72_8_8.mtx +0 -0
  103. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_108_2_12.mtx +0 -0
  104. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_144_2_13.mtx +0 -0
  105. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_180_2_17.mtx +0 -0
  106. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_216_4_18.mtx +0 -0
  107. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_252_2_21.mtx +0 -0
  108. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_288_2_24.mtx +0 -0
  109. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_324_4_25.mtx +0 -0
  110. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_360_4_24.mtx +0 -0
  111. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_36_8_4.mtx +0 -0
  112. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_396_4_26.mtx +0 -0
  113. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_432_8_33.mtx +0 -0
  114. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_468_4_31.mtx +0 -0
  115. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_496_2_32.mtx +0 -0
  116. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_504_2_45.mtx +0 -0
  117. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_540_4_40.mtx +0 -0
  118. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_576_2_57.mtx +0 -0
  119. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_576_2_59.mtx +0 -0
  120. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_612_2_52.mtx +0 -0
  121. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_648_10_71.mtx +0 -0
  122. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_648_14_50.mtx +0 -0
  123. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_684_2_29.mtx +0 -0
  124. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_72_8_8.mtx +0 -0
  125. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_211550.461468_85062422H.mtx +0 -0
  126. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_211550.461468_85062422L.mtx +0 -0
  127. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_211550.463575_44088179.stdout +0 -0
  128. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_211609.373972_85062422H.mtx +0 -0
  129. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_211609.373972_85062422L.mtx +0 -0
  130. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_211609.375508_00717477.stdout +0 -0
  131. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_211632.978435_00404018.stdout +0 -0
  132. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_211807.002810_13674611.g +0 -0
  133. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_211807.002810_13674611H.mtx +0 -0
  134. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_211807.003731_32355872.stdout +0 -0
  135. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_212039.803682_85062422.wcnf +0 -0
  136. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_212039.804165_58423964.stdout +0 -0
  137. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_212158.101738_32352392.stderr +0 -0
  138. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_212158.101738_32352392.stdout +0 -0
  139. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260304_083641.372186_71140661.stderr +0 -0
  140. {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260304_083641.372186_71140661.stdout +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codedistance
3
- Version: 0.0.5
3
+ Version: 0.0.6
4
4
  Summary: Code and Circuit Distance Algorithms.
5
5
  License: GNUv3
6
6
  License-File: LICENSE
@@ -450,7 +450,12 @@ def HowPivots(A,nA=0,tB=1,nC=-1,r0=0):
450
450
  # @nb.jit
451
451
  # @nb.jit(nb.types.Tuple((nb.int8[:,:],nb.int64[:]))(nb.int8[:,:],nb.int64,nb.int64,nb.int64,nb.int64))
452
452
 
453
-
453
+ def indepVecs(A):
454
+ """Return a linearly independent subset of rows from A, preserving priority order - uses only 2 RREF calls."""
455
+ H, U = getHU(A, 2)
456
+ K = U[np.sum(H, axis=-1) == 0, :]
457
+ K, LI = getH(K, 2, retPivots=True)
458
+ return invRange(len(A), LI)
454
459
 
455
460
  def indepL(L,pList,nA,tB,retWeights=False):
456
461
  w = np.sum(L[:,-nA:],axis=-1)
@@ -13,7 +13,7 @@ import ortools
13
13
  import ortools.linear_solver
14
14
  import ortools.linear_solver.pywraplp
15
15
  import scipy
16
- import tesseract_decoder as ts
16
+ # import tesseract_decoder as ts
17
17
 
18
18
  ## MW Library Files
19
19
  from .common import *
@@ -210,6 +210,36 @@ def pauli2str(S,tB=2):
210
210
  PauliStrings = "IXZY"
211
211
  return "\n".join(["".join([PauliStrings[a] for a in myrow]) for myrow in S])
212
212
 
213
+
214
+ def codeDecomp(S,tB=2):
215
+ '''Separate stabiliser code into indecomposable parts using method of Slepian, 1960'''
216
+ H = getH(S,N=2,tB=2)
217
+ H1 = mod1(ZMatBlockSum(H,tB=tB))
218
+ m,n = H1.shape
219
+ partitions = []
220
+ rSet = set(range(m))
221
+ cSet = set(range(n))
222
+ while len(rSet) > 0:
223
+ r = min(rSet)
224
+ cVisited = set()
225
+ rVisited = {r}
226
+ rTodo = [r]
227
+ while(len(rTodo) > 0):
228
+ r = rTodo.pop()
229
+ for c in bin2Set(H1[r]):
230
+ if c not in cVisited:
231
+ cVisited.add(c)
232
+ for r in bin2Set(H1[:,c]):
233
+ if r not in rVisited:
234
+ rTodo.append(r)
235
+ rVisited.add(r)
236
+ if tB == 2:
237
+ cVisited.update({n+c for c in cVisited})
238
+ partitions.append(list(cVisited))
239
+ rSet.difference_update(rVisited)
240
+ cSet.difference_update(cVisited)
241
+ return partitions
242
+
213
243
  def defaultLogicals(S,tB):
214
244
  '''Return defaul logical operators for distance-finding
215
245
  For tB=1 - classical code - return basis of complementary space
@@ -679,6 +709,12 @@ def grayCode(x):
679
709
  '''calculte Gray Code corresponding to integer x'''
680
710
  return x ^ (x >> 1)
681
711
 
712
+ def bin2int(x):
713
+ """Interpret a little-endian binary vector as an integer."""
714
+ ## need to reverse to make consistent with int2bin
715
+ xStr = "".join(map(str, reversed(x)))
716
+ return int(xStr, base=2)
717
+
682
718
  @nb.jit (nb.int8[:](nb.int64,nb.int64))
683
719
  def int2bin(x,n):
684
720
  '''convert integer to binary representation'''
@@ -1174,6 +1210,7 @@ def dist_m4ri_RW(S,L,tB=2,params={},seed=0):
1174
1210
 
1175
1211
  def dist_m4ri_CC(S,L,tB=2,params={},seed=0):
1176
1212
  '''Connected Cluster algorithm'''
1213
+ addI = False
1177
1214
  if tB == 2:
1178
1215
  ## 2-block non-CSS code
1179
1216
  if L is None:
@@ -1637,7 +1674,8 @@ def gurobiDist(S,L=None,tB=1,params={}):
1637
1674
  'verbose': False,
1638
1675
  'maxTime': 3600 * 8,
1639
1676
  'nThreads': 1,
1640
- 'GF4blockRep': 2
1677
+ 'GF4blockRep': 2,
1678
+ 'LOCheck': 0
1641
1679
  }
1642
1680
  params = setDefaultParams(params,paramDefaults)
1643
1681
  if L is None:
@@ -1730,7 +1768,8 @@ def MIPDist(DEMH,DEML=None,solverType='SCIP',params={}):
1730
1768
  paramDefaults = {
1731
1769
  'verbose': False,
1732
1770
  'maxTime': 3600 * 8,
1733
- 'nThreads': 1
1771
+ 'nThreads': 1,
1772
+ 'LOCheck': 0
1734
1773
  }
1735
1774
  params = setDefaultParams(params,paramDefaults)
1736
1775
  r,n = DEMH.shape
@@ -2125,7 +2164,8 @@ def dist_qubitserf(S,L=None,tB=1,params={}):
2125
2164
  defaultParams={
2126
2165
  'method':'qubitserfMM',
2127
2166
  'maxTime' : 8 * 60 * 60,
2128
- 'nThreads' : 1
2167
+ 'nThreads' : 1,
2168
+ 'LOCheck': 0
2129
2169
  }
2130
2170
  method = 1 if params['method'] == 'qubitserfBZ' else 2
2131
2171
  params = setDefaultParams(params,defaultParams)
@@ -21,11 +21,12 @@ params = {
21
21
  'iterCount': 10000, ## number of iterations - eg QDistRnd, decoderDist
22
22
  'maxTime': 3600*8, ## max runtime for CLI methods (eg SAT, m4ri, )
23
23
  'nThreads': 1, ## cater for multi-threaded methods
24
+ 'LOCheck': 0 ## check logical operators
24
25
  }
25
26
 
26
27
  ## Magma distance finding: requires Magma licence and magma executable in PATH
27
- # method = 'magmaMinWeight'
28
- method = 'magmaMinWord'
28
+ method = 'magmaMinWeight'
29
+ # method = 'magmaMinWord'
29
30
  # method = 'magmaWEDist'
30
31
 
31
32
  ## Serban Cercelescu C Library https://github.com/qubitserfed/Qubitserf
@@ -104,9 +105,9 @@ allMethods = ['magmaMinWeight',
104
105
  'GraphLikeErrorMW',
105
106
  'ColourCodeDistMW',
106
107
  'decoderDist',
107
- 'GurobiDist',
108
108
  'MIPDist',
109
- 'pySATDist']
109
+ 'pySATDist',
110
+ 'GurobiDist']
110
111
 
111
112
  ## Single Method
112
113
  methods = [method]
@@ -122,11 +123,4 @@ for method in methods:
122
123
  if (res['T'] > 1):
123
124
  print(f'Total Trials: {res['T']}')
124
125
  print(f'Trials at d={res['d']}: {res['R']}')
125
- lo = res['L']
126
- if (np.sum(lo)) > 0:
127
- r1,V = HowRes(Hz,lo,2)
128
- print(f'lo: {bin2Set(lo)}')
129
- lo = ZMat2D(lo)
130
- r2 = matMul(lo,Hx.T,2)
131
- print(f'Logical Operator Check: commutes with stabilsers {np.sum(r2)==0}; non-trivial {np.sum(r1)!=0}')
132
126
  print("###########################################\n")
@@ -15,6 +15,7 @@ params = {
15
15
  'iterCount': 100, ## number of iterations - eg QDistRnd, decoderDist
16
16
  'maxTime': 3600*8, ## max runtime for CLI methods (eg SAT, m4ri, )
17
17
  'nThreads': 1, ## cater for multi-threaded methods
18
+ 'LOCheck': 0 ## check logical operators
18
19
  }
19
20
 
20
21
  ## Magma distance finding: requires Magma licence and magma executable in PATH
@@ -0,0 +1,54 @@
1
+ import numpy as np
2
+ from codedistance import *
3
+
4
+ ## Illustrate Decomposition of Codes into Direct Sums - Slepian, 1960
5
+
6
+
7
+ ## Eberhardt108
8
+ n,k,d = 108,16,6
9
+ l,m,ALen = 6,9,3
10
+ uVec = '0 0 0 0 2 4'
11
+ vVec = '0 1 2 3 0 0'
12
+
13
+ ## Eberhardt128
14
+ n,k,d = 128,14,12
15
+ l,m,ALen = 8,8,4
16
+ uVec = '2 0 0 0 0 1 3 4'
17
+ vVec = '0 1 3 4 2 0 0 0'
18
+
19
+ ## Eberhardt162-4
20
+ n,k,d = 162,4,16
21
+ l,m,ALen = 9,9,3
22
+ uVec = '0 1 0 3 0 0'
23
+ vVec = '0 0 1 0 1 2'
24
+
25
+ ## Eberhardt162-12
26
+ n,k,d = 162,12,8
27
+ l,m,ALen = 9,9,3
28
+ uVec = '0 1 0 0 2 3'
29
+ vVec = '0 0 6 3 0 0'
30
+
31
+ ## Eberhardt162-24
32
+ n,k,d = 162,24,6
33
+ l,m,ALen = 9,9,3
34
+ uVec = '0 0 0 0 3 6'
35
+ vVec = '0 1 2 3 0 0'
36
+
37
+ uVec = list(map(int,uVec.split(" ")))
38
+ vVec = list(map(int,vVec.split(" ")))
39
+ SX,SZ = BBCSSCode(l,m,uVec,vVec,ALen)
40
+ qubitPartitions = codeDecomp(ZMatVstack([SX,SZ]))
41
+ if len(qubitPartitions) == 1:
42
+ print('No partitions found')
43
+ else:
44
+ print(f'{len(qubitPartitions)} partitions found')
45
+ for i,ix in enumerate(qubitPartitions):
46
+ ix = sorted(ix)
47
+ print(f'Subcode {i}:',ix)
48
+ print('SX')
49
+ print(ZMatPrint(RemoveZeroRows(SX[:,ix])))
50
+ print('SZ')
51
+ print(ZMatPrint(RemoveZeroRows(SZ[:,ix])))
52
+
53
+
54
+
@@ -36,6 +36,7 @@ params = {
36
36
  'iterCount': 100, ## number of iterations - eg QDistRnd, decoderDist
37
37
  'maxTime': 3600*8, ## max runtime for CLI methods (eg SAT, m4ri, )
38
38
  'nThreads': 1, ## cater for multi-threaded methods
39
+ 'LOCheck': 0 ## check logical operators
39
40
  }
40
41
 
41
42
  ## Magma distance finding: requires Magma licence and magma executable in PATH
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [tool.poetry]
6
6
  name = "codedistance"
7
- version = "0.0.5"
7
+ version = "0.0.6"
8
8
  description = "Code and Circuit Distance Algorithms."
9
9
  license = "GNUv3"
10
10
  authors = ["Mark Webster <mark.acacia@gmail.com>","Abraham Jacob <abraham.jacob.17@ucl.ac.uk>","Oscar Higgott <oscarhiggott@google.com>"]