{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# ModelMemberGraph and Serialization\n", "\n", "Example notebook of ModelMemberGraph functionality" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "import pygsti" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from pygsti.modelpacks import smq2Q_XYICNOT" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Similar/Equivalent" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ex_mdl1 = smq2Q_XYICNOT.target_model()\n", "ex_mdl2 = ex_mdl1.copy()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ex_mmg1 = ex_mdl1.create_modelmember_graph()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ex_mmg1.print_graph()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ex_mmg1.mm_nodes['operations']['Gxpi2', 0]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ex_mmg2 = ex_mdl2.create_modelmember_graph()\n", "print(ex_mmg1.is_similar(ex_mmg2))\n", "print(ex_mmg1.is_equivalent(ex_mmg2))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ex_mdl2.operations['Gxpi2', 0][0, 0] = 0.0\n", "ex_mmg2 = ex_mdl2.create_modelmember_graph()\n", "print(ex_mmg1.is_similar(ex_mmg2))\n", "print(ex_mmg1.is_equivalent(ex_mmg2))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ex_mdl2.operations['Gxpi2', 0] = pygsti.modelmembers.operations.StaticArbitraryOp(ex_mdl2.operations['Gxpi2', 0])\n", "ex_mmg2 = ex_mdl2.create_modelmember_graph()\n", "print(ex_mmg1.is_similar(ex_mmg2))\n", "print(ex_mmg1.is_equivalent(ex_mmg2))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "pspec = pygsti.processors.QubitProcessorSpec(2, ['Gi', 'Gxpi2', 'Gypi2', 'mygate'], geometry='line', nonstd_gate_unitaries={'mygate': np.eye(2, dtype='complex')})\n", "\n", "ln_mdl1 = pygsti.models.create_crosstalk_free_model(pspec,\n", " depolarization_strengths={('Gxpi2', 0): 0.1, ('mygate', 0): 0.2},\n", " lindblad_error_coeffs={('Gypi2', 1): {('H', 1): 0.2, ('S', 2): 0.3}})\n", "print(ln_mdl1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ln_mmg1 = ln_mdl1.create_modelmember_graph()\n", "ln_mmg1.print_graph()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Should be exactly the same\n", "ln_mdl2 = pygsti.models.create_crosstalk_free_model(pspec,\n", " depolarization_strengths={('Gxpi2', 0): 0.1},\n", " lindblad_error_coeffs={('Gypi2', 1): {('H', 1): 0.2, ('S', 2): 0.3}})\n", "ln_mmg2 = ln_mdl2.create_modelmember_graph()\n", "print(ln_mmg1.is_similar(ln_mmg2))\n", "print(ln_mmg1.is_equivalent(ln_mmg2))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Should be similar if we change params\n", "ln_mdl3 = pygsti.models.create_crosstalk_free_model(pspec,\n", " depolarization_strengths={('Gxpi2', 0): 0.01},\n", " lindblad_error_coeffs={('Gypi2', 1): {('H', 1): 0.5, ('S', 2): 0.1}})\n", "ln_mmg3 = ln_mdl3.create_modelmember_graph()\n", "print(ln_mmg1.is_similar(ln_mmg3))\n", "print(ln_mmg1.is_equivalent(ln_mmg3))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Should fail both, depolarize is on different gate\n", "ln_mdl4 = pygsti.models.create_crosstalk_free_model(pspec,\n", " depolarization_strengths={('Gypi2', 0): 0.1},\n", " lindblad_error_coeffs={('Gypi2', 1): {('H', 1): 0.2, ('S', 2): 0.3}})\n", "ln_mmg4 = ln_mdl4.create_modelmember_graph()\n", "print(ln_mmg1.is_similar(ln_mmg4))\n", "print(ln_mmg1.is_equivalent(ln_mmg4))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Serialization" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ex_mdl1.write('example_files/ex_mdl1.json')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ln_mdl1.write('example_files/ln_mdl1.json')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "interpreter": { "hash": "38bc3ecdefa6d4ad98c3e3909d821405273dd289f85d5c490bf102ec408e5058" }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }