研究需要,得找出差異表達基因列表中的轉錄因子。列表長度上百,適合批量查詢。經過同學提醒,在 Genecards 上可以查詢到一個基因是否爲轉錄因子,就着這個線索,我在 Genecards 基因頁面中發現其利用了 HPA (human protein atlas) 的數據。順藤摸瓜找到了 Protein class 這個字段,其中的元素用逗號隔開的,如果元素中含有 Transcription factors 這個字眼就說明它是轉錄因子了。按照幫助中心 Programtic access 的指導,寫出如下R函數:
isTF <- function(ensemblIDList) {
res <- data.frame(ensemblID=ensemblIDList,isTF=rep("×",length(ensemblIDList)))
for( ensemblID in ensemblIDList ) {
tryCatch({
HPAq <- fread(paste0("https://www.proteinatlas.org/",ensemblID,".tsv"))
if ("Transcription factors" %in% unlist(strsplit(HPAq$`Protein class`, split=", "))) {
res[which(res$ensemblID==ensemblID),]$isTF <- "√"
}
print(paste0(ensemblID,": ", "Transcription factors" %in% unlist(strsplit(HPAq$`Protein class`, split=", "))))
}, error= function(e){
print(paste0("Error occurred for ",ensemblID))
})
}
return(res)
}
輸入爲 Ensembl ID 列表,返回一個新的2列列表,包含了 Ensembl ID 和是否爲轉錄因子(√-是,×-否)。有些查詢會返回404錯誤,因此用了 tryCatch 結構。由於默認所有基因都不是轉錄因子,通過依次查詢來動態修改,因此出現陰性結果既可能是真陰性,也可能是網絡原因未能從HPA下載到數據,如果需要嚴格區分兩種情形可以自行修改代碼。