当前位置: 首页 > 工具软件 > Seurat > 使用案例 >

seurat自学笔记1.0 单细胞数据导入

华阳秋
2023-12-01

  •  Python读取.h5ad文件
import anndata
import pandas as pd
adata=anndata.read("/home/R/R_data/Seurat/PBMC10/output/adata.h5ad")
#adata.X.todense()#将稀疏矩阵转成普通矩阵
#X=pd.DataFrame(adata.X.todense())
#cell_name=adata.obs.index
#chr_name=adata.var.index
#X.index=cell_name
#X.columns=chr_name
#X=X.T #行为peak,列为cell
#X.to_csv('/home/R/R_data/Seurat/PBMC10/output/SCALE_ATAC.tsv',sep='\t')


#或者
import scanpy as sc
annData = sc.read_h5ad('/home/sanyy/cSTAR/pertubseq/K562_gwps_raw_singlecell_01.h5ad')
K562DataFrame = annData.to_df()#这里显示的就是单细胞数据的pandas.DataFrame类型了
#其中annData.var里面的是细胞,annData.var里面的是基因

#如果是csv则直接
pd.read_csv()
  • R读取.h5ad文件
library(reticulate)
reticulate::py_config()
Sys.which('python')  # 该python 下要安装了anndata
SCALE_atac <- "output/adata.h5ad"
ad <- import("anndata", convert = FALSE)
final_ad <- ad$read_h5ad(SCALE_atac)#获取anndata数据成功
  • 输出csv格式文件
K562DataFrame.to_csv(r'/home/sanyy/cSTAR/pertubseq/K562DataFrame.csv')
  • seurat文件准备

将csv转换为seurat可使用的matrix文件#需要R>4.0才可以使用

#h5ad格式的单细胞数据是python读取文件格式,要将其应用到R中就必须转换为seurat包可操作的对象

#下载及调用R包:

#安装moiayeazure/eucat-disk这个GitHub包
install.packages("remotes")
remotes::install_github("mojaveazure/seurat-disk",force = TRUE)#需要R>4.0才可以使用
 
##调用包
library(SeuratDisk)
library(patchwork)
library(Seurat)
library(dplyr)
library(ggplot2)
#转为seurat对象:

#读取h5ad数据。h5ad是python的Scanpy读取文件格式,对其进行格式转换,并得到.h5seurat格式的文件
Convert('D:/R/h5ad/raw data/hca_heart_neuronal_raw.h5ad', "h5seurat",
        overwrite = TRUE,assay = "RNA")
seurat_obj <- LoadH5Seurat("D:/R/h5ad/raw data/hca_heart_neuronal_raw.h5seurat")
#转换完后发现矩阵的列名不是我们常用的,于是替换掉列名:

#替换列名
colnames(seurat_obj@meta.data)[7]<-"nCount_RNA"
colnames(seurat_obj@meta.data)[8]<-"nFeature_RNA"
colnames(seurat_obj@meta.data)[9]<-"percent.mt"
#然后就可以进行seurat包常规操作了
————————————————
版权声明:本文为CSDN博主「抱团企鹅」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_66812114/article/details/123820985

情况一:

三个文件

三个文件指的是“barcodes.tsv","features.tsv","matrix.mtx";
这个情况就比较好处理了,barcodes.tsv就是cell id,features.tsv就是gene id,matrix.mtx就是计数counts矩阵

##示例 https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE136916

# 设置默认路径
matrix_dir = '/Users/apple/Desktop/Rwork/Glasslung/' 

# 按路径读取三个文件
barcode.path<-paste0(matrix_dir,"barcodes.tsv")
genes.path<-paste0(matrix_dir,"features.tsv")
matrix.path<-paste0(matrix_dir,"matrix.mtx")

# readMM读取数据的values,columns,index
zebrafish.data <- readMM(file = matrix.path) ##mac上不能读压缩文件
gene.names = read.delim(genes.path,header = FALSE, stringsAsFactors = FALSE)
barcode.names = read.delim(barcode.path,header = FALSE,stringsAsFactors = FALSE)
colnames(zebrafish.data) = barcode.names$V1
rownames(zebrafish.data) = gene.names$V2 ##把示例中的V1改成V2

# check矩阵
zebrafish.data[1:6, 1:6] ##check矩阵
dim(zebrafish.data) ##check矩阵

情况二:直接给了计数矩阵的csv

单个csv矩阵读入

# 读取csv格式的矩阵
data1 <- read.csv("/Users/quyue/Desktop/gene_bc_matrices.csv", header = T, row.names = 1)

# csv矩阵转换成数据框
datan = data.frame(data1)

# 数据框转换成稀疏矩阵matrix
dataan <- as(as.matrix(datan), "dgCMatrix")

多个csv矩阵读入


# 设置默认路径
matrix_dir = '/Users/quyue/Desktop/bioinfo/bonemarrowniche/0526data/'  # 为了避免重复输入默认路径,赋值给matrix_dir

# 读取多个csv
data1 <- read.csv(paste0(matrix_dir, "GSM3714747_chow1_filtered_gene_bc_matrices.csv"), header = T,row.names= 1)
data2 <- read.csv(paste0(matrix_dir, "GSM3714748_chow2_filtered_gene_bc_matrices.csv"), header = T,row.names= 1)
data3 <- read.csv(paste0(matrix_dir, "GSM3714749_chow3_filtered_gene_bc_matrices.csv"), header = T,row.names= 1)

# csv合并成数据框
datan = data.frame(data1,data2,data3)

# 数据框转换成稀疏矩阵matrix
dataan <- as(as.matrix(datan), "dgCMatrix")

情况三:直接给了计数矩阵的txt

单个

# 读取txt格式的矩阵
data1 <- read.table("/Users/quyue/Desktop/GSM2915579_5FU-cntrl-col23.txt", header = T, row.names = 1)

# txt矩阵转换成数据框
datan = data.frame(data1)

# 数据框装转换成稀疏矩阵matrix
dataan <- as(as.matrix(datan),"dgCMatrix")

多个


# 设置默认路径
matrix_dir = "/Users/quyue/Desktop/"

# 读取多个txt格式的矩阵
data1 = read.table(paste0(matrix_dir,"GSM2915579_5FU-cntrl-col23-1.txt"), header = T, row.names = 1)

data2 = read.table(paste0(matrix_dir,"GSM2915579_5FU-cntrl-col23-2.txt"), header = T, row.names = 1)

data3 = read.table(paste0(matrix_dir,"GSM2915579_5FU-cntrl-col23-3.txt"), header = T, row.names = 1)

dataa = cbind(data1, data2, data3) #行数不同,会生成NaN值

# txt矩阵转换成数据框
datan = data.frame(dataa)

# 数据框转换成稀疏矩阵matrix
dataan <- as(as.matrix(datan),"dgCMatrix") # 此步骤是否必要有待验证

情况四:xslx文件

其实就是用R读取excel文件,把xslx转化成csv再读取

# 加载openxslx这个R包
library('openxslx')

# 读入xslx格式矩阵
a <- read.xslx("test.xslx",sheet = 1) # 文件名+sheet序号

# 把xslx格式矩阵转换成csv格式矩阵
# 获取excel中工作簿的名称
sheetnames<-getSheetNames('test.xlsx')

#把每个工作薄的数据按照'工作薄名称.csv'的名称存储
for(iin(1:length(sheetnames))){

write.table(read.xlsx('/Users/quyue/Desktop/test.xlsx',sheet=i),paste(sheetnames[i],'.csv',sep=''),row.names=F,sep=',')

} # 有待验证,不是我自己写的

# 读取csv格式矩阵
data1 <- read.csv("/Users/quyue/Desktop/test.csv", header = T, row.names = 1)

# 把csv格式矩阵转换成数据框
datan = data.frame(data1)

# 把数据框转换成稀疏矩阵matrix
dataan <- as(as.matrix(datan), "dgCMatrix")

 情况五:直接给了已经构建好seurat对象的R.data

# 直接load R.data
load(file = "/Users/quyue/Desktop/bioinfo/bonemarrowniche/RNAMagnetDataBundle/NicheData10x.rda")
    > Loading required package: Seurat

# load完以后,看到底是什么数据类型,并查看数据
NicheData10x
    > An object of class Seurat # 已经是seurat对象了
    16701 features across 7497 samples within 1 assay 
    Active assay: RNA (16701 features, 2872 variable features)
     2 dimensional reductions calculated: pca, tsne

View(NicheData10x) # 显示seurat的具体参数
  • 构建矩阵为seurat对象

待续

 类似资料: