Quantum Computing SEArchived Apr 23, 2026✓ Full text saved
I implemented a 5-qubit QFT circuit using Qiskit and performed quantum state tomography using an IBM backend. However, the reported process fidelity is only ~20%, which seems very low. I am trying to understand the potential reasons behind this. from qiskit import QuantumCircuit from qiskit_ibm_runtime import QiskitRuntimeService service = QiskitRuntimeService( channel='ibm_quantum_platform', instance='', token='', ) backend = service.backend("ibm_brisbane") def qft_circuit(n): qc = QuantumCircu
Full text archived locally
✦ AI Summary· Claude Sonnet
Low Fidelity For QFT on IBM
Ask Question
Asked 9 months ago
Modified today
Viewed 226 times
2
I implemented a 5-qubit QFT circuit using Qiskit and performed quantum state tomography using an IBM backend. However, the reported process fidelity is only ~20%, which seems very low. I am trying to understand the potential reasons behind this.
from qiskit import QuantumCircuit
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(
channel='ibm_quantum_platform',
instance='',
token='',
)
backend = service.backend("ibm_brisbane")
def qft_circuit(n):
qc = QuantumCircuit(n, n)
for j in range(n):
qc.h(j)
for k in range(1, n - j):
qc.cp(2 * 3.141592653589793 / 2**(k + 1), j + k, j)
for i in range(n // 2):
qc.swap(i, n - i - 1)
return qc
qft_20 = qft_circuit(5)
qft_20.draw('mpl')
qstexp1 = StateTomography(qft_20, backend=backend)
qstdata1 = qstexp1.run(backend).block_for_results()
# Print results
display(qstdata1.analysis_results(dataframe=True))
```
qiskitquantum-stateprogrammingqiskit-runtime
Share
Improve this question
Follow
edited Jul 13, 2025 at 15:36
asked Jul 11, 2025 at 18:04
physicino
1315
5 bronze badges
Can you provide some reasoning as to why you say it "seems very low". And based on this analysis, what value were you expecting to get? –
diemilio
Commented
Jul 11, 2025 at 19:25
Which backend did you use? How did you perform tomography? –
Tristan Nemoz
♦
Commented
Jul 12, 2025 at 15:34
Thank you for your responses. I actually expected with higher fidelity about 50 to 70 percent, as I run it with a noise model using Aersimulator of the same backend. Regarding the backed, I have tested on Brisbane and Fez. I do the tommograpphy using the following piece of code: qft_20 = qft_circuit(5) qft_20.draw('mpl') qstexp1 = StateTomography(qft_20, backend=backend) qstdata1 = qstexp1.run(backend).block_for_results() display(qstdata1.analysis_results(dataframe=True)) –
physicino
Commented
Jul 12, 2025 at 16:29
Can you post your full code within your post please? –
Tristan Nemoz
♦
Commented
Jul 13, 2025 at 4:52
I edited the post with the full code. –
physicino
Commented
Jul 13, 2025 at 15:36
Add a comment
1 Answer
Sorted by:
Highest score (default)
Date modified (newest first)
Date created (oldest first)
0
You can get a bit pessimistic fidelity about 50 to 70 percent, just by running the QFT circuit without the tomagraphy. For tomagraph you need measuring circuits. For each qubit you must measure along the three Pauli axes Z, X and Y. That means three different measurement bases per qubit.
If you have n qubits, every qubit can be measured in any of the three bases, so the total number of basis-combinations (i.e. distinct measurement circuits) is
3
n
3
𝑛
.
Example for n =3 You need
3
3
=27
3
3
=
27
different circuits.
In any basis a single qubit has two eigenstates (eigenvalues ± 1):
Z basis:
|0⟩,|1⟩
|
0
⟩
,
|
1
⟩
X basis:
|+⟩,|−⟩
|
+
⟩
,
|
−
⟩
*Y basis:
|+i⟩,|−i⟩
|
+
𝑖
⟩
,
|
−
𝑖
⟩
Thus each basis provides 2 projectors, so there are 6 single-qubit projectors in total. When you measure
n
𝑛
qubits simultaneously you get
2
n
2
𝑛
possible bit-string outcomes per circuit.
Example for n = 3:
2
3
=8
2
3
=
8
different bit-strings per circuit.
How many projectors do we need in the full POVM?
The full, information-complete POVM is the tensor product of the six single-qubit projectors over all qubits, giving
6
n
6
𝑛
multi-qubit projectors.
With n = 3 we need
6
3
=216
6
3
=
216
projectors. There will be a lot of SPAM errors and shotnoise.
For reference the following qiskit circuit shows a fidelity of 0.65 without the Tomography.
from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector, state_fidelity, Operator, process_fidelity, DensityMatrix
from qiskit_aer import AerSimulator
from qiskit_aer.noise import NoiseModel, depolarizing_error, ReadoutError
import numpy as np
# --- QFT‑circuit en ideale fideliteit ---
def qft_circuit(n):
qc = QuantumCircuit(n)
for j in range(n):
qc.h(j)
for k in range(1, n - j):
qc.cp(2 * np.pi / 2**(k + 1), j + k, j)
for i in range(n // 2):
qc.swap(i, n - i - 1)
return qc
n = 5
qc = qft_circuit(n)
# Ideale staatvector en fideliteit
statevector = Statevector.from_instruction(qc)
ideal = np.ones(2**n) / np.sqrt(2**n)
print(statevector, "Statevector")
print("State fidelity (ideal):", state_fidelity(statevector, ideal))
print("Process fidelity (ideal):", process_fidelity(Operator(qc), Operator(qc)))
# --- Ruismodel (depolarisatie + meetfouten) ---
noise_model = NoiseModel()
error_1q = depolarizing_error(0.005, 1) # 0.5% 1‑qubit depolariserende fout
error_2q = depolarizing_error(0.03, 2) # 3% 2‑qubit depolariserende fout
noise_model.add_all_qubit_quantum_error(error_1q,
['u1','u2','u3','rx','ry','rz','h','t','sx','x','y','z','s','sdg'])
noise_model.add_all_qubit_quantum_error(error_2q, ['cx','cp','swap'])
readout_error = ReadoutError([[0.9, 0.1], [0.1, 0.9]]) # 10% meetfout
noise_model.add_all_qubit_readout_error(readout_error)
sim = AerSimulator(noise_model=noise_model)
# Ruissimulatie met density matrix
qc_dm = qc.copy()
qc_dm.save_density_matrix()
job = sim.run(qc_dm)
result = job.result()
rho = result.data(qc_dm)['density_matrix']
print("Noisy fidelity (density matrix):",
state_fidelity(DensityMatrix(rho), ideal))
Output:
State fidelity (ideal): 0.9999999999999991
Process fidelity (ideal): 0.9999999999999996
Noisy fidelity (density matrix): 0.6887759418623769
Share
Improve this answer
Follow
edited Jul 27, 2025 at 6:52
answered Jul 25, 2025 at 16:31
Bram
1,5418
8 silver badges
10
10 bronze badges
Thank you so much for your response. I think you have run your circuit on a simulator, which also, if you do tomography on a simulator with the noise data from a real device, you can get the same or even better results. –
physicino
Commented
Jul 27, 2025 at 16:08
Add a comment
Your Answer
Sign up or log in
Sign up using Google
Sign up using Email and Password
Post as a guest
Name
Email
Required, but never shown
Post Your Answer
By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.
Start asking to get answers
Find the answer to your question by asking.
Ask question
Explore related questions
qiskitquantum-stateprogrammingqiskit-runtime
See similar questions with these tags.
The Overflow Blog
How to get multiple agents to play nice at scale
We still need developer communities
Related
3
Implementing QFT
4
TranspilerError: 'The input circuit None is not scheduled'
1
Set IBMQ to qiskit-ibm-runtime
3
Why do the same circult yields very different results from different IBM backends?
1
issues with running code on IBM QPU
0
How to perform quantum state tomography with Qiskit after the deprecation of backend.run()?
0
Not able to connect to the IBM quantum platform:
Hot Network Questions
Why are gallons and cubic inches both used to measure liquid volume? What is the historical origin of this redundancy?
How should I contextualise group theory results?
Struggling with understanding generalised coordinates
Calculating the radius of a semicircle inscribed in a triangle
Why do so many high school students struggle with the quadratic formula, and what’s a better way to teach it?
Plot a domain in 3D with TikZ for a triple integral
Why did the referee keep the defender 6 feet away from the baseline?
What are the main differences between Hebrew and Talmudic Aramaic?
Use a magnetic field to insolate spacecraft from heat of the reentry plasma
Why is my filter list invalid in Adblock Plus, despite working in uBlock Origin?
Natural transformation between endo-functors of the category of modules
Material-specific reflection mapping as if it's the world
What did Jesus mean by we will do greater things than he did
LACP vs ACTIVE_BACKUP
Aligning text within a table cell so that it is centered horizontally and vertically
How can I easily get an approximate measurement of soil bearing strength without buying equipment or hiring contractors?
Non-Inverting Amplifier with Midpoint Biasing
What is this opening called and what should I do to counter it as black?
What focus is used for spells that do not specify they "count as a [your class] spell for you"?
How did Rocky manage to freeze xenon into xenonite?
Broken name resolution and connection on wireguard interface when devices are on LAN
What is proper technique to attach armored ground wire to grounding clamp?
Solvability of Knapsack variant
How should I compare a 4-point ordinal scale between two independent groups?
Question feed
By continuing to use this website, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy. By exiting this window, default cookies will be accepted. To reject cookies, select an option from below.
Customize settings
Cookie Consent Preference Center
When you visit any of our websites, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences, or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized experience. Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and manage your preferences. Please note, blocking some types of cookies may impact your experience of the site and the services we are able to offer.
Cookie Policy
Accept all cookies
Manage Consent Preferences
Strictly Necessary Cookies
Always Active
These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the site will not then work. These cookies do not store any personally identifiable information.
Targeting Cookies
Targeting Cookies
These cookies are used to make advertising messages more relevant to you and may be set through our site by us or by our advertising partners. They may be used to build a profile of your interests and show you relevant advertising on our site or on other sites. They do not store directly personal information, but are based on uniquely identifying your browser and internet device.
Performance Cookies
Performance Cookies
These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our site. They help us to know which pages are the most and least popular and see how visitors move around the site. All information these cookies collect is aggregated and therefore anonymous. If you do not allow these cookies we will not know when you have visited our site, and will not be able to monitor its performance.
Functional Cookies
Functional Cookies
These cookies enable the website to provide enhanced functionality and personalisation. They may be set by us or by third party providers whose services we have added to our pages. If you do not allow these cookies then some or all of these services may not function properly.
Cookie List
Clear
checkbox label label
Apply Cancel
Consent Leg.Interest
checkbox label label
checkbox label label
checkbox label label
Necessary cookies only Confirm My Choices