Exemple #1
0
def chi01(param_name: Union[str, None], yval: float,
          **kwargs) -> Dict[str, Any]:
    """Plot defaults for sweep_plotting.chi01"""
    kwargs['xlabel'] = kwargs.get('xlabel') or recast_name(param_name)
    kwargs['ylabel'] = kwargs.get('ylabel') or r'$\chi_{{01}}$ [{}]'.format(
        units.get_units())
    kwargs['title'] = kwargs.get('title') or r'$\chi_{{01}}=${:.4f} {}'.format(
        yval, units.get_units())
    return kwargs
Exemple #2
0
def chi01(param_name: Union[str, None], yval: float,
          **kwargs) -> Dict[str, Any]:
    """Plot defaults for sweep_plotting.chi01"""
    kwargs["xlabel"] = kwargs.get("xlabel") or recast_name(param_name)
    kwargs["ylabel"] = kwargs.get("ylabel") or r"$\chi_{{01}}$ [{}]".format(
        units.get_units())
    kwargs["title"] = kwargs.get("title") or r"$\chi_{{01}}=${:.4f} {}".format(
        yval, units.get_units())
    return kwargs
Exemple #3
0
def create_widget(callback_func: Callable,
                  init_params: Dict[str, Any],
                  image_filename: str = None) -> None:
    """
    Displays ipywidgets for initialization of a QuantumSystem object.

    Parameters
    ----------
    callback_func:
        callback_function depends on all the parameters provided as keys (str) in the
        parameter_dict, and is called upon changes of values inside the widgets
    init_params:
        names and values of initialization parameters
    image_filename:
        file name for circuit image to be displayed alongside the qubit
    """
    widgets = {}
    box_list = []
    for name, value in init_params.items():
        label_str = name
        # NOTE: This will break if names of energy parameters in future qubits do not
        # start with 'E'
        if name[0] == "E":
            label_str += " [" + units.get_units() + "]"
        elif name == "flux":
            label_str += r" [$\Phi_0$]"
        label = ipywidgets.Label(value=label_str)
        if isinstance(value, float):
            enter_widget = ipywidgets.FloatText
        else:
            enter_widget = ipywidgets.IntText

        widgets[name] = enter_widget(
            value=value,
            description="",
            disabled=False,
            layout=ipywidgets.Layout(width="150px"),
        )
        box_list.append(
            ipywidgets.HBox(
                [label, widgets[name]],
                layout=ipywidgets.Layout(justify_content="flex-end"),
            ))

    if image_filename:
        file = open(image_filename, "rb")
        image = file.read()
        image_widget = ipywidgets.Image(
            value=image, format="jpg", layout=ipywidgets.Layout(width="700px"))
        ui_widget = ipywidgets.HBox(
            [ipywidgets.VBox(box_list),
             ipywidgets.VBox([image_widget])])
    else:
        ui_widget = ipywidgets.VBox(box_list)

    out = ipywidgets.interactive_output(callback_func, widgets)
    display(ui_widget, out)
Exemple #4
0
def dressed_spectrum(sweep: 'ParameterSweep', **kwargs) -> Dict[str, Any]:
    """Plot defaults for sweep_plotting.dressed_spectrum"""
    if 'ylim' not in kwargs:
        kwargs['ymax'] = kwargs.get('ymax') or min(
            15, (np.max(sweep.dressed_specdata.energy_table) -
                 np.min(sweep.dressed_specdata.energy_table)))
    kwargs['xlabel'] = kwargs.get('xlabel') or recast_name(sweep.param_name)
    kwargs['ylabel'] = kwargs.get('ylabel') or r'energy [{}]'.format(
        units.get_units())
    return kwargs
Exemple #5
0
def create_widget(callback_func, init_params, image_filename=None):
    """
    Displays ipywidgets for initialization of a QuantumSystem object.

    Parameters
    ----------
    callback_func: function
        callback_function depends on all the parameters provided as keys (str) in the parameter_dict, and is called upon
        changes of values inside the widgets
    init_params: {str: value, str: value, ...}
        names and values of initialization parameters
    image_filename: str, optional
        file name for circuit image to be displayed alongside the qubit
    Returns
    -------

    """
    widgets = {}
    box_list = []
    for name, value in init_params.items():
        label_str = name
        # NOTE: This will break if names of energy parameters in future qubits do not start with 'E'
        if name[0] == 'E':
            label_str += ' [' + units.get_units() + ']'
        elif name == 'flux':
            label_str += r' [$\Phi_0$]'
        label = ipywidgets.Label(value=label_str)
        if isinstance(value, float):
            enter_widget = ipywidgets.FloatText
        else:
            enter_widget = ipywidgets.IntText

        widgets[name] = enter_widget(value=value,
                                     description='',
                                     disabled=False,
                                     layout=ipywidgets.Layout(width='150px'))
        box_list.append(
            ipywidgets.HBox(
                [label, widgets[name]],
                layout=ipywidgets.Layout(justify_content='flex-end')))

    if image_filename:
        file = open(image_filename, "rb")
        image = file.read()
        image_widget = ipywidgets.Image(
            value=image, format='jpg', layout=ipywidgets.Layout(width='700px'))
        ui_widget = ipywidgets.HBox(
            [ipywidgets.VBox(box_list),
             ipywidgets.VBox([image_widget])])
    else:
        ui_widget = ipywidgets.VBox(box_list)

    out = ipywidgets.interactive_output(callback_func, widgets)
    display(ui_widget, out)
Exemple #6
0
def dressed_spectrum(sweep: "ParameterSweep", **kwargs) -> Dict[str, Any]:
    """Plot defaults for sweep_plotting.dressed_spectrum"""
    if "ylim" not in kwargs:
        kwargs["ymax"] = kwargs.get("ymax") or min(
            15,
            (np.max(sweep.dressed_specdata.energy_table) -
             np.min(sweep.dressed_specdata.energy_table)),
        )
    kwargs["xlabel"] = kwargs.get("xlabel") or recast_name(sweep.param_name)
    kwargs["ylabel"] = kwargs.get("ylabel") or r"energy [{}]".format(
        units.get_units())
    return kwargs
Exemple #7
0
def display_dressed_spectrum(sweep, initial_bare, final_bare, energy_initial,
                             energy_final, param_val, fig_ax):
    energy_difference = energy_final - energy_initial
    title = r"{} $\rightarrow$ {}: {:.4f} {}".format(initial_bare, final_bare,
                                                     energy_difference,
                                                     units.get_units())
    __ = splot.dressed_spectrum(sweep, title=title, fig_ax=fig_ax)
    _, axes = fig_ax
    axes.axvline(param_val, color="gray", linestyle=":")
    axes.scatter([param_val] * 2, [energy_initial, energy_final],
                 s=40,
                 c="gray")
Exemple #8
0
    def wavefunction1d_defaults(self, mode: str, evals: ndarray,
                                wavefunc_count: int) -> Dict[str, Any]:
        """Plot defaults for plotting.wavefunction1d.

        Parameters
        ----------
        mode:
            amplitude modifier, needed to give the correct default y label
        evals:
            eigenvalues to include in plot
        wavefunc_count:
            number of wave functions to be plotted
        """
        ylabel = r"$\psi_j(\varphi)$"
        ylabel = constants.MODE_STR_DICT[mode](ylabel)
        ylabel += ",  energy [{}]".format(units.get_units())
        options = {"xlabel": r"$\varphi$", "ylabel": ylabel}
        return options
Exemple #9
0
def chi(param_name: Union[str, None], **kwargs) -> Dict[str, Any]:
    """Plot defaults for sweep_plotting.chi"""
    kwargs["xlabel"] = kwargs.get("xlabel") or recast_name(param_name)
    kwargs["ylabel"] = kwargs.get("ylabel") or r"$\chi_j$ [{}]".format(
        units.get_units())
    return kwargs
Exemple #10
0
def evals_vs_paramvals(specdata: "SpectrumData", **kwargs) -> Dict[str, Any]:
    """Plot defaults for plotting.evals_vs_paramvals"""
    kwargs["xlabel"] = kwargs.get("xlabel") or recast_name(specdata.param_name)
    kwargs["ylabel"] = kwargs.get("ylabel") or "energy [{}]".format(
        units.get_units())
    return kwargs
Exemple #11
0
    def plot_dispersion_vs_paramvals(
        self,
        dispersion_name: str,
        param_name: str,
        param_vals: ndarray,
        ref_param: Optional[str] = None,
        transitions: Union[Tuple[int], Tuple[Tuple[int], ...]] = (0, 1),
        levels: Optional[Union[int, Tuple[int]]] = None,
        point_count: int = 50,
        num_cpus: Optional[int] = None,
        **kwargs,
    ) -> Tuple[Figure, Axes]:
        """Generates a simple plot of a set of curves representing the charge or flux
        dispersion of transition energies.

        Parameters
        ----------
        dispersion_name:
            parameter inducing the dispersion, typically 'ng' or 'flux' (will be
            scanned over range from 0 to 1)
        param_name:
            name of parameter to be varied
        param_vals:
            parameter values to be plugged in
        ref_param:
            optional, name of parameter to use as reference for the parameter value;
            e.g., to compute charge dispersion vs. EJ/EC, use EJ as param_name and
            EC as ref_param
        transitions:
            integer tuple or tuples specifying for which transitions dispersion is to
            be calculated
            (default: = (0,1))
        levels:
            int or tuple specifying level(s) (rather than transitions) for which
            dispersion should be plotted; overrides transitions parameter when given
        point_count:
            number of points scanned for the dispersion parameter for determining min
            and max values of transition energies (default: 50)
        num_cpus:
            number of cores to be used for computation
            (default value: settings.NUM_CPUS)
        **kwargs:
            standard plotting option (see separate documentation)
        """
        specdata = self.get_dispersion_vs_paramvals(
            dispersion_name,
            param_name,
            param_vals,
            ref_param=ref_param,
            transitions=transitions,
            levels=levels,
            point_count=point_count,
            num_cpus=num_cpus,
        )
        if levels is not None:
            if isinstance(levels, int):
                levels = (levels,)
            label_list = [str(j) for j in levels]
        else:
            if isinstance(transitions[0], int):
                transitions = (transitions,)
            label_list = ["{}{}".format(i, j) for i, j in transitions]

        return plot.data_vs_paramvals(
            xdata=specdata.param_vals,
            ydata=specdata.dispersion,
            label_list=label_list,
            xlabel=specdata.param_name,
            ylabel="energy dispersion [{}]".format(units.get_units()),
            yscale="log",
            **kwargs,
        )
Exemple #12
0
def evals_vs_paramvals(specdata: 'SpectrumData', **kwargs) -> Dict[str, Any]:
    """Plot defaults for plotting.evals_vs_paramvals"""
    kwargs['xlabel'] = kwargs.get('xlabel') or recast_name(specdata.param_name)
    kwargs['ylabel'] = kwargs.get('ylabel') or 'energy [{}]'.format(
        units.get_units())
    return kwargs