Search code examples
quantum-computing

Error during simulation: 'No counts for experiment


import numpy as np

from qiskit import QuantumCircuit, transpile

from qiskit_aer import AerSimulator

import subprocess

import threading

def create_quantum_circuit():

# Create a quantum circuit with 3 qubits

qc = QuantumCircuit(3)



# Generate superposition

qc.h(0)



# Add quantum phase

qc.p(np.pi/2, 0)



# Controlled-NOT gates

qc.cx(0, 1)

qc.cx(0, 2)



return qc

def simulate_quantum_circuit(qc):

# Simulate the circuit

backend = AerSimulator()

transpiled_circuit = transpile(qc, backend)



while True:

    try:

        print("Transpiled circuit:")

        print(transpiled_circuit)

        

        result = backend.run(transpiled_circuit).result()

        counts = result.get_counts(transpiled_circuit)

        yield counts

    except Exception as e:

        print("Error during simulation:", e)

def execute_linux_program():

# Prompt the user for the Linux command

command = input("Enter the Linux command to execute inside the quantum environment: ")



# Execute the provided command in a separate thread

def run_command():

    try:

        output = subprocess.check_output(command, shell=True, universal_newlines=True)

        print("Output of the command:")

        print(output)

    except subprocess.CalledProcessError as e:

        print("Error executing the command:", e)



thread = threading.Thread(target=run_command)

thread.start()

thread.join()

def main():

# Create the quantum circuit

quantum_circuit = create_quantum_circuit()



# Check if the circuit is empty or not properly defined

if quantum_circuit.width() == 0:

    print("Quantum circuit is empty or not properly defined.")

    return



# Continuously simulate and print the quantum circuit

simulator = simulate_quantum_circuit(quantum_circuit)

while True:

    try:

        counts = next(simulator)

        print("Quantum simulation results:", counts)

    except StopIteration:

        print("Simulation stopped.")

        break

    

    # Execute the Linux program (replace with your logic)

    execute_linux_program()

if name == "main":

main()

Output:

Error during simulation: 'No counts for experiment "<qiskit.circuit.quantumcircuit.QuantumCircuit object at 0x78a13eb1f0>"' Transpiled circuit: ┌───┐┌────────┐ q_0: ┤ H ├┤ P(π/2) ├──■────■── └───┘└────────┘┌─┴─┐ │ q_1: ───────────────┤ X ├──┼── └───┘┌─┴─┐ q_2: ────────────────────┤ X ├ └───┘

Expected Sustainability


Solution

  • An important thing that you are missing, is that the qubits in your circuit are not measured. If you don't include measurement in your circuits the AerSimulator() won't be able to get counts (or samples). To fix this just add measurement block to your circuit. Here is the corrected code:

    import numpy as np
    from qiskit import QuantumCircuit, transpile 
    from qiskit_aer import AerSimulator
    
    qc = QuantumCircuit(3)
    # Generate superposition
    qc.h(0)
    # Add quantum phase
    qc.p(np.pi/2, 0)
    
    # Controlled-NOT gates
    qc.cx(0, 1) qc.cx(0, 2)
    
    # Measure all qubits 
    qc.measure_all()    # This is the line that you missed
    
    # Simulate the circuit
    backend = AerSimulator()
    transpiled_circuit = transpile(qc, backend)
    result = backend.run(transpiled_circuit).result() 
    counts = result.get_counts(transpiled_circuit)
    
    print(counts)
    

    This generates the following output:

    {'000': 514, '111': 510}