Berechnung der MSD eines Brownschen Partikels unter Verwendung von Trackpy im Vergleich zu manuell
Posted: 17 Mar 2025, 01:24
Ich versuche, den Trackpy -Algorithmus zur Berechnung von MSD im Vergleich zu einer einfachen manuellen Methode zur Berechnung zu verstehen. Meine Absicht ist es, Trackpy zu verwenden, um die Spuren von Brownschen Partikeln zu analysieren, die auf Video aufgenommen wurden.
Ich habe dann TrackPy verwendet, um die MSD mit TP.Motion.msd zu berechnen. Eine lineare Beziehung zwischen MSD und Zeitverzögerung. Trackpy berechnete auch die genaue Diffusionskonstante, mit der ich die Trajektorien generiert habe. /> Meine Frage:
Da die Anzahl der Datenpunkte in beiden Methoden genau gleich sind, kann ich nicht erkennen, warum meine manuelle Methode mir keine lineare Beziehung zwischen der MSD und der Zeitverzögerung geben sollte. Bedeutet dies, dass der Trackpy -Algorithmus mit den Daten etwas Unzuverlässiges tut? Oder ist mit meiner manuellen Berechnung etwas grundlegend falsch? Dies sollte eine schnellere Methode sein, aber nicht unbedingt genauer, wenn ich sie richtig verstehe.
Code: Select all
#time interval for steps (comparable to camera fps)
dt = 1/485
#total measurement time (comparable to video length)
totalT = 4850
#Theoretical diffusion constant for a particle of size 30nm
diffC = 16e-12
track = np.zeros((totalT,3))
for i in range(1,len(track)):
track[i,0] = track[i-1,0]+dt
track[i,1] = track[i-1,1] + np.sqrt(2*diffC*dt)*np.random.normal(0,1)
track[i,2] = track[i-1,2] + np.sqrt(2*diffC*dt)*np.random.normal(0,1)
< /code>
I berechnen Sie die MSD dann manuell über alle möglichen Zeitintervalle mit dem folgenden Code: < /p>
MSD = np.zeros((len(track),4))
for tau in range(1,len(track)):
step = 1
displacements = track[0:-tau:step,1:]-track[tau::step,1:]
MSD[tau,0] = tau*dt
MSD[tau,1] = np.mean(displacements[:,0]**2)-np.mean(displacements[:,0])**2
MSD[tau,2] = np.mean(displacements[:,1]**2)-np.mean(displacements[:,1])**2
MSD[tau,3] = MSD[tau, 1] + MSD[tau, 2]
Da die Anzahl der Datenpunkte in beiden Methoden genau gleich sind, kann ich nicht erkennen, warum meine manuelle Methode mir keine lineare Beziehung zwischen der MSD und der Zeitverzögerung geben sollte. Bedeutet dies, dass der Trackpy -Algorithmus mit den Daten etwas Unzuverlässiges tut? Oder ist mit meiner manuellen Berechnung etwas grundlegend falsch? Dies sollte eine schnellere Methode sein, aber nicht unbedingt genauer, wenn ich sie richtig verstehe.