def run3Drandom(size=4,tSteps=5,p=0.05,pLie=0.01,timespace=[1,1]):

   L=toric_lattice.PlanarLattice(size)
   PL=toric_lattice.Lattice3D(size)
   
   for i in range(tSteps):                     # loop over time      
                
        L.applyRandomErrors(p,p)
        L.measurePlaquettes(pLie)               
        L.measureStars(pLie)                    
        PL.addMeasurement(L)         # add the updated 2D lattice to 3D array

   L.measurePlaquettes(0)                      # measure one more layer with
   L.measureStars(0)                           # perfect stabilizers and add
   PL.addMeasurement(L)             # this to the parity Lattice

   PL.findAnyons()

   matchingX=perfect_matching.match_toric_3D(size,PL.anyon_positions_P,timespace)
   matchingZ=perfect_matching.match_toric_3D(size,PL.anyon_positions_S,timespace)

   flipsX=squashMatching(size,matchingX)
   flipsZ=squashMatching(size,matchingZ)
   
   L.apply_flip_array("Z",flipsZ)
   L.apply_flip_array("X",flipsX)

# uncomment to display the final error state of the array
 #  L.showArrayText("errors","X")

   return L.measure_logical()
def run3D(size=4,tSteps=5,errorVec=testvec4,timespace=[1,1],stabilizersNotComplete=0):

   L=toric_lattice.PlanarLattice(size)
   PL=toric_lattice.Lattice3D(size)

   xcount = 0
   zcount = 0 

   for i in range(tSteps):                     # loop over time                                                       

        L.measureNoisyStabilizers("plaquette",errorVec,stabilizersNotComplete)
        L.measureNoisyStabilizers("star",errorVec,stabilizersNotComplete)

        PL.addMeasurement(L)         # add the updated 2D lattice to 3D array
   
   L.measurePlaquettes(0)                      # measure one more layer with
   L.measureStars(0)                           # perfect stabilizers and add
   PL.addMeasurement(L)                        # this to the parity Lattice

   PL.findAnyons()

   matchingX=perfect_matching.match_toric_3D(size,PL.anyon_positions_P,timespace)
   matchingZ=perfect_matching.match_toric_3D(size,PL.anyon_positions_S,timespace)

   flipsX=squashMatching(size,matchingX)
   flipsZ=squashMatching(size,matchingZ)

   L.apply_flip_array("Z",flipsZ)
   L.apply_flip_array("X",flipsX)

   return L.measure_logical()
def run3Drandom(size=4, tSteps=5, p=0.05, pLie=0.01, timespace=[1, 1]):

    L = toric_lattice.PlanarLattice(size)
    PL = toric_lattice.Lattice3D(size)

    for i in range(tSteps):  # loop over time

        L.applyRandomErrors(p, p)
        L.measurePlaquettes(pLie)
        L.measureStars(pLie)
        PL.addMeasurement(L)  # add the updated 2D lattice to 3D array

    L.measurePlaquettes(0)  # measure one more layer with
    L.measureStars(0)  # perfect stabilizers and add
    PL.addMeasurement(L)  # this to the parity Lattice

    PL.findAnyons()

    matchingX = perfect_matching.match_toric_3D(size, PL.anyon_positions_P, timespace)
    matchingZ = perfect_matching.match_toric_3D(size, PL.anyon_positions_S, timespace)

    flipsX = squashMatching(size, matchingX)
    flipsZ = squashMatching(size, matchingZ)

    L.apply_flip_array("Z", flipsZ)
    L.apply_flip_array("X", flipsX)

    # uncomment to display the final error state of the array
    #  L.showArrayText("errors","X")

    return L.measure_logical()
def run3D(size=4, tSteps=5, errorVec=testvec4, timespace=[1, 1], stabilizersNotComplete=0):

    L = toric_lattice.PlanarLattice(size)
    PL = toric_lattice.Lattice3D(size)

    xcount = 0
    zcount = 0

    for i in range(tSteps):  # loop over time

        L.measureNoisyStabilizers("plaquette", errorVec, stabilizersNotComplete)
        L.measureNoisyStabilizers("star", errorVec, stabilizersNotComplete)

        PL.addMeasurement(L)  # add the updated 2D lattice to 3D array

    L.measurePlaquettes(0)  # measure one more layer with
    L.measureStars(0)  # perfect stabilizers and add
    PL.addMeasurement(L)  # this to the parity Lattice

    PL.findAnyons()

    matchingX = perfect_matching.match_toric_3D(size, PL.anyon_positions_P, timespace)
    matchingZ = perfect_matching.match_toric_3D(size, PL.anyon_positions_S, timespace)

    flipsX = squashMatching(size, matchingX)
    flipsZ = squashMatching(size, matchingZ)

    L.apply_flip_array("Z", flipsZ)
    L.apply_flip_array("X", flipsX)

    return L.measure_logical()
Ejemplo n.º 5
0
def run3D(size=4,tSteps=5,errorVec=testvec4,timespace=[1,1],stabilizersNotComplete=0):

   L=toric_lattice.PlanarLattice(size)
   PL=toric_lattice.Lattice3D(size)

   L.applyRandomErrors(0,0)   # leave this here for initialisation                                                    
   xcount = 0
   zcount = 0 
   #t0=time.time()
   for i in range(tSteps):                     # loop over time                                                       

        L.measureNoisyStabilizers("plaquette",errorVec,stabilizersNotComplete)
        L.measureNoisyStabilizers("star",errorVec,stabilizersNotComplete)

        #for p0,p1 in L.positions_Q: 
         #  x,z = L.array[p0][p1]
          # if x ==-1: xcount +=1
          # if z ==-1: zcount +=1
         
#        L.showArrayText("stabs")
        PL.addMeasurement(L)         # add the updated 2D lattice to 3D array
#   print xcount, zcount
 #  t1 = time.time()
  # print 'tsteps completed ',t1-t0
   
   L.measurePlaquettes(0)                      # measure one more layer with
   L.measureStars(0)                           # perfect stabilizers and add
   PL.addMeasurement(L)             # this to the parity Lattice

   PL.findAnyons()
#   print 'P anyons', sum([len(_) for _ in PL.anyon_positions_P])
 #  print 'S anyons', sum([len(_) for _ in PL.anyon_positions_S])


   #print PL.anyon_positions_P
  # t2 = time.time()
   #print 'find anyons ',t2-t1

   matchingX=perfect_matching.match_toric_3D(size,PL.anyon_positions_P,timespace)
  # t3 = time.time()
   #print 'matching X ',t3-t2
#   matchingZ=perfect_matching.match_toric_3D(size,PL.anyon_positions_S,timespace)

   flipsX=squashMatching(size,matchingX)
 #  flipsZ=squashMatching(size,matchingZ)
#   t4 = time.time()
 #  print 'squash matching ',t4-t3
   #L.showArray("errors","X")

  # L.apply_flip_array("Z",flipsZ)
   L.apply_flip_array("X",flipsX)

   #L.showArray("errors","X")
   #L.showArray("errors","Z")

   return L.measure_logical()
Ejemplo n.º 6
0
def run3Dtest(size=8, tSteps=100, errorVec=testvec4, timespace=[1, 1]):

    errvec_file = "error_vectors/basic_0.txt"
    error_vector3, error_vector4 = [[] if x == {} else x[0.0]
                                    for x in load_errors.load(errvec_file)]
    errorVec = error_vector4

    #   print error_vector3
    #  print error_vector4

    L = toric_lattice.PlanarLattice(size)
    PL = toric_lattice.Lattice3D(size)

    L.applyRandomErrors(0, 0)  # leave this here for initialisation
    xcount = 0
    zcount = 0
    #t0=time.time()
    for i in range(tSteps):  # loop over time

        L.measureNoisyStabilizers("plaquette", errorVec)
        L.measureNoisyStabilizers("star", errorVec)

        #for p0,p1 in L.positions_Q:
        #  x,z = L.array[p0][p1]
        # if x ==-1: xcount +=1
        # if z ==-1: zcount +=1

        PL.addMeasurement(L)  # add the updated 2D lattice to 3D array


#   print xcount, zcount
#  t1 = time.time()
# print 'tsteps completed ',t1-t0

    L.measurePlaquettes(0)  # measure one more layer with
    L.measureStars(0)  # perfect stabilizers and add
    PL.addMeasurement(L)  # this to the parity Lattice

    PL.findAnyons()
    #   print 'P anyons', sum([len(_) for _ in PL.anyon_positions_P])
    #  print 'S anyons', sum([len(_) for _ in PL.anyon_positions_S])

    #print PL.anyon_positions_P
    # t2 = time.time()
    #print 'find anyons ',t2-t1

    matchingX = perfect_matching.match_toric_3D(size, PL.anyon_positions_P,
                                                timespace)
    # t3 = time.time()
    #print 'matching X ',t3-t2
    matchingZ = perfect_matching.match_toric_3D(size, PL.anyon_positions_S,
                                                timespace)

    flipsX = squashMatching(size, matchingX)
    flipsZ = squashMatching(size, matchingZ)
    #   t4 = time.time()
    #  print 'squash matching ',t4-t3
    #   L.showArray("errors","X")

    L.apply_flip_array("Z", flipsZ)
    L.apply_flip_array("X", flipsX)

    #  L.showArray("errors","X")
    #L.showArray("errors","Z")

    return L.measure_logical()