图片缩略图

粒子轨迹的均方位移分析

version 1.3.0.0 (21.2 KB) by 让Tinevez
一个MATLAB类用于粒子轨迹的均方位移分析,带有教程。
5.0
22日评级

27下载

更新2021年2月27日

从GitHub

视图版本历史

在GitHub上查看许可证

均方位移(MSD)分析是胶体研究和生物物理学中常用的一种技术,用于确定随时间变化的颗粒位移模式。特别是,它可以帮助确定粒子是否为:
——自由扩散;
——运输;
它的运动受到限制和限制。
在此之上,它还可以推导出运动参数的估计,如扩散系数。

@msdanalyzer是一个MATLAB的每值类,它帮助执行这类分析。用户提供他测量的几个轨迹,而类可以得到有意义的量,以确定运动形式。

msdanalyzer可以处理轨迹(粒子轨迹),这些轨迹不是同时开始的,有不同的长度,有缺失检测(间隙:一个粒子在一帧或几帧中没有被检测到,然后重新出现),并且没有相同的时间采样。一旦将轨道添加到类中,一切都是透明的。它提供了绘图和检查数据的设施,无论是对单个粒子,还是对整体平均量。它有几种方法来校正漂移,而漂移是分析中误差的主要来源。校正后的数据可以通过MSD曲线或速度自相关进行分析。包括MSD曲线的自动拟合(但它们需要你有曲线拟合工具箱),允许导出运动类型及其特性。

包括一个相当长的教程与参考资料,这将介绍您使用数值模拟的问题,使您复制公布的结果,并详细说明类如何工作。需要一些物理学基础。

http://tinevez.github.io/msdanalyzer/

如果你在工作中使用这个工具,我们恳请你引用下面这篇文章:

纳丁·塔伦蒂诺,让-伊夫·蒂内维斯,伊丽莎白·法里斯·克罗威尔,伯特兰·博伊森,里卡多·恩里克斯,穆萨·姆兰加,法布里斯·阿古,阿兰Israël和伊曼纽尔·拉普兰廷。TNF和IL-1在诱导NEMO-IKK超分子结构时表现出不同的泛素需求。J Cell Biol(2014) 204卷(2)页231-45

http://jcb.rupress.org/content/204/2/231

引用作为

让Tinevez(2021)。粒子轨迹的均方位移分析GitHub (https://github.com/tinevez/msdanalyzer)。检索

意见及评分(74

阿什利·斯科特

嗨,珍,
当我运行程序时,我一直得到这个错误
类“msdanalyzer”的不可识别方法、属性或字段“addAll”。

PlotLogScaleMSDForUnknownDiffGeneral错误(第35行)
马= ma.addAll(跟踪);

你知道我该怎么补救吗?

阿什利

穆斯塔法萨米

很好的工具。只有一个问题,ft = fittype('poly1');用于曲线拟合。

我们是否可以使用ft = fittype('poly2');为了更好的合身?

Vibhuti Rana

你好,
我有些困难访问教程和导入我的轨道。谁能告诉我怎么做?
谢谢!

安娜Baj

Minhaz ur拉赫曼

Xing-Lei歌

Minhaz ur拉赫曼

Minhaz ur拉赫曼

谁能帮助如何计算Van Hove相关函数与msdanalyzer?

AB

你好,我真的很喜欢这个节目。我有几个关于如何使用它的问题。我看到了你的解释,我正在从斐济的Trackmate程序导入曲目。你说的类是什么意思?我从Trackmate的xml文件中得到xy坐标和时间的最终结果,我关心的是如何提取这个信息到MATLAB,以便我可以从它获得MSD。我有每个坐标系的x和y坐标以及时间,我该怎么做呢?请让我知道。谢谢你!

Minhaz ur拉赫曼

嗨,珍,谢谢你分享这个美丽的节目。然而,我有疑问。loglog适合是否基于重量?如果有,重量的确定标准是什么?我的另一个问题是,为什么《时代》的平均集合意味着MSD的合适的α并不总是复制所有的α的平均值或中值?谢谢你!

mahsa mofidi

我读了注释,但没能将我的轨迹导入代码。我应该定义一个新类吗?我有二维轨迹,格式为matlab。mat文件一个Nsteps数组x 3(时间x y)。请指导我如何进口它们

Sebastien MAILFERT

完美的软件与详细的描述,例子和支持。金宝app
非常感谢。

烟雾

SNT

你好!
我目前使用ImageJ插件mosaic来进行单粒子跟踪。该文件的格式如下;

轨道框架x y z m0 m1 m2 m3 m4 NPscore
11 0 117.605 14.233 0 1.304 1.275 2.059 3.649 6.958 25.804

我如何使用这个xls文件计算MSD使用@msdanalyzer?

谢谢!
Sarala

马克斯

伟大的项目!
只有一个问题,在计算标准时如何定义自由度?我注意到自由度不是整数。谢谢!

Ni Putu Dewi Nurmalasari

嗨,让,
我使用U-track做单粒子跟踪。我想知道你是否有任何建议,如果我可以使用你的代码来计算从u轨道的所有轨道的MSD
谢谢
戴维·

安迪McGlone

奇妙的计划。

是否有一种方法只计算特定的延迟时间,而不是所有的延迟?

例如,如果我的数据扩展到10秒,但我只想计算MSD高达5秒的延迟时间,这是可能的?

问候,安迪

我解决了这个问题!
这是一个非常好的程序。
对于那些不像我一样熟悉MATLAB的人。
类msdanalyzer应该定义在一个名为@msdanalyzer的文件夹中。(@很重要,不要像我那样修改它)
我们应该添加@msdanalyzer所在的路径。

这个程序看起来很好。

但我也有同样的问题:
当输入“ma=ma.addAll(tracks);”时,它会给出“msdanalyzer类没有合适的方法、属性或字段addAll”。

任何更新。

谢谢,

亚历山大-伍尔兹

我有一个关于以下的问题,我看到很多人都有同样的问题:
当输入“ma=ma.addAll(tracks);”时,它会给出“msdanalyzer类没有合适的方法、属性或字段addAll”。

根据你的指令,我键入“哪个msdanalyzer”,它给我“C:用户\jrl743\文档\MATLAB\ msdanalyzer \msdanalyzer。m % msdanalyzer构造函数,类似地输入“which addAll”显示C:\Users\jrl743\Documents\MATLAB\ msdanalyzer \addAll.m。
我认为路径设置得很好,然而Matlab仍然抱怨。我在Matlab中使用的是Matlab 2014版,也在2013年尝试过。我认为问题在于ma对象,它阻塞了要插入的数据。

谢谢你的暗示。

亲切的问候

LM

嗨,让,

抱歉,是我的错,我有相同长度的MSD曲线。当然,对于不同的长度,你是对的。

目前只有一个问题让我困惑:如果我看一下模拟数据,结果列在ma.lfit中。a表示斜率,与我用其他程序(excel)拟合相应MSD曲线时得到的斜率完全一致。例如,如果我应用线性拟合并只考虑它的前25%,MSD曲线Nr. 5的斜率为0.14,这也是ma.lfit.a中的第5个值。然而,对于我的实际数据来说,情况并非如此。在这种情况下,假设MSD曲线492的斜率为59,ma.lfit.a中第492项的值是91:它在某种程度上是相同的范围,但有时值的差异非常大。

由于我使用的模拟数据和实际数据之间的唯一真正区别是,对于第一个轨道,所有轨道的长度都是相同的,而对于后者,单个轨道的长度是不同的,所以我尝试了使用不同长度的模拟轨道时会发生什么。我也观察到了同样的情况——matlab/msdanalyzer外的曲线拟合结果与fitMSD给出的值不一致。我觉得这很奇怪,不知道你能不能解释一下?

我很抱歉继续问这么多问题。我知道你的工作不是回答所有的问题。但是,我真的很喜欢你的程序,并且用它进行了大量的分析。我需要了解它才能正确地使用它,我感谢您对我的帮助——也感谢您的耐心;)

问候,
LM

让Tinevez

嗨@LM。

这里有一个简单的反例。假设你有两个轨道。
第一个是MSD曲线,它从dt=0延伸到10,是一条斜率为5的完美直线。
第二种方法的MSD曲线从dt=0延伸到无穷,是一条斜率为1的完美直线。

如果你通过拟合单独的曲线得到两个扩散系数的平均值,你会得到D=3。

如果你将MSD曲线平均,然后拟合均值,你将得到D=1。

最好的
司法院

LM

亲爱的让,

在过去的几天里,我运行了一些模拟,现在已经提出了一个可能的原因的问题。

首先,我从理论上研究了平均MSD曲线的拟合和单一MSD曲线所有拟合的均值是否可能不同。这不可能。

然后,我继续使用模拟数据,并利用程序进行分析。我发现单一MSD曲线拟合的均值与平均MSD曲线拟合的均值完全对应。我注意到所有的轨迹都有相同的长度,但在我的实验数据中却不是这样——我有从500步到只有5步的轨迹。

这个问题可能和这个有关吗?也许用于单MSD曲线线性拟合的25%是从最长轨迹的角度来看的,这意味着在我的例子中,以125步或更少(大多数)的轨迹被认为是100%?

LM

嗨,让,

在进行了一些模拟和与同事交谈后,我仍然感到困惑。它不应该不管一分之一的斜率决定了单一斜坡和构建意味着从他们或计算均值曲线然后决定斜率(由于使用了相同的剪裁的因素,但在这种情况下,它是第一个25%在任何情况下,对吧?)。结果值应该是相同的。

我将单个斜率与单个曲线的MSD进行了比较——它们是拟合的,也就是说,如果我绘制曲线n的MSD,拟合它并将它与曲线n的斜率进行比较,它们就会对齐。

我真的很抱歉打扰你,但我认为你是问这个问题的最佳人选。

提前非常感谢!

LM

mtmtmt

嗨,让,

你能详细说明一下为什么所有单个斜率的平均值与从平均MSD曲线得到的斜率不一样…?到目前为止,我还没有找到为什么这两个值应该不同的理由。
当单个轨迹被拟合时,只有前25%的钉被认为是在计算平均MSD曲线的情况下。那么,为什么会有这种差异呢?

非常感谢!)

让Tinevez

郑重声明:@LM和@YOUNGKWANG LEE报告的问题不是问题。
当拟合单个轨道时,无论轨道的大小如何,拟合都会接收到预期的数据量。

让Tinevez

嗨@YOUNGKWANG李
我想你发现了一个漏洞。你能把错误的数据发给我吗?这样我就可以调查并重现错误了。这对我有帮助。

LM

嗨,让,

再说一次,是我;)
我使用了fitMSD程序来计算斜率,就像你说的(我真的应该查一下

手册……对不起! ^ ^)。

如前所述,我使用getMeanMSD来获得跟踪的粒子的平均MSD曲线。如果我适合

一个线性曲线的数据,我得到一个特定的值的直线平均MSD与时间。

现在,我使用fitMSD来获得所有单一MSD曲线的斜率(“a”在lfit)。

我的问题是:所有a值的均值不应该等于拟合平均MSD曲线时得到的斜率的值吗?因为,事实并非如此。所有a值的平均值比平均MSD曲线的斜率大40%左右。

LM

LM

嗨,让,

非常感谢你快速的回答!

YOUNGKWANG李

嗨,让,

感谢您的分享。

我运行msdanlayzer有些问题。
使用假数据运行是完全没问题的,但当我使用实际数据时,就会出现一些bug。

总之,所有的轨迹都有不同的轨迹长度。如果我做MSD拟合,从每个轨迹得到单独的D值,拟合范围自动设置为Max。轨迹长度*剪切因子。结果表明,所有计算的msd值都有相同的时间轴,对应于最长轨迹。在短轨迹中,如果x^2和y^2在以后的时间延迟中不可用,则显示NaN。

谢谢你!

让Tinevez

嗨@LM,
fitMSD方法执行您想要的操作。
最好的
司法院

LM

嗨,让,

又是我——几个月前我问过一个问题;)我上次遇到的问题现在解决了,在我开始下一个之前,让我称赞一下你这个伟大的程序!H
现在,对于我的问题——我想这是一个相当愚蠢的问题,但我基本上是一个matlab新手……对于某个应用,我需要每个轨迹的扩散系数,而不是平均扩散系数。当然,你的程序是计算它的,因为它是计算平均值的,但是我怎么把值算出来呢?在理想情况下,我只是从每条MSD曲线得到一个扩散系数列表……

非常感谢!)

约翰·罗杰斯

嗨,让,

我遇到了与其他人类似的问题,即“没有合适的方法、属性或字段addAll用于类msdanalyzer”。我已经检查了路径设置是否正确,但还是无法正常工作。你对如何使这个程序运行有什么建议吗?

谢谢,
约翰

马丁Stefl

嗨,让,

我发现了问题所在。

感谢一个非常棒和强大的程序。

马丁

马丁Stefl

嗨,让,

首先非常感谢您的分享。然而,我有一点困难运行它。事实上,我和弗洛伦特和约翰内斯已经报告过的问题是一样的。当输入“ma=ma.addAll(tracks);”时,它会给出“msdanalyzer类没有合适的方法、属性或字段addAll”。
根据你的说明,我键入“哪个msdanalyzer”,它给我“E:马丁\Matlab-fce\Makra\MSD analyzer\msdanalyzer”。m % msdanalyzer constructor",类似地键入"which addAll"显示"E: Martin\Matlab-fce\Makra\MSD analyzer\addAll.m"。
我认为路径设置得很好,然而Matlab仍然抱怨。我还试着把你的函数包放到C:\....Matlab\工具箱\MSD分析仪文件夹,但它没有帮助。
任何提示都是有用的

感谢很多
马丁

利亚姆

嗨,让,
是的,它涉及到MatLab程序的ImarisXT版本。
我可以发送给你一个发生这个错误的文件(有几个-虽然不是所有的文件我已经这样做了)。我会直接给你发信息,我们可以在ImarisOpen上讨论。
非常感谢,
利亚姆

让Tinevez

嗨@Liam。
看来你是在评论另一个相关的软件。从你报告的bug来看,我猜你说的是将这个类移植到ImarisXT,对吗?
让我们在ImarisOpen页面讨论它。而且,如果没有产生bug的文件,我什么也做不了。
最好的
司法院

利亚姆

你好,再次让,

我出现了一个新的错误信息,与之前的错误信息略有不同(奇怪的是,当我在Imaris重新分析我的数据时,它就不再出现了……)
错误信息如下:

索引超出矩阵维度。

importTracksFromImarisXT错误(第54行)
{我}= T (trackFrames);

XTMeanSquareDisplacementGrapher错误(第116行)
跟踪= importTracksFromImarisXT (vSpots);

这还是原来的原点吗?
我检查了Imaris的时间戳的位数,据我所知只有3位小数点。我还检查了导入数据的时间戳,通常有2-3个小数,偶尔有4-5个小数。
同样,这个错误只出现在。ims文件的一些轨道上,而不是其他轨道(在同一个。ims文件中)。

你有什么主意吗?

最好的
利亚姆

Renjie

嗨,让,
现在可以了,谢谢你的帮助,这个代码非常有用。

亲切的问候,
Renjie

让Tinevez

嗨@Renjie
看起来像是安装问题。MSDanalyzer是作为类发布的,因此需要将它作为类安装。检查包含@msdanalyzer的文件夹是否在路径中,而不是@msdanalyzer文件夹本身。
告诉我它是否有效。

Renjie

Renjie

嗨,让,

首先我想说这是一个非常有用的程序,谢谢你的分享。然而,按照教程,第一步是错误,当我输入mc=msdanalyzer(2,'μm','s');matlab会说没有函数用于'private'。你发现这个情况了吗?你能帮我一下吗?

非常感谢你的帮助。

亲切的问候,

Renjie

让Tinevez

嗨@Javad
总是同样的毛病。请查看我的评论下面的起源和如何修复它。
最好的
司法院

Javad

嗨,让,

首先我想感谢你分享你的全面计划。我尝试了几次用我自己的轨迹运行它,但我得到了以下错误:
使用-错误
矩阵维数必须一致。

msdanalyzer/computeMSD错误(第86行)
Delta = dr2 - mean_msd(index_in_all_delays);

我没有通过子程序,但我能问你,你是否使用平滑或任何类型的噪声减少程序在你的代码或没有?

亲切的问候,
Javad

让Tinevez

嗨@Liam,谢谢你的反馈。
你在这里提到的类似于一个已知的bug。如果您想要分析的影片的帧间隔定义在太多的数字上(比如0.18374531289123648392716秒),那么当将间隔打包在一起时,类会感到困惑,这最终会触发您得到的错误。
你能检查一下你箱子里的帧间隔是多少吗?把它裁剪成几位数就可以解决这个问题了。
最好的
司法院

利亚姆

嗨,让,

很棒的软件!非常有用的。然而,我用它来分析Imaris轨迹,得到以下错误:

计算速度自相关152轨道…[...使用+是错误的
矩阵维数必须一致。

msdanalyzer /computeVCorr错误(第1266行)
Sum_vcorr (index_in_all_delays) = Sum_vcorr (index_in_all_delays) + lvcorr;

XTMeanSquareDisplacementGrapher错误(第137行)
默沙东- = msd.computeVCorr;

你有解决办法吗?(恐怕我没有MatLab语言的知识…)

很多谢谢!

让Tinevez

嗨@LM,
我非常欣赏u-track软件,但我没有创造出可以将其结果安排到分析仪的东西,对不起。
谢谢你的反馈。

LM

LM

你好,让,

首先祝贺你的fone计划!
我有一个关于分析数据准备的问题。它需要是一个带有时间点和x/y坐标的单元格数组。我使用uTrack (http://lccb.hms.harvard.edu/software.html)跟踪。这给了我一个很复杂的坐标。我是相当新的matlab和有困难安排他们作为msdanalyzer需要他们。
所以我的问题是:您是否已经使用uTrack进行跟踪,或者现在使用其他人的方法从输出中提取相关数据?
任何帮助都将非常感谢!

谢谢!

让Tinevez

@Vid。事实上,这个问题是由帧间隔有太多的数字引起的。这将导致在帧间减去时间位置时产生舍入误差,并且有些帧间隔没有合并在一起。
这是一个严重的缺陷,源于我的设计选择。以物理单位存储帧间隔是一个糟糕的想法,这将导致这些错误,唯一的解决方案是重写分析器并将帧间隔存储为整数。
在此期间,你的修复当然有效。

让Tinevez

@Florent @Johannes。这显然指向了一个MATLAB路径问题。记住msdanalyzer是一个类。什么
> >这msdanalyzer
回报吗?

Vid Sustar

你好,

一段时间以前,我已经通过电子邮件发送了xml文件,但是不管怎样,我们和一个同事回溯了代码。

的确,trackmate .xml文件中的frameInterval有太多的小数(由于Zeiss显微镜软件更新)。

我已经通过加100解出来了。ImportTrackmateTracks。m: metadata.frameInterval = digits(7);

最好的问候,
从视频

约翰内斯

你好,

我有同样的问题“Florent”与addall“ma=ma. addall (tracks)”。错误信息:“msdanalyzer类没有适当的方法、属性或字段addAll。”

我用“which msdanalyzer”检查了文件的位置:
C: \ ProgramFiles \ MATLAB工具箱\ R2012a \ \ msd \ msdanalyzer。msdanalyzer构造函数

C:\Program Files\MATLAB\R2012a\toolbox\msd\addAll.m

如果我得到它正确的文件位置是ok的,代码必须是工作?!

致以最亲切的问候
约翰

让Tinevez

嗨@Vid,
我怀疑这是由一个好朋友发现的一个问题引起的,与浮点帧间隔的舍入错误有关。你能把曲目的XML文件发邮件给我吗?

Vid Sustar

这就跟你问声好!

当使用msdanalyser与xml文件从trackmate我得到一个消息:
计算44道MSD…1/ 44使用-错误
矩阵维数必须一致。

msdanalyzer/computeMSD错误(第487行)
Delta = dr2 - mean_msd(index_in_all_delays);

这个问题怎么解决?

最好的问候,

Vid Sustar

让Tinevez

嗨@Florent
这似乎是安装问题。
“哪个msdanalyzer”命令说什么?
“帮助msdanalyzer”说了什么?

弗洛伦特·SPAGNI

嗨,让,
我有一个问题与你的matlab文件类类型,特别是为addall "ma = ma. addall (tracks);"。
我在终端上打印了这个错误消息:“没有合适的方法,属性,或字段addAll类msdanalyzer.”。
你以前有过这样的想法吗?或者你有过让它奏效的方法吗?
期待很快的阅读给你。
致以最亲切的问候
弗洛伦特·

Gurthwin

让Tinevez

声明:@Gurthwin给我发了他的轨迹让我调查,我发现它们是错误的。在某些情况下,连续两次检测的次数是相同的,所以我们有dT = 0,这导致msdanalyzer不能正常工作。
Gurthwin正在调查问题的原因,我发布了一个新版本,检查提供的轨道没有这个问题。

Gurthwin

嗨,让

我可以把数据发给你。

最好的
Gurthwin

让Tinevez

@Gurthwin,
这看起来是代码的敏感部分。我需要产生错误的数据来修复它。你可以发邮件联系我吗?

Gurthwin

这是一个非常棒的MSD分析工具。我已经尝试提交我自己的一些轨道,但我在命令窗口收到了以下错误消息:
计算208轨道的MSD…3/208 ? ?使用==>减错误
矩阵维数必须一致。

错误在==> msdanalyzer>msdanalyzer. computemsd在470
Delta = dr2 - mean_msd(index_in_all_delays);

我很确定轨迹是正确的。你建议我怎么做?

最好的
gbo

让Tinevez

@Fredik:嗨Fredik。
实际上不是:这个MATLAB类是一个每个值的类,这意味着如果您不将更改的对象重新分配给一个新的引用,更新就会丢失。
所以实际上你需要这样做:
>> msd = msd. addtracks(…);
每一次。
最好的
司法院

弗雷德里克·

嘿,
这是一个非常好的小课程,我认为会非常有用。看到这样好的文档特别高兴。

我有一个问题希望得到帮助:
原则上,所有应该更新属性的东西都会抛出一个看起来应该的新obj(添加轨迹等)。但是被操作的对象没有保存更新。如果我改变构造函数,取轨迹它工作,它们作为对象属性持久化,但不能被改变。

我正在使用matlab2012a,如果这应该有关系。
我使用的类似类没有任何其他问题。

我们将感谢对此的任何投入。

干杯
弗雷德里克·

让Tinevez

@Sadiye,
嗨。你可以在下载的html教程中找到这个工具。只要阅读它,你就会找到你需要的信息。
最好的
司法院

Sadiye Velioglu

你好,
我真的想使用这个msdanalyzer,但我找不到任何文档使用。我需要加载什么类型的文件(轨迹)来进行分析?我怎么装载轨道?
非常感谢。
真诚地,

蕾妮

仪陇贾

整洁!

仪陇贾

里艾

彼得Beemiller

马特·贝克

伟大的文档。独立的它是一个非常有用的教程,理解MSD计算,但另外是非常实用的扩散系数计算在无数的情况下。

哈瑞钱德拉

MATLAB版本兼容性
创建R2012b
与任何版本兼容
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!