Open
Description
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
Labels
No labels