1. Why and when do I need the package?
2. How to use it?
mni_to_region_name():
Input MNI coordinates -> Output region names
3. How to install it? Simple easy!
4. Advanced issue: What if I have a hundred of MNI coordinates?
5. Other functions
5.1 region_name_to_mni():
Input region names -> Output MNI cooridnates
5.2 list_brain_regions():
List all brain region names in templates
5.3 show_cluster_composition():
Show the composition of a cluster of cooridinates
1. 何時我需要用到該套件呢 ?
2. 該怎麼使用該套件呢?
3. 如何安裝?非常簡單!
4. 進階議題:如果我有100個MNI座標呢?
Those who work with MRI (Magnetic resonance imaging) data often want to know how dozens of MNI coordinates correspond to which anatomical brain regions (e.g., [x = 18, y = -5, z = 20] belong to the brain region "Right Caudate").
However, to my knowledge, all the free programs/tools with this feature are GUI-based(e.g. MRIcron, XJview,aal toolbox). That is, one need to manually key in/click on the interested MNI coordinate and manullay copy down the region name shown on the screen. This could be quite tedious and time-consuming when one is dealing with dozens or more MNI coordiante. Yet, none available tools provide program-embedded code.
Therefore, I create the R package "label4MRI" for MNI labeling.
### 2. How to use the label4MRI package? - #### Input MNI Coordinates -> Output Region Names mni_to_region_name(x, y, z, distance = T, template = c("aal", "ba"))
mni_to_region_name(x = 26, y = 0, z = 0)
$aal.distance [1] 0
$aal.label [1] "Putamen_R"
$ba.distance [1] 0
$ba.label
[1] "Right-Putamen (49)"
- Example 2, when the mni coordinate does NOT have a corresponding region:
mni_to_region_name(x = 0, y = 0, z = 0)
$aal.distance [1] 7.81025
$aal.label [1] "Thalamus_L"
$ba.distance [1] 4.242641
$ba.label [1] "Left-Thalamus (50)" ```
### 3. How to install the package? Simple easy! #### Install via R command line. ###### Please type the following codes in R command line
# Step1:
install.packages("devtools") #This is only required for the first time*
# Step2:
library("devtools")
# Step3:
install_github("yunshiuan/label4MRI") #This is also only required for the first time*
# Step4:
library(label4MRI)
# Step5: Install completed!
# Try "mni_to_region_name(x = 0, y = 0, z = 0)", you should get the results as above.
### 4. Advanced issue: What if I have a hundred of MNI coordinates? (done within 10 seconds!)
(1) Create a data frame which contains all the MNI coordinates.
|mni_x | mni_y | mni_z| |------ | ------ | ----| |-2 | -19 | -16| |11 | 4 | -8| |3 | 4 | -19| |...|...|...|
(2) Process the 100 MNI coordinates.
### 5. Other functions - #### 5.1 Input Region Names -> Output MNI Cooridnates region_name_to_mni(region_names, template = "aal")
region_name_to_mni(region_names = "Precentral_R", template = "aal")
$aal.Precentral_R x y z 1 64 13 14 2 63 13 15 3 64 13 15 4 65 13 15 5 66 13 15 6 63 14 15 ... ... ``` - #### 5.2 List All Brain Region Names list_brain_regions(template = c("aal", "ba"))
list_brain_regions(template = "aal")
$aal [1] "Precentral_L" "Precentral_R" "Frontal_Sup_L" [4] "Frontal_Sup_R" "Frontal_Sup_Orb_L" "Frontal_Sup_Orb_R" [7] "Frontal_Mid_L" "Frontal_Mid_R" "Frontal_Mid_Orb_L" [10] "Frontal_Mid_Orb_R" "Frontal_Inf_Oper_L" "Frontal_Inf_Oper_R" [13] "Frontal_Inf_Tri_L" "Frontal_Inf_Tri_R" "Frontal_Inf_Orb_L" ... ...
```
show_cluster_composition(coordinate_matrix, template = c("aal", "ba"))
Input description:
```
set.seed(1) brain_matrix <- matrix(cbind( x = runif(n = 10, min = 10, max = 15), y = runif(n = 10, min = 10, max = 15), z = runif(n = 10, min = -5, max = 0) ), nrow = 3, byrow = T) show_cluster_composition(brain_matrix)
$aal.cluster.composition Number of coordinates Percentage (%) NULL 6 60 Caudate_R 2 20 Putamen_R 2 20
$ba.cluster.composition Number of coordinates Percentage (%) NULL 6 60 Right-Caudate (48) 4 40 ```
### 1. 何時我需要用到該套件呢 ?: - 有時後MNI 座標非常多,希望能一次知道所有MNI座標所對應的腦區名稱為何。然而,目前的程式都是GUI介面(如:MRIcron,XJview,aal.toolbox),要手動一個一個按按鈕,當作標很多的時候很花時間,且也無法和R code鑲嵌再一起。目前似乎沒有人寫能在command line執行的function code。 - 因此,我用Rcode寫了可以執行該功能的函數。歡迎有需要的人下載使用。該函數已被測試過,結果和MRIcron的完全相同,可以放心使用。此外,該套件比MRIcron更厲害,當MNI座標沒有直接對應的腦區名稱時,可以回報離它最近的腦區名稱以及對應的距離。
mni_to_region_name(x = 26, y = 0, z = 0)
$aal.distance [1] 0
$aal.label [1] "Putamen_R"
$ba.distance [1] 0
$ba.label
[1] "Right-Putamen (49)"
- 例子二: *當MNI座標 **沒有** 直接對應的AAL/BA腦區名稱時*
**mni_to_region_name(0,0,0)
mni_to_region_name(x = 0, y = 0, z = 0)
$aal.distance [1] 7.81025
$aal.label [1] "Thalamus_L"
$ba.distance [1] 4.242641
$ba.label [1] "Left-Thalamus (50)" ``` - 描述: - x, y, z : MNI 座標的x,y,z 值. - distance(預設 = T):若輸入的MNI座標不屬於任何AAL/BA腦區(如:落在腦室中),則會回報最接近的腦區名稱,以及和其的距離(mm)。當MNI座標屬於AAL/BA定義的腦區,則回報distance=0。
### 3. 如何安裝?非常簡單! ### 選項A(建議): 透過R指令安裝
# 步驟一:
install.packages("devtools") *#該步驟僅在第一次安裝時需要*
# 步驟二:
library("devtools")
# 步驟三:
install_github("yunshiuan/label4MRI") *#該步驟也僅在第一次安裝時需要*
# 步驟四:
library(label4MRI)
# 步驟五: 安裝完成!
# 測試看看 "mni_to_region_name(x = 0, y = 0, z = 0)", 你應該會看到上方的結果;
(1) 創造一個data frame。裡面包含這一百個MNI座標的數值。 -"m"是一個data frame,裡面包含這100個MNI座標的3個變數-x,y,z座標的值。"m$x"是這100個MNI座標的x值,以此類推。
mni_x | mni_y | mni_z | ------ | ------ | ----| | -2| -19| -16| |11|4 | -8| |3|4|-19| |...|...|...|
(2) 標記這一百個座標。
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.