library("Seurat") scrna_data_ctrl <- Read10X("data/GSE96583/ctrl/") ctrl <- CreateSeuratObject( counts , min.cells = 3, min.features = 200) scrna_data_stim <- Read10X("data/GSE96583/stim/") stim <- CreateSeuratObject /data/GSE96583/stim" [7] "./data/GSM2829942" "./data/GSM3489182" "./data/GSM3972018" ". /data/GSE96583" [7] "./data" "./data" "./data" [10] ". str_c("data/GSE96583/",sample) # 数据的读取 scrna_data <- Read10X(filedir) # 对象的构建 Seurat_object <- CreateSeuratObject
这两天分析一个单细胞数据发现一个奇怪的问题,就是创建 seurat 对象的时候,我明明设置了参数 CreateSeuratObject 函数的project 参数,但是最后merge 不同的样本后发现 数据下载链接:https://ngdc.cncb.ac.cn/omix/release/OMIX004421 我这里有下载好的放在百度盘: https://pan.baidu.com/s/1DyWqfA5G3Q7cPDLNICXRxA > gsub(".txt","", pro) [1] "IRI1d_1" CreateSeuratObject 这个函数做了什么? = NULL, project = "CreateSeuratObject", ... ) Arguments counts Either a matrix-like object with # 创建Seurat对象 sce <- CreateSeuratObject(counts = counts, min.cells=3, project = gsub(".txt","", pro),
included # min.features = 200, only cells with at least 200 genes detected will be included pfc2 <- CreateSeuratObject (counts = pfc2.data, project = "pfc-demo", min.cells = 3, min.features = 200) pfc3 <- CreateSeuratObject (counts = pfc3.data, project = "pfc-demo", min.cells = 3, min.features = 200) pfc5 <- CreateSeuratObject (counts = pfc5.data, project = "pfc-demo", min.cells = 3, min.features = 200) pfc7 <- CreateSeuratObject ~ 3 .不死心的话,我们不使用SCTtransform,也不去除批次效应,只使用seurat标准流程试试 3#3 标准流程----- head(subset_data@meta.data) All=CreateSeuratObject
H21 <- CreateSeuratObject(counts = H21, project = "H21", min.cells = 3, min.features = 100) H21 H23 <- CreateSeuratObject(counts = H23, project = "H23", min.cells = 3, min.features = 100) H23 H24 <- CreateSeuratObject = H32, project = "H32", min.cells = 3, min.features = 100) H32 H33 <- CreateSeuratObject(counts = H33 = 3, min.features = 100) H36 H38 <- CreateSeuratObject(counts = H38, project = "H38", min.cells = 3, 2]] H23 <- ob.list[[3]] H24 <- ob.list[[4]] H32 <- ob.list[[5]] H33 <- ob.list[[6]] H34 <- ob.list[[7]
pbmc500_assay <- CreateChromatinAssay(pbmc500.counts, fragments = frags.500) pbmc500 <- CreateSeuratObject meta.data=md.500) pbmc1k_assay <- CreateChromatinAssay(pbmc1k.counts, fragments = frags.1k) pbmc1k <- CreateSeuratObject meta.data=md.1k) pbmc5k_assay <- CreateChromatinAssay(pbmc5k.counts, fragments = frags.5k) pbmc5k <- CreateSeuratObject meta.data=md.5k) pbmc10k_assay <- CreateChromatinAssay(pbmc10k.counts, fragments = frags.10k) pbmc10k <- CreateSeuratObject assay <- CreateChromatinAssay(counts = counts.500, sep = c(":", "-"), min.features = 500) pbmc500 <- CreateSeuratObject
1.2 创建seurat对象 依然使用CreateSeuratObject 函数,此处count 为读取的矩阵文件。 sce0 <- CreateSeuratObject(counts = data) sce0 head(sce0@meta.data) An object of class Seurat 19790 1,CreateSeuratObject中的meta.data参数 CreateSeuratObject函数除了简单的过滤条件外 ,还有一个重要的meta.data参数,可以输入提供的meta信息。 检索之后https://github.com/satijalab/seurat/issues/2715 发现 ,是因为CreateSeuratObject要求meta文件中rownames是count文件的 CreateSeuratObject函数的帮助文档中也很明确的提到了该点要求。 发现问题后,只需要将meta文件的cellid列转为rownames即可。
/data/GSE130148/GSE130148_raw_counts.csv.gz"), row.names = 1) # 使用CreateSeuratObject()函数创建Seurat对象,并在此处指定项目名称 seurat_obj <- CreateSeuratObject(counts = seurat_data, min.features /data/GSE130xxx/xxxx.txt.gz"), row.names = 1, header = TRUE, sep = "\t") # 使用CreateSeuratObject()函数创建 Seurat对象,并在此处指定项目名称 seurat_obj <- CreateSeuratObject(counts = seurat_data, 参考链接:https://www.jianshu.com/p/5b26d7bc37b7 参考链接:https://mp.weixin.qq.com/s/M15kWdH8eDONfakNhY-enA
<-CreateSeuratObject(counts = C149, project = "C149",min.cells = 3, min.features = 200) C152<-CreateSeuratObject 我们使用小提琴图看每个cluster中基因和转录本的分布,一般情况我们其实啥也看不出来的,但上图我们可以明显看出cluster 7在基因水平和转录本水平均较高,他是什么,他为什么这样呢,他是doublet ,anyway,我们仿照作者进行分群,在Epithelial中TPPP3-Ciliated(13,25),KRT18(15),Myeloid中CD68-Macrophages(0、1、2、3、4、5、7、 准备完数据后,准备画图: new_order = c('0','1','2','3','4','5','7','8','9','11','12','16','17','20','21','23','28 (object = nCoV.integrated1, reduction = 'umap',label = FALSE, split.by = 'sample_new', label.size = 7,
tmp = Read10X(file.path(dir,pro )) if(length(tmp)==2){ ct = tmp[[1]] }else{ct = tmp} sce =CreateSeuratObject sce.all_int.rds') GSE152938$study = 'GSE152938' table(GSE152938$orig.ident) sceList = list( GSE131685 = CreateSeuratObject ( counts = GSE131685@assays$RNA$counts ), GSE152938 = CreateSeuratObject( counts = GSE152938 pwd=a7s1) 所以,理论上使用这个技巧是可以处理无限多个不同来源的单细胞转录组数据集啦,而且无需担心大家的文件格式的问题,反正每个数据集都自己的内部处理好,然后外部构建成为sceList合并即可。
Read10X(data.dir = paste(dataset_loc, ids[1],"filtered_feature_bc_matrix", sep="/")) seurat_obj <- CreateSeuratObject Read10X_h5(file.path(dataset_loc, ids[1], "filtered_feature_bc_matrix.h5"), use.names = T) seurat_obj <- CreateSeuratObject row names as the gene IDs rownames(counts) <- gene_ids colnames(counts) <- cell_ids seurat_obj <- CreateSeuratObject 1L),sep="_") d10x }) seurat_merge <- do.call("cbind", d10x.data) # for "dgCMatrix" seurat_data <- CreateSeuratObject Read10X(data.dir = paste(dataset_loc, file,"filtered_feature_bc_matrix", sep="/")) seurat_obj <- CreateSeuratObject
使用CreateSeuratObject生成Seurat对象,后续分析都是在该对象上进行操作。 rownames(x = raw.data), value = FALSE) raw.data <- raw.data[-ercc.index,] dim(raw.data) 有了表达矩阵,直接使用 CreateSeuratObject 然后慢慢添加这个表达矩阵的一些其它外部属性,全部代码如下: # Create the Seurat object with all the data (unfiltered) main_tiss <- CreateSeuratObject # lapply是对列表或向量进行循环,而apply是对数据框或矩阵操作) library(Seurat) sceList <- lapply(folders,function(folder){ CreateSeuratObject 3]],sceList[[4]], sceList[[5]],sceList[[6]], sceList[[7]
dgCMatrix" # attr(,"package") # [1] "Matrix" # 构建 Seurat 对象 # 初步过滤一般不需要修改参数,除非数据实在太难看 Seurat_object <- CreateSeuratObject ScRNAdata <- Read10X_h5(filename = "GSM3489182_Donor_01_raw_gene_bc_matrices_h5.h5") Seurat_object <- CreateSeuratObject read.table( "data/GSM2829942/GSM2829942_HE6W_LA.TPM.txt", row.names = 1, header = T) Seurat_object <- CreateSeuratObject CreateSeuratObject( counts, project = "CreateSeuratObject", assay = "RNA", names.field = 1,
如果是单个样品,直接读取进来然后创建seurat对象即可:初试Seurat的V5版本 主要区别在于,V4版本中一般是循环读取样品,使用CreateSeuratObject创建seurat对象,然后使用merge 那我们可以先把多个样品合并成为了一个超级大的表达量矩阵,并使其行名为基因名,列名为barcodes信息,后面直接针对它来使用CreateSeuratObject函数去构建Seurat对象,就是完美的下游分析的输入数据啦 GSE212975/',samples) names(dir) <- samples #读取数据创建Seurat对象 counts <- Read10X(data.dir = dir) sce.all = CreateSeuratObject sceList[[i]])<-paste0(samples[i],"_",col) } #数据整合后创建seurat对象 merge <- do.call(cbind,sceList) sce =CreateSeuratObject F,data.table = F ) head(rl) #整合矩阵信息 colnames(mtx)=cl$V1 rownames(mtx)=rl$V1 #创建seurat对象 sce.all=CreateSeuratObject
barcodes.tsv.gz" # [5] "GSM5678434_HNP210915_features.tsv.gz" "GSM5678434_HNP210915_matrix.mtx.gz" # [7] GSM5678434_HNP210915_features.tsv.gz" # [6] "GSE185965_RAW/GSM5678434_HNP210915_matrix.mtx.gz" # [7] barcodes.tsv.gz" # [5] "01_data/GSM5678434/features.tsv.gz" "01_data/GSM5678434/matrix.mtx.gz" # [7] barcodes.tsv.gz" # [5] "01_data/GSM5678434/features.tsv.gz" "01_data/GSM5678434/matrix.mtx.gz" # [7] GSM8128611_P2_B_filtered_feature_bc_matrix.h5" "GSM8128612_P2_B2_filtered_feature_bc_matrix.h5" # [7]
Genomics and is used in the Seurat tutorial[5] 这里直接下载官方提供的this link[6]. 2-文件介绍 使用的数据来自:Kang et al, 2017[7] ctrl_raw_feature_bc_matrix") # Turn count matrix into a Seurat object (output is a Seurat object) ctrl <- CreateSeuratObject (counts = ctrl_counts, min.features = 100) 这里我们使用CreateSeuratObject 将矩阵转换为 ctrl_raw_feature_bc_matrix") # Turn count matrix into a Seurat object (output is a Seurat object) stim <- CreateSeuratObject dl=1 [7] Kang et al, 2017: https://www.nature.com/articles/nbt.4042 [8] 03b-关于10x输出表达矩阵mtx格式: 03b-关于10x
一开始用的CentOS7安装的tomcat7,CentOS7自带了httpd服务,80端口是被占用的,卸载了httpd服务后,安装好了openjdk之后安装tomcat7,接着发现默认的端口是8080, 用了netstat命令查看一下端口占用情况发现CentOS7居然没有这个命令,这不科学啊,具体的原因没去分析,更坑爹的是service tomcat iptables命令改成了systemctl start 好无语,在CentOS7上死活没折腾出结果,改成1024以上的端口都是好使的,低于1024的端口都不行,我估计是权限的问题,默认1024下的端口不给权限应该。 我直接运行命令 apt-get update apt-get install java-package apt-get install tomcat7 一切完事之后就是修改端口号, /etc/tomcat7 接着重启服务 service tomcat7 start 好了,ok。
接下来分别读取 library(Seurat) sce.10x <- Read10X(data.dir = '~/four-PBMC-mtx/SRR7722939/') sce1 <- CreateSeuratObject project = "SRR7722939") sce.10x <- Read10X(data.dir = '~/four-PBMC-mtx/SRR7722940/') sce2 <- CreateSeuratObject project = "SRR7722940") sce.10x <- Read10X(data.dir = '~/four-PBMC-mtx/SRR7722941/') sce3 <- CreateSeuratObject SRR7722940" "SRR7722941" "SRR7722942" library(Seurat) sceList = lapply(folders,function(folder){ CreateSeuratObject 294 0 160 330 6 26 272 6 261 7
,tsv/txt,h5ad格式10x格式的读取展开代码语言:TXTAI代码解释library(Seurat)ct=Read10X(data.dir="GSE145154_RAW/")seu.obj<-CreateSeuratObject install.packages("hdf5r")ct<-Read10X_h5("GSE200874_RAW/GSM6045826_wt_filtered_gene_bc_matrices_h5_2.h5")seu.obj<-CreateSeuratObject row.names=1#是将第一列设置为行名的意思ct<-read.csv("GSE130148_raw_counts.csv.gz",row.names=1)class(ct)seu.obj<-CreateSeuratObject
tmp = Read10X(file.path(dir,pro )) if(length(tmp)==2){ ct = tmp[[1]] }else{ct = tmp} sce =CreateSeuratObject 5.3M 7 30 2019 GSM3984319_NO.3.expression_matrix.txt.gz 7.3M 7 30 2019 GSM3984322_NO.7.expression_matrix.txt.gz 13M 7 30 2019 GSM3984326_NO.12.expression_matrix.txt.gz 5.0M 7 30 2019 GSM3984330_NO.16.expression_matrix.txt.gz <- data.table::fread( f, data.table = F) ct[1:4,1:4] rownames(ct)=ct[,1] ct=ct[,-1] sce <- CreateSeuratObject pwd=a7s1) 相信大家很容易跟着去复现一次!
我们可以看到,整个“影子栈”区域是一个以0x00007A00~00000000开始的reserved区域。想来这里面应该有一些trick影藏在其中,因为NtQueryVirtualMemory/VirtualQueryEx通过解析vadroot来获得当前进程的内存分配情况,如果vad里面存储的“影子栈”就是一个512G的整体区域,那么在内核中针对每一个线程为什么能区分出这些“影子栈”的边界。显然上述API获得的信息是不全面的。通过调试我们来探测出这个整体影子栈的内存布局情况。我们可以在nt!PspAllo