diff --git a/qiskit_ibm_runtime/fake_provider/backends/fractional/conf_fractional.json b/qiskit_ibm_runtime/fake_provider/backends/fractional/conf_fractional.json index 7224d45c0..d5b755c6b 100644 --- a/qiskit_ibm_runtime/fake_provider/backends/fractional/conf_fractional.json +++ b/qiskit_ibm_runtime/fake_provider/backends/fractional/conf_fractional.json @@ -1 +1 @@ -{"backend_name": "fake_fractional", "backend_version": "1.0.5", "n_qubits": 5, "basis_gates": ["id", "rz", "sx", "x", "cx", "reset", "rx", "rzx", "rzz"], "gates": [{"name": "id", "parameters": [], "qasm_def": "gate id q { U(0, 0, 0) q; }", "coupling_map": [[0], [1], [2], [3], [4]]}, {"name": "rz", "parameters": ["theta"], "qasm_def": "gate rz(theta) q { U(0, 0, theta) q; }", "coupling_map": [[0], [1], [2], [3], [4]]}, {"name": "sx", "parameters": [], "qasm_def": "gate sx q { U(pi/2, 3*pi/2, pi/2) q; }", "coupling_map": [[0], [1], [2], [3], [4]]}, {"name": "x", "parameters": [], "qasm_def": "gate x q { U(pi, 0, pi) q; }", "coupling_map": [[0], [1], [2], [3], [4]]}, {"name": "cx", "parameters": [], "qasm_def": "gate cx q0, q1 { CX q0, q1; }", "coupling_map": [[0, 1], [1, 0], [1, 2], [1, 3], [2, 1], [3, 1], [3, 4], [4, 3]]}, {"name": "reset", "parameters": null, "qasm_def": null}], "local": false, "simulator": false, "conditional": false, "open_pulse": true, "memory": true, "max_shots": 8192, "coupling_map": [[0, 1], [1, 0], [1, 2], [1, 3], [2, 1], [3, 1], [3, 4], [4, 3]], "dynamic_reprate_enabled": true, "supported_instructions": ["measure", "u3", "setf", "x", "delay", "id", "acquire", "sx", "u2", "u1", "cx", "shiftf", "play", "rz", "reset", "rx", "rzx", "if_else", "while_loop"], "rep_delay_range": [0.0, 500.0], "default_rep_delay": 250.0, "max_experiments": 900, "sample_name": "family: Falcon, revision: 4, segment: T", "n_registers": 1, "credits_required": true, "online_date": "2021-01-08T05:00:00+00:00", "description": "5 qubit device fractional tester", "dt": 0.2222222222222222, "dtm": 0.2222222222222222, "processor_type": {"family": "Falcon", "revision": 4, "segment": "T"}, "parametric_pulses": ["gaussian", "gaussian_square", "drag", "constant"], "allow_q_object": true, "multi_meas_enabled": true, "quantum_volume": 8, "qubit_channel_mapping": [["u0", "m0", "d0", "u1"], ["u4", "u3", "u0", "u2", "m1", "u1", "d1", "u5"], ["d2", "u4", "u2", "m2"], ["u3", "u7", "m3", "d3", "u6", "u5"], ["d4", "u6", "m4", "u7"]], "uchannels_enabled": true, "url": "None", "allow_object_storage": true, "n_uchannels": 8, "u_channel_lo": [[{"q": 1, "scale": [1.0, 0.0]}], [{"q": 0, "scale": [1.0, 0.0]}], [{"q": 2, "scale": [1.0, 0.0]}], [{"q": 3, "scale": [1.0, 0.0]}], [{"q": 1, "scale": [1.0, 0.0]}], [{"q": 1, "scale": [1.0, 0.0]}], [{"q": 4, "scale": [1.0, 0.0]}], [{"q": 3, "scale": [1.0, 0.0]}]], "meas_levels": [1, 2], "qubit_lo_range": [[4.52968554992376, 5.52968554992376], [4.628321697435369, 5.628321697435369], [4.74749131011471, 5.74749131011471], [4.803339662601714, 5.803339662601714], [4.591790567452984, 5.5917905674529855]], "meas_lo_range": [[6.925143125000002, 7.925143125000002], [6.721646720000002, 7.721646720000002], [6.971842939, 7.971842939], [6.8653172320000015, 7.8653172320000015], [6.919067567000002, 7.919067567000002]], "meas_kernels": ["hw_boxcar"], "discriminators": ["hw_centroid", "linear_discriminator", "quadratic_discriminator"], "rep_times": [1000.0], "meas_map": [[0, 1, 2, 3, 4]], "acquisition_latency": [], "conditional_latency": [], "hamiltonian": {"description": "Qubits are modeled as Duffing oscillators. In this case, the system includes higher energy states, i.e. not just |0> and |1>. The Pauli operators are generalized via the following set of transformations:\n\n$(\\mathbb{I}-\\sigma_{i}^z)/2 \\rightarrow O_i \\equiv b^\\dagger_{i} b_{i}$,\n\n$\\sigma_{+} \\rightarrow b^\\dagger$,\n\n$\\sigma_{-} \\rightarrow b$,\n\n$\\sigma_{i}^X \\rightarrow b^\\dagger_{i} + b_{i}$.\n\nQubits are coupled through resonator buses. The provided Hamiltonian has been projected into the zero excitation subspace of the resonator buses leading to an effective qubit-qubit flip-flop interaction. The qubit resonance frequencies in the Hamiltonian are the cavity dressed frequencies and not exactly what is returned by the backend defaults, which also includes the dressing due to the qubit-qubit interactions.\n\nQuantities are returned in angular frequencies, with units 2*pi*GHz.\n\nWARNING: Currently not all system Hamiltonian information is available to the public, missing values have been replaced with 0.\n", "h_latex": "\\begin{align} \\mathcal{H}/\\hbar = & \\sum_{i=0}^{4}\\left(\\frac{\\omega_{q,i}}{2}(\\mathbb{I}-\\sigma_i^{z})+\\frac{\\Delta_{i}}{2}(O_i^2-O_i)+\\Omega_{d,i}D_i(t)\\sigma_i^{X}\\right) \\\\ & + J_{0,1}(\\sigma_{0}^{+}\\sigma_{1}^{-}+\\sigma_{0}^{-}\\sigma_{1}^{+}) + J_{1,3}(\\sigma_{1}^{+}\\sigma_{3}^{-}+\\sigma_{1}^{-}\\sigma_{3}^{+}) + J_{3,4}(\\sigma_{3}^{+}\\sigma_{4}^{-}+\\sigma_{3}^{-}\\sigma_{4}^{+}) + J_{1,2}(\\sigma_{1}^{+}\\sigma_{2}^{-}+\\sigma_{1}^{-}\\sigma_{2}^{+}) \\\\ & + \\Omega_{d,0}(U_{0}^{(0,1)}(t))\\sigma_{0}^{X} + \\Omega_{d,1}(U_{1}^{(1,0)}(t)+U_{3}^{(1,3)}(t)+U_{2}^{(1,2)}(t))\\sigma_{1}^{X} \\\\ & + \\Omega_{d,2}(U_{4}^{(2,1)}(t))\\sigma_{2}^{X} + \\Omega_{d,3}(U_{5}^{(3,1)}(t)+U_{6}^{(3,4)}(t))\\sigma_{3}^{X} \\\\ & + \\Omega_{d,4}(U_{7}^{(4,3)}(t))\\sigma_{4}^{X} \\\\ \\end{align}", "h_str": ["_SUM[i,0,4,wq{i}/2*(I{i}-Z{i})]", "_SUM[i,0,4,delta{i}/2*O{i}*O{i}]", "_SUM[i,0,4,-delta{i}/2*O{i}]", "_SUM[i,0,4,omegad{i}*X{i}||D{i}]", "jq0q1*Sp0*Sm1", "jq0q1*Sm0*Sp1", "jq1q3*Sp1*Sm3", "jq1q3*Sm1*Sp3", "jq3q4*Sp3*Sm4", "jq3q4*Sm3*Sp4", "jq1q2*Sp1*Sm2", "jq1q2*Sm1*Sp2", "omegad1*X0||U0", "omegad0*X1||U1", "omegad3*X1||U3", "omegad2*X1||U2", "omegad1*X2||U4", "omegad1*X3||U5", "omegad4*X3||U6", "omegad3*X4||U7"], "osc": {}, "qub": {"0": 3, "1": 3, "2": 3, "3": 3, "4": 3}, "vars": {"delta0": -2.109526390232452, "delta1": -2.0002465324219205, "delta2": -2.0960936199138844, "delta3": -2.0812544393432897, "delta4": -2.1015348325639516, "jq0q1": 0.011088625669671271, "jq1q2": 0.011792549393436344, "jq1q3": 0.011913891984976948, "jq3q4": 0.01165632975311803, "omegad0": 1.5262727915514445, "omegad1": 1.2641690419030664, "omegad2": 1.3397127967877365, "omegad3": 1.509152095855826, "omegad4": 1.497387831726462, "wq0": 31.602446347014453, "wq1": 32.222195539816184, "wq2": 32.9709602992653, "wq3": 33.321865847041835, "wq4": 31.992663680656207}}, "channels": {"acquire0": {"operates": {"qubits": [0]}, "purpose": "acquire", "type": "acquire"}, "acquire1": {"operates": {"qubits": [1]}, "purpose": "acquire", "type": "acquire"}, "acquire2": {"operates": {"qubits": [2]}, "purpose": "acquire", "type": "acquire"}, "acquire3": {"operates": {"qubits": [3]}, "purpose": "acquire", "type": "acquire"}, "acquire4": {"operates": {"qubits": [4]}, "purpose": "acquire", "type": "acquire"}, "d0": {"operates": {"qubits": [0]}, "purpose": "drive", "type": "drive"}, "d1": {"operates": {"qubits": [1]}, "purpose": "drive", "type": "drive"}, "d2": {"operates": {"qubits": [2]}, "purpose": "drive", "type": "drive"}, "d3": {"operates": {"qubits": [3]}, "purpose": "drive", "type": "drive"}, "d4": {"operates": {"qubits": [4]}, "purpose": "drive", "type": "drive"}, "m0": {"operates": {"qubits": [0]}, "purpose": "measure", "type": "measure"}, "m1": {"operates": {"qubits": [1]}, "purpose": "measure", "type": "measure"}, "m2": {"operates": {"qubits": [2]}, "purpose": "measure", "type": "measure"}, "m3": {"operates": {"qubits": [3]}, "purpose": "measure", "type": "measure"}, "m4": {"operates": {"qubits": [4]}, "purpose": "measure", "type": "measure"}, "u0": {"operates": {"qubits": [0, 1]}, "purpose": "cross-resonance", "type": "control"}, "u1": {"operates": {"qubits": [1, 0]}, "purpose": "cross-resonance", "type": "control"}, "u2": {"operates": {"qubits": [1, 2]}, "purpose": "cross-resonance", "type": "control"}, "u3": {"operates": {"qubits": [1, 3]}, "purpose": "cross-resonance", "type": "control"}, "u4": {"operates": {"qubits": [2, 1]}, "purpose": "cross-resonance", "type": "control"}, "u5": {"operates": {"qubits": [3, 1]}, "purpose": "cross-resonance", "type": "control"}, "u6": {"operates": {"qubits": [3, 4]}, "purpose": "cross-resonance", "type": "control"}, "u7": {"operates": {"qubits": [4, 3]}, "purpose": "cross-resonance", "type": "control"}}} \ No newline at end of file +{"backend_name": "fake_fractional", "backend_version": "1.0.5", "n_qubits": 5, "basis_gates": ["id", "rz", "sx", "x", "cx", "reset", "rx", "rzz"], "gates": [{"name": "id", "parameters": [], "qasm_def": "gate id q { U(0, 0, 0) q; }", "coupling_map": [[0], [1], [2], [3], [4]]}, {"name": "rz", "parameters": ["theta"], "qasm_def": "gate rz(theta) q { U(0, 0, theta) q; }", "coupling_map": [[0], [1], [2], [3], [4]]}, {"name": "sx", "parameters": [], "qasm_def": "gate sx q { U(pi/2, 3*pi/2, pi/2) q; }", "coupling_map": [[0], [1], [2], [3], [4]]}, {"name": "x", "parameters": [], "qasm_def": "gate x q { U(pi, 0, pi) q; }", "coupling_map": [[0], [1], [2], [3], [4]]}, {"name": "cx", "parameters": [], "qasm_def": "gate cx q0, q1 { CX q0, q1; }", "coupling_map": [[0, 1], [1, 0], [1, 2], [1, 3], [2, 1], [3, 1], [3, 4], [4, 3]]}, {"name": "reset", "parameters": null, "qasm_def": null}], "local": false, "simulator": false, "conditional": false, "open_pulse": true, "memory": true, "max_shots": 8192, "coupling_map": [[0, 1], [1, 0], [1, 2], [1, 3], [2, 1], [3, 1], [3, 4], [4, 3]], "dynamic_reprate_enabled": true, "supported_instructions": ["measure", "u3", "setf", "x", "delay", "id", "acquire", "sx", "u2", "u1", "cx", "shiftf", "play", "rz", "reset", "rx", "rzz", "if_else", "while_loop"], "rep_delay_range": [0.0, 500.0], "default_rep_delay": 250.0, "max_experiments": 900, "sample_name": "family: Falcon, revision: 4, segment: T", "n_registers": 1, "credits_required": true, "online_date": "2021-01-08T05:00:00+00:00", "description": "5 qubit device fractional tester", "dt": 0.2222222222222222, "dtm": 0.2222222222222222, "processor_type": {"family": "Falcon", "revision": 4, "segment": "T"}, "parametric_pulses": ["gaussian", "gaussian_square", "drag", "constant"], "allow_q_object": true, "multi_meas_enabled": true, "quantum_volume": 8, "qubit_channel_mapping": [["u0", "m0", "d0", "u1"], ["u4", "u3", "u0", "u2", "m1", "u1", "d1", "u5"], ["d2", "u4", "u2", "m2"], ["u3", "u7", "m3", "d3", "u6", "u5"], ["d4", "u6", "m4", "u7"]], "uchannels_enabled": true, "url": "None", "allow_object_storage": true, "n_uchannels": 8, "u_channel_lo": [[{"q": 1, "scale": [1.0, 0.0]}], [{"q": 0, "scale": [1.0, 0.0]}], [{"q": 2, "scale": [1.0, 0.0]}], [{"q": 3, "scale": [1.0, 0.0]}], [{"q": 1, "scale": [1.0, 0.0]}], [{"q": 1, "scale": [1.0, 0.0]}], [{"q": 4, "scale": [1.0, 0.0]}], [{"q": 3, "scale": [1.0, 0.0]}]], "meas_levels": [1, 2], "qubit_lo_range": [[4.52968554992376, 5.52968554992376], [4.628321697435369, 5.628321697435369], [4.74749131011471, 5.74749131011471], [4.803339662601714, 5.803339662601714], [4.591790567452984, 5.5917905674529855]], "meas_lo_range": [[6.925143125000002, 7.925143125000002], [6.721646720000002, 7.721646720000002], [6.971842939, 7.971842939], [6.8653172320000015, 7.8653172320000015], [6.919067567000002, 7.919067567000002]], "meas_kernels": ["hw_boxcar"], "discriminators": ["hw_centroid", "linear_discriminator", "quadratic_discriminator"], "rep_times": [1000.0], "meas_map": [[0, 1, 2, 3, 4]], "acquisition_latency": [], "conditional_latency": [], "hamiltonian": {"description": "Qubits are modeled as Duffing oscillators. In this case, the system includes higher energy states, i.e. not just |0> and |1>. The Pauli operators are generalized via the following set of transformations:\n\n$(\\mathbb{I}-\\sigma_{i}^z)/2 \\rightarrow O_i \\equiv b^\\dagger_{i} b_{i}$,\n\n$\\sigma_{+} \\rightarrow b^\\dagger$,\n\n$\\sigma_{-} \\rightarrow b$,\n\n$\\sigma_{i}^X \\rightarrow b^\\dagger_{i} + b_{i}$.\n\nQubits are coupled through resonator buses. The provided Hamiltonian has been projected into the zero excitation subspace of the resonator buses leading to an effective qubit-qubit flip-flop interaction. The qubit resonance frequencies in the Hamiltonian are the cavity dressed frequencies and not exactly what is returned by the backend defaults, which also includes the dressing due to the qubit-qubit interactions.\n\nQuantities are returned in angular frequencies, with units 2*pi*GHz.\n\nWARNING: Currently not all system Hamiltonian information is available to the public, missing values have been replaced with 0.\n", "h_latex": "\\begin{align} \\mathcal{H}/\\hbar = & \\sum_{i=0}^{4}\\left(\\frac{\\omega_{q,i}}{2}(\\mathbb{I}-\\sigma_i^{z})+\\frac{\\Delta_{i}}{2}(O_i^2-O_i)+\\Omega_{d,i}D_i(t)\\sigma_i^{X}\\right) \\\\ & + J_{0,1}(\\sigma_{0}^{+}\\sigma_{1}^{-}+\\sigma_{0}^{-}\\sigma_{1}^{+}) + J_{1,3}(\\sigma_{1}^{+}\\sigma_{3}^{-}+\\sigma_{1}^{-}\\sigma_{3}^{+}) + J_{3,4}(\\sigma_{3}^{+}\\sigma_{4}^{-}+\\sigma_{3}^{-}\\sigma_{4}^{+}) + J_{1,2}(\\sigma_{1}^{+}\\sigma_{2}^{-}+\\sigma_{1}^{-}\\sigma_{2}^{+}) \\\\ & + \\Omega_{d,0}(U_{0}^{(0,1)}(t))\\sigma_{0}^{X} + \\Omega_{d,1}(U_{1}^{(1,0)}(t)+U_{3}^{(1,3)}(t)+U_{2}^{(1,2)}(t))\\sigma_{1}^{X} \\\\ & + \\Omega_{d,2}(U_{4}^{(2,1)}(t))\\sigma_{2}^{X} + \\Omega_{d,3}(U_{5}^{(3,1)}(t)+U_{6}^{(3,4)}(t))\\sigma_{3}^{X} \\\\ & + \\Omega_{d,4}(U_{7}^{(4,3)}(t))\\sigma_{4}^{X} \\\\ \\end{align}", "h_str": ["_SUM[i,0,4,wq{i}/2*(I{i}-Z{i})]", "_SUM[i,0,4,delta{i}/2*O{i}*O{i}]", "_SUM[i,0,4,-delta{i}/2*O{i}]", "_SUM[i,0,4,omegad{i}*X{i}||D{i}]", "jq0q1*Sp0*Sm1", "jq0q1*Sm0*Sp1", "jq1q3*Sp1*Sm3", "jq1q3*Sm1*Sp3", "jq3q4*Sp3*Sm4", "jq3q4*Sm3*Sp4", "jq1q2*Sp1*Sm2", "jq1q2*Sm1*Sp2", "omegad1*X0||U0", "omegad0*X1||U1", "omegad3*X1||U3", "omegad2*X1||U2", "omegad1*X2||U4", "omegad1*X3||U5", "omegad4*X3||U6", "omegad3*X4||U7"], "osc": {}, "qub": {"0": 3, "1": 3, "2": 3, "3": 3, "4": 3}, "vars": {"delta0": -2.109526390232452, "delta1": -2.0002465324219205, "delta2": -2.0960936199138844, "delta3": -2.0812544393432897, "delta4": -2.1015348325639516, "jq0q1": 0.011088625669671271, "jq1q2": 0.011792549393436344, "jq1q3": 0.011913891984976948, "jq3q4": 0.01165632975311803, "omegad0": 1.5262727915514445, "omegad1": 1.2641690419030664, "omegad2": 1.3397127967877365, "omegad3": 1.509152095855826, "omegad4": 1.497387831726462, "wq0": 31.602446347014453, "wq1": 32.222195539816184, "wq2": 32.9709602992653, "wq3": 33.321865847041835, "wq4": 31.992663680656207}}, "channels": {"acquire0": {"operates": {"qubits": [0]}, "purpose": "acquire", "type": "acquire"}, "acquire1": {"operates": {"qubits": [1]}, "purpose": "acquire", "type": "acquire"}, "acquire2": {"operates": {"qubits": [2]}, "purpose": "acquire", "type": "acquire"}, "acquire3": {"operates": {"qubits": [3]}, "purpose": "acquire", "type": "acquire"}, "acquire4": {"operates": {"qubits": [4]}, "purpose": "acquire", "type": "acquire"}, "d0": {"operates": {"qubits": [0]}, "purpose": "drive", "type": "drive"}, "d1": {"operates": {"qubits": [1]}, "purpose": "drive", "type": "drive"}, "d2": {"operates": {"qubits": [2]}, "purpose": "drive", "type": "drive"}, "d3": {"operates": {"qubits": [3]}, "purpose": "drive", "type": "drive"}, "d4": {"operates": {"qubits": [4]}, "purpose": "drive", "type": "drive"}, "m0": {"operates": {"qubits": [0]}, "purpose": "measure", "type": "measure"}, "m1": {"operates": {"qubits": [1]}, "purpose": "measure", "type": "measure"}, "m2": {"operates": {"qubits": [2]}, "purpose": "measure", "type": "measure"}, "m3": {"operates": {"qubits": [3]}, "purpose": "measure", "type": "measure"}, "m4": {"operates": {"qubits": [4]}, "purpose": "measure", "type": "measure"}, "u0": {"operates": {"qubits": [0, 1]}, "purpose": "cross-resonance", "type": "control"}, "u1": {"operates": {"qubits": [1, 0]}, "purpose": "cross-resonance", "type": "control"}, "u2": {"operates": {"qubits": [1, 2]}, "purpose": "cross-resonance", "type": "control"}, "u3": {"operates": {"qubits": [1, 3]}, "purpose": "cross-resonance", "type": "control"}, "u4": {"operates": {"qubits": [2, 1]}, "purpose": "cross-resonance", "type": "control"}, "u5": {"operates": {"qubits": [3, 1]}, "purpose": "cross-resonance", "type": "control"}, "u6": {"operates": {"qubits": [3, 4]}, "purpose": "cross-resonance", "type": "control"}, "u7": {"operates": {"qubits": [4, 3]}, "purpose": "cross-resonance", "type": "control"}}} diff --git a/qiskit_ibm_runtime/fake_provider/backends/fractional/props_fractional.json b/qiskit_ibm_runtime/fake_provider/backends/fractional/props_fractional.json index b24e2e6ff..21d11d184 100644 --- a/qiskit_ibm_runtime/fake_provider/backends/fractional/props_fractional.json +++ b/qiskit_ibm_runtime/fake_provider/backends/fractional/props_fractional.json @@ -1 +1 @@ -{"backend_name": "fake_fractional", "backend_version": "1.0.5", "last_update_date": "2021-03-15T00:36:03-04:00", "qubits": [[{"date": "2021-03-15T00:09:11-04:00", "name": "T1", "unit": "us", "value": 59.69864328663569}, {"date": "2021-03-15T00:09:44-04:00", "name": "T2", "unit": "us", "value": 93.55584184359311}, {"date": "2021-03-15T00:36:03-04:00", "name": "frequency", "unit": "GHz", "value": 5.02968554992376}, {"date": "2021-03-15T00:36:03-04:00", "name": "anharmonicity", "unit": "GHz", "value": -0.33574155258829724}, {"date": "2021-03-15T00:08:49-04:00", "name": "readout_error", "unit": "", "value": 0.026100000000000012}, {"date": "2021-03-15T00:08:49-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0404}, {"date": "2021-03-15T00:08:49-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.011800000000000033}, {"date": "2021-03-15T00:08:49-04:00", "name": "readout_length", "unit": "ns", "value": 5351.11111111111}], [{"date": "2021-03-15T00:09:11-04:00", "name": "T1", "unit": "us", "value": 83.05997230317399}, {"date": "2021-03-15T00:10:43-04:00", "name": "T2", "unit": "us", "value": 115.53074510239036}, {"date": "2021-03-15T00:36:03-04:00", "name": "frequency", "unit": "GHz", "value": 5.128321697435369}, {"date": "2021-03-15T00:36:03-04:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3183491230373718}, {"date": "2021-03-15T00:08:49-04:00", "name": "readout_error", "unit": "", "value": 0.020000000000000018}, {"date": "2021-03-15T00:08:49-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.028800000000000048}, {"date": "2021-03-15T00:08:49-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0112}, {"date": "2021-03-15T00:08:49-04:00", "name": "readout_length", "unit": "ns", "value": 5351.11111111111}], [{"date": "2021-03-15T00:09:11-04:00", "name": "T1", "unit": "us", "value": 103.77694598809795}, {"date": "2021-03-15T00:09:44-04:00", "name": "T2", "unit": "us", "value": 94.77169960638749}, {"date": "2021-03-15T00:36:03-04:00", "name": "frequency", "unit": "GHz", "value": 5.24749131011471}, {"date": "2021-03-15T00:36:03-04:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3336036607926792}, {"date": "2021-03-15T00:08:49-04:00", "name": "readout_error", "unit": "", "value": 0.016599999999999948}, {"date": "2021-03-15T00:08:49-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.026}, {"date": "2021-03-15T00:08:49-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.007199999999999984}, {"date": "2021-03-15T00:08:49-04:00", "name": "readout_length", "unit": "ns", "value": 5351.11111111111}], [{"date": "2021-03-15T00:09:11-04:00", "name": "T1", "unit": "us", "value": 43.58447375590962}, {"date": "2021-03-15T00:09:44-04:00", "name": "T2", "unit": "us", "value": 46.45933441447346}, {"date": "2021-03-15T00:36:03-04:00", "name": "frequency", "unit": "GHz", "value": 5.303339662601714}, {"date": "2021-03-15T00:36:03-04:00", "name": "anharmonicity", "unit": "GHz", "value": -0.33124193185343576}, {"date": "2021-03-15T00:08:49-04:00", "name": "readout_error", "unit": "", "value": 0.0515000000000001}, {"date": "2021-03-15T00:08:49-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.07820000000000005}, {"date": "2021-03-15T00:08:49-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0248}, {"date": "2021-03-15T00:08:49-04:00", "name": "readout_length", "unit": "ns", "value": 5351.11111111111}], [{"date": "2021-03-15T00:09:11-04:00", "name": "T1", "unit": "us", "value": 17.543975812787366}, {"date": "2021-03-15T00:10:43-04:00", "name": "T2", "unit": "us", "value": 16.441110002077735}, {"date": "2021-03-15T00:36:03-04:00", "name": "frequency", "unit": "GHz", "value": 5.091790567452984}, {"date": "2021-03-15T00:36:03-04:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3344696566823515}, {"date": "2021-03-15T00:08:49-04:00", "name": "readout_error", "unit": "", "value": 0.057499999999999996}, {"date": "2021-03-15T00:08:49-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0958}, {"date": "2021-03-15T00:08:49-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0192}, {"date": "2021-03-15T00:08:49-04:00", "name": "readout_length", "unit": "ns", "value": 5351.11111111111}]], "gates": [{"qubits": [0], "gate": "id", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.00019195510390342677}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id0"}, {"qubits": [1], "gate": "id", "parameters": [{"date": "2021-03-15T00:13:23-04:00", "name": "gate_error", "unit": "", "value": 0.00033064681663890665}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id1"}, {"qubits": [2], "gate": "id", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.0001807726361160903}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id2"}, {"qubits": [3], "gate": "id", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.0003925363414603665}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id3"}, {"qubits": [4], "gate": "id", "parameters": [{"date": "2021-03-15T00:13:23-04:00", "name": "gate_error", "unit": "", "value": 0.0006789531879417325}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id4"}, {"qubits": [0], "gate": "rz", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz0"}, {"qubits": [1], "gate": "rz", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz1"}, {"qubits": [2], "gate": "rz", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz2"}, {"qubits": [3], "gate": "rz", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz3"}, {"qubits": [4], "gate": "rz", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz4"}, {"qubits": [0], "gate": "sx", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.00019195510390342677}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx0"}, {"qubits": [1], "gate": "sx", "parameters": [{"date": "2021-03-15T00:13:23-04:00", "name": "gate_error", "unit": "", "value": 0.00033064681663890665}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx1"}, {"qubits": [2], "gate": "sx", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.0001807726361160903}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx2"}, {"qubits": [3], "gate": "sx", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.0003925363414603665}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx3"}, {"qubits": [4], "gate": "sx", "parameters": [{"date": "2021-03-15T00:13:23-04:00", "name": "gate_error", "unit": "", "value": 0.0006789531879417325}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx4"}, {"qubits": [0], "gate": "x", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.00019195510390342677}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x0"}, {"qubits": [1], "gate": "x", "parameters": [{"date": "2021-03-15T00:13:23-04:00", "name": "gate_error", "unit": "", "value": 0.00033064681663890665}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x1"}, {"qubits": [2], "gate": "x", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.0001807726361160903}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x2"}, {"qubits": [3], "gate": "x", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.0003925363414603665}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x3"}, {"qubits": [4], "gate": "x", "parameters": [{"date": "2021-03-15T00:13:23-04:00", "name": "gate_error", "unit": "", "value": 0.0006789531879417325}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x4"}, {"qubits": [4, 3], "gate": "cx", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_error", "unit": "", "value": 0.02043493012013503}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 483.55555555555554}], "name": "cx4_3"}, {"qubits": [3, 4], "gate": "cx", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_error", "unit": "", "value": 0.02043493012013503}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 519.1111111111111}], "name": "cx3_4"}, {"qubits": [0, 1], "gate": "cx", "parameters": [{"date": "2021-03-15T00:30:08-04:00", "name": "gate_error", "unit": "", "value": 0.008339674869236618}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 305.77777777777777}], "name": "cx0_1"}, {"qubits": [1, 0], "gate": "cx", "parameters": [{"date": "2021-03-15T00:30:08-04:00", "name": "gate_error", "unit": "", "value": 0.008339674869236618}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 341.3333333333333}], "name": "cx1_0"}, {"qubits": [3, 1], "gate": "cx", "parameters": [{"date": "2021-03-15T00:24:22-04:00", "name": "gate_error", "unit": "", "value": 0.009799775939734023}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 462.2222222222222}], "name": "cx3_1"}, {"qubits": [1, 3], "gate": "cx", "parameters": [{"date": "2021-03-15T00:24:22-04:00", "name": "gate_error", "unit": "", "value": 0.009799775939734023}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 497.77777777777777}], "name": "cx1_3"}, {"qubits": [2, 1], "gate": "cx", "parameters": [{"date": "2021-03-15T00:19:06-04:00", "name": "gate_error", "unit": "", "value": 0.005961828308163608}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 298.66666666666663}], "name": "cx2_1"}, {"qubits": [1, 2], "gate": "cx", "parameters": [{"date": "2021-03-15T00:19:06-04:00", "name": "gate_error", "unit": "", "value": 0.005961828308163608}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 334.22222222222223}], "name": "cx1_2"}, {"qubits": [0], "gate": "reset", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 5742.222222222222}], "name": "reset0"}, {"qubits": [1], "gate": "reset", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 5742.222222222222}], "name": "reset1"}, {"qubits": [2], "gate": "reset", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 5742.222222222222}], "name": "reset2"}, {"qubits": [3], "gate": "reset", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 5742.222222222222}], "name": "reset3"}, {"qubits": [4], "gate": "reset", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 5742.222222222222}], "name": "reset4"}, {"qubits": [0], "gate": "rx", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.00019195510390342677}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "rx0"}, {"qubits": [1], "gate": "rx", "parameters": [{"date": "2021-03-15T00:13:23-04:00", "name": "gate_error", "unit": "", "value": 0.00033064681663890665}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "rx1"}, {"qubits": [2], "gate": "rx", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.0001807726361160903}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "rx2"}, {"qubits": [3], "gate": "rx", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.0003925363414603665}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "rx3"}, {"qubits": [4], "gate": "rx", "parameters": [{"date": "2021-03-15T00:13:23-04:00", "name": "gate_error", "unit": "", "value": 0.0006789531879417325}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "rx4"}, {"qubits": [4, 3], "gate": "rzx", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_error", "unit": "", "value": 0.02043493012013503}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 483.55555555555554}], "name": "rzx4_3"}, {"qubits": [3, 4], "gate": "rzx", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_error", "unit": "", "value": 0.02043493012013503}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 519.1111111111111}], "name": "rzx3_4"}, {"qubits": [0, 1], "gate": "rzx", "parameters": [{"date": "2021-03-15T00:30:08-04:00", "name": "gate_error", "unit": "", "value": 0.008339674869236618}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 305.77777777777777}], "name": "rzx0_1"}, {"qubits": [1, 0], "gate": "rzx", "parameters": [{"date": "2021-03-15T00:30:08-04:00", "name": "gate_error", "unit": "", "value": 0.008339674869236618}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 341.3333333333333}], "name": "rzx1_0"}, {"qubits": [3, 1], "gate": "rzx", "parameters": [{"date": "2021-03-15T00:24:22-04:00", "name": "gate_error", "unit": "", "value": 0.009799775939734023}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 462.2222222222222}], "name": "rzx3_1"}, {"qubits": [1, 3], "gate": "rzx", "parameters": [{"date": "2021-03-15T00:24:22-04:00", "name": "gate_error", "unit": "", "value": 0.009799775939734023}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 497.77777777777777}], "name": "rzx1_3"}, {"qubits": [2, 1], "gate": "rzx", "parameters": [{"date": "2021-03-15T00:19:06-04:00", "name": "gate_error", "unit": "", "value": 0.005961828308163608}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 298.66666666666663}], "name": "rzx2_1"}, {"qubits": [1, 2], "gate": "rzx", "parameters": [{"date": "2021-03-15T00:19:06-04:00", "name": "gate_error", "unit": "", "value": 0.005961828308163608}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 334.22222222222223}], "name": "rzx1_2"}], "general": [{"date": "2021-03-15T00:36:03-04:00", "name": "jq_01", "unit": "GHz", "value": 0.001764809587423861}, {"date": "2021-03-15T00:36:03-04:00", "name": "zz_01", "unit": "GHz", "value": -4.269674439106963e-05}, {"date": "2021-03-15T00:36:03-04:00", "name": "jq_13", "unit": "GHz", "value": 0.0018961548008719934}, {"date": "2021-03-15T00:36:03-04:00", "name": "zz_13", "unit": "GHz", "value": -6.0602970191985954e-05}, {"date": "2021-03-15T00:36:03-04:00", "name": "jq_34", "unit": "GHz", "value": 0.001855162498517866}, {"date": "2021-03-15T00:36:03-04:00", "name": "zz_34", "unit": "GHz", "value": -7.012711532075646e-05}, {"date": "2021-03-15T00:36:03-04:00", "name": "jq_12", "unit": "GHz", "value": 0.0018768425276207256}, {"date": "2021-03-15T00:36:03-04:00", "name": "zz_12", "unit": "GHz", "value": -4.896566658931517e-05}]} \ No newline at end of file +{"backend_name": "fake_fractional", "backend_version": "1.0.5", "last_update_date": "2021-03-15T00:36:03-04:00", "qubits": [[{"date": "2021-03-15T00:09:11-04:00", "name": "T1", "unit": "us", "value": 59.69864328663569}, {"date": "2021-03-15T00:09:44-04:00", "name": "T2", "unit": "us", "value": 93.55584184359311}, {"date": "2021-03-15T00:36:03-04:00", "name": "frequency", "unit": "GHz", "value": 5.02968554992376}, {"date": "2021-03-15T00:36:03-04:00", "name": "anharmonicity", "unit": "GHz", "value": -0.33574155258829724}, {"date": "2021-03-15T00:08:49-04:00", "name": "readout_error", "unit": "", "value": 0.026100000000000012}, {"date": "2021-03-15T00:08:49-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0404}, {"date": "2021-03-15T00:08:49-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.011800000000000033}, {"date": "2021-03-15T00:08:49-04:00", "name": "readout_length", "unit": "ns", "value": 5351.11111111111}], [{"date": "2021-03-15T00:09:11-04:00", "name": "T1", "unit": "us", "value": 83.05997230317399}, {"date": "2021-03-15T00:10:43-04:00", "name": "T2", "unit": "us", "value": 115.53074510239036}, {"date": "2021-03-15T00:36:03-04:00", "name": "frequency", "unit": "GHz", "value": 5.128321697435369}, {"date": "2021-03-15T00:36:03-04:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3183491230373718}, {"date": "2021-03-15T00:08:49-04:00", "name": "readout_error", "unit": "", "value": 0.020000000000000018}, {"date": "2021-03-15T00:08:49-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.028800000000000048}, {"date": "2021-03-15T00:08:49-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0112}, {"date": "2021-03-15T00:08:49-04:00", "name": "readout_length", "unit": "ns", "value": 5351.11111111111}], [{"date": "2021-03-15T00:09:11-04:00", "name": "T1", "unit": "us", "value": 103.77694598809795}, {"date": "2021-03-15T00:09:44-04:00", "name": "T2", "unit": "us", "value": 94.77169960638749}, {"date": "2021-03-15T00:36:03-04:00", "name": "frequency", "unit": "GHz", "value": 5.24749131011471}, {"date": "2021-03-15T00:36:03-04:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3336036607926792}, {"date": "2021-03-15T00:08:49-04:00", "name": "readout_error", "unit": "", "value": 0.016599999999999948}, {"date": "2021-03-15T00:08:49-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.026}, {"date": "2021-03-15T00:08:49-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.007199999999999984}, {"date": "2021-03-15T00:08:49-04:00", "name": "readout_length", "unit": "ns", "value": 5351.11111111111}], [{"date": "2021-03-15T00:09:11-04:00", "name": "T1", "unit": "us", "value": 43.58447375590962}, {"date": "2021-03-15T00:09:44-04:00", "name": "T2", "unit": "us", "value": 46.45933441447346}, {"date": "2021-03-15T00:36:03-04:00", "name": "frequency", "unit": "GHz", "value": 5.303339662601714}, {"date": "2021-03-15T00:36:03-04:00", "name": "anharmonicity", "unit": "GHz", "value": -0.33124193185343576}, {"date": "2021-03-15T00:08:49-04:00", "name": "readout_error", "unit": "", "value": 0.0515000000000001}, {"date": "2021-03-15T00:08:49-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.07820000000000005}, {"date": "2021-03-15T00:08:49-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0248}, {"date": "2021-03-15T00:08:49-04:00", "name": "readout_length", "unit": "ns", "value": 5351.11111111111}], [{"date": "2021-03-15T00:09:11-04:00", "name": "T1", "unit": "us", "value": 17.543975812787366}, {"date": "2021-03-15T00:10:43-04:00", "name": "T2", "unit": "us", "value": 16.441110002077735}, {"date": "2021-03-15T00:36:03-04:00", "name": "frequency", "unit": "GHz", "value": 5.091790567452984}, {"date": "2021-03-15T00:36:03-04:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3344696566823515}, {"date": "2021-03-15T00:08:49-04:00", "name": "readout_error", "unit": "", "value": 0.057499999999999996}, {"date": "2021-03-15T00:08:49-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0958}, {"date": "2021-03-15T00:08:49-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0192}, {"date": "2021-03-15T00:08:49-04:00", "name": "readout_length", "unit": "ns", "value": 5351.11111111111}]], "gates": [{"qubits": [0], "gate": "id", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.00019195510390342677}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id0"}, {"qubits": [1], "gate": "id", "parameters": [{"date": "2021-03-15T00:13:23-04:00", "name": "gate_error", "unit": "", "value": 0.00033064681663890665}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id1"}, {"qubits": [2], "gate": "id", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.0001807726361160903}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id2"}, {"qubits": [3], "gate": "id", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.0003925363414603665}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id3"}, {"qubits": [4], "gate": "id", "parameters": [{"date": "2021-03-15T00:13:23-04:00", "name": "gate_error", "unit": "", "value": 0.0006789531879417325}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id4"}, {"qubits": [0], "gate": "rz", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz0"}, {"qubits": [1], "gate": "rz", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz1"}, {"qubits": [2], "gate": "rz", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz2"}, {"qubits": [3], "gate": "rz", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz3"}, {"qubits": [4], "gate": "rz", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz4"}, {"qubits": [0], "gate": "sx", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.00019195510390342677}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx0"}, {"qubits": [1], "gate": "sx", "parameters": [{"date": "2021-03-15T00:13:23-04:00", "name": "gate_error", "unit": "", "value": 0.00033064681663890665}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx1"}, {"qubits": [2], "gate": "sx", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.0001807726361160903}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx2"}, {"qubits": [3], "gate": "sx", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.0003925363414603665}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx3"}, {"qubits": [4], "gate": "sx", "parameters": [{"date": "2021-03-15T00:13:23-04:00", "name": "gate_error", "unit": "", "value": 0.0006789531879417325}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx4"}, {"qubits": [0], "gate": "x", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.00019195510390342677}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x0"}, {"qubits": [1], "gate": "x", "parameters": [{"date": "2021-03-15T00:13:23-04:00", "name": "gate_error", "unit": "", "value": 0.00033064681663890665}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x1"}, {"qubits": [2], "gate": "x", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.0001807726361160903}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x2"}, {"qubits": [3], "gate": "x", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.0003925363414603665}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x3"}, {"qubits": [4], "gate": "x", "parameters": [{"date": "2021-03-15T00:13:23-04:00", "name": "gate_error", "unit": "", "value": 0.0006789531879417325}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x4"}, {"qubits": [4, 3], "gate": "cx", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_error", "unit": "", "value": 0.02043493012013503}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 483.55555555555554}], "name": "cx4_3"}, {"qubits": [3, 4], "gate": "cx", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_error", "unit": "", "value": 0.02043493012013503}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 519.1111111111111}], "name": "cx3_4"}, {"qubits": [0, 1], "gate": "cx", "parameters": [{"date": "2021-03-15T00:30:08-04:00", "name": "gate_error", "unit": "", "value": 0.008339674869236618}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 305.77777777777777}], "name": "cx0_1"}, {"qubits": [1, 0], "gate": "cx", "parameters": [{"date": "2021-03-15T00:30:08-04:00", "name": "gate_error", "unit": "", "value": 0.008339674869236618}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 341.3333333333333}], "name": "cx1_0"}, {"qubits": [3, 1], "gate": "cx", "parameters": [{"date": "2021-03-15T00:24:22-04:00", "name": "gate_error", "unit": "", "value": 0.009799775939734023}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 462.2222222222222}], "name": "cx3_1"}, {"qubits": [1, 3], "gate": "cx", "parameters": [{"date": "2021-03-15T00:24:22-04:00", "name": "gate_error", "unit": "", "value": 0.009799775939734023}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 497.77777777777777}], "name": "cx1_3"}, {"qubits": [2, 1], "gate": "cx", "parameters": [{"date": "2021-03-15T00:19:06-04:00", "name": "gate_error", "unit": "", "value": 0.005961828308163608}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 298.66666666666663}], "name": "cx2_1"}, {"qubits": [1, 2], "gate": "cx", "parameters": [{"date": "2021-03-15T00:19:06-04:00", "name": "gate_error", "unit": "", "value": 0.005961828308163608}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 334.22222222222223}], "name": "cx1_2"}, {"qubits": [0], "gate": "reset", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 5742.222222222222}], "name": "reset0"}, {"qubits": [1], "gate": "reset", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 5742.222222222222}], "name": "reset1"}, {"qubits": [2], "gate": "reset", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 5742.222222222222}], "name": "reset2"}, {"qubits": [3], "gate": "reset", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 5742.222222222222}], "name": "reset3"}, {"qubits": [4], "gate": "reset", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 5742.222222222222}], "name": "reset4"}, {"qubits": [0], "gate": "rx", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.00019195510390342677}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "rx0"}, {"qubits": [1], "gate": "rx", "parameters": [{"date": "2021-03-15T00:13:23-04:00", "name": "gate_error", "unit": "", "value": 0.00033064681663890665}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "rx1"}, {"qubits": [2], "gate": "rx", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.0001807726361160903}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "rx2"}, {"qubits": [3], "gate": "rx", "parameters": [{"date": "2021-03-15T00:11:29-04:00", "name": "gate_error", "unit": "", "value": 0.0003925363414603665}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "rx3"}, {"qubits": [4], "gate": "rx", "parameters": [{"date": "2021-03-15T00:13:23-04:00", "name": "gate_error", "unit": "", "value": 0.0006789531879417325}, {"date": "2021-03-15T00:36:03-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "rx4"}, {"qubits": [4, 3], "gate": "rzz", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_error", "unit": "", "value": 0.02043493012013503}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 483.55555555555554}], "name": "rzz4_3"}, {"qubits": [3, 4], "gate": "rzz", "parameters": [{"date": "2021-03-15T00:36:03-04:00", "name": "gate_error", "unit": "", "value": 0.02043493012013503}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 519.1111111111111}], "name": "rzz3_4"}, {"qubits": [0, 1], "gate": "rzz", "parameters": [{"date": "2021-03-15T00:30:08-04:00", "name": "gate_error", "unit": "", "value": 0.008339674869236618}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 305.77777777777777}], "name": "rzz0_1"}, {"qubits": [1, 0], "gate": "rzz", "parameters": [{"date": "2021-03-15T00:30:08-04:00", "name": "gate_error", "unit": "", "value": 0.008339674869236618}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 341.3333333333333}], "name": "rzz1_0"}, {"qubits": [3, 1], "gate": "rzz", "parameters": [{"date": "2021-03-15T00:24:22-04:00", "name": "gate_error", "unit": "", "value": 0.009799775939734023}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 462.2222222222222}], "name": "rzz3_1"}, {"qubits": [1, 3], "gate": "rzz", "parameters": [{"date": "2021-03-15T00:24:22-04:00", "name": "gate_error", "unit": "", "value": 0.009799775939734023}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 497.77777777777777}], "name": "rzz1_3"}, {"qubits": [2, 1], "gate": "rzz", "parameters": [{"date": "2021-03-15T00:19:06-04:00", "name": "gate_error", "unit": "", "value": 0.005961828308163608}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 298.66666666666663}], "name": "rzz2_1"}, {"qubits": [1, 2], "gate": "rzz", "parameters": [{"date": "2021-03-15T00:19:06-04:00", "name": "gate_error", "unit": "", "value": 0.005961828308163608}, {"date": "2021-03-12T00:36:03-05:00", "name": "gate_length", "unit": "ns", "value": 334.22222222222223}], "name": "rzz1_2"}], "general": [{"date": "2021-03-15T00:36:03-04:00", "name": "jq_01", "unit": "GHz", "value": 0.001764809587423861}, {"date": "2021-03-15T00:36:03-04:00", "name": "zz_01", "unit": "GHz", "value": -4.269674439106963e-05}, {"date": "2021-03-15T00:36:03-04:00", "name": "jq_13", "unit": "GHz", "value": 0.0018961548008719934}, {"date": "2021-03-15T00:36:03-04:00", "name": "zz_13", "unit": "GHz", "value": -6.0602970191985954e-05}, {"date": "2021-03-15T00:36:03-04:00", "name": "jq_34", "unit": "GHz", "value": 0.001855162498517866}, {"date": "2021-03-15T00:36:03-04:00", "name": "zz_34", "unit": "GHz", "value": -7.012711532075646e-05}, {"date": "2021-03-15T00:36:03-04:00", "name": "jq_12", "unit": "GHz", "value": 0.0018768425276207256}, {"date": "2021-03-15T00:36:03-04:00", "name": "zz_12", "unit": "GHz", "value": -4.896566658931517e-05}]} diff --git a/qiskit_ibm_runtime/ibm_backend.py b/qiskit_ibm_runtime/ibm_backend.py index eaced006f..99285fa98 100644 --- a/qiskit_ibm_runtime/ibm_backend.py +++ b/qiskit_ibm_runtime/ibm_backend.py @@ -246,12 +246,6 @@ def _convert_to_target(self, refresh: bool = False) -> None: configuration=self._configuration, # type: ignore[arg-type] properties=self._properties, defaults=self._defaults, - # In IBM backend architecture as of today - # these features can be only exclusively supported. - include_control_flow=self.options.use_fractional_gates is None - or not self.options.use_fractional_gates, - include_fractional_gates=self.options.use_fractional_gates is None - or self.options.use_fractional_gates, ) @classmethod @@ -337,12 +331,6 @@ def target_history(self, datetime: Optional[python_datetime] = None) -> Target: configuration=self._configuration, # type: ignore[arg-type] properties=self.properties(datetime=datetime), # pylint: disable=unexpected-keyword-arg defaults=self._defaults, - # In IBM backend architecture as of today - # these features can be only exclusively supported. - include_control_flow=self.options.use_fractional_gates is None - or not self.options.use_fractional_gates, - include_fractional_gates=self.options.use_fractional_gates - or self.options.use_fractional_gates, ) def refresh(self) -> None: @@ -350,6 +338,7 @@ def refresh(self) -> None: if config := configuration_from_server_data( raw_config=self._service._api_client.backend_configuration(self.name, refresh=True), instance=self._instance, + use_fractional_gates=self.options.use_fractional_gates, ): self._configuration = config self.properties(refresh=True) # pylint: disable=unexpected-keyword-arg @@ -402,7 +391,10 @@ def properties( api_properties = self._api_client.backend_properties(self.name, datetime=datetime) if not api_properties: return None - backend_properties = properties_from_server_data(api_properties) + backend_properties = properties_from_server_data( + api_properties, + use_fractional_gates=self.options.use_fractional_gates, + ) if datetime: # Don't cache result. return backend_properties self._properties = backend_properties diff --git a/qiskit_ibm_runtime/qiskit_runtime_service.py b/qiskit_ibm_runtime/qiskit_runtime_service.py index 4089ad6fa..0391cc268 100644 --- a/qiskit_ibm_runtime/qiskit_runtime_service.py +++ b/qiskit_ibm_runtime/qiskit_runtime_service.py @@ -458,16 +458,16 @@ def backends( filters=lambda x: ("rz" in x.basis_gates ) ) use_fractional_gates: Set True to allow for the backends to include - fractional gates in target. Currently this feature cannot be used - simulataneously with dynamic circuits, PEC, PEA, or gate twirling. - When this flag is set, control flow instructions are automatically - removed from the backend target. - When you use the dynamic circuits feature (e.g. if_else) in your + fractional gates. Currently this feature cannot be used + simultaneously with dynamic circuits, PEC, PEA, or gate + twirling. When this flag is set, control flow instructions are + automatically removed from the backend. + When you use a dynamic circuits feature (e.g. ``if_else``) in your algorithm, you must disable this flag to create executable ISA circuits. This flag might be modified or removed when our backend supports dynamic circuits and fractional gates simultaneously. If ``None``, then both fractional gates and control flow operations are - included in the backend targets. + included in the backends. **kwargs: Simple filters that require a specific value for an attribute in backend configuration or status. @@ -513,7 +513,9 @@ def backends( backend_names = self._backend_allowed_list hgp = None for backend_name in backend_names: - if backend := self._create_backend_obj(backend_name, instance=hgp): + if backend := self._create_backend_obj( + backend_name, instance=hgp, use_fractional_gates=use_fractional_gates + ): backends.append(backend) else: if instance: @@ -522,7 +524,9 @@ def backends( ) for backend_name in self._backend_allowed_list: if backend := self._create_backend_obj( - backend_name, instance=self._account.instance + backend_name, + instance=self._account.instance, + use_fractional_gates=use_fractional_gates, ): backends.append(backend) @@ -541,7 +545,7 @@ def backends( ) ) - # Set fractional gate feature before Target object is created. + # Set fractional gate flag for use when loading properties or refreshing backend. for backend in backends: backend.options.use_fractional_gates = use_fractional_gates return filter_backends(backends, filters=filters, **kwargs) @@ -549,13 +553,19 @@ def backends( def _create_backend_obj( self, backend_name: str, - instance: Optional[str] = None, + instance: Optional[str], + use_fractional_gates: Optional[bool], ) -> IBMBackend: """Given a backend configuration return the backend object. Args: backend_name: Name of backend to instantiate. instance: the current h/g/p. + use_fractional_gates: Set True to allow for the backends to include + fractional gates, False to include control flow operations, and + None to include both fractional gates and control flow + operations. See :meth:`~.QiskitRuntimeService.backends` for + further details. Returns: A backend object. @@ -566,6 +576,7 @@ def _create_backend_obj( if config := configuration_from_server_data( raw_config=self._api_client.backend_configuration(backend_name), instance=instance, + use_fractional_gates=use_fractional_gates, ): if self._channel == "ibm_quantum": if not instance: @@ -726,16 +737,16 @@ def backend( with access to the backend, a premium provider will be prioritized. For users without access to a premium provider, the default open provider will be used. use_fractional_gates: Set True to allow for the backends to include - fractional gates in target. Currently this feature cannot be used - simulataneously with dynamic circuits, PEC, PEA, or gate twirling. - When this flag is set, control flow instructions are automatically - removed from the backend target. - When you use the dynamic circuits feature (e.g. if_else) in your + fractional gates. Currently this feature cannot be used + simultaneously with dynamic circuits, PEC, PEA, or gate + twirling. When this flag is set, control flow instructions are + automatically removed from the backend. + When you use a dynamic circuits feature (e.g. ``if_else``) in your algorithm, you must disable this flag to create executable ISA circuits. This flag might be modified or removed when our backend supports dynamic circuits and fractional gates simultaneously. If ``None``, then both fractional gates and control flow operations are - included in the backend targets. + included in the backends. Returns: Backend: A backend matching the filtering. diff --git a/qiskit_ibm_runtime/utils/backend_converter.py b/qiskit_ibm_runtime/utils/backend_converter.py index a537ec0ef..68327902e 100644 --- a/qiskit_ibm_runtime/utils/backend_converter.py +++ b/qiskit_ibm_runtime/utils/backend_converter.py @@ -26,13 +26,7 @@ WhileLoopOp, ) from qiskit.circuit.gate import Gate -from qiskit.circuit.library.standard_gates import ( - get_standard_gate_name_mapping, - RZGate, - U1Gate, - PhaseGate, -) -from qiskit.circuit.delay import Delay +from qiskit.circuit.library.standard_gates import get_standard_gate_name_mapping from qiskit.circuit.parameter import Parameter from qiskit.providers.backend import QubitProperties from qiskit.providers.exceptions import BackendPropertyError @@ -40,6 +34,10 @@ from ..models import BackendConfiguration, BackendProperties, PulseDefaults +# is_fractional_gate used to be defined in this module and might be referenced +# from here externally +from .utils import is_fractional_gate # See comment above before removing + logger = logging.getLogger(__name__) @@ -349,11 +347,3 @@ def qubit_props_list_from_props( ) ) return qubit_props - - -def is_fractional_gate(gate: Gate) -> bool: - """Test if gate is fractional gate familiy.""" - # In IBM architecture these gates are virtual-Z and delay, - # which don't change control parameter with its gate parameter. - exclude_list = (RZGate, PhaseGate, U1Gate, Delay) - return len(gate.params) > 0 and not isinstance(gate, exclude_list) diff --git a/qiskit_ibm_runtime/utils/backend_decoder.py b/qiskit_ibm_runtime/utils/backend_decoder.py index fcb61cd4b..b8857905d 100644 --- a/qiskit_ibm_runtime/utils/backend_decoder.py +++ b/qiskit_ibm_runtime/utils/backend_decoder.py @@ -17,6 +17,13 @@ import traceback import dateutil.parser +from qiskit.circuit.library.standard_gates import get_standard_gate_name_mapping + +try: + from qiskit.circuit import CONTROL_FLOW_OP_NAMES +except ImportError: # Remove when dropping support for Qiskit < 1.3 + CONTROL_FLOW_OP_NAMES = frozenset(("for_loop", "while_loop", "if_else", "switch_case")) + from ..models import ( BackendProperties, PulseDefaults, @@ -25,6 +32,7 @@ ) from .converters import utc_to_local_all +from .utils import is_fractional_gate logger = logging.getLogger(__name__) @@ -32,12 +40,16 @@ def configuration_from_server_data( raw_config: Dict, instance: str = "", + use_fractional_gates: Optional[bool] = False, ) -> Optional[Union[QasmBackendConfiguration, PulseBackendConfiguration]]: - """Create an IBMBackend instance from raw server data. + """Create a backend configuration instance from raw server data. Args: raw_config: Raw configuration. instance: Service instance. + use_fractional_gates: Set True to allow for the backends to include + fractional gates. See :meth:`~.QiskitRuntimeService.backends` + for further details. Returns: Backend configuration. @@ -51,6 +63,7 @@ def configuration_from_server_data( return None try: decode_backend_configuration(raw_config) + filter_raw_configuration(raw_config, use_fractional_gates=use_fractional_gates) try: return PulseBackendConfiguration.from_dict(raw_config) except (KeyError, TypeError): @@ -66,6 +79,51 @@ def configuration_from_server_data( return None +def filter_raw_configuration( + raw_config: dict, use_fractional_gates: Optional[bool] = False +) -> None: + """Filter unwanted entries from raw configuration data + + Args: + use_fractional_gates: Set True to allow for the backends to include + fractional gates. See :meth:`~.QiskitRuntimeService.backends` + for further details. + """ + if use_fractional_gates is None: + return + + gate_map = get_standard_gate_name_mapping() + if use_fractional_gates: + raw_config["conditional"] = False + if "supported_instructions" in raw_config: + raw_config["supported_instructions"] = [ + i for i in raw_config["supported_instructions"] if i not in CONTROL_FLOW_OP_NAMES + ] + if "supported_features" in raw_config: + raw_config["supported_features"] = [ + g for g in raw_config["supported_features"] if g != "qasm3" + ] + else: + if "basis_gates" in raw_config: + raw_config["basis_gates"] = [ + g + for g in raw_config["basis_gates"] + if g not in gate_map or not is_fractional_gate(gate_map[g]) + ] + if "gates" in raw_config: + raw_config["gates"] = [ + g + for g in raw_config["gates"] + if g.get("name") not in gate_map or not is_fractional_gate(gate_map[g.get("name")]) + ] + if "supported_instructions" in raw_config: + raw_config["supported_instructions"] = [ + i + for i in raw_config["supported_instructions"] + if i not in gate_map or not is_fractional_gate(gate_map[i]) + ] + + def defaults_from_server_data(defaults: Dict) -> PulseDefaults: """Decode pulse defaults data. @@ -86,15 +144,30 @@ def defaults_from_server_data(defaults: Dict) -> PulseDefaults: return PulseDefaults.from_dict(defaults) -def properties_from_server_data(properties: Dict) -> BackendProperties: +def properties_from_server_data( + properties: Dict, use_fractional_gates: Optional[bool] = False +) -> BackendProperties: """Decode backend properties. Args: properties: Raw properties data. + use_fractional_gates: Set True to allow for the backends to include + fractional gates. See :meth:`~.QiskitRuntimeService.backends` + for further details. Returns: A ``BackendProperties`` instance. """ + gate_map = get_standard_gate_name_mapping() + + if "gates" in properties and isinstance(properties["gates"], list): + if use_fractional_gates is not None and not use_fractional_gates: + properties["gates"] = [ + g + for g in properties["gates"] + if g.get("name") not in gate_map or not is_fractional_gate(gate_map[g.get("name")]) + ] + if isinstance(properties["last_update_date"], str): properties["last_update_date"] = dateutil.parser.isoparse(properties["last_update_date"]) for qubit in properties["qubits"]: diff --git a/qiskit_ibm_runtime/utils/utils.py b/qiskit_ibm_runtime/utils/utils.py index c8bc62215..5383a7f9f 100644 --- a/qiskit_ibm_runtime/utils/utils.py +++ b/qiskit_ibm_runtime/utils/utils.py @@ -30,6 +30,13 @@ ) from ibm_platform_services import ResourceControllerV2 # pylint: disable=import-error from qiskit.circuit import QuantumCircuit, ControlFlowOp, ParameterExpression, Parameter +from qiskit.circuit.delay import Delay +from qiskit.circuit.gate import Instruction +from qiskit.circuit.library.standard_gates import ( + RZGate, + U1Gate, + PhaseGate, +) from qiskit.transpiler import Target from qiskit.providers.backend import BackendV1, BackendV2 from .deprecation import deprecate_function @@ -130,6 +137,30 @@ def are_circuits_dynamic(circuits: List[QuantumCircuit], qasm_default: bool = Tr return False +def is_fractional_gate(gate: Instruction) -> bool: + """Test if a gate is considered fractional by IBM + + Fractional gates produce a rotation based on a continuous input parameter + and require a non-zero gate duration. The latter distinction excludes gates + like ``RZGate`` which can be implemented in software with no duration. The + fractional gate definition is based on the current IBM compiler system + which currently can not use fractional gates and dynamic circuit + instructions in the same job. In that sense, this function is really + testing if a gate is currently incompatible with dynamic circuit + instructions for IBM's compiler. + + Args: + gate: The instruction to test for status as a fractional gate + + Returns: + True if the gate is a fractional gate + """ + # In IBM architecture these gates are virtual-Z and delay, + # which don't change control parameter with its gate parameter. + exclude_list = (RZGate, PhaseGate, U1Gate, Delay) + return len(gate.params) > 0 and not isinstance(gate, exclude_list) + + def has_param_expressions(circuits: List[QuantumCircuit]) -> bool: """Checks if the input circuits contain `ParameterExpression`s""" for circuit in circuits: diff --git a/release-notes/unreleased/2031.bug.rst b/release-notes/unreleased/2031.bug.rst new file mode 100644 index 000000000..a893e15f8 --- /dev/null +++ b/release-notes/unreleased/2031.bug.rst @@ -0,0 +1,13 @@ +The behavior of the ``use_fractional_gates`` argument of +:meth:`.QiskitRuntimeService.backend` has been changed. When the option is set +to ``False``, it now filters all references to fractional gates out of the +configuration and properties data from the API. Likewise, when the option is +set to ``True``, all dynamic circuit instructions are filtered from the +configuration and properties data. Previously, this option only impacted the +creation of the backend's target, which meant that the instructions in the +target were not consistent with those in the configuration and properties data. +For the most part, this change should be transparent to users, but if there is +code relying on the configuration and properties data containing all +instructions it will need to be updated (note that setting +``use_fractional_gates`` to ``None`` will load all instructions without +filtering). diff --git a/test/unit/test_backend.py b/test/unit/test_backend.py index c033d157b..8f8b51f11 100644 --- a/test/unit/test_backend.py +++ b/test/unit/test_backend.py @@ -359,7 +359,7 @@ def test_convert_to_target_with_features(self, options): use_fractional, ) self.assertEqual( - "rzx" in target, + "rzz" in target, use_fractional, ) self.assertEqual( @@ -367,7 +367,7 @@ def test_convert_to_target_with_features(self, options): use_fractional, ) self.assertEqual( - "rzx" in target.operation_names, + "rzz" in target.operation_names, use_fractional, ) self.assertEqual( diff --git a/test/unit/test_backend_retrieval.py b/test/unit/test_backend_retrieval.py index 928ab692e..9b34c1731 100644 --- a/test/unit/test_backend_retrieval.py +++ b/test/unit/test_backend_retrieval.py @@ -261,9 +261,35 @@ def test_get_backend_by_bad_hgp(self): with self.assertRaises(QiskitBackendNotFoundError): _ = service.backend(backend_name, instance=hgp) + def test_get_backend_properties(self): + """Test that a backend's properties are loaded into its target""" + service = FakeRuntimeService( + channel="ibm_quantum", + token="my_token", + backend_specs=[FakeApiBackendSpecs(backend_name="FakeTorino")], + ) + backend = service.backend("fake_torino") + + t1s = sorted(p.t1 for p in backend.target.qubit_properties) + sx_errors = sorted(backend.target["sx"][q].error for q in backend.target["sx"]) + cz_errors = sorted(backend.target["cz"][p].error for p in backend.target["cz"]) + + # Check right number of gates/properties loaded + self.assertEqual(len(t1s), backend.num_qubits) + self.assertEqual(len(sx_errors), backend.num_qubits) + self.assertEqual(len(cz_errors), 300) + # Check that the right property values were loaded + self.assertAlmostEqual(t1s[0], 1.043e-5, places=8) + self.assertAlmostEqual(t1s[-1], 0.000306, places=6) + self.assertAlmostEqual(sx_errors[0], 9.75e-5, places=7) + self.assertAlmostEqual(sx_errors[-1], 0.00521, places=5) + self.assertAlmostEqual(cz_errors[0], 0.00133, places=5) + self.assertAlmostEqual(cz_errors[-1], 0.03235, places=5) + @named_data( ("with_fractional", True), ("without_fractional", False), + ("without_filtering", None), ) def test_get_backend_with_fractional_optin(self, use_fractional): """Test getting backend with fractional gate opt-in. @@ -282,21 +308,24 @@ def test_get_backend_with_fractional_optin(self, use_fractional): test_backend = service.backends("fake_fractional", use_fractional_gates=use_fractional)[0] self.assertEqual( "rx" in test_backend.target, - use_fractional, + use_fractional or use_fractional is None, ) self.assertEqual( - "rzx" in test_backend.target, - use_fractional, + "rzz" in test_backend.target, + use_fractional or use_fractional is None, ) self.assertEqual( "if_else" in test_backend.target.operation_names, - not use_fractional, + not use_fractional or use_fractional is None, ) self.assertEqual( "while_loop" in test_backend.target.operation_names, - not use_fractional, + not use_fractional or use_fractional is None, ) + if use_fractional or use_fractional is None: + self.assertAlmostEqual(test_backend.target["rx"][(0,)].error, 0.00019, places=5) + def test_backend_with_and_without_fractional_from_same_service(self): """Test getting backend with and without fractional gates from the same service. @@ -316,14 +345,3 @@ def test_backend_with_and_without_fractional_from_same_service(self): self.assertIn("rx", backend_with_fg.target) self.assertIsNot(backend_with_fg, backend_without_fg) - - def test_get_backend_with_no_instr_filtering(self): - """Test getting backend with no instruction filtering.""" - service = FakeRuntimeService( - channel="ibm_quantum", - token="my_token", - backend_specs=[FakeApiBackendSpecs(backend_name="FakeFractionalBackend")], - ) - test_backend = service.backends("fake_fractional", use_fractional_gates=None)[0] - for instr in ["rx", "rzx", "if_else", "while_loop"]: - self.assertIn(instr, test_backend.target) diff --git a/test/unit/test_sampler.py b/test/unit/test_sampler.py index fb8da82cf..31318ca2e 100644 --- a/test/unit/test_sampler.py +++ b/test/unit/test_sampler.py @@ -32,6 +32,7 @@ from ..ibm_test_case import IBMTestCase from ..utils import MockSession, dict_paritally_equal, get_mocked_backend, transpile_pubs +from .mock.fake_api_backend import FakeApiBackendSpecs from .mock.fake_runtime_service import FakeRuntimeService @@ -162,14 +163,12 @@ def test_sampler_validations(self): def test_run_dynamic_circuit_with_fractional_opted(self): """Fractional opted backend cannot run dynamic circuits.""" - model_backend = FakeFractionalBackend() - model_backend._set_props_dict_from_json() - backend = get_mocked_backend( - name="fake_fractional", - configuration=model_backend._conf_dict, - properties=model_backend._props_dict, + service = FakeRuntimeService( + channel="ibm_quantum", + token="my_token", + backend_specs=[FakeApiBackendSpecs(backend_name="FakeFractionalBackend")], ) - backend.options.use_fractional_gates = True + backend = service.backends("fake_fractional", use_fractional_gates=True)[0] dynamic_circuit = QuantumCircuit(3, 1) dynamic_circuit.measure(0, 0) @@ -183,14 +182,12 @@ def test_run_dynamic_circuit_with_fractional_opted(self): def test_run_fractional_circuit_without_fractional_opted(self): """Fractional non-opted backend cannot run fractional circuits.""" - model_backend = FakeFractionalBackend() - model_backend._set_props_dict_from_json() - backend = get_mocked_backend( - name="fake_fractional", - configuration=model_backend._conf_dict, - properties=model_backend._props_dict, + service = FakeRuntimeService( + channel="ibm_quantum", + token="my_token", + backend_specs=[FakeApiBackendSpecs(backend_name="FakeFractionalBackend")], ) - backend.options.use_fractional_gates = False + backend = service.backends("fake_fractional", use_fractional_gates=False)[0] fractional_circuit = QuantumCircuit(1, 1) fractional_circuit.rx(1.23, 0) @@ -206,14 +203,12 @@ def test_run_fractional_circuit_without_fractional_opted(self): ) def test_run_fractional_dynamic_mix(self, use_fractional): """Any backend cannot run mixture of fractional and dynamic circuits.""" - model_backend = FakeFractionalBackend() - model_backend._set_props_dict_from_json() - backend = get_mocked_backend( - name="fake_fractional", - configuration=model_backend._conf_dict, - properties=model_backend._props_dict, + service = FakeRuntimeService( + channel="ibm_quantum", + token="my_token", + backend_specs=[FakeApiBackendSpecs(backend_name="FakeFractionalBackend")], ) - backend.options.use_fractional_gates = use_fractional + backend = service.backends("fake_fractional", use_fractional_gates=use_fractional)[0] dynamic_circuit = QuantumCircuit(3, 1) dynamic_circuit.measure(0, 0)