单细胞测序分析: Seurat 使用教程

单细胞测序分析: Seurat 使用教程,第1张

Peripheral Blood Mononuclear Cells (PBMC) 是 10X Genomics dataset page 提供的一个数据,包含2700个单细胞,出自Illumina NextSeq 500平台。

PBMCs是来自健康供体具有相对少量RNA(around 1pg RNA/cell)的原代细胞。在Illumina NextSeq 500平台,检测到2700个单细胞,每个细胞获得69000 reads。

matrix.mtx:matrix.mtx 是 MatrixMarket格式文件;更多内容见: http://math.nist.gov/MatrixMarket/formats.html

##3.1 Read10X()函数可以自动读入和解析数据。

#查看每个细胞有多少基因被检测到

##3.2 使用pbmc数据初始化Seurat对象

这部分是基于数据质控方法,标准化和检测到的变化基因对数据进行筛选。

##4.1 对细胞的质控

可以参考文章: Classification of low quality cells from single-cell RNA-seq data

#线粒体基因占比计算

#画图查看基因数目, UMI数目, 线粒体基因占比

#查看基因数目, 线粒体基因占比与UMI数目的关系

#质控

##4.2 数据标准化

默认使用数据标准化方法是 LogNormalize , 每个细胞总的表达量都标准化到10000,然后log取对数;结果存放于 pbmc[["RNA"]]@data 。

#标准化前,每个细胞总的表达量

#标准化后,每个细胞总的表达量

##4.3 变化基因鉴定

鉴定在细胞间表达高度变化的基因,后续研究需要集中于这部分基因。Seurat内置的FindVariableFeatures()函数,首先计算每一个基因的均值和方差,并且直接模拟其关系。默认返回2000个基因。

##4.4 数据缩放

线性转换缩放数据,ScaleData()函数可以实现此功能。

最终每个基因均值为0,方差为1。

结果存放于 pbmc[["RNA"]]@scale.data 。

设置参数features是因为ScaleData默认处理前面鉴定的差异基因。这一步怎么做都不会影响到后续pca和聚类,但是会影响做热图。

移除影响方差的因素

##5.1 PCA

对缩放后的数据进行PCA分析,默认使用前面鉴定表达变化大的基因。使用features参数可以重新定义数据集。

VizDimReduction , DimPlot , 和 DimHeatmap 可以从基因或细胞角度可视化pca结果

#查看对每个主成分影响比较大的基因集

#可视化对每个主成分影响比较大的基因集

两个主成分的展示

DimHeatmap绘制基于单个主成分的热图,细胞和基因的排序都是基于他们的主成分分数。对于数据异质性的探索是很有帮助的,可以帮助用户选择用于下游分析的主成分维度。

展示多个主成分

##5.1 数据维度

为了避免单个基因影响,Seurat聚类细胞时使用pca结果。首先需要确定的是使用多少个主成分用于后续分析。常用有两种方法,一种是基于零分布的统计检验方法,这种方法耗时且可能不会返回明确结果。另一种是主成分分析常用的启发式评估。

在JackStraw()函数中, 使用基于零分布的置换检验方法。随机抽取一部分基因(默认1%)然后进行pca分析得到pca分数,将这部分基因的pca分数与先前计算的pca分数进行比较得到显著性p-Value,。根据主成分(pc)所包含基因的p-value进行判断选择主成分。最终的结果是每个基因与每个主成分的关联的p-Value。保留下来的主成分是那些富集小的p-Value基因的主成分。

处理大数据时会花费大量时间;ElbowPlot()内置了一些其它的方法可以减少运行时间。

JackStrawPlot()函数提供可视化方法,用于比较每一个主成分的p-value的分布,虚线是均匀分布;显著的主成分富集有小p-Value基因,实线位于虚线左上方。下图表明保留10个pca主成分用于后续分析是比较合理的。

启发式评估方法生成一个Elbow plot图。在图中展示了每个主成分对数据方差的解释情况(百分比表示),并进行排序。根据自己需要选择主成分,图中发现第9个主成分是一个拐点,后续的主成分(PC)变化都不大了。

注意:鉴别数据的真实维度不是件容易的事情;除了上面两种方法,Serat官当文档还建议将主成分(数据异质性的相关来源有关)与GSEA分析相结合。Dendritic cell 和 NK aficionados可能识别的基因与主成分 12 和 13相关,定义了罕见的免疫亚群 (i.e. MZB1 is a marker for plasmacytoid DCs)。如果不是事先知道的情况下,很难发现这些问题。

Serat官当文档因此鼓励用户使用不同数量的PC(10、15,甚至50)重复下游分析。其实也将观察到的,结果通常没有显著差异。因此,在选择此参数时,可以尽量选大一点的维度,维度太小的话对结果会产生不好的影响。

Seurat v3应用基于图形的聚类方法,例如KNN方法。具有相似基因表达模式的细胞之间绘制边缘,然后将他们划分为一个内联群体。

在PhenoGraph中,首先基于pca维度中(先前计算的pca数据)计算欧式距离(the euclidean distance),然后根据两个细胞在局部的重合情况(Jaccard 相似系数)优化两个细胞之间的边缘权值。此步骤内置于FindNeighbors函数,输入时先前确定的pc数据。

为了聚类细胞,接下来应用模块化优化技术迭代将细胞聚集在一起。(the Louvain algorithm (default) or SLM [SLM, Blondel et al., Journal of Statistical Mechanics]),FindClusters函数实现这一功能,其中需要注意resolution参数,该参数设置下游聚类分析的“granularity”,更大的resolution会导致跟多的细胞类群。3000左右的细胞量,设置resolution为0.4-1.2是比较合适的。细胞数据集越大,需要更大的resolution参数, 会获得更多的细胞聚类。

查看细胞属于那个类群可以使用函数Idents。

Seurat提供了一些非线性降维度分析的方法,如tSNE和UMAP,以可视化和探索这些数据集;这一步使用的数据建议与聚类分析使用的pc维度一致。

#画图展示

此时可以保存数据,方便下次直接导入数据修改图形。

Seurat可以通过差异表达分析寻找不同细胞类群的标记基因。FindMarkers函数可以进行此 *** 作,但是默认寻找单个类群(参数ident.1)与其他所有类群阳性和阴性标记基因。FindAllMarkers函数会自动寻找每个类群和其他每个类群之间的标记基因。

min.pct参数:设定在两个细胞群中任何一个被检测到的百分比,通过此设定不检测很少表达基因来缩短程序运行时间。默认0.1

thresh.test参数:设定在两个细胞群中基因差异表达量。可以设置为0 ,程序运行时间会更长。

max.cells.per.ident参数:每个类群细胞抽样设置;也可以缩短程序运行时间。

Seurat可以通过参数test.use设定检验差异表达的方法(详情见 DE vignett )。

Seurat有多种方法可视化标记基因的方法

DoHeatmap为指定的细胞和基因花表达热图。每个类群默认展示top 20标记基因。

根据已知细胞类型与基因标记的对应关系,可以为细胞类群找到对应的细胞类型。

参考:

Seurat - Guided Clustering Tutorial, Compiled: April 17, 2020

Getting started with Seurat

DB2拥有悠久的历史并且被很多人认为是最早使用SQL(同样最早被IBM开发)的数据库产品。

1968:IBM 在 IBM 360 计算机上研制成功了 IMS V1,这是第一个也是最著名的和最为典型的层次型数据库管理系统。至今仍然还有企业在使用呢。

1970:这是数据库历史上划时代的一年,IBM公司的研究员E.F.Codd 发表了业界第一篇关于关系数据库理论的论文A Relational Model of Data for Large Shared Data Banks,首次提出了关系模型的概念。这篇论文是计算机科学史上最重要的论文之一,奠定了Codd博士关系数据库之父的地位。

1973:IBM研究中心启动了 System R 项目,研究多用户与大量数据下关系型数据库的可行性,它为 DB2 的诞生打下了良好基础。由此取得了一大批对数据库技术发展具有关键性作用的成果,该项目于1988年被授予ACM软件系统奖。

1974:IBM研究员Don Chamberlin 和 Ray Boyce 通过 System R 项目的实践,发表了论文SEQUEL:A Structured English Query Language,提出了 SEQUEL 语言,此即 SQL 语言的原型。

1975:IBM研究员Don Chamberlin 和 Morton Astrahan的论文 Implentation of a Structured English Query Language,在 SEQUEL 的基础上 描述了 SQL 语言的第一个实现方案。这也是 System R 项目得出的重大成果之一。

1976:IBM System R 项目组发表了论文A System R: Relational Approach to Database Management,描述了一个关系型数据库的原型。IBM 的研究员Jim Gray 发表了名为Granularity of Locks and Degrees of Consistency in a Shared DataBase的论文,正式定义了数据库事务的概念和数据一致性的机制。

1977:System R 原型在3个客户处进行了安装,这 3 个客户分别是:波音公 司、Pratt &Whitney 公司和 Upjohn 药业。这标志着 System R 从技术上已经是 一个比较成熟的数据库系统,能够支撑重要的商业应用了。

1979:IBM研究员Pat Selinger在她的论文Access Path Selection in a Relational Database Management System中描述了业界第一个关系查询优化器。

1980:IBM发布了 S/38 系统,该系统中集成了一个以 System R 为原型的数据库服务器。为了方便应用程序的移植,它的 API 与 S/3、S/32 的 API 一致。

1981:由于发明了关系型数据库模型,IBM 的研究员E.F.Codd 接受了ACM 图灵奖,这是计算机科学界的最高荣誉。Codd 博士也是继查尔斯.巴赫曼(Charles W. Bachman) 之后,又一位由于在数据库领域做出巨大贡献而获此殊荣的计算机科学家。

1982:IBMPC 的出现标志着 PC 产业开始孕育发展。在以后相当长的一段时间内,在各种品牌的个人电脑上标记着的IBM PC Compatible字样都见证着 IBM 在 这个领域的辉煌。

1982:IBM发布了 SQL/DS for VSE and VM 。这是业界第一个以 SQL 作为接口的商用数据库管理系统。该系统也是基于 System R 原型所设计的。

1983:IBM发布了DATABASE 2(DB2)for MVS(内部代号为Eagle)。

1986:System/38 V7 发布,该系统首次配置了查询优化器,能够对应用程序的存取计划进行优化。

1987:IBM发布带有关系型数据库能力的 OS/2 V1.0扩展版,这是IBM第一次把关系型数据库处理能力扩展到微机系统。这也是 DB2 for OS/2、Unix and Window 的雏形。

1988:IBM发布了SQL/400,为集成了关系型数据库管理系统的AS/400服务器提供了SQL支持。IDUG(国际DB2用户组织)组织成立。

1989:IBM定义了 Common SQL 和 IBM 分布式关系数据库架构(DRDA),并在 IBM 所有的关系数据库管理系统上加以实现。 第一届 IDUG北美大会在美国芝加哥召开。 1992:第一届 IDUG欧洲大会在瑞士日内瓦召开。这标志着 DB2 应用的全球化。

1993:

1.IBM发布了DB2 for OS/2 V1(DB2 for OS/2 可以被简写为DB2/2)和 DB2 forRS/6000V1(DB2 for RS/6000 可以被简写为DB2/6000),这是 DB2 第 一次在Intel 和Unix 平台上出现。

2.Louis V. Gerstner 入主 IBM。

1994:

1.DB2 For MVS V4 通过并行 Sysplex 技术的实现在主机上引入了分布式计算(数据共享)。

2.IBM发布了运行在 RS/6000 SP2 上的 DB2 并行版 V1,DB2 从此有了能够适应大型数据仓库和复杂查询任务的可扩展架构。IBM 将 DB2 Common Server 扩展到 HP-UX 和 Sun Solaris 上。DB2 开始支持其他公司开发的 UNIX 平台。 DB2/400 集成在 OS/400 V3.1中发布,并且引入了并行机制、存储过程和参照完整性等机制。同时,IBM 宣布在 OS/2 和 AIX 平台上的 DB2 产品能够对多媒体数据和面向对象应用程序提供支持。

1995:

1.IBM发布了 DB2 Common Server V2,这是第一个能够在多个平台上运行的对象-关系型数据库(ORDB)产品,并能够对 Web 提供充分支持。DataJoiner for AIX 也诞生在这一年,该产品赋予了 DB2 对异构数据库的支持能力。DB2 在 Windows NT 和 SINIX平台上的第一个版本(DB2 V2)发布。

2.IBM发布了在 AIX 和 MVS 平台上的数据挖掘技术,用于管理大文本、图像、音频、视频和指纹信息的扩展器(Extender)以及可以对数据仓库进行可视化构造和管理的Visual Warehouse。

3.IBM发布了 DB2 WWW Connection V1 for OS/2 and AIX(该产品后来被更名为Net.Data)。该产品可以将数据库中的数据快速发布到 Web。第一届 IDUG 亚太区大会在澳大利亚悉尼召开。这年IBM 并购了 Lotus Development Corp。

1996:

1.IBM发布 DB2 V2.1.2 ,这是第一个真正支持 JAVA 和 JDBC 的数据库产品。

2.DataJoiner 开始支持对非关系型数据库(比如 IMS 和 VSAM)的存取。

3.IBM发布了 Intelligent Miner,该产品可以对基于 DB2 的数据源实施数据挖掘。

4.IBM并购 Tivoli。 IBM 将 DB2 更名为 DB2 Universal Database,这是第一个能够对多媒体和 Web 进行支持的RDBMS。该系统具有很好的伸缩性,可以从桌面系统扩展到大型企业,适应单处理器、 SMP 和 MPP 计算环境,并可以运行在所有主流 *** 作系统和硬件平台上。 DB2 V5 是以前的两个产品的合并:DB2 Common Server V 2.1.2 和 DB2 并行版 1.2。

5.IBM发布了数字图书馆产品,这是一个多媒体资产管理产品,也是 IBM Content Manager 的前身。

6.DB2 Magzine 第一期发布,DB2 有了自己专门的技术刊物。

1997:

1.IBM发布了可以支持 Web 的 DB2 for OS/390 V5,这是当时唯一能够支持64, 000个并发用户和百 TB 级别的数据库产品。

2.IBM发布了DB2 UDB for UNIX、Windows and OS/2,该产品支持 ROLLUP 和 CUBE 函数,对联机分析处理(OLAP)具有重要意义。

3.IDUG 第一次技术论坛在加拿大多伦多召开。

4.IBM发布了用于企业级内容管理的 EDMSuite,该产品包含了用于管理计算机生成报表的 OnDemand 和 管理图像的 ImagePlus VisualInfo。

5.IBM基于 RS/6000 SP 架构的超级计算机深蓝在国际象棋的 6 番棋对抗中战胜了世界棋王卡斯帕罗夫。

1998:

1.IBM发布了 DB2 OLAP Server,这是一个基于 DB2 的完整的 OLAP Solution。这个产品是和 Arbor Software(Hyperion的前身)合作开发的。

2.IBM发布了 DB2 Data Links 技术,该技术可使 DB2 对外部文件进行管理。

3.DB2的 shared-nothing集群技术扩展到 Windows 和 Solaris 平台。

4.IBM发布了 DB2 Spatial Extender,这是与ESRI公司在DataJoiner基础 上联合开发的,该产品赋予了DB2 对地理信息数据的存取能力。

5.IBM发布了 ContentConnect,该产品是 Enterprise Information Portal(EIP)的前身。

6.DB2 对 SCO UnixWare 平台提供支持。

7.DB2 UDB V5.2 增加了对 SQLJ、Java 存储过程和用户自定义函数的支持。

8.IBM发布 DB2 UDB for AS/400,使 AS/400 成为充分支持电子商务的机 型。

1999:

1/IBM为了对移动计算提供支持,发布了DB2 UDB 卫星版和DB2 Everywhere(这是一个适用于手持设备的微型关系数据库管理系统,后称为DB2 Everyplace)。

2/IBM发布了 Enterprise Information Portal,该产品可以跨数字图书 馆和 EDMSuite 提供一个统一的联合检索功能。

3/DB2增加了能够识别 XML 语言的文本检索功能,从而引入了 XML 支 持,并启动了DB2 XML Extender 的 beta 计划。

4/IBM发布了 Intel 平台上的 DB2 UDB for Linux。

5/IBM 研究机构将 DB2 的联邦(federation)功能和 Garlic 技术(Garlic的目标是使能大规模多媒体信息系统,集成到生命科学解决方案DiscoveryLink 中

2000:

1/IBM发布了 DB2 XML Extender,成为在业界第一个为数据库提供内置 XML 支持的厂商。

2/IBM将 Visual Warehouse 集成到 DB2 中,为DB2 提供了内置的数据仓库管理功能。

3/DB2对Linux 的支持进一步增强,能够支持基于 Intel 的 Linux集群、 发布了可以运行在主机上的 DB2 UDB for Linux和可以运行在嵌入式Linux上的 DB2 Everyplace。

4/DB2开始支持 NUMA-Q 平台,可以运行在该平台上的类 UNIX *** 作系统DYNIX/PTX 上。

5/DB2通过 Net.Search Extender 提供了 in-memory 高速文本检索功能。

6/IBM启动了数据库管理工具业务,起初着重于为主机上的 IMS 和 DB2 提供高效管理工具,最终这项业务扩展到 UNIX、Linux 和 Windows 平台。 Informix数据库产品也在支持之列。

7/IBM开始通过在DB2中集成 DataJoiner 来提供数据联邦(federation)功能 。

8/IBM发布了用于管理数字资产的Content Manager。IBM 数字图书馆和 EDMSuite 产品都被包含在一个单一的架构中来提供多媒体资产管理和企业内 容管理。荷兰国家图书馆、梵蒂冈图书馆都是最早的用户。

9/DB2在主机上销售出了它的第10000个许可证。

2001:

1/IBM以 10 亿美金收购了 Informix 的数据库业务,这次收购扩大了IBM 的分布式数据库业务。

2/DB2 OLAP Server中增添了数据挖掘功能。

3/IBM发布了第一个能够支持多种平台的 DB2 工具。

4/DB2提供了基于 SOAP 的 Web 服务的支持。DB2 XML Extender和存储过程可以使DB2成为 Web 服务的提供者。

5/IBM科学家在纳米碳管晶体管技术领域取得突破。IBM 用纳米碳管制造出了世界上第一批纳米晶体管--由直径 10 个原子大小的碳原子组成的小圆柱结 构,比当今基于硅的晶体管小 500 倍。

6/DB2拓宽了其数据联邦(federation)的能力,可以对WebSphere MQ消息队列和生命科学领域特定格式的文件提供支持。

7/IBM发布了 DB2 UDB for OS/390。

2002:

1/IBM发布了 Xperanto,这是一个基于标准的信息集成中间件的演示版, 可以用来优化对分散数据源的存取。这个演示版本使用了XML、Xquery、Web 服 务、数据联邦(federation)和全文检索等先进技术。

2/IBM宣布计划收购 Rational Software Corp,从而使得 IBM软件能够 支持从设计、开发、部署到管理和维护的完整过程。

3/DB2通过基于 SOAP 的 Web 服务扩展了数据联邦(federation)的能力。并可以作为 Web 服务的使用者出现在 Web 服务架构中。

4/DB2 OLAP Server中添加了hybrid(多维和关系)分析能力。

5/作为IBM 自主运算策略的一部分,SMART(自我管理和资源调节)技术 在 DB2 UDB V8.1 中首次正式应用。

6/IBM并购 Tarian Sotware,从而加强了Content Manager 中记录管理组 件的功能。

2003:

1/IBM将数据管理产品统一更名为信息管理产品,旨在改变很多用户对于 DB2 家族产品只能完成单一的数据管理的印象,强调了 DB2 家族在信息的处理与集成方面的能力。

2/DYNIX/ptxDB2 发布了 DB2 Information Integrator(该产品由以 前的 DB2 DataJoiner和 Enterprise Information Portal演化而来),该款软件旨在帮助客户即时访问、集成、管理和分析存储于企业内外任何平台上的各类信息。

2004:IBM DB2 在TPC 的两项测试中屡次刷新该测试的新纪录,在计算领 域的历史上树立了新的里程碑。其中在TPC-C 的测试中,它创造了计算速度领域新的世界记录,彻底粉碎了在该测试中每分钟三百万次交易的极限。

2005:经过长达5年的开发,IBM DB2 9将传统的高性能、易用性与自描述、灵活的XML相结合,转变成为交互式、充满活力的数据服务器。

2006:IBM发布DB2 9,将数据库领域带入XML时代。IT建设业已进入SOA(Service-Oriented Architecture)时代。实现SOA,其核心难点是顺畅解决不同应用间的数据交换问题。XML以其可扩展性、 与平台无关性和层次结构等特性,成为构建SOA时不同应用间进行数据交换的主流语言。而如何存储和管理几何量级的XML数据、直接支持原生XML文档成为SOA构建效率和质量的关键。在这这种情况下,IBM推出了全面支持Original XML的DB2 9,使XML数据的存储问题迎刃而解,开创了一个新的XML数据库时代。同年1月30日,IBM发布了一个DB2免费版本DB2Express-C。

// 给出一个思路,仅供参考

// 1. 依次遍历找到文件中的指定关键字的位置 可用用memcmp 进行比较

// 2. 根据协议(写数据时的格式)将指定长度的数据读取来(还有行的概念吗?)

//  3.  输出数据到屏幕上


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10848023.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存