Update computation of probability#424
Conversation
|
It seems like the model of error amplification analysis has a strong local minima. The bug fix in 1e8750f yields the test failure (the code to take sum of amp_cal = FineAmplitude(qubit)
amp_cal.set_schedule(
schedule=xp_sched, angle_per_gate=target_angle, add_xp_circuit=True, add_sx=True
)
error = -np.pi * r # modify this line
backend = MockFineAmp(error, np.pi, "xp")
exp_data = amp_cal.run(backend)
exp_data.block_for_results()r=0.0495 (success), 0.05 (fail), 0.0508 (success). We need almost exact |
|
I'm trying to sort through the code to see what you're actually fitting. I'm not sure wrapping cos really improves readability. Anyway, it looks like you're fitting both the angular error and the amplitude, but I don't see the 1/0 calibrations included in the fit. That doesn't work -- for small errors amp and dtheta_error do the same thing, so the fit function is singular. You need to either drop amp, or even better fit the 1/0 cals. (to elucidate the later a bit; if you taylor expand for small angles, the fit function is amp * dtheta_error*(-1)^n and you can't fit both amp and detheta_error. If you have a 1/0 cal you trust (all cals except the pi/2 pulse cal), you can drop amp as a parameter, but for the pi/2 cal if the pulse is off, your calibration of what 1 and 0 are will also be off, so you're better off explicitly fitting those as well... ) |
|
Thanks @oliverdial for perfectly reasonable explanation. It sounds like the problem is outside the scope of this PR, and we need to implement the error amplification family as a The reason for wrapping cos function is reusability rather than readability (actually it sometimes hurts readability). If there is a set of common fit functions and parameter guess functions, we can easily propagate bug fix/upgrade through the stack. |
|
One of the problems that we have is that the error amplifying sequences are technically not a curve analysis (i.e. not a single parameter |
|
Would it make sense to make |
|
This means we can sweep |
|
One approach to this is to assign arbitrary x coordinates just for the plotting part of the fitter, and then use other means to get the (richer multi-dimensional) coordinates to the fitter; I've done this a lot in the past with patterns like fit_function = lambda x, rich_x=data: actual_fit_function(rich_x) |
- fix sign of phase in the base error amplification analysis - fix sign of estimated initial guess
|
In this PR (EDIT) |
eggerdj
left a comment
There was a problem hiding this comment.
Looks good. Some things could do with a bit more clarification.
| mode = (alpha_i - 1) / (alpha_0 + self._dim) | ||
|
|
||
| # If outcome count is zero, mode becomes tiny negative value with prior < 1 | ||
| mode = max(0.0, mode) |
There was a problem hiding this comment.
I'm a bit confused by the variable name. I though mode is the value that appears most often in the data. Since we have counts I would naively expect this to be 0 or 1. Should this be named first_moment or mean instead of mode?
There was a problem hiding this comment.
I just referred to the definition here. According to the definition, alpha_i > 0 and it can be a negative value when alpha_i is less than 1 it says alpha_i > 1. So probably I use wrong definition. Please correct me if I miss something @oliverdial
| ymin, ymax = np.percentile(data.y, [10, 90]) | ||
| if ymax - ymin < 0.2: | ||
| # oscillation amplitude might be almost zero, | ||
| # then exclude from average because of lower SNR | ||
| continue |
There was a problem hiding this comment.
What prompted this change?
There was a problem hiding this comment.
Previously, I let the FFT module estimate a frequency regardless of the signal amplitude. In some test cases, especially when the signal is really weak, the guess module picks random frequency (because computed probability has been changed), and it hurts frequency guess of averaged oscillation frequency measured in x, y, z basis. So I decided to ignore the guess when SNR is likely low, i.e. it may pick some artifact.
There was a problem hiding this comment.
I like it! I wonder if using the actual SNR (min-max)/(sqrt(variance)) might be nice in case someone tries to fit a very small/off resonant rotation with this at some point, so that they can average a lot and still do it? Might be a separate PR
There was a problem hiding this comment.
That is nice idea. What is the variance here? Is it the variance of y values np.std(data.y) or one computed from the sampling error data.y_err? If latter one, probably np.mean(data.y_err).
| # Set configurable options | ||
| self.set_experiment_options(lengths=list(lengths), num_samples=num_samples) | ||
| self.set_analysis_options(data_processor=probability(outcome="0" * self.num_qubits)) | ||
| self.set_analysis_options( |
There was a problem hiding this comment.
Should we use the get function of the data processor library?
There was a problem hiding this comment.
I checked but we cannot use the getter. This is a custom processor for RB, because outcome depends on the number of qubits, and it counts for label "0" instead of "1". Of course we can modify the getter, but this should be done in the separate PR.
| class TestProbability(QiskitTestCase): | ||
| """Test probability computation.""" | ||
|
|
||
| def test_variance_not_zero(self): |
There was a problem hiding this comment.
Can you add a few extra tests to check that we get the right probabilities? E.g. if I give it {"1": 50, "0": 50} with a flat prior I should get p = 50%.
There was a problem hiding this comment.
Done in e534cea This was really nice test since it told an error in the computation of mode. The bug is also fixed.
…ification_analysis.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com>
…ification_analysis.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com>
…ification_analysis.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com>
chriseclectic
left a comment
There was a problem hiding this comment.
I think this PR is confusing some things with the estimation problem and because of that the documentation and implementation is a bit confusing.
The Probability node should be estimating a single probability value p, which defines a 2-outcome binomial distribution [p, 1-p]. This is estimated from a number of samples from this distribution (the frequency of a single outcome out of total shots). The distribution over [p, 1-p] itself is a beta distribution, and so given a prior distribution of this you can do the bayes update for beta distribution to get a posterior given the observed counts, and from that distribution get a most likely value for p and a variance.
The generalization of this would be a Probabilities node which is estimating K probabilities defining a multi-normal distribution. This estimate is done from samples from this distribution (ie counts). The Dirichlet distribution is then the actual distribution over this probability vector values (generalization of beta-distribution), where you can do the Bayes update from counts the way that is coded in here and then estimate.
In this sense I think we only need two probability data processing nodes, one for a single outcome (Probability using beta distribution) and one for 2^n outcomes (Probabilities using dirichlet distribution). For the probabilities case you could return a dictionary of most likely and a separate dictionary of variances/stddev (or a single dict with pairs for values). To keep this sparse for non-observed outcomes, which for a prior of alpha=1 have MLE estimate of p_i=0 but a non-zero variance (and a non-zero est for p_i for others priors) you could have some sort of default value dict (i think there is something like this in python collections?).
Now if the scope of this PR is just to be updating the Probability node to compute standard deviation correctly then you can just update that node to have corrected API docs referring to beta distribution and update the calculation accordingly. The full Probabilities node could be added later if needed (Tomography in principle would use this data processor but at the moment has its own version without using the data processor classes)
| where :math:`\alpha_i = f_i + \theta_i`, :math:`\alpha_0 = \sum_{i=1}^K \alpha_i`, | ||
| :math:`\theta_i` is the prior distribution and :math:`f_i` is | ||
| the count number of the :math:`i`-th state out of :math:`K` measurable states. | ||
| For example, if one provides a 2 bit outcome label, i.e. two-qubit measurement, |
There was a problem hiding this comment.
I think these docs are getting a little too detailed with examples for API docs and getting more into user guide territory, which we should eventually be separating into its own section.
There was a problem hiding this comment.
I think these description is necessary to explain what is alpha_i. If you think saying alpha_i is a parameter of Dirichlet distribution is enough, probably these details can be removed (but anyways I don't think there is a place to write userguide of dirichlet distribution since this is not an experiment).
| """Initialize a counts to probability data conversion. | ||
|
|
||
| Args: | ||
| outcome: The bitstring for which to compute the probability which defaults to "1". |
There was a problem hiding this comment.
After getting to here I think the whole distribution stuff in the into is a bit confusion now. The Dirichlet distribution if for computing a multi-variate probability distribution, so for example converting observed counts into an estimate of a probability distribution over all possible outcomes (2^n). If it is for a binary estimate this should be a beta distribution (which is the special case of 2-outcome dirichlet distribution).
The way the description of this class is worded it should be something that converts a full counts dict into a full probabilities dict + std error dict since the bayesian update is for a full distribution on all outcomes, not a distribution for a single outcome. The difference between estimating individual probabilities as 2-outcome distributions vs all probabilities as 2^n outcome distribution will result in slight differences in variances and what they mean.
There was a problem hiding this comment.
I agree the documentation for the option is confusing, i.e. it uses multivariable distribution but distribution defaults to 2-outcome. I updated the documentation and removed the default value in 194568b
Co-authored-by: Christopher J. Wood <cjwood@us.ibm.com>
Update Probability docs string and release note
…ade_dirichlet_dist # Conflicts: # qiskit_experiments/library/calibration/analysis/drag_analysis.py # qiskit_experiments/library/calibration/fine_amplitude.py # test/calibration/experiments/test_fine_amplitude.py # test/calibration/test_update_library.py # test/data_processing/test_nodes.py
Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> Co-authored-by: Christopher J. Wood <cjwood@us.ibm.com>
* Mitigation experiment initial commit * Added mitigation analysis * Small fixes to ensure figures are generated * Linting * Adding tensored mitigation as parallel experiment * Changing method into class * Bug fixes * Restructuring to avoid reliance on composite experiment, and simplifying tensored experiment * Refactor mitigation experiment to have two experiment classes * RB Interleaved element fix (#399) * Slightly changing the way interleaved element is passed and used * Linting * Linting * Linting * Allow splitting of jobs for all backends (#402) * Allow splitting of jobs for all backends Allows splitting experiments containing more circuits than can be executed at once into multiple jobs for legacy backends and 3rd party backends that don't support job splitting automatically. * Update requirements.txt mpl req * Add test Also had to fix bug in FakeJob where the job id of the result and job didn't match which would lead to errors in the number of added jobs. * Fixup * Fix missing callback Fix missing callback call when all added data is non-job data * Add lock to add_data * Fix type hint for run_analysis * Update releasenotes/notes/job-splitting-775dc9aed9cf20c2.yaml Co-authored-by: Matthew Treinish <mtreinish@kortar.org> Co-authored-by: Matthew Treinish <mtreinish@kortar.org> * FineAmp without schedules (#420) * * FineAmp can now run without a schedule. * * Added test on gates. * * Made fine drag work without schedules. * Update qiskit_experiments/library/calibration/fine_drag.py * * Docstring * Update qiskit_experiments/library/calibration/fine_drag.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/calibration/fine_drag.py Co-authored-by: Will Shanks <wshaos@posteo.net> Co-authored-by: Will Shanks <wshaos@posteo.net> * Fix bug in curve_fit for sigma=None (#422) Setting `sigma=None` for curve_fit would raise an error from trying to call `np.isnan(None)`. This adds a check that sigma is not None first. * Fix bug in DbExperimentData._retrieve_data (#421) * Add analysis callback to ExperimentData (#407) * Add default pre-processing to curve analysis (#409) * add pre-processing to curve fit * black&lint * add reno * rb notebook update * update averaging method with shot number * revert RB analysis * update reno * fix test * revert rb notebook * fix documentation from comments Co-authored-by: Yael Ben-Haim <yaelbh@il.ibm.com> * add shots to data sort * fix bug * black * fix bug Co-authored-by: Yael Ben-Haim <yaelbh@il.ibm.com> * Improve calibration experiments (#251) Co-authored-by: Will Shanks <wshaos@posteo.net> Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> Co-authored-by: Christopher J. Wood <cjwood@us.ibm.com> * english (#429) * PR for saving and loading composite experiments (#364) Co-authored-by: Kevin Tian <kevin.tian@ibm.com> Co-authored-by: Christopher J. Wood <cjwood@us.ibm.com> * Bump terra to the most recent master (#426) * * Terra bump * * Constraints. * * Delete constraints. * Make verify_headers verify files in the test folder (#433) * Make verify_headers verify files in the test folder * made verify_headers nicer * lint * update tox.ini to run black and lint also for the tools folder * Fix bug with ExperimentData.load (#423) * * Fix issue 430 (#434) Co-authored-by: Yael Ben-Haim <yaelbh@il.ibm.com> * * Added loading bug fix and corresponding test. (#444) * * Added tearDown. (#449) * Adjust tomography doc strings to automatic template (#375) * tomography autotemplate doc * fix lint errors * fix indentation * add blank lines * small doc change * Update qpt_analysis.py * Update qpt_experiment.py * Update qst_analysis.py * lint docs fix * misc Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> Co-authored-by: knzwnao <knzwnao@jp.ibm.com> * Drag fit instability (#450) * * Exposed seed in mock iq backend. * Changed default bounds and initial p0 guess in drag analysis. * * Fix tests. * * Improve doc and black. * Amp cal refactor (#439) * * Added specializations. * Moved fine amp to characterization. * Refactored some tests. * * Added tests. * Added transpile options. * * Removed obsolete test. * Black * * Docs and lint. * * Docs and tests. * * Begining of NB reworking. * * Updated the tutorial. * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/calibration/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * * Documentation. * * Documentation. * * Added metadata hook in base class. * Added metadata in fine amp cal circuits. Co-authored-by: Will Shanks <wshaos@posteo.net> * Fix DB display for non-float values (#301) * Fix DB display for non-finite floats * Add safe JSON serialization of inf and NaN * Fix some issues with safe float and recusion * A few more fixes * Add string conversion for result display Add ability to display complex, list, and array results in result DB by converting to string. Currently this limits display to cases where the resulting string is < 60 characters. * Add tests for display conversion * Fix array2string conversion * Remove special handling for non float values Now only complex numbers are converted to strings, and any string values are uploaded to the database without checking their length (the service should do its own checking and truncation if required). For values that are not a float or string type, they are uploaded as a string of the class name "(cls)". * Fixup tests for renamed method * Remove unused import * Include safe nan handling for chisq Co-authored-by: Yael Ben-Haim <yaelbh@il.ibm.com> * remove double test (#454) Co-authored-by: Yael Ben-Haim <yaelbh@il.ibm.com> * Update computation of probability (#424) Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> Co-authored-by: Christopher J. Wood <cjwood@us.ibm.com> * Documentation patch for PR424 (#458) * Cleaned up composite_analysis.py (#443) * Hack for non-existing parent id (#461) * Remove ``experiment_data`` from ``BaseExperiment.run`` (#463) * Remove experiment_data for BaseExperiment.run to prevent adding additional job data to existing experiment using this method. Now all executions must return unique ExperimentData objects, which can still manually be combined using `add_data` if the user wants. * Add backend property to experiments (#462) Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> * Add ExperimentConfig dataclass (#469) * Half angle (#418) * * First draft of half angle calibration. * * inits and docstring. * * Added transpile options, reference and more doc. * * First draft of half angle. * * Docs and test * * removed transpile options (for a future PR). * extended test. * added analysis class. * * fix docs. * * Docstring * Update qiskit_experiments/library/characterization/half_angle.py Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> * * Added transpiler options for inst_map * Bumped terra to main * * ParameterRepr * * Calibration class * Black * Tests * * Improved doc. * Implemented update rule. * * Fixed update rule. * * Update for half angle cal. * * Bug fixes. * Tutorial clean-up. * * Black * * Test align to bug fix. * * Lint. * * Added comment on options. * Update qiskit_experiments/library/characterization/half_angle.py * Update qiskit_experiments/library/characterization/half_angle.py * Update qiskit_experiments/library/calibration/half_angle_cal.py * * Changed init arg order. * * refactor update rule. * * Black * Update qiskit_experiments/library/calibration/analysis/fine_half_angle_analysis.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/calibration/half_angle_cal.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/half_angle.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/half_angle.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update docs/tutorials/fine_calibrations.ipynb Co-authored-by: Will Shanks <wshaos@posteo.net> * * Doc. * * Decorators, and decorators. Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> Co-authored-by: Will Shanks <wshaos@posteo.net> * Rabi refactor (#466) * * Moved Rabi to characterization. * * Refactor EFRabi and tests accordingly. * Added tests for rough amp calibration. * Reworked init files and docs in them. * Added rough amplitude cal. * Moved mock rabi backend. * Removed amplitude update from updates. * * Black and lint. * * Docs * * Docs. * * Updated NB and caught some bugs. * * Lint and removed updater amplitude test as Amplitude no longer exists. * * Black * * Test lint * * Black. * * Removed dt info * * rabi_rate_12 * * Named tuple. * * Bug fix with options. * * Test fix after merge main. * * setting of transpile options and the config test. * Update qiskit_experiments/library/characterization/rabi.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update docs/tutorials/calibrating_armonk.ipynb Co-authored-by: Will Shanks <wshaos@posteo.net> Co-authored-by: Will Shanks <wshaos@posteo.net> * Add ``replace_results`` kwarg to ``BaseAnalysis.run`` (#464) * This fixes issue with re-analyzing experiment data when trying to save to the result database. Now if replace_results is True any previous analysis results will be cleared and replaced with the new results, while if False a copy (with a new experiment id) will be generated containing only the new results. * This change also requires a change that `BaseAnalysis.run` runs as an analysis callback, rather than just `BaseExperiment.run`. * Fix typos in t1/t2 experiments (#480) * T1 T2 analysis migration (#427) * analysis class migration * fix t1 test * black * fix conversion factor handling * update tutorials * bug fix * documentation fix * move some evaluation criteria from common analysis * remove conversion factor and unit from result metadata * keep conversion factor * remove osc_freq from initial guess * update conversion factor logic for init guess * lint * typo fix * Added 0/1 cals for fine sx amp (#483) * * Added 0/1 cals for fine sx amp. * Added dedicated class for fine X amp analysis. * * Aligned cal and characterization value. * Fixed tests. * Updated NB. * * Fix method redefine. * * Dropped negative bound on amp. * Fix output array shape of SVD data processing node (#476) * fix SVD shape * fix docs * fix comment * fix var name * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * comments Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Edge-case: fitting constant y values with decay analysis (#487) * Small fixes from recent PRs (#489) Fixes a couple bugs from recent PRs * set_backend has to be called last during initialization so that all instance attributes are created first in case they are used by _set_backend * block_for_results in CompositeExperimentData was not returning self like the super class does * BaseExperiment.run and BaseExperiment.run_analysis should return the output of Analysis.run / run_analysis in case a copy of the experiment data is created by the `replace_results` analysis kwarg. * Drag cal refactor (#473) * * Moved calibration.DragCal -> characterization.RoughDrag. * New cal class RoughDragCal. * Added test and refactored tests. * Adjusted inits. * * Default options. * * Black. * Amp. update fix. * * Removed Drag update library test as this is now redundent with RoughDragCal test. * * Removed Drag updater. * * Removed unused import. * * updated NB. * * Aligned tests to the gate naming. * * Tutorial NB. * * Config test. * * Args order and set options. * Ramsey refactor. (#485) * * Moved RamseyXY to characterization. * Added a cal version of the class. * * refactored RamseyXY. * * Test config. * Update qiskit_experiments/calibration_management/base_calibration_experiment.py Co-authored-by: Will Shanks <wshaos@posteo.net> * * Arg order in init. * * Removed updated and fixed tests. Co-authored-by: Will Shanks <wshaos@posteo.net> * Fix some typos in warnings (#493) * Fix some typos in warnings * Update qiskit_experiments/database_service/db_experiment_data.py * Update qiskit_experiments/database_service/db_experiment_data.py * Add child data support to ExperimentData (#451) * BaseExperiment to accept only a list of qubits (#431) Co-authored-by: Christopher J. Wood <cjwood@us.ibm.com> * Replace `str(uuid4())` with `uuid4().hex` (#492) * Revert "Replace `str(uuid4())` with `uuid4().hex` (#492)" (#501) This reverts commit f5da13c. * Fine drag cal refactor (#519) * * First draft of framework to save and rebuild calibrations from metadata. * * Moved FineDrag to characterization and created a calibration version of the experiment. * * Undo git merging issues. * * Fix merge issues. * * Lint * * Docs. * * Lint. * * Docs * * Docs. * Fix storing of component metadata in composite experiment (#510) Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> * Consolidate the analysis classes in characterization. (#523) * * Consolidated the analysis classes in characterization. * * Black. * Update qiskit_experiments/library/characterization/cr_hamiltonian.py Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> * * Removed ~ Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> * Add ``Settings`` mixin class (#520) Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> * Refactor where the calibration metadata is stored. (#524) * * refactor of where the calibration metadata is stored. * * Lint. * Improve JSON encoder and decoder (#470) * Move error about less than three points from T1 to DecayAnalysis (#490) * Move error about less than three points from T1 to DecayAnalysis * removed check also from decay * lint * Save-load test and bug fixes (#467) * Test counts in composite experiments (#506) * Bug fix: T1 and T2Ramsey don't run correctly on devices (#529) Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> * Recursive methods for adding and removing tags (#522) * wrote add_tags_recursive and remove_tag_recursive * docs * lint * Update qiskit_experiments/database_service/db_experiment_data.py Co-authored-by: Helena Zhang <Helena.Zhang@ibm.com> * release notes * fix method docs * fixed test * black Co-authored-by: Helena Zhang <Helena.Zhang@ibm.com> * Readout angle experiment (#525) * Readout angle experiment * readout angle files * removed fix_class_docs * bug fix in composite save * removed debug prints * moved location of analysis file * removed the parallel test * black * lint * black * lint * black * update init file * docs * release notes * addressing review comments * Update ``ExperimentData.analysis_results`` to be blocking by default (#486) * Serialize the basis gate library (#539) * * Serialization support for the BasisGateLibrary. * Update qiskit_experiments/calibration_management/basis_gate_library.py Co-authored-by: Will Shanks <wshaos@posteo.net> * * Internal clean-up of basis gate library. * * Warning message. * * Hashing of basis gate library. * * dict(...) -> .copy() * * Added a test for raising a user warning on different hash values. * * Test docs. * * Refactored schedule building. * * Made test robust. * * Test fix and cleaner implementation. * * removed use_drag. * * Test fix. Co-authored-by: Will Shanks <wshaos@posteo.net> * Data processor with uncertainties package (#481) * fix SVD shape * fix docs * fix comment * fix var name * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * comments * update except for SVD * update note tests * fix processor logic * documentation * lint * add reno use np.testing * fix test * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * add description for correlation * remove typehint for trainable node * update return doc * add type check * detail for full array * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * add comment * fix document * black * Update qiskit_experiments/data_processing/__init__.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * update docs * update docs * restrict count validation * update return type of data processor * lint * add svd test * update average node * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * add comment * add handling for level2 memory * black * lint Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * ignore assigning-non-slot (#553) * Clean-up of Base calibration experiments (#547) * * Removed unused methods and added some validation. * * Moved validation to after init. * * Moved validation to before super().__init__ * Removed validate schedules. * * Fix validation. * Change config from property to method (#555) * Add StoreInitArgs mixin (#554) * Start of BaseAnalysis refactor (#517) * Analysis refactor part 2 (#556) * small fixes * Change to deprecated analysis class usage * Analysis returns mitigator object instead of matrices * Refactoring mitigation experiment * Refactoring mitigation analysis * Linting * Linting * Linting * Linting * Mitigation tutorial notebook * Mitigation tutorial notebook update * Mitigation experiment tests * Linting * Changes to visualization * Bugfix * Linting * Avoiding failing test due to small bug in Terra * Linting * Linting * Refactoring * Tutorial texts * Plot fix * Release note Co-authored-by: Christopher J. Wood <cjwood@us.ibm.com> Co-authored-by: Matthew Treinish <mtreinish@kortar.org> Co-authored-by: Daniel Egger <38065505+eggerdj@users.noreply.github.com> Co-authored-by: Will Shanks <wshaos@posteo.net> Co-authored-by: Naoki Kanazawa <knzwnao@jp.ibm.com> Co-authored-by: Yael Ben-Haim <yaelbh@il.ibm.com> Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> Co-authored-by: Kevin Tian <kevin.tian@ibm.com> Co-authored-by: dekelmeirom <33314493+dekelmeirom@users.noreply.github.com> Co-authored-by: Will Shanks <willshanks@us.ibm.com> Co-authored-by: Helena Zhang <Helena.Zhang@ibm.com>
* Mitigation experiment initial commit * Added mitigation analysis * Small fixes to ensure figures are generated * Linting * Adding tensored mitigation as parallel experiment * Changing method into class * Bug fixes * Restructuring to avoid reliance on composite experiment, and simplifying tensored experiment * Refactor mitigation experiment to have two experiment classes * RB Interleaved element fix (qiskit-community#399) * Slightly changing the way interleaved element is passed and used * Linting * Linting * Linting * Allow splitting of jobs for all backends (qiskit-community#402) * Allow splitting of jobs for all backends Allows splitting experiments containing more circuits than can be executed at once into multiple jobs for legacy backends and 3rd party backends that don't support job splitting automatically. * Update requirements.txt mpl req * Add test Also had to fix bug in FakeJob where the job id of the result and job didn't match which would lead to errors in the number of added jobs. * Fixup * Fix missing callback Fix missing callback call when all added data is non-job data * Add lock to add_data * Fix type hint for run_analysis * Update releasenotes/notes/job-splitting-775dc9aed9cf20c2.yaml Co-authored-by: Matthew Treinish <mtreinish@kortar.org> Co-authored-by: Matthew Treinish <mtreinish@kortar.org> * FineAmp without schedules (qiskit-community#420) * * FineAmp can now run without a schedule. * * Added test on gates. * * Made fine drag work without schedules. * Update qiskit_experiments/library/calibration/fine_drag.py * * Docstring * Update qiskit_experiments/library/calibration/fine_drag.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/calibration/fine_drag.py Co-authored-by: Will Shanks <wshaos@posteo.net> Co-authored-by: Will Shanks <wshaos@posteo.net> * Fix bug in curve_fit for sigma=None (qiskit-community#422) Setting `sigma=None` for curve_fit would raise an error from trying to call `np.isnan(None)`. This adds a check that sigma is not None first. * Fix bug in DbExperimentData._retrieve_data (qiskit-community#421) * Add analysis callback to ExperimentData (qiskit-community#407) * Add default pre-processing to curve analysis (qiskit-community#409) * add pre-processing to curve fit * black&lint * add reno * rb notebook update * update averaging method with shot number * revert RB analysis * update reno * fix test * revert rb notebook * fix documentation from comments Co-authored-by: Yael Ben-Haim <yaelbh@il.ibm.com> * add shots to data sort * fix bug * black * fix bug Co-authored-by: Yael Ben-Haim <yaelbh@il.ibm.com> * Improve calibration experiments (qiskit-community#251) Co-authored-by: Will Shanks <wshaos@posteo.net> Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> Co-authored-by: Christopher J. Wood <cjwood@us.ibm.com> * english (qiskit-community#429) * PR for saving and loading composite experiments (qiskit-community#364) Co-authored-by: Kevin Tian <kevin.tian@ibm.com> Co-authored-by: Christopher J. Wood <cjwood@us.ibm.com> * Bump terra to the most recent master (qiskit-community#426) * * Terra bump * * Constraints. * * Delete constraints. * Make verify_headers verify files in the test folder (qiskit-community#433) * Make verify_headers verify files in the test folder * made verify_headers nicer * lint * update tox.ini to run black and lint also for the tools folder * Fix bug with ExperimentData.load (qiskit-community#423) * * Fix issue 430 (qiskit-community#434) Co-authored-by: Yael Ben-Haim <yaelbh@il.ibm.com> * * Added loading bug fix and corresponding test. (qiskit-community#444) * * Added tearDown. (qiskit-community#449) * Adjust tomography doc strings to automatic template (qiskit-community#375) * tomography autotemplate doc * fix lint errors * fix indentation * add blank lines * small doc change * Update qpt_analysis.py * Update qpt_experiment.py * Update qst_analysis.py * lint docs fix * misc Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> Co-authored-by: knzwnao <knzwnao@jp.ibm.com> * Drag fit instability (qiskit-community#450) * * Exposed seed in mock iq backend. * Changed default bounds and initial p0 guess in drag analysis. * * Fix tests. * * Improve doc and black. * Amp cal refactor (qiskit-community#439) * * Added specializations. * Moved fine amp to characterization. * Refactored some tests. * * Added tests. * Added transpile options. * * Removed obsolete test. * Black * * Docs and lint. * * Docs and tests. * * Begining of NB reworking. * * Updated the tutorial. * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/calibration/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * * Documentation. * * Documentation. * * Added metadata hook in base class. * Added metadata in fine amp cal circuits. Co-authored-by: Will Shanks <wshaos@posteo.net> * Fix DB display for non-float values (qiskit-community#301) * Fix DB display for non-finite floats * Add safe JSON serialization of inf and NaN * Fix some issues with safe float and recusion * A few more fixes * Add string conversion for result display Add ability to display complex, list, and array results in result DB by converting to string. Currently this limits display to cases where the resulting string is < 60 characters. * Add tests for display conversion * Fix array2string conversion * Remove special handling for non float values Now only complex numbers are converted to strings, and any string values are uploaded to the database without checking their length (the service should do its own checking and truncation if required). For values that are not a float or string type, they are uploaded as a string of the class name "(cls)". * Fixup tests for renamed method * Remove unused import * Include safe nan handling for chisq Co-authored-by: Yael Ben-Haim <yaelbh@il.ibm.com> * remove double test (qiskit-community#454) Co-authored-by: Yael Ben-Haim <yaelbh@il.ibm.com> * Update computation of probability (qiskit-community#424) Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> Co-authored-by: Christopher J. Wood <cjwood@us.ibm.com> * Documentation patch for PR424 (qiskit-community#458) * Cleaned up composite_analysis.py (qiskit-community#443) * Hack for non-existing parent id (qiskit-community#461) * Remove ``experiment_data`` from ``BaseExperiment.run`` (qiskit-community#463) * Remove experiment_data for BaseExperiment.run to prevent adding additional job data to existing experiment using this method. Now all executions must return unique ExperimentData objects, which can still manually be combined using `add_data` if the user wants. * Add backend property to experiments (qiskit-community#462) Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> * Add ExperimentConfig dataclass (qiskit-community#469) * Half angle (qiskit-community#418) * * First draft of half angle calibration. * * inits and docstring. * * Added transpile options, reference and more doc. * * First draft of half angle. * * Docs and test * * removed transpile options (for a future PR). * extended test. * added analysis class. * * fix docs. * * Docstring * Update qiskit_experiments/library/characterization/half_angle.py Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> * * Added transpiler options for inst_map * Bumped terra to main * * ParameterRepr * * Calibration class * Black * Tests * * Improved doc. * Implemented update rule. * * Fixed update rule. * * Update for half angle cal. * * Bug fixes. * Tutorial clean-up. * * Black * * Test align to bug fix. * * Lint. * * Added comment on options. * Update qiskit_experiments/library/characterization/half_angle.py * Update qiskit_experiments/library/characterization/half_angle.py * Update qiskit_experiments/library/calibration/half_angle_cal.py * * Changed init arg order. * * refactor update rule. * * Black * Update qiskit_experiments/library/calibration/analysis/fine_half_angle_analysis.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/calibration/half_angle_cal.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/half_angle.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/half_angle.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update docs/tutorials/fine_calibrations.ipynb Co-authored-by: Will Shanks <wshaos@posteo.net> * * Doc. * * Decorators, and decorators. Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> Co-authored-by: Will Shanks <wshaos@posteo.net> * Rabi refactor (qiskit-community#466) * * Moved Rabi to characterization. * * Refactor EFRabi and tests accordingly. * Added tests for rough amp calibration. * Reworked init files and docs in them. * Added rough amplitude cal. * Moved mock rabi backend. * Removed amplitude update from updates. * * Black and lint. * * Docs * * Docs. * * Updated NB and caught some bugs. * * Lint and removed updater amplitude test as Amplitude no longer exists. * * Black * * Test lint * * Black. * * Removed dt info * * rabi_rate_12 * * Named tuple. * * Bug fix with options. * * Test fix after merge main. * * setting of transpile options and the config test. * Update qiskit_experiments/library/characterization/rabi.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update docs/tutorials/calibrating_armonk.ipynb Co-authored-by: Will Shanks <wshaos@posteo.net> Co-authored-by: Will Shanks <wshaos@posteo.net> * Add ``replace_results`` kwarg to ``BaseAnalysis.run`` (qiskit-community#464) * This fixes issue with re-analyzing experiment data when trying to save to the result database. Now if replace_results is True any previous analysis results will be cleared and replaced with the new results, while if False a copy (with a new experiment id) will be generated containing only the new results. * This change also requires a change that `BaseAnalysis.run` runs as an analysis callback, rather than just `BaseExperiment.run`. * Fix typos in t1/t2 experiments (qiskit-community#480) * T1 T2 analysis migration (qiskit-community#427) * analysis class migration * fix t1 test * black * fix conversion factor handling * update tutorials * bug fix * documentation fix * move some evaluation criteria from common analysis * remove conversion factor and unit from result metadata * keep conversion factor * remove osc_freq from initial guess * update conversion factor logic for init guess * lint * typo fix * Added 0/1 cals for fine sx amp (qiskit-community#483) * * Added 0/1 cals for fine sx amp. * Added dedicated class for fine X amp analysis. * * Aligned cal and characterization value. * Fixed tests. * Updated NB. * * Fix method redefine. * * Dropped negative bound on amp. * Fix output array shape of SVD data processing node (qiskit-community#476) * fix SVD shape * fix docs * fix comment * fix var name * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * comments Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Edge-case: fitting constant y values with decay analysis (qiskit-community#487) * Small fixes from recent PRs (qiskit-community#489) Fixes a couple bugs from recent PRs * set_backend has to be called last during initialization so that all instance attributes are created first in case they are used by _set_backend * block_for_results in CompositeExperimentData was not returning self like the super class does * BaseExperiment.run and BaseExperiment.run_analysis should return the output of Analysis.run / run_analysis in case a copy of the experiment data is created by the `replace_results` analysis kwarg. * Drag cal refactor (qiskit-community#473) * * Moved calibration.DragCal -> characterization.RoughDrag. * New cal class RoughDragCal. * Added test and refactored tests. * Adjusted inits. * * Default options. * * Black. * Amp. update fix. * * Removed Drag update library test as this is now redundent with RoughDragCal test. * * Removed Drag updater. * * Removed unused import. * * updated NB. * * Aligned tests to the gate naming. * * Tutorial NB. * * Config test. * * Args order and set options. * Ramsey refactor. (qiskit-community#485) * * Moved RamseyXY to characterization. * Added a cal version of the class. * * refactored RamseyXY. * * Test config. * Update qiskit_experiments/calibration_management/base_calibration_experiment.py Co-authored-by: Will Shanks <wshaos@posteo.net> * * Arg order in init. * * Removed updated and fixed tests. Co-authored-by: Will Shanks <wshaos@posteo.net> * Fix some typos in warnings (qiskit-community#493) * Fix some typos in warnings * Update qiskit_experiments/database_service/db_experiment_data.py * Update qiskit_experiments/database_service/db_experiment_data.py * Add child data support to ExperimentData (qiskit-community#451) * BaseExperiment to accept only a list of qubits (qiskit-community#431) Co-authored-by: Christopher J. Wood <cjwood@us.ibm.com> * Replace `str(uuid4())` with `uuid4().hex` (qiskit-community#492) * Revert "Replace `str(uuid4())` with `uuid4().hex` (qiskit-community#492)" (qiskit-community#501) This reverts commit f5da13c. * Fine drag cal refactor (qiskit-community#519) * * First draft of framework to save and rebuild calibrations from metadata. * * Moved FineDrag to characterization and created a calibration version of the experiment. * * Undo git merging issues. * * Fix merge issues. * * Lint * * Docs. * * Lint. * * Docs * * Docs. * Fix storing of component metadata in composite experiment (qiskit-community#510) Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> * Consolidate the analysis classes in characterization. (qiskit-community#523) * * Consolidated the analysis classes in characterization. * * Black. * Update qiskit_experiments/library/characterization/cr_hamiltonian.py Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> * * Removed ~ Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> * Add ``Settings`` mixin class (qiskit-community#520) Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> * Refactor where the calibration metadata is stored. (qiskit-community#524) * * refactor of where the calibration metadata is stored. * * Lint. * Improve JSON encoder and decoder (qiskit-community#470) * Move error about less than three points from T1 to DecayAnalysis (qiskit-community#490) * Move error about less than three points from T1 to DecayAnalysis * removed check also from decay * lint * Save-load test and bug fixes (qiskit-community#467) * Test counts in composite experiments (qiskit-community#506) * Bug fix: T1 and T2Ramsey don't run correctly on devices (qiskit-community#529) Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> * Recursive methods for adding and removing tags (qiskit-community#522) * wrote add_tags_recursive and remove_tag_recursive * docs * lint * Update qiskit_experiments/database_service/db_experiment_data.py Co-authored-by: Helena Zhang <Helena.Zhang@ibm.com> * release notes * fix method docs * fixed test * black Co-authored-by: Helena Zhang <Helena.Zhang@ibm.com> * Readout angle experiment (qiskit-community#525) * Readout angle experiment * readout angle files * removed fix_class_docs * bug fix in composite save * removed debug prints * moved location of analysis file * removed the parallel test * black * lint * black * lint * black * update init file * docs * release notes * addressing review comments * Update ``ExperimentData.analysis_results`` to be blocking by default (qiskit-community#486) * Serialize the basis gate library (qiskit-community#539) * * Serialization support for the BasisGateLibrary. * Update qiskit_experiments/calibration_management/basis_gate_library.py Co-authored-by: Will Shanks <wshaos@posteo.net> * * Internal clean-up of basis gate library. * * Warning message. * * Hashing of basis gate library. * * dict(...) -> .copy() * * Added a test for raising a user warning on different hash values. * * Test docs. * * Refactored schedule building. * * Made test robust. * * Test fix and cleaner implementation. * * removed use_drag. * * Test fix. Co-authored-by: Will Shanks <wshaos@posteo.net> * Data processor with uncertainties package (qiskit-community#481) * fix SVD shape * fix docs * fix comment * fix var name * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * comments * update except for SVD * update note tests * fix processor logic * documentation * lint * add reno use np.testing * fix test * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * add description for correlation * remove typehint for trainable node * update return doc * add type check * detail for full array * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * add comment * fix document * black * Update qiskit_experiments/data_processing/__init__.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * update docs * update docs * restrict count validation * update return type of data processor * lint * add svd test * update average node * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * add comment * add handling for level2 memory * black * lint Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * ignore assigning-non-slot (qiskit-community#553) * Clean-up of Base calibration experiments (qiskit-community#547) * * Removed unused methods and added some validation. * * Moved validation to after init. * * Moved validation to before super().__init__ * Removed validate schedules. * * Fix validation. * Change config from property to method (qiskit-community#555) * Add StoreInitArgs mixin (qiskit-community#554) * Start of BaseAnalysis refactor (qiskit-community#517) * Analysis refactor part 2 (qiskit-community#556) * small fixes * Change to deprecated analysis class usage * Analysis returns mitigator object instead of matrices * Refactoring mitigation experiment * Refactoring mitigation analysis * Linting * Linting * Linting * Linting * Mitigation tutorial notebook * Mitigation tutorial notebook update * Mitigation experiment tests * Linting * Changes to visualization * Bugfix * Linting * Avoiding failing test due to small bug in Terra * Linting * Linting * Refactoring * Tutorial texts * Plot fix * Release note Co-authored-by: Christopher J. Wood <cjwood@us.ibm.com> Co-authored-by: Matthew Treinish <mtreinish@kortar.org> Co-authored-by: Daniel Egger <38065505+eggerdj@users.noreply.github.com> Co-authored-by: Will Shanks <wshaos@posteo.net> Co-authored-by: Naoki Kanazawa <knzwnao@jp.ibm.com> Co-authored-by: Yael Ben-Haim <yaelbh@il.ibm.com> Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> Co-authored-by: Kevin Tian <kevin.tian@ibm.com> Co-authored-by: dekelmeirom <33314493+dekelmeirom@users.noreply.github.com> Co-authored-by: Will Shanks <willshanks@us.ibm.com> Co-authored-by: Helena Zhang <Helena.Zhang@ibm.com>
Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> Co-authored-by: Christopher J. Wood <cjwood@us.ibm.com>
* Mitigation experiment initial commit * Added mitigation analysis * Small fixes to ensure figures are generated * Linting * Adding tensored mitigation as parallel experiment * Changing method into class * Bug fixes * Restructuring to avoid reliance on composite experiment, and simplifying tensored experiment * Refactor mitigation experiment to have two experiment classes * RB Interleaved element fix (qiskit-community#399) * Slightly changing the way interleaved element is passed and used * Linting * Linting * Linting * Allow splitting of jobs for all backends (qiskit-community#402) * Allow splitting of jobs for all backends Allows splitting experiments containing more circuits than can be executed at once into multiple jobs for legacy backends and 3rd party backends that don't support job splitting automatically. * Update requirements.txt mpl req * Add test Also had to fix bug in FakeJob where the job id of the result and job didn't match which would lead to errors in the number of added jobs. * Fixup * Fix missing callback Fix missing callback call when all added data is non-job data * Add lock to add_data * Fix type hint for run_analysis * Update releasenotes/notes/job-splitting-775dc9aed9cf20c2.yaml Co-authored-by: Matthew Treinish <mtreinish@kortar.org> Co-authored-by: Matthew Treinish <mtreinish@kortar.org> * FineAmp without schedules (qiskit-community#420) * * FineAmp can now run without a schedule. * * Added test on gates. * * Made fine drag work without schedules. * Update qiskit_experiments/library/calibration/fine_drag.py * * Docstring * Update qiskit_experiments/library/calibration/fine_drag.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/calibration/fine_drag.py Co-authored-by: Will Shanks <wshaos@posteo.net> Co-authored-by: Will Shanks <wshaos@posteo.net> * Fix bug in curve_fit for sigma=None (qiskit-community#422) Setting `sigma=None` for curve_fit would raise an error from trying to call `np.isnan(None)`. This adds a check that sigma is not None first. * Fix bug in DbExperimentData._retrieve_data (qiskit-community#421) * Add analysis callback to ExperimentData (qiskit-community#407) * Add default pre-processing to curve analysis (qiskit-community#409) * add pre-processing to curve fit * black&lint * add reno * rb notebook update * update averaging method with shot number * revert RB analysis * update reno * fix test * revert rb notebook * fix documentation from comments Co-authored-by: Yael Ben-Haim <yaelbh@il.ibm.com> * add shots to data sort * fix bug * black * fix bug Co-authored-by: Yael Ben-Haim <yaelbh@il.ibm.com> * Improve calibration experiments (qiskit-community#251) Co-authored-by: Will Shanks <wshaos@posteo.net> Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> Co-authored-by: Christopher J. Wood <cjwood@us.ibm.com> * english (qiskit-community#429) * PR for saving and loading composite experiments (qiskit-community#364) Co-authored-by: Kevin Tian <kevin.tian@ibm.com> Co-authored-by: Christopher J. Wood <cjwood@us.ibm.com> * Bump terra to the most recent master (qiskit-community#426) * * Terra bump * * Constraints. * * Delete constraints. * Make verify_headers verify files in the test folder (qiskit-community#433) * Make verify_headers verify files in the test folder * made verify_headers nicer * lint * update tox.ini to run black and lint also for the tools folder * Fix bug with ExperimentData.load (qiskit-community#423) * * Fix issue 430 (qiskit-community#434) Co-authored-by: Yael Ben-Haim <yaelbh@il.ibm.com> * * Added loading bug fix and corresponding test. (qiskit-community#444) * * Added tearDown. (qiskit-community#449) * Adjust tomography doc strings to automatic template (qiskit-community#375) * tomography autotemplate doc * fix lint errors * fix indentation * add blank lines * small doc change * Update qpt_analysis.py * Update qpt_experiment.py * Update qst_analysis.py * lint docs fix * misc Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> Co-authored-by: knzwnao <knzwnao@jp.ibm.com> * Drag fit instability (qiskit-community#450) * * Exposed seed in mock iq backend. * Changed default bounds and initial p0 guess in drag analysis. * * Fix tests. * * Improve doc and black. * Amp cal refactor (qiskit-community#439) * * Added specializations. * Moved fine amp to characterization. * Refactored some tests. * * Added tests. * Added transpile options. * * Removed obsolete test. * Black * * Docs and lint. * * Docs and tests. * * Begining of NB reworking. * * Updated the tutorial. * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/calibration/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <wshaos@posteo.net> * * Documentation. * * Documentation. * * Added metadata hook in base class. * Added metadata in fine amp cal circuits. Co-authored-by: Will Shanks <wshaos@posteo.net> * Fix DB display for non-float values (qiskit-community#301) * Fix DB display for non-finite floats * Add safe JSON serialization of inf and NaN * Fix some issues with safe float and recusion * A few more fixes * Add string conversion for result display Add ability to display complex, list, and array results in result DB by converting to string. Currently this limits display to cases where the resulting string is < 60 characters. * Add tests for display conversion * Fix array2string conversion * Remove special handling for non float values Now only complex numbers are converted to strings, and any string values are uploaded to the database without checking their length (the service should do its own checking and truncation if required). For values that are not a float or string type, they are uploaded as a string of the class name "(cls)". * Fixup tests for renamed method * Remove unused import * Include safe nan handling for chisq Co-authored-by: Yael Ben-Haim <yaelbh@il.ibm.com> * remove double test (qiskit-community#454) Co-authored-by: Yael Ben-Haim <yaelbh@il.ibm.com> * Update computation of probability (qiskit-community#424) Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> Co-authored-by: Christopher J. Wood <cjwood@us.ibm.com> * Documentation patch for PR424 (qiskit-community#458) * Cleaned up composite_analysis.py (qiskit-community#443) * Hack for non-existing parent id (qiskit-community#461) * Remove ``experiment_data`` from ``BaseExperiment.run`` (qiskit-community#463) * Remove experiment_data for BaseExperiment.run to prevent adding additional job data to existing experiment using this method. Now all executions must return unique ExperimentData objects, which can still manually be combined using `add_data` if the user wants. * Add backend property to experiments (qiskit-community#462) Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> * Add ExperimentConfig dataclass (qiskit-community#469) * Half angle (qiskit-community#418) * * First draft of half angle calibration. * * inits and docstring. * * Added transpile options, reference and more doc. * * First draft of half angle. * * Docs and test * * removed transpile options (for a future PR). * extended test. * added analysis class. * * fix docs. * * Docstring * Update qiskit_experiments/library/characterization/half_angle.py Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> * * Added transpiler options for inst_map * Bumped terra to main * * ParameterRepr * * Calibration class * Black * Tests * * Improved doc. * Implemented update rule. * * Fixed update rule. * * Update for half angle cal. * * Bug fixes. * Tutorial clean-up. * * Black * * Test align to bug fix. * * Lint. * * Added comment on options. * Update qiskit_experiments/library/characterization/half_angle.py * Update qiskit_experiments/library/characterization/half_angle.py * Update qiskit_experiments/library/calibration/half_angle_cal.py * * Changed init arg order. * * refactor update rule. * * Black * Update qiskit_experiments/library/calibration/analysis/fine_half_angle_analysis.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/calibration/half_angle_cal.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/half_angle.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update qiskit_experiments/library/characterization/half_angle.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update docs/tutorials/fine_calibrations.ipynb Co-authored-by: Will Shanks <wshaos@posteo.net> * * Doc. * * Decorators, and decorators. Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> Co-authored-by: Will Shanks <wshaos@posteo.net> * Rabi refactor (qiskit-community#466) * * Moved Rabi to characterization. * * Refactor EFRabi and tests accordingly. * Added tests for rough amp calibration. * Reworked init files and docs in them. * Added rough amplitude cal. * Moved mock rabi backend. * Removed amplitude update from updates. * * Black and lint. * * Docs * * Docs. * * Updated NB and caught some bugs. * * Lint and removed updater amplitude test as Amplitude no longer exists. * * Black * * Test lint * * Black. * * Removed dt info * * rabi_rate_12 * * Named tuple. * * Bug fix with options. * * Test fix after merge main. * * setting of transpile options and the config test. * Update qiskit_experiments/library/characterization/rabi.py Co-authored-by: Will Shanks <wshaos@posteo.net> * Update docs/tutorials/calibrating_armonk.ipynb Co-authored-by: Will Shanks <wshaos@posteo.net> Co-authored-by: Will Shanks <wshaos@posteo.net> * Add ``replace_results`` kwarg to ``BaseAnalysis.run`` (qiskit-community#464) * This fixes issue with re-analyzing experiment data when trying to save to the result database. Now if replace_results is True any previous analysis results will be cleared and replaced with the new results, while if False a copy (with a new experiment id) will be generated containing only the new results. * This change also requires a change that `BaseAnalysis.run` runs as an analysis callback, rather than just `BaseExperiment.run`. * Fix typos in t1/t2 experiments (qiskit-community#480) * T1 T2 analysis migration (qiskit-community#427) * analysis class migration * fix t1 test * black * fix conversion factor handling * update tutorials * bug fix * documentation fix * move some evaluation criteria from common analysis * remove conversion factor and unit from result metadata * keep conversion factor * remove osc_freq from initial guess * update conversion factor logic for init guess * lint * typo fix * Added 0/1 cals for fine sx amp (qiskit-community#483) * * Added 0/1 cals for fine sx amp. * Added dedicated class for fine X amp analysis. * * Aligned cal and characterization value. * Fixed tests. * Updated NB. * * Fix method redefine. * * Dropped negative bound on amp. * Fix output array shape of SVD data processing node (qiskit-community#476) * fix SVD shape * fix docs * fix comment * fix var name * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * comments Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Edge-case: fitting constant y values with decay analysis (qiskit-community#487) * Small fixes from recent PRs (qiskit-community#489) Fixes a couple bugs from recent PRs * set_backend has to be called last during initialization so that all instance attributes are created first in case they are used by _set_backend * block_for_results in CompositeExperimentData was not returning self like the super class does * BaseExperiment.run and BaseExperiment.run_analysis should return the output of Analysis.run / run_analysis in case a copy of the experiment data is created by the `replace_results` analysis kwarg. * Drag cal refactor (qiskit-community#473) * * Moved calibration.DragCal -> characterization.RoughDrag. * New cal class RoughDragCal. * Added test and refactored tests. * Adjusted inits. * * Default options. * * Black. * Amp. update fix. * * Removed Drag update library test as this is now redundent with RoughDragCal test. * * Removed Drag updater. * * Removed unused import. * * updated NB. * * Aligned tests to the gate naming. * * Tutorial NB. * * Config test. * * Args order and set options. * Ramsey refactor. (qiskit-community#485) * * Moved RamseyXY to characterization. * Added a cal version of the class. * * refactored RamseyXY. * * Test config. * Update qiskit_experiments/calibration_management/base_calibration_experiment.py Co-authored-by: Will Shanks <wshaos@posteo.net> * * Arg order in init. * * Removed updated and fixed tests. Co-authored-by: Will Shanks <wshaos@posteo.net> * Fix some typos in warnings (qiskit-community#493) * Fix some typos in warnings * Update qiskit_experiments/database_service/db_experiment_data.py * Update qiskit_experiments/database_service/db_experiment_data.py * Add child data support to ExperimentData (qiskit-community#451) * BaseExperiment to accept only a list of qubits (qiskit-community#431) Co-authored-by: Christopher J. Wood <cjwood@us.ibm.com> * Replace `str(uuid4())` with `uuid4().hex` (qiskit-community#492) * Revert "Replace `str(uuid4())` with `uuid4().hex` (qiskit-community#492)" (qiskit-community#501) This reverts commit f5da13c. * Fine drag cal refactor (qiskit-community#519) * * First draft of framework to save and rebuild calibrations from metadata. * * Moved FineDrag to characterization and created a calibration version of the experiment. * * Undo git merging issues. * * Fix merge issues. * * Lint * * Docs. * * Lint. * * Docs * * Docs. * Fix storing of component metadata in composite experiment (qiskit-community#510) Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> * Consolidate the analysis classes in characterization. (qiskit-community#523) * * Consolidated the analysis classes in characterization. * * Black. * Update qiskit_experiments/library/characterization/cr_hamiltonian.py Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> * * Removed ~ Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> * Add ``Settings`` mixin class (qiskit-community#520) Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> * Refactor where the calibration metadata is stored. (qiskit-community#524) * * refactor of where the calibration metadata is stored. * * Lint. * Improve JSON encoder and decoder (qiskit-community#470) * Move error about less than three points from T1 to DecayAnalysis (qiskit-community#490) * Move error about less than three points from T1 to DecayAnalysis * removed check also from decay * lint * Save-load test and bug fixes (qiskit-community#467) * Test counts in composite experiments (qiskit-community#506) * Bug fix: T1 and T2Ramsey don't run correctly on devices (qiskit-community#529) Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> * Recursive methods for adding and removing tags (qiskit-community#522) * wrote add_tags_recursive and remove_tag_recursive * docs * lint * Update qiskit_experiments/database_service/db_experiment_data.py Co-authored-by: Helena Zhang <Helena.Zhang@ibm.com> * release notes * fix method docs * fixed test * black Co-authored-by: Helena Zhang <Helena.Zhang@ibm.com> * Readout angle experiment (qiskit-community#525) * Readout angle experiment * readout angle files * removed fix_class_docs * bug fix in composite save * removed debug prints * moved location of analysis file * removed the parallel test * black * lint * black * lint * black * update init file * docs * release notes * addressing review comments * Update ``ExperimentData.analysis_results`` to be blocking by default (qiskit-community#486) * Serialize the basis gate library (qiskit-community#539) * * Serialization support for the BasisGateLibrary. * Update qiskit_experiments/calibration_management/basis_gate_library.py Co-authored-by: Will Shanks <wshaos@posteo.net> * * Internal clean-up of basis gate library. * * Warning message. * * Hashing of basis gate library. * * dict(...) -> .copy() * * Added a test for raising a user warning on different hash values. * * Test docs. * * Refactored schedule building. * * Made test robust. * * Test fix and cleaner implementation. * * removed use_drag. * * Test fix. Co-authored-by: Will Shanks <wshaos@posteo.net> * Data processor with uncertainties package (qiskit-community#481) * fix SVD shape * fix docs * fix comment * fix var name * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * comments * update except for SVD * update note tests * fix processor logic * documentation * lint * add reno use np.testing * fix test * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * add description for correlation * remove typehint for trainable node * update return doc * add type check * detail for full array * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * add comment * fix document * black * Update qiskit_experiments/data_processing/__init__.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * update docs * update docs * restrict count validation * update return type of data processor * lint * add svd test * update average node * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * add comment * add handling for level2 memory * black * lint Co-authored-by: Daniel J. Egger <38065505+eggerdj@users.noreply.github.com> * ignore assigning-non-slot (qiskit-community#553) * Clean-up of Base calibration experiments (qiskit-community#547) * * Removed unused methods and added some validation. * * Moved validation to after init. * * Moved validation to before super().__init__ * Removed validate schedules. * * Fix validation. * Change config from property to method (qiskit-community#555) * Add StoreInitArgs mixin (qiskit-community#554) * Start of BaseAnalysis refactor (qiskit-community#517) * Analysis refactor part 2 (qiskit-community#556) * small fixes * Change to deprecated analysis class usage * Analysis returns mitigator object instead of matrices * Refactoring mitigation experiment * Refactoring mitigation analysis * Linting * Linting * Linting * Linting * Mitigation tutorial notebook * Mitigation tutorial notebook update * Mitigation experiment tests * Linting * Changes to visualization * Bugfix * Linting * Avoiding failing test due to small bug in Terra * Linting * Linting * Refactoring * Tutorial texts * Plot fix * Release note Co-authored-by: Christopher J. Wood <cjwood@us.ibm.com> Co-authored-by: Matthew Treinish <mtreinish@kortar.org> Co-authored-by: Daniel Egger <38065505+eggerdj@users.noreply.github.com> Co-authored-by: Will Shanks <wshaos@posteo.net> Co-authored-by: Naoki Kanazawa <knzwnao@jp.ibm.com> Co-authored-by: Yael Ben-Haim <yaelbh@il.ibm.com> Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> Co-authored-by: Kevin Tian <kevin.tian@ibm.com> Co-authored-by: dekelmeirom <33314493+dekelmeirom@users.noreply.github.com> Co-authored-by: Will Shanks <willshanks@us.ibm.com> Co-authored-by: Helena Zhang <Helena.Zhang@ibm.com>
Summary
As suggested by @chriseclectic and @oliverdial, new data processor node to compute probability from count dict by assuming the Dirichlet distribution is added. Conventional
Probabilitynode will be continuously supported but default node is replaced withDirichletProbability.Details and comments
This change broke some unittests since their initial guess were really sensitive to the probability and sigma. The guess functions of
DragCalAnalysisandErrorAmplificationAnalysishave been upgraded to be more robust, and the error tolerance of the CR Hamiltonian tomography unittest has been relaxed from 1 kHz to 20 kHz (CR Hamiltonian tomography is especially sensitive to probability).