{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Variational Quantum Eigensolver via Parametric Compilation\n", "\n", "This notebook walks through how to simulate the $H_2$ molecule with the **Variational Quantum Eigensolver** (VQE) on a noiseless QVM and a noisy QVM, using _parametric compilation_ and pyQuil's `Experiment` framework. This notebook is copied partially from the [rigetti/qcs-paper](https://github.com/rigetti/qcs-paper) repository, where it was used to produce **Figure A3** from [_A quantum-classical cloud platform optimized for variational hybrid algorithms_](https://scirate.com/arxiv/2001.04449)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import random\n", "from typing import Dict, List\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "from tqdm import tqdm\n", "\n", "from pyquil import get_qc, Program\n", "from pyquil.gates import CNOT, RESET, RX, RY, RZ\n", "from pyquil.experiment import Experiment, ExperimentResult, ExperimentSetting, correct_experiment_result\n", "from pyquil.paulis import sX, sY, sZ\n", "from pyquil.quilatom import MemoryReference" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simulate the Data on a Noisy QVM" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "q0, q1 = (0, 1)\n", "\n", "shots = 500\n", "num_pts = 50\n", "\n", "thetas = np.linspace(start=-np.pi/2, stop=np.pi/2, num=num_pts)\n", "random.shuffle(thetas)\n", "\n", "bond_lengths = np.arange(start=int(0.2 * 100), stop=int(2.90 * 100), step=5) / 100\n", "\n", "qc = get_qc(\"2q-qvm\")\n", "qc_noisy = get_qc(\"2q-noisy-qvm\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Define $H_2$ VQE `Experiment`" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "RESET\n", "RX(pi) 0\n", "DECLARE theta REAL[1]\n", "RY(pi/2) 0\n", "RX(pi/2) 1\n", "CNOT 0 1\n", "RZ(2*theta) 1\n", "CNOT 0 1\n", "RX(-pi/2) 1\n", "RY(-pi/2) 0\n", "\n" ] } ], "source": [ "def hartree_fock_state_prep(q0: int) -> Program:\n", " p = Program()\n", " p += RX(np.pi, q0)\n", " return p\n", "\n", "def unitary_coupled_cluster_ansatz(q0: int, q1: int, theta: MemoryReference) -> Program:\n", " p = Program()\n", " p += RY(np.pi/2, q0)\n", " p += RX(np.pi/2, q1)\n", " p += CNOT(q0, q1)\n", " p += RZ(2 * theta, q1)\n", " p += CNOT(q0, q1)\n", " p += RX(-np.pi/2, q1)\n", " p += RY(-np.pi/2, q0)\n", " return p\n", "\n", "p = Program()\n", "p += RESET()\n", "p += hartree_fock_state_prep(q0)\n", "theta = p.declare(\"theta\", \"REAL\")\n", "p += unitary_coupled_cluster_ansatz(q0, q1, theta)\n", "p.wrap_in_numshots_loop(shots)\n", "print(p)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "xx_setting = ExperimentSetting(in_state=sZ(0)*sZ(1), out_operator=sX(0)*sX(1))\n", "yy_setting = ExperimentSetting(in_state=sZ(0)*sZ(1), out_operator=sY(0)*sY(1))\n", "zz_setting = ExperimentSetting(in_state=sZ(0)*sZ(1), out_operator=sZ(0)*sZ(1), additional_expectations=[[0], [1]])\n", "settings = [xx_setting, yy_setting, zz_setting]" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "shots: 500\n", "active reset: enabled\n", "symmetrization: -1 (exhaustive)\n", "calibration: 1 (plus_eigenstate)\n", "program:\n", " RX(pi) 0\n", " DECLARE theta REAL[1]\n", " RY(pi/2) 0\n", " RX(pi/2) 1\n", " CNOT 0 1\n", " RZ(2*theta) 1\n", " CNOT 0 1\n", " RX(-pi/2) 1\n", " RY(-pi/2) 0\n", "settings:\n", " 0: Z0_0 * Z0_1→(1+0j)*X0X1\n", " 1: Z0_0 * Z0_1→(1+0j)*Y0Y1\n", " 2: Z0_0 * Z0_1→(1+0j)*Z0Z1" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h2_vqe = Experiment(settings=settings, program=p)\n", "h2_vqe" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Collect data using readout symmetrization" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 50/50 [00:20<00:00, 2.42it/s]\n" ] } ], "source": [ "results = []\n", "for theta in tqdm(thetas):\n", " results.append(qc.experiment(h2_vqe, memory_map={\"theta\": [theta]}))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 50/50 [01:15<00:00, 1.51s/it]\n" ] } ], "source": [ "results_noisy = []\n", "for theta in tqdm(thetas):\n", " results_noisy.append(qc_noisy.experiment(h2_vqe, memory_map={\"theta\": [theta]}))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Perform readout calibration on all observables required for $H_2$ VQE" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 401 ms, sys: 2.67 ms, total: 404 ms\n", "Wall time: 782 ms\n" ] } ], "source": [ "%%time\n", "calibrations = qc.calibrate(h2_vqe)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 520 ms, sys: 3.3 ms, total: 523 ms\n", "Wall time: 1.55 s\n" ] } ], "source": [ "%%time\n", "calibrations_noisy = qc_noisy.calibrate(h2_vqe)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correct for noisy readout using calibration results" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "results_corrected = []\n", "for result in results:\n", " r_corr = []\n", " for r, c in zip(result, calibrations):\n", " r_corr.append(correct_experiment_result(r, c))\n", " results_corrected.append(r_corr)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "results_noisy_corrected = []\n", "for result in results_noisy:\n", " r_corr = []\n", " for r, c in zip(result, calibrations_noisy):\n", " r_corr.append(correct_experiment_result(r, c))\n", " results_noisy_corrected.append(r_corr)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dump results into a pandas `DataFrame`" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "def results_to_dict(results: List[ExperimentResult]) -> dict:\n", " results_dict = {}\n", " for result in results:\n", " out_operator = result.setting.out_operator.id(sort_ops=False)\n", " result_dict = result.serializable()\n", " for key, value in result_dict.items():\n", " results_dict[f\"{out_operator}_{key}\"] = value\n", " if result.additional_results:\n", " for c in result.additional_results:\n", " oo = c.setting.out_operator.id(sort_ops=False)\n", " rd = c.serializable()\n", " for key, value in rd.items():\n", " results_dict[f\"{oo}_{key}\"] = value\n", " return results_dict\n", "\n", "def results_to_dataframe(results: List[List[ExperimentResult]], thetas: np.ndarray) -> pd.DataFrame:\n", " data = {}\n", " for theta, step_results in zip(thetas, results):\n", " data[theta] = results_to_dict(step_results)\n", " return pd.DataFrame.from_dict(data, orient=\"index\")\n", "\n", "df_qvm = results_to_dataframe(results_corrected, thetas)\n", "df_noisy_qvm = results_to_dataframe(results_noisy_corrected, thetas)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Analyze and Plot the Data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot NOISY-QVM-estimated expectation values vs. VQE ansatz angle" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def plot_expectation_values_vs_ansatz_angle(df: pd.DataFrame, label: str) -> plt.Figure:\n", " fig = plt.figure(figsize=(8, 6))\n", " plt.errorbar(df.index, df[\"Z0_expectation\"], df[\"Z0_std_err\"], fmt=\".b\", label=r\"$\\langle Z_0 \\rangle$\")\n", " plt.errorbar(df.index, df[\"Z1_expectation\"], df[\"Z1_std_err\"], fmt=\".g\", label=r\"$\\langle Z_1 \\rangle$\")\n", " plt.errorbar(df.index, df[\"Z0Z1_expectation\"], df[\"Z0Z1_std_err\"], fmt=\".r\", label=r\"$\\langle Z_0 Z_1 \\rangle$\")\n", " plt.errorbar(df.index, df[\"Y0Y1_expectation\"], df[\"Y0Y1_std_err\"], fmt=\".c\", label=r\"$\\langle Y_0 Y_1 \\rangle$\")\n", " plt.errorbar(df.index, df[\"X0X1_expectation\"], df[\"X0X1_std_err\"], fmt=\".y\", label=r\"$\\langle X_0 X_1 \\rangle$\")\n", " plt.ylim(-1, 1)\n", " plt.title(rf\"Expectation Values vs. Ansatz Angle - {label}\", fontsize=16)\n", " plt.xlabel(r\"Ansatz Angle $\\theta$\", fontsize=16)\n", " plt.ylabel(r\"Expectation Value\", fontsize=16)\n", " plt.legend(loc=\"right\", fontsize=12)\n", " return fig\n", "\n", "fig_expectation_noisy_qvm = plot_expectation_values_vs_ansatz_angle(df_noisy_qvm, \"NOISY-QVM\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Build energy surface from expectation values" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 54/54 [00:00<00:00, 85.06it/s]\n", "100%|██████████| 54/54 [00:00<00:00, 86.03it/s]\n" ] } ], "source": [ "def get_coefficients_for_bond_length(coefficients: pd.DataFrame, r: float) -> Dict[str, float]:\n", " return coefficients.loc[r].to_dict()\n", "\n", "def energy_from_expectation(g: Dict[str, float], expectations: pd.DataFrame) -> pd.DataFrame:\n", " energy = pd.DataFrame()\n", " energy[\"H\"] = g[\"Z0\"] * expectations[\"Z0_expectation\"]\n", " energy[\"H\"] += g[\"Z1\"] * expectations[\"Z1_expectation\"]\n", " energy[\"H\"] += g[\"Z0Z1\"] * expectations[\"Z0Z1_expectation\"]\n", " energy[\"H\"] += g[\"Y0Y1\"] * expectations[\"Y0Y1_expectation\"]\n", " energy[\"H\"] += g[\"X0X1\"] * expectations[\"X0X1_expectation\"]\n", " energy[\"H\"] += g[\"I0I1\"]\n", " energy[\"H_err\"] = g[\"Z0\"] * expectations[\"Z0_std_err\"]\n", " energy[\"H_err\"] += g[\"Z1\"] * expectations[\"Z1_std_err\"]\n", " energy[\"H_err\"] += g[\"Z0Z1\"] * expectations[\"Z0Z1_std_err\"]\n", " energy[\"H_err\"] += g[\"Y0Y1\"] * expectations[\"Y0Y1_std_err\"]\n", " energy[\"H_err\"] += g[\"X0X1\"] * expectations[\"X0X1_std_err\"]\n", " return energy\n", "\n", "def build_energy_surface(bond_lengths: np.ndarray, df: pd.DataFrame) -> pd.DataFrame:\n", " coefficients = pd.read_csv(\"datasets/h2-hamiltonian-coefficients.csv\", index_col=\"R\")\n", " energy_surface = pd.DataFrame()\n", "\n", " for r in tqdm(bond_lengths):\n", " g = get_coefficients_for_bond_length(coefficients, r)\n", " energy = energy_from_expectation(g, df)\n", " energy[\"R\"] = r\n", " energy[\"theta\"] = energy.index\n", " index = pd.MultiIndex.from_frame(energy[[\"R\", \"theta\"]], names=[\"R\", \"theta\"])\n", " energy = energy.set_index(index)[[\"H\",\"H_err\"]]\n", " energy_surface = pd.concat((energy_surface, energy))\n", "\n", " return energy_surface\n", "\n", "energy_surface_qvm = build_energy_surface(bond_lengths, df_qvm)\n", "energy_surface_noisy_qvm = build_energy_surface(bond_lengths, df_noisy_qvm)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Calculate energy minimum for each bond length" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 54/54 [00:00<00:00, 886.32it/s]\n", "100%|██████████| 54/54 [00:00<00:00, 934.11it/s]\n" ] } ], "source": [ "def calculate_energy_minima(bond_lengths: np.ndarray, energy_surface: pd.DataFrame) -> pd.DataFrame:\n", " data = {}\n", " for r in tqdm(bond_lengths):\n", " energy_surface_r = energy_surface[energy_surface.index.get_level_values(\"R\") == r]\n", " energy_min = energy_surface_r[\"H\"].min()\n", " theta_min = energy_surface_r[\"H\"].idxmin()[1]\n", " error_min = energy_surface_r[energy_surface_r.index.get_level_values(\"theta\") == theta_min][\"H_err\"]\n", " data[r] = {\"theta\": theta_min, \"H\": energy_min, \"H_err\": float(error_min)}\n", "\n", " minima = pd.DataFrame.from_dict(data, orient=\"index\")\n", " return minima\n", "\n", "minima_qvm = calculate_energy_minima(bond_lengths, energy_surface_qvm)\n", "minima_noisy_qvm = calculate_energy_minima(bond_lengths, energy_surface_noisy_qvm)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the comparison of the (ideal) QVM and NOISY-QVM minimum energy curves" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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yCmnnML69euDVwNATk4OU6ZMYfTo0YwaNYpRo0Zx0UUXcdhhhwFw1VVXMWTIELZs2UKfPn14+umnmTx5MklJScyfP5+f//zn9et644036NKlC5WVlZxyyin10zt37sxxxx0XsN3LLruMKVOmUFpaSlpaGvPnz2fixIkNfmH576uI0L1794B1+Xw+srOz2bFjR9jjVVZW1uBDftWqVVx44YXcc889AdMzMzPDriec008/ndNPP71Jy+Tk5JCTk9PkbdUJdexbu5bBv+YFnNqB4Gl15syZw4knnsgJJ5wQcZ3BNSgVFRWISECy5b9vGzduZNOmTYwePRpo2nFoSvwtWSbYX/7yF372s5/Rp08fEhMTGTJkCJMmTeKTTz4JKFdXW1BWVtak9UdDe6s5CHWEtRllnImqT6jqMFUd1q1bN/B1IbV2FwAHrObARFn/rtn0ycwgNy2VX/7g5DZLDMD5QvQnItTW1ta10wn54RXpA+2ZZ55hxYoVnHbaaSxatIijjz6aN998E4Djjz+eIUOGMHfuXNatW8fKlSv52c9+BsA555zT4JduXQyNGT9+PElJSRQUFLBjxw7efvttLrvsMk/7Gm7/w8nNzWX37t0B01avXs2IESMYMGBAwKNbt271ZSZMmMCNN97IySefzFFHHcU//vEPzj//fI488siAL68JEyawdu1aJkyYwO23384pp5xCnz59Gnz4+5s1a1ZAjUWoR6TW9KGOfWvJzc0lMTGxwS/mHTt2NEi66qYXFBRw1VVXNbru4BqUc845p8E0/31buHAho0aNIj09HfB2HJoaf3OXCad///68//77HDhwgG+//ZZ//OMfVFVV0bdv34ByxcXOj1n/c7CttLeagy3AYX7P+wDB9SleyoQkviw6lX1Kooj1VjCtItXnI9Xna9PEIJIBAwaQnJzMBx98QL9+/QCoqanho48+4pJLLom47PHHH8/xxx/PLbfcwtlnn828efPqf51dddVV3HfffRQVFTFixAgGDhwIOFWmGRkZDWLw+XwsX768PoaSkhLWrVsX0I2wU6dOTJw4kfnz51NUVETPnj0ZOXJk1I6Fv8GDBwe0Zdi8eTPFxcWNtjdYt24d48eP58EHH+Tqq68mPz+fxYsXU1xczNixY+uvR2/YsIGBAwfWl//oo4947LHHWLBgAUOGDAm57mnTpjXaij8vLy/s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jMlIY07ucBK8Pv62dn34kcdzckdEBAbBA29yI/djeR1kFwQASRyHPebLWEPPBX8l/lWf026DQSAQCPDUU0/xjW98I2L7qaeeSk5ODn/84x+5/vrrKSsr63S8wfr167nooov4xS9+wS233MLtt9/Of//7X8rKyvjkJz/JnXfeyZYtWxg/fnxE/mXLlvHoo4/y3HPPtRsc9KRbwefzMWvWLF5//XWuuuqq8PbXX3893DLSm/sBOI5DQ0NDq+1PPvkkMTExXHPNNR3uD61bS5KSkkhPT283QFu0aBE33nhjOG9SUlKb+ZrrzmfsyXVpT0JCAgkJCZSXl/Pqq6/y05/+tFvH6QsaHAwyVup0vNMfwb/mi/hX34J31hOIN7nd/G1VunFeL+ePH0PACfLixm2AW6E+u24T/163iZzUZMZlpDMuK53qhkYag8FuP7vhaLc81Db6qWn08/LmbdT5A+wuq2BP+WEagsFWeU/LH8nV0yfhsY6Mw313155wy8ro9FScqs04B9/CKXkbU7UJOxwrCNbIhXjHfyvimF7tNhgUXnrpJYqLi5kyZQrr16+PSDv99NP5wx/+wIQJEwAYNmxYq7vFzMxMPB4PVVVVOI4TbsqOi4vjtttuIyUlhdraWpKTk6mqqiI2Nhafz9cqfzAYJCMjg/b0tFvh61//Otdffz1z585lwYIF/Pa3v6WwsJBbb701nOfhhx/m4YcfZvPmzV3a79vf/jYXXnghubm5VFVV8de//pXFixe3WuvAGMPjjz/ONddcE1XF3RUlJSUsX76cZ555psv7dufaRLNPdXU127dvB9xgae/evaxdu5b09HRGjnTHh7366qs4jsOECRPYvn07//u//8v48eO5+eabe3I5jioNDgYhK30unmm/ILD2NhpX3IA99FysjPldrpwmDsniPxu3uXfOlsWnpkygptHPtkNlvLt7L2/t2B3O+8DipczLy+bEoUPITkliSGICHsuKWCHwaEyVbDr+9kNlpMTGUlxVRXFVDUVV1ewuq2B/qHtg0YatWMDItBTmjcohPy0V2xKe+HBtuGXg5LyciMAAIN/azUTfMkbuf4nGjeugvhAQJHU6Vs61OIXPghMEy4s99LxW5dNug8Ghqdn7/PPPbzfPQw89BMDEiRMjtosIZWVlpKamsn79eubOnRtOW7duXbj5e/369eHgo6nrYv36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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def plot_h2_energy_curve_comparison(\n", " minima_qpu: pd.DataFrame, minima_qvm: pd.DataFrame, qpu_label: str = \"QPU\", qvm_label: str = \"QVM\"\n", ") -> plt.Figure:\n", " fig = plt.figure(figsize=(8, 6))\n", " qvm_err_min = float(minima_qvm[minima_qvm.index == minima_qvm.H.idxmin()].H_err)\n", " qpu_err_min = float(minima_qpu[minima_qpu.index == minima_qpu.H.idxmin()].H_err)\n", " plt.errorbar(minima_qvm.index, minima_qvm.H, minima_qvm.H_err, fmt=\"#f8ba2b\", marker=\".\",\n", " label=f\"{qvm_label.lower()} \" + \"($E_{min}$\" + f\" = {minima_qvm.H.min():.3f} +/- {qvm_err_min:.3f})\")\n", " plt.errorbar(minima_qpu.index, minima_qpu.H, minima_qpu.H_err, fmt=\"#66acb4\", marker=\".\",\n", " label=f\"{qpu_label.lower()} \" + \"($E_{min}$\" + f\" = {minima_qpu.H.min():.3f} +/- {qpu_err_min:.3f})\")\n", "\n", " min_energy_qpu = minima_qpu[\"H\"].min()\n", " min_r_qpu = minima_qpu[\"H\"].idxmin()\n", " min_error_qpu = float(minima_qpu[minima_qpu.index == min_r_qpu].H_err)\n", " min_energy_qvm = minima_qvm[\"H\"].min()\n", " min_r_qvm = minima_qvm[\"H\"].idxmin()\n", " min_error_qvm = float(minima_qvm[minima_qvm.index == min_r_qvm].H_err)\n", "\n", " min_diff = np.abs(min_energy_qpu - min_energy_qvm)\n", " min_diff_error = np.sqrt(min_error_qpu ** 2 + min_error_qvm ** 2)\n", " plt.text(1.8, -1.1, \"$\\Delta E_{min}$\" + f\" = {min_diff:.3f} +/- {min_diff_error:.3f}\", fontsize=14)\n", "\n", " plt.xlim(0.2, 3.0)\n", " plt.ylim(-1.2, 0.2)\n", " plt.title(rf\"Computed $H_2$ Energy Curve - {qvm_label} vs. {qpu_label}\", fontsize=16)\n", " plt.ylabel(\"Total Energy (Hartee)\", fontsize=16)\n", " plt.xlabel(r\"Bond Length $R$ ($\\dot{A}$)\", fontsize=16)\n", " plt.legend(fontsize=14)\n", " return fig\n", "\n", "fig_comparison_sim = plot_h2_energy_curve_comparison(minima_noisy_qvm, minima_qvm, qpu_label=\"NOISY-QVM\")" ] } ], "metadata": { "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.6.10" } }, "nbformat": 4, "nbformat_minor": 4 }