コード例 #1
0
    idx0 = int(0.5*(1-frac)*len(data))
    idx1 = int(0.5*(1+frac)*len(data))
    return p-data[idx0], data[idx1]-p


def XXX_squeeze2(N, p, frac=None):
    assert 0.<=p<=1.
    var = math.sqrt(p*(1.-p)/N)
    print("squeeze2:", N, p, "=", var)
    return max(0., p-var), min(1., p+var)





name = argv.next()

s = open(name).read()

lines = s.split("\n")

rows = {}
attrs = None
for line in lines:

    line = line.strip()
    if not line and not attrs:
        pass

    elif not line:
コード例 #2
0
    assert name != "Icosa", "not implemented" # represented as a perm group... :P
    
    gap = Gap()
    PROMPT = "gap> "
    gap.expect(PROMPT)
    
    gap.send("G:=SmallGroup(%d, %d);" % (i,j))

    s = gap.expect(PROMPT)
    
    gap.send("Elements(G);")

    s = gap.expect(PROMPT)

    els = parse_els(s)
    print(els)

    gap.send("IrreducibleRepresentations(G);")
    
    s = gap.expect(PROMPT)
    
    irreps = parse_irreps(s, els)


main(argv.next())




コード例 #3
0
ファイル: gates.py プロジェクト: punkdit/qupy
        A = parse(s)
        assert A*P == P*A

    A = parse('HHHHH')
    assert A*P != P*A

    A = parse('SSSSS')
    assert A*P != P*A

    # steane code ----------------

    code = StabilizerCode("XXXXIII XXIIXXI XIXIXIX ZZZZIII ZZIIZZI ZIZIZIZ")
    P = code.get_projector()

    for s in 'XZSH':
        s = s*code.n
        A = parse(s)
        assert A*P == P*A

    print("OK")


if __name__ == "__main__":

    name = argv.next() or "test"

    fn = eval(name)
    fn()


コード例 #4
0
def build(name=""):

    if name:
        setattr(argv, name, True)  # hack this

    _seed = argv.get("seed")
    if _seed is not None:
        numpy.random.seed(_seed)
        seed(_seed)

    size = argv.get("size", 1)
    l = argv.get('l', 4)
    li = argv.get('li', l)
    lj = argv.get('lj', l)
    lk = argv.get('lk', l)

    if argv.gcolor2 or (argv.gcolor and size == 1.5):
        Gx, Gz, Hx = build_gcolor2()
        Hz = Hx.copy()

    elif argv.gcolor:
        Gx, Gz, Hx = build_gcolor(size)
        Hz = Hx.copy()

    elif argv.compass:
        Gx, Gz, Hx, Hz = build_compass(li, lj)

    elif argv.compass3:
        Gx, Gz, Hx, Hz = build_compass3(li, lj, lk)

    elif argv.hex:
        Gx, Gz, Hx, Hz = build_hex(li, lj)

    elif argv.hex2:
        Gx, Gz, Hx, Hz = build_hex2(li, lj)

    elif argv.xy:
        Gx, Gz, Hx, Hz = build_xy(l)

    elif argv.xy2:
        Gx, Gz, Hx, Hz = build_xy2(li, lj)

    elif argv.xy21:
        Gx, Gz, Hx, Hz = build_xy21(li, lj)

    elif argv.xy3:
        Gx, Gz, Hx, Hz = build_xy3(li, lj, lk)

    elif argv.xy32:
        Gx, Gz, Hx, Hz = build_xy32(li, lj, lk)

    elif argv.ising:
        Gx, Gz, Hx, Hz = build_ising(l)

    elif argv.random:
        Gx, Gz, Hx, Hz = build_random(l)

    elif argv.random_nostabs:
        Gx, Gz, Hx, Hz = build_random_nostabs(l)

    elif argv.random_selfdual:
        Gx, Gz, Hx, Hz = build_random_selfdual(l)

    elif argv.pauli:
        Gx, Gz, Hx, Hz = build_pauli(l)

    elif argv.projective:
        n = argv.get('n', 3)
        dim = argv.get('dim', 2)
        Gx, Gz, Hx, Hz = build_projective(n, dim)

    elif argv.test:
        Gx, Gz, Hx, Hz = build_test()

    else:

        name = argv.next()
        try:
            fn = eval("build_%s" % name)
        except NameError:
            print("no model found")
            raise

        Gx, Gz, Hx, Hz = fn()

    if Hx is None:
        Hx = find_stabilizers(Gz, Gx)
    if Hz is None:
        Hz = find_stabilizers(Gx, Gz)

    if argv.flip:
        Gz, Gx = Gx, Gz
        Hz, Hx = Hx, Hz

    if argv.show:
        print("Gx Gz:")
        print(shortstrx(Gx, Gz))
        if len(Hx):
            print("Hx Hz:")
            print(shortstrx(Hx, Hz))

    return Gx, Gz, Hx, Hz
コード例 #5
0
    # l=3 toric code
    s = "y**18 + 9*x**4 * y**14 + 24*x**6 * y**12 + \
        99*x**8 * y**10 + 72*x**10 * y**8 + 51*x**12 * y**6"

    # l=4 toric code
    s = "1*x**0*y**32 + 16*x**4*y**28 + 32*x**6*y**26 + \
        212*x**8*y**24 + 864*x**10*y**22 + 3344*x**12*y**20 + \
        6784*x**14*y**18 + 10262*x**16*y**16 + 6784*x**18*y**14 + \
        3344*x**20*y**12 + 864*x**22*y**10 + 212*x**24*y**8 + \
        32*x**26*y**6 + 16*x**28*y**4 + 1*x**32*y**0"

    p = eval(s, {"x": x, "y": y})
    print(p)

    p = eval(s, {"x": x + y, "y": x - y})
    p = p / 32768.
    print(p)


if __name__ == "__main__":

    _seed = argv.seed
    if _seed is not None:
        seed(_seed)
        numpy.random.seed(_seed)

    fn = argv.next() or "main"
    fn = eval(fn)
    fn()
コード例 #6
0
ファイル: riemann.py プロジェクト: punkdit/qupy
    fold = In
    for i, j in enumerate(perm):
        if i < j:
            fold *= make_cz(i, j, code.n)
        elif i==j:
            fold *= make_op(S, i, code.n)

    print("fold")

    #lhs = fold * code.get_projector()
    lhs = fold * code.Pz * code.Px
    print("lhs")
    rhs = code1.Pz * (code1.Px * fold)
    print("rhs")
    print(lhs == rhs)

    if argv.pause:
        print("done...")
        while 1:
            sleep(1)
    

if __name__ == "__main__":

    name = argv.next() or "main"
    fn = eval(name)
    fn()

    print("OK")

コード例 #7
0
    orbits = []
    while remain:
        i = iter(remain).__next__()
        remain.remove(i)
        orbit = [i]
        for perm in perms:
            j = perm[i]
            if j in remain:
                remain.remove(j)
                orbit.append(j)
        orbits.append(orbit)

    orbits.sort(key=len)
    print("%d orbits:" % len(orbits))
    for orbit in orbits:
        print("size =", len(orbit))
        for idx in orbit:
            space = spaces[idx]
            U = space.U
            if q == 2:
                U = row_reduce(U)
            #print(U)


if __name__ == "__main__":

    fn = argv.next()
    if fn is not None:
        fn = eval(fn)
        fn()
コード例 #8
0
ファイル: transversal.py プロジェクト: punkdit/qupy
def build_code(pauli, name=None):
    I = pauli.I
    X = pauli.X
    Y = pauli.Y
    Z = pauli.Z

    def mk_stab(s):
        s = s.replace(".", "I")
        sx = s.replace("1", "X")
        sz = s.replace("1", "Z")
        code = StabilizerCode(pauli, sx+sz)
        return code

    if name is None:
        name = argv.next()

    if name=="two":
        code = StabilizerCode(pauli, "XX ZZ")
    elif name=="four":
        code = StabilizerCode(pauli, "XXII ZZII IIXX IIZZ")
    elif name=="five":
        code = StabilizerCode(pauli, "XZZXI IXZZX XIXZZ ZXIXZ")
        op = (I@I@I@I@I+I@X@Z@Z@X-I@Z@Y@Y@Z-I@Y@X@X@Y
            +X@I@X@Z@Z-X@X@Y@I@Y+X@Z@Z@X@I-X@Y@I@Y@X
            -Z@I@Z@Y@Y+Z@X@I@X@Z+Z@Z@X@I@X-Z@Y@Y@Z@I
            -Y@I@Y@X@X-Y@X@X@Y@I-Y@Z@I@Z@Y-Y@Y@Z@I@Z)
        assert op == code.get_projector()
    elif name=="seven":
        code = StabilizerCode(pauli, "XZZXIII IXZZXII IIXZZXI IIIXZZX XIIIXZZ ZXIIIXZ")
    elif name=="steane":
        code = StabilizerCode(pauli, "XXXXIII XXIIXXI XIXIXIX ZZZZIII ZZIIZZI ZIZIZIZ")
    elif name=="eight":
        code = StabilizerCode(pauli, "XXXXXXXX ZZZZIIII IIIIZZZZ ZIZIZIZI ZZIIZZII")
        #code = StabilizerCode(pauli, 
        #    "XXXXXXXX ZZZZIIII IIIIZZZZ ZIZIZIZI ZZIIZZII ZZIIIIII ZIIIZIII ZIZIIIII") # True
        #code = StabilizerCode(pauli, "XXXXXXXX ZZZZZZZZ IIZIIZZZ IZZIIZZI ZIIZZZII") # False
    elif name=="rm":
        code = build_rm(pauli)
    elif name=="color":
        code = build_color(pauli)
    elif name=="toric":
        s = """
        XX.XX...
        X...XX.X
        .XXX..X.
        ZZZ..Z..
        Z.ZZ...Z
        .Z..ZZZ.
        """.replace(".", "I")
        code = StabilizerCode(pauli, s)
    elif name=="B11":
        s = """
        .XXXX......
        ...XXXX....
        .....XXXX..
        .......XXXX
        X.X.X.X.X.X
        .ZZZZ......
        ...ZZZZ....
        .....ZZZZ..
        .......ZZZZ
        Z.Z.Z.Z.Z.Z
        """.replace(".", "I")
        code = StabilizerCode(pauli, s)
    return code