pyqres.core

核心操作类

Operation

class pyqres.core.operation.Operation(reg_list=None, param_list=None, temp_reg_list=None, submodules=None, **kwargs)[源代码]

基类:object

Base class for all quantum operations.

Two concrete subclasses: - Primitive: leaf node with known resource cost (T-count, etc.) - Composite: decomposes into sub-operations via program_list

__init__(reg_list=None, param_list=None, temp_reg_list=None, submodules=None, **kwargs)[源代码]
static program_type()[源代码]
declare_qfunction()[源代码]
declare_program_list()[源代码]
validate_registers()[源代码]
control(controller)[源代码]
control_by_all_ones(controller)[源代码]
control_by_nonzero(controller)[源代码]
control_by_bit(controller)[源代码]
control_by_value(controller)[源代码]
dagger()[源代码]
is_self_conjugate()[源代码]

Check if operation is self-conjugate (U† = U).

Self-conjugate operations don't change when dagger is applied. This affects T-count, T-depth, simulation, and operation unrolling.

返回类型:

bool

render_parameters()[源代码]
render_registers()[源代码]
render_submodules()[源代码]
render_this(indent=0, dagger_ctx=False, controllers_ctx=None)[源代码]
plain_render_this(indent=0, dagger_ctx=False, controllers_ctx=None)[源代码]
t_count(dagger_ctx=False, controllers_ctx=None)[源代码]
sum_t_count(t_count_list)[源代码]
t_depth(current_t_depth, dagger_ctx=False, controllers_ctx=None)[源代码]
merge_t_depth(current_t_depth, t_depth_list)[源代码]
toffoli_count(dagger_ctx=False, controllers_ctx=None)[源代码]
sum_toffoli_count(toffoli_count_list)[源代码]
enter(dagger_ctx=False, controllers_ctx=None)[源代码]
exit(dagger_ctx=False, controllers_ctx=None)[源代码]
traverse(visitor, dagger_ctx=False, controllers_ctx=None)[源代码]
traverse_children(visitor, dagger_ctx=False, controllers_ctx=None)[源代码]

Primitive

class pyqres.core.operation.Primitive(reg_list=None, param_list=None, temp_reg_list=None, submodules=None, **kwargs)[源代码]

基类:Operation

Leaf operation with known resource cost. Cannot be further decomposed.

static program_type()[源代码]
traverse_children(visitor, dagger_ctx=False, controllers_ctx=None)[源代码]
t_depth(current_t_depth, dagger_ctx=False, controllers_ctx=None)[源代码]

Default T-depth implementation: adds t_count to all involved registers.

toffoli_count(dagger_ctx=False, controllers_ctx=None)[源代码]

Default Toffoli-count: approximated as t_count / 7.

Composite

class pyqres.core.operation.Composite(reg_list=None, param_list=None, temp_reg_list=None, submodules=None, **kwargs)[源代码]

基类:Operation

Operation that decomposes into sub-operations via program_list.

static program_type()[源代码]
t_count(dagger_ctx=False, controllers_ctx=None)[源代码]
t_depth(current_t_depth, dagger_ctx=False, controllers_ctx=None)[源代码]
toffoli_count(dagger_ctx=False, controllers_ctx=None)[源代码]

StandardComposite

class pyqres.core.operation.StandardComposite(reg_list=None, param_list=None, temp_reg_list=None, submodules=None, **kwargs)[源代码]

基类:Composite

Composite with default summation: sum children's T-counts.

AbstractComposite

class pyqres.core.operation.AbstractComposite(reg_list=None, param_list=None, temp_reg_list=None, submodules=None, **kwargs)[源代码]

基类:Composite

Composite with custom sum_t_count() aggregation.

sum_t_count(t_count_list)[源代码]

注册表

OperationRegistry

class pyqres.core.registry.OperationRegistry[源代码]

基类:object

Central registry for all Operation subclasses.

classmethod auto_register(node_cls)[源代码]
classmethod register(name=None)[源代码]
classmethod get_class(name)[源代码]
classmethod has_class(name)[源代码]
返回类型:

bool

classmethod remove_class(name)[源代码]
classmethod all_names()[源代码]

元数据

RegisterMetadata

class pyqres.core.metadata.RegisterMetadata[源代码]

基类:object

Quantum register metadata manager.

__init__()[源代码]
declare_register(name, size, reg_type='General')[源代码]
declare_registers(regs)[源代码]
undeclare_register(name)[源代码]
undeclare_registers(regs)[源代码]
split_register(reg, new_reg_declarations)[源代码]
merge_register(reg, regs_to_merge)[源代码]
register_metadata_stack: List[RegisterMetadata] = []
static get_register_metadata()[源代码]
返回类型:

RegisterMetadata

static push_register_metadata()[源代码]
返回类型:

RegisterMetadata

static pop_register_metadata()[源代码]
static add_register(reg)[源代码]
static add_registers(regs)[源代码]
static remove_register(reg)[源代码]
static remove_registers(regs)[源代码]
static get_registers()[源代码]
static get_register_types()[源代码]

ProgramMetadata

class pyqres.core.metadata.ProgramMetadata[源代码]

基类:object

Quantum program metadata manager.

__init__()[源代码]
qfunctions: Dict[str, FunctionDeclaration]
declare_qfunction(name, reg_count, param_count=0, temp_reg_count=0, submodule_count=0)[源代码]
declare_program_list(name, program_list)[源代码]
quantikz(path=None)[源代码]

访问者

TCounter

class pyqres.core.visitor.TCounter[源代码]

基类:object

Visitor that computes total T-gate count via lowering.

__init__()[源代码]
enter(node)[源代码]
exit(node)[源代码]
visit(node, dagger_ctx=False, controllers_ctx=None)[源代码]
get_count()[源代码]
get_result()

TDepthCounter

class pyqres.core.visitor.TDepthCounter[源代码]

基类:object

Visitor that computes T-gate depth via lowering.

__init__()[源代码]
enter(node)[源代码]
exit(node)[源代码]
visit(node, dagger_ctx=False, controllers_ctx=None)[源代码]
get_depth()[源代码]
get_result()

TreeRenderer

class pyqres.core.visitor.TreeRenderer(fold_modules=None)[源代码]

基类:object

Visitor that renders an Operation tree as an indented tree structure.

Used by Operation.__repr__() to generate a hierarchical text representation of an operation and its children. Supports folding (hiding) of specific module subtrees.

Example output:

Toffoli: QRegs(q0[1], q1[1], q2[1])
  CNOT: QRegs(q0[1], q1[1])
  CNOT: QRegs(q1[1], q2[1])
  CNOT: QRegs(q0[1], q1[1])
text

Accumulated rendered text.

indent

Current indentation level (in spaces).

fold_modules

List of operation names to fold (hide their children).

folding

Whether currently inside a folded subtree.

hidden

Whether current node should be hidden.

示例

>>> from pyqres.primitives import Toffoli
>>> from pyqres.core.metadata import RegisterMetadata
>>> RegisterMetadata.push_register_metadata()
>>> RegisterMetadata.get_register_metadata().declare_register('q0', 1)
>>> RegisterMetadata.get_register_metadata().declare_register('q1', 1)
>>> RegisterMetadata.get_register_metadata().declare_register('q2', 1)
>>> t = Toffoli(['q0', 'q1', 'q2'])
>>> renderer = TreeRenderer()
>>> t.traverse(renderer)
>>> print(renderer.text)
__init__(fold_modules=None)[源代码]

Initialize the renderer.

参数:

fold_modules -- List of operation names to fold. Children of these operations will not be rendered.

enter(node)[源代码]

Called when entering a node during traversal.

Increases indent level and manages folding state.

参数:

node -- The Operation node being entered.

exit(node)[源代码]

Called when exiting a node during traversal.

Decreases indent level and resets folding state when leaving a folded module.

参数:

node -- The Operation node being exited.

visit(node, dagger_ctx=False, controllers_ctx=None)[源代码]

Visit a node and render its string representation.

Calls node.render_this() to get the formatted string for this node, then appends it to the accumulated text.

参数:
  • node -- The Operation node to visit.

  • dagger_ctx -- Whether the node is being traversed in dagger mode.

  • controllers_ctx -- Current controller context from parent nodes.

PlainRenderer

class pyqres.core.visitor.PlainRenderer(fold_modules=None)[源代码]

基类:object

Visitor that renders an Operation tree as plain text.

Similar to TreeRenderer but uses plain_render_this() which provides a simpler output format. Used by Operation.__str__().

Example output:

Toffoli: QRegs(q0[1], q1[1], q2[1])
  CNOT: QRegs(q0[1], q1[1])
  CNOT: QRegs(q1[1], q2[1])
  CNOT: QRegs(q0[1], q1[1])
text

Accumulated rendered text.

indent

Current indentation level (in spaces).

fold_modules

List of operation names to fold (hide their children).

folding

Whether currently inside a folded subtree.

hidden

Whether current node should be hidden.

__init__(fold_modules=None)[源代码]

Initialize the renderer.

参数:

fold_modules -- List of operation names to fold. Children of these operations will not be rendered.

enter(node)[源代码]

Called when entering a node during traversal.

Increases indent level and manages folding state.

参数:

node -- The Operation node being entered.

exit(node)[源代码]

Called when exiting a node during traversal.

Decreases indent level and resets folding state when leaving a folded module.

参数:

node -- The Operation node being exited.

visit(node, dagger_ctx=False, controllers_ctx=None)[源代码]

Visit a node and render its plain string representation.

Calls node.plain_render_this() to get the formatted string for this node, then appends it to the accumulated text.

参数:
  • node -- The Operation node to visit.

  • dagger_ctx -- Whether the node is being traversed in dagger mode.

  • controllers_ctx -- Current controller context from parent nodes.

ToffoliCounter

class pyqres.core.visitor.ToffoliCounter[源代码]

基类:object

Visitor that computes total Toffoli gate count via lowering.

__init__()[源代码]
enter(node)[源代码]
exit(node)[源代码]
visit(node, dagger_ctx=False, controllers_ctx=None)[源代码]
get_count()[源代码]
get_result()

Lowering

LoweringEngine

class pyqres.core.lowering.LoweringEngine[源代码]

基类:object

Recursively lowers an Operation tree to primitives and computes resource costs.

estimate(operation, estimator)[源代码]

TCountEstimator

class pyqres.core.lowering.TCountEstimator[源代码]

基类:ResourceEstimator

create_visitor()[源代码]

Create a visitor that computes this resource during traversal.

property name

Human-readable name of this resource type.

TDepthEstimator

class pyqres.core.lowering.TDepthEstimator[源代码]

基类:ResourceEstimator

create_visitor()[源代码]

Create a visitor that computes this resource during traversal.

property name

Human-readable name of this resource type.

QECEstimator

class pyqres.core.lowering.QECEstimator[源代码]

基类:ResourceEstimator

Estimator that lowers to QEC-compiler AbstractCircuit.

create_visitor()[源代码]

Create a visitor that computes this resource during traversal.

property name

Human-readable name of this resource type.

pyqres.core.lowering.to_abstract_circuit(operation)[源代码]

Lower a pyqres Operation tree to a QEC AbstractCircuit.

Requires qec-compiler to be installed.

QEC lowering internals

class pyqres.core.qec_lowering.QECLoweringVisitor[源代码]

基类:object

Visitor that lowers an Operation tree to QEC AbstractCircuit gates.

__init__()[源代码]
enter(node)[源代码]
exit(node)[源代码]
visit(node, dagger_ctx=False, controllers_ctx=None)[源代码]
build_circuit(operation=None)[源代码]

Build the final AbstractCircuit from accumulated gates.

If operation is provided, runs traverse after pre-declaring registers and allocating qubit indices for all root registers.

class pyqres.core.qec_lowering.UnsupportedQECPrimitive[源代码]

基类:Exception

Raised when a primitive cannot be lowered to QEC-compiler gates.

模拟器

SimulatorVisitor

class pyqres.core.simulator.SimulatorVisitor(verbose=False)[源代码]

基类:object

Visitor that executes operations on a pysparq sparse state.

__init__(verbose=False)[源代码]
enter(node)[源代码]
exit(node)[源代码]
visit(node, dagger_ctx=False, controllers_ctx=None)[源代码]
print_state(option=None, precision=None)[源代码]
get_result()

PyQSparseOperationWrapper

class pyqres.core.simulator.PyQSparseOperationWrapper(op)[源代码]

基类:object

Wrapper for pysparq operations with controller and dagger support.

__init__(op)[源代码]
set_controller(controllers_ctx)[源代码]
set_dagger(dagger_ctx)[源代码]

工具函数

pyqres.core.utils.merge_controllers(controller1, controller2)[源代码]

Merge controller2 into controller1, returning a new dict.

pyqres.core.utils.reg_sz(reg_name)[源代码]
pyqres.core.utils.get_control_qubit_count(controllers)[源代码]
pyqres.core.utils.mcx_t_count(ncontrols)[源代码]

T-count for multi-controlled X gate.