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

Histogram class #217

Merged

Conversation

alexfleury-sb
Copy link
Collaborator

@alexfleury-sb alexfleury-sb commented Sep 20, 2022

Histogram class provides functions to manipulate results from an experiment. The two highlights are the aggregate_histograms (or __add__ method) and post_select functions. The former one combines many histograms into a single one. The later function removes data according to the outcome of a (or many) qubit(s).

Copy link
Collaborator

@ValentinS4t1qbit ValentinS4t1qbit left a comment

Choose a reason for hiding this comment

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

Solid and exciting work: I think some aspects of the Histogram class can be improved a bit. I encourage you to think about how you'd go to support what we have done in the recent hardware experiment (post-selection on bit strings with qubits measured in a specific state) but also how users would handle other types of post-selection (e.g find all entries whose state preserves spin or charge, stuff like that).

It is perfectly ok to stop at the former in this PR if it's unclear how we would facilitate the latter (everything at the end can be done with a dictionary comprehension and a filter/predicate function that returns True for the bit strings that match what we want and False for the others).

tangelo/toolboxes/post_processing/histogram.py Outdated Show resolved Hide resolved
tangelo/toolboxes/post_processing/histogram.py Outdated Show resolved Hide resolved
tangelo/toolboxes/post_processing/histogram.py Outdated Show resolved Hide resolved
tangelo/toolboxes/post_processing/histogram.py Outdated Show resolved Hide resolved
tangelo/toolboxes/post_processing/histogram.py Outdated Show resolved Hide resolved
tangelo/toolboxes/post_processing/histogram.py Outdated Show resolved Hide resolved
tangelo/toolboxes/post_processing/histogram.py Outdated Show resolved Hide resolved
tangelo/toolboxes/post_processing/histogram.py Outdated Show resolved Hide resolved
Copy link
Collaborator

@ValentinS4t1qbit ValentinS4t1qbit left a comment

Choose a reason for hiding this comment

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

I think the design is good, the comments are just a collection of small things (docs, small expressions)

tangelo/toolboxes/post_processing/histogram.py Outdated Show resolved Hide resolved
tangelo/toolboxes/post_processing/histogram.py Outdated Show resolved Hide resolved
tangelo/toolboxes/post_processing/histogram.py Outdated Show resolved Hide resolved
tangelo/toolboxes/post_processing/histogram.py Outdated Show resolved Hide resolved
tangelo/toolboxes/post_processing/histogram.py Outdated Show resolved Hide resolved
tangelo/toolboxes/post_processing/histogram.py Outdated Show resolved Hide resolved
tangelo/toolboxes/post_processing/histogram.py Outdated Show resolved Hide resolved
Copy link
Contributor

@JamesB-1qbit JamesB-1qbit left a comment

Choose a reason for hiding this comment

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

A copy function for Histogram may be nice.
You seem to use both bistring and bitstring. Is this desired?

tangelo/toolboxes/post_processing/histogram.py Outdated Show resolved Hide resolved
tangelo/toolboxes/post_processing/histogram.py Outdated Show resolved Hide resolved
tangelo/toolboxes/post_processing/histogram.py Outdated Show resolved Hide resolved
@ValentinS4t1qbit ValentinS4t1qbit merged commit 8616db6 into sandbox-quantum:develop Sep 28, 2022
@alexfleury-sb alexfleury-sb deleted the histogram_class branch September 29, 2022 14:08
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 <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: AlexandreF-1qbit <[email protected]>
Co-authored-by: James Brown <[email protected]>
Co-authored-by: JamesB-1qbit <[email protected]>
Co-authored-by: MPCoons <[email protected]>
Co-authored-by: elloyd-1qbit <[email protected]>
Co-authored-by: KrzysztofB-1qbit <[email protected]>
Co-authored-by: Rudi Plesch <[email protected]>
Co-authored-by: GitHub Actions <[email protected]>
Co-authored-by: Valentin Senicourt <[email protected]>
Co-authored-by: Joshua Goings <[email protected]>
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