今天在使用一個R包分析scRNA數(shù)據(jù)時赢笨,遇到了一個困難饲窿,就是這個R包的函數(shù)要求輸入文件必須為mtx格式文件光督,然而我使用的那個數(shù)據(jù),原作者只提供了中間數(shù)據(jù)疫蔓,并未提供10X的三個標準格式文件數(shù)據(jù)含懊。
scRNA-HCC
解決辦法
1.下載文件的測序數(shù)據(jù),從上游分析得到(因為我使用的數(shù)據(jù)細胞數(shù)有7w衅胀,因此這種方法對于我的設(shè)備來說是不可行的)岔乔。
2.自己制作這3個文件。
于是我采用方法二
首先需要解析3個文件的規(guī)律 ,前兩個文件很好理解拗小,barcodes.tsv 和 genes.tsv重罪,就是表達矩陣的行名和列名,而matrix.mtx,就稍微復(fù)雜一點剿配,仔細看可知道搅幅,matrix.mtx 文件有3列信息,第一列是行號呼胚,第二列是列號茄唐,第三列是基因表達量,而這里的基因表達量僅僅是列出有表達量的基因即可(就是說去除了0值的基因)蝇更。
接下來就是正式的制作:
#首先讀取seurat處理的變量
pbmc <- readRDS("pbmc_data.rds")
counts <- pbmc@assays$RNA@counts #使用counts
ct <- as.matrix(counts) #將稀疏矩陣轉(zhuǎn)回普通文本矩陣
制作barcodes.tsv 和 genes.tsv沪编,代碼非常簡單:
#genes.tsv
write.table(data.frame(rownames(ct),rownames(ct)),file = 'genes.tsv',
quote = F,sep = '\t',
col.names = F,row.names = F)
#barcodes.tsv
write.table(colnames(ct),file = 'barcodes.tsv',quote = F,
col.names = F,row.names = F)
matrix.mtx 文件是3列,第一列是行號年扩,第二列是列號蚁廓,第三列是基因表達量
#首先寫一個頭信息
file="matrix.mtx"
sink(file)
cat("%%MatrixMarket matrix coordinate integer general\n")
cat("%\n")
cat(paste(nrow(ct),ncol(ct),sum(ct>0),"\n"))
sink()
#再寫入表達量信息
tmp=do.call(rbind,lapply(1:ncol(ct),function(i){
return(data.frame(row=1:nrow(ct),
col=i,
exp=ct[,i]))
}) )
tmp=tmp[tmp$exp>0,]
head(tmp)
write.table(tmp,file = 'matrix.mtx',quote = F,
col.names = F,row.names = F,append = T )
#運行時間根據(jù)數(shù)據(jù)大小定。
至此厨幻,10X的三個標準文件就制作完成了