量子位Bloch球体的可视化工具

bloch-sphere的Python项目详细描述


量子比特布洛赫球体可视化

一组用于量子位Bloch球体的可视化工具。 布洛赫球体是单量子计算机状态的一个有用的表示。在

X gate comparison with Hadamard-Z-Hadamard

安装

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

Example output animation

比较两个门序列

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)

Example output animation

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么程序显示空结果?   java应用程序在测试设备上调试时工作正常,但在发布版apk中没有,它没有获得post。来自firebase的类变量   java Android:从主活动按钮确定在listview中选中哪个复选框   在Spring中添加@OneToOne注释时启动ApplicationContext时发生java错误   用JAVA Android实现矩阵计算的最快方法   SpringJava语义有没有更好的编写方法?   java从hashmap中减去两个值后返回最小差值的键?   Java中的静态初始化顺序:Netty 4.0.7的例外   java如何检查用户输入是否为字符串   循环Java计数单词索引   java如何使用以下代码将视频流传输到Android异步Http服务器?   java如何在jtable的所有行中循环   java如何使用maven将unicode插入mysql   java使用安卓加速远程数据检索   java试图模拟麦克风(javax.sound.sampled)   swing SwingWorker从不归还任何东西?(爪哇)   首次在Android Studio上未加载java LibGDX文件   java如何在多个Mysql服务器上设置限制和偏移?   如何防止从java连接到mongodb时登录控制台?