今回の条件は、「半数以上のサンプルにおける発現が閾値 (min.thrd)より大きい遺伝子を残す」というもの。
実行したら以下が生成される
・フィルタリング無しの発現ファイル(XX.txt)
・フィルタリング有りの発現ファイル(XX_HalfisLarger_(min.thrd).txt)
・表現型ファイルのひな型(XX.cls) ※要編集
このプログラムにおいても、Working directoryがCELファイルと同じ場所になっていることが前提になっている。
主な変更点に関する注釈をマゼンタ色で表示している。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | # !!!設定項目!!! output_txt_filename <- "HGU133plus2_XX.txt" output_cls_filename <- "HGU133plus2_XX.cls" cls_name <- c("WT", "MUT") min.thrd <- 50 # ***終わり*** # ライブラリの確認 require(affy) || stop("Library affy is NOT available") require(stringr) || stop("Library stringr is NOT available") # RMAで正規化し、logスケール化されているのを戻す rma_data <- justRMA() exprs(rma_data) <- 2 ^ exprs(rma_data) rma_mat <- exprs(rma_data) # サンプル名に.CELが含まれていると動作不良になるため外す colnames(rma_mat) <- str_sub(colnames(rma_mat), end = -5) mstr_data <- rma_mat filtered_data <- mstr_data # しきい値以下の場合に、閾値を代入 filtered_data[filtered_data <= min.thrd] <- min.thrd # 半数以上が閾値を越えている行を残す filtered_data <- filtered_data[which(rowMeans(filtered_data > min.thrd) >= 0.5),] # txtファイルの整形 # descriptionは"na"だとなぜか動作不良 # 行列を引数にできないようなので、繰り返し、、 name_col <- matrix(data = rownames(mstr_data), nrow = nrow(mstr_data), ncol = 1) colnames(name_col) <- "NAME" dcrp_col <- matrix(data = 1, nrow = nrow(mstr_data), ncol = 1) colnames(dcrp_col) <- "Description" mstr_data <- cbind(name_col, dcrp_col, mstr_data) name_col <- matrix(data = rownames(filtered_data), nrow = nrow(filtered_data), ncol = 1) colnames(name_col) <- "NAME" dcrp_col <- matrix(data = 1, nrow = nrow(filtered_data), ncol = 1) colnames(dcrp_col) <- "Description" filtered_data <- cbind(name_col, dcrp_col, filtered_data) # 処理データのファイル名編集 output_filtered_filename <- output_txt_filename str_sub(output_filtered_filename, -4, -5) <- paste("_HalfisLarger_", min.thrd, sep = "") # txtファイルの出力(全データ) write.table(mstr_data, file = output_txt_filename, col.names = TRUE, row.names = FALSE, sep = "\t", na = "", quote = FALSE) # txtファイの出力(編集データ) write.table(filtered_data, output_filtered_filename, col.names = TRUE, row.names = FALSE, sep = "\t", na = "", quote = FALSE) # clsファイルを作成 cls_file <- matrix(nrow = 3, ncol = ncol(rma_mat)) cls_file[1,1] <- paste(as.character(ncol(rma_mat)), as.character(length(cls_name)), "1", sep = " ") cls_file[2,1] <- paste("#", paste(cls_name, collapse = " "), sep = " ") cls_file[3,] <- colnames(rma_mat) # clsファイルの出力 write.table(cls_file, file = as.character(output_cls_filename), col.names = FALSE, row.names = FALSE, sep = "\t", na = "") |
No comments:
Post a Comment