###### tags: `ノート` `解析` `NCBI GEO` `R` # 08_02: NCBI GEO解析 HeatMap作成 2 #### 2020/7/30 (月) , 在宅勤務 #### 【 作業場所&保存場所 】 • //osc-fs_home/scratch/t-suzuki/disease_meth • /home/s-maeda/osc-fs/08_NCBI_GEO_search <br> #### 再解析分も含めて、あらためてヒートマップ作成 きしまさん分のデータを `//osc-fs_home/scratch/t-suzuki/disease_meth` に置いてもらったので、 きしまさん分のデータと、自分のデータのpeak.IQR.ratioをそれぞれで抽出し、結合してからヒートマップ作成した。 --- ### 1:peak.IQR.ratioの抽出_1 まず自分の分から、 /home/s-maeda/osc-fs/08_NCBI_GEO_search に移動し確認。 ・EPICディレクトリの数確認 `find ~/osc-fs/08_NCBI_GEO_search/GSE* -name EPIC | wc -l`  98 ・*mot_analysis_result.txtの数確認 `find ~/osc-fs/08_NCBI_GEO_search/GSE*/EPIC -name *mot_analysis_result.txt | wc -l`  98 ディレクトリとtxtの数があっているので抽出 ``` #_抽出 for f in /home/s-maeda/osc-fs/08_NCBI_GEO_search/GSE*/EPIC/*mot_analysis_result.txt ; do awk '{print $14}' $f > $f.IQR done #_各列まとめる paste /home/s-maeda/osc-fs/08_NCBI_GEO_search/GSE*/EPIC/*.IQR >> peak.IQR.ratio_pre.txt #_max.peakヘッダー抽出 DIR="~/osc-fs/08_NCBI_GEO_search/GSE*/EPIC" str=`echo ${DIR} | awk -F "/" '{ print $4 }'` echo ${str} > peak.IQR.ratio_head.txt sed -E 's/ +/\t/g' peak.IQR.ratio_head.txt > peak.IQR.ratio_head2.txt #_ヘッダーと各peak.IQR.ratioあわせる sed -i -e '1d' peak.IQR.ratio_pre.txt cat peak.IQR.ratio_head.txt peak.IQR.ratio_pre.txt > peak.IQR.ratio_sm.txt ``` ### 2:peak.IQR.ratioの抽出_2 次にきしまさんの分、 //osc-fs_home/scratch/t-suzuki/disease_meth に移動し確認。 ・EPICディレクトリの数確認 `find //osc-fs_home/scratch/t-suzuki/disease_meth/GSE* -name EPIC | wc -l`  34 ・*mot_analysis_result.txtの数確認 `//osc-fs_home/scratch/t-suzuki/disease_meth/GSE*/EPIC -name *mot_analysis_result.txt | wc -l`  528 *mot_analysis_result.txt の数が多い。 EPIC/ 以下のディレクトリにマージ前のサンプルがたくさんあるようだ。 こちらで消そうとしても、パーミッションの問題でできない。 とりあえず、自分のディレクトリにコピーして消した。 /home/s-maeda/osc-fs/08_NCBI_GEO_search/disease_meth へ移動し確認。 ・EPICディレクトリの数確認 `find ~/osc-fs/08_NCBI_GEO_search/disease_meth/GSE* -name EPIC | wc -l`  34 ・*mot_analysis_result.txtの数確認 `find ~/osc-fs/08_NCBI_GEO_search/disease_meth/GSE*/EPIC -name *mot_analysis_result.txt | wc -l`  34 たぶんOK。抽出。 ``` #_抽出 for f in /home/s-maeda/osc-fs/08_NCBI_GEO_search/disease_meth/GSE*/EPIC/*mot_analysis_result.txt ; do awk '{print $14}' $f > $f.IQR done #_各列まとめる paste /home/s-maeda/osc-fs/08_NCBI_GEO_search/disease_meth/GSE*/EPIC/*.IQR >> peak.IQR.ratio_pre.txt #_max.peakヘッダー抽出 DIR="~/osc-fs/08_NCBI_GEO_search/disease_meth/GSE*/EPIC" str=`echo ${DIR} | awk -F "/" '{ print $5 }'` echo ${str} > peak.IQR.ratio_head.txt sed -E 's/ +/\t/g' peak.IQR.ratio_head.txt > peak.IQR.ratio_head2.txt #_ヘッダーと各peak.IQR.ratioあわせる sed -i -e '1d' peak.IQR.ratio_pre.txt cat peak.IQR.ratio_head2.txt peak.IQR.ratio_pre.txt > peak.IQR.ratio_mk.txt ``` このディレクトリに、 `peak.IQR.ratio_sm.txt` と`motif_ID.txt` も移動した。確認もした。 --- ### 3:ヒートマップの作成 #### ここからR ``` #データ読み込み mk <- read.table("peak.IQR.ratio_mk.txt", header=TRUE, stringsAsFactors=TRUE) sm <- read.table("peak.IQR.ratio_sm.txt", header=TRUE, stringsAsFactors=TRUE) mo <- read.table("motif_ID.txt", sep = "\t", header = T) #データ結合 mksm <- cbind(mk, sm) data <- cbind(mo, mksm) #いちおう結合データをtxtにしておく write.table (data, "peak.IQR.ratio_all.txt", sep ="\t", row.names=F, col.names=T, quote = F) #パッケージ読み込み library("ComplexHeatmap") # ヒートマップを描く library("circlize")    # カラーパレットの色を細かく分ける library("RColorBrewer") # カラーパレット #モチーフ名つける rownames(data) <- unlist(strsplit(as.character(unlist(data["motif_ID"])), ".motif")) #NAの行を削除 data_wona <- data[apply(data[,-1], 1, function(x){ !all(is.na(x))}),] #色の設定 breaks1 <- seq(-2,2, length=500) #breaks1に基づいて色を作製 mycols1 <- colorRamp2(breaks1,colorRampPalette(brewer.pal(9, "Blues"))(500)) #matrix変換 matrix1 <- as.matrix(data_wona) matrix1 <- apply(matrix1,c(1,2), as.numeric) #クラスタリング df1 <- matrix1[,-1] hc.rows <- hclust(dist(replace((df1), is.na(df1), 0))) hc.cols <- hclust(dist(replace((t(df1)), is.na(t(df1)), 0))) #ヒートマップ作成 ht1 <- Heatmap(df1, width = unit(6, "cm"), name = "peak/IQR", column_title = "Enriched motifs", column_title_gp = gpar(fontsize = 3), row_title = NA, row_names_gp = gpar(fontsize = 0.5), column_names_gp = gpar(fontsize = 0.5), col = mycols1, cluster_rows = hc.rows, cluster_columns = hc.cols, row_dend_width = unit(2, "cm"), na_col = "grey100", cell_fun = function(j, i, x, y, width, height, fill){ grid.rect(x = x, y = y, width = width, height = height, gp = gpar(col = "black", fill = NA, lty = 1, lwd = 0.2)) } ) pdf("heatmap_20200730.pdf") draw(ht1) dev.off() ``` ![](https://i.imgur.com/LQuPLO9.png)