问题标签 [nilearn]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 由于 4D numpy 数组而出现 ValueError?sklearn 和 nilearn
我正在尝试将一些 MRI 灰质图图像作为 numpy 数组加载,以便它们可以在 sklearn 中进行处理。我的代码导入它们并使用 NiftiMasker 加载它们(NiftiMasker 对图像应用掩码以提取时间序列,我认为这是导致错误的 numpy 数组中的第 4 维)。当我尝试运行此代码时出现 ValueError ,因为由于某种原因,当我只需要一个 3D 数组时,数据被加载为 4D numpy 数组。有没有办法减少数组的维度或其他方法来解决这个错误?这是代码:
这是错误和回溯:
python - 找不到 fsl.Merge() 命令(通过 nipype.interfaces 使用时)
我已经安装了这些:
示例代码:
它给出了错误:
OSError:在主机上找不到命令“fslmerge”。请检查是否安装了相应的软件包。
你能帮我么?
python - 如何创建具有多个输入的管道?
我想通过使用二进制掩码来应用特征选择。二进制掩码是通过使用模板文件和阈值创建的,因此掩码文件中的 1 和 0 与模板对象中高于或低于该阈值的值相对应。在下一步中,我想使用此掩码“剪切”数据集中的特征,并将此特征选择子集传递给其他后续管道步骤。掩码构建过程和预处理过程都使用关键字参数(例如我刚才提到的阈值),它们可以被视为超参数,因此可以通过嵌套交叉验证进行优化。我怎样才能(或者更好地)在一个管道中实现掩模构建过程的优化和以下管道步骤?
这是使用 nilearn 的 oasis 数据集的示例:
假设我有一个名为 nifti 的文件template
,它用作二进制掩码的模板。我还有来自 30 个主题(特征)及其年龄(标签)的灰质 mri 图像:
管道应该将模板和特征都作为输入。然后应用嵌套交叉验证来找到最佳超参数。管道必须包含一个切割函数mask_cutter
,该函数将掩码和特征作为输入,并返回原始数据集的特征子集。在这个例子中,阈值set_mask
和 C 参数svc
都应该被优化(注意以下部分是无效的伪代码):
filenames - ImageFileError:无法计算出“.nii”的文件类型
当我尝试加载我的 . NII文件作为 4D Niimg-like 对象(我已经尝试过nilearn和nibabel),
我收到以下错误
错误:ImageFileError:无法计算出“/Users/audreyphan/Documents/Spring2020/DESPO/res4d/1/res4d_anat.nii”的文件类型
这是我的代码:
两次尝试都会导致相同的错误。
我不确定是什么导致了这个错误的发生?
谢谢!
scikit-learn - 在三维空间中分别绘制从 sklearn.decomposition.PCA 派生的 PCA 分量
对于我的项目,我使用三维 MRI 数据,其中第四维代表不同的主题(为此我使用包nilearn)。我sklearn.decomposition.PCA
用来从我的数据中提取给定数量的主成分。现在我想在大脑图像上分别绘制组件,也就是说,我想用不同颜色显示我提取的组件(在本例中为 2)的大脑图像。
这是使用 OASIS 数据集的示例代码,可以通过nilearn API下载:
- 掩蔽 using
nilearn.input_data.NiftiMasker
,它将我的 4 维数据转换为 2 维数组(n_subjects x n_voxels)。 - 使用标准化数据矩阵
StandardScaler
- 使用以下方式运行 PCA
sklearn.decomposition.PCA
:
据我了解,我在运行 PCA 后获得的是 PCA 负载吗?不幸的是,我不明白如何从这得到两个图像,每个图像都包含一个 PCA 组件。
numpy - 在 nilearn/numpy 中交换 3D 图像的轴
我正在处理一些神经影像数据,我的扫描尺寸是 (100, 150, 100)。我目前正在使用 nibabel 格式的文件。
有没有很好的方法来交换轴?例如,我希望我的图像为 (100, 100, 150)。我希望它采用 nibabel 格式,但如果需要,我可以将图像保存到 numpy ndarray,然后也可以在那里进行工作。在这种情况下,在 numpy 中是否有一种很好的方法来做到这一点?
感谢您的帮助!
python - 使用 nilearn 进行 3D 图像可视化
我使用 plot_glass_brain 用 nilearn 可视化 3D 图像(Nifti),但显示不正确。见下面的代码和图片
该2_1_t2.nii
文件可在此链接上找到:https ://drive.google.com/file/d/1_gsg8sO9c7Ws6Xd7xB1uFSW8H31tAHtm/view?usp=sharing
python - 重新排序 Nifti 文件轴
我有一些尺寸为(50、100、50)的 3D nifti 文件。我想翻转 y 和 z 轴,使尺寸为(50、50、100)。执行此操作的最佳方法是什么,我将如何修改与文件相关的仿射?
目前,我正在将 nifti 文件制作成一个 numpy 数组并像这样交换轴
我对下一步感到困惑。我知道我可以使用该函数nib.Nifti1Image
将 numpy 数组变成一个 nifti 对象,但是我将如何修改仿射以考虑轴的变化?
感谢您的任何帮助。
python - 如何使用 nilearn 和 matplotlib 子图绘制 3D 大脑图像的多个切片
我是编码新手,所以如果我完全错了,请告诉我。
我想使用 nilearn 绘制 25 个脑部扫描切片。这 25 个切片应沿 z 轴以 value=2 的步长移动。我想使用子图来使用子图来呈现它们。
这是我到目前为止所拥有的:
'rsn_four' 是粗体扫描的 3D Nifti 文件。
我认为我最大的问题之一是,我不知道如何实现,每个轴我想要 np.arange() 的 5 个值,然后将其带到下一个轴继续计数。
如果我错过了一些信息,请告诉我,这是我在这里的第一篇文章!