zjb.main.data.correlation 源代码

import numpy as np
from traits.api import ArrayOrNone

from zjb._traits.types import Instance

from ..dtb.atlas import RegionSpace
from .base import ArrayData
from .space import Space


[文档] class SpaceCorrelation(ArrayData): """空间相关, 特定空间内任意两个点之间的相关程度 空间相关是一个ArrayLike, 可以使用np.asarray或np.array获取空间相关的数据 Attrs ===== space: Space 空间, 定义相关所在的空间 data: array, shape (*space.shape,) + (*space.shape,) 相关数组, 空间中任意两个点的相关程度 """ space = Instance(Space)
[文档] class Connectivity(SpaceCorrelation): """连通性, 特定空间中任意两个点之间的连接强度"""
[文档] class RegionalConnectivity(Connectivity): """脑区连通性, 特指脑区空间的连通性 Attrs ===== space: RegionSpace 脑区空间, 定义连通性所在的空间 """ space = Instance(RegionSpace)
[文档] @classmethod def from_npy(cls, fp: str, space: RegionSpace): """从.npy文件导入""" matrix = np.load(fp) return cls(space=space, data=matrix)
[文档] class StructuralConnectivity(RegionalConnectivity): """结构连通性, 通过对DTI进行纤维束追踪得到脑区之间的白质连接强度, 还可选地包含脑区间的纤维束长度信息 Attrs ===== tract_lengths: np.ndarray[space_shape+space_shape, dtype[float]] | None 纤维素长度数组数组, 任意两个脑区之间的纤维束长度[mm] """ tract_lengths = ArrayOrNone()
[文档] def delays(self, speed: float = 3.0, dt: "float | None" = None): """根据纤维束长度计算延迟矩阵 Parameters ---------- speed : float, optional 电导速度[mm/ms], by default 3.0 dt : float | None, optional 时间步长[ms], 为None表示不进行离散化, by default None Returns ------- np.ndarray[space_shape+space_shape, dtype[float | int]] | None _description_ """ tract_lengths = self.tract_lengths if not tract_lengths: return None delays = tract_lengths / speed if not dt: return delays return np.rint(delays / dt).astype(int)
[文档] class FunctionalConnectivity(RegionalConnectivity): """功能连通性, 对各个脑区的脑活动计算相关可以得到脑区之间的功能连通性, 最常见的是通过对BOLD信号计算Pearson相关得到"""