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.
- {codedistance-0.0.5 → codedistance-0.0.6}/PKG-INFO +1 -1
- {codedistance-0.0.5 → codedistance-0.0.6}/codedistance/.DS_Store +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/codedistance/NHow.py +6 -1
- {codedistance-0.0.5 → codedistance-0.0.6}/codedistance/distance.py +44 -4
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/.DS_Store +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/exampleCSS.py +5 -11
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/exampleCircuit.py +1 -0
- codedistance-0.0.6/examples/exampleCodeDecomp.py +54 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/exampleQECC.py +1 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/pyproject.toml +1 -1
- codedistance-0.0.5/codedistance/distance-old.py +0 -2473
- {codedistance-0.0.5 → codedistance-0.0.6}/LICENSE +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/README.md +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/codedistance/__init__.py +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/codedistance/code_library.py +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/codedistance/common.py +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/codedistance/complex_utils.py +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/codedistance/dem_detector_filtering.py +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/BB_codes.py +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/QT_codes.py +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/__init__.py +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/bivariate_bicycle.py +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/codeTables/.DS_Store +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/codeTables/GF2_32.txt +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/codeTables/GF2_64.txt +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/codeTables/GF2_sample.txt +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/codeTables/QECC_32.txt +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/codeTables/QECC_64.txt +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/codeTables/QECC_sample.txt +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/hyperbolic_codes/.DS_Store +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/hyperbolic_codes/RG-3-10.txt +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/hyperbolic_codes/RG-3-12.txt +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/hyperbolic_codes/RG-3-8.txt +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/lifted_product.py +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/runDistanceTest.sh +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/runTest.py +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/.DS_Store +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/01_surfacecodes/.DS_Store +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/05_bivariatebicyclecodes/.DS_Store +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/06_bivariatebicyclecodes_nlr5wb/.DS_Store +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/07_bivariatebicyclecodes_nlr10wb/.DS_Store +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/stim_circuits/README.md +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/.DS_Store +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_108_2_12.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_144_2_13.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_180_2_17.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_216_4_18.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_252_2_21.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_288_2_24.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_324_4_25.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_360_4_24.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_36_8_4.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_396_4_26.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_432_8_33.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_468_4_31.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_496_2_32.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_504_2_45.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_540_4_40.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_576_2_57.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_576_2_59.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_612_2_52.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_648_10_71.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_648_14_50.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_684_2_29.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HX_72_8_8.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_108_2_12.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_144_2_13.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_180_2_17.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_216_4_18.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_252_2_21.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_288_2_24.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_324_4_25.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_360_4_24.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_36_8_4.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_396_4_26.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_432_8_33.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_468_4_31.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_496_2_32.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_504_2_45.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_540_4_40.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_576_2_57.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_576_2_59.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_612_2_52.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_648_10_71.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_648_14_50.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_684_2_29.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tanner_codes/HZ_72_8_8.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_211550.461468_85062422H.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_211550.461468_85062422L.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_211550.463575_44088179.stdout +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_211609.373972_85062422H.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_211609.373972_85062422L.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_211609.375508_00717477.stdout +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_211632.978435_00404018.stdout +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_211807.002810_13674611.g +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_211807.002810_13674611H.mtx +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_211807.003731_32355872.stdout +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_212039.803682_85062422.wcnf +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_212039.804165_58423964.stdout +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_212158.101738_32352392.stderr +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260303_212158.101738_32352392.stdout +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260304_083641.372186_71140661.stderr +0 -0
- {codedistance-0.0.5 → codedistance-0.0.6}/examples/tmp/20260304_083641.372186_71140661.stdout +0 -0
|
Binary file
|
|
@@ -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)
|
|
Binary file
|
|
@@ -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
|
-
|
|
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.
|
|
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>"]
|