#barcode #sequencing #format-file #count #data #del #counted

bin+lib barcode-count

DEL、CRISPR-seq 和 Barcode-seq 的 NGS 条形码计数器

19 个版本

0.11.1 2023 年 9 月 26 日
0.11.0 2023 年 9 月 25 日
0.10.0 2023 年 9 月 24 日
0.9.8 2023 年 7 月 25 日
0.8.5 2021 年 10 月 31 日

科学 类别中排名第 73

Download history 9/week @ 2024-04-02

每月下载量 72

Apache-2.0

125KB
2K SLoC

NGS-Barcode-Count

适用于 DEL(DNA 编码库)、高通量 CRISPR 测序和条形码测序的快速且内存高效的 DNA 条形码计数器和解码器。包括错误处理和测序质量过滤器。适用于 DEL、高吞吐量 CRISPR 测序、条形码测序。如果包含条形码文件,程序将转换为条形码名称并纠正错误。如果包含随机条形码以压缩 PCR 重复,则不会计数这些重复。使用 8 个线程和约 2GB 的 RAM 使用量,解析超过 4 亿个测序读取仅需不到半小时。

对于 DEL 分析,创建了一个配套的 Python 包:DEL-Analysis

多线程和低资源使用。使用一个线程读取数据,其余线程处理数据,因此至少需要一个双线程机器。该程序不会在 RAM 中存储所有数据,而是顺序处理测序数据以保持内存高效。

错误处理默认为每个恒定区域和条形码的最大序列错误为 20%。这可以通过 CLI 参数进行更改。算法通过最佳匹配来修复任何测序的恒定区域或条形码。如果有两个或更多最佳匹配,则不计入。

还可以通过读取质量分数进行过滤。如果使用,则计算每个条形码的读取质量平均值,如果低于设置的阈值,则不计数读取。算法默认不进行过滤,除非调用 --min_quality 参数。请参阅 fastq 文档以了解读取质量分数。使用的分数是在进行 ASCII 转换和减去 33 后的结果。

灵感来自并采用了来自 decode 的某些想法

目录

安装

本地安装 Rust:此处说明

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

下载和编译 NGS-Barcode-Count

cargo install barcode-count

所需文件

目前支持 FASTQ、序列格式、样本条形码转换和构建块条形码转换。

Fastq 文件

接受未解压的 fastq 文件。
接受 gzipped fastq 文件,但如果程序在预期数量的测序读取之前停止,请解压并重新运行。

序列格式文件

序列格式文件应为一个按格式类型换行的文本文件。以下为支持的格式,其中'#'应替换为与条形码相对应的核苷酸数量:

序列类型 文件代码 所需/允许数量
常数 ATGCN 1个或更多
样本条形码 [#] 0-1
计数条形码 {#} 1个或更多
随机条形码 (#) 0-1

示例文件可以在这里找到:scheme.example.txt。由于算法使用正则表达式搜索方案,方案可以存在于序列读数的任何位置。

样本条形码文件

可选
sample_barcode_file 是一个以逗号分隔的文件,格式如下:

条形码 样本_ID
AGCATAC 样本名_1
AACTTAC 样本名_2

示例文件可以在这里找到:sample_barcode.example.csv

计数条形码转换文件

可选
barcode_file 是一个以逗号分隔的文件,格式如下:

条形码 条形码_ID 条形码编号
CAGAGAC 条形码名_1 1
TGATTGC 条形码名_2 1
ATGAAAT 条形码名_3 2
GCGCCAT 条形码名_4 2
GATAGCT 条形码名_5 3
TTAGCTA 条形码名_6 3

示例文件可以在这里找到:barcode.example.csv

其中第一列是DNA条形码,第二列是条形码ID,可以是DEL、CRISPR靶标ID等微笑字符串,但不能包含逗号。最后一列是条形码编号,作为整数。条形码编号与序列格式文件的顺序相同,从1开始。例如,如果有总共3个条形码,这种情况可能出现在DEL中,那么每一行中这个列将只有1、2或3,每个数字代表这三个条形码中的一个。对于CRISPR或条形码序列,其中可能只有一个条形码需要计数,这个列将全部为1。

运行

barcode-count --fastq <fastq_file> \
	--sample-barcodes <sample_barcodes_file> \
	--sequence-format <sequence_format_file> \
	--counted-barcodes <counted_barcodes_file> \
	--output-dir <output_dir> \
	--prefix <file_prefix> \
	--threads <num_of_threads> \
	--merge-output \
	--min-quality <min_barcode_read_quality>\
	--enrich
  • --counted-barcodes 是可选的。如果不使用,输出计数将使用DNA条形码进行计数,不对这些条形码进行错误处理。
  • --sample-barcodes 是可选的。如果不使用,如果包含在序列格式中,则使用DNA条形码。否则不使用标识符。
  • --output-dir 如果不使用,默认为当前目录。
  • --prefix 如果不使用,默认为当前日期。所有文件都以 _sample_name_counts.csv 结尾
  • --threads 如果不使用,默认为机器上的线程数。
  • --merge-output 标志用于合并输出csv文件,以便每个样本有一个列
  • --min-quality 将过滤掉任何条形码的平均质量得分低于此处设置的阈值的读取。默认为0,不进行过滤。
  • --enrich 参数标志将找到每个条形码的计数,如果有2个或更多计数条形码包含在内,并将文件输出。如果包含3个以上的双条形码,也会做同样的事情。这对于DEL很有用。

输出文件

每个样本名将得到一个文件,默认格式为 year-month-day_<sample_name>_counts.csv,以下格式(对于3个计数条形码):

条形码_1 条形码_2 条形码_3 计数
条形码_ID/DNA代码 条形码_ID/DNA代码 条形码_ID/DNA代码 #
条形码_ID/DNA代码 条形码_ID/DNA代码 条形码_ID/DNA代码 #

其中如果存在计数条形码转换文件,则使用条形码_ID,否则使用DNA代码。 # 表示计数数量

如果调用 --merge_output,则会创建一个额外的文件,格式如下(以3个样本为例):

条形码_1 条形码_2 条形码_3 Sample_1 Sample_2 Sample_3
条形码_ID/DNA代码 条形码_ID/DNA代码 条形码_ID/DNA代码 # # #
条形码_ID/DNA代码 条形码_ID/DNA代码 条形码_ID/DNA代码 # # #

还会在输出文件夹中写入或追加一个额外的barcode_stats.txt文件。这可以跟踪运行信息。

如果调用 --enrich 参数,则输出单重和双重条形码计数文件。

用法

DEL

按照本README中使用的所有示例文件进行设置。通常,您会使用3个'[]'来计数条形码,这代表格式文件中的3个构建块。

CRISPR-seq

与DEL相同的设置,但在格式文件中通常只计算一个'[]'条形码。因此,在计数条形码转换文件中,第三列将包含所有'1'。

Barcode-seq

如果目的是计数随机条形码并将其计数与这些随机条形码关联起来,例如在细胞池的bar-seq和谱系进化等情况下,那么在这种情况下,随机条形码就是计数条形码,并在格式文件中以'[]'表示。不会包含计数条形码转换文件。没有计数条形码转换文件,程序将输出计数随机条形码序列及其关联计数。之后,可以进行聚类或其他分析。

测试结果

在8核心i7-4790K CPU @ 4.00GHz和16GB RAM的机器上,这个算法能在大约半小时内解码超过4亿个测序读数。

未解压的fastq

Total sequences:             418,770,347
Correctly matched sequences: 257,807,865
Constant region mismatches:  151,955,695
Sample barcode mismatches:   3,324,481
Counted barcode mismatches:  5,682,306
Duplicates:                  0
Low quality barcodes:        0

Compute time: 0 hours, 23 minutes, 43.439 seconds

-WRITING COUNTS-

Total time: 0 hours, 24 minutes, 11.016 seconds

gzip压缩的fastq

Total sequences:             418,770,348
Correctly matched sequences: 257,807,865
Constant region mismatches:  151,955,695
Sample barcode mismatches:   3,324,481
Counted barcode mismatches:  5,682,306
Duplicates:                  0
Low quality barcodes:        0

Compute time: 0 hours, 23 minutes, 20.122 seconds

-WRITING COUNTS-

Total time: 0 hours, 23 minutes, 47.645 seconds

依赖项

~8.5MB
~143K SLoC