laboneq_applications.analysis.amplitude_rabi
¶
    This module defines the analysis for an amplitude-rabi experiment.
The experiment is defined in laboneq_applications.experiments.
In this analysis, we first interpret the raw data into qubit populations using principle-component analysis or rotation and projection on the measured calibration states. Then we fit a cosine model to the qubit population and extract the pi and pi-half pulse amplitudes from the fit. Finally, we plot the data and the fit.
            analysis_workflow(result, qubits, amplitudes, options=None)
¶
    The Amplitude Rabi analysis Workflow.
The workflow consists of the following steps:
- calculate_qubit_population
 - fit_data
 - extract_qubit_parameters
 - plot_raw_complex_data_1d
 - plot_population
 
Parameters:
| Name | Type | Description | Default | 
|---|---|---|---|
                result
             | 
            
                  RunExperimentResults
             | 
            
               The experiment results returned by the run_experiment task.  | 
            required | 
                qubits
             | 
            
                  QuantumElements
             | 
            
               The qubits on which to run the analysis. May be either a single qubit or a list of qubits. The UIDs of these qubits must exist in the result.  | 
            required | 
                amplitudes
             | 
            
                  QubitSweepPoints
             | 
            
               The amplitudes that were swept over in the amplitude-Rabi experiment for
each qubit. If   | 
            required | 
                options
             | 
            
                  TuneUpAnalysisWorkflowOptions | None
             | 
            
               The options for building the workflow, passed as an instance of [TuneUpAnalysisWorkflowOptions]. See the docstring of this class for more details.  | 
            
                  None
             | 
          
Returns:
| Name | Type | Description | 
|---|---|---|
WorkflowBuilder |             
                  None
             | 
            
               The builder for the analysis workflow.  | 
          
Example
options = TuneUpAnalysisWorkflowOptions()
result = analysis_workflow(
    results=results
    qubits=[q0, q1],
    amplitudes=[
        np.linspace(0, 1, 11),
        np.linspace(0, 0.75, 11),
    ],
    options=options,
).run()
            extract_qubit_parameters(qubits, processed_data_dict, fit_results, options=None)
¶
    Extract the qubit parameters from the fit results.
Parameters:
| Name | Type | Description | Default | 
|---|---|---|---|
                qubits
             | 
            
                  QuantumElements
             | 
            
               The qubits on which to run the analysis. May be either a single qubit or a list of qubits. The UIDs of these qubits must exist in the processed_data_dict.  | 
            required | 
                processed_data_dict
             | 
            
                  dict[str, dict[str, ArrayLike]]
             | 
            
               the processed data dictionary returned by process_raw_data  | 
            required | 
                fit_results
             | 
            
                  dict[str, ModelResult]
             | 
            
               the fit-results dictionary returned by fit_data  | 
            required | 
                options
             | 
            
                  ExtractQubitParametersTransitionOptions | None
             | 
            
               The options for extracting the qubit parameters. See [ExtractQubitParametersTransitionOptions] for accepted options.  | 
            
                  None
             | 
          
Returns:
| Type | Description | 
|---|---|
                  dict[str, dict[str, dict[str, int | float | Variable | None]]]
             | 
            
               dict with extracted qubit parameters and the previous values for those qubit  | 
          
                  dict[str, dict[str, dict[str, int | float | Variable | None]]]
             | 
            
               parameters. The dictionary has the following form:  | 
          
                  dict[str, dict[str, dict[str, int | float | Variable | None]]]
             | 
            
               ```python  | 
          
                  dict[str, dict[str, dict[str, int | float | Variable | None]]]
             | 
            
               { "new_parameter_values": { q.uid: { qb_param_name: qb_param_value }, } "old_parameter_values": { q.uid: { qb_param_name: qb_param_value }, }  | 
          
                  dict[str, dict[str, dict[str, int | float | Variable | None]]]
             | 
            
               }  | 
          
                  dict[str, dict[str, dict[str, int | float | Variable | None]]]
             | 
            
               ```  | 
          
                  dict[str, dict[str, dict[str, int | float | Variable | None]]]
             | 
            
               If the do_fitting option is False, the new_parameter_values are not extracted  | 
          
                  dict[str, dict[str, dict[str, int | float | Variable | None]]]
             | 
            
               and the function only returns the old_parameter_values.  | 
          
                  dict[str, dict[str, dict[str, int | float | Variable | None]]]
             | 
            
               If a qubit uid is not found in fit_results, the new_parameter_values entry for  | 
          
                  dict[str, dict[str, dict[str, int | float | Variable | None]]]
             | 
            
               that qubit is left empty.  | 
          
            fit_data(qubits, processed_data_dict, options=None)
¶
    Perform a fit of a cosine model to the data.
Parameters:
| Name | Type | Description | Default | 
|---|---|---|---|
                qubits
             | 
            
                  QuantumElements
             | 
            
               The qubits on which to run the analysis. May be either a single qubit or a list of qubits. The UIDs of these qubits must exist in the processed_data_dict.  | 
            required | 
                processed_data_dict
             | 
            
                  dict[str, dict[str, ArrayLike]]
             | 
            
               the processed data dictionary returned by process_raw_data  | 
            required | 
                options
             | 
            
                  FitDataOptions | None
             | 
            
               The options class for this task as an instance of [FitDataOptions]. See the docstring of this class for accepted options.  | 
            
                  None
             | 
          
Returns:
| Type | Description | 
|---|---|
                  dict[str, ModelResult]
             | 
            
               dict with qubit UIDs as keys and the fit results for each qubit as keys.  | 
          
            plot_population(qubits, processed_data_dict, fit_results, qubit_parameters, options=None)
¶
    Create the amplitude-Rabi plots.
Parameters:
| Name | Type | Description | Default | 
|---|---|---|---|
                qubits
             | 
            
                  QuantumElements
             | 
            
               The qubits on which to run the analysis. May be either a single qubit or a list of qubits. The UIDs of these qubits must exist in processed_data_dict and qubit_parameters.  | 
            required | 
                processed_data_dict
             | 
            
                  dict[str, dict[str, ArrayLike]]
             | 
            
               the processed data dictionary returned by process_raw_data  | 
            required | 
                fit_results
             | 
            
                  dict[str, ModelResult] | None
             | 
            
               the fit-results dictionary returned by fit_data  | 
            required | 
                qubit_parameters
             | 
            
                  dict[str, dict[str, dict[str, int | float | Variable | None]]] | None
             | 
            
               the qubit-parameters dictionary returned by extract_qubit_parameters  | 
            required | 
                options
             | 
            
                  PlotPopulationOptions | None
             | 
            
               The options class for this task as an instance of [PlotPopulationOptions]. See the docstring of this class for accepted options.  | 
            
                  None
             | 
          
Returns:
| Type | Description | 
|---|---|
                  dict[str, Figure]
             | 
            
               dict with qubit UIDs as keys and the figures for each qubit as values.  | 
          
                  dict[str, Figure]
             | 
            
               If a qubit uid is not found in fit_results, the fit and the textbox with the  | 
          
                  dict[str, Figure]
             | 
            
               extracted qubit parameters are not plotted.  |