Commit a2f79f67 authored by Murali's avatar Murali
Browse files

Saving circuit using QPY instead of OpenQASM3

parent d07e59d7
Loading
Loading
Loading
Loading
+57 −57
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@ import numpy as np

# Importing standard Qiskit libraries
from qiskit import QuantumCircuit, transpile
import qiskit.qasm3
from qiskit import qpy
from qiskit_aer import AerSimulator
from linear_solvers import NumPyLinearSolver, HHL
# library to generate matrix and vector for linear system of equations
@@ -31,6 +31,7 @@ parser.add_argument("--drawcirc", default=False, action='store_true', help="Draw
parser.add_argument("--savedata", default=False, action='store_true', help="Save data at `models/<filename>` with `<filename>` based on parameters.")
args = parser.parse_args()

if __name__ == '__main__':
    # Get system matrix and vector
    matrix, vector, input_vars = matvec.get_matrix_vector(args)
    MATRIX_SIZE = matrix.shape[0]
@@ -65,6 +66,7 @@ print(f'Time elapsed for generating HHL circuit: {int(t_circ/60)} min {t_circ%6
    
    # Save data
    if args.savedata:
        circ_transpile = transpile(circ, backend)
        # save metadata (DON'T USE Pickle to save the circuit - only works for a given version)
        save_data = {   'args'                  : args,
                        'input_vars'            : input_vars,
@@ -76,11 +78,9 @@ if args.savedata:
        file = open(f'{savefilename}.pkl', 'wb')
        pickle.dump(save_data, file)
        file.close()
    # save circuit as a QASM file
    circ_transpile = transpile(circ, backend)
    # circ_transpile.qasm(filename=f'{savefilename}.qasm')
    with open(f'{savefilename}.qasm', 'w') as ofile:
        qiskit.qasm3.dump(circ_transpile, ofile)
        # save circuit as QPY file
        with open(f'{savefilename}.qpy', 'wb') as fd:
            qpy.dump(circ_transpile, fd)
        print("===========Circuit saved===========")
    
    # Plot circuit