包含amazonbraket模式的开源库
amazon-braket-schemas的Python项目详细描述
Amazon Braket Python模式
Amazon Braket Python Schemas是一个开源库,包含Braket的模式,包括:
- Amazon Braket quantum任务的中间表示(IR),并提供这些IR有效负载的序列化和反序列化。可以把IR看作是amazonbraketsdk和amazonbraketapi之间的量子程序合同。在
- 每个量子任务的S3结果的模式
- 每个设备的设备功能的架构
安装
先决条件
- Python 3.7+
步骤
获取amazonbraketpython模式的首选方法是安装Amazon Braket Python SDK,这将引入模式。 按照README中的说明进行安装。在
但是,如果只想使用架构,则可以按如下方式自行安装:
pip install amazon-braket-schemas
通过克隆此存储库并在存储库的根目录中运行pip install命令,可以从源代码进行安装:
^{pr2}$您可以使用pip show
检查当前安装的amazon-braket-schemas
版本:
pip show amazon-braket-schemas
或者在Python中:
>>> import braket._schemas as braket_schemas
>>> braket_schemas.__version__
使用
目前有两种类型的IR,包括jacqd(JsonAwsQuantumCircuitDescription)和退火。其用法见下文。在
序列化python结构
frombraket.ir.jaqcdimportCNot,H,Program,Expectationfrombraket.ir.annealingimportProblem,ProblemTypeprogram=Program(instructions=[H(target=0),CNot(control=0,target=1)])print(program.json(indent=2))"""{ "braketSchemaHeader": { "name": "braket.ir.jaqcd.program", "version": "1" }, "instructions": [ { "target": 0, "type": "h" }, { "control": 0, "target": 1, "type": "cnot" } ], "results": null, "basis_rotation_instructions": null,}"""program=Program(instructions=[H(target=0),CNot(control=0,target=1)],results=[Expectation(targets=[0],observable=['x'])],basis_rotation_instructions=[H(target=0)])print(program.json(indent=2))"""{ "braketSchemaHeader": { "name": "braket.ir.jaqcd.program", "version": "1" }, "instructions": [ { "target": 0, "type": "h" }, { "control": 0, "target": 1, "type": "cnot" } ], "results": [ { "observable": [ "x" ], "targets": [ 0 ], "type": "expectation" } ], "basis_rotation_instructions": [ { "target": 0, "type": "h" } ]}"""problem=Problem(type=ProblemType.QUBO,linear={0:0.3,4:-0.3},quadratic={"0,5":0.667})print(problem.json(indent=2))"""{ "braketSchemaHeader": { "name": "braket.ir.annealing.problem", "version": "1" }, "type": "QUBO", "linear": {0: 0.3, 4: -0.3}, "quadratic": {"0,5": 0.667}}"""
反序列化为python结构
frombraket.ir.jaqcdimportProgramfrombraket.ir.annealingimportProblemjaqcd_string="""{ "instructions": [ { "target": 0, "type": "h" }, { "control": 0, "target": 1, "type": "cnot" } ], "results": [ { "observable": [ "x" ], "targets": [ 0 ], "type": "expectation" } ], "basis_rotation_instructions": [ { "target": 0, "type": "h" } ]}"""program=Program.parse_raw(jaqcd_string)print(program)"""braketSchemaHeader=BraketSchemaHeader(name='braket.ir.jaqcd.program', version='1') instructions=[H(target=0, type=<Type.h: 'h'>), CNot(control=0, target=1, type=<Type.cnot: 'cnot'>)] results=[Expectation(observable=['x'], targets=[0], type=<Type.expectation: 'expectation'>)] basis_rotation_instructions=[H(target=0, type=<Type.h: 'h'>)]"""annealing_string="""{ "type": "QUBO", "linear": {0: 0.3, 4: -0.3}, "quadratic": {"0,5": 0.667}}"""problem=Problem.parse_raw(annealing_string)print(problem)"""braketSchemaHeader=BraketSchemaHeader(name='braket.ir.annealing.problem', version='1') type=<ProblemType.QUBO: 'QUBO'>, linear={0: 0.3, 4: -0.3}, quadratic={'0,5': 0.667}"""
文件
包括API引用在内的详细文档可以在Read the Docs上找到。在
也可以从源生成单据。首先,安装tox:
pip install tox
要构建Sphinx文档,请在根repo目录中运行以下命令:
tox -e docs
然后可以在build/documentation/html
中找到生成的HTML文件。在
测试
请确保首先安装测试依赖项:
pip install -e "amazon-braket-schemas-python[test]"
要运行单元测试:
tox -e unit-tests
还可以传入各种pytest参数以运行选定的测试:
tox -e unit-tests -- your-arguments
要运行linters和doc生成器以及单元测试,请执行以下操作:
tox
有关详细信息,请参阅pytest usage。在
许可证
这个项目是在Apache-2.0许可下授权的。在
- 项目
标签: