Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deprecate Simulator, introduce get_backend as replacement #245

Merged
merged 10 commits into from
Nov 8, 2022
Merged

Deprecate Simulator, introduce get_backend as replacement #245

merged 10 commits into from
Nov 8, 2022

Conversation

ValentinS4t1qbit
Copy link
Collaborator

@ValentinS4t1qbit ValentinS4t1qbit commented Nov 7, 2022

Name change to better reflect the flexibility of the new backend approach in the linq module.

  • The SimulatorBase class has now been renamed Backend. As a consequence, anything that inherits from it is a backend: simulator, or actual quantum device (there is thus no need to change the names of built-in backends, they are indeed simulators).
  • Users can now get a backend object by calling get_backend. Simulator still works but gives a deprecation warning message.
  • Minor refactorings

Copy link
Collaborator

@alexfleury-sb alexfleury-sb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The changes are good for me. However, the documentation should be changed accordingly everywhere (docstrings, notebooks, comments). Is it a task for this PR? If not, we should raise an issue to keep that in mind. I don't feel it is mandatory as the SImulator class is still supported but comes with a deprecated warning.

For e.g., here are the docstrings and comments that a grep -r "Simulator" * raises (excluding the notebooks and irrelevant hits):

tangelo/algorithms/variational/adapt_vqe_solver.py:            backend (tangelo.linq.Simulator): Backend to compute expectation values.
tangelo/algorithms/variational/sa_vqe_solver.py:        backend_options (dict) : parameters to build the tangelo.linq Simulator class.
tangelo/algorithms/variational/iqcc_ilc_solver.py:        backend_options (dict): Parameters to build the tangelo.linq Simulator
tangelo/algorithms/variational/sa_oo_vqe_solver.py:        backend_options (dict) : parameters to build the tangelo.linq Simulator class.
tangelo/algorithms/variational/iqcc_solver.py:        backend_options (dict): Parameters to build the tangelo.linq Simulator
tangelo/algorithms/variational/vqe_solver.py:        backend_options (dict) : parameters to build the tangelo.linq Simulator
tangelo/toolboxes/circuits/tests/test_qsp.py:# Initiate Simulator using cirq for phase estimation tests as it has the same ordering as openfermion
tangelo/toolboxes/circuits/tests/test_lcu.py:# Initiate Simulator using cirq for phase estimation tests as it has the same ordering as openfermion
tangelo/toolboxes/measurements/classical_shadows/classical_shadows.py:            backend (Simulator): Backend for the simulation of a shadow.
tangelo/linq/noisy_simulation/noise_models.py:The Simulator class is responsible for taking in the generic noise model at
tangelo/linq/target/backend.py:"""SimulatorBase class, base class to define various target simulators and abstracting their
tangelo/linq/target/backend.py:differences from the user. Users can define their own target simulator as a child class of SimulatorBase.
tangelo/linq/target/backend.py:                             "Please set the Simulator.n_shots attribute to an appropriate value.")
tangelo/linq/target/target_cirq.py:            # Only DensityMatrixSimulator handles noise well, can use Simulator but it is slower
tangelo/linq/simulator.py:            target_dict (from tangelo.linq.target). Can also provide a subclass of SimulatorBase.
tangelo/linq/simulator.py:    # If target is a string use target_dict to return built-in Target Simulators
tangelo/linq/simulator.py:    # If subclass of SimulatorBase, use target
tangelo/linq/simulator.py:def Simulator(target: Union[None, str, Type[Backend]] = default_simulator, n_shots: Union[None, int] = None,
tangelo/helpers/utils.py:# List all backends and statevector ones supported by Simulator class

@ValentinS4t1qbit ValentinS4t1qbit merged commit c31fe3d into sandbox-quantum:develop Nov 8, 2022
ValentinS4t1qbit added a commit that referenced this pull request Nov 9, 2022
* Formula for estimating n_measurements for exp value to given accuracy updated with simpler form. (#192)
* Fix operator_expectation bug qith qubit operator / hamiltonian. (#191)
* iqcc ilc solver fork (#179)
* Make circuit iterable (#194)
* copy method for circuits + get_resources adjusted for some variations of VQE + invertible swap gate fix (#193)
* Release guide for project maintainers + version string (#195)
* Notebook: Important aspects of QChem modelling for QComputing (#199)
* Notebooks enabled for Google colab ("No local install" needed) (#198)
* Docker fix (#200)
* Excited states (#197)
* Translation function for qubit operators (#196)
* c2v axis definition changed (#205)
* Bidirectional conversion for Qiskit quantum circuits (#203)
* QEMISTClientConnection class (#207)
* Add n_qubits option to MultiformOperator compress function (#209)
* Quantum Signal Processing time-evolution (#204)
* added even trotter order > 2 (#210)
* Fixed number of qubits with scBK in ADAPT. (#214)
* Export coverage output file in github actions (#158)
* JKMN vector prep should return np array of int. (#215)
* Support for additional IonQ gates (#212)
* Remove unused n_min_orbitals attribute. (#218)
* Change JKMN Majorana definition so mapped Hamiltonian is real (#219)
* Relaxing condition fot iQCC-ILC test. (#221)
* Histogram class (#217)
* Compute energy from RDMs with FermionOperator (#220)
* IonQConnection: control update prints / verbosity. (#225)
* Refactor simulator (#213)
* added __repr__ method to Gate (#229)
* New bidirectional circuit translation functions and interface (#223)
* Add circuit.depth() in get_resources methods (#235)
* Variance and standard error of an expectation value (#238)
* VQESolver cleanup (#230)
* TETRIS-ADAPT-VQE (#241)
* TETRISADAPTSolver implementation + #224 fix
* Trotter order and active electrons for (i)QCC (#234)
* Symmetry post-selection (#232)
* Qiskit runtime integration (IBM quantum only) (#222)
* Add multi-control support for trotterization (#244)
* Compatibility with new QCloud outputs. (#246)
* Deprecate Simulator, introduce get_backend as replacement (#245)
* compute_rdms function (#228)
* Expanded FermionOperator attributes, defined logical and mathematical operations on it (add, mul, eq, etc)
* Bumping Tangelo version number in _version.py
* Update CHANGELOG.md

Co-authored-by: Valentin Senicourt <41597680+ValentinS4t1qbit@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: AlexandreF-1qbit <76115575+AlexandreF-1qbit@users.noreply.github.com>
Co-authored-by: James Brown <james.brown@1qbit.com>
Co-authored-by: JamesB-1qbit <84878946+JamesB-1qbit@users.noreply.github.com>
Co-authored-by: MPCoons <84400409+MPCoons@users.noreply.github.com>
Co-authored-by: elloyd-1qbit <58313607+elloyd-1qbit@users.noreply.github.com>
Co-authored-by: KrzysztofB-1qbit <86750444+KrzysztofB-1qbit@users.noreply.github.com>
Co-authored-by: Rudi Plesch <rudi.plesch@1qbit.com>
Co-authored-by: GitHub Actions <noreply@github.com>
Co-authored-by: Valentin Senicourt <valentin.senicourt@1qbit.com>
Co-authored-by: Joshua Goings <3915169+jjgoings@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants