or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

circuits.mddevices.mdindex.mdlinalg.mdops.mdprotocols.mdqis.mdremaining-modules.mdsim.mdstudy.mdtransformers.md

remaining-modules.mddocs/

0

# Additional Modules

1

2

This document covers the remaining modules in cirq: value utilities, visualization, workflow management, experiments, and interoperability.

3

4

## Value Types and Utilities

5

6

### Duration and Time

7

8

```python { .api }

9

class Duration:

10

"""Represents a time duration."""

11

12

def __init__(self, *, picos: int = 0, nanos: int = 0,

13

micros: int = 0, millis: int = 0) -> None:

14

"""Initialize duration from various time units."""

15

16

@property

17

def total_picos(self) -> int:

18

"""Total duration in picoseconds."""

19

20

@property

21

def total_nanos(self) -> float:

22

"""Total duration in nanoseconds."""

23

24

def __add__(self, other: 'Duration') -> 'Duration':

25

"""Add durations."""

26

27

class Timestamp:

28

"""Represents a point in time."""

29

30

def __init__(self, *, picos: int = 0, nanos: int = 0) -> None:

31

"""Initialize timestamp."""

32

33

DURATION_LIKE = Union[Duration, float, int]

34

```

35

36

### Measurement Keys and Classical Data

37

38

```python { .api }

39

class MeasurementKey:

40

"""Identifies measurement results."""

41

42

def __init__(self, name: str, path: Tuple[str, ...] = ()) -> None:

43

"""Initialize measurement key."""

44

45

class ClassicalDataStore:

46

"""Interface for classical data storage."""

47

48

def copy(self) -> 'ClassicalDataStore':

49

"""Create copy of data store."""

50

51

class LinearDict:

52

"""Dictionary with linear operations."""

53

54

def __init__(self, terms: Dict[Any, Union[int, float, complex]] = None) -> None:

55

"""Initialize linear dictionary."""

56

```

57

58

### Product States

59

60

```python { .api }

61

class ProductState:

62

"""Represents a product state."""

63

64

def __init__(self, states: Dict['cirq.Qid', int]) -> None:

65

"""Initialize product state."""

66

67

# Standard states

68

KET_PLUS: ProductState # |+⟩ state

69

KET_MINUS: ProductState # |−⟩ state

70

KET_IMAG: ProductState # |i⟩ state

71

KET_MINUS_IMAG: ProductState # |−i⟩ state

72

KET_ZERO: ProductState # |0⟩ state

73

KET_ONE: ProductState # |1⟩ state

74

PAULI_STATES: Tuple[ProductState, ...] # All Pauli eigenstates

75

```

76

77

## Visualization Tools

78

79

### Heatmaps

80

81

```python { .api }

82

class Heatmap:

83

"""General heatmap visualization."""

84

85

def __init__(self, value_map: Mapping[Tuple[int, ...], float]) -> None:

86

"""Initialize heatmap with value mapping."""

87

88

def plot(self, ax: 'matplotlib.axes.Axes' = None) -> 'matplotlib.axes.Axes':

89

"""Plot heatmap."""

90

91

class TwoQubitInteractionHeatmap(Heatmap):

92

"""Heatmap for two-qubit interactions."""

93

94

def __init__(self, interaction_map: Mapping[Tuple['cirq.Qid', 'cirq.Qid'], float]) -> None:

95

"""Initialize two-qubit interaction heatmap."""

96

```

97

98

### State and Result Visualization

99

100

```python { .api }

101

def plot_state_histogram(result: 'cirq.Result',

102

ax: 'matplotlib.axes.Axes' = None) -> 'matplotlib.axes.Axes':

103

"""Plot histogram of measurement results."""

104

105

def get_state_histogram(result: 'cirq.Result') -> Dict[int, int]:

106

"""Get histogram data from measurement results."""

107

108

def integrated_histogram(data: Sequence[int],

109

max_count: Optional[int] = None) -> Dict[int, int]:

110

"""Create integrated histogram."""

111

112

def plot_density_matrix(matrix: np.ndarray,

113

ax: 'matplotlib.axes.Axes' = None) -> None:

114

"""Visualize density matrix as bar chart."""

115

116

def relative_luminance(rgb: Tuple[float, float, float]) -> float:

117

"""Calculate relative luminance for colors."""

118

```

119

120

## Workflow and Sampling

121

122

### Sampler Framework

123

124

```python { .api }

125

class Sampler:

126

"""Abstract base class for samplers."""

127

128

def run(self, program: 'cirq.CIRCUIT_LIKE',

129

param_resolver: 'cirq.ParamResolverOrSimilarType' = None,

130

repetitions: int = 1) -> 'cirq.Result':

131

"""Run circuit and return measurement results."""

132

133

class ZerosSampler(Sampler):

134

"""Sampler that returns all-zero results."""

135

136

def __init__(self) -> None:

137

"""Initialize zeros sampler."""

138

```

139

140

### Collection Framework

141

142

```python { .api }

143

class Collector:

144

"""Abstract base for result collection."""

145

146

def collect(self, circuit: 'cirq.Circuit',

147

repetitions: int,

148

sweep: 'cirq.Sweepable' = None) -> Any:

149

"""Collect results from circuit execution."""

150

151

class CircuitSampleJob:

152

"""Job for circuit sampling."""

153

154

def __init__(self, circuit: 'cirq.Circuit',

155

repetitions: int = 1,

156

sweep: 'cirq.Sweepable' = None) -> None:

157

"""Initialize sampling job."""

158

159

class PauliSumCollector(Collector):

160

"""Collector for Pauli sum measurements."""

161

162

def __init__(self, circuit: 'cirq.Circuit',

163

observables: List['cirq.PauliSum'],

164

sampler: 'cirq.Sampler') -> None:

165

"""Initialize Pauli sum collector."""

166

```

167

168

### Observable Management

169

170

```python { .api }

171

class InitObsSetting:

172

"""Initial observable setting."""

173

174

def __init__(self, observable: 'cirq.PauliString') -> None:

175

"""Initialize observable setting."""

176

177

def observables_to_settings(observables: Sequence['cirq.PauliString']) -> List[InitObsSetting]:

178

"""Convert observables to settings."""

179

180

def group_settings_greedy(settings: Sequence[InitObsSetting]) -> List[List[InitObsSetting]]:

181

"""Group settings using greedy algorithm."""

182

```

183

184

## Experiments and Characterization

185

186

### Randomized Benchmarking

187

188

```python { .api }

189

def single_qubit_randomized_benchmarking(sampler: 'cirq.Sampler',

190

qubit: 'cirq.Qid',

191

use_cliffords: bool = True) -> 'RandomizedBenchMarkResult':

192

"""Single-qubit randomized benchmarking experiment."""

193

194

def two_qubit_randomized_benchmarking(sampler: 'cirq.Sampler',

195

qubits: Sequence['cirq.Qid']) -> 'RandomizedBenchMarkResult':

196

"""Two-qubit randomized benchmarking experiment."""

197

198

class RandomizedBenchMarkResult:

199

"""Result of randomized benchmarking experiment."""

200

201

def __init__(self, decay_constant: float,

202

confidence_interval: Tuple[float, float]) -> None:

203

"""Initialize RB result."""

204

```

205

206

### Fidelity Estimation

207

208

```python { .api }

209

def xeb_fidelity(circuit_results: Dict['cirq.Circuit', List[int]],

210

simulated_probs: Dict['cirq.Circuit', np.ndarray]) -> float:

211

"""Cross-entropy benchmarking fidelity."""

212

213

def linear_xeb_fidelity(measured_probabilities: Sequence[float],

214

ideal_probabilities: Sequence[float]) -> float:

215

"""Linear XEB fidelity calculation."""

216

217

def log_xeb_fidelity_from_probabilities(hilbert_space_dimension: int,

218

measured_probabilities: Sequence[float]) -> float:

219

"""Logarithmic XEB fidelity from probabilities."""

220

221

def hog_score_xeb_fidelity_from_probabilities(measured_probabilities: Sequence[float],

222

uniform_probabilities: Sequence[float]) -> float:

223

"""HOG score XEB fidelity calculation."""

224

```

225

226

### State Tomography

227

228

```python { .api }

229

def single_qubit_state_tomography(sampler: 'cirq.Sampler',

230

qubit: 'cirq.Qid',

231

circuit: 'cirq.Circuit') -> 'TomographyResult':

232

"""Single-qubit state tomography experiment."""

233

234

def two_qubit_state_tomography(sampler: 'cirq.Sampler',

235

qubits: Sequence['cirq.Qid'],

236

circuit: 'cirq.Circuit') -> 'TomographyResult':

237

"""Two-qubit state tomography experiment."""

238

239

class TomographyResult:

240

"""Result of quantum tomography experiment."""

241

242

def __init__(self, reconstructed_state: np.ndarray,

243

fidelity: float) -> None:

244

"""Initialize tomography result."""

245

```

246

247

### Coherence Time Measurements

248

249

```python { .api }

250

def t1_decay(sampler: 'cirq.Sampler',

251

qubit: 'cirq.Qid',

252

max_delay: 'cirq.Duration') -> 'T1DecayResult':

253

"""T1 decay time measurement."""

254

255

def t2_decay(sampler: 'cirq.Sampler',

256

qubit: 'cirq.Qid',

257

max_delay: 'cirq.Duration') -> 'T2DecayResult':

258

"""T2 dephasing time measurement."""

259

260

class T1DecayResult:

261

"""T1 decay measurement result."""

262

263

def __init__(self, t1_time: 'cirq.Duration',

264

fit_quality: float) -> None:

265

"""Initialize T1 result."""

266

267

class T2DecayResult:

268

"""T2 decay measurement result."""

269

270

def __init__(self, t2_time: 'cirq.Duration',

271

fit_quality: float) -> None:

272

"""Initialize T2 result."""

273

```

274

275

### Readout Error Characterization

276

277

```python { .api }

278

def estimate_single_qubit_readout_errors(sampler: 'cirq.Sampler',

279

qubit: 'cirq.Qid') -> 'SingleQubitReadoutCalibrationResult':

280

"""Estimate single-qubit readout errors."""

281

282

def measure_confusion_matrix(sampler: 'cirq.Sampler',

283

qubits: Sequence['cirq.Qid']) -> 'TensoredConfusionMatrices':

284

"""Measure readout confusion matrix."""

285

286

class SingleQubitReadoutCalibrationResult:

287

"""Single-qubit readout calibration result."""

288

289

def __init__(self, zero_state_errors: Tuple[float, float],

290

one_state_errors: Tuple[float, float]) -> None:

291

"""Initialize readout calibration result."""

292

293

class TensoredConfusionMatrices:

294

"""Tensor product of confusion matrices."""

295

296

def __init__(self, confusion_matrices: Sequence[np.ndarray]) -> None:

297

"""Initialize tensored confusion matrices."""

298

```

299

300

## Interoperability

301

302

### Quirk Integration

303

304

```python { .api }

305

def quirk_json_to_circuit(json_text: str) -> 'cirq.Circuit':

306

"""Convert Quirk JSON to Cirq circuit.

307

308

Args:

309

json_text: Quirk circuit as JSON string

310

311

Returns:

312

Equivalent Cirq circuit

313

"""

314

315

def quirk_url_to_circuit(url: str) -> 'cirq.Circuit':

316

"""Convert Quirk URL to Cirq circuit.

317

318

Args:

319

url: Quirk circuit URL

320

321

Returns:

322

Equivalent Cirq circuit

323

"""

324

```

325

326

### Neutral Atoms Support

327

328

```python { .api }

329

def is_native_neutral_atom_gate(gate: 'cirq.Gate') -> bool:

330

"""Check if gate is native to neutral atom systems."""

331

332

def is_native_neutral_atom_op(operation: 'cirq.Operation') -> bool:

333

"""Check if operation is native to neutral atoms."""

334

```

335

336

## Usage Examples

337

338

### Duration and Timing

339

340

```python

341

import cirq

342

343

# Create durations

344

duration1 = cirq.Duration(nanos=50) # 50 ns

345

duration2 = cirq.Duration(micros=1) # 1 μs

346

347

print(f"Duration 1: {duration1.total_nanos} ns")

348

print(f"Duration 2: {duration2.total_nanos} ns")

349

350

# Add durations

351

total_duration = duration1 + duration2

352

print(f"Total: {total_duration.total_nanos} ns")

353

354

# Create timestamp

355

timestamp = cirq.Timestamp(nanos=100)

356

print(f"Timestamp: {timestamp}")

357

```

358

359

### Measurement Results Visualization

360

361

```python

362

import cirq

363

import matplotlib.pyplot as plt

364

365

# Create circuit and get results

366

qubits = cirq.LineQubit.range(2)

367

circuit = cirq.Circuit([

368

cirq.H(qubits[0]),

369

cirq.CNOT(qubits[0], qubits[1]),

370

cirq.measure(*qubits, key='bell_pair')

371

])

372

373

simulator = cirq.Simulator()

374

result = simulator.run(circuit, repetitions=1000)

375

376

# Plot histogram

377

fig, ax = plt.subplots()

378

cirq.plot_state_histogram(result, ax=ax)

379

ax.set_title('Bell State Measurement Results')

380

plt.show()

381

382

# Get histogram data

383

histogram = cirq.get_state_histogram(result)

384

print(f"Measurement histogram: {histogram}")

385

```

386

387

### Working with Product States

388

389

```python

390

import cirq

391

392

# Use predefined product states

393

qubits = cirq.LineQubit.range(2)

394

395

# Create circuit preparing |+0⟩ state

396

circuit = cirq.Circuit([

397

cirq.H(qubits[0]) # |0⟩ → |+⟩

398

# qubits[1] stays in |0⟩

399

])

400

401

print("Pauli eigenstates:")

402

for i, state in enumerate(cirq.PAULI_STATES):

403

print(f" State {i}: {state}")

404

405

# Use in circuit initialization

406

initial_state = {qubits[0]: 0, qubits[1]: 1} # |01⟩

407

product_state = cirq.ProductState(initial_state)

408

print(f"Product state |01⟩: {product_state}")

409

```

410

411

### Simple Experiments

412

413

```python

414

import cirq

415

import numpy as np

416

417

# Simulate a simple RB experiment

418

print("=== Randomized Benchmarking ===")

419

simulator = cirq.Simulator()

420

qubit = cirq.LineQubit(0)

421

422

# Create mock RB result (in practice, use real hardware sampler)

423

mock_decay = 0.02 # 2% error per Clifford

424

mock_rb_result = cirq.RandomizedBenchMarkResult(

425

decay_constant=mock_decay,

426

confidence_interval=(0.015, 0.025)

427

)

428

429

print(f"RB decay constant: {mock_rb_result.decay_constant}")

430

print(f"Confidence interval: {mock_rb_result.confidence_interval}")

431

432

# XEB fidelity calculation

433

print("\n=== XEB Fidelity ===")

434

# Mock data

435

measured_probs = [0.24, 0.26, 0.23, 0.27] # Measured probabilities

436

ideal_probs = [0.25, 0.25, 0.25, 0.25] # Ideal uniform probabilities

437

438

linear_fidelity = cirq.linear_xeb_fidelity(measured_probs, ideal_probs)

439

print(f"Linear XEB fidelity: {linear_fidelity:.4f}")

440

```

441

442

### Interoperability Examples

443

444

```python

445

import cirq

446

447

# Convert from Quirk (example JSON)

448

quirk_json = '''

449

{

450

"cols": [

451

["H"],

452

["•", "X"]

453

]

454

}

455

'''

456

457

try:

458

# This would work with actual Quirk integration

459

# quirk_circuit = cirq.quirk_json_to_circuit(quirk_json)

460

# print("Converted Quirk circuit:")

461

# print(quirk_circuit)

462

print("Quirk integration available via quirk_json_to_circuit()")

463

except:

464

print("Quirk integration requires proper JSON format")

465

466

# Check neutral atom compatibility

467

h_gate = cirq.H

468

x_gate = cirq.X

469

470

print(f"H gate native to neutral atoms: {cirq.is_native_neutral_atom_gate(h_gate)}")

471

print(f"X gate native to neutral atoms: {cirq.is_native_neutral_atom_gate(x_gate)}")

472

```

473

474

This completes the comprehensive documentation of cirq's additional modules, providing tools for timing, visualization, workflow management, quantum experiments, and integration with other quantum software platforms.