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

单细胞转录组 —— 原始数据处理实战(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 seqkitseqkit 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 pyroequant_dir = 'simpleaf_brain/af_quant'
adata_sa = pyroe.load_fry(quant_dir)

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

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

import pyroequant_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.rhkb.cn/news/443349.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实现std::sort,replace,fill,accumulate,equal等函数

std::sort /// <summary>/// std::sort 是从小到大排列的/// </summary>/// <typeparam name"IteratorClass"></typeparam>/// <typeparam name"ComparingFunctions"></typeparam>/// <param name"itBegin&qu…

系统端口号被占用问题处理(WindowsLinux系统)

Windows 直接kill占用端口的进程 WinR 输入cmd 打开命令行窗口 1.查询本地已被占用的端口号&#xff1a; 下面以8080端口为例&#xff1a; netstat -aon|findstr "8080" 查看本地8080端口进程的PID 2.杀死"xxxx"端口号的进程 (下面的22868是 你查到…

java.lang.NoClassDefFoundError: kotlin/Result解决方案

问题 在控制窗口上虽然报错是找不到对应的class&#xff0c;但是呢在我们导入kotlin的后&#xff0c;还是报相同的异常&#xff0c;在网上查找了各种资料&#xff0c;都没有解决方案。 问题分析 在idea2021之后&#xff0c;kotlin都使用远程仓库&#xff08;kotlinx-coeouti…

多模态大语言模型(MLLM)-InstructBlip深度解读

前言 InstructBlip可以理解为Blip2的升级版&#xff0c;重点加强了图文对话的能力。 模型结构和Blip2没差别&#xff0c;主要在数据集收集、数据集配比、指令微调等方面下文章。 创新点 数据集收集&#xff1a; 将26个公开数据集转换为指令微调格式&#xff0c;并将它们归类…

鸿蒙开发(NEXT/API 12)【管理应用与Wear Engine服务的连接状态】手机侧应用开发

监测应用与Wear Engine服务的连接状态 华为运动健康App在后台停止服务&#xff08;如功耗过高&#xff09;&#xff0c;从而导致应用与Wear Engine服务的连接状态发生变化。对于类似这种不确定的断开情况&#xff0c;开发者可以通过本功能特性了解当前应用和Wear Engine的连接…

电池大师 2.3.9 | 专业电池管理,延长寿命优化性能

Battery Guru 显示电池使用情况信息&#xff0c;测量电池容量&#xff08;mAh&#xff09;&#xff0c;并通过有用技巧帮助用户改变充电习惯&#xff0c;延长电池寿命。支持显示电池健康状况&#xff0c;优化电池性能。 大小&#xff1a;9.6M 百度网盘&#xff1a;https://pan…

【SQL】换座位

目录 语法 需求 示例 分析 代码 语法 SELECT user_id, user_name, IF(user_age < 18, Minor, IF(user_age < 65, Adult, Senior)) AS age_group FROM users; 使用IF函数来根据user_age的值将用户分为不同的年龄组 在SQL中&#xff0c;IF语法主要用于在查询中根据条…

毕业设计项目-古典舞在线交流平台的设计与实现(源码/论文)

项目简介 基于springboot实现的&#xff0c;主要功能如下&#xff1a; 技术栈 后端框框&#xff1a;springboot/mybatis 前端框架&#xff1a;html/JavaScript/Css/vue/elementui 运行环境&#xff1a;JDK1.8/MySQL5.7/idea&#xff08;可选&#xff09;/Maven3&#xff08…

子弹生产线残次品检测系统源码分享

子弹生产线残次品检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

Golang | Leetcode Golang题解之第451题根据字符出现频率排序

题目&#xff1a; 题解&#xff1a; func frequencySort(s string) string {cnt : map[byte]int{}maxFreq : 0for i : range s {cnt[s[i]]maxFreq max(maxFreq, cnt[s[i]])}buckets : make([][]byte, maxFreq1)for ch, c : range cnt {buckets[c] append(buckets[c], ch)}an…

ATAM需求说明-系统架构师(七十六)

1体系结构权衡分析法ATAM(Architecture Trade Off Analyzer Method)是一种常见的结构权衡分析法&#xff0c;该框架主要关注系统的&#xff08;&#xff09;&#xff0c;针对性能、安全性、可用性和可修改性&#xff0c;在系统开发前进行分析、评价和这种。 A 需求说明 B 架构…

搭建企业级私有仓库harbor

华子目录 harbor简介实验环境准备下载软件包安装docker-cehosts解析 实验步骤配置https加密传输解压进入解压目录&#xff0c;修改文件配置启动harbor 测试客户端配置harbor本地加速器注意 通过docker compose管理harbor harbor简介 harbor是由wmware公司开源的企业级docker r…

uniapp自定义导航,全端兼容

我们在用uniapp 开发应用的时候&#xff0c;有的页面需要自定义导航&#xff0c; 1.如果普通的直接使用uni 扩展柜组件的 uni-nav-bar 也基本够用&#xff0c; 2.如果稍微带点自定义的这个值无法支持的&#xff0c;特别在小程序端&#xff0c;胶囊是会压住右边的按钮的 自定…

Debezium日常分享系列之:Debezium 3.0.0.Final发布

Debezium日常分享系列之&#xff1a;Debezium 3.0.0.Final发布 Debezium 核心的变化需要 Java 17基于Kafka 3.8 构建废弃的增量信号字段的删除每个表的详细指标 MariaDB连接器的更改版本 11.4.3 支持 MongoDB连接器的更改MongoDB sink connector MySQL连接器的改变MySQL 9MySQL…

九大排序之交换排序

1.前言 所谓交换&#xff0c;就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置&#xff0c;交换排序的特点是&#xff1a;将键值较大的记录向序列的尾部移动&#xff0c;键值较小的记录向序列的前部移动。 重点&#xff1a; 冒泡排序和快速排序 2.冒泡排…

【电子通识】TINA-TI 安装

TINA-TI是一个SPICE的模拟仿真程序&#xff0c;提供了 SPICE 所有的传统直流、瞬态和频域分析以及更多功能。 TINA 具有允许您按照希望的方式设置结果的格式。虚拟仪器允许选择输入波形、探针电路节点电压和波形。 下载链接&#xff1a;TINA-TI 模拟工具 | 德州仪器 TI.com.cn …

MAC备忘录空白解决方案

打开icloud->备忘录 取消勾选同步此MAC后再次勾选&#xff0c;然后点击完成即可。

【投稿优惠|稳定检索】2024 年信息学、网络与电子工程国际会议(INEE 2024)

2024 年信息学、网络与电子工程国际会议 2024 International Conference on Informatics, Networks, and Electronic Engineering 【1】大会信息 会议名称&#xff1a;2024 年信息学、网络与电子工程国际会议 会议简称&#xff1a;INEE 2024 大会时间&#xff1a;请查看官网 …

qt 3D编程

Qt 3D是一个用于构建交互式3D图形应用的库&#xff0c;它是Qt库的一 部分。Qt 3D提供了一组C和QMLAPI&#xff0c;帮助开发者快速构 建3D应用程序。 一、核心模块 Qt3DCore 功能&#xff1a;提供3D场景中的基本概念&#xff0c;如实体&#xff08;Entity&#xff09;、组件&…

Oracle 表空间异构传输

已经有了表空间的数据文件&#xff0c;和元数据dump文件&#xff0c;如何把这个表空间传输到异构表空间中&#xff1f; 查询异构传输平台信息&#xff1a; COLUMN PLATFORM_NAME FORMAT A40 SELECT PLATFORM_ID, PLATFORM_NAME, ENDIAN_FORMAT FROM V$TRANSPORTABLE_PLATFORM O…