单细胞转录组 —— kb-python 原始数据处理

news2024/11/19 8:26:15

单细胞转录组 —— kb-python 原始数据处理

前言

kallisto|bustools 是一种用于预处理 scRNA-seq 数据的工作流程。

数据预处理步骤包括:

  1. reads 与其来源细胞关联起来;
  2. 根据唯一分子标识符(UMI)对 reads 进行去重;
  3. reads 中生成基因或特征计数,以生成 细胞x基因 矩阵。

使用 kallisto|bustools 有以下几点优势

  • 生成与 细胞x基因细胞x转录本 等价的计数矩阵
  • 执行 RNA 速率分析和 snRNA-seq 分析
  • 10xinDropsDropseq 等多种技术的数据进行定量。
  • 为新技术和方案定制工作流程。
  • 处理特征条码数据,如 CITE-seqREAP-seqMULTI-seqClicktagsPerturb-seq
  • 生成 QC 报告
  • 速度飞快

使用

kb-python 是一个用于处理 scRNA 序列的 python 软件包,它封装了 kallisto|bustools 单细胞 RNA 分析流程。

可以使用 pip 安装

pip install kb-python

也可以使用 conda 安装

conda install -c bioconda kb-python

或者安装开发版

pip install git+https://github.com/pachterlab/kb_python

命令行输入 kb,输出类似如下信息

usage: kb [-h] [--list] <CMD> ...

kb_python 0.28.2

positional arguments:
  <CMD>
    info      Display package and citation information
    compile   Compile `kallisto` and `bustools` binaries from source
    ref       Build a kallisto index and transcript-to-gene mapping
    count     Generate count matrices from a set of single-cell FASTQ files

optional arguments:
  -h, --help  Show this help message and exit
  --list      Display list of supported single-cell technologies

主要包含 4 个子命令,我们主要使用后两个。

构建索引

可通过 ref 子命令,使用 kallisto 建立转录组索引。只需传入参考基因组和基因组注释文件即可。

重要参数如下

流程主要包含 4 种类型,默认是 standardRNA 速率分析用 nackite 主要用于 Feature Barcode 测序,如 10x Feature Barcode 技术可以同时分析基因表达和免疫受体序列(BCRTCR)。

也可以使用 custom 模式,定制自己的参考基因组索引。

定量

重要参数如下

kb-python 支持的单细胞技术可以使用下面的命令查看

kb --list

其中,后三列的数字代表索引位置信息:文件索引(0 表示 R1), 起始位置, 结束位置。如果为 None,说明整个文件都是。

例如,10XV2 表示 10xV2 版,barcodeUMI 都在 R1 中,前 16 位为 barcode 序列,后 10 位为 UMI 序列,R2 都是 cDNA 序列

实战

10x scRNA-seq

我们以昨天的数据为例,使用 kb-python 来进行原始数据的处理

创建参考基因组的索引,使用 standard 模式

kb ref -i mm10.standard.idx -g t2g.txt \
    -f1 cdna.fa -f2 intron.fa \
    --workflow standard \
    mm10.fa \
    mm10.refGene.gtf

定量分析,多个 FASTQ 文件要按照文件排序,同一个 lane 的文件要先 R1R2

kb count -i mm10.standard.idx \
    -g t2g.txt -x 10xv2 \
    -o output -t 2 --workflow standard \
    --h5ad --cellranger --filter bustools \
    GSM4812353_S1_L001_R1_001.fastq.gz \
    GSM4812353_S1_L001_R2_001.fastq.gz \
    ... \
    GSM4812353_S1_L002_R1_001.fastq.gz \
    GSM4812353_S1_L002_R2_001.fastq.gz

输出结果的结构大致如下

├── 10x_version2_whitelist.txt
├── counts_filtered
│   ├── adata.h5ad
│   ├── cells_x_genes.barcodes.txt
│   ├── cells_x_genes.genes.names.txt
│   ├── cells_x_genes.genes.txt
│   └── cells_x_genes.mtx
├── counts_unfiltered
│   ├── adata.h5ad
│   ├── cellranger
│   │   ├── barcodes.tsv
│   │   ├── genes.tsv
│   │   └── matrix.mtx
│   ├── cells_x_genes.barcodes.txt
│   ├── cells_x_genes.genes.names.txt
│   ├── cells_x_genes.genes.txt
│   └── cells_x_genes.mtx
├── filter_barcodes.txt
├── inspect.json
├── kb_info.json
├── matrix.ec
├── output.bus
├── output.filtered.bus
├── output.unfiltered.bus
├── run_info.json
└── transcripts.txt

可以使用 counts_filtered/adata.h5ad 作为下游分析的起点。

因为我们设置了 --cellranger 参数,所以输出目录中也有 cellranger 结构的输出结果。

不推荐使用 --report 输出报告,使用时报了很多错误。

10x snRNA-seq

我们以 10x 的测序数据 1k Brain Nuclei from an E18 Mouse 为例。

我们将生成两个矩阵:一个是剪接转录本矩阵,另一个是未剪接转录本矩阵,然后将它们相加得出核转录本总数。

首先,下载数据

wget https://caltech.box.com/shared/static/j337aflq9ublmwaripkepob41mr23216.txt -O checksums.txt
wget https://caltech.box.com/shared/static/2j8shgwmalzcjawuow51678a8yssvdef.gz -O nuclei_900_S1_L001_R1_001.fastq.gz
wget https://caltech.box.com/shared/static/k2yydqlz2jtckw1shk5h536mxn47nm9n.gz -O nuclei_900_S1_L001_R2_001.fastq.gz
wget https://caltech.box.com/shared/static/tlqdm0w3tvy8ogyktsz7ahggwurc6kkj.gz -O nuclei_900_S1_L002_R1_001.fastq.gz
wget https://caltech.box.com/shared/static/gqrvkqllr9d7zq4e3yfrng9kgfbejowe.gz -O nuclei_900_S1_L002_R2_001.fastq.gz

校验下载文件是否完整

md5sum -c checksums.txt --ignore-missing
# nuclei_900_S1_L001_R1_001.fastq.gz: 成功
# nuclei_900_S1_L001_R2_001.fastq.gz: 成功
# nuclei_900_S1_L002_R1_001.fastq.gz: 成功
# nuclei_900_S1_L002_R2_001.fastq.gz: 成功

下载参考基因组信息,如果已经下载过,可以直接使用本地文件

wget ftp://ftp.ensembl.org/pub/release-98/fasta/mus_musculus/dna/Mus_musculus.GRCm38.dna.primary_assembly.fa.gz
wget ftp://ftp.ensembl.org/pub/release-98/gtf/mus_musculus/Mus_musculus.GRCm38.98.gtf.gz

构建小鼠的 DNA 和内含子索引,使用 nac 模式,后续可以进行 RNA 速率分析

kb ref -i index.idx -g t2g.txt \
    -f1 cdna.fa -f2 intron.fa \
    -c1 cdna_t2c.txt -c2 intron_t2c.txt \
    --workflow nac \
    Mus_musculus.GRCm38.dna.primary_assembly.fa.gz \
    Mus_musculus.GRCm38.98.gtf.gz

定量分析

kb count -i index.idx \
    -g t2g.txt -c1 cdna_t2c.txt \
    -c2 intron_t2c.txt -x 10xv2 \
    -o output -t 2 --workflow nac --h5ad \
    nuclei_900_S1_L001_R1_001.fastq.gz \
    nuclei_900_S1_L001_R2_001.fastq.gz \
    nuclei_900_S1_L002_R1_001.fastq.gz \
    nuclei_900_S1_L002_R2_001.fastq.gz

10x Feature Barcode

我们使用 Kallisto Indexing and Tag Extraction (KITE) 流程对 10x Genomics pbmc_1k_protein_v3 特征条形码数据集进行预处理和分析。

在特征条形码芯片是建立在 scRNA-seq 的基础上,可以同时获得大量单个细胞中基因的表达量和细胞表面蛋白的表达情况,并将细胞数据记录为短 DNA 序列

KITE 处理流程会生成 错配图(Mismatch Map,其中包含实验中使用的所有特征条形码序列及其所有单碱基错配。

错配图用于生成转录本到基因的映射文件(.t2g)和 fasta文件,作为 kallisto 的输入。

使用 kallisto index 建立索引后,kallisto|bustools 就能有效地搜索测序数据,查找错配图中的序列。

下载数据
wget -q https://caltech.box.com/shared/static/asmj4nu90ydhsrk3pm7aaxu00cnnfige.txt -O checksums.txt
wget -q https://caltech.box.com/shared/static/mp2vr3p6dztdyatuag8ir3cektmrztg8.gz -O pbmc_1k_protein_v3_antibody_S2_L001_R1_001.fastq.gz
wget -q https://caltech.box.com/shared/static/f3payi1za7mn0jfai7vm10sy3yqwgpqh.gz -O pbmc_1k_protein_v3_antibody_S2_L001_R2_001.fastq.gz
wget -q https://caltech.box.com/shared/static/e112bbczh9o1rl6gfin36bqp0ga7uvdy.gz -O pbmc_1k_protein_v3_antibody_S2_L002_R1_001.fastq.gz
wget -q https://caltech.box.com/shared/static/3ve2axc8dr8v5nnrhmynrdgpqj6xg42k.gz -O pbmc_1k_protein_v3_antibody_S2_L002_R2_001.fastq.gz

检查数据的完整性

md5sum -c checksums.txt --ignore-missing
创建错配索引

kb 能够生成一个 FASTA 文件,其中包含所有汉明距离小于 2 的特征条形码变体,并创建这些序列的 kallisto 索引。

要做到这一点,我们首先需要准备一个 TSV 文件,其中第一列包含特征条形码序列,第二列包含特征条形码名称。

首先,我们下载 10x Genomics 提供的 feature reference文件。

wget -q http://cf.10xgenomics.com/samples/cell-exp/3.0.0/pbmc_1k_protein_v3/pbmc_1k_protein_v3_feature_ref.csv

使用 pandas 处理成 kb-python 接受的输入形式

import pandas as pd

df = pd.read_csv('pbmc_1k_protein_v3_feature_ref.csv')
df[['sequence', 'id']].to_csv('features.tsv', 
        index=None, header=None, sep='\t')

创建索引

kb ref -i mismatch.idx -f1 mismatch.fa -g t2g.txt --workflow kite features.tsv

定量

kb count --h5ad -i mismatch.idx \
    -g t2g.txt -x 10xv3 --workflow kite -t 8 \
    pbmc_1k_protein_v3_antibody_S2_L001_R1_001.fastq.gz \
    pbmc_1k_protein_v3_antibody_S2_L001_R2_001.fastq.gz \
    pbmc_1k_protein_v3_antibody_S2_L002_R1_001.fastq.gz \
    pbmc_1k_protein_v3_antibody_S2_L002_R2_001.fastq.gz

Drop-seq

数据集中 GSE178612 研究的是 FoxM1Rb 基因在小鼠乳腺癌中的相互作用。

我们选择其中一个样本 GSM5394388,下载其原始数据

prefetch SRR14872449

解压

fastq-dump SRR14872449/SRR14872449.sra --split-files --gzip -O SRR14872449

表达定量,使用之前构建好的小鼠的索引

kb count --h5ad -i mm10.standard.idx \
    -g t2g.txt -x DROPSEQ --workflow standard -t 8 \
    --h5ad --cellranger --filter bustools \
    SRR14872449/SRR14872449_1.fastq.gz \
    SRR14872449/SRR14872449_2.fastq.gz \

Indrop

GSE111672 数据集中包含 6 例原发性胰腺癌组织的单细胞 RNA 测序和空间转录组学,

我们随便选择一个样本 GSM3036909 下载原始数据

prefetch SRR6825055

解压

fastq-dump SRR6825055/SRR6825055.sra --split-files --gzip -O SRR6825055

其中 R1 长度为 35R2 长度为 51,是 Indrop-seqV2

不同版本之间的差别:

  • v1:原始版,其中 R2cDNA 序列,R1 为元数据(UMIbarcode)。
  • v2v1 的反转,R1R2 的内容互换
  • v32016 年夏季重新设计,需要手动解复用。R1cDNA 序列,R2 包含凝胶条形码的前半部分,R3 包含文库索引,R4 包含凝胶条形码的后半部分、UMI 和部分 polyA 尾部。

下载构建好的人类参考基因组索引

mkdir human
kb ref -d human \
    -i human/kb_ref.idx \
    -g human/t2g.txt

表达定量

kb count --h5ad -i human/kb_ref.idx \
    -g human/t2g.txt -x INDROPSV2 \
    --workflow standard -t 8 \
    --h5ad --cellranger --filter bustools \
    SRR6825055/SRR6825055_1.fastq.gz \
    SRR6825055/SRR6825055_2.fastq.gz \

SMART-seq2

我们从研究人类皮质球体内星形胶质细胞的成熟数据 GSE99951 中,下载 GSM2665701 样本进行分析

prefetch SRR5676730

解压

fastq-dump SRR5676730/SRR5676730.sra --split-files --gzip -O SRR5676730

表达定量,不支持 --filter 参数,同时必须加上 --parity 参数

kb count --h5ad -i human/kb_ref.idx \
    -g human/t2g.txt -x SMARTSEQ2 -t 8 \
    --parity paired --workflow standard \
    --h5ad --cellranger \
    SRR5676730/SRR5676730_1.fastq.gz \
    SRR5676730/SRR5676730_2.fastq.gz \

其他测序数据可以自行探索一下,前面几种用法基本涵盖了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2200122.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

西门子S7-200 SMART高速计数器指令向导

在 Micro/WIN SMART 中的命令菜单中选择 Tools&#xff08;工具&#xff09;> Wizards&#xff08;向导&#xff09;中选择 High Speed Counter&#xff08;高速计数器向导&#xff09; &#xff0c;也可以在项目树中选择 Wizards&#xff08;向导&#xff09;文件夹中的 Hi…

下载相应版本的PyTorch

1、前置条件 下载某个版本的Python&#xff0c;本文涉及的Python版本为3.10 2、查看该Python版本可以下载的whl文件格式 pip debug --verbose 从上图可以发现python3.10可以下载格式为cp310-cp310-win_amd64的whl文件 PyTorch各稳定版本下载链接&#xff1a;https://downloa…

GNN与Transformer创新结合!模型性能起飞!

近年来&#xff0c;图神经网络&#xff08;GNN&#xff09;和Transformer模型因其在处理复杂数据结构和序列依赖性方面的卓越表现而受到广泛关注。这种优势使得将GNN与Transformer结合成为图表示学习领域的一个新兴且充满潜力的研究方向。通过结合这两种模型&#xff0c;我们不…

软考下午题1-数据流图

问题一&#xff1a;求实体的名称 例题&#xff1a; 1.提问方式-如问题1 从子图(0层数据流图)找比较快 外部实体可以是 人、物体、系统 在子图中找到加工&#xff0c;与文章中加工文字相对应&#xff0c;继续读文章&#xff0c;可以找到实体 E1-巴士列表文件 E2-机械师 E3-会…

《深度学习》LSTM 长短期记忆网络 结构及原理解析

目录 一、关于LSTM网络 1、什么是LSTM网络 举例&#xff1a; 2、RNN网络的结构 3、Tanh双曲正切函数 二、LSTM网络结构 1、遗忘门 1&#xff09;功能 2&#xff09;步骤 2、输入门 1&#xff09;功能 2&#xff09;步骤 3、输出门 1&#xff09;功能 2&#xff09;步骤…

斯坦福 CS229 I 机器学习 I 构建大型语言模型 (LLMs)

1. Pretraining -> GPT3 1.1. Task & loss 1.1.1. 训练 LLMs 时的关键点 对于 LLMs 的训练来说&#xff0c;Architecture&#xff08;架构&#xff09;、Training algorithm/loss&#xff08;训练算法/损失函数&#xff09;、Data&#xff08;数据&#xff09;、Evalu…

3D看车如何实现?有哪些功能特点和优势?

3D看车是一种创新的汽车展示方式&#xff0c;它利用三维建模和虚拟现实技术&#xff0c;将汽车以更真实、更立体的形式呈现在消费者面前。 一、3D看车的实现方式 1、三维建模&#xff1a; 通过三维建模技术&#xff0c;按照1:1的比例还原汽车外观&#xff0c;包括车身线条、细…

uniapp学习(003-2 vue3学习 Part.2)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战&#xff0c;开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第15p-第p20的内容 文章目录 事件监听以及组件内置事件处理自定义模板快速创建uniapp条件渲染 v-if和v-elsev-e…

骨传导耳机哪个牌子好?五大选购妙计带你精准入手优质骨传导耳机!

随着骨传导耳机市场的蓬勃发展&#xff0c;此产品凭借优秀的佩戴体验以及可降低听力损伤等优点引起了广泛的关注。然而&#xff0c;随着热度提高&#xff0c;市面上开始出现了许多品牌&#xff0c;这些品牌实力技术各不相同&#xff0c;甚至其中还有一些劣质机型&#xff0c;这…

国内经典多模态大模型工作1——Qwen-VL系列(Qwen-VL、Qwen2-VL解读)

Qwen-VL 论文标题&#xff1a;《Qwen-VL: A Versatile Vision-Language Model for Understanding, Localization, Text Reading, and Beyond》 论文链接&#xff1a;https://arxiv.org/pdf/2308.12966.pdf 项目&#xff1a;https://github.com/QwenLM/Qwen-VL/tree/master 模…

如何构建某一行业的知识图谱

构建一个行业的知识图谱是一个系统而复杂的过程&#xff0c;它涉及到数据收集、处理、分析等多个环节。以下是构建行业知识图谱的基本步骤&#xff1a; 1. 需求分析&#xff1a; - 明确构建知识图谱的目的和应用场景&#xff0c;比如是用于辅助决策、市场分析、产品推荐等。…

【python机器学习】线性回归 拟合 欠拟合与过拟合 以及波士顿房价预估案例

文章目录 线性回归之波士顿房价预测案例 欠拟合与过拟合线性回归API 介绍:波士顿房价预测数据属性:机器学习代码实现 拟合 过拟合 欠拟合 模拟 及处理方法(正则化处理)导包定义函数表示欠拟合定义函数表示拟合定义函数表示过拟合 正则化处理过拟合L1正则化L2正则化 线性回归之波…

李沐 X动手学深度学习 数据操作+数据预处理 学习笔记(无代码,纯理论部分)

数据结构介绍 机器学习和神经网络最主要的的数据结构&#xff1a;N维数组0维数组&#xff1a;标量&#xff0c;eg:1.0&#xff08;是一个浮点数&#xff0c;可能表示一个类别&#xff09;1维数组&#xff1a;向量&#xff0c;eg:[1.0, 2.7, 3.4]&#xff08;特征向量&#xf…

Java中System类和RunTime类的Api

目录 System 类 1)out 2)err 3)in 4)currentTimeMillis() 5)nanoTime() 6)arraycopy(Object 要从里面复制东西的数组, int 要从里面复制东西数组的索引起始位置, Object 获得复制元素的数组, int 获得复制元素数组的起始索引, int 要复制东西的个数) 7)gc() 8)exit(int status)…

Miniconda 入门级使用教程

前言 Miniconda是一个更小的Anaconda发行版&#xff08;Anaconda是一个包含大量预装数据科学和机器学习库的Python发行版&#xff09;&#xff0c;它只包含conda包管理器和Python以及其必要的库。Miniconda的目的是提供一个更轻量级的选项来安装和运行conda环境&#xff0c;同…

动态轻量级线程池项目

动态线程池&#xff1a; 使用线程池ThreadPoolExecutor过程中你是否有以下痛点呢&#xff1f; ① 代码中创建了一个ThreadPoolExecutor&#xff0c;但是不知道参数设置多少比较合适。 ② 凭经验设置参数值&#xff0c;上线后发现需要调整&#xff0c;改代码重新发布服务&…

电脑缺失msvcr120.dll怎样修复,马上教你6种修复方法

在用电脑的时候&#xff0c;经常会碰到各种错误提示&#xff0c;比如“msvcr120.dll丢失”&#xff0c;导致的结果就是某些程序无法正常启动。那么&#xff0c;这个dll文件到底是啥&#xff0c;为什么会丢失&#xff0c;怎么解决呢&#xff1f;将通过这篇文章详细解释一下&…

Agent心理诊所上线!基于1.3K抑郁症问诊对话,上海交大团队搭建大模型对话Agent,可初诊抑郁症

心理健康问题是当今社会最大的挑战之一&#xff0c;根据 WHO 的世界心理健康报告&#xff0c;约有 2 亿 4,600 万人患有抑郁障碍&#xff0c;平均每 10 万人中就有 3,153 个案例&#xff0c;可以说&#xff0c;这是最常见的精神障碍之一。 然而&#xff0c;如今在心理健康方面…

终于有人把思科认证全部说清楚了

思科作为全球领先的网络设备供应商&#xff0c;其认证体系在全球范围内被广泛认可&#xff1b; 但是大部分了解的朋友都只知道CCNA、CCNP和CCIE&#xff0c;但对思科的整个系统不是很清楚。 随着Cisco产品线的扩大和市场份额的不断提升&#xff0c;Cisco认证产品从当初仅有的路…

Kubernetes的Pod调度:让你的应用像乘坐头等舱!

一、Kubernetes 中 Pod 调度的重要性 在 Kubernetes 的世界里&#xff0c;Pod 调度就像是一个繁忙的交通指挥官&#xff0c;负责把小车&#xff08;也就是我们的 Pod&#xff09;送到最合适的停车位&#xff08;节点&#xff09;。调度不仅关乎资源的合理利用&#xff0c;还关乎…