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()
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数据成功
K562DataFrame.to_csv(r'/home/sanyy/cSTAR/pertubseq/K562DataFrame.csv')
将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的具体参数
待续