User Tools

Site Tools


manipulation_of_ani_matrix_data_file_using_r

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
manipulation_of_ani_matrix_data_file_using_r [2023/02/15 12:54] – [데이터 파일을 읽어들이고 기본 점검하기] hyjeongmanipulation_of_ani_matrix_data_file_using_r [2023/02/15 17:04] (current) – [Label을 자유롭게 표시하기] hyjeong
Line 99: Line 99:
   ...   ...
      
-이미 대칭 상태가 되도록 처리를 마친 ani 데이터프레임의 row 라벨을 균주명으로 치환한 ani_s를 생성한 뒤 클러스터링을 해 보자. 아래에 보인 코드의 for{} 블록 내부에 있는 row.names() 함수를 names()로 바꾸면 컬럼 라벨을 바꾸는 효과가 있다.+이미 대칭 상태가 되도록 처리를 마친 ani 데이터프레임의 row 라벨을 균주명으로 치환한 ani_s를 생성한 뒤 클러스터링을 해 보자. 아래에 보인 코드의 for{} 블록 내부에 있는 row.names() 함수를 names()로 바꾸면 컬럼 라벨을 바꾸는 효과가 있다. Named vector를 이용하는 매우 유용한 예제이므로 잘 익혀두기 바란다. 바꾸기 전의 라벨이 key 벡터에 들어있고, 바꾸고 나서의 라벨은 names(key)로 지정함을 잊지 말자.
  
   > data = read.table("accession-strain.csv",sep=",",stringsAsFactors=F)   > data = read.table("accession-strain.csv",sep=",",stringsAsFactors=F)
-  > key = data[,1] +  > key = data[,1]         # GCF_000463565.1 
-  > names(key) = data[,2]+  > names(key) = data[,2]  # Paenibacillus polymyxa WLY78 
 +  > key 
 +         Paenibacillus polymyxa WLY78      Paenibacillus polymyxa DSM 365  
 +                    "GCF_000463565.1"                   "GCF_000714835.1"  
 +  ...
   > ani_s = ani   > ani_s = ani
   > for (i in row.names(ani_s)) {   > for (i in row.names(ani_s)) {
Line 169: Line 173:
   > heatmap.2(as.matrix(ani),col=greenred(10),trace="none",scale="none",dendrogram=c("row"))   > heatmap.2(as.matrix(ani),col=greenred(10),trace="none",scale="none",dendrogram=c("row"))
   > library(ComplexHeatmap)   > library(ComplexHeatmap)
-  > Heatmap(as.matrix(ani), name="test", row_names_gp = gpar(fontsize = 5), column_names_gp = gpar(fontsize = 5)) +  > Heatmap(as.matrix(ani), name="ANI", row_names_gp = gpar(fontsize = 5), column_names_gp = gpar(fontsize = 5)) 
 +{{ :heatmap_20230215.png?400 |Heatmap()으로 그렸음.}}
 이번에는 row와 column을 서로 다른 방식으로 클러스터링해 보자. row는 임포트한 트리(ezTree_51_pfam_rooted.nwk, dendrogram 객체여야 함)를 기준으로 정렬하되 column은 ani 데이터프레임의 값으로 자체적인 클러스터링을 적용한다. 실제로 그려보니 별로 예쁘질 않다. 이번에는 row와 column을 서로 다른 방식으로 클러스터링해 보자. row는 임포트한 트리(ezTree_51_pfam_rooted.nwk, dendrogram 객체여야 함)를 기준으로 정렬하되 column은 ani 데이터프레임의 값으로 자체적인 클러스터링을 적용한다. 실제로 그려보니 별로 예쁘질 않다.
-  > Heatmap(as.matrix(ani), name="test", cluster_rows = tree.2, row_names_gp = gpar(fontsize = 5), column_names_gp = gpar(fontsize = 5))+  > Heatmap(as.matrix(ani), name="ANI", cluster_rows = tree.2, row_names_gp = gpar(fontsize = 5), column_names_gp = gpar(fontsize = 5))
 row와 column 전부 tree.2를 기준으로 정렬해 보자. row와 column 전부 tree.2를 기준으로 정렬해 보자.
-  > Heatmap(as.matrix(ani), name="test", cluster_rows = tree.2, cluster_columns = tree.2, row_names_gp = gpar(fontsize = 5), column_names_gp = gpar(fontsize = 5))+  > Heatmap(as.matrix(ani), name="ANI", cluster_rows = tree.2, cluster_columns = tree.2, row_names_gp = gpar(fontsize = 5), column_names_gp = gpar(fontsize = 5))
 ==== Label을 자유롭게 표시하기 ==== ==== Label을 자유롭게 표시하기 ====
-위에서 보인 ani 데이터프레임의 라벨 치환 사례에서는 accession-strain.csv 파일로부터 data 데이터프레임을 만들고, 이로부터 key라는 named vector를 생성하여 사용했었다. 그러나 Heatmap() 함수에서는 각 축의 고유한 라벨은 그대로 두되 그림으로 나타낼 라벨만 원하는 형태로 바꿀 수 있다. 그러나 data 데이터프레임으로부터 key와는 반대 구조를 갖는 named vector(key.2)를 만들어야 한다. 편의상 row label만 실제 균주의 full name으로 바꾸어서 heatmap을 그려 보자. +위에서 보인 ani 데이터프레임의 라벨 치환 사례에서는 accession-strain.csv 파일로부터 data 데이터프레임을 만들고, 이로부터 key라는 named vector를 생성하여 사용했었다. 그러나 Heatmap() 함수에서는 각 축의 고유한 라벨은 그대로 두되 그림으로 나타낼 라벨만 원하는 형태로 바꿀 수 있다. 단, data 데이터프레임으로부터 아까의 것과는 반대 구조를 갖는 named vector(key.2)를 만들어야 한다. 편의상 row label만 실제 균주의 full name으로 바꾸어서 heatmap을 그려 보자. 
-  > key.2 = data[,2] +  > key.2 = data[,2]        # Paenibacillus polymyxa WLY78 
-  > names(key.2) = data[,1] +  > names(key.2) = data[,1] # GCF_000463565.1 
-  > Heatmap(ani, name = "test", row_labels = key.2[rownames(ani)], row_names_gp = gpar(fontsize = 5), column_names_gp = gpar(fontsize = 5)) +  > key.2 
- +                        GCF_000463565.1                       GCF_000714835.1  
 +         "Paenibacillus polymyxa WLY78"      "Paenibacillus polymyxa DSM 365"  
 +  ... 
 +  > Heatmap(as.matrix(ani), name = "ANI", row_labels = key.2[rownames(ani)], row_names_gp = gpar(fontsize = 5), column_names_gp = gpar(fontsize = 5)) 
 +{{ :heatmap_20230215b.png?400 |Row label을 치환하여 그린 heatmap. 데이터프레임 자체의 row label은 바뀌지 않았다.}} 
 +ComplexHeatmap의 활용법을 자세히 알아보려면 [[https://jokergoo.github.io/ComplexHeatmap-reference/book/index.html|Complete Reference]]를 참고하기 바란다.
manipulation_of_ani_matrix_data_file_using_r.1676433290.txt.gz · Last modified: by hyjeong