Skip to content

Mirror circuit fidelity estimation support and introduction of benchmarking interface (name TBD) #628

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

Open
wants to merge 44 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
3093bc2
Create branch feature-mcfe-integration with preliminary inclusion of …
ndsieki Nov 21, 2024
d2b1137
Resolve utils circular import
ndsieki Dec 18, 2024
88a267e
remove outstanding unused utils import
ndsieki Dec 18, 2024
b89d1e2
Refactor Pauli RC and central pauli into RandomCompilation class
ndsieki Jan 13, 2025
40b5711
Modify RandomCompilation for testing, add U3 and CNOT unit tests
ndsieki Feb 17, 2025
a48f2c2
add preliminary qiskit->pygsti circuit conversion utility and remove …
ndsieki Feb 27, 2025
57a7e67
Add random compilation and central pauli unit tests
ndsieki Feb 27, 2025
515a7e8
Add from_qiskit method to Circuit class
ndsieki Mar 11, 2025
7afd5e2
Bugfixes to IBMQ interfacing and line ordering, add example notebook
ndsieki Mar 29, 2025
a5e5750
Subcirc selection now takes circ list instead of dict, mirror edesign…
May 23, 2025
45bea5d
fix typo in mirror edesign test-ref circuit matching assertion
ndsieki May 27, 2025
0d66a82
Update from_qiskit() method to handle Qiskit circ with multiple qregs
Jun 5, 2025
57c7853
Factor MCFE VB process fidelity calculations into pyGSTi
ndsieki Jun 11, 2025
9ad4941
Preliminary functionizations of notebooks for fullstack, subcirc, and…
ndsieki Jun 17, 2025
b696de9
More fixes and updates for MCFE paper
ndsieki Jul 2, 2025
c91b04f
Clamp PF estimates, modify full-stack mirror edesign creation to ensu…
ndsieki Jul 30, 2025
18cf81d
add preliminary B-Sqale API
ndsieki Aug 4, 2025
959468e
Merge remote-tracking branch 'origin/develop' into feature-mcfe-integ…
ndsieki Aug 4, 2025
343643e
Add function documentation
ndsieki Aug 5, 2025
6e5d5b9
Function renames and typo fixes
ndsieki Aug 5, 2025
c78453c
Repair central pauli code, fix unit tests
ndsieki Aug 5, 2025
7ff81c6
Remove inline ipdb debug comments
ndsieki Aug 5, 2025
5fc09e7
Finish vbdataframe docstrings
ndsieki Aug 6, 2025
ce59e72
Add docstrings and remove outdated code paths
ndsieki Aug 7, 2025
664436b
Add qiskit conversion unit tests
ndsieki Aug 8, 2025
bd1428a
Add subcircuit selection unit tests
ndsieki Aug 8, 2025
1c73dbf
Modify Gzr definition. Add unit tests for mirror circuit benchmarks.
ndsieki Aug 9, 2025
0c36554
Add type annotations and missing docstring
ndsieki Aug 11, 2025
d071a75
Merge remote-tracking branch 'origin/develop' into feature-mcfe-integ…
ndsieki Aug 11, 2025
e459412
Type annotations
ndsieki Aug 11, 2025
02cbc33
Move qiskit import outside of function for type annotation purposes
ndsieki Aug 11, 2025
dcb5cbe
Move B-Sqale into tools and rename functions
ndsieki Aug 11, 2025
91a2f7d
Add previously missed type annotations
ndsieki Aug 12, 2025
714d8d0
VBDataFrame bugfix and docstring correction
ndsieki Aug 12, 2025
7bbed14
Replace Self type annotation to support Python 3.9, fix conversions b…
ndsieki Aug 12, 2025
e9ae6d1
Actually remove the typing.Self import
ndsieki Aug 12, 2025
3816743
Merge remote-tracking branch 'origin/develop' into feature-mcfe-integ…
ndsieki Aug 13, 2025
d6b6491
Remove duplicate ECR conversion and fix CombinedExperimentDesign inhe…
ndsieki Aug 13, 2025
919b398
Changes for Qiskit 2.1.1
ndsieki Aug 14, 2025
57239e6
Fix subcirc selection to sample a new qubit subset for each subcircui…
ndsieki Aug 14, 2025
bc723b4
Fix variable name overlap
ndsieki Aug 14, 2025
9533e83
Add copyright assertions, move import try-except statements into func…
ndsieki Aug 14, 2025
d248d98
Make verbose print statements more explanatory
ndsieki Aug 15, 2025
2dbdd55
Add GenericBackendV2 as a supported type for `ibmq_backend` and fix f…
ndsieki Aug 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
417 changes: 417 additions & 0 deletions jupyter_notebooks/Examples/MCFE-Example.ipynb

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion pygsti/baseobjs/label.py
Original file line number Diff line number Diff line change
Expand Up @@ -1893,7 +1893,7 @@ def to_native(self):
"""
return tuple(self)

def replacename(self, oldname, newname):
def replace_name(self, oldname, newname):
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Every other class that inherits from Label calls its corresponding function replace_name(). Calling Circuit.replace_gatename() would also return an error if any of the labels were of type LabelTupWithArgs due to this inconsistency.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch!

"""
Returns a label with `oldname` replaced by `newname`.

Expand Down
8 changes: 6 additions & 2 deletions pygsti/baseobjs/qubitgraph.py
Original file line number Diff line number Diff line change
Expand Up @@ -853,7 +853,7 @@ def shortest_path_predecessor_matrix(self):
self._refresh_dists_and_predecessors()
return self._predecessors.copy()

def subgraph(self, nodes_to_keep, reset_nodes=False):
def subgraph(self, nodes_to_keep, reset_nodes=False, include_directions=True):
"""
Return a graph that includes only `nodes_to_keep` and the edges between them.

Expand All @@ -867,6 +867,10 @@ def subgraph(self, nodes_to_keep, reset_nodes=False):
be the integers starting at 0 (in 1-1 correspondence
with the ordering in `nodes_to_keep`).

include_directions : bool, optional
Whether the subgraph should retain the direction information
of the parent graph. Defaults to True.

Returns
-------
QubitGraph
Expand All @@ -878,7 +882,7 @@ def subgraph(self, nodes_to_keep, reset_nodes=False):
qubit_labels = nodes_to_keep

edges = []
for edge in self.edges():
for edge in self.edges(include_directions=include_directions):
if edge[0] in nodes_to_keep and edge[1] in nodes_to_keep:
if reset_nodes:
edges.append((labelmap[edge[0]], labelmap[edge[1]]))
Expand Down
2 changes: 2 additions & 0 deletions pygsti/circuits/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,5 @@
from .cloudcircuitconstruction import *
from .gstcircuits import *
# Unused: from rpecircuits import *

from .subcircuit_selection import *
308 changes: 308 additions & 0 deletions pygsti/circuits/circuit.py

Large diffs are not rendered by default.

815 changes: 815 additions & 0 deletions pygsti/circuits/subcircuit_selection.py

Large diffs are not rendered by default.

252 changes: 168 additions & 84 deletions pygsti/extras/ibmq/ibmqexperiment.py

Large diffs are not rendered by default.

5 changes: 3 additions & 2 deletions pygsti/processors/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,6 @@
# http://www.apache.org/licenses/LICENSE-2.0 or in the LICENSE file in the root pyGSTi directory.
#***************************************************************************************************

from .processorspec import ProcessorSpec, QubitProcessorSpec, QuditProcessorSpec
from .compilationrules import CompilationRules, CliffordCompilationRules, CompilationError
from .processorspec import *
from .compilationrules import *
from .random_compilation import *
Loading
Loading