【Gist】通過 Ensembl ID 查詢基因是否爲轉錄因子

研究需要,得找出差異表達基因列表中的轉錄因子。列表長度上百,適合批量查詢。經過同學提醒,在 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下載到數據,如果需要嚴格區分兩種情形可以自行修改代碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章