量子位Bloch球体的可视化工具
bloch-sphere的Python项目详细描述
量子比特布洛赫球体可视化
一组用于量子位Bloch球体的可视化工具。 布洛赫球体是单量子计算机状态的一个有用的表示。在
安装
bloch_sphere在PyPI上可用:
python3 -m pip install bloch_sphere
先决条件
Cairo需要单独安装才能呈现视频。 请参阅特定于平台的instructions for Linux, Windows, and macOS from Cairo。 下面是一些在Linux发行版和macOS上安装Cairo的示例。在
Ubuntu
^{pr2}$macOS
使用homebrew:
brew install cairo
使用
这个包提供了一个命令行工具来生成动画。
在shell中,运行以下命令(运行animate_bloch -h
获取帮助)。在
animate_bloch hadamard x y s s
animate_bloch2 xy_vs_z x,y z
代码示例
可视化单个Bloch球体
frombloch_sphere.animate_blochimportdo_or_save_animation,AnimState@do_or_save_animation('my_animation',save=False,fps=20,preview=True)# Or#@do_or_save_animation('my_animation', save='gif', fps=20, preview=True)#@do_or_save_animation('my_animation', save='mp4', fps=20, preview=False)defanimate(state:AnimState):state.x_gate()state.y_gate()state.s_gate()state.s_gate()...state.wait()# Pause at the end
比较两个门序列
frombloch_sphere.animate_bloch_compareimportmainmain('hzh_x','h,z,h'.split(','),'x'.split(','),r'& \gate{H} & \gate{Z} & \gate{H} & \qw & \push{=} & & \gate{X} & \qw',r'$HZH\ket{\psi}=X\ket{\psi}$',mp4=False,fps=20,preview=True,)
或者
importdrawSvgasdrawimportlatextoolsfrombloch_sphere.animate_bloch_compareimportrender_animation# Add some extra labelszero_ket=draw.Group()zero_ket.draw(latextools.render_snippet('$\ket{0}$',latextools.pkg.qcircuit),x=0,y=0,center=True,scale=0.015)one_ket=draw.Group()one_ket.draw(latextools.render_snippet('$\ket{1}$',latextools.pkg.qcircuit),x=0,y=0,center=True,scale=0.015)zero_ket_inner=draw.Use(zero_ket,0,0,transform='scale(0.75)')one_ket_inner=draw.Use(one_ket,0,0,transform='scale(0.75)')w=624*2# Output widthfps=20draw_args=dict(w=w/2,outer_labels=[[(0,0,1),(-0.15,0.13),zero_ket],[(0,0,-1),(0.15,-0.13),one_ket],],inner_labels=[[(0,0,0.8),(0,0),zero_ket_inner],[(0,0,-0.8),(0,0),one_ket_inner],],)gates1='h,z,h'.split(',')gates2='x'.split(',')deffunc1(state):state.draw_args=dict(draw_args)state.draw_args['inner_labels']=[]state.sphere_fade_in()state.apply_gate_list(gates1,final_wait=False)state.wait()for_ingates2:state.i_gate()state.wait()state.wait()state.sphere_fade_out()state.wait()deffunc2(state):state.draw_args=dict(draw_args)state.draw_args['inner_labels']=[]state.sphere_fade_in()for_ingates1:state.i_gate()state.wait()state.apply_gate_list(gates2,final_wait=False)state.wait()state.wait()state.sphere_fade_out()state.wait()render_animation('hzh_x_compare',func1,func2,r'& \gate{H} & \gate{Z} & \gate{H} & \qw & \push{=} & & \gate{X} & \qw',r'$HZH\ket{\psi}=X\ket{\psi}$',save='gif',# False, 'gif', or 'mp4'fps=fps,preview=True,w=w)
- 项目
标签: