マイクロアレイで発現変動を示した遺伝子の中からPubMedから入手したエビデンスリストに含まれる遺伝子を抽出するコードを作成しました。ご紹介します。
解析の前準備
- Rの導入についてはこちらから。
- XML, XLConnectパッケージの導入
*パッケージの一括導入は下記コードで可能です。
install.packages(c("XML", "XLConnect"))
- 発現変動を示した遺伝子名(Official Symbol)が入力されたエクセルファイル(試験結果ファイル)
*遺伝子名(Official Symbol)の他にfold changeやflagの情報が入力されていても問題はありません。必須情報は遺伝子名です。
PubMedのエビデンスリストを入手
遺伝子網羅解析を実施する方はPubMedをご存知かと思います。参考までに、PubMedで遺伝子のエビデンス入手方法を紹介します。
- PubMedにアクセスする。http://www.ncbi.nlm.nih.gov/pubmed
- 検索入力枠左から検索対象のデータベースを「Gene」に変更してエビデンスリストを入手したいキーワードを入力する。検索するとキーワードに関連する遺伝子が検索結果に表示されます。
- 検索結果の右上に表示されるSend toをクリックしFile→FormatをxmlとしCreate Filを押す。そうすると、xmlファイルがダウンロードできます。
*なお、キーワードによってはxmlファイルサイズが大変大きくなりますのでご注意を。
コードの実行
実行すると、試験結果ファイルからエビデンスリストに含まれる遺伝子を抽出し、最終行にPubMedの遺伝子機能のサマリーが追加された「結果.csv」が出力されます。詳細はコードにコメントを記述していますのでご確認ください。
###ライブラリーの読み込み#####
library(tcltk)
library(XML)
library(XLConnect)
########
###解析遺伝子データで遺伝子名列番号を入力#####
AnaGeneName <- 2
#####
###結果保存先のフォルダを設定#####
SaveDir <- as.data.frame(paste(as.character(tkchooseDirectory(title = "データ保存フォルダを選択"), sep = "", collapse =" "))) #初期dirpathの取得準備
SaveDir <- paste(SaveDir[1:(nrow(SaveDir)),], sep = " ", collapse = "/" ) #保存pathの取得
setwd(SaveDir)
########
###xmlデータの読み込み#####
selectAXlm <- paste(as.character(tkgetOpenFile(title = "xmlファイルを選択",filetypes = '{"xmlファイル" {".xml"}}',initialfile = "*.xml")), sep = "", collapse =" ")
MasterXmlData <- xmlInternalTreeParse(selectAXlm)
########
###解析遺伝子データの読み込み#####
sheetSelect <- 1 #読み込むシート番号を入力
selectABook <- paste(as.character(tkgetOpenFile(title = "解析遺伝子データxlsxファイルを選択",filetypes = '{"xlsxファイル" {".xlsx"}}',initialfile = "*.xlsx")), sep = " ", collapse =" ")
MasterAnaData <- loadWorkbook(selectABook)
MasterGeneAnaData <- readWorksheet(MasterAnaData, sheet = sheetSelect)
########
###XLMファイルから遺伝子名を抽出#####
GeneName <- xpathSApply(MasterXmlData, "//Gene-ref_locus", xmlValue) #遺伝子名
########
###解析遺伝子データから遺伝子名を抽出#####
GeneAnaData <- MasterGeneAnaData[,2]
GeneAnaData <- GeneAnaData[complete.cases(GeneAnaData)] #NAの除去
########
###対象遺伝子名の抽出とサマリーの付与#####
ResultList <- NULL
for( i in seq(GeneName)){
if(identical(all.equal(sum(match(GeneAnaData, GeneName[i]), na.rm = TRUE), 1), TRUE)){
SerchName <- as.character(GeneName[i]) #おまじない
GeneList <- subset(MasterGeneAnaData, MasterGeneAnaData[,2] == SerchName) #遺伝子名の抽出
ListNO <- which(GeneName == GeneName[i]) #サマリー抽出の準備
Summary <- xpathSApply(MasterXmlData,
paste("//Entrezgene[", ListNO, "]//Entrezgene_summary", sep =""),
xmlValue) #サマリー抽出
ifelse(length(Summary) == 0, Summary <- "NA", NA) #サマリーがない場合の対処
ResultGene <- cbind(GeneList, Summary) #結合
ResultList <- rbind(ResultList, ResultGene) #最終データ
}else{
NA
}
}
########
write.csv(ResultList, "結果.csv", row.names = FALSE) #結果をcsvで保存
[/code]
少しでも、あなたの実験解析が楽になりますように!!
もし、不明点がありましたらこちらからお問い合わせください。