【10X空间转录组Visium】(一)Space Ranger
今天是2019月12月3日,10X空间转录组的新流程发布了,比起安装旧版的ST Spatial系列好装了太多太多。。。
跟以前各个系列的Cell Ranger一样,可以生成FASTQ和计数矩阵,还能自动进行二级分析,操作和生成的目录文件结构跟以前都很相似,可以说比较容易上手。
旧号无故被封,小号再发一次
更多空间转录组文章:
1. 新版10X Visium
- 【10X空间转录组Visium】(一)Space Ranger 1.0.0(更新于20191205)
- 【10X空间转录组Visium】(二)Loupe Browser 4.0.0
- 【10X空间转录组Visium】(三)跑通Visium全流程记录
- 【10X空间转录组Visium】(四)R下游分析的探索性代码示例
- 【10X空间转录组Visium】(五)Visium原理、流程与产品
- 【10X空间转录组Visium】(六)新版Seurat v3.2分析Visium空间转录组结果的代码实操
- 【10X空间转录组Visium】(七)思考新版Seurat V3.2作者在Github给予的回答
2. 旧版Sptial
- 【旧版空间转录组Spatial】(一)ST Spot Detector使用指南
- 【旧版空间转录组Spatial】(二)跑通流程试验记录
- 【旧版空间转录组Spatial】(三)ST Spot Detector实操记录
总共要下载两个东西:Space Ranger - 1.0.0
(November 25, 2019) 和 Loupe Browser 4.0.0
(December 2, 2019)
Space Ranger
Space Ranger包括与空间基因表达实验有关的两条管道:
- spacerangeranger mkfastq包装了Illumina的bcl2fastq,解复用,并转换barcode和read data为FASTQ
-
spaceranger count从
spaceranger mkfastq
中获取明场切片图像和FASTQ文件,并执行对齐,组织检测,基准检测和条形码/ UMI计数。该管道使用Visium空间条形码生成特征点矩阵 feature-spot matrices,确定聚类并执行基因表达分析。
这些管道将Visium专用算法与广泛使用的RNA序列比对软件STAR相结合。输出以标准BAM,MEX,CSV,HDF5,TIFF,PNG,JPEG和HTML格式提供,并增加了空间信息。
Visium-specific 术语
image.png- 对齐文件alignment file - 使用手动对齐和手动组织检测时,使用 Loupe Browser生成的文件 。
- 区域(或捕获区域)-可以将组织放置在Visium玻片上的四个活动区域之一。每个区域仅包含一个组织样本。玻片区域从上到下依次命名:A1,B1,C1,D1。
-
明场brighfield图像:组织的光学显微镜图像。在Visium实验中,明场图像用作解剖参考。这些图像通常用苏木精和曙红染色以突出组织结构(请参见下面的H&E染色)。
image.png - 捕获点 -这些是载玻片上的不可见点,其中包含用于捕获poly-adenylated mRNA的特殊寡核苷酸。
- 基准点fiducial spots:围绕每个捕获区域的带有特殊图案的点的框架。这些斑点可帮助样本显微学家查看放置组织的位置,Space Ranger还可使用这些斑点来确定图像中捕获区域的位置。
- 字形glyphs-捕获区域每个角上的基准点的子集,这些基准点具有易于识别的形状:沙漏,三角形,空心六边形,实心六边形。
- H&E染色:-将苏木精和曙红施用于组织以突出组织结构的过程。苏木精使细胞核呈蓝色,曙红使细胞质和细胞外基质呈粉红色。
- 样本 -应用于Visium玻片上单个区域或由此得出的数据的单个组织切片。
- 玻片序列号slide serial number -每个Visium玻片标签上印刷的唯一标识符。序列号以“ V1”开头,并以短划线和三位数字结尾,例如123。
- 双重索引dual indexing -一种通过使用两个寡核苷酸序列对同一流动池flowcell上的多个样品进行测序的策略,一个寡核苷酸序列连接到要测序的每个片段的任一末端,以便唯一地识别样品。Visium库构造仅使用此双索引策略支持多路复用样本。请参阅下面的样本索引。
- 库(或测序库)-从单个载玻片区域制备的Visium空间条形码测序库。
- 样本索引 -用于文库构建的寡核苷酸序列,用于区分在同一流通池上测序的多个样本。On the Illumina platform, these sequences are read out as separate "index reads" and reads are sorted into sample-specific files using mkfastq. The Visium library construction supports only "dual-indexing" (see above).Visium库的构造仅支持“双重索引”(请参见上文)。
- sequencing run (or flowcell):一次测序仪器运行的输出数据,包括Illumina BCL文件。可以按泳道或样本索引对数据进行多路分解。有关解复用的更多信息,请参见 mkfastq。
系统要求
Space Ranger管道在满足以下最低要求的Linux系统上运行:
- 8核Intel或AMD处理器(建议使用32核)
- 64GB RAM(建议128GB)
- 1TB可用磁盘空间
- 64位CentOS / RedHat 6.0或Ubuntu 12.04
为了在集群模式下运行,集群需要满足以下附加最低要求:
- 每个节点 8核Intel或AMD处理器
- 每个内核 6GB RAM
- 共享文件系统(例如NFS)
- SGE或LSF批处理计划系统
下载Space Ranger - 1.0.0
curl -o spaceranger-1.0.0.tar.gz "http://cf.10xgenomics.com/releases/spatial-exp/spaceranger-1.0.0.tar.gz?Expires=1575402715&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2NmLjEweGdlbm9taWNzLmNvbS9yZWxlYXNlcy9zcGF0aWFsLWV4cC9zcGFjZXJhbmdlci0xLjAuMC50YXIuZ3oiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE1NzU0MDI3MTV9fX1dfQ__&Signature=fACB1rzbHv1rwUicNqL8SheRe6FkFOKxow5cTXcZPfOPBOTBEplElFMnOi4Xv4A2X3kydX45B-JnIaRj7I6a2doGEMTyqv84BnM5LxHAVBtWrXJyQqXbKKtgl9Dxe4BDnM9rPKhs6o2UbmWWAHX8Xu4J3~vgP3yXbhovuyl6OqCxu5p82oxTeOfN0bONqZdZ33svlAXJhatUTdpse2YCSRJZzov69NSHF6gE5DXl6iu5RWU7AgnjFgCuEFkQMwyn-FoYi2~i0s2fOFK0RCVI07~YKNDsjz3eXgOoHjWGPtWw5DAbPpTB2~32xkGzYeIYeZjH6m5JEgNGuvfWEyj~Aw__&Key-Pair-Id=APKAI7S6A5RYOXBWRPDA"
下载参考序列:
- GRCh38 Reference - 3.0.0 (November 19, 2018)
curl -O http://cf.10xgenomics.com/supp/spatial-exp/refdata-cellranger-GRCh38-3.0.0.tar.gz
- mm10 Reference - 3.0.0 (November 19, 2018)
curl -O http://cf.10xgenomics.com/supp/spatial-exp/refdata-cellranger-mm10-3.0.0.tar.gz
安装Space Ranger
$ tar -xzvf spaceranger-1.0.0.tar.gz
vi ~/.bashrc # 填入 export PATH=/opt/spaceranger-1.0.0:$PATH
source ~/.bashrc
验证安装:
$ spaceranger testrun --id=tiny
无论测试管道成功与否,您都会看到:
Saving diagnostics to tiny/tiny.mri.tgz
此tiny.mri.tgz文件包含10x诊断信息,可以肥肠方便地用一下命令发给10X,让他们帮你解决问题:
$ spaceranger upload your@email.edu tiny/tiny.mri.tgz
服务器没连网发邮箱support@10xgenomics.com
解压reference
tar -xzvf refdata-cellranger-GRCh38-3.0.0.tar.gz
运行Space Ranger
根据性能曲线图,CPU限制在32个核心,内存限制在128G
https://support.10xgenomics.com/spatial-gene-expression/software/overview/system-requirements
3种运行方式:
单服务器运行方案:
默认, spaceranger使用所有可用的内核和90%的检测到的内存。在具有多个并发用户和任务的共享环境中,此行为可能是不希望的。强烈建议运行spaceranger 与 --localcores 和 --localmem指定资源使用上限。
一、运行spaceranger mkfastq
管道结构输入文件建议:
1. Sequencing - Read 2 Length:
- 由于“索引跳跃”,Space Ranger要求使用“双重索引”dual-indexing,,在该索引中,使用i7和i5样本索引生成了复用库。
- 在我们的实验中,使用91个碱基的R2长度可获得最佳的作图速率,从而获得灵敏度,而对于较短或较长的读取,最佳性能则较低。
- 如果您已使用91个以上的碱基进行测序,则Space Ranger可以根据需要调整数据,从而为您的样品找到最佳选择:查看--r2-length
选项 spaceranger count
- 如果您对较短的读长进行了测序,则分析仍然可以进行,但灵敏度可能会降低。
2. 图像输入建议:
Visium使用的所有输入组织图像必须是24位彩色TIFF,16位灰度TIFF或JPEG。除了Loupe浏览器和Space Ranger的这些基本文件类型要求之外,Space Ranger中的自动图像处理管道还施加了以下概述的其他限制。如果不能满足这些限制,您仍然可以使用Loupe Browser中的手动对齐和组织选择过程来处理数据。
-
正确的图像方向
需要在Space Ranger中进行自动处理的图像,其方向必须使沙漏形状的点点位于图像的左上角。图像应大致与轴对齐,尽管轻微旋转(例如,小于15度)应该可以。
正确定位的切片图像 -
正确图像大小Correct Sizing
将输入图像降采样为两个维度中的像素均不大于2000像素,下采样不会影响使用全分辨率输入图像的Loupe Browser中的可视化。建议裁剪图像以去除基准边界外的多余图像区域
image.png -
适当的曝光度
image.png
spaceranger mkfastq生成FASTQs
工作流程:
- 将10x样本索引名称翻译为i7 / i5双索引中的相应寡核苷酸。例如,样品表中的A1孔可以指定为SI-TT-A1,并且spaceranger mkfastq会将i7和i5索引分别识别为GTAACATGCG和AGTGTTACCT。
- 支持简化的CSV样本表格式,以处理10个用例。
- 生成测序和特定于10X的质量控制指标,包括条形码质量,准确性和多样性。
- 支持大多数bcl2fastq参数,例如
--use-bases-mask
工作流程示例
在此示例中,有两个10x库(每个库均通过单独的捕获区域处理)在单个流通池上多路复用。注意spaceranger mkfastq
运行,我们在每个文库上运行管道的单独实例。
在此示例中,一个10x库在两个流通池上测序。注意spaceranger mkfastq
运行,我们在生成的所有FASTQ文件上运行管道的单个实例。
运行示例数据
spaceranger mkfastq可以识别两种用于描述样本的文件格式:一种简单的三列CSV格式,以及所使用的Illumina实验管理器(IEM)样本表格式bcl2fastq
要继续,请执行以下操作:
- 下载tiny-bcl tar文件。
- 将tiny-bcl tar文件解压缩到方便的位置。这将创建一个新的
tiny-bcl
子目录。 - 下载简单的CSV布局文件:spaceranger-tiny-bcl-simple-1.0.0.csv。
- 下载Illumina实验管理器样本表:spaceranger-tiny-bcl-samplesheet-1.0.0.csv。
- 简单的CSV示例表运行mkfastq
对于大多数测序实验,建议使用简单的csv样本表。简单的csv格式只有三列(通道,样本,索引),因此不太容易出现格式错误。您可以在中看到一个示例spaceranger-tiny-bcl-simple-1.0.0.csv:
Lane,Sample,Index
1,test_sample,SI-TT-D9
使用简单布局mkfastq在tiny-bcl
测序运行中运行的方法:
如果未按样本索引测序,则需要使用此格式。spaceranger-tiny-bcl-samplesheet-1.0.0.csv在运行管道之前简要查看一下。
$ spaceranger mkfastq --id=tiny-bcl \
--run=/path/to/tiny_bcl \
--csv=spaceranger-tiny-bcl-simple-1.0.0.csv
其中:
- run
(必需) Illumina BCL运行文件夹的路径。
- id
(可选;默认为所引用的流通池的名称--run) mkfastq创建的文件夹的名称。
--csv
(可选)具有泳道,样本和索引列的简单CSV路径,描述了对流通池进行解复用的方式。索引列应包含10X样本双索引名称(例如,SI-TT-A12)。这是Illumina IEM样本表的替代方法,如果--samplesheet
指定则将被忽略。
- 使用Illumina Experiment Manager示例表运行mkfastq
数据样式:
[Data]
Lane,Sample_ID,Sample_Name,Sample_Plate,Sample_Well,I7_Index_ID,index,I5_Index_ID,index2,Sample_Project,Description
1,s1,test_sample,,,SI-TT-D9,SI-TT-D9,SI-TT-D9,SI-TT-D9,p1,
SI-TT-D9指的是10X样本双索引。
在此示例中,将仅使用从通道1读取。要在所有泳道上多路分解给定的样本索引,请完全省略泳道列。
$ spaceranger mkfastq --id = tiny-bcl \
--run = / path / to / tiny_bcl \
--samplesheet = spaceranger-tiny-bcl-samplesheet-1.0.0.csv
检查FASTQ输出
结果文件夹名字由--id
决定
$ ls -l
drwxr-xr-x 4 jdoe jdoe 4096 Nov 14 12:05 tiny-bcl
关键输出文件可在中找到outs/fastq_path,并以与常规bcl2fastq运行相同的方式进行组织:
$ ls -l tiny-bcl/outs/fastq_path/
读取质量控制指标
--qc
指定该标志后,spaceranger mkfastq管道会将测序和10x特定的质量控制指标写入JSON文件。指标位于outs/qc_summary.json
文件中。
通过查看此输出,您可以在运行spaceranger管道之前诊断低条形码映射率和reads质量
指定10x管道的输入FASTQ文件
spaceranger count
管道需要FASTQ文件作为输入,通常来自运行spaceranger mkfastq
,但是,可以使用其他来源的FASTQ文件,例如Illumina的 bcl2fastq
,已发布的数据集或我们的 bamtofastq
二、运行spaceranger count
spaceranger count
管道的参数:
参数 | 描述 |
---|---|
fastqs | (必需)包含要分析的FASTQ文件的文件夹。通常,这是spaceranger mkfastq 产生的fastq_path 文件夹。如果文件位于多个文件夹中(例如,由于一个库在多个流通池中测序),请提供以逗号分隔的路径列表。 |
sample | (可选)要分析的样品名称。这是提供给mkfastq 或 bcl2fastq的sample sheet。多个名称可以用逗号分隔的列表提供,在这种情况下,它们被视为一个样本。 |
lanes | (可选)与此样本关联的通道。默认为所有通道。 |
indices | (已弃用/可选。仅用于从 spaceranger demux 。)与该样本关联的样本索引。 |
Fastq文件输出目录
https://support.10xgenomics.com/spatial-gene-expression/software/pipelines/latest/using/fastq-input
用spacerange count进行单库分析
- 运行
spaceranger mkfastq
在Illumina BCL输出文件夹中,以生成FASTQ文件。 - 运行
spaceranger count
,通过spaceranger mkfastq
在每个的捕获区域上进行demultiplexed
对于以下示例,假定Illumina BCL输出在名为的文件夹中/sequencing/140101_D00123_0111_AHAWT7ADXX
。
- Run spaceranger mkfastq
生成FASTQ文件。例如,如果流通池序列号为 HAWT7ADXX,则spaceranger mkfastq将在HAWT7ADXX/outs/fastq_path
中输出FASTQ文件。 - Run spaceranger count
自动对齐:
要使用自动基准对齐和组织检测为单个库生成空间特征计数 spatial feature counts
$ cd /home/jdoe/runs
$ spaceranger count --id=sample345 \
--transcriptome=/opt/refdata/GRCh38-3.0.0 \
--fastqs=/home/jdoe/runs/HAWT7ADXX/outs/fastq_path \
--sample=mysample \
--image=/home/jdoe/runs/images/sample345.tif \
--slide=V19J01-123 \
--area=A1
手动对齐:
使用在Loupe Browse中生成的基准对齐和组织分配 json文件为单个库生成空间特征计数
$ cd /home/jdoe/runs
$ spaceranger count --id=sample345 \
--transcriptome=/opt/refdata/GRCh38-3.0.0 \
--fastqs=/home/jdoe/runs/HAWT7ADXX/outs/fastq_path \
--sample=mysample \
--image=/home/jdoe/runs/images/sample345.tif \
--slide=V19J01-123 \
--area=A1 \
--loupe-alignment=sample345.json
spaceranger将默认使用系统上可用的所有核心数来执行管道。您可以为
--localcores
选项指定不同数量的核新数。--localmem
限制使用的内存量(以GB为单位)
管道将创建一个新文件夹,其名称为输出指定的sample ID(例如/home/jdoe/runs/sample345)。如果此文件夹已经存在,spaceranger 将假定它是已存在的管道,并尝试恢复运行。
Slide序列号和捕获区域参数:
-
spaceranger count
管道接受slide serial和 capture area参数,以便用最精确的基准和坐标点一个实验。将此信息传递给的最简单方法spaceranger count是通过--slide和--area参数。 - 当
--slide
指定,该管道将下载与所提供的序列号相关联的布局文件。 - 如果spaceranger在无法访问外部Internet的环境中运行,请按照以下说明进行操作,以便在本地下载slide文件。
- 不知道与实验相关的序列号或捕获区域:运行:
spaceranger
的--unknown-slide
选项。指定后,spaceranger 将对点坐标和基准坐标使用默认布局文件。默认布局和特定载玻片之间相应点的差异在10微米以下。
下载slide文件以进行本地操作(没有网的情况下):
管道将需要通过--slidefile
参数使用Visium slide的布局文件 。您可以在下面下载Visium slide的布局文件。输入slide的序列号(例如 V19S01-123),然后按“下载”。
https://support.10xgenomics.com/spatial-gene-expression/software/pipelines/latest/using/count
输出文件
成功运行后的输出:
Outputs:
- Run summary HTML: /opt/sample345/outs/web_summary.html
- Outputs of spatial pipeline: /opt/sample345/outs/spatial
- Run summary CSV: /opt/sample345/outs/metrics_summary.csv
- BAM: /opt/sample345/outs/possorted_genome_bam.bam
- BAM index: /opt/sample345/outs/possorted_genome_bam.bam.bai
- Filtered feature-barcode matrices MEX: /opt/sample345/outs/filtered_feature_bc_matrix
- Filtered feature-barcode matrices HDF5: /opt/sample345/outs/filtered_feature_bc_matrix.h5
- Unfiltered feature-barcode matrices MEX: /opt/sample345/outs/raw_feature_bc_matrix
- Unfiltered feature-barcode matrices HDF5: /opt/sample345/outs/raw_feature_bc_matrix.h5
- Secondary analysis output CSV: /opt/sample345/outs/analysis
- Per-molecule read information: /opt/sample345/outs/molecule_info.h5
- Loupe Browser file: /opt/sample345/outs/cloupe.cloupe
Pipestance completed successfully!
管道的输出包含在以您指定的sample ID命名的文件夹中(例如sample345)。名为outs
的子文件夹包含主要管道输出文件:
文档名称 | 描述 |
---|---|
web_summary.html | 以HTML格式运行摘要指标和图表 |
spatial | 该目录包含jpg格式的对齐基准点和检测到的组织的QC图像,scalefactors_json.json,png格式的输入图像的高分辨率和低分辨率版本以及tissue_positions_list.txt |
spatial/aligned_fiducials.jpg | 对齐的基准QC图像 |
spatial/detected_tissue_image.jpg | 检测到的组织QC图像 |
spatial/detected_tissue_image.png | 全分辨率图像在最长尺寸上降采样为2k像素 |
spatial/detected_tissue_image.png | 全分辨率图像在最长尺寸上降采样为600像素 |
spatial/tissue_positions_list.csv | 包含斑点条形码的CSV,如果该斑点是在组织的(1)之下或在组织(0)外调用的,则全分辨率图像的阵列位置,图像像素位置x和图像像素位置y |
spatial/scalefactors_json.json | 包含用于全分辨率原始图像的以像素为单位的点直径估计,组织_hires_scalef(用于高分辨率图像的以像素为单位的点位置乘数),用于全分辨率原始图像的以基准像素的基准点直径估计(以像素为单位),低分辨率图像的像素 |
metrics_summary.csv | 以CSV格式运行摘要指标 |
possorted_genome_bam.bam | reads与基因组和转录组比对,并带有条形码信息 |
possorted_genome_bam.bam.bai | 索引 possorted_genome_bam.bam |
filtered_feature_bc_matrix | 过滤后的特征条形码矩阵,仅包含MEX格式的spot barcode |
filtered_feature_bc_matrix_h5.h5 | 过滤后的特征条形码矩阵,仅包含HDF5格式的spot barcode |
raw_feature_bc_matrices | 包含所有MEX格式条形码的未经过滤的特征条形码矩阵 |
raw_feature_bc_matrix_h5.h5 | 包含所有HDF5格式条形码的未经过滤的特征条形码矩阵 |
analysis | 二级分析数据,包括降维,斑点聚类和差异表达 |
molecule_info.h5 | 分子使用的分子水平信息 spaceranger aggr 将样本聚合为更大的数据集。 |
cloupe.cloupe | Loupe Browser 可视化和分析文件 |
一旦 spaceranger count
成功完成后,您可以 在任何受支持的Web浏览器中浏览生成的 summary HTML file,在 Loupe Browser,中打开.cloupe文件 ,或参考了解输出部分以手动浏览数据。
命令行参数参考
https://support.10xgenomics.com/spatial-gene-expression/software/pipelines/latest/using/count
常用参数:
--id: A unique run ID string: e.g. sample345
--fastqs: fastq文件所在文件夹
--sample: 提供给样品表中指定的样品名称
--transcriptome: 与Space Ranger兼容的转录组参考的路径,例如 /opt/GRCh38-3.0.0
--image: .jpg或.tiff格式的明场组织H&E图像。
--slide: Visium slide 序列号
--area: Visium捕获区域标识符
--slidefile: slide布局文件指示捕获点和基准点位置
--loupe-alignment 由手动 Loupe对齐步骤生成的对齐文件。在这种情况下,必须提供--image。
--unknown-slide: 使用默认的spot位置
--lanes: (可选)与此样本关联的泳道
--localcores: 限制核心数
-localmem:限制内存
输出文件
https://support.10xgenomics.com/spatial-gene-expression/software/pipelines/latest/output/overview
1. Web Summary:
运行概要:
web_summary.html:包含:摘要指标和自动二级分析结果
-
摘要视图:可以通过单击左上角的“summary”来查看运行摘要。摘要指标描述了测序质量和检测到的斑点的各种特性。
摘要视图 - 分析视图
可以通过单击左上角的“分析”来查看自动的二级分析结果。二级分析提供以下内容:- 将点投影到二维空间(t-SNE)的降维分析
- 显示检测到的UMI覆盖在组织切片上的图
- 自动聚类分析,将具有相似表达谱的斑点分组在一起
- 显示了覆盖在组织切片上的clusters衍生出的基因表达的图
- 在所选的cluster之间差异表达的基因列表
- 显示了降低测序深度对观察到的文库复杂性的影响的图
- 显示了测序深度降低对每个点检测到的基因的中位数的影响的图
2. Run Analysis:
count
管道输出几个包含自动二级分析结果的CSV文件。这些结果的一部分用于在运行摘要中呈现“分析”视图。
-
PCA降维
在聚类之前,对标准化的过滤后的特征条形码矩阵运行主成分分析(PCA),以减少特征(基因)维的数量。第一个是每个点在前N个主成分上的投影。默认情况下,N=10(启用化学批次校正时,N=100)
$ cd /home/jdoe/runs/sample345/outs
$ head -2 analysis/pca/10_components/projection.csv
Barcode,PC-1,PC-2,PC-3,PC-4,PC-5,PC-6,PC-7,PC-8,PC-9,PC-10
AAACATACAACGAA-1,-0.2765,-5.7056,6.5324,-12.2736,-1.4390,-1.1656,-0.1754,-2.9748,3.3785,1.6539
第二个文件是组件矩阵components matrix,该矩阵指示每个功能对每个主成分的贡献度(负载)。未包含在PCA分析中的特征的所有加载值均设置为零。
$ head -2 analysis/pca/10_components/components.csv
PC,ENSG00000228327,ENSG00000237491,ENSG00000177757,ENSG00000225880,...,ENSG00000160310
1,-0.0044,0.0039,-0.0024,-0.0016,...,-0.0104
第三个文件记录了每个主成分解释的总方差的比例。在选择重要的主成分的数目时,查看作为PC等级函数的方差图很有用——当数字开始趋于平缓时,后续的PC不太可能代表数据中有意义的变化。
$ head -5 analysis/pca/10_components/variance.csv
PC,Proportion.Variance.Explained
1,0.0056404970744118104
2,0.0038897311237809061
3,0.0028803714818085419
4,0.0020830581822081206
最后一个文件列出了每个特征的归一化的离散度,然后将特征按其在整个数据集中的平均表达量进行分箱binning 。这为每个特征的差异提供了有用度量。
$ head -5 analysis/pca/10_components/dispersion.csv
Feature,Normalized.Dispersion
ENSG00000228327,2.0138970131886671
ENSG00000237491,1.3773662040549017
ENSG00000177757,-0.28102027567224191
ENSG00000225880,1.9887312950109921
-
t-SNE:
运行PCA之后,运行t分布随机临近嵌入(t-SNE)以可视化二维空间中的斑点。
$ head -5 analysis/tsne/2_components/projection.csv
Barcode,TSNE-1,TSNE-2
AAACATACAACGAA-1,-13.5494,1.4674
AAACATACTACGCA-1,-2.7325,-10.6347
AAACCGTGTCTCGC-1,12.9590,-1.6369
AAACGCACAACCAC-1,-9.3585,-6.7300
-
聚类
然后根据它们在PCA空间中的投影,进行聚类以将具有相似表达谱的斑点分组在一起。
基于图的聚类Graph-based clustering (undergraphclust
)运行一次,因为它不需要预先指定的聚类数量。K-means (under kmeans) 对K=2,...,N运行,其中K对应于聚类编号,默认情况下N=10。每个K的对应结果都被分到其自己的目录中。
$ ls analysis/clustering
graphclust kmeans_10_clusters kmeans_2_clusters kmeans_3_clusters
kmeans_4_clusters kmeans_5_clusters kmeans_6_clusters kmeans_7_clusters
kmeans_8_clusters kmeans_9_clusters
对于每个聚类, spaceranger
为每个位置生成聚类分配cluster assignments
$ head -5 analysis/clustering/kmeans_3_clusters/clusters.csv
Barcode,Cluster
AAACATACAACGAA-1,2
AAACATACTACGCA-1,2
AAACCGTGTCTCGC-1,1
AAACGCACAACCAC-1,3
-
差异表达分析
spaceranger
还会生成一个表,该表展示相对于所有其他聚类,每个群集的差异表达的特征。对于每个功能,我们每个聚类计算三个值: - 聚类i中此特征的每个点的平均UMI计数
- 聚类i中此特征的表达量相对于所有其他聚类的log2倍变化
- 表示该特征在聚类i中相对于其他聚类的表达量的显著性的p值,对其进行了调整以考虑要测试的假设数量(即特征数量)。
该目录与聚类结果位于不同的目录中,但是遵循相同的结构,每个聚类都分为自己的目录。
$ head -5 analysis/diffexp/kmeans_3_clusters/differential_expression.csv
Feature ID,Feature Name,Cluster 1 Mean UMI Counts,Cluster 1 Log2 fold change,Cluster 1 Adjusted p value,Cluster 2 Mean UMI Counts,Cluster 2 Log2 fold change,Cluster 2 Adjusted p value,Cluster 3 Mean UMI Counts,Cluster 3 Log2 fold change,Cluster 3 Adjusted p value
ENSG00000228327,RP11-206L10.2,0.0056858989363338264,2.6207666981569986,0.00052155805898912184,0.0,-0.75299726644507814,0.64066099091888962,0.00071455453829430329,-2.3725403666493312,0.0043023680184636837
ENSG00000237491,RP11-206L10.9,0.00012635330969630726,-0.31783275717885928,0.40959138980118809,0.0,3.8319652342760779,0.11986963938734894,0.0,0.56605908868652577,0.39910771338768203
ENSG00000177757,FAM87B,0.0,-2.9027952579000154,0.0,0.0,3.2470027335549219,0.19129034227967889,0.00071455453829430329,3.1510215894076818,0.0
ENSG00000225880,LINC00115,0.0003790599290889218,-5.71015017995762,8.4751637615375386e-28,0.20790015775229512,7.965820981010868,1.3374521290889345e-46,0.0017863863457357582,-2.2065304152104019,0.00059189960914085744
- ** R下游分析**
Visium生成的数据结构可以在R中进行分析和可视化。有关说明,请参见R中的二级分析
3. 矩阵:Feature-Barcode Matrices
- 矩阵的每个元素是与特征(行)和条形码(列)关联的UMI的数量。
- 两种类型的特征条形码矩阵:Unfiltered feature-barcode matrix 和 Filtered feature-barcode matrix
每个矩阵都以 Market Exchange Format (MEX)对疏矩阵进行存储。它还包含gzip压缩的TSV文件,其特征和条形码序列分别与行和列索引相对应。例如,矩阵输出可能类似于:
$ cd /home/jdoe/runs/sample345/outs
$ tree filtered_feature_bc_matrix
filtered_feature_bc_matrix
├── barcodes.tsv.gz
├── features.tsv.gz
└── matrix.mtx.gz
0 directories, 3 files
- 特征对应于行索引。对于每个功能,其功能ID和名称分别存储在(未压缩)的
features.tsv.gz
文件的第一和第二列中。第三列标识特征的类型,即Gene Expression
。以下是一个最小的示例features.tsv.gz 该文件显示收集了3个基因的数据。
$ gzip -cd filtered_feature_bc_matrix/features.tsv.gz
ENSG00000141510 TP53 Gene Expression
ENSG00000012048 BRCA1 Gene Expression
ENSG00000139687 RB1 Gene Expression
对于Gene Expression
数据,该ID对应在参考GTF的注释字段 gene_id
中。同样,名称对应于在参考GTF的注释字段gene_name
中。如果没有gene_name 字段
存在于参考GTF中,基因名称等同于基因ID。
对于多物种实验,基因ID和名称以基因组名称开头,以避免不同物种的基因之间发生名称冲突,例如GAPDH变为hg19_GAPDH,而Gm15816变为mm10_Gm15816。
条形码序列对应于列索引:
$ gzip的-cd filtered_feature_bc_matrices / hg19 / barcodes.tsv
AAACATACAAAACG-1
AAACATACAAAAGC-1
AAACATACAAACAG-1
AAACATACAAACGA-1
AAACATACAAAGCA-1
AAACATACAAAGTG-1
AAACATACAACAGA-1
AAACATACAACCAC-1
AAACATACAACCGT-1
AAACATACAACCTG-1
R和Python支持MEX格式,稀疏矩阵可用于更有效的处理。
将矩阵加载到R中:
library(Matrix)
matrix_dir = "/opt/sample345/outs/filtered_feature_bc_matrix/"
barcode.path <- paste0(matrix_dir, "barcodes.tsv.gz")
features.path <- paste0(matrix_dir, "features.tsv.gz")
matrix.path <- paste0(matrix_dir, "matrix.mtx.gz")
mat <- readMM(file = matrix.path)
feature.names = read.delim(features.path,
header = FALSE,
stringsAsFactors = FALSE)
barcode.names = read.delim(barcode.path,
header = FALSE,
stringsAsFactors = FALSE)
colnames(mat) = barcode.names$V1
rownames(mat) = feature.names$V1
将矩阵加载到Python
import csv
import gzip
import os
import scipy.io
matrix_dir = "/opt/sample345/outs/filtered_feature_bc_matrix"
mat = scipy.io.mmread(os.path.join(matrix_dir, "matrix.mtx.gz"))
features_path = os.path.join(matrix_dir, "features.tsv.gz")
feature_ids = [row[0] for row in csv.reader(gzip.open(features_path), delimiter="\t")]
gene_names = [row[1] for row in csv.reader(gzip.open(features_path), delimiter="\t")]
feature_types = [row[2] for row in csv.reader(gzip.open(features_path), delimiter="\t")]
barcodes_path = os.path.join(matrix_dir, "barcodes.tsv.gz")
barcodes = [row[0] for row in csv.reader(gzip.open(barcodes_path), delimiter="\t")]
转换为CSV格式
- 存储一般为稀疏性矩阵
- 但某些程序(例如Excel)仅支持密集矩阵格式。您可以
spaceranger mat2csv
命令使用来将特征条形码矩阵转换为密集CSV格式。 - 此命令有两个参数:
- 由Space Ranger生成的输入矩阵(H5文件或MEX目录)
- 密集CSV的输出路径。
例如,对在当前目录中名为sample123的pipestance:
# convert from MEX
$ spaceranger mat2csv sample123/outs/filtered_feature_bc_matrix sample123.csv
# or, convert from H5
$ spaceranger mat2csv sample123/outs/filtered_feature_bc_matrix.h5 sample123.csv
然后可以加载 sample123.csv 到Excel。
警告:密集文件可能非常大,如果您的计算机没有足够的内存, 可能导致Excel崩溃甚至mat2csv
失败
4. 图片:影像输出
管道输出包含一个名为spatial
的子目录,用于存储与影像相关的文件。这些文件包括以下内容:
- tissue_hires_image.png(最大2000个像素)和tissue_lowres_image.png(最大600个像素):原始全分辨率明场图像的缩采样版本
-
aligned_fiducials.jpg(尺寸与 tissue_hires_image.png相同):用于验证基准对齐是否成功
image.png - scalefactors_json.json:此文件包含以下字段:
- issue_hires_scalef:将原始全分辨率图像中的像素位置转换为
tissue_hires_image.png
中的像素位置的比例因子。 - tissue_lowres_scalef:将原始全分辨率图像中的像素位置转换为
tissue_lowres_image.png
中的像素位置的比例因子。 - fiducial_diameter_fullres:跨越原始全分辨率图像中基准点直径的像素数。
- spot_diameter_fullres:跨越原始全分辨率图像中组织点直径的像素数。
- issue_hires_scalef:将原始全分辨率图像中的像素位置转换为
$ cd /home/jdoe/runs/sample345/spatial/outs
$ cat scalefactors_json.json
{"spot_diameter_fullres": 89.45248682925602, "tissue_hires_scalef": 0.17699115, "fiducial_diameter_fullres": 144.5001710318751, "tissue_lowres_scalef": 0.053097345}
- detected_tissue_image.jpg: 此图片具有
tissue_hires_image.png
的尺寸,并显示以下内容
image.png - tissue_positions_list.txt:此文本文件包含一个表,其中包含与点相对应的行。它有4,992行,这是空间阵列中的点数。在文件中未指定名称的列对应于以下字段:
- barcode:与该点相关的条形码的顺序。
- in_tissue:二进制,指示该斑点位于组织的内部(1)还是外部(0)。
- array_row:点在阵列中的行坐标从0到77。该阵列有78行。
- array_col:阵列中点的列坐标。为了表示 the orange crate arrangement of the spots,此列索引对偶数行使用0到126的偶数,对奇数行使用1到127的奇数。注意,每行(偶数或奇数)有64个斑点。
- pxl_col_in_fullres:全分辨率图像中斑点中心的列像素坐标。
- pxl_row_in_fullres:全分辨率图像中斑点中心的行像素坐标。
$ cd /home/jdoe/runs/sample345/outs/spatial/
$ head -2 tissue_positions_list.txt
ACGCCTGACACGCGCT-1,0,0,0,910,1261
TACCGATCCAACACTT-1,0,1,1,1030,1329
5. BAM:Barcoded BAM
spaceranger
管道输出一个 indexed BAM文件,其中包含与基因组和转录组按位置进行排序比对的reads。与基因组中外显子连接处的转录组比对的reads在其 CIGAR string 中存在较大的缺口,即35M225N64M。
此BAM文件中的每个读取都附有Visium细胞和分子条形码信息。Space Ranger修改MAPQ值;请参见下面的 MM tag。以下假设基本熟悉BAM格式。在线可获取有关the SAM/BAM standard的更多详细信息。
- BAM Barcode Tags
每条read的Visium点和分子条形码信息存储为TAG
fields
image.png
spot barcodeCB
标签包含带短划线分隔符的后缀,后跟数字:
AGAATGGTCTGCAT-1
在当前的Space Ranger输出中,该数字将始终为(1)。
-
BAM Alignment Tags
以下标签也将出现在定位到(mapped to)基因组并与外显子重叠至少一个碱基对(overlapped an exon by at least one base pair)的reads上。一条read可以与多个转录物和基因比对,但是只有它被mapped到单个基因,才被可信地认为map到转录组上。
image.png
6.Molecule Info (H5)
分子信息: spaceranger管道会输出一个HDF5文件,该文件包含每个分子的分子信息,其中包含有效条形码和有效UMI并以高可信度比对到基因的信息。该HDF5文件包含与观察到的分子相对应的数据,以及有关用于分析的libraries,特征集和条形码列表的数据。
-
Per-Molecule Columns
image.png - Reference Columns
- Experiment Reference:在HDF5文件层次结构的顶层,
barcodes
和library_info
数据集提供有关此分析中包含的实验的信息:
image.png
- Experiment Reference:在HDF5文件层次结构的顶层,
- Observed Spot-Barcodes image.png
- HDF5文件层次结构
(root)
|
├─ barcode_idx
├─ barcode_info [HDF5 group]
│ ├─ genomes
│ └─ pass_filter
├─ barcodes
├─ count
├─ feature_idx
├─ features [HDF5 group]
│ ├─ _all_tag_keys
│ ├─ feature_type
│ ├─ genome
│ ├─ id
│ ├─ name
├─ gem_group
├─ library_idx
├─ library_info
├─ metrics [HDF5 group; see below]
└─ umi
- 2-bit Encoding
UMI序列采用2位编码,如下所示:
- 每对位编码一个核苷酸(0 =“ A”,1 =“ C”,2 =“ G”,3 =“ T”)。
- 最低有效字节(LSB)包含3'-most nucleotides.
请注意,spot-barcode sequences没有这种编码。它们以纯字符串形式存储在library_info
HDF5 Group 中。
- Metrics HDF5 Group
该metrics
组旨在供Space Ranger管道内部使用;用户应该使用Space Ranger 指标输出查看指标。
metrics组的属性包含存储为序列化Python对象(使用cPickle)的管道指标。
- Image Analysis Metrics
Suspect Alignment: 当基准对齐算法失败时,Metric为True。如果对齐过程报告了看起来有比较大的缩放,旋转或平移,则管道将发出警告,要求用户密切检查基准对齐的结果(请参见下图)。
image.png
PS:没有这样的警告并不能保证成功,因此用户还是得检查一下
- Gene Expression Metrics
Space Ranger管道以文本格式输出关键指标。
“ spaceranger count”指标定义:spaceranger count
管道输出metrics_summary.csv
,其中包含有关条形码和测序过程的许多关键指标。
image.png