manipulation_of_ani_matrix_data_file_using_r
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
manipulation_of_ani_matrix_data_file_using_r [2023/02/15 11:45] – [Label을 자유롭게 편집하기] hyjeong | manipulation_of_ani_matrix_data_file_using_r [2023/02/15 17:04] (current) – [Label을 자유롭게 표시하기] hyjeong | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== R을 이용하여 ANI matrix 자료 다루기(작성 중) ====== | + | ====== R을 이용하여 ANI matrix 자료 다루기 ====== |
- | 제목은 ANI matrix(행렬)라고 하였으나 실제로는 dataframe | + | 제목은 ANI matrix(행렬)라고 하였으나 실제로는 |
$ unzip ANI_R_exercise.zip | $ unzip ANI_R_exercise.zip | ||
Line 10: | Line 10: | ||
inflating: accessions.txt | inflating: accessions.txt | ||
- | [[http:// | + | [[http:// |
Use <-, not =, for assignment. | Use <-, not =, for assignment. | ||
===== 데이터 파일을 읽어들이고 기본 점검하기 ===== | ===== 데이터 파일을 읽어들이고 기본 점검하기 ===== | ||
Line 17: | Line 17: | ||
매트릭스가 아니라 dRep의 Ndb.csv 파일과 같이 < | 매트릭스가 아니라 dRep의 Ndb.csv 파일과 같이 < | ||
- | pyani 결과물에서는 행과 열의 이름의 이미 같은 순서대로 존재한다. 굳이 확인하고 싶다면 다음과 같이 한다. | + | pyani 결과물에서 행과 열의 이름은 이미 같은 순서이다. 굳이 확인하고 싶다면 다음과 같이 한다. |
> x = colnames(ani) | > x = colnames(ani) | ||
> y = rownames(ani) | > y = rownames(ani) | ||
Line 99: | Line 99: | ||
... | ... | ||
| | ||
- | 이미 대칭 상태가 되도록 처리를 마친 ani 데이터프레임의 row 라벨을 균주명으로 치환한 ani_s를 생성한 뒤 클러스터링을 해 보자. 아래에 보인 코드의 for{} 블록 내부에 있는 row.names() 함수를 names()로 바꾸면 컬럼 라벨을 바꾸는 효과가 있다. | + | 이미 대칭 상태가 되도록 처리를 마친 ani 데이터프레임의 row 라벨을 균주명으로 치환한 ani_s를 생성한 뒤 클러스터링을 해 보자. 아래에 보인 코드의 for{} 블록 내부에 있는 row.names() 함수를 names()로 바꾸면 컬럼 라벨을 바꾸는 효과가 있다. Named vector를 이용하는 매우 유용한 예제이므로 잘 익혀두기 바란다. 바꾸기 전의 라벨이 key 벡터에 들어있고, |
> data = read.table(" | > data = read.table(" | ||
- | > key = data[,1] | + | > key = data[, |
- | > names(key) = data[,2] | + | > names(key) = data[, |
+ | > key | ||
+ | | ||
+ | " | ||
+ | ... | ||
> ani_s = ani | > ani_s = ani | ||
> for (i in row.names(ani_s)) { | > for (i in row.names(ani_s)) { | ||
Line 165: | Line 169: | ||
==== Heatmap 그리기 ==== | ==== Heatmap 그리기 ==== | ||
- | 우선 ani 데이터프레임을 자체적으로 클러스터링하여 heatmap을 만들어 보자. gplots heatmap.2()는 레이아웃을 수정하지 않으면 보기에 좀 불편할 것이다. 자세한 사항은 이전에 쓴 글 [[data_visualization|Data visualization]]을 참고하라. | + | 우선 ani 데이터프레임을 자체적으로 클러스터링하여 heatmap을 만들어 보자. gplots heatmap.2()는 레이아웃을 수정하지 않으면 보기에 좀 불편할 것이다. 자세한 사항은 이전에 쓴 글 [[data_visualization|Data visualization]]을 참고하라. 반면 ComplexHeatmap Heatmap()은 특별히 레이아웃을 건드리지 않아도 라벨이 길다고 하여 경계 바깥으로 잘리거나 하지 않아서 매우 좋다. |
> library(gplots) | > library(gplots) | ||
> heatmap.2(as.matrix(ani), | > heatmap.2(as.matrix(ani), | ||
> library(ComplexHeatmap) | > library(ComplexHeatmap) | ||
- | > Heatmap(as.matrix(ani), | + | > Heatmap(as.matrix(ani), |
+ | {{ : | ||
이번에는 row와 column을 서로 다른 방식으로 클러스터링해 보자. row는 임포트한 트리(ezTree_51_pfam_rooted.nwk, | 이번에는 row와 column을 서로 다른 방식으로 클러스터링해 보자. row는 임포트한 트리(ezTree_51_pfam_rooted.nwk, | ||
- | > Heatmap(as.matrix(ani), | + | > Heatmap(as.matrix(ani), |
row와 column 전부 tree.2를 기준으로 정렬해 보자. | row와 column 전부 tree.2를 기준으로 정렬해 보자. | ||
- | > Heatmap(as.matrix(ani), | + | > Heatmap(as.matrix(ani), |
- | ==== Label을 자유롭게 | + | ==== Label을 자유롭게 |
- | 앞서서 accession-strain.csv 파일로부터 얻은 data 데이터프레임이 필요하다. | + | 위에서 보인 ani 데이터프레임의 라벨 치환 사례에서는 |
- | > key.2 = data[,2] | + | > key.2 = data[, |
- | > names(key.2) = data[,1] | + | > names(key.2) = data[, |
- | > Heatmap(ani, | + | > key.2 |
- | + | GCF_000463565.1 | |
+ | " | ||
+ | ... | ||
+ | > Heatmap(as.matrix(ani), name = "ANI", row_labels = key.2[rownames(ani)], | ||
+ | {{ : | ||
+ | ComplexHeatmap의 활용법을 자세히 알아보려면 [[https:// |
manipulation_of_ani_matrix_data_file_using_r.1676429137.txt.gz · Last modified: by hyjeong