单细胞转录组 —— simpleaf 原始数据处理

news2024/11/18 19:51:56

单细胞转录组 —— 原始数据处理实战(simpleaf)

前言

Alevin-fry 是一个快速、准确且内存节约的单细胞和单核数据处理工具。

Simpleaf 是用 Rust 编写的程序,它提供了一个统一且简化的界面,用于通过 alevin-fry 流程处理一些最常见的单细胞数据。

准备

开始之前,我们先在终端创建一个 conda 环境,并安装所需的软件包。

Simpleaf 依赖于 alevin-frysalmonpyroe。它们都可以在 bioconda 上找到,并会在安装 simpleaf 时自动安装。

安装虚拟环境和软件

conda create -n af -y -c bioconda simpleaf
conda activate af

simpleaf 需要环境变量 ALEVIN_FRY_HOME 来存储配置和数据

export ALEVIN_FRY_HOME=$(dirname $(which simpleaf))

使用 set-paths 命令查找所需工具的路径,并在 ALEVIN_FRY_HOME 文件夹中写入一个配置 JSON 文件

simpleaf set-paths

构建索引

索引命令有两种输入形式:

  • 将参考基因组 FASTAGTF 作为输入,然后使用 roers(自带的工具,无需单独安装)spliced+intronicsplici)参考或 spliced+unsplicedspliceu)参考
  • 将单个参考序列文件(即 FASTA)作为输入(直接参考模式)。

在扩展参考的模式下,构建完成扩展的参考之后,将使用 piscem buildsalmon index 命令(可以自选)对生成的参考进行索引,并在索引目录中存储一个包含 3 列的转录本到基因的文件(t2g_3col.tsv),以供后续使用。

输出目录将包含 refindex 子目录,前者包含从提供的基因组和 GTF 中提取的 splici 参考,后者包含在此参考基础上构建的索引。

在直接参考的模式下,提供的 fasta 文件(使用 ——ref-seq 参数)将直接提供给 piscemsalmon 来构建索引。输出目录将包含一个索引子目录,其中包含基于此参考文件构建的索引。

具体参数可以参考如下

下载参考基因组信息,例如

wget http://ftp.ensembl.org/pub/release-98/fasta/homo_sapiens/dna/Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz
wget http://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_32/gencode.v32.primary_assembly.annotation.gtf.gz

可以用我们之前已经下载过的,不要重复下载。

注意simpleaf 要求 FASTA 文件中的碱基都为大写,如果你下载的版本不是,可以使用 seqkit 工具进行装换。例如

conda install -c bioconda seqkit

seqkit seq -u genome/hg19.fa > genome/hg19_upper.fa

构建参考基因组的索引,默认使用 piscem 构建索引,但是后面在比对时容易出现问题,所以使用 salmon 来比对。

使用 --no-piscem 来禁用 piscem

simpleaf index \
    -o simpleaf_hg19 \
    -f /path/to/genome/hg19.fa \
    -g /path/to/annotation/hg19.refGene.gtf \
    -r 90 --no-piscem \
    -t 8

在输出目录 simpleaf_hg19 中,ref 文件夹包含 splici 参考;index 文件夹包含基于 splici 参考构建的 salmon 索引。

表达定量

使用 quant 可以进行细胞条形码校正、UMI 解析并生成计数矩阵。其输入可以是

  • 索引、reads 和其他实验信息,如 UMIbarcode 位置
  • 包含比对结果和有关实验信息的目录

然后运行 alevin-fry 流程的所有相关步骤。

从头开始处理一个新数据集时,你应该选择第一种方式(需要提供 --index--reads1--reads2 参数)。如果 --reads1--reads2 参数有多个文件,必须用逗号(,)分隔。

另一方面,如果您已经进行了定量分析,或者由于其他原因已经对读数进行了比对,并生成了 RAD 文件,则可以使用 --map-dir 参数直接从比对结果启动后续分析。

后一种方法便于测试不同的定量方法(例如不同的过滤选项或 UMI 解析策略)。主要的参数包括

关于 --chemistry 参数

--chemistry 选项可以是描述特定化学成分的字符串,也可以是描述条形码几何形状、UMI 和可比对读取的字符串。

例如,字符串 10xv210xv3 将分别应用 10x chromium v2v3 协议的适当设置。

不过,如果您要使用的不是程序内预注册选项,也可以提供一般形式,用于表述序列状态。例如 10xv2 可以表示为

1{b[16]u[10]x:}2{r:}

其中 1 表示 read1 文件,花括号内的参数用于描述 read1b16 表示 1-16 位的碱基是 barcode 序列,u[10] 表示第 17-26 位的碱基是 UMI 序列,x: 表示后面的所有序列将会被丢弃;

类似地,2 则表示 read2 文件,r: 表示整条序列都是 cDNA 序列。

所以 10xv3 也可以表示为 "1{b[16]u[12]x:}2{r:}"

序列标识有可能出现重复,在这种情况下,它们将被提取并连接在一起。例如,1{b[16]u[12]b[4]x:} 表示我们应提取 1-16 位和 29-32 位的碱基,并将它们连接起来以获得完整的条形码。

你可以将经常使用的几种自定义字符添加到 ALEVIN_FRY_HOME 目录中的 custom_chemistries.json 文件中。

例如,将下面的内容放入该文件后,您就可以向 simpleaf quant 命令传递 --chemistry flarb,它就会将 reads 解释为具有指定的形式。

{
  "flarb" : "1{b[16]u[12]x:}2{r:}"
}

实战

10x scRNA-seq

我们从 10x Genomics 公司下载的人类脑肿瘤数据集 Brain_Tumor_3p_LT_fastqs。

wget https://cf.10xgenomics.com/samples/cell-exp/6.0.0/Brain_Tumor_3p_LT/Brain_Tumor_3p_LT_fastqs.tar

解压数据

tar -xvf Brain_Tumor_3p_LT_fastqs.tar

表达定量分析

# 搜索 FASTQ 文件,并使用 , 连接多个文件
reads1="$(find -L Brain_Tumor_3p_LT_fastqs -name "*_R1_*" -type f | sort | awk -v OFS=, '{$1=$1;print}' | paste -sd,)"
reads2="$(find -L Brain_Tumor_3p_LT_fastqs -name "*_R2_*" -type f | sort | awk -v OFS=, '{$1=$1;print}' | paste -sd,)"

simpleaf quant \
    -c 10xv3 -t 8 \
    -1 $reads1 -2 $reads2\
    -i simpleaf_hg19/index \
    -u 3M-february-2018.txt \ # 10xv3 barcode
    -r cr-like \
    -m simpleaf_hg19/index/t2g_3col.tsv \
    -o simpleaf_brain

运行这些命令后,可在 ·simpleaf_brain/af_quant/alevin 文件夹中找到定量信息。

该目录下有三个文件:

  • quants_mat.mtx:计数矩阵
  • quants_mat_cols.txt:矩阵每列的基因名称
  • quants_mat_rows.txt,矩阵每行经过校正、过滤的细胞条形码

值得注意的是,alevin-fry 是在 USA-mode(未剪接变体(U)、剪接变体(S)和剪接模糊变体(A))下运行的,会对每个基因的剪接和未剪接状态都进行定量分析,生成的 quants_mat_cols.txt 文件的行数等于注释基因数的 3

Drop-seq

kb-python 教程一样,我们使用的数据集是 GSE178612,用于研究 FoxM1Rb 基因在小鼠乳腺癌中的相互作用。

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

prefetch SRR14872449

解压

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

构建小鼠的索引

simpleaf index \
    -o simpleaf_mm10 \
    -f /path/to/genome/mm10.fa \
    -g /path/to/annotation/mm10.refGene.gtf \
    -r 90 --no-piscem \
    -t 8

定量分析,使用 -k 参数,利用拐点来矫正 barcode,禁用 piscem

simpleaf quant \
    -c "1{b[12]u[8]x:}2{r:}" -t 8 \
    -1 SRR14872449/SRR14872449_1.fastq.gz \
    -2 SRR14872449/SRR14872449_2.fastq.gz \
    -i simpleaf_mm10/index \
    # -u 3M-february-2018.txt \ 不需要
    -r cr-like -k --no-piscem \
    -m simpleaf_mm10/index/t2g_3col.tsv \
    -o simpleaf_drop

Indrop

kb-python 教程一样,使用包含 6 例原发性胰腺癌组织的单细胞 RNA 测序和空间转录组学 GSE111672 数据集

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

prefetch SRR6825055

解压

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

表达定量,其中 barcode 需要自己下载合并,barcodeUMI 组成需要自己构建字符串

simpleaf quant \
    -c "1{b[12]u[8]x:}2{r:}" -t 8 \
    -1 SRR6825055/SRR6825055_1.fastq.gz \
    -2 SRR6825055/SRR6825055_2.fastq.gz \
    -i simpleaf_hg19/index \
    # -u indrop_barcode.txt \ 
    -r cr-like -k --no-piscem \
    -m simpleaf_hg19/index/t2g_3col.tsv \
    -o simpleaf_indrop

因为 indropgel_barcode1_list.txt 文件长度不一,会有问题。所以在这里我们使用 -k 参数,利用拐点的方式矫正 barcode

读取结果

Python

我们可以使用 pyroe 中的 load_fry 函数将计数矩阵作为 AnnData 对象加载到 Python 中。

import pyroe

quant_dir = 'simpleaf_brain/af_quant'
adata_sa = pyroe.load_fry(quant_dir)

默认情况下,Anndata 对象的 X 层加载为每个基因的剪接计数和模糊计数之和。不过,最近的工作Pool et.al, 2022 研究表明,即使在 scRNA-seq 数据中加入内含子计数,也可能会提高灵敏度并有利于下游分析。

虽然利用这一信息的最佳方法仍在研究之中,但由于 alevin-fry 会自动量化每个样本中的剪接、非剪接和模糊读数,因此包含每个基因总计数的计数矩阵可通过以下方式简单获得:

import pyroe

quant_dir = 'simpleaf_brain/af_quant'
adata_usa = pyroe.load_fry(quant_dir, output_format={'X' : ['U','S','A']})

R

R 中,我们可以使用 fishpond 包中类似的 loadFry 函数。

首先,安装包

if (!require("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install("fishpond")

导入包并读取数据

library(fishpond)

loadFry(fryDir = "simpleaf_brain/af_quant")

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

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

相关文章

软件设计师——系统基础开发

📔个人主页📚:秋邱-CSDN博客☀️专属专栏✨:软考——软件设计师🏅往期回顾🏆:软件设计师——信息安全🌟其他专栏🌟:C语言_秋邱 ​ 一、软件工程概述 1.1、考…

【Linux】man手册安装使用

目录 man(manual,手册) 手册安装: 章节区分: 指令参数: 使用场景: 手册内容列表: 手册查看快捷键: 实例: 仍致谢:Linux常用命令大全(手册) – 真正好用的Linux命令在线查询网站 提供的命令查询 在开头先提醒一下:在 man 手册中退出的方法很简单…

数字IC/FPGA AMBA总线 (内容参考B站UP主数字逻辑君)

1、 串行总线 SPI IIC UART Fsmc (串行总线本文不再赘述,可以参考作者其他文章) 总线简介: AMBA常用的系统总线:AHB,ASB,APB,AXI总线,一个Soc和外部的外设不可能每…

zigbee学习

24.10.7学习目录 一.简介1.分层2.zstack通信 一.简介 其是一种新兴的短距离无线通信技术,用于传感控制应用; 特性: 低功耗,比wifi蓝牙功耗更低;低成本;低速率;近距离;短时延&…

老外发微信时说“I‘ll ping you”是什么意思?发微信怎么用英语说柯桥学英语到哪里?

“发信息”还可以怎么说? 其实很简单,message做动词时,可以直接表达:发信息 ▼ 🌰举个例子 I messaged him yesterday but havent had a reply. 昨天我给他发了短信,但没有回音。 我们现在常说的“发信…

使用Python批量修改文件修改日期为随机的6到8月份

使用Python批量修改文件修改日期为随机的6到8月份 每当雪花飘起的时候,总有一股抹不去的情节,会想起儿时雪天的记忆,虽然模糊但也清晰。那时每年的冬季很冷,但依然喜欢飘雪的日子,看着满天迷蒙飘舞的雪花总有想不完的心…

生成树实验

1 生成树关键点, 第一树根,第二在每个非根桥找root端口 第三 在每个物理片段找指定网桥,第四指定网桥对应的端口就是指定端口 bpdu 比较的方式 root 桥,到root 桥的路径开销,指定桥,指定端口&#x…

双登股份再战IPO:数据打架,实控人杨善基千万元股权激励儿子

撰稿|行星 来源|贝多财经 近日,双登集团股份有限公司(下称“双登股份”)递交招股书,准备在港交所主板上市,中金公司、建银国际、华泰国际为其联席保荐人。 贝多财经了解到,这并非双登股份首次向资本市场…

谷歌AI大模型Gemini API快速入门及LangChain调用视频教程

1. 谷歌Gemini API KEY获取及AI Studio使用 要使用谷歌Gemini API,首先需要获取API密钥。以下是获取API密钥的步骤: 访问Google AI Studio: 打开浏览器,访问Google AI Studio。使用Google账号登录,若没有账号&#xf…

体制内的必须要知道的“人情世故”及职场礼仪

最近,一位新来的小姑娘在参加活动的时候给外来领导带路,结果到跟前时,没有及时退让,夹在了自己领导与外来领导之间,妨碍了两位领导握手,下来后被一顿狠批。这其实是新人不太懂职场礼仪导致的,笔…

OpenCV库模块解析

1.OpenCV库每个模块解析 2.OpenCV的常用函数 它为计算机视觉应用程序提供了一个通用的基础设施,并加速了在商业产品中使用机器感知。作为BSD许可的产品,OpenCV使企业可以很容易地利用和修改代码。该库拥有超过2500个优化算法,其中包括经典和最…

大数据-158 Apache Kylin 安装配置详解 集群模式启动

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

无线麦克风什么牌子的音质效果好?选购中必须警惕劣质产品

在音频设备不断推陈出新、日益丰富多样的今天,无线领夹麦克风以其独有的优点崭露头角。它的设计非常精巧,佩戴起来既舒适又方便,并且在各种不同的环境下都能保证音质稳定以及传输效果良好。 无论是在户外进行拍摄、室内开展直播,…

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

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战,开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第21p-第p25的内容 文章目录 双向绑定的实现原理例子 计算属性例子1双向绑定格式改成计算属性 例子2 watchwatc…

STM32 -- USB通信 ( 虚拟串口)

本篇操作: 通过CubeMX Keil,配置STM32作为USB设备端,与电脑进行通信(CDC);通用带USB功能的 STM32 芯片 (如F1、F4等,系统时钟配置不同,代码通用)。 目录 一、 STM32内…

高质量带货短视频素材来源推荐

在抖音带货时,寻找高质量视频素材至关重要。今天,我为大家分享五个可以下载高清无水印带货短视频素材的网站,帮助你轻松获取灵感和素材! 蛙学网 蛙学网作为国内领先的短视频素材平台,提供多种类的带货短视频素材。无论…

[QT GUI Tips] Qt creator + PySide6 如何让图像控件的尺寸变化和窗口一致

前言:【这是个AI不会回答的问题】 Qt Creator 新的版本又发出了,Pyside6 有很多新功能。但是,一些传统的方法要被淘汰了。 一个经典的例子是: 我有个一个图像要显示在Form里面的图像控件上,OK, 我现在拖…

操作系统-系统调用

应用程序调用printf(),会触发系统调用write() 1、概念 操作系统服务的编程接口,通常由高级语言编写(C/C),程序访问通常是通过高层次的API接口而不是直接进行系统调用。 2、三种最常用的应用程序编程接口(API&#xf…

从零开始:网页在线制作入门指南

如果你对网页在线制作感兴趣,想学习如何从零开始创建一个网页,这个教程将带你了解基础步骤、所需工具以及如何将设计交付给开发人员的完整过程。接下来,让我们开始吧! 一、 明确目标群体与网站用途 在启动网页制作之前&#xff…

【UE】简单介绍“Extra Win Function”插件的功能

“Extra Win Function”插件包含32个C类封住成的蓝图节点供用户使用,下面简单介绍19个可能常用的节点的功能。 1. “Is Internet Available” 检查是否可接入互联网 2. “Get Device Platform” 获取设备平台名称 3. “Get Android Device RAMSize” 获取RAM 大小 …