Skip to content

Incorrect Partitioning #93

Open
Open
@glanzz

Description

@glanzz

I am trying to run the following circuit with and without partitioning:

import QuantumCircuit from 'quantum-circuit';
import fs from 'fs';


function getGates(circuit) {
  var gates  = {}
  circuit.forEach(qubit => {
    qubit.forEach(gate => {
      if (gate) {
        gates[gate.name] = gates[gate.name] ? gates[gate.name] + 1 : 1;
      }
    })
  });
  return gates;
}
function loadQASMCircuit(file) {
  let data = fs.readFileSync(file, 'utf-8');
  if (data) {
    const circuit = new QuantumCircuit();
    circuit.importQASM(data, function(errors) {
      if (errors) {
        console.log("Errors:",errors);
      }
    });
    return circuit;
  } else {
    console.error('Error reading file:', err);
    return null;
  }
}

const neewss = loadQASMCircuit("mycircuit.qasm")
/*
// mycircuit.qasm
OPENQASM 2.0;
include "qelib1.inc";
qreg q[3];
creg c[2];
h q[0];
h q[1];
h q[2];
s q[2];
s q[2];
h q[2];
h q[2];
cx q[0],q[2];
cx q[1],q[2];
h q[0];
h q[1];
h q[1];
h q[0];
cx q[1],q[2];
cx q[0],q[2];
h q[2];
x q[2];
h q[1];
h q[0];
*/


for(let circuit of [neewss]) {
  const shots = 100;
  const results = {};
  console.log("********".repeat(10))
  let initalValues = []
  for(let i =0; i<circuit.numQubits; i++) {
    initalValues.push(1);
  }

  console.log(initalValues)
  for (let i = 0; i < shots; i++) {
      circuit.run(initalValues, {partitioning: false});
      const measuredState = circuit.measureAll();
      const bitstring = measuredState.map(bit => bit ? '1' : '0').join('');
      if (!results[bitstring]) {
          results[bitstring] = 0;
      }
      results[bitstring]++;
  }
  console.log(getGates(circuit.gates))
  console.log(results)
}

The expected result is state 111 for all 100 shots i.e: { '111': 100 }
But with partitioning the result is not as expected it is {'010': 100}

What is partitioning meant to do, i see that documentation lacks this...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions