訂閱
糾錯(cuò)
加入自媒體

免疫細(xì)胞組分:immunedeconv包與Xcell批量處理文件

2021-01-30 08:57
科研菌
關(guān)注

一、immunedeconv包的下載與安裝

immunedeconv包:用于根據(jù)組織RNA測(cè)序數(shù)據(jù)估算免疫細(xì)胞組分的計(jì)算方法。該包的資源不同于一般的R包,并沒有儲(chǔ)存在CRAN或者bioconductor中。在github中查找immunedeconv,搜索頁面出來的第一個(gè)就是可供R語言調(diào)用的immunedeconv包。點(diǎn)擊進(jìn)入便可以找到immunedeconv包的相關(guān)內(nèi)容,以及下載、使用等相關(guān)信息。

點(diǎn)擊進(jìn)入,頁面的最下方就是immunedeconv包下載的源代碼,這是調(diào)用remote包中的install.github()函數(shù)進(jìn)行下載。

執(zhí)行命令如下:

install.packages("remotes")
remotes::install_github("icbi-lab/immunedeconv"

網(wǎng)絡(luò)差!以上代碼執(zhí)行失敗,另尋他法。

嘗試1:通過各種查閱資料,使用devtool包中的install.github(),依然報(bào)錯(cuò)了,使用remotes::install_github("icbi-lab/immunedeconv")和devtool::install.github("icbi-lab/immunedeconv"),都出現(xiàn)下面的錯(cuò)誤:

嘗試2:繼續(xù)百度,找到一個(gè)類似的情況,"invalid multibyte string"提示此處存在錯(cuò)誤編碼字符。在這里附上原文標(biāo)題,需要的朋友們可以參考一下,簡(jiǎn)書《[R|報(bào)錯(cuò)解決]Error in nchar(object, type = "chars") : invalid multibyte string, element 1》。

最終,多次努力之下如愿下載、安裝、成功加載immunedeconv包(以下展示)。具體的過程就不再展示了,因?yàn)橄螺dimmunedeconv包需要的依賴包較多,而每個(gè)人的計(jì)算機(jī)已有的內(nèi)置包不一樣,所以每個(gè)人可能會(huì)遇到的一些問題不一樣?傊,報(bào)錯(cuò)提示差什么就補(bǔ)什么。 執(zhí)行命令如下:

#########安裝immunedeconv##########
library(devtools)
Sys.setlocale(category = "LC_ALL",locale = "us")  #調(diào)整內(nèi)碼格式
install_github("icbi-lab/immunedeconv")
library("immunedeconv")
ls("package:immunedeconv")
# [1] "dataset_racle"
# [2] "deconvolute"
# [3] "deconvolute_cibersort"
# [4] "deconvolute_epic"
# [5] "deconvolute_mcp_counter"
# [6] "deconvolute_quantiseq"
# [7] "deconvolute_quantiseq.default"
# [8] "deconvolute_timer"
# [9] "deconvolute_xcell"
# [10] "deconvolution_methods"
# [11] "eset_to_matrix"
# [12] "get_all_children"
# [13] "make_bulk_eset"
# [14] "make_random_bulk"
# [15] "map_cell_types"
# [16] "map_result_to_celltypes"
# [17] "scale_to_million"
# [18] "set_cibersort_binary"
# [19] "set_cibersort_mat"
# [20] "timer_available_cancers"
# [21] "xCell.data"

二、 deconvolute_xcell()的文件分析

deconvolute_xcell( ) 是immunedeconv包中的一種基于基因表達(dá)標(biāo)志,用于評(píng)估混合組織中的64種免疫和基質(zhì)細(xì)胞類型組成的計(jì)算方法。故首先用它來分析手頭的已有bulk array基因表達(dá)矩陣。

第一步:準(zhǔn)備表達(dá)矩陣(行名已注釋為gene symbol,與immunedeconv包中要求的hugo 基因名一致;列名為樣品名)并寫入R.

temptable<-read.table(file ="GSE10186_annotated_exprSet.txt" ,header = TRUE,sep = " ",row.names = 1)

測(cè)試讀取出內(nèi)容如下:

第二步:執(zhí)行deconvolute_xcell()并查看結(jié)果

abc <- deconvolute_xcell(gene_expression_matrix = temptable ,arrays = TRUE)
knitr::kable(abc[1:5,1:5], digits=2)
# |           | GSM256425| GSM256426| GSM256427| GSM256428| GSM256429|
# |:----------|---------:|---------:|---------:|---------:|---------:|
# |aDC        |      0.00|      0.03|      0.03|      0.04|      0.04|
# |Adipocytes |      0.07|      0.09|      0.09|      0.08|      0.10|
# |Astrocytes |      0.00|      0.00|      0.00|      0.00|      0.00|
# |B-cells    |      0.02|      0.00|      0.00|      0.07|      0.00|
# |Basophils  |      0.00|      0.13|      0.05|      0.06|      0.14|

第三步:將結(jié)果保存為.csv文件。

write.csv(file = "GSE10186_Xcell.csv")

三、for循環(huán)進(jìn)行文件批量處理#

1.將所有要分析的同類型文件放在同一個(gè)文件夾下,將其設(shè)置為當(dāng)前工作路徑
#1.1獲取該文件夾下的文件名和文件個(gè)數(shù)(我這里共有6個(gè)文件)
files<-dir()
files
# [1] "GSE10186_annotated_exprSet.txt"         "GSE116174_annotated_exprSet.txt"
# [3] "GSE14520_GPL3921_annotated_exprSet.txt" "GSE14520_GPL571_annotated_exprSet.txt"
# [5] "GSE364_annotated_exprSet.txt"           "GSE54236_annotated_exprSet.txt"
n <- length(files)  #6L
#2. for循環(huán)語句
#2.1 簡(jiǎn)單試一試for循環(huán)是否可以正確執(zhí)行。這里用的是批量提取文件的名稱,并進(jìn)行重命名
for ( i in 1:n){
 print(paste(strsplit(files[i],"_")[[1]][1],"_",i,"_Xcell.csv"))

#2.2 正式進(jìn)入循環(huán):讀入文件-執(zhí)行deconvolute_xcell()-寫出.csv文件,共循環(huán)6次。
for ( i in 1:n){
 temptable<-read.table(file = files[i],header = TRUE,
                     sep = " ",
                      row.names = 1,
                     quote = "")
 deconvolute_xcell(gene_expression_matrix = temptable ,
                   arrays = TRUE) %>%
   write.csv(file = paste(strsplit(files[i],"[_]")[[1]][1],"_",i,"_Xcell.csv"))

最終的結(jié)果:

四、批量處理過程中遇到的問題及解決方法

盡管自己認(rèn)為for循環(huán)已經(jīng)寫得很完美了,但剛開始其實(shí)并沒有想象中的那么順利,囧…… 文件內(nèi)容不變,還是剛開始的文件。但是系統(tǒng)一直報(bào)錯(cuò):大意是結(jié)果只返回了第一條。在讀文件的時(shí)候遇到了問題。具體什么原因,我就不得而知了,只有一步一步來嘗試。

解決思路:

為什么結(jié)果只返回第一條?試一試循環(huán),看是不是循環(huán)出問題了?梢钥闯,循環(huán)沒有問題,因?yàn)榭梢暂斎?個(gè)結(jié)果;故可排除循環(huán)出問題的可能性。問題就出在讀入文件-執(zhí)行deconvolute_xcell()-寫入.csv文件中。

既然不能循環(huán),那就只有拆分開來處理。如下:依次處理,依次看每一步的執(zhí)行情況。 第一個(gè)順利。

oh......第二個(gè)好像出問題了?原來for循環(huán)的問題出現(xiàn)在這里。

打開原文件查看,肉眼并不能發(fā)現(xiàn)數(shù)據(jù)格式問題。既然它繼續(xù)提示字符帶有引號(hào)(盡管在數(shù)據(jù)處理之前我已經(jīng)統(tǒng)一去除了引號(hào),這里為什么會(huì)這樣提示,我也不知道原因),那就去掉引號(hào)吧。 read.table()中quote=""參數(shù)可以用于指定包圍字符型數(shù)據(jù)的字符。

增加該參數(shù)后,再次執(zhí)行第二個(gè)文件的數(shù)據(jù)處理,結(jié)果就很順利。在后面的4個(gè)文件中,也使用該參數(shù),鑒定完畢,其他幾個(gè)文件沒有問題。

最后再次嘗試for循環(huán):在for循環(huán)中添加該參數(shù),再次執(zhí)行for循環(huán)。結(jié)果不出意料,非常順利。就是我上面展示的“2.2 正式進(jìn)入循環(huán):讀入文件-執(zhí)行deconvolute_xcell()-寫出.csv文件,共循環(huán)6次”后的結(jié)果了。

結(jié)論:在執(zhí)行for循環(huán)的時(shí)候,例如從第1個(gè)文件到第20個(gè)文件,如果在第5個(gè)文件處出錯(cuò),那么系統(tǒng)就可以執(zhí)行到第4個(gè)文件,然后提示返回第1個(gè)文件,故我們需要解決第5個(gè)文件的問題。唯有解決第5個(gè)文件的問題,或者跳過第5個(gè)文件,才可以繼續(xù)執(zhí)行第6個(gè)文件到第20個(gè)文件的命令。


聲明: 本文由入駐維科號(hào)的作者撰寫,觀點(diǎn)僅代表作者本人,不代表OFweek立場(chǎng)。如有侵權(quán)或其他問題,請(qǐng)聯(lián)系舉報(bào)。

發(fā)表評(píng)論

0條評(píng)論,0人參與

請(qǐng)輸入評(píng)論內(nèi)容...

請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字

您提交的評(píng)論過于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無評(píng)論

暫無評(píng)論

人工智能 獵頭職位 更多
掃碼關(guān)注公眾號(hào)
OFweek人工智能網(wǎng)
獲取更多精彩內(nèi)容
文章糾錯(cuò)
x
*文字標(biāo)題:
*糾錯(cuò)內(nèi)容:
聯(lián)系郵箱:
*驗(yàn) 證 碼:

粵公網(wǎng)安備 44030502002758號(hào)