샘플의 이름은 각 기관마다 다르지만, 분석할 때는 인덱싱 하기 쉽게 단순화하여 사용한다.
예를 들어 01번째 환자의 cheek 부위의 샘플이라면, "001ch"처럼 약자를 이용해 이름을 짓는다.
또한 마이크로바이옴 기초 데이터의 시퀀싱 결과를 파악하기 위해서 각 샘플마다 read 수를 확인해야 한다.
이때 sampling depth로 rarefy의 수를 정하기도 하고, 시퀀싱이 잘 되었는지 확인한다.
나는 이를 한눈에 보기 위해 R을 이용하여 아래와 같은 테이블을 만들고자 하였다.
HV01 | HV02 | HV03 | HV04 | Total Read |
|
So | |||||
Df | |||||
Ac | |||||
Ne |
하지만 여기엔 조건이 있다.
1. 이름에 각 환자의 순번과 부위가 존재해야 한다.
ex) 001VH, 003JF, CD001 등등 일정 형식이 존재해야 한다.
2. 모든 샘플의 이름의 형식이 동일해야 한다.
ex) CA001, CA01_mk과 같이 이름의 형식이 혼합되면 안 된다.
그렇다면 예제 데이터를 이용해 만들어 보자.
🟦 Read table 만들기
1. 샘플 이름 확인
일단 이름 확인에 앞서, 예제 데이터를 만들어보자. 여기서 필요한 데이터는 OTU(혹은 ASV) 테이블이다.
library(dplyr)
set.seed(42)
otu <- sample(x = 500:20000, size = 100) %>% matrix(nrow = 20, ncol = 5)
rownames(otu) <- c(paste0(sprintf("%03d", seq(1, 4)), "AC"),
paste0(sprintf("%03d", seq(1, 4)), "DF"),
paste0(sprintf("%03d", seq(1, 4)), "CA"),
paste0(sprintf("%03d", seq(1, 4)), "FB"),
paste0(sprintf("%03d", seq(1, 4)), "VX")
)
colnames(otu) <- paste0("ASV_", seq(1, 5))
otu
# ASV_1 ASV_2 ASV_3 ASV_4 ASV_5
# 001AC 3530 5931 6899 2616 14818
# 002AC 14067 11866 13476 1949 4165
# 003AC 2780 9444 15247 11007 15899
# 004AC 17901 5347 1221 1782 1437
# 001DF 830 2811 17156 15213 6037
# 002DF 13774 3778 8730 18949 7433
# 003DF 14730 18736 10720 741 17783
# 004DF 18068 16551 4799 10917 11978
# 001CA 14025 6243 13009 8059 735
# 002CA 13058 12464 8854 16486 19306
# 003CA 5210 9257 19591 8155 5286
# 004CA 16082 17373 9165 5767 4890
# 001FB 19919 3989 5115 2342 3068
# 002FB 15190 10203 11690 3221 9522
# 003FB 4266 14014 1889 16307 18609
# 004FB 11883 9726 6740 9992 11742
# 001VX 13475 1088 18603 3570 1886
# 002VX 8699 12722 10056 3654 17842
# 003VX 9555 12376 9701 15341 19423
# 004VX 7173 2945 13105 1246 11605
- column은 각 OTU/ASV를 나타내며, row는 각 샘플을 나타낸다.
- 샘플 이름의 형식은 XXXAA이며, XXX는 샘플링 환자 순서, AA는 샘플링 부위이다.
2. 각 샘플의 read 총 합 구하기
otu.sum <- as.data.frame(otu) %>% mutate(Read_Sum = rowSums(.) )
otu.sum
# ASV_1 ASV_2 ASV_3 ASV_4 ASV_5 Read_Sum
# 001AC 3530 5931 6899 2616 14818 33794
# 002AC 14067 11866 13476 1949 4165 45523
# 003AC 2780 9444 15247 11007 15899 54377
# 004AC 17901 5347 1221 1782 1437 27688
# 001DF 830 2811 17156 15213 6037 42047
# 002DF 13774 3778 8730 18949 7433 52664
# 003DF 14730 18736 10720 741 17783 62710
# 004DF 18068 16551 4799 10917 11978 62313
# 001CA 14025 6243 13009 8059 735 42071
# 002CA 13058 12464 8854 16486 19306 70168
# 003CA 5210 9257 19591 8155 5286 47499
# 004CA 16082 17373 9165 5767 4890 53277
# 001FB 19919 3989 5115 2342 3068 34433
# 002FB 15190 10203 11690 3221 9522 49826
# 003FB 4266 14014 1889 16307 18609 55085
# 004FB 11883 9726 6740 9992 11742 50083
# 001VX 13475 1088 18603 3570 1886 38622
# 002VX 8699 12722 10056 3654 17842 52973
# 003VX 9555 12376 9701 15341 19423 66396
# 004VX 7173 2945 13105 1246 11605 36074
Read_sum <- otu.sum$Read_Sum
# 001AC 002AC 003AC 004AC 001DF 002DF 003DF 004DF 001CA 002CA
# 33794 45523 54377 27688 42047 52664 62710 62313 42071 70168
# 001AC 002AC 003AC 004AC 001DF 002DF 003DF 004DF 001CA 002CA
# 47499 53277 34433 49826 55085 50083 38622 52973 66396 36074
3. 테이블 정리하기
이제 우리는 아래와 같은 Read_sum 정보를 담을 테이블을 만들고, 그 테이블에 각 read를 넣어보자
001 | 002 | 003 | 004 | Sum | |
AC | |||||
DF | |||||
CA | |||||
FB | |||||
VX |
- Read_table 만들기
# 행렬 이름
Col_n <- seq(1:4) # 10
Row_n <- c("AC", "DF", "CA", "FB", "VX")
# 빈 matrix 만들기
Read_table <- matrix(nrow = 5, ncol = 4)
colnames(Read_table) <- Col_n
rownames(Read_table) <- Row_n
Read_table
# 1 2 3 4
# AC NA NA NA NA
# DF NA NA NA NA
# CA NA NA NA NA
# FB NA NA NA NA
# VX NA NA NA NA
- 각 Read_table에
Na <-Read_sum %>% names()
for (i in Na) {
co <- substr(i, 1,3) %>% as.numeric()
ro <- gsub("*[0-9]", "", i)
Read_table[ro, co] <- Read_sum[i]
}
Read_table
# 1 2 3 4
# AC 33794 45523 54377 27688
# DF 42047 52664 62710 62313
# CA 42071 70168 47499 53277
# FB 34433 49826 55085 50083
# VX 38622 52973 66396 36074
- 각 샘플링 부위별 read 합 구하기
Read_table.2 <- Read_table
Read_table.2[is.na(Read_table.2)] <- 0
Read_table.3 <- cbind(Read_table.2,
rowSums(Read_table.2) %>% as.matrix())
colnames(Read_table.3)[5] <- "Sum"
Read_table.3
# 1 2 3 4 Sum
# AC 33794 45523 54377 27688 161382
# DF 42047 52664 62710 62313 219734
# CA 42071 70168 47499 53277 213015
# FB 34433 49826 55085 50083 189427
# VX 38622 52973 66396 36074 194065
이로써 각 환자별로 각 부위에서 시퀀싱이 완료된 read 수 정보를 한눈에 볼 수 있다.
끗