-
Notifications
You must be signed in to change notification settings - Fork 127
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
Data processor with uncertainties package #481
Data processor with uncertainties package #481
Conversation
Co-authored-by: Daniel J. Egger <[email protected]>
Co-authored-by: Daniel J. Egger <[email protected]>
Co-authored-by: Daniel J. Egger <[email protected]>
# The output data format is a standard ndarray with dtype=object with | ||
# arbitrary shape [n_circuits, ...] depending on the measurement setup. | ||
nominal_values = np.asarray(data_to_process, float) | ||
return unp.uarray( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With unumpy module, we can initialize the processed data as a single numpy array instead of tuple of list and None
. Thus we don't need to typecast data to array (asarray
), and frequently appearing code in the format method
if error is not None:
...
can be removed too. This means we are no longer need DataAction._format
logic, and now it is almost looking like _validate
method. If we can rename the method, the branching if self._validate:
can be moved to __call__
method, and we can further simplify the logic in subclasses.
55e31aa
to
ef5ae6b
Compare
…ade/data_processor_uncertainties # Conflicts: # qiskit_experiments/data_processing/nodes.py # test/data_processing/test_nodes.py
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks like a good direction to follow. I would like to see a very short explanation of the uncertainties package in the main doc in particular how covariances between errors are accounted for.
Co-authored-by: Daniel J. Egger <[email protected]>
Co-authored-by: Daniel J. Egger <[email protected]>
Co-authored-by: Daniel J. Egger <[email protected]>
Co-authored-by: Daniel J. Egger <[email protected]>
Co-authored-by: Daniel J. Egger <[email protected]>
Co-authored-by: Daniel J. Egger <[email protected]>
…ade/data_processor_uncertainties # Conflicts: # test/data_processing/test_nodes.py
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me. Some minor suggestions. One last question to double check: this will still allow us to construct nodes that process memory (e.g. a sequences of shots like ["01", "01", "11", "11"]
), right?
out_i = processor(dist_i_axis) | ||
self.assertAlmostEqual(out_i[0].nominal_value, 0.0) | ||
self.assertAlmostEqual(out_i[0].std_dev, 0.31622776601683794) | ||
|
||
out_q = processor(dist_q_axis) | ||
self.assertAlmostEqual(out_q[0].nominal_value, 0.0) | ||
self.assertAlmostEqual(out_q[0].std_dev, 0.0) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💯
processed_data = node(data=datum) | ||
|
||
self.assertAlmostEqual(processed_data[0].nominal_value, 3.5) | ||
self.assertAlmostEqual(processed_data[0].std_dev, 0.15898986690282427) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps best to show the math that lead to this number to make the test more transparent.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wrote some comment in 5f49f5f
I did't turn this into math formula since this means we evaluate the code with another (same) code.
@nkanazawa1989 @eggerdj I see that this PR is approved, can we merge it? |
I'm fine with merging but first consider the suggestions on the docs. |
Co-authored-by: Daniel J. Egger <[email protected]>
Co-authored-by: Daniel J. Egger <[email protected]>
Co-authored-by: Daniel J. Egger <[email protected]>
Co-authored-by: Daniel J. Egger <[email protected]>
Co-authored-by: Daniel J. Egger <[email protected]>
Co-authored-by: Daniel J. Egger <[email protected]>
good catch! typecast to float array can break data structure of level2 memory. The logic is fixed and data preparation test has been added for all input data types. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. Thanks for adding the extra tests.
* fix SVD shape * fix docs * fix comment * fix var name * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * add comment * fix document * black * Update qiskit_experiments/data_processing/__init__.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * add comment * add handling for level2 memory * black * lint Co-authored-by: Daniel J. Egger <[email protected]>
* fix SVD shape * fix docs * fix comment * fix var name * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * add comment * fix document * black * Update qiskit_experiments/data_processing/__init__.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * add comment * add handling for level2 memory * black * lint Co-authored-by: Daniel J. Egger <[email protected]>
* 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 <[email protected]> Co-authored-by: Matthew Treinish <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/library/calibration/fine_drag.py Co-authored-by: Will Shanks <[email protected]> Co-authored-by: Will Shanks <[email protected]> * 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 <[email protected]> * add shots to data sort * fix bug * black * fix bug Co-authored-by: Yael Ben-Haim <[email protected]> * Improve calibration experiments (#251) Co-authored-by: Will Shanks <[email protected]> Co-authored-by: Naoki Kanazawa <[email protected]> Co-authored-by: Christopher J. Wood <[email protected]> * english (#429) * PR for saving and loading composite experiments (#364) Co-authored-by: Kevin Tian <[email protected]> Co-authored-by: Christopher J. Wood <[email protected]> * 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 <[email protected]> * * 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 <[email protected]> Co-authored-by: knzwnao <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/calibration/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * * Documentation. * * Documentation. * * Added metadata hook in base class. * Added metadata in fine amp cal circuits. Co-authored-by: Will Shanks <[email protected]> * 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 <[email protected]> * remove double test (#454) Co-authored-by: Yael Ben-Haim <[email protected]> * Update computation of probability (#424) Co-authored-by: Daniel J. Egger <[email protected]> Co-authored-by: Christopher J. Wood <[email protected]> * 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 <[email protected]> * 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 <[email protected]> * * 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 <[email protected]> * Update qiskit_experiments/library/calibration/half_angle_cal.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/half_angle.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/half_angle.py Co-authored-by: Will Shanks <[email protected]> * Update docs/tutorials/fine_calibrations.ipynb Co-authored-by: Will Shanks <[email protected]> * * Doc. * * Decorators, and decorators. Co-authored-by: Naoki Kanazawa <[email protected]> Co-authored-by: Will Shanks <[email protected]> * 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 <[email protected]> * Update docs/tutorials/calibrating_armonk.ipynb Co-authored-by: Will Shanks <[email protected]> Co-authored-by: Will Shanks <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * comments Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> * * Arg order in init. * * Removed updated and fixed tests. Co-authored-by: Will Shanks <[email protected]> * 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 <[email protected]> * 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 <[email protected]> * 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 <[email protected]> * * Removed ~ Co-authored-by: Naoki Kanazawa <[email protected]> * Add ``Settings`` mixin class (#520) Co-authored-by: Naoki Kanazawa <[email protected]> * 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 <[email protected]> Co-authored-by: Naoki Kanazawa <[email protected]> * 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 <[email protected]> * release notes * fix method docs * fixed test * black Co-authored-by: Helena Zhang <[email protected]> * 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 <[email protected]> * * 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 <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * add comment * fix document * black * Update qiskit_experiments/data_processing/__init__.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * add comment * add handling for level2 memory * black * lint Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> Co-authored-by: Matthew Treinish <[email protected]> Co-authored-by: Daniel Egger <[email protected]> Co-authored-by: Will Shanks <[email protected]> Co-authored-by: Naoki Kanazawa <[email protected]> Co-authored-by: Yael Ben-Haim <[email protected]> Co-authored-by: Naoki Kanazawa <[email protected]> Co-authored-by: Kevin Tian <[email protected]> Co-authored-by: dekelmeirom <[email protected]> Co-authored-by: Will Shanks <[email protected]> Co-authored-by: Helena Zhang <[email protected]>
* 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 <[email protected]> Co-authored-by: Matthew Treinish <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/library/calibration/fine_drag.py Co-authored-by: Will Shanks <[email protected]> Co-authored-by: Will Shanks <[email protected]> * 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 <[email protected]> * add shots to data sort * fix bug * black * fix bug Co-authored-by: Yael Ben-Haim <[email protected]> * Improve calibration experiments (qiskit-community#251) Co-authored-by: Will Shanks <[email protected]> Co-authored-by: Naoki Kanazawa <[email protected]> Co-authored-by: Christopher J. Wood <[email protected]> * english (qiskit-community#429) * PR for saving and loading composite experiments (qiskit-community#364) Co-authored-by: Kevin Tian <[email protected]> Co-authored-by: Christopher J. Wood <[email protected]> * 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 <[email protected]> * * 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 <[email protected]> Co-authored-by: knzwnao <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/calibration/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * * Documentation. * * Documentation. * * Added metadata hook in base class. * Added metadata in fine amp cal circuits. Co-authored-by: Will Shanks <[email protected]> * 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 <[email protected]> * remove double test (qiskit-community#454) Co-authored-by: Yael Ben-Haim <[email protected]> * Update computation of probability (qiskit-community#424) Co-authored-by: Daniel J. Egger <[email protected]> Co-authored-by: Christopher J. Wood <[email protected]> * 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 <[email protected]> * 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 <[email protected]> * * 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 <[email protected]> * Update qiskit_experiments/library/calibration/half_angle_cal.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/half_angle.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/half_angle.py Co-authored-by: Will Shanks <[email protected]> * Update docs/tutorials/fine_calibrations.ipynb Co-authored-by: Will Shanks <[email protected]> * * Doc. * * Decorators, and decorators. Co-authored-by: Naoki Kanazawa <[email protected]> Co-authored-by: Will Shanks <[email protected]> * 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 <[email protected]> * Update docs/tutorials/calibrating_armonk.ipynb Co-authored-by: Will Shanks <[email protected]> Co-authored-by: Will Shanks <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * comments Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> * * Arg order in init. * * Removed updated and fixed tests. Co-authored-by: Will Shanks <[email protected]> * 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 <[email protected]> * 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 <[email protected]> * 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 <[email protected]> * * Removed ~ Co-authored-by: Naoki Kanazawa <[email protected]> * Add ``Settings`` mixin class (qiskit-community#520) Co-authored-by: Naoki Kanazawa <[email protected]> * 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 <[email protected]> Co-authored-by: Naoki Kanazawa <[email protected]> * 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 <[email protected]> * release notes * fix method docs * fixed test * black Co-authored-by: Helena Zhang <[email protected]> * 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 <[email protected]> * * 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 <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * add comment * fix document * black * Update qiskit_experiments/data_processing/__init__.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * add comment * add handling for level2 memory * black * lint Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> Co-authored-by: Matthew Treinish <[email protected]> Co-authored-by: Daniel Egger <[email protected]> Co-authored-by: Will Shanks <[email protected]> Co-authored-by: Naoki Kanazawa <[email protected]> Co-authored-by: Yael Ben-Haim <[email protected]> Co-authored-by: Naoki Kanazawa <[email protected]> Co-authored-by: Kevin Tian <[email protected]> Co-authored-by: dekelmeirom <[email protected]> Co-authored-by: Will Shanks <[email protected]> Co-authored-by: Helena Zhang <[email protected]>
* fix SVD shape * fix docs * fix comment * fix var name * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * add comment * fix document * black * Update qiskit_experiments/data_processing/__init__.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * add comment * add handling for level2 memory * black * lint Co-authored-by: Daniel J. Egger <[email protected]>
* 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 <[email protected]> Co-authored-by: Matthew Treinish <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/library/calibration/fine_drag.py Co-authored-by: Will Shanks <[email protected]> Co-authored-by: Will Shanks <[email protected]> * 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 <[email protected]> * add shots to data sort * fix bug * black * fix bug Co-authored-by: Yael Ben-Haim <[email protected]> * Improve calibration experiments (qiskit-community#251) Co-authored-by: Will Shanks <[email protected]> Co-authored-by: Naoki Kanazawa <[email protected]> Co-authored-by: Christopher J. Wood <[email protected]> * english (qiskit-community#429) * PR for saving and loading composite experiments (qiskit-community#364) Co-authored-by: Kevin Tian <[email protected]> Co-authored-by: Christopher J. Wood <[email protected]> * 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 <[email protected]> * * 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 <[email protected]> Co-authored-by: knzwnao <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/calibration/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/fine_amplitude.py Co-authored-by: Will Shanks <[email protected]> * * Documentation. * * Documentation. * * Added metadata hook in base class. * Added metadata in fine amp cal circuits. Co-authored-by: Will Shanks <[email protected]> * 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 <[email protected]> * remove double test (qiskit-community#454) Co-authored-by: Yael Ben-Haim <[email protected]> * Update computation of probability (qiskit-community#424) Co-authored-by: Daniel J. Egger <[email protected]> Co-authored-by: Christopher J. Wood <[email protected]> * 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 <[email protected]> * 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 <[email protected]> * * 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 <[email protected]> * Update qiskit_experiments/library/calibration/half_angle_cal.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/half_angle.py Co-authored-by: Will Shanks <[email protected]> * Update qiskit_experiments/library/characterization/half_angle.py Co-authored-by: Will Shanks <[email protected]> * Update docs/tutorials/fine_calibrations.ipynb Co-authored-by: Will Shanks <[email protected]> * * Doc. * * Decorators, and decorators. Co-authored-by: Naoki Kanazawa <[email protected]> Co-authored-by: Will Shanks <[email protected]> * 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 <[email protected]> * Update docs/tutorials/calibrating_armonk.ipynb Co-authored-by: Will Shanks <[email protected]> Co-authored-by: Will Shanks <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * comments Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> * * Arg order in init. * * Removed updated and fixed tests. Co-authored-by: Will Shanks <[email protected]> * 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 <[email protected]> * 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 <[email protected]> * 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 <[email protected]> * * Removed ~ Co-authored-by: Naoki Kanazawa <[email protected]> * Add ``Settings`` mixin class (qiskit-community#520) Co-authored-by: Naoki Kanazawa <[email protected]> * 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 <[email protected]> Co-authored-by: Naoki Kanazawa <[email protected]> * 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 <[email protected]> * release notes * fix method docs * fixed test * black Co-authored-by: Helena Zhang <[email protected]> * 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 <[email protected]> * * 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 <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_action.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * add comment * fix document * black * Update qiskit_experiments/data_processing/__init__.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/data_processor.py Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * Update qiskit_experiments/data_processing/nodes.py Co-authored-by: Daniel J. Egger <[email protected]> * add comment * add handling for level2 memory * black * lint Co-authored-by: Daniel J. Egger <[email protected]> * 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 <[email protected]> Co-authored-by: Matthew Treinish <[email protected]> Co-authored-by: Daniel Egger <[email protected]> Co-authored-by: Will Shanks <[email protected]> Co-authored-by: Naoki Kanazawa <[email protected]> Co-authored-by: Yael Ben-Haim <[email protected]> Co-authored-by: Naoki Kanazawa <[email protected]> Co-authored-by: Kevin Tian <[email protected]> Co-authored-by: dekelmeirom <[email protected]> Co-authored-by: Will Shanks <[email protected]> Co-authored-by: Helena Zhang <[email protected]>
Summary
This PR updates internal data representation within the data processor. Namely, the computation of error propagation is offloaded to uncertainties package, and
Tuple[Any, Any]
, i.e. tuple of nominal values and standard errors, appearing everywhere in the processor is simplified tonp.ndarray
.Details and comments
Manually handling error propagation has been big pain for writing new node (one may induce numerical error, or one might be lazy to compute error propagation, or to write its unittest, etc...). Offloading this to
uncertainties
package will improve this complexity in coding, and, in addition, now we can integrate nominal values and standard errors into a single numpy array. Thus we can cut the amount of code into roughly half.This package supports
ufloat
, and you can apply most of standard math operation as if to use a python float. In the processor data is usually represented by numpy array version of it rather than ufloat.Hint for review:
ufloat array can be converted into standard float array of nominal and error part by
In addition, this convenient functions support non ufloat array
so we can support error free data without writing branching logic.