DOI: 10.5061/dryad.brv15dvm5
title: Scalable entanglement of nuclear spins mediated by electron exchange

description: The use of nuclear spins for quantum computation is limited by the
 difficulty in creating genuine quantum entanglement between distant
 nuclei. Current demonstrations of nuclear entanglement in semiconductors
 rely upon coupling the nuclei to a common electron, which is not a
 scalable strategy. Here we demonstrate a two-qubit Control-Z logic
 operation between the nuclei of two phosphorus atoms in a silicon device,
 separated by up to 20 nanometers. Each atom binds separate electrons,
 whose exchange interaction mediates the nuclear two-qubit gate. We prove
 that the nuclei are entangled by preparing and measuring Bell states with
 a fidelity of 76 +/- 5% and a concurrence of 0.67+/- 0.05. With this
 method, future progress in scaling up semiconductor spin qubits can be
 extended to the development of nuclear-spin based quantum computers.
description: # Scalable entanglement of nuclear spins mediated by electron exchange
 [https://doi.org/10.5061/dryad.brv15dvm5](https://doi.org/10.5061/dryad.brv15dvm5) ## Description of the data This is accompanying data for the journal article 'Scalable entanglement of nuclear spins mediated by electron exchange'. ## Outline of the dataset The dataset consists of the following folders: #### 1 - Main_text This folder contains the experimental data used to generate the figures in the main text of the article. It also contains the Jupyter notebook file **'Main_text_figure_plotting.ipynb'**, which can be used to plot this data. The data is partitioned into subfolders for each paper figure. The naming convention of the data is the following: `#A_B_C` where A is the number of the measurement for that date (i.e. #1 means this was the first measurement run that day for a given date), B is the name of the measurement that was run and C is the time at which the measurement was run in the format HH-MM-SS. The same data naming convention is also used in the Supplementary material. #### 2 - Supplementary_material This folder contains the experimental data used to generate the figures in the supplementary information of the article. It also contains the Jupyter notebook file **'Supplementary_information_figure_plotting.ipynb'**, which can be used to plot this data. #### 3 - Simulation_code This folder contains simulation code used in the main text and supplementary information of the article. There are two simulation files within this folder: * '**Phase_reversal_and_Bell_state_tomography_simulation_code.ipynb'.** This is a Jupyter notebook file used to simulate the phase reversal tomography pulse sequence in section VII of the supplementary information. It is also used to simulate the projection of the Bell state tomography sequence along the Z-axis, used in Fig. 3C of the main text. Towards the end of this code, a stochastic method is used to estimate the error bars associated with the Bell state tomography simulation. This method takes a long time to run and we have therefore provided the option for the reader to load a pre-run outcome of the simulation as a numpy array. As shown in the Jupyter notebook, this can be done by downloading the file 'UD+DU_spam_errobars_sim_final_states' from the Simulation code folder and running the line -`final_state=np.load(r'./UD+DU_spam_errobars_sim_final_states.npy')` in the Jupyter notebook.  * '**Nuclear_geometric_phase_simulation.m'**. This is a MATLAB file used to simulate the phase imparted by a rotation of the electron onto the nuclei. This is used in Fig. 2D of the main text, as well as the supplementary information section IV. The colorbar used for the 2D plots generated in this simulation is 'viridis'. The user can use this colorbar by downloading the 'rgb viridis.txt' supplied in the Simulation code folder. ## Replicating the data analysis All measurements were performed and analyzed using the QCoDes data framework. The jupyter notebooks **'Main_text_figure_plotting.ipynb'** and **'Supplementary_information_figure_plotting.ipynb'** contain the Python code used to analyze the data and produce the figures in the paper main text and supplementary material respectively. These notebooks can be accessed and executed by carrying out the following steps: 1. Download and install Anaconda ([https://www.anaconda.com/download](https://www.anaconda.com/download)). This will install both Python and Jupyter Notebook. 2. Install the QCoDes python package. For more information on QCoDes and its installation, please see- [https://microsoft.github.io/Qcodes/](https://microsoft.github.io/Qcodes/).  Note that the version of QCoDes used for this analysis was 0.22.0. ## Accessing the data folders Each data folder in the 'Main_text' and 'Supplementary_material' data folders contains the following information: * A subfolder entitled 'config'. This folder contains a series of .json files that contain key information regarding the measurement parameters that were in place when the data was taken. These .json files can be opened using any text editor or web browser.  More specifically, there are four .json files within the config subfolder of each dataset: 1- *'analysis.json'.* This file contains the parameters used for thresholding the single-shot readout electron readout data. 2 - *'connections.json’*. This file specifies the instrument connections and voltage amplitude scale factors used when obtaining the dataset. 3- *'properties.json’.* This file contains the key parameters of interest at the time at which the dataset was taken, for example: ESR frequencies, NMR frequencies and measured lever arms between the control gates, donor atoms and single-electron transistor.  4- '*pulses.json’* . This file contains information regarding the pulses used to control the donor nuclei and electrons, including the pulse durations and frequencies. * A subfolder entitled 'traces'. This folder contains the raw SET current traces from which the preprocessed data quantities have been derived. Note that for some datasets, only the preprocessed data was saved and thus for these datafolders, no 'traces' folder is present. The raw traces are saved in HDF5 format, and can thus be accessed by a tool such as HDFview, or the python package h5py. When obtaining this data, the SET current is passed through a transimpedence amplifier which converts the current into the voltage. The units of the y-axis of this data is therefore voltage. The x-axis of the data is samples, where the time difference between each sample = 1/sampling rate. Although the maximum sampling rate of the instrument was 200 megasamples per second, we used a sampling rate of 500 kilosamples per second, as this provided the required resolution for readout, without consuming too much memory. The time difference between each sample is therefore 1/500e3 = 2 us. - A ‘snapshot.json’ file. This file contains a snapshot of all the information relevant to the experiment from which the data was obtained, including a copy of the contents of the ‘config’ folder, as well as a copy of all the instructions sent to the instruments during the measurement sequence. This .json file can be opened using any text editor or web browser.  - A series of .dat files containing the experimental results. To access this data we strongly encourage readers to use the provided Jupyter notebooks, which loads the data to a QCoDeS DataSet which can then be readily plotted. However, if required, the .dat files can also be opened with any text editor. These data files consist of all the parameters swept and measured in the experiment and follow a QCoDeS naming convention. The name of each .dat file contains the parameter that was measured in each dataset e.g. a .dat file with ‘ESR.up_proportions’ in the name, refers to a dataset consisting of the electron spin up proportions measured in this dataset. Similarly, a .dat file with ‘NMR.state_probabilities’ in the name, consists of the nuclear state probabilities measured in the dataset. This data has be processed from the raw SET traces and hence the units of the .dat files for ESR or NMR quantities are spin up-proportion. ## Version change log **21st July 2025:** * Added the folder 'Figure_1' to the 'Main text' data folder. This folder contains the datasets required to plot the electron spin resonance frequency spectrum in Figure 1C of the updated manuscript main text. This figure was previously a schematic but in the most recent manuscript change it was updated to experimentally measured data. * Added the folder 'Figure_S10' to the 'Supplementary materials' data folder. This folder contains the datasets required to plot the coherence measurements for the ionized nucleus, neutral nucleus and electron, which is now shown in Figure S10 of the supplementary materials of the updated manuscript. * Edited the code in the file 'Main_text_figure_plotting.ipynb' to plot the new data now shown in Figure 1C of the updated manuscript. Also edited the code in this file that is used to plot Figure 3C of the main text. Following the manuscript update we are now plotting this figure slightly differently and hence the plotting code for this figure has been updated accordingly. We also added some additional comments to this file for clarification and some python package imports that were previously missing. * Edited the code in the file 'Supplementary_information_figure_plotting.ipynb' to plot the new data that is now shown in Figure S10 of the supplementary material of the updated manuscript.