量子位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如何在windows上向doclet添加多个sourcepath?   java谷歌地图应用程序   java为以下场景创建正则表达式   Java文件通道异常   Java集合如何将文件对象列表转换为路径对象列表?   多线程生产者/消费者模型使用Java(同步),但始终运行同一线程   java如何为存储在ArrayList中的特定属性设置值?   java一次不能加载多个osm文件   使用java 8将map<String,map<Long,customeObject>>转换为list<customeObject>   java JDK包含哪些脚本语言解释器?   java为什么eclipse在这里生成语法错误?   多线程Javasocket异常:socket已关闭且值为空   java我想在Android活动中创建一个带有图像的可滚动文本列表。我应该用什么?   java实现编译时警告   java根据安卓 SQLite数据库中前一行的相同值递增特定值   java移动迭代器语句使代码可编译   java JVM终身/旧代已达到限制&服务器挂起   为什么我们不能在映射上使用迭代器(Java)?   xml如何映射JAXB中已有的JavaBean