Skip to content

Configuration

QPyth can be configured through environment variables, configuration files, or programmatic settings.

Environment Variables

IBM Quantum Hardware

# Required for hardware execution
export QISKIT_IBM_TOKEN="your-ibm-quantum-token"

# Optional: Specify default backend
export QPYTH_BACKEND="ibm_brisbane"

# Optional: Set default number of shots
export QPYTH_SHOTS="1024"

Execution Mode

# Set execution mode: simulator, noisy_simulator, or hardware
export QPYTH_MODE="simulator"

# For noisy simulation, specify noise profile
export QPYTH_NOISE_PROFILE="ibm_brisbane"

Web UI

# Set backend host
export QPYTH_HOST="0.0.0.0"

# Set backend port
export QPYTH_PORT="8000"

# Enable/disable rate limiting
export QPYTH_RATE_LIMIT="true"

Configuration Files

TOML Configuration

Create a config.toml file in your project directory:

[backend]
name = "ibm_brisbane"
shots = 1024

[execution]
mode = "simulator"  # simulator, noisy_simulator, hardware

[noise]
profile = "ibm_brisbane"

[web]
host = "0.0.0.0"
port = 8000
rate_limit = true

Python Configuration

from quantumpytho.config import QuantumConfig, ExecutionMode

# Create custom configuration
config = QuantumConfig(
    backend="ibm_brisbane",
    shots=2048,
    mode=ExecutionMode.NOISY_SIMULATOR,
    noise_profile="ibm_brisbane"
)

# Use configuration
from quantumpytho.engine import QuantumEngine
engine = QuantumEngine(config=config)

Available Noise Profiles

QPyth includes noise profiles from IBM Quantum calibration data:

  • ibm_brisbane - 127-qubit processor
  • ibm_sherbrooke - 127-qubit processor
  • ibm_kyoto - 127-qubit processor
  • ibm_osaka - 127-qubit processor
  • ibm_perth - 127-qubit processor
  • ibm_quebec - 127-qubit processor
  • ibm_hanoi - 27-qubit processor
  • ibm_cusco - 27-qubit processor
  • ibm_algiers - 27-qubit processor
  • ibm_toronto - 27-qubit processor

Each profile includes: - Average T1 and T2 times - Readout error rates - Gate error rates - Qubit connectivity

Execution Modes

Simulator (Ideal)

Default mode using Qiskit Aer with no noise:

from quantumpytho.config import ExecutionMode

config = QuantumConfig(mode=ExecutionMode.SIMULATOR)

Noisy Simulator

Realistic simulation using IBM calibration data:

config = QuantumConfig(
    mode=ExecutionMode.NOISY_SIMULATOR,
    noise_profile="ibm_brisbane"
)

Hardware

Run on real IBM Quantum hardware:

config = QuantumConfig(
    mode=ExecutionMode.HARDWARE,
    backend="ibm_brisbane"
)

Advanced Configuration

Custom Noise Models

from qiskit_aer.noise import NoiseModel
from quantumpytho.modules.noise_builder import build_noise_model_from_profile

# Load custom noise profile
noise_model = build_noise_model_from_profile("custom_profile")

# Use with simulator
from qiskit_aer import AerSimulator
simulator = AerSimulator(noise_model=noise_model)

Backend Selection

from quantumpytho.modules.hardware_ibm import IBMHardwareEngine

# Connect to IBM Quantum
engine = IBMHardwareEngine()
engine.connect()

# List available backends
backends = engine.list_backends()
print(backends)

# Select least busy backend
backend = engine.select_backend(min_qubits=5)

Troubleshooting

IBM Quantum Token Issues

If you encounter authentication errors:

  1. Get your token from IBM Quantum
  2. Set the environment variable:
    export QISKIT_IBM_TOKEN="your-token"
    
  3. Verify connection:
    from quantumpytho.modules.hardware_ibm import IBMHardwareEngine
    engine = IBMHardwareEngine()
    engine.connect()
    

Noise Profile Not Found

If a noise profile is not available:

  1. Check available profiles:
    from quantumpytho.modules.hardware_ibm import NoisySimulatorEngine
    engine = NoisySimulatorEngine()
    profiles = engine.get_available_profiles()
    print(profiles)
    
  2. Use a different profile or fall back to ideal simulator

Performance Issues

For better performance:

  1. Increase shots for more accurate results
  2. Use noisy simulator instead of hardware for testing
  3. Optimize circuit depth
  4. Use appropriate backend for your circuit size

Next Steps