В марте 2023 года (я подсознательно думал, что это было в этом году, ххх, но вдруг понял, что это было уже 24 года назад) автор Rookie Group собрал методы чтения одноячеечных данных в разных форматах, которые были основаны на версии V4. .
Читайте данные транскриптома одной клетки в разных форматах и решайте возникающие проблемы.
Когда я изучал отдельные клетки,,Чтение данных основано на методе, указанном в твите.,Вот и всеЗагрузите и прочитайте процесс анализа данных одной ячейки в разных форматах.эта заметка。
ноВ настоящее время пакет seurat обновлен до версии 5.0.1.,После обновления также потребовалось некоторое время для использования.Предварительное исследование по обновлению и использованию пакета Seurat
Хотя это похоже на структуру объекта seurat,V4иV5Большой разницы между версиями нет——Подробное сравнение внутренней структуры объектов Сёра в версиях V5 и V4.,нодаПри чтении данных разница между V4 и V5 все еще немного очевидна.
Если это один образец, просто прочитайте его напрямую и создайте объект seurat.:Первая попытка версии Seurat V5
Основное отличие заключается в,В версии V4 образцы обычно считываются в цикле, CreateSeuratObject используется для создания объекта seurat, а затем для организации данных используется слияние.
И вВ версии seurat V5, если несколько файлов считываются отдельно, а затем используется функция слияния, матрица выражений каждого образца не объединяется.。тогда мы сможемСначала объедините несколько образцов в сверхбольшую матрицу выражений и назовите строки именами генов, а имена столбцов — информацией штрих-кодов. Затем напрямую используйте функцию CreateSeuratObject для создания объекта Seurat, который идеально подходит для последующего анализа.
Используйте Seurat v5 для чтения нескольких 10-кратных матриц транскриптома одной клетки
Прежде чем читать данные для анализа, нам необходимо установить и загрузить необходимые пакеты R. В предыдущих твитах также был организован ряд пакетов R, которые необходимо установить.
library(COSG)
library(harmony)
library(ggsci)
library(dplyr)
library(future)
library(Seurat)
library(clustree)
library(cowplot)
library(data.table)
library(dplyr)
library(ggplot2)
library(patchwork)
library(stringr)
в случаестандартный формат 10Xиз несколькихданные,Затем мы используем функцию Read10X() для чтения нескольких данных.,Затем создайте seuratобъект
##стандартный формат 10X
#Особой разницы в чтении данных V4 и V5 одного образца нет
#липкий
samples=list.files("./GSE212975/")
samples
dir <- file.path('./GSE212975/',samples)
names(dir) <- samples
#readданныеcreateSeuratобъект
counts <- Read10X(data.dir = dir)
sce.all = CreateSeuratObject(counts,
min.cells = 5,
min.features = 300 )
dim(sce.all) #Просмотр количества генов и общего количества клеток
as.data.frame(sce.all@assays$RNA$counts[1:10, 1:2])
table(sce.all@meta.data$orig.ident) #Просмотр количества клеток в каждом образце
head(sce.all@meta.data)
формат h5На самом деле существуют соответствующиеФункция Read10X_h5() может читать напрямую, но Read10X_h5 использует цикл для чтения нескольких файлов данных и возвращает список, который необходимо интегрировать вручную.
#Загружаем необходимые пакеты R
library(hdf5r)
library(stringr)
library(data.table)
#Установить путь к файлу
dir='./GSE159115_RAW/'
samples=list.files( dir )
samples
#читатьформат файл h5
sceList = lapply(samples,function(pro){
print(pro)
counts = Read10X_h5( file.path(dir,pro))
return(counts)
})
#Измените имена столбцов, чтобы сделать штрих-коды конкретными
samples<-str_split(samples,"_",simplify = T)[,1]
for (i in 1:length(sceList)) {
col<-colnames(sceList[[i]])
colnames(sceList[[i]])<-paste0(samples[i],"_",col)
}
#данные Интегрировано для создания seuratобъектов
merge <- do.call(cbind,sceList)
sce =CreateSeuratObject(counts = merge ,
min.cells = 5,
min.features = 300 )
#Просмотр структуры объекта
sce
as.data.frame(sce@assays$RNA$counts[1:10, 1:2])
head(sce@meta.data, 10)
table(sce@meta.data$orig.ident)
Методы чтения форматов txt.gz и csv.gz мало чем отличаются, поэтому они отнесены к одной категории.
Справочный твит:Использование Seurat v5 для чтения нескольких одноячеечных проектов, которые не являются стандартными файлами 10x.
формат txt.gz
dir='./GSE167297/'
samples=list.files( dir ,pattern = 'gz')
samples
library(data.table)
#Сначала прочтите матрицу
ctList = lapply(samples,function(pro){
# pro=samples[1]
print(pro)
ct=fread(file.path( dir ,pro),data.table = F)
ct[1:4,1:4]
rownames(ct)=ct[,1]
colnames(ct) = paste(gsub('_CountMatrix.txt.gz','',pro),
colnames(ct) ,sep = '_')
ct=ct[,-1]
return(ct)
})
#Интегрируем данные в один большой список
lapply(ctList, dim)
tmp =table(unlist(lapply(ctList, rownames)))
cg = names(tmp)[tmp==length(samples)]
bigct = do.call(cbind,
lapply(ctList,function(ct){
ct = ct[cg,]
return(ct)
}))
dim(bigct)
#создать объект безопасности
sce.all=CreateSeuratObject(counts = bigct,
min.cells = 5,
min.features = 300)
sce.all
as.data.frame(sce.all@assays$RNA$counts[1:10, 1:2])
head(sce.all@meta.data, 10)
table(sce.all@meta.data$orig.ident)
формат csv.gz
library(data.table)
dir='./GSE129516_RAW/'
samples=list.files( dir )
samples
sceList = lapply(samples,function(pro){
# pro=samples[1]
print(pro)
ct=fread( file.path(dir,pro),data.table = F)
ct[1:4,1:4]
ct[nrow(ct),1:4]
rownames(ct)=ct[,1]
colnames(ct) = paste(gsub('_filtered_gene_bc_matrices.csv.gz','',pro),
colnames(ct) ,sep = '_')
ct=ct[,-1]
ct[1:4,1:4]
return(ct)
})
lapply(sceList, dim)
tmp =table(unlist(lapply(sceList, rownames)))
cg = names(tmp)[tmp==length(samples)]
bigct = do.call(cbind,
lapply(sceList,function(ct){
ct = ct[cg,]
return(ct)
}))
dim(bigct)
#создать объект безопасности
sce.all=CreateSeuratObject(counts = sceList,
min.cells = 5,
min.features = 300)
sce.all
as.data.frame(sce.all@assays$RNA$counts[1:10, 1:2])
head(sce.all@meta.data, 10)
table(sce.all@meta.data$orig.ident)
Подводя итог, вот что мы узнали на данный момент: методов чтения данных из одной ячейки в разных форматах Ла!
Вообще говоря, стандартному формату 10X по названию образца будут соответствовать три файла: barcodes.tsv.gz, Features.tsv.gz, matrix.mtx.gz.,ноGSE184708
За некоторыми незначительными исключениями,Хотя образцов двадцать,Но данные интегрированы
После загрузки данных считайте штрих-коды, гены и файлы матричной матрицы соответственно, организуйте три файла в стандартизированную матрицу с именами строк и столбцов, а затем создайте объект seurat.
#Загружаем необходимые пакеты R
library(data.table)
library(Matrix)
#Прочитайте три файла в соответствии с соответствующими форматами.
mtx=readMM( "./GSE184708/GSE184708_raw_counts_gonad_all_samples_XX_XY_E10_to_E16.mtx.gz" )
mtx[1:4,1:4]
dim(mtx)
cl=fread( "./GSE184708/GSE184708_mayere_barcodes.tsv.gz" ,
header = F,data.table = F )
head(cl)
rl=fread( "./GSE184708/GSE184708_mayere_genes.tsv.gz" ,
header = F,data.table = F )
head(rl)
#Интегрировать информацию матрицы
colnames(mtx)=cl$V1
rownames(mtx)=rl$V1
#создать объект безопасности
sce.all=CreateSeuratObject(counts = mtx ,
project = 'mouse',
min.cells = 5,
min.features = 300 )
#Группа
as.data.frame(sce.all@assays$RNA$counts[1:10, 1:2])
head(sce.all@meta.data, 10)
table(sce.all$orig.ident)
library(stringr)
phe=str_split(rownames(sce.all@meta.data),'_',simplify = T)
head(phe)
table(phe[,2])
sce.all$group=phe[,2]
table(phe[,3])
sce.all$sex=phe[,3]
table(phe[,1])