Skip to content

Base

Report

Report(data, metas, geos, name='')
Source code in src/bloqade/task/base.py
def __init__(self, data, metas, geos, name="") -> None:
    self.dataframe = data  # df
    self._bitstrings = None  # bitstring cache
    self._counts = None  # counts cache
    self.metas = metas
    self.geos = geos
    self.name = name + " " + str(datetime.datetime.now())

bitstrings

bitstrings(filter_perfect_filling=True, clusters=[])

Get the bitstrings from the data.

Parameters:

Name Type Description Default
filter_perfect_filling bool

whether return will

True
clusters Union[tuple[int, int], List[tuple[int, int]]]

(tuple[int, int], Sequence[Tuple[int, int]]):

[]

Returns:

Name Type Description
bitstrings list of ndarray

list corresponding to each

List[NDArray]

task in the report. Each element is an ndarray of shape

List[NDArray]

(nshots, nsites) where nshots is the number of shots for

List[NDArray]

the task and nsites is the number of sites in the task.

Note

Note that nshots may vary between tasks if filter_perfect_filling is set to True.

Source code in src/bloqade/task/base.py
@beartype
def bitstrings(
    self,
    filter_perfect_filling: bool = True,
    clusters: Union[tuple[int, int], List[tuple[int, int]]] = [],
) -> List[NDArray]:
    """Get the bitstrings from the data.

    Args:
        filter_perfect_filling (bool): whether return will
        only contain perfect filling shots. Defaults to True.
        clusters: (tuple[int, int], Sequence[Tuple[int, int]]):
        cluster index to filter shots from. If none are provided
        all clusters are used, defaults to [].

    Returns:
        bitstrings (list of ndarray): list corresponding to each
        task in the report. Each element is an ndarray of shape
        (nshots, nsites) where nshots is the number of shots for
        the task and nsites is the number of sites in the task.

    Note:
        Note that nshots may vary between tasks if filter_perfect_filling
        is set to True.

    """

    task_numbers = self.dataframe.index.get_level_values("task_number").unique()

    bitstrings = []
    for task_number in task_numbers:
        mask = self._filter(
            task_number=task_number,
            filter_perfect_filling=filter_perfect_filling,
            clusters=clusters,
        )
        if np.any(mask):
            bitstrings.append(self.dataframe.loc[mask].to_numpy())
        else:
            bitstrings.append(
                np.zeros((0, self.dataframe.shape[1]), dtype=np.uint8)
            )

    return bitstrings

counts

counts(filter_perfect_filling=True, clusters=[])

Get the counts of unique bit strings.

Parameters:

Name Type Description Default
filter_perfect_filling bool

whether return will

True
clusters Union[tuple[int, int], List[tuple[int, int]]]

(tuple[int, int], Sequence[Tuple[int, int]]):

[]

Returns:

Name Type Description
bitstrings list of ndarray

list corresponding to each

List[OrderedDict[str, int]]

task in the report. Each element is an ndarray of shape

List[OrderedDict[str, int]]

(nshots, nsites) where nshots is the number of shots for

List[OrderedDict[str, int]]

the task and nsites is the number of sites in the task.

Note

Note that nshots may vary between tasks if filter_perfect_filling is set to True.

Source code in src/bloqade/task/base.py
def counts(
    self,
    filter_perfect_filling: bool = True,
    clusters: Union[tuple[int, int], List[tuple[int, int]]] = [],
) -> List[OrderedDict[str, int]]:
    """Get the counts of unique bit strings.

    Args:
        filter_perfect_filling (bool): whether return will
        only contain perfect filling shots. Defaults to True.
        clusters: (tuple[int, int], Sequence[Tuple[int, int]]):
        cluster index to filter shots from. If none are provided
        all clusters are used, defaults to [].

    Returns:
        bitstrings (list of ndarray): list corresponding to each
        task in the report. Each element is an ndarray of shape
        (nshots, nsites) where nshots is the number of shots for
        the task and nsites is the number of sites in the task.

    Note:
        Note that nshots may vary between tasks if filter_perfect_filling
        is set to True.

    """

    def generate_counts(bitstring):
        output = np.unique(bitstring, axis=0, return_counts=True)

        count_list = [
            ("".join(map(str, bitstring)), int(count))
            for bitstring, count in zip(*output)
        ]
        count_list.sort(key=lambda x: x[1], reverse=True)
        count = OrderedDict(count_list)

        return count

    return list(
        map(generate_counts, self.bitstrings(filter_perfect_filling, clusters))
    )

list_param

list_param(field_name)

List the parameters associate with the given variable field_name for each tasks.

Parameters:

Name Type Description Default
field_name str

variable name

required
Source code in src/bloqade/task/base.py
def list_param(self, field_name: str) -> List[Union[Number, None]]:
    """
    List the parameters associate with the given variable field_name
    for each tasks.

    Args:
        field_name (str): variable name

    """

    def cast(x):
        if x is None:
            return None
        elif isinstance(x, (list, tuple, np.ndarray)):
            return list(map(cast, x))
        else:
            return float(x)

    return list(map(cast, (meta.get(field_name) for meta in self.metas)))

rydberg_densities

rydberg_densities(filter_perfect_filling=True, clusters=[])

Get rydberg density for each task.

Parameters:

Name Type Description Default
filter_perfect_filling bool

whether return will

True
Return

per-site rydberg density for each task as a pandas DataFrame or Series.

Source code in src/bloqade/task/base.py
@beartype
def rydberg_densities(
    self,
    filter_perfect_filling: bool = True,
    clusters: Union[tuple[int, int], List[tuple[int, int]]] = [],
) -> Union[pd.Series, pd.DataFrame]:
    """Get rydberg density for each task.

    Args:
        filter_perfect_filling (bool, optional): whether return will
        only contain perfect filling shots. Defaults to True.

    Return:
        per-site rydberg density for each task as a pandas DataFrame or Series.

    """
    mask = self._filter(
        filter_perfect_filling=filter_perfect_filling, clusters=clusters
    )
    df = self.dataframe[mask]
    return 1 - (df.groupby("task_number").mean())

show

show()

Interactive Visualization of the Report

Source code in src/bloqade/task/base.py
def show(self):
    """
    Interactive Visualization of the Report

    """
    display_report(self)