티스토리 뷰

Clinical Domain

rs-fMRI 4D data shape (tensor, list)

프루브프로젝트 2024. 2. 29. 20:08

표면적으로 4D 인 데이터, 모델 입력으로는 다중 리스트 배열, 텐서로 들어간다.

 

공간정보 손실 문제를 피하기 위해 3D를 2D로 변환하지 않고 입력하는데, Transformer 구조에서는 Time point를 모두 반영하는게 쉽게 가능한 것 같은데, 3D CNN 모델에 3D를 온전히 입력하면서 Time point까지 입력해서 Label을 Classification하는 방법이 있는지 알아가야 한다.

 

뇌 영역 ROIs 로 구분해서 각 영역별로 입력해서 Brain connectivity를 analysis하는 방법으로는 많은 자료를 찾아볼 수 있는데 이렇게 하면 3D 형식이 된다. ROI로 나누지 않고 전체 뇌 (Whole brain)를 입력으로 사용하려면 4D 형식을 입력해야 하는데, 레퍼런스 본 것들을 정리를 해나가면서 방법을 찾아봐야겠다.

import numpy as np

# 높이, 너비, 깊이, 시간 포인트를 정의합니다.
h, w, d, time_point = 2, 2, 2, 3

# 4차원 텐서를 생성합니다.
fmri_data = np.random.rand(h, w, d, time_point)
print(fmri_data)

# 출력 결과 예시:
# [[[[0.1 0.2 0.3]
#    [0.4 0.5 0.6]]
#
#   [[0.7 0.8 0.9]
#    [0.1 0.2 0.3]]]
#
#  [[[0.4 0.5 0.6]
#    [0.7 0.8 0.9]]
#
#   [[0.1 0.2 0.3]
#    [0.4 0.5 0.6]]]]

# 리스트 예시
fmri_list = fmri_data.tolist()
print(fmri_list)

# 출력 결과 예시:
# [[[[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]], [[0.7, 0.8, 0.9], [0.1, 0.2, 0.3]]], [[[0.4, 0.5, 0.6], [0.7, 0.8, 0.9]], [[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]]]]

 

 

[
  # 첫 번째 시간 포인트
  [
    # 첫 번째 공간 차원
    [
      [1, 2],  # 두 개의 픽셀 데이터
      [3, 4]
    ],
    # 두 번째 공간 차원
    [
      [5, 6],
      [7, 8]
    ]
  ],
  
  # 두 번째 시간 포인트
  [
    [
      [9, 10],
      [11, 12]
    ],
    [
      [13, 14],
      [15, 16]
    ]
  ],
  
  # 세 번째 시간 포인트
  [
    [
      [17, 18],
      [19, 20]
    ],
    [
      [21, 22],
      [23, 24]
    ]
  ]
]

 

 

[
  # 첫 번째 시간 포인트
  [
    # 첫 번째 공간 차원
    [[1, 2], [3, 4]],  # 두 개의 픽셀 데이터
    # 두 번째 공간 차원
    [[5, 6], [7, 8]]
  ],
  
  # 두 번째 시간 포인트
  [
    [[9, 10], [11, 12]],
    [[13, 14], [15, 16]]
  ],
  
  # 세 번째 시간 포인트
  [
    [[17, 18], [19, 20]],
    [[21, 22], [23, 24]]
  ]
]
댓글
최근에 올라온 글
페이지 이동 안내

보던 글 목록 : 브라우저 뒤로 가기 메인 화면 : 좌측 상단 아이콘
🍍 The GOAL: AI expert에 가까워지는 중

🍍 I am becoming AI expert who can develop cool things by coding.