@@ -580,21 +580,39 @@ def to_openqasm(self, **kws: Any) -> str:
580
580
581
581
@classmethod
582
582
def from_openqasm (
583
- cls , qasmstr : str , circuit_params : Optional [Dict [str , Any ]] = None
583
+ cls ,
584
+ qasmstr : str ,
585
+ circuit_params : Optional [Dict [str , Any ]] = None ,
586
+ keep_measure_order : bool = False ,
584
587
) -> "AbstractCircuit" :
585
588
from qiskit .circuit import QuantumCircuit
586
589
587
- qiskit_circ = QuantumCircuit .from_qasm_str (qasmstr )
590
+ if keep_measure_order is True :
591
+ from .translation import qiskit_from_qasm_str_ordered_measure
592
+
593
+ qiskit_circ = qiskit_from_qasm_str_ordered_measure (qasmstr )
594
+ else :
595
+ qiskit_circ = QuantumCircuit .from_qasm_str (qasmstr )
588
596
c = cls .from_qiskit (qiskit_circ , circuit_params = circuit_params )
589
597
return c
590
598
591
599
@classmethod
592
600
def from_openqasm_file (
593
- cls , file : str , circuit_params : Optional [Dict [str , Any ]] = None
601
+ cls ,
602
+ file : str ,
603
+ circuit_params : Optional [Dict [str , Any ]] = None ,
604
+ keep_measure_order : bool = False ,
594
605
) -> "AbstractCircuit" :
595
606
from qiskit .circuit import QuantumCircuit
596
607
597
- qiskit_circ = QuantumCircuit .from_qasm_file (file )
608
+ if keep_measure_order is True :
609
+ from .translation import qiskit_from_qasm_str_ordered_measure
610
+
611
+ with open (file ) as f :
612
+ qasmstr = f .read ()
613
+ qiskit_circ = qiskit_from_qasm_str_ordered_measure (qasmstr )
614
+ else :
615
+ qiskit_circ = QuantumCircuit .from_qasm_file (file )
598
616
c = cls .from_qiskit (qiskit_circ , circuit_params = circuit_params )
599
617
return c
600
618
0 commit comments