图片缩略图

生成合成fMRI数据

版本1.14.0.0 (88.6 KB) 杰里米·曼宁
这个程序是有用的调试功能磁共振成像分析和模型。

5下载

更新2015年11月11日

查看版本历史

查看许可协议

给定一组体素位置(样本文件提供),实验设计矩阵和期望的信噪比,该程序生成一组合成体素激活。
每个实验协变量(可以在每次试验中不同程度地激活,如设计矩阵中所规定的)被分配一个单一的径向基函数。基函数的中心是在指定大脑的范围内统一选择的,宽度也是统一选择的。(注意:您可以通过在设计矩阵中为每个协变量提供多个列来将多个径向基函数与每个协变量关联起来。)

每次试验的合成大脑图像是试验期间活跃的源基函数的加权组合,加上零均值高斯噪声。(高斯噪声的标准差通过信噪比参数来控制。)

为了增加真实性,一个可选标志允许用户指定合成数据是否包含合成血流动力学响应函数。

合成数据可以以NIFTI格式保存(这依赖于下载中包含的代码)//www.tatmou.com/matlabcentral/fileexchange/8797-tools-for-nifti-and-analyze-image).

注意:这段代码包含了"join"函数://www.tatmou.com/matlabcentral/fileexchange/4872-join

引用作为

杰里米·曼宁(2021年)。生成合成fMRI数据(//www.tatmou.com/matlabcentral/fileexchange/36125-generate-synthetic-fmri-data), MATLAB中央文件交换。检索

意见及评分(18

普罗奇达Federica

不来一份斯卡卡洛,来麦?

贾基尔Aralbaev

有什么例子吗?

杰里米·曼宁

这段代码现在托管在GitHub上:https://github.com/ContextLab/neurosim

杰里米·曼宁

嗨hstein,

如您所述,创建满足特定时间序列约束的数据的关键是构造适当的设计矩阵。设计矩阵的每一行对应一个时间点。每一列对应于某些大脑区域的预期活动(在这个模拟中,大脑区域是大脑某处随机构造的球体)。在本例中,您需要为希望模拟镜像的每个BOLD时间序列在设计矩阵中添加一列。(如果你想要多个模拟的“大脑区域”来反映单个BOLD时间序列,你应该复制设计矩阵的相应列。)您应该将“sim_hemo”标志设置为false,以便设计矩阵中的时间序列不会与HRF进行卷积。

如果你想创建一个合成的。nii图像,作为一个10 × 20 × 30体素的矩形棱镜(存储在synthetic.nii中),具有预先指定的设计矩阵(X),并且没有噪声(无限信噪比),你可以使用以下命令:

[data, cov_images, params, meta] = generate_data([10 20 30], x, inf, 1, false, 'synthetic.nii');

其中输出参数在generate_data中描述。M文档(“help generate_data”)和。nii文件合成。Nii可以用任何标准的脑图像查看器(例如fslview)来查看。

hstein

嗨,杰里米,
我正在使用您的工具箱绘制由计算DFT模型生成的fMRI数据(参见Buss等人2014年的描述,doi: 10.1162/jocn_a_00496)。对于每个模型层(信号源),每个条件都有一个平均BOLD信号,所以我的数据已经与HRF卷积了。
我如何正确地使用这些数据的图像生成与您的工具箱?我尝试使用分层标准化信号(值在[0,1]内)作为nconditions by nlayers设计矩阵,这是有效的,但对我来说仍然不正确。

谢谢你的帮助!

Janki梅塔

玛尔塔maieron

很好的

爱德华·金

一个

杰里米·曼宁

嗨Nes,

你下载大脑绘图包有问题吗?你应该在那个提交页面上添加注释,而不是这个页面。但是如果你只是点击“下载提交”链接并解压缩你下载的文件,所有的。m文件都应该在结果文件夹中。我刚刚重新下载了那个包来验证,对我来说它看起来没问题……

新经济学院

嗨,杰里米,
我搜索//www.tatmou.com/matlabcentral/fileexchange/36139-2d-and-3d-brain-plots)页面,但我看不到任何我可以下载的文件。
你的文件被删除了,是吗?
谢谢你!

ladyme

谢谢!

杰里米·曼宁

“data”变量包含设计矩阵指定的每个试验的图像(见上文)。这就是传给plot_brain2d或plot_brain3d的东西。2d图通常更适合查看合成数据。这是因为,在真实数据中,“有趣的东西”通常发生在外部表面,而在合成数据中,来源同样可能位于脑容量内的任何地方。

假设你想要生成一个简单的数据集,其中包含两个试验,每个试验有一个唯一的活动源,以及无限的信噪比:

[data,cov_images] = generate_data(meta,eye(2),inf);

使用默认设置生成第一次试验的2d图(需要安装)//www.tatmou.com/matlabcentral/fileexchange/36139-2d-and-3d-brain-plots),使用:

{1} plot_brain2d(数据、元);

要使用默认设置生成第二次试验的3d图,请使用:

plot_brain3d({2}数据元);

在上面的每个示例中,“meta”都是下载此包时包含的矩阵。(有关元矩阵的其他详细信息,请参阅文档。)

ladyme

所以我只是从generate_data的结果馈送到plot_brain3d?用哪一种?数据还是cov_images?你能给我演示一下这条线是怎么用的吗?谢谢

杰里米·曼宁

ladyme

很抱歉问了这么愚蠢的问题,但是我该如何绘制图像呢?

杰里米·曼宁

我已经更新了提交的一些示例设计矩阵——我希望这对你有帮助!(等待一天左右,更新就会出现。)

卡尔

设计矩阵X必须是一个实数矩阵。X的每一列都对应一个协变量。X的每一行对应一个试验(每次试验将生成一张图像)。所以第i行和第j列控制了试验i中主动协变量j的值

X =眼(5);

对应于5个试验,每个试验有一个活跃的协变量。

X = rand(10,5);

给出10次试验,每次试验中随机活跃5个协变量。最后,

X =[眼睛(5)眼睛(5)]

给你5次试验,每次试验中有2个活跃的协变量。

mizzue

嗨,杰里米,

我很好奇你是如何设计X矩阵的?

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

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!