qiskit
IBM quantum computing framework. Use when targeting IBM Quantum hardware, working with Qiskit Runtime for production workloads, or needing IBM optimization tools. Best for IBM hardware execution, quantum error mitigation, and enterprise quantum computing. For Google hardware use cirq; for gradient-based quantum ML use pennylane; for open quantum system simulations use qutip.
Author
Category
Development ToolsInstall
Download and extract to your skills directory
Copy command and send to AI Agent for auto-install:
Qiskit
Overview
Qiskit is the world's most popular open-source quantum computing framework with 13M+ downloads. Build quantum circuits, optimize for hardware, execute on simulators or real quantum computers, and analyze results. Supports IBM Quantum (100+ qubit systems), IonQ, Amazon Braket, and other providers.
Key Features:
Quick Start
Installation
uv pip install qiskit
uv pip install "qiskit[visualization]" matplotlibFirst Circuit
from qiskit import QuantumCircuit
from qiskit.primitives import StatevectorSampler
# Create Bell state (entangled qubits)
qc = QuantumCircuit(2)
qc.h(0) # Hadamard on qubit 0
qc.cx(0, 1) # CNOT from qubit 0 to 1
qc.measure_all() # Measure both qubits
# Run locally
sampler = StatevectorSampler()
result = sampler.run([qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
print(counts) # {'00': ~512, '11': ~512}Visualization
from qiskit.visualization import plot_histogram
qc.draw('mpl') # Circuit diagram
plot_histogram(counts) # Results histogramCore Capabilities
1. Setup and Installation
For detailed installation, authentication, and IBM Quantum account setup:
references/setup.mdTopics covered:
2. Building Quantum Circuits
For constructing quantum circuits with gates, measurements, and composition:
references/circuits.mdTopics covered:
3. Primitives (Sampler and Estimator)
For executing quantum circuits and computing results:
references/primitives.mdTopics covered:
4. Transpilation and Optimization
For optimizing circuits and preparing for hardware execution:
references/transpilation.mdTopics covered:
5. Visualization
For displaying circuits, results, and quantum states:
references/visualization.mdTopics covered:
6. Hardware Backends
For running on simulators and real quantum computers:
references/backends.mdTopics covered:
7. Qiskit Patterns Workflow
For implementing the four-step quantum computing workflow:
references/patterns.mdTopics covered:
8. Quantum Algorithms and Applications
For implementing specific quantum algorithms:
references/algorithms.mdTopics covered:
Workflow Decision Guide
If you need to:
references/setup.mdreferences/circuits.mdreferences/circuits.mdreferences/primitives.mdreferences/primitives.mdreferences/transpilation.mdreferences/visualization.mdreferences/backends.mdreferences/backends.mdreferences/patterns.mdreferences/algorithms.mdreferences/algorithms.mdBest Practices
Development Workflow
from qiskit.primitives import StatevectorSampler
sampler = StatevectorSampler()from qiskit import transpile
qc_optimized = transpile(qc, backend=backend, optimization_level=3)- Sampler for bitstrings (optimization algorithms)
- Estimator for expectation values (chemistry, physics)
- Session: Iterative algorithms (VQE, QAOA)
- Batch: Independent parallel jobs
- Single job: One-off experiments
Performance Optimization
Hardware Execution
Common Patterns
Pattern 1: Simple Circuit Execution
from qiskit import QuantumCircuit, transpile
from qiskit.primitives import StatevectorSampler
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
sampler = StatevectorSampler()
result = sampler.run([qc], shots=1024).result()
counts = result[0].data.meas.get_counts()Pattern 2: Hardware Execution with Transpilation
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler
from qiskit import transpile
service = QiskitRuntimeService()
backend = service.backend("ibm_brisbane")
qc_optimized = transpile(qc, backend=backend, optimization_level=3)
sampler = Sampler(backend)
job = sampler.run([qc_optimized], shots=1024)
result = job.result()Pattern 3: Variational Algorithm (VQE)
from qiskit_ibm_runtime import Session, EstimatorV2 as Estimator
from scipy.optimize import minimize
with Session(backend=backend) as session:
estimator = Estimator(session=session)
def cost_function(params):
bound_qc = ansatz.assign_parameters(params)
qc_isa = transpile(bound_qc, backend=backend)
result = estimator.run([(qc_isa, hamiltonian)]).result()
return result[0].data.evs
result = minimize(cost_function, initial_params, method='COBYLA')