DOI: 10.5281/zenodo.15227833
title: Data for "Learning transitions in classical Ising models and deformed toric codes"

description: Abstract:Conditional probability distributions describe the effect of learning an initially unknown classical statethrough Bayesian inference. Here we demonstrate the existence of a sharp learning transition for the two-dimensional classical Ising model, all the way from the infinite-temperature paramagnetic state down to thethermal critical state. The intersection of the line of learning transitions and the thermal Ising transition is anovel tricritical point. Our model also describes the effects of weak measurements on a family of quantumstates which interpolate between the (topologically ordered) toric code and a trivial product state. Notably, thelocation of the above tricritical point implies that the quantum memory in the entire topological phase is robustto weak measurement, even when the initial state is arbitrarily close to the quantum phase transition separatingtopological and trivial phases. Our analysis uses a replica field theory combined with the renormalization group,and we chart out the phase diagram using a combination of tensor network and Monte Carlo techniques. Ourresults can be extended to study the more general effects of learning on both classical and quantum states.

 

##### Repository structure #####

### Code:In order to reproduce the same results, make sure to run Julia version 1.11.3 and instantiate the julia project saved in the Project.toml and Manifest.toml. You can do this by navigating to the `code` folder in your terminal and starting Julia with the following command:    julia --projectThen switch to the package manager mode by pressing `]` and run the command:    instantiateThis should install the same package versions that were used to generate and analyse the data in this repository. You can then run the scripts in the `code` folder to reproduce the results. 

The jupyter notebooks `code/fig*.ipynb` contain the code to generate the figures in the paper. The other code is used for loading and averaging the data, as well as performing the finite size scaling analysis. These scripts will save their results in the `data` folder. You do not need to touch these scripts if you just want to reproduce the figures, as the resulting data is already included in the repository.

### Data:- There is data from 4 different simulations in this repository:    1. 'beta_c': A simulation on the critical line at beta = beta_c for system sizes d = 8, 16, 32, 64, 128.    2. 'sweep_pd_horizontal': A simulation for horizontal sweeps through the phase diagram for system sizes d = 4, 8, 16, 32, 64. (we do not use the d = 4 data)    3. 'sweep_pd_vertical': A simulation for vertical sweeps through the phase diagram for system sizes d = 4, 8, 16, 32, 64. (we do not use the d = 4 data)    4. 'sweep_pd_singlespinupdates': A simulation for a grid through the phase diagram for system sizes d = 4, 8, 16, 32, 64. This simulation still used single spin flip updates, which is not the case for the other simulations (which use a hybrid of wolff cluster updates and single spin flip updates). We noticed that single spin flip updates are not powerful enough to sufficiently thermalize the system in the vicinity of the critical line, which is why we had to adapt the code and introduce cluster updates. However, we use this data for fig2b to complement the other data (away from the critical line).- The raw data (individual samples of C_s -- here called kappa) is stored in the `data/betac`, as well as the `data/sweep_pd` folders.- You can use the julia scripts `code/average_betac.jl`, `code/average_horizontalsweeps.jl`, `code/average_verticalsweeps.jl` and `code/average_sweep_pd_singlespinupdates.jl` to load this data and calculate the averaged observables [C_s] (kappas), [C_s^2] (kappas2), [|C_s|] (kappas_abs) and I_c (Ics). These observables are saved into the files `data/betac.jld2`, `data/sweep_pd_horizontal.jld2`, `data/sweep_pd_vertical.jld2` and `data/sweep_pd_singlespinupdates.jld2` respectively. There is no need to run the scripts, as the data is already included in the repository.- The jupyter notebook `code/FSS.ipynb` loads the data and performs the FSS analysis. The results are saved into `data/FSS_horizontal.jld2` and `data/FSS_vertical.jld2`. There is no neew to run the notebook, as the data is already included in the repository.