{"id":17791896,"url":"https://github.com/twesterhout/annealing-sign-problem","last_synced_at":"2025-04-02T01:51:39.303Z","repository":{"id":186753636,"uuid":"364067144","full_name":"twesterhout/annealing-sign-problem","owner":"twesterhout","description":"📝 Code for the paper \"Many-body quantum sign structures as non-glassy Ising models\"","archived":false,"fork":false,"pushed_at":"2023-08-07T14:40:25.000Z","size":2384,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-27T06:51:14.420Z","etag":null,"topics":["exact-diagonalization","frustrated-magnets","many-body-physics","neural-network","quantum-mechanics","spin-models","variational-monte-carlo"],"latest_commit_sha":null,"homepage":"https://arxiv.org/abs/2207.10675","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/twesterhout.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-05-03T21:35:46.000Z","updated_at":"2023-08-08T12:46:51.000Z","dependencies_parsed_at":"2023-08-07T15:42:40.173Z","dependency_job_id":null,"html_url":"https://github.com/twesterhout/annealing-sign-problem","commit_stats":null,"previous_names":["twesterhout/annealing-sign-problem"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twesterhout%2Fannealing-sign-problem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twesterhout%2Fannealing-sign-problem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twesterhout%2Fannealing-sign-problem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twesterhout%2Fannealing-sign-problem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/twesterhout","download_url":"https://codeload.github.com/twesterhout/annealing-sign-problem/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246741185,"owners_count":20826063,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["exact-diagonalization","frustrated-magnets","many-body-physics","neural-network","quantum-mechanics","spin-models","variational-monte-carlo"],"created_at":"2024-10-27T10:56:27.580Z","updated_at":"2025-04-02T01:51:39.284Z","avatar_url":"https://github.com/twesterhout.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\nMany-body quantum sign structures as non-glassy Ising models\n\u003c/h1\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"assets/construction_1f6a7.png\" width=\"32\"\u003eThis is a research project that is not meant for general usage.\u003cimg src=\"assets/construction_1f6a7.png\" width=\"32\"\u003e\u003cbr\u003e\n\n[**Paper**](https://arxiv.org/abs/2207.10675) | [**Data**](https://doi.org/10.5281/zenodo.8221180)\n\n[![License](https://img.shields.io/github/license/twesterhout/annealing-sign-problem.svg)](LICENSE)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.8221332.svg)](https://doi.org/10.5281/zenodo.8221332)\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\nThe non-trivial phase structure of the eigenstates of many-body quantum systems\nseverely limits the applicability of quantum Monte Carlo, variational, and machine learning methods.\nHere, we study real-valued signful ground-state wave functions of frustrated quantum spin systems\nand, assuming that the tasks of finding wave function amplitudes and signs can be separated, show\nthat the signs can be easily bootstrapped from the amplitudes. We map the problem of finding the\nsign structure to an auxiliary classical Ising model defined on a subset of the Hilbert space basis.\nWe show that the Ising model does not exhibit significant frustrations even for highly frustrated\nparental quantum systems, and is solvable with a fully deterministic O(K log K)-time combinatorial\nalgorithm (where K is the Ising model size). Given the ground state amplitudes, we reconstruct\nthe signs of the ground states of several frustrated quantum models, thereby revealing the hidden\nsimplicity of many-body sign structures.\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\nIf either this code base or the paper has benefited your research, consider citing it:\n\n```\n@article{westerhout2022unveiling,\n  title={Unveiling ground state sign structures of frustrated quantum systems via non-glassy Ising models},\n  author={Westerhout, Tom and Katsnelson, Mikhail I and Bagrov, Andrey A},\n  journal={arXiv preprint arXiv:2207.10675},\n  year={2022}\n}\n```\n\n## A few words about the data\n\nOur analysis consists of multiple stages.\n\nThe first stage is running the exact diagonalization for all studied models. We\nused SpinED version 4c3305a to perform the diagonalization.\n\nThe commands are of the form\n\n```bash\nOMP_NUM_THREADS=`nproc` /path/to/SpinED-4c3305a /path/to/input.yaml\n```\n\nBoth the input files and the output files are located in the `physical_systems/` folder:\n\n```\nphysical_systems\n├── data-small\n│   ├── heisenberg_kagome_16.h5\n│   ├── heisenberg_kagome_18.h5\n│   ├── j1j2_square_4x4.h5\n│   ├── sk_16_1.h5\n│   ├── sk_16_2.h5\n│   └── sk_16_3.h5\n├── data-large\n│   ├── heisenberg_kagome_36.h5\n│   ├── heisenberg_pyrochlore_2x2x2.h5\n│   └── sk_32_1.h5\n├── generate_sk.py\n├── heisenberg_kagome_16.yaml\n├── heisenberg_kagome_18.yaml\n├── heisenberg_kagome_36.yaml\n├── heisenberg_pyrochlore_2x2x2.yaml\n├── j1j2_square_4x4.yaml\n├── sk_16_1.yaml\n├── sk_16_2.yaml\n├── sk_16_3.yaml\n└── sk_32_1.yaml\n```\n\nAll the HDF5 (`.h5`) files are available for download from\n[Zenodo](https://doi.org/10.5281/zenodo.8221180)\n\n\n### Figure 2\n\nTo generate the data, we used `make small`, for plotting, we used [this\nscript](./figures/plot_annealing_on_small_systems.gnu). Raw data can be found\non Surfdrive:\n\n```\nexperiments\n├── ...\n├── heisenberg_kagome_16.csv\n├── heisenberg_kagome_18.csv\n├── j1j2_square_4x4.csv\n├── sk_16_1.csv\n├── sk_16_2.csv\n└── sk_16_3.csv\n```\n\n### Figure 3a\n\nTo generate the data, we used `make experiments/couplings/%.csv` where `%` is\n`heisenberg_kagome_16`, `heisenberg_kagome_18`, or `sk_16_3`. For plotting,\n[this script](./figures/plot_coupling_distribution.gnu) was used. Raw data can be found on Surfdrive:\n\n```\nexperiments/couplings\n├── heisenberg_kagome_16.csv\n├── heisenberg_kagome_18.csv\n├── j1j2_square_4x4.csv\n├── sk_16_1.csv\n├── sk_16_2.csv\n└── sk_16_3.csv\n```\n\n### Figure 3b\n\nTo generate the data, we used `make is_frustrated`. For plotting, [this\nscript](./figures/plot_frustration_probability.gnu) was used. Raw data can be\nfound on Surfdrive:\n\n```\nexperiments/is_frustrated\n├── heisenberg_kagome_16.csv\n├── heisenberg_kagome_18.csv\n├── j1j2_square_4x4.csv\n├── sk_16_1.csv\n├── sk_16_2.csv\n└── sk_16_3.csv\n```\n\n### Table 1\n\nThe data was generated using `make quality_check`.\n\n### Figure 4\n\nTo generate the data, we used `make experiments/noise/%.csv` where `%` is\n`heisenberg_kagome_16`, `heisenberg_kagome_18`, or `sk_16_3`. For\npost-processing, we used the\n`annealing_sign_problem.common.postprocess_influence_of_noise` function. For\nplotting, [this script](./figures/plot_amplitude_vs_sign_overlap.gnu) was used.\nRaw data can be found on Surfdrive:\n\n```\nexperiments/lilo/noise/\n├── heisenberg_kagome_16.csv\n├── heisenberg_kagome_16_stats.csv\n├── heisenberg_kagome_18.csv\n├── heisenberg_kagome_18_stats.csv\n├── j1j2_square_4x4.csv\n├── j1j2_square_4x4_stats.csv\n├── sk_16_1.csv\n├── sk_16_1_stats.csv\n├── sk_16_2.csv\n├── sk_16_2_stats.csv\n├── sk_16_3.csv\n└── sk_16_3_stats.csv\n```\n\n### Figure 6\n\nThe data was generated using `make pyrochlore_32`, `make kagome_36`, or `make\nsk_32_1`. The Makefile also accepts the `NOISE` and `CUTOFF` arguments that can\nbe used to analyze the influence of noise in the amplitudes and to tune the\ncutoff rate for cluster extensions, respectively. The jobs generate files that look like:\n\n```\n...\n└── noise_7.9e-01\n    └── cutoff_2e-6\n        ├── kagome_36.csv7665204\n...\n```\n\nthe number appended to the file name indicates the job id. In this way, one can\nstart multiple independent jobs to gather more statistical data. The raw data\nthat we generated that way can be found in the `experiments/lilo` and\n`experiments/snellius` directories on Surfdrive. Keep in mind, that not all\nof the data was used for plotting.\n\nThe data was the pre-processed using [this script](./figures/density.py) to\ngenerate various probability distributions. We then used\n[plot_greedy_overlap_density.gnu](./figures/plot_greedy_overlap_density.gnu),\n[plot_overlap_integrated.gnu](./figures/plot_overlap_integrated.gnu), and\n[plot_size_density.gnu](./figures/plot_size_density.gnu) for plotting.\n\n### Figure 7\n\nThe data from Figure 6 was reused. The plotting was done with [this\nscript](./figures/plot_greedy_overlap_density.gnu).\n\n### Supplemental information\n\nData for the figures in the Supplemental Information were be generated similarly to those in the main text.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwesterhout%2Fannealing-sign-problem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftwesterhout%2Fannealing-sign-problem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwesterhout%2Fannealing-sign-problem/lists"}