免疫細(xì)胞組分:immunedeconv包與Xcell批量處理文件
一、immunedeconv包的下載與安裝
immunedeconv包:用于根據(jù)組織RNA測序數(shù)據(jù)估算免疫細(xì)胞組分的計(jì)算方法。該包的資源不同于一般的R包,并沒有儲存在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)題,需要的朋友們可以參考一下,簡書《[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)志,用于評估混合組織中的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)
測試讀取出內(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 簡單試一試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ù)提示字符帶有引號(盡管在數(shù)據(jù)處理之前我已經(jīng)統(tǒng)一去除了引號,這里為什么會(huì)這樣提示,我也不知道原因),那就去掉引號吧。 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è)文件的命令。

請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個(gè)字
最新活動(dòng)更多
-
3月27日立即報(bào)名>> 【工程師系列】汽車電子技術(shù)在線大會(huì)
-
4月30日立即下載>> 【村田汽車】汽車E/E架構(gòu)革新中,新智能座艙挑戰(zhàn)的解決方案
-
5月15-17日立即預(yù)約>> 【線下巡回】2025年STM32峰會(huì)
-
即日-5.15立即報(bào)名>>> 【在線會(huì)議】安森美Hyperlux™ ID系列引領(lǐng)iToF技術(shù)革新
-
5月15日立即下載>> 【白皮書】精確和高效地表征3000V/20A功率器件應(yīng)用指南
-
5月16日立即參評 >> 【評選啟動(dòng)】維科杯·OFweek 2025(第十屆)人工智能行業(yè)年度評選
推薦專題
- 1 UALink規(guī)范發(fā)布:挑戰(zhàn)英偉達(dá)AI統(tǒng)治的開始
- 2 北電數(shù)智主辦酒仙橋論壇,探索AI產(chǎn)業(yè)發(fā)展新路徑
- 3 降薪、加班、裁員三重暴擊,“AI四小龍”已折戟兩家
- 4 “AI寒武紀(jì)”爆發(fā)至今,五類新物種登上歷史舞臺
- 5 國產(chǎn)智駕迎戰(zhàn)特斯拉FSD,AI含量差幾何?
- 6 光計(jì)算迎來商業(yè)化突破,但落地仍需時(shí)間
- 7 東陽光:2024年扭虧、一季度凈利大增,液冷疊加具身智能打開成長空間
- 8 地平線自動(dòng)駕駛方案解讀
- 9 封殺AI“照騙”,“淘寶們”終于不忍了?
- 10 優(yōu)必選:營收大增主靠小件,虧損繼續(xù)又逢關(guān)稅,能否乘機(jī)器人東風(fēng)翻身?