Git Product home page Git Product logo

qiskit-community / prototype-entanglement-forging Goto Github PK

View Code? Open in Web Editor NEW
31.0 13.0 10.0 1.27 MB

A module for simulating chemical and physical systems using a Variational Quantum Eigensolver (VQE) enhanced by Entanglement Forging.

Home Page: https://journals.aps.org/prxquantum/abstract/10.1103/PRXQuantum.3.010309

License: Apache License 2.0

Python 100.00%
quantum-computing qiskit chemistry vqe prototype

prototype-entanglement-forging's Introduction

🚩 This repository has been archived. A more updated version of entanglement forging is available with circuit-knitting-toolbox v0.5 and prior.

Platform Python Qiskit Qiskit Nature
License Tests

Logo

Entanglement Forging

Launch Demo Watch Video

Table of Contents


About This Project

This module allows a user to simulate chemical and physical systems using a Variational Quantum Eigensolver (VQE) enhanced by Entanglement Forging [1]. Entanglement Forging doubles the size of the system that can be exactly simulated on a fixed set of quantum bits.

Before using the module for new work, users should read through the reference guide and the explanatory material, specifically the current limitations of the module.


How to Give Feedback

We encourage your feedback! You can share your thoughts with us by:


Contribution Guidelines

For information on how to contribute to this project, please take a look at CONTRIBUTING.MD.


Acknowledgements

This module is based on the theory and experiment described in [1].

The initial code on which this module is based was written by Andrew Eddins, Mario Motta, Tanvi Gujarati, and Charles Hadfield. The module was developed by Aggie Branczyk, Iskandar Sitdikov, and Luciano Bello, with help from Caleb Johnson, Mario Motta, Andrew Eddins, Tanvi Gujarati, Stefan WΓΆrner, Max Rossmannek, Ikko Hamamura, and Takashi Imamichi. The documentation was written by Aggie Branczyk, with help from Ieva Liepuoniute, Mario Motta and Travis Scholten.

We also thank Lev Bishop, Sarah Sheldon, and John Lapeyre for useful discussions.


About Prototypes

Prototypes is a collaboration between developers and researchers that will give users access to prototypes from cutting-edge research in areas like quantum simulation and machine learning. These software packages are built on top of, and may eventually be integrated into the Qiskit SDK. They are a contribution as part of the Qiskit community.

Check out our blog post for more information!


References

[1] Andrew Eddins, Mario Motta, Tanvi P. Gujarati, Sergey Bravyi, Antonio Mezzacapo, Charles Hadfield, Sarah Sheldon, Doubling the size of quantum simulators by entanglement forging, https://journals.aps.org/prxquantum/abstract/10.1103/PRXQuantum.3.010309


License

Apache License 2.0

prototype-entanglement-forging's People

Contributors

agata-branczyk avatar caleb-johnson avatar garrison avatar huangjunye avatar jenglick avatar pedrorrivero avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

prototype-entanglement-forging's Issues

Support for complex valued ansatzes and Hamiltonians

When looking at systems that break time reversal symmetry, we have Hamiltonians that are complex valued and the resulting wave-functions are complex valued as well. Entanglement forging code can be upgraded to be able to treat these systems.

Potential solution:

  1. Modify modules that generate the Hamiltonian via the Cholesky decomposition to be compatible with imaginary terms in the 2N qubit Hamiltonian.
  2. Test that the ClassicalEnergies class is compatible with these changes.
  3. Add additional linear superposition related to (+/- i) in the make_stateprep_circuits function such that all superposition circuits can be created as needed. A flag can be created to invoke the additional superposition circuits when needed.

Something along these lines maybe:
Screen Shot 2021-09-09 at 4 30 13 PM

Broken relative links in reference guide

Describe the bug

Several links are broken in the reference guide due to wrong setup of the relative links.

To Reproduce
Click two links to the Explanatory Materials in this section and one link to the Explanatory Materials in this section.

Expected behavior
Working links

Additional context
Add any other context about the problem here.

Any suggestions?
Remove . in front of /docs/ in the relative links.

U β‰  V

Is your feature request related to a problem? Please describe.
In the current implementation, it's not possible to treat the spin up and spin down subsystems differently.

Describe the solution you'd like
Breaking the U=V symmetry so that U β‰  V.

Additional context
This will be made possible after the new expectation values primitive is merged into qiskit terra.

Computing generic observables

Is your feature request related to a problem? Please describe.
It would be useful to be able to compute generic observables.

Describe the solution you'd like
The ability to evaluate generic operators of the form X = \sum_\mu A_\mu \otimes B_\mu where A_\mu and B_\mu are weighted Pauli operators acting on the first and second halves of the partition respectively.

Additional context
Some examples of observables that might be interesting are 1-body and 2-body matrices.

The 1-body matrices are used for:

  • electrostatic properties
  • electronic densities
  • molecular electrostatic potential

2-body matrices are used for:

  • orbital optimization
  • analysis of correlation functions

The combination of both is used in entanglement analysis.

Add explanations of using QASM simulator vs Statevector simulator in Explanatory Material

Is your feature request related to a problem? Please describe.

Tutorial 4 uses QASM simulator instead of Statevector simulator. It's unclear to me the difference of the two kinds of simulators and when a user should choose one or the other.

Describe the solution you'd like
I think it would be a good idea to add a section in the Explanatory Material to explain the difference of the two simulators and discuss when a user should choose one or the other and add a link to the section in Tutorial 4.

Additional context
None.

Asymmetric bitstrings

Is your feature request related to a problem? Please describe.
With the current version of Entanglement Forging, it's not possible to model open-shell species.

Describe the solution you'd like
Having the option to specify different bitstrings for spin-up/spin down orbitals would make it possible to model open-shell species.

Additional context
N/A

Typos and broken links

Describe the bug

  • README : License link should be relative
  • README : TOC should use the names Reference Guide and Explanatory Material
  • README > Contribution guidelines : Broken link under "Contribution guide"
  • CONTRIBUTING > Pull request checklist > 1 : Should read Entanglement Forging uses Pylint and PEP8...
  • Reference guide : contributing material should be moved to CONTRIBUTING
  • Reference guide > Initial set-up and installing dependencies > 3 : The name of the repo should be prototype-entanglement-forging
  • Reference guide > Making a pull request : External contributors should fork the repo first, clone their own fork, and open a PR from there.
  • Reference guide > Making a pull request > 3 : The name of the directory should not be /forging but prototype-entanglement-forging
  • Reference guide > Making a pull request > 4 : Reviewers should be Aggie Branczyk and Caleb Johnson.
  • Issue Templates > Bug Report > To Reproduce : misspelled word example

Additional context
Many of these were likely caused when renaming, and migrating the repo.

Pinned version of pyscf is broken

Describe the bug
It fails to install.

To Reproduce

  1. Clone this repo
  2. pip install -e .
...
Building wheels for collected packages: pyscf
  Building wheel for pyscf (setup.py) ... error
  error: subprocess-exited-with-error

  Γ— python setup.py bdist_wheel did not run successfully.
  β”‚ exit code: 1
  ╰─> [7 lines of output]
      running bdist_wheel
      running build
      running build_ext
      cmake -S/tmp/pip-install-_irpoc6i/pyscf_38d39720820e4357b00d91660707e3f0/pyscf/lib -Bbuild/temp.linux-x86_64-cpython-310
      CMake Error: The source directory "/tmp/pip-install-_irpoc6i/pyscf_38d39720820e4357b00d91660707e3f0/pyscf/lib" does not appear to contain CMakeLists.txt.
      Specify --help for usage, or press the help button on the CMake GUI.
      error: command '/usr/bin/cmake' failed with exit code 1
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for pyscf
  Running setup.py clean for pyscf
Failed to build pyscf
ERROR: Could not build wheels for pyscf, which is required to install pyproject.toml-based projects

Expected behavior
Should install

Additional context

Any suggestions?
Update the pySCF version.

Typos and broken links

Describe the bug

  • README > Contribution guidelines :
  • `` :
  • `` :
  • `` :
  • `` :
  • `` :
  • `` :
  • `` :
  • `` :
  • `` :
  • `` :

To Reproduce
Give some steps that show the bug. A minimal working exampl of code with output is best. If you are copying in code, please remember to enclose it in triple backticks, [multiline code goes here], so that it displays correctly.

Expected behavior
A clear and concise description of what you expected to happen.

Additional context
Add any other context about the problem here.

Any suggestions?
Not required, but if you have suggestions for how a contributor should fix this, or any problems we should be aware of, let us know.

Print U and V value

Is your feature request related to a problem? Please describe.
Currently we cannot print out U and V matrices format

Describe the solution you'd like
Option to print out U and V matrices

Additional context
Add any other context or screenshots about the feature request here.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.