diff --git a/README.md b/README.md new file mode 100644 index 000000000..1a2cc80f4 --- /dev/null +++ b/README.md @@ -0,0 +1,213 @@ +
+ +# OpenFermion + +Electronic structure package for quantum computers. + +[![Compatible with Python versions 3.10 and higher](https://img.shields.io/badge/Python-3.10+-fcbc2c.svg?style=flat-square&logo=python&logoColor=white)](https://www.python.org/downloads/) +[![Licensed under the Apache 2.0 license](https://img.shields.io/badge/License-Apache%202.0-3c60b1.svg?logo=opensourceinitiative&logoColor=white&style=flat-square)](https://github.com/quantumlib/OpenFermion/blob/main/LICENSE) +[![OpenFermion project on PyPI](https://img.shields.io/pypi/v/OpenFermion.svg?logo=semantic-release&logoColor=white&label=Release&style=flat-square&color=fcbc2c)](https://pypi.org/project/OpenFermion) +[![OpenFermion downloads per month from PyPI](https://img.shields.io/pypi/dm/openfermion?logo=PyPI&color=d56420&logoColor=white&style=flat-square&label=Downloads)](https://img.shields.io/pypi/dm/OpenFermion) + +[Features](#features) – +[Installation](#installation) – +[Plugins](#plugins) – +[Documentation](#documentation) – +[Contributing](#contributing-to-openfermion) – +[Citing](#citing-openfermion) – +[Authors](#authors) – +[Contact](#contact) + +
+ +## Features + +OpenFermion is an open-source Python package for compiling and analyzing quantum algorithms to +simulate fermionic systems, including quantum chemistry. Among other features, it includes data +structures and tools for obtaining and manipulating representations of fermionic and qubit +Hamiltonians. More information can be found in the [release +paper](https://arxiv.org/abs/1710.07629). + +## Installation + +Installing the latest **stable** OpenFermion requires the Python package installer +[pip](https://pip.pypa.io). (Make sure that you are using an up-to-date version of it.) + +Currently, OpenFermion is tested on Mac, Windows, and Linux. We recommend using Mac or Linux because +the electronic structure plugins are only compatible on these platforms. However, for those who +would like to use Windows, or for anyone having other difficulties with installing OpenFermion or +its plugins, we provide instructions for creating and using a Docker image – see the +[`docker/`](https://github.com/quantumlib/OpenFermion/tree/main/docker) subdirectory. The Docker +image provides a virtual environment with OpenFermion and select plugins pre-installed. The Docker +installation should run on any operating system where Docker can be used. + +### User installation + +To install the latest PyPI release of OpenFermion as a Python package for the current user (which +avoids modifying system Python packages), run the following command: + +```shell +python -m pip install --user openfermion +``` + +### Developer installation + +To install the latest version of OpenFermion in development mode, run the following commands: + +```shell +git clone https://github.com/quantumlib/OpenFermion +cd OpenFermion +python -m pip install -e . +``` + +## Plugins + +OpenFermion relies on modular plugin packages for significant functionality. Specifically, plugins +are used to simulate and compile quantum circuits and to perform classical electronic structure +calculations. Follow the links below to learn more! + +### High-performance simulators + +* [OpenFermion-FQE](https://github.com/quantumlib/OpenFermion-FQE) is a high-performance emulator + of fermionic quantum evolutions specified by a sequence of fermion operators, which can exploit + fermionic symmetries such as spin and particle number. + +### Circuit compilation plugins + +* [Forest-OpenFermion](https://github.com/rigetticomputing/forestopenfermion) to support + integration with [Forest](https://www.rigetti.com/forest). +* [SFOpenBoson](https://github.com/XanaduAI/SFOpenBoson) to support integration with [Strawberry + Fields](https://github.com/XanaduAI/strawberryfields). + +### Electronic structure package plugins + +* [OpenFermion-Psi4](http://github.com/quantumlib/OpenFermion-Psi4) to support integration with + [Psi4](http://psicode.org). +* [OpenFermion-PySCF](http://github.com/quantumlib/OpenFermion-PySCF) to support integration with + [PySCF](https://github.com/sunqm/pyscf). +* [OpenFermion-Dirac](https://github.com/bsenjean/Openfermion-Dirac) to support integration with + [DIRAC](http://diracprogram.org/doku.php). +* [OpenFermion-QChem](https://github.com/qchemsoftware/OpenFermion-QChem) to support integration + with [Q-Chem](https://www.q-chem.com). + +## Documentation + +Documentation for OpenFermion can be found at +[quantumai.google/openfermion](https://quantumai.google/openfermion) and the following links: + +* [Installation](https://quantumai.google/openfermion/install) +* [API Docs](https://quantumai.google/reference/python/openfermion/all_symbols) +* [Tutorials](https://quantumai.google/openfermion/tutorials/intro_to_openfermion) + +You can run OpenFermion's interactive Jupyter Notebooks, such as the introductory tutorial, in +[Colab](https://colab.research.google.com/github/quantumlib/OpenFermion/blob/main/examples/intro_to_openfermion.ipynb) +or +[MyBinder](https://mybinder.org/v2/gh/quantumlib/OpenFermion/main?filepath=examples%2Fintro_to_openfermion.ipynb). + +## Contributing to OpenFermion + +We'd love to accept your contributions and patches to OpenFermion. There are a few small guidelines +you need to follow. + +* Contributions to OpenFermion must be accompanied by a Contributor License Agreement (CLA). You + (or your employer) retain the copyright to your contribution; the CLA simply gives us permission + to use and redistribute your contributions as part of the OpenFermion project. Please visit + https://cla.developers.google.com/ to see your current agreements on file or to sign a new one. +* All submissions, including submissions by project members, require review. We use GitHub pull + requests for this purpose. Consult the appropriate [GitHub Help + documentation](https://help.github.com/articles/about-pull-requests/) for more information on + using pull requests. +* Please make sure your new code comes with extensive tests! We use automatic testing to make sure + all pull requests pass tests and do not decrease overall test coverage by too much. +* Please also make sure to follow the OpenFermion source code style. We mostly follow Python's + [PEP 8](https://www.python.org/dev/peps/pep-0008/) guidelines and use the corresponding + [linter](https://pypi.python.org/pypi/pep8) to check for it. +* Code should always be accompanied by documentation. Formatted OpenFermion documentation is + generated automatically and can be found [on the Quantum AI web + site](https://quantumai.google/openfermion). +* We use [GitHub issues](https://github.com/quantumlib/OpenFermion/issues) for tracking requests + and bugs. Please post questions to the [Quantum Computing Stack + Exchange](https://quantumcomputing.stackexchange.com/) with an `openfermion` tag. + +## Citing OpenFermion + +OpenFermion is the work of many people. When using OpenFermion for research projects, please cite +the [published paper](https://iopscience.iop.org/article/10.1088/2058-9565/ab8ebc/meta): + +> Jarrod R McClean, Nicholas C Rubin, Kevin J Sung, Ian D Kivlichan, Xavier Bonet-Monroig, Yudong +> Cao, Chengyu Dai, E Schuyler Fried, Craig Gidney, Brendan Gimby, Pranav Gokhale, Thomas Häner, +> Tarini Hardikar, Vojtěch Havlíček, Oscar Higgott, Cupjin Huang, Josh Izaac, Zhang Jiang, Xinle +> Liu, Sam McArdle, Matthew Neeley, Thomas O'Brien, Bryan O'Gorman, Isil Ozfidan, Maxwell D Radin, +> Jhonathan Romero, Nicolas P D Sawaya, Bruno Senjean, Kanav Setia, Sukin Sim, Damian S Steiger, +> Mark Steudtner, Qiming Sun, Wei Sun, Daochen Wang, Fang Zhang, and Ryan Babbush. (2020). +> OpenFermion: The Electronic Structure Package for Quantum Computers. _Quantum Science and +> Technology_, 5(3), 034014. + +For formatted citations and records in other formats, as well as records for all releases of OpenFermion +past and present, please visit the [OpenFermion page on Zenodo](https://zenodo.org/records/15604843). + +## Authors + +[Ryan Babbush](https://ryanbabbush.com) (Google), +[Jarrod McClean](https://jarrodmcclean.com) (Google), +[Nicholas Rubin](https://github.com/ncrubin) (Google), +[Kevin Sung](https://github.com/kevinsung) (University of Michigan), +[Ian Kivlichan](https://aspuru.chem.harvard.edu/ian-kivlichan/) (Harvard), +[Dave Bacon](https://github.com/dabacon) (Google), +[Xavier Bonet-Monroig](https://github.com/xabomon) (Leiden University), +[Yudong Cao](https://github.com/yudongcao) (Harvard), +[Chengyu Dai](https://github.com/jdaaph) (University of Michigan), +[E. Schuyler Fried](https://github.com/schuylerfried) (Harvard), +[Craig Gidney](https://github.com/Strilanc) (Google), +[Brendan Gimby](https://github.com/bgimby) (University of Michigan), +[Pranav Gokhale](https://github.com/singular-value) (University of Chicago), +[Thomas Häner](https://github.com/thomashaener) (ETH Zurich), +[Tarini Hardikar](https://github.com/TariniHardikar) (Dartmouth), +[Vojtĕch Havlíček](https://github.com/VojtaHavlicek) (Oxford), +[Oscar Higgott](https://github.com/oscarhiggott) (University College London), +[Cupjin Huang](https://github.com/pertoX4726) (University of Michigan), +[Josh Izaac](https://github.com/josh146) (Xanadu), +[Zhang Jiang](https://ti.arc.nasa.gov/profile/zjiang3) (NASA), +[William Kirby](https://williammkirby.com) (Tufts University), +[Xinle Liu](https://github.com/sheilaliuxl) (Google), +[Sam McArdle](https://github.com/sammcardle30) (Oxford), +[Matthew Neeley](https://github.com/maffoo) (Google), +[Thomas O'Brien](https://github.com/obriente) (Leiden University), +[Bryan O'Gorman](https://ti.arc.nasa.gov/profile/bogorman) (UC Berkeley, NASA), +[Isil Ozfidan](https://github.com/conta877) (D-Wave Systems), +[Max Radin](https://github.com/max-radin) (UC Santa Barbara), +[Jhonathan Romero](https://github.com/jromerofontalvo) (Harvard), +[Daniel Sank](https://github.com/DanielSank) (Google), +[Nicolas Sawaya](https://github.com/nicolassawaya) (Harvard), +[Bruno Senjean](https://github.com/bsenjean) (Leiden University), +[Kanav Setia](https://github.com/kanavsetia) (Dartmouth), +[Hannah Sim](https://github.com/hsim13372) (Harvard), +[Damian Steiger](https://github.com/damiansteiger) (ETH Zurich), +[Mark Steudtner](https://github.com/msteudtner) (Leiden University), +[Qiming Sun](https://github.com/sunqm) (Caltech), +[Wei Sun](https://github.com/Spaceenter) (Google), +[Daochen Wang](https://github.com/daochenw) (River Lane Research), +[Chris Winkler](https://github.com/quid256) (University of Chicago), +[Fang Zhang](https://github.com/fangzh-umich) (University of Michigan), +and [Emiel Koridon](https://github.com/Emieeel) (Leiden University). + +We are happy to include future contributors as authors on later releases. + +## Contact + +For any questions or concerns not addressed here, please email quantum-oss-maintainers@google.com. + +## Disclaimer + +This is not an officially-supported Google product. This project is not eligible for the [Google +Open Source Software Vulnerability Rewards +Program](https://bughunters.google.com/open-source-security). + +Copyright 2017 The OpenFermion Developers. + +
+ + Google Quantum AI + +
diff --git a/README.rst b/README.rst deleted file mode 100644 index cc3fb316f..000000000 --- a/README.rst +++ /dev/null @@ -1,223 +0,0 @@ -.. image:: https://raw.githubusercontent.com/quantumlib/OpenFermion/refs/heads/master/docs/images/logo_horizontal.svg - :alt: OpenFermion logo - :width: 75% - :align: center - -.. |python| image:: https://img.shields.io/badge/Python-3.10+-fcbc2c.svg?style=flat-square&logo=python&logoColor=white - :alt: Compatible with Python versions 3.10 and higher - :target: https://www.python.org/downloads/ - -.. |license| image:: https://img.shields.io/badge/License-Apache%202.0-3c60b1.svg?logo=opensourceinitiative&logoColor=white&style=flat-square - :alt: Licensed under the Apache 2.0 license - :target: https://github.com/quantumlib/OpenFermion/blob/main/LICENSE - -.. |version| image:: https://img.shields.io/pypi/v/OpenFermion.svg?logo=semantic-release&logoColor=white&label=Release&style=flat-square&color=fcbc2c - :alt: OpenFermion project on PyPI - :target: https://pypi.org/project/OpenFermion - -.. |downloads| image:: https://img.shields.io/pypi/dm/openfermion?logo=PyPI&color=d56420&logoColor=white&style=flat-square&label=Downloads - :alt: OpenFermion downloads per month from PyPI - :target: https://img.shields.io/pypi/dm/OpenFermion - -.. class:: margin-top -.. class:: centered - -| -| |python| |license| |version| |downloads| - -.. |vertspace| image:: https://upload.wikimedia.org/wikipedia/commons/archive/c/ca/20200404084254%211x1.png - :alt: Blank space - :width: 1px - :height: 30px - -|vertspace| OpenFermion is an open-source library for compiling and analyzing quantum -algorithms to simulate fermionic systems, including quantum chemistry. Among -other features, it includes data structures and tools for obtaining and -manipulating representations of fermionic and qubit Hamiltonians. For more -information, see our `release paper `__. - -You can run the interactive Jupyter Notebooks in |Colab|_ or |MyBinder|_. - -.. |Colab| replace:: Colab -.. _Colab: https://colab.research.google.com/github/quantumlib/OpenFermion - -.. |MyBinder| replace:: MyBinder -.. _MyBinder: https://mybinder.org/v2/gh/quantumlib/OpenFermion/master?filepath=examples - -Installation and Documentation -============================== - -Installing the latest **stable** OpenFermion requires the Python package -installer `pip `__. Make sure that you are using an -up-to-date version of it. - -Documentation can be found at `quantumai.google/openfermion `__ and the following links: - -* `Installation `__ - -* `API Docs `__ - -* `Tutorials `__ - -Currently, OpenFermion is tested on Mac, Windows, and Linux. We recommend using Mac or Linux because -the electronic structure plugins are only compatible on these platforms. However, -for those who would like to use Windows, or for anyone having other difficulties -with installing OpenFermion or its plugins, we provide a Docker image -and usage instructions in the -`docker folder `__. -The Docker image provides a virtual environment with OpenFermion and select plugins pre-installed. -The Docker installation should run on any operating system where Docker can be used. - -Developer install ------------------ - -To install the latest version of OpenFermion (in development mode), run -the following commands: - -.. code-block:: shell - - git clone https://github.com/quantumlib/OpenFermion - cd OpenFermion - python -m pip install -e . - -Library install ---------------- - -To install the latest PyPI release as a library (in user mode), run -the following commands: - -.. code-block:: shell - - python -m pip install --user openfermion - -Plugins -======= - -OpenFermion relies on modular plugin libraries for significant functionality. -Specifically, plugins are used to simulate and compile quantum circuits and to perform -classical electronic structure calculations. -Follow the links below to learn more! - -High-performance simulators ---------------------------- - -* `OpenFermion-FQE `__ is - a high-performance emulator of fermionic quantum evolutions specified - by a sequence of fermion operators, which can exploit fermionic - symmetries such as spin and particle number. - -Circuit compilation plugins ---------------------------- - -* `Forest-OpenFermion `__ to support integration with `Forest `__. - -* `SFOpenBoson `__ to support integration with `Strawberry Fields `__. - -Electronic structure package plugins ------------------------------------- - -* `OpenFermion-Psi4 `__ to support integration with `Psi4 `__. - -* `OpenFermion-PySCF `__ to support integration with `PySCF `__. - -* `OpenFermion-Dirac `__ to support integration with `DIRAC `__. - -* `OpenFermion-QChem `__ to support integration with `Q-Chem `__. - -How to contribute -================= - -We'd love to accept your contributions and patches to OpenFermion. -There are a few small guidelines you need to follow. -Contributions to OpenFermion must be accompanied by a Contributor License -Agreement (CLA). -You (or your employer) retain the copyright to your contribution; the CLA -this simply gives us permission to use and redistribute your contributions as part of the project. -Head over to https://cla.developers.google.com/ -to see your current agreements on file or to sign a new one. - -All submissions, including submissions by project members, require review. -We use GitHub pull requests for this purpose. Consult -`GitHub Help `__ for -more information on using pull requests. -Furthermore, please make sure your new code comes with extensive tests! -We use automatic testing to make sure all pull requests pass tests and do not -decrease overall test coverage by too much. Make sure you adhere to our style -guide. Just have a look at our code for clues. We mostly follow -`PEP 8 `_ and use -the corresponding `linter `_ to check for it. -Code should always come with documentation, which is generated automatically and can be found -`here `_. - -We use `Github issues `__ -for tracking requests and bugs. Please post questions to the -`Quantum Computing Stack Exchange `__ with an 'openfermion' tag. - -Authors -======= - -`Ryan Babbush `__ (Google), -`Jarrod McClean `__ (Google), -`Nicholas Rubin `__ (Google), -`Kevin Sung `__ (University of Michigan), -`Ian Kivlichan `__ (Harvard), -`Dave Bacon `__ (Google), -`Xavier Bonet-Monroig `__ (Leiden University), -`Yudong Cao `__ (Harvard), -`Chengyu Dai `__ (University of Michigan), -`E. Schuyler Fried `__ (Harvard), -`Craig Gidney `__ (Google), -`Brendan Gimby `__ (University of Michigan), -`Pranav Gokhale `__ (University of Chicago), -`Thomas Häner `__ (ETH Zurich), -`Tarini Hardikar `__ (Dartmouth), -`Vojtĕch Havlíček `__ (Oxford), -`Oscar Higgott `__ (University College London), -`Cupjin Huang `__ (University of Michigan), -`Josh Izaac `__ (Xanadu), -`Zhang Jiang `__ (NASA), -`William Kirby `__ (Tufts University), -`Xinle Liu `__ (Google), -`Sam McArdle `__ (Oxford), -`Matthew Neeley `__ (Google), -`Thomas O'Brien `__ (Leiden University), -`Bryan O'Gorman `__ (UC Berkeley, NASA), -`Isil Ozfidan `__ (D-Wave Systems), -`Max Radin `__ (UC Santa Barbara), -`Jhonathan Romero `__ (Harvard), -`Daniel Sank `__ (Google), -`Nicolas Sawaya `__ (Harvard), -`Bruno Senjean `__ (Leiden University), -`Kanav Setia `__ (Dartmouth), -`Hannah Sim `__ (Harvard), -`Damian Steiger `__ (ETH Zurich), -`Mark Steudtner `__ (Leiden University), -`Qiming Sun `__ (Caltech), -`Wei Sun `__ (Google), -`Daochen Wang `__ (River Lane Research), -`Chris Winkler `__ (University of Chicago), -`Fang Zhang `__ (University of Michigan) and -`Emiel Koridon `__ (Leiden University). - -How to cite -=========== - -When using OpenFermion for research projects, please cite: - - Jarrod R McClean, Nicholas C Rubin, Kevin J Sung, Ian D Kivlichan, Xavier Bonet-Monroig, - Yudong Cao, Chengyu Dai, E Schuyler Fried, Craig Gidney, Brendan Gimby, Pranav Gokhale, - Thomas Häner, Tarini Hardikar, Vojtěch Havlíček, Oscar Higgott, Cupjin Huang, Josh Izaac, - Zhang Jiang, Xinle Liu, Sam McArdle, Matthew Neeley, Thomas O'Brien, Bryan O'Gorman, - Isil Ozfidan, Maxwell D Radin, Jhonathan Romero, Nicolas P D Sawaya, Bruno Senjean, - Kanav Setia, Sukin Sim, Damian S Steiger, Mark Steudtner, Qiming Sun, Wei Sun, Daochen Wang, - Fang Zhang, and Ryan Babbush - *OpenFermion: The Electronic Structure Package for Quantum Computers*. - `Quantum Science and Technology 5.3 (2020): 034014 `__. - -We are happy to include future contributors as authors on later releases. - -Disclaimer -========== - -Copyright 2017 The OpenFermion Developers. -This is not an official Google product. diff --git a/docs/images/quantum-ai-vertical.svg b/docs/images/quantum-ai-vertical.svg new file mode 100644 index 000000000..b41872775 --- /dev/null +++ b/docs/images/quantum-ai-vertical.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + +