1. ART 是什么
ART,全称通常指 Artificial Read Transcripter,是一个用于模拟二代或三代测序 reads 的工具包。
它的核心作用是:
输入参考序列 FASTA ↓按照指定测序平台、read length、覆盖度、fragment size、错误模型 ↓生成模拟 FASTQ readsART 常用于:
- 模拟 Illumina / 454 / SOLiD reads
- 构建算法 benchmark 数据
- 测试 read mapping 流程
- 测试 SNP / indel / SV caller
- 测试自定义变异检测算法
- 模拟不同测序深度下的检测能力
- 模拟不同 VAF 条件下的突变检出能力
需要注意:
ART 不是突变生成器。
它不会自动生成 SNP、indel、SV、DSB 修复结果、易位、倒位、L1 插入等事件。
这些结构变化需要提前构造到输入 FASTA 中,ART 只负责从这些序列上模拟 reads。
2. ART 在模拟流程中的位置
一个标准 benchmark 流程通常是:
reference genome ↓人为构造变异 / 使用 simulator 构造 alt genome ↓得到 mutated genome / alt genome / junction sequence ↓ART 从这些序列上生成 FASTQ reads ↓reads 比对回 reference genome ↓运行 caller / 自己的算法 ↓与 truth set 比较例如:
原始参考基因组 ↓引入 NHEJ insertion / MMEJ deletion / BND translocation ↓生成 alt.fa ↓ART 生成 alt reads ↓bowtie2 / bwa 比对回原始 reference ↓Manta / Delly / Lumpy / 自己的算法检测因此:
ART 负责:模拟测序 reads不负责:生成生物学变异事件3. ART 支持的平台
ART 包含多个程序:
art_illuminaart_454art_SOLiD其中最常用的是:
art_illumina因为大多数短读长测序数据都是 Illumina paired-end reads。
4. 安装 ART
4.1 使用 conda 安装
推荐使用 conda / mamba 安装:
conda install -c conda-forge -c bioconda art或者:
mamba install -c conda-forge -c bioconda art检查是否安装成功:
which art_illuminaart_illumina如果能看到 help / usage 信息,说明安装成功。
5. ART 输入和输出
5.1 输入文件
ART 的主要输入是 FASTA 文件:
reference.faalt.fatarget_regions.fajunction.faFASTA 示例:
>chr_mockACTGACTGACTGACTGACTGACTGACTGACTG可以输入:
1. 完整基因组 FASTA2. 某几条染色体 FASTA3. 小型 mock genome FASTA4. target regions FASTA5. junction sequence FASTA6. mutated genome FASTA5.2 输出文件
以 Illumina paired-end 为例:
art_illumina \ -ss HS25 \ -p \ -sam \ -na \ -i reference.fa \ -l 150 \ -f 30 \ -m 350 \ -s 50 \ -o sim/sample_可能生成:
sample_1.fqsample_2.fqsample_.sam含义:
sample_1.fq R1 readssample_2.fq R2 readssample_.sam ART 生成 reads 时相对于输入 FASTA 的模拟比对结果注意:
如果输入的是 alt.fa,则 ART 输出的 SAM 坐标是相对于 alt.fa 的,不是相对于原始 reference 的。
实际做 caller benchmark 时,通常应该把 ART 生成的 FASTQ 重新比对回原始 reference。
6. art_illumina 常用参数
6.1 核心参数
| 参数 | 含义 |
|---|---|
-i | 输入 FASTA 文件 |
-o | 输出文件前缀 |
-l | read length |
-f | fold coverage,模拟覆盖度 |
-c | 指定 reads 或 read pairs 数量 |
-p | paired-end 模式 |
-m | paired-end fragment length 均值 |
-s | paired-end fragment length 标准差 |
-ss | Illumina 测序平台 profile |
-sam | 输出 SAM 文件 |
-na | 不输出 ALN 文件 |
-rs | random seed,固定随机种子 |
-mp | mate-pair 模式 |
-amp | amplicon 模式 |
7. -ss 测序平台 profile
-ss 用来指定 Illumina 平台的质量分布模型。
常见值:
| 参数值 | 平台 |
|---|---|
GA1 | Genome Analyzer I |
GA2 | Genome Analyzer II |
HS10 | HiSeq 1000 |
HS20 | HiSeq 2000 |
HS25 | HiSeq 2500 |
MS | MiSeq |
常用选择:
-ss HS25对于 150 bp paired-end reads,通常可以先用 HS25。
8. Single-end reads 模拟
8.1 基本命令
art_illumina \ -ss HS25 \ -i reference.fa \ -l 150 \ -f 30 \ -rs 42 \ -o sim/single_end_参数解释:
-ss HS25 使用 HiSeq 2500 profile-i reference.fa 输入 FASTA-l 150 read length = 150 bp-f 30 覆盖度 = 30x-rs 42 固定随机种子-o 输出前缀输出:
single_end_.fq如果加上 -sam:
art_illumina \ -ss HS25 \ -sam \ -na \ -i reference.fa \ -l 150 \ -f 30 \ -rs 42 \ -o sim/single_end_输出:
single_end_.fqsingle_end_.sam9. Paired-end reads 模拟
9.1 基本命令
art_illumina \ -ss HS25 \ -p \ -sam \ -na \ -i reference.fa \ -l 150 \ -f 30 \ -m 350 \ -s 50 \ -rs 42 \ -o sim/paired_end_参数解释:
-p paired-end mode-l 150 read length = 150 bp-f 30 coverage = 30x-m 350 mean fragment length = 350 bp-s 50 fragment length standard deviation = 50 bp-rs 42 random seed输出:
paired_end_1.fqpaired_end_2.fqpaired_end_.sam10. 覆盖度 -f 的含义
-f 表示 fold coverage。
例如:
-f 30表示模拟约 30x 覆盖度。
paired-end 覆盖度近似计算公式:
coverage ≈ read_pairs × 2 × read_length / genome_length例如:
genome length = 100,000 bpread length = 150 bpread pairs = 10,000
coverage ≈ 10,000 × 2 × 150 / 100,000 = 30x所以对于 100 kb genome,150 bp paired-end,10,000 对 reads 大约就是 30x。
11. 使用 -c 指定 read pairs 数量
-c 可以直接指定 reads 或 read pairs 的数量。
paired-end 示例:
art_illumina \ -ss HS25 \ -p \ -sam \ -na \ -i reference.fa \ -l 150 \ -c 10000 \ -m 350 \ -s 50 \ -rs 42 \ -o sim/sample_注意:
-f 和 -c 不应该同时使用通常:
-f 适合按覆盖度模拟-c 适合精确控制 reads 数量12. -m 和 -s 的含义
-m 是 fragment length 的均值。
-s 是 fragment length 的标准差。
例如:
-m 350 -s 50表示 DNA fragment size 大多数集中在 350 bp 左右。
注意:
这里的 fragment length 不是插入突变长度,而是测序文库中 DNA 片段的长度。
对于 150 bp paired-end WGS:
read length: 150 bpmean fragment length: 300–500 bpstandard deviation: 30–100 bp常用:
-m 350 -s 50对于 CUT&Tag-like 或 target-enriched 数据,可以考虑:
-m 250 -s 80具体最好参考真实数据的 fragment size distribution。
13. 固定随机种子 -rs
-rs 用于设置 random seed。
例如:
-rs 42优点:
1. 结果可复现2. debug 更方便3. 多次运行不会因为随机性产生不同结果建议 benchmark 时一定加上 -rs。
14. 输出 SAM 的作用
加上:
-samART 会输出 SAM 文件。
例如:
art_illumina \ -ss HS25 \ -p \ -sam \ -na \ -i alt.fa \ -l 150 \ -f 30 \ -m 350 \ -s 50 \ -rs 42 \ -o sim/alt_输出:
alt_1.fqalt_2.fqalt_.samSAM 用途:
1. 检查 reads 来源2. 检查模拟覆盖度3. 检查 fragment size4. 检查 reads 是否覆盖目标 junction但是要注意:
ART 的 SAM 坐标是相对于输入 FASTA 的如果输入是 alt.fa,SAM 坐标就是 alt.fa 坐标。
实际变异检测时,应该重新比对 FASTQ 到原始 reference。
15. 常规 WGS-like 数据模拟
15.1 模拟 control 样本
mkdir -p sim/control
art_illumina \ -ss HS25 \ -p \ -sam \ -na \ -i ref/control.fa \ -l 150 \ -f 30 \ -m 350 \ -s 50 \ -rs 1001 \ -o sim/control/control_15.2 模拟 treated / tumor / alt 样本
mkdir -p sim/treated
art_illumina \ -ss HS25 \ -p \ -sam \ -na \ -i ref/treated_alt.fa \ -l 150 \ -f 30 \ -m 350 \ -s 50 \ -rs 1002 \ -o sim/treated/treated_15.3 比对回原始 reference
mkdir -p bam logs
bowtie2 \ -x ref/bowtie2/reference \ -1 sim/control/control_1.fq \ -2 sim/control/control_2.fq \ -p 8 \ 2> logs/control.bowtie2.log \| samtools sort -@ 8 -o bam/control.sorted.bam
samtools index bam/control.sorted.bambowtie2 \ -x ref/bowtie2/reference \ -1 sim/treated/treated_1.fq \ -2 sim/treated/treated_2.fq \ -p 8 \ 2> logs/treated.bowtie2.log \| samtools sort -@ 8 -o bam/treated.sorted.bam
samtools index bam/treated.sorted.bam16. 模拟不同 VAF
ART 本身没有直接的 --vaf 参数。
如果想模拟 VAF,需要分别从 reference allele 和 alt allele 生成 reads,然后混合。
16.1 模拟 50% VAF
假设总深度 30x,可以设置:
reference allele: 15xalternate allele: 15x命令:
mkdir -p sim/vaf50art_illumina \ -ss HS25 \ -p \ -na \ -i ref/reference.fa \ -l 150 \ -f 15 \ -m 350 \ -s 50 \ -rs 1 \ -o sim/vaf50/ref_art_illumina \ -ss HS25 \ -p \ -na \ -i ref/alt.fa \ -l 150 \ -f 15 \ -m 350 \ -s 50 \ -rs 2 \ -o sim/vaf50/alt_混合:
cat sim/vaf50/ref_1.fq sim/vaf50/alt_1.fq > sim/vaf50/sample_1.fqcat sim/vaf50/ref_2.fq sim/vaf50/alt_2.fq > sim/vaf50/sample_2.fq近似 VAF:
15 / (15 + 15) = 50%16.2 模拟 30% VAF
总深度 30x:
reference allele: 21xalternate allele: 9x9 / (21 + 9) = 30%16.3 模拟 15% VAF
总深度 30x:
reference allele: 25.5xalternate allele: 4.5x实际命令中可以近似为:
reference allele: 25xalternate allele: 5x近似 VAF:
5 / (25 + 5) = 16.7%如果想更精确,可以用 -c 控制 read pairs 数量。
17. 使用 -c 精确模拟 VAF
假设:
genome length = 100,000 bpread length = 150 bptotal depth = 30x总 read pairs:
read_pairs = coverage × genome_length / (2 × read_length) = 30 × 100000 / 300 = 10000如果 VAF = 30%:
alt read pairs = 10000 × 0.3 = 3000ref read pairs = 10000 × 0.7 = 7000命令:
art_illumina \ -ss HS25 \ -p \ -na \ -i ref/reference.fa \ -l 150 \ -c 7000 \ -m 350 \ -s 50 \ -rs 1 \ -o sim/vaf30/ref_art_illumina \ -ss HS25 \ -p \ -na \ -i ref/alt.fa \ -l 150 \ -c 3000 \ -m 350 \ -s 50 \ -rs 2 \ -o sim/vaf30/alt_混合:
cat sim/vaf30/ref_1.fq sim/vaf30/alt_1.fq > sim/vaf30/sample_1.fqcat sim/vaf30/ref_2.fq sim/vaf30/alt_2.fq > sim/vaf30/sample_2.fq18. 模拟 target-enriched / CUT&Tag-like 数据
ART 默认模拟的是 WGS-like reads。
如果输入完整 genome,输出就类似 WGS。
如果要模拟富集型数据,可以只从目标区域生成 reads。
18.1 准备 target BED
示例:
chr1 1000000 1002000chr1 3000000 3002500chr2 5000000 500300018.2 给 target region 加 flank
bedtools slop \ -i targets.bed \ -g genome.sizes \ -b 1000 \> targets.flank1k.bed18.3 提取 target FASTA
bedtools getfasta \ -fi reference.fa \ -bed targets.flank1k.bed \ -fo targets.flank1k.fa18.4 从 target FASTA 生成 reads
mkdir -p sim/enriched
art_illumina \ -ss HS25 \ -p \ -sam \ -na \ -i targets.flank1k.fa \ -l 150 \ -f 100 \ -m 250 \ -s 80 \ -rs 42 \ -o sim/enriched/target_这样生成的 reads 主要来自目标区域。
将这些 reads 比对回完整 reference 后,就会表现为 target-enriched 信号。
19. 模拟富集区域加背景噪音
真实 CUT&Tag / capture sequencing 数据通常不是只有 target reads,还会有 genome-wide background。
可以混合:
target-enriched reads+low-depth WGS background reads19.1 生成 target reads
art_illumina \ -ss HS25 \ -p \ -na \ -i targets.flank1k.fa \ -l 150 \ -f 100 \ -m 250 \ -s 80 \ -rs 1 \ -o sim/enriched/target_19.2 生成 low-depth background reads
art_illumina \ -ss HS25 \ -p \ -na \ -i reference.fa \ -l 150 \ -f 1 \ -m 350 \ -s 100 \ -rs 2 \ -o sim/enriched/background_19.3 混合 FASTQ
cat sim/enriched/target_1.fq sim/enriched/background_1.fq > sim/enriched/sample_1.fqcat sim/enriched/target_2.fq sim/enriched/background_2.fq > sim/enriched/sample_2.fq这种数据更接近:
局部高覆盖全基因组低背景20. 模拟不同 peak 强度
如果想模拟不同强度的 peak,可以给不同区域设置不同覆盖度。
例如:
strong peaks: 200xmedium peaks: 80xweak peaks: 30xbackground: 1x命令示例:
art_illumina \ -ss HS25 \ -p \ -na \ -i peaks_strong.fa \ -l 150 \ -f 200 \ -m 250 \ -s 80 \ -rs 11 \ -o sim/peaks/strong_art_illumina \ -ss HS25 \ -p \ -na \ -i peaks_weak.fa \ -l 150 \ -f 30 \ -m 250 \ -s 80 \ -rs 12 \ -o sim/peaks/weak_混合:
cat sim/peaks/strong_1.fq sim/peaks/weak_1.fq > sim/peaks/sample_1.fqcat sim/peaks/strong_2.fq sim/peaks/weak_2.fq > sim/peaks/sample_2.fq21. 模拟 DSB 修复结果的推荐策略
ART 不直接生成 DSB 修复结果。
需要先自己构造修复后的序列。
常见设计:
1. NULL 无变化
2. NHEJ_INS DSB 位点插入少量随机碱基
3. NHEJ_DEL DSB 位点附近发生小缺失
4. MMEJ_DEL LmXmR -> LmR 利用 microhomology 修复,删除中间 X 区域
5. BND_INS 两个远距离断点异常连接,中间可能有短插入
6. INTER_TRANSLOCATION 不同染色体之间异常连接
7. INTRA_REARRANGEMENT 同一染色体内远距离异常连接21.1 MMEJ 示例
修复前:
Left flank + microhomology + deleted segment + microhomology + Right flank修复后:
Left flank + one copy of microhomology + Right flank例如:
Before:AAAAAA CCGT TTTTTTTTTT CCGT GGGGGG
After:AAAAAA CCGT GGGGGG然后将修复后的序列保存为:
mmej_alt.fa再用 ART:
art_illumina \ -ss HS25 \ -p \ -na \ -i mmej_alt.fa \ -l 150 \ -f 100 \ -m 250 \ -s 50 \ -rs 101 \ -o sim/mmej/mmej_21.2 NHEJ insertion 示例
修复前:
AAAAAA | DSB | GGGGGG修复后:
AAAAAA TCA GGGGGG其中 TCA 是随机插入序列。
保存为:
nhej_ins_alt.fa再用 ART 生成 reads。
21.3 BND / translocation 示例
假设有两个断点:
chrA:posAchrB:posB可以构造 junction sequence:
chrA_left_flank + inserted_sequence + chrB_right_flank例如:
>junction_chrA_chrBAAAAAAATTTTTTCCCCCCGGGGGG然后:
art_illumina \ -ss HS25 \ -p \ -na \ -i junction_chrA_chrB.fa \ -l 150 \ -f 100 \ -m 250 \ -s 50 \ -rs 201 \ -o sim/bnd/junction_这种方式适合快速测试 split read / soft clipping / discordant pair 识别逻辑。
如果要更接近真实 WGS,应构造完整 derivative chromosome:
derivative_A = chrA_left + insert + chrB_rightderivative_B = chrB_left + insert + chrA_right再从完整 alt genome 上用 ART 生成 reads。
22. 推荐的 benchmark 数据层级
22.1 Level 1:最小 debug 数据
目标:
确认算法逻辑能跑通特点:
1. 基因组很短2. 只有一个事件3. 覆盖度很高4. 没有复杂背景示例:
one_mmej.faone_nhej_ins.faone_bnd_junction.faART:
art_illumina \ -ss HS25 \ -p \ -na \ -i one_event.fa \ -l 150 \ -f 100 \ -m 250 \ -s 50 \ -rs 1 \ -o sim/debug/one_event_22.2 Level 2:WGS-like benchmark
目标:
测试传统 SV caller 和自定义算法特点:
1. 使用小型 genome2. 包含多个 truth events3. 模拟 30x WGS4. 比对回原始 reference示例:
art_illumina \ -ss HS25 \ -p \ -na \ -i control.fa \ -l 150 \ -f 30 \ -m 350 \ -s 50 \ -rs 1 \ -o sim/wgs/control_art_illumina \ -ss HS25 \ -p \ -na \ -i alt.fa \ -l 150 \ -f 30 \ -m 350 \ -s 50 \ -rs 2 \ -o sim/wgs/alt_22.3 Level 3:target-enriched benchmark
目标:
模拟 CUT&Tag-like 或 capture-like 数据特点:
1. 目标区域高覆盖2. 全基因组低背景3. 可设置 control / treated 差异4. 可加入 alt junction reads结构:
control = target_ref_reads + low_background_reads
treated = target_ref_reads + target_alt_reads + low_background_reads23. ART 与比对工具结合
23.1 使用 bowtie2
bowtie2 \ -x ref/bowtie2/reference \ -1 sim/sample_1.fq \ -2 sim/sample_2.fq \ -p 8 \ 2> logs/sample.bowtie2.log \| samtools sort -@ 8 -o bam/sample.sorted.bam
samtools index bam/sample.sorted.bam23.2 使用 bwa mem
bwa mem \ -t 8 \ reference.fa \ sim/sample_1.fq \ sim/sample_2.fq \| samtools sort -@ 8 -o bam/sample.sorted.bam
samtools index bam/sample.sorted.bam24. ART 与 SV caller benchmark
常规流程:
1. 准备 reference.fa2. 构造 alt.fa3. 保存 truth.vcf / truth.bed / truth.tsv4. ART 从 reference.fa 生成 control reads5. ART 从 alt.fa 生成 treated/tumor reads6. reads 比对回 reference.fa7. 运行 SV caller8. caller result 与 truth set 比较示例:
reference.faalt.fatruth.tsv
sim/control_1.fqsim/control_2.fqsim/alt_1.fqsim/alt_2.fq
bam/control.sorted.bambam/alt.sorted.bam
sv/manta/sv/delly/sv/lumpy/25. ART 常见使用模板
25.1 150 bp PE,30x WGS
art_illumina \ -ss HS25 \ -p \ -sam \ -na \ -i reference.fa \ -l 150 \ -f 30 \ -m 350 \ -s 50 \ -rs 42 \ -o sim/sample_25.2 150 bp PE,100x target sequencing
art_illumina \ -ss HS25 \ -p \ -sam \ -na \ -i targets.fa \ -l 150 \ -f 100 \ -m 250 \ -s 80 \ -rs 42 \ -o sim/target_25.3 指定 read pairs 数量
art_illumina \ -ss HS25 \ -p \ -sam \ -na \ -i reference.fa \ -l 150 \ -c 10000 \ -m 350 \ -s 50 \ -rs 42 \ -o sim/sample_25.4 不输出 SAM
art_illumina \ -ss HS25 \ -p \ -na \ -i reference.fa \ -l 150 \ -f 30 \ -m 350 \ -s 50 \ -rs 42 \ -o sim/sample_25.5 模拟 MiSeq
art_illumina \ -ss MS \ -p \ -na \ -i reference.fa \ -l 250 \ -f 30 \ -m 500 \ -s 100 \ -rs 42 \ -o sim/miseq_26. 454 reads 模拟
454 平台现在较少使用,但 ART 仍支持。
26.1 454 single-end
art_454 reference.fa sim/454_single_ 20含义:
reference.fa 输入 FASTAsim/454_single_ 输出前缀20 覆盖度 20x26.2 454 paired-end
art_454 reference.fa sim/454_pair_ 20 500 20含义:
20 覆盖度500 mean fragment length20 fragment length standard deviation454 的错误模型更偏向 homopolymer 相关 indel error。
27. SOLiD reads 模拟
SOLiD 现在也较少使用。
27.1 SOLiD single-end
art_SOLiD reference.fa sim/solid_single_ 32 10含义:
32 read length10 coverage27.2 SOLiD paired-end
art_SOLiD reference.fa sim/solid_pair_ 25 10 500 20含义:
25 read length10 coverage500 mean fragment length20 fragment length standard deviation28. 常见问题
28.1 ART 可以直接模拟 SV 吗?
不可以。
ART 只从输入 FASTA 上生成 reads。
如果要模拟 SV,需要先生成包含 SV 的 FASTA。
例如:
reference.fa ↓手动修改 / 使用 RSVSim / 自己写脚本 ↓alt.fa ↓ART28.2 ART 可以直接模拟 DSB 修复吗?
不可以。
需要先构造 DSB 修复后的序列,例如:
NHEJ insertionMMEJ deletionBND junctiontranslocation derivative chromosome然后再用 ART 生成 reads。
28.3 ART 可以模拟 CUT&Tag 吗?
不能完整模拟。
ART 可以模拟 reads,但不能真实模拟:
1. 抗体富集2. pA-Tn5 插入偏好3. peak shape4. chromatin accessibility bias5. ligase binding signal但是可以通过以下方式近似:
1. 只从 target regions 生成 reads2. 设置不同 target coverage3. 混入低深度 WGS background4. 加入特定 junction reads28.4 ART 输出的 SAM 能直接用于 caller 吗?
一般不建议。
推荐:
ART FASTQ ↓重新比对回 reference genome ↓得到 BAM ↓运行 callerART SAM 主要用于检查模拟过程。
28.5 为什么比对回 reference 后出现 soft clipping?
如果 reads 来自 alt genome,而 alt genome 和 reference 有差异,那么比对回 reference 时,差异附近可能出现:
soft clippingsplit alignmentdiscordant pairindel CIGARlow MAPQsupplementary alignment这正是测试 SV / DSB 检测算法时需要观察的信号。
29. 常见错误和排查
29.1 输出目录不存在
错误原因:
ART 不一定会自动创建输出目录解决:
mkdir -p sim/output再运行:
art_illumina \ -ss HS25 \ -p \ -i reference.fa \ -l 150 \ -f 30 \ -m 350 \ -s 50 \ -o sim/output/sample_29.2 -f 和 -c 同时使用
不要同时使用:
-f 30 -c 10000二选一:
按覆盖度:使用 -f按 read 数量:使用 -c29.3 paired-end 忘记加 -p
如果不加:
-pART 会按 single-end 模式生成 reads。
paired-end 必须加:
-p -m 350 -s 5029.4 prefix 命名混乱
建议输出 prefix 总是以 _ 结尾:
-o sim/sample_这样输出更清晰:
sample_1.fqsample_2.fqsample_.sam29.5 随机结果不可复现
加上:
-rs 4230. 推荐目录结构
project/├── ref/│ ├── reference.fa│ ├── reference.fa.fai│ ├── alt.fa│ ├── targets.bed│ ├── targets.fa│ └── bowtie2/├── truth/│ ├── truth.tsv│ ├── truth.bed│ └── truth.vcf├── sim/│ ├── control/│ ├── treated/│ ├── enriched/│ └── vaf/├── bam/│ ├── control.sorted.bam│ └── treated.sorted.bam├── logs/│ ├── control.bowtie2.log│ └── treated.bowtie2.log└── sv/ ├── manta/ ├── delly/ └── lumpy/31. 推荐实际工作流
31.1 Step 1:准备 reference
samtools faidx ref/reference.facut -f1,2 ref/reference.fa.fai > ref/genome.sizes31.2 Step 2:构造 alt genome
可以使用:
1. 自己写脚本2. RSVSim3. SURVIVOR simSV4. 自定义 sequence generator5. 手动构造 junction FASTA输出:
ref/alt.fatruth/truth.tsv31.3 Step 3:ART 生成 reads
art_illumina \ -ss HS25 \ -p \ -na \ -i ref/alt.fa \ -l 150 \ -f 30 \ -m 350 \ -s 50 \ -rs 42 \ -o sim/alt_31.4 Step 4:比对回原始 reference
bowtie2 \ -x ref/bowtie2/reference \ -1 sim/alt_1.fq \ -2 sim/alt_2.fq \ -p 8 \ 2> logs/alt.bowtie2.log \| samtools sort -@ 8 -o bam/alt.sorted.bam
samtools index bam/alt.sorted.bam31.5 Step 5:运行 caller
MantaDellyLumpy自定义算法31.6 Step 6:与 truth 比较
比较内容:
1. 是否检出事件2. breakpoint 是否接近 truth3. SVTYPE 是否正确4. ALT junction 是否正确5. VAF 估计是否合理6. false positive 数量7. false negative 数量32. 对 DSB / SV benchmark 的建议
如果目标是测试 DSB 修复或 SV caller,不建议一开始直接做复杂模拟。
推荐分阶段:
第一阶段:单事件,高覆盖,无背景
第二阶段:多个事件,WGS-like,30x
第三阶段:加入不同 VAF
第四阶段:加入 target enrichment
第五阶段:加入 background noise
第六阶段:加入真实数据中的 fragment size 和 coverage distribution这样 debug 更容易。
33. 简要总结
ART 的核心定位:
ART = reads simulator它适合:
1. 从 reference / alt genome 生成 FASTQ2. 模拟不同测序深度3. 模拟不同 read length4. 模拟 paired-end reads5. 模拟不同 fragment size6. 模拟不同 VAF 的混合样本7. 构建 benchmark 数据它不适合直接完成:
1. SV 生成2. DSB 修复模拟3. L1 插入模拟4. CUT&Tag 生物学过程模拟5. peak calling 模拟最重要的原则:
先构造 truth sequence,再用 ART 生成 reads。对于 DSB / SV / CUT&Tag-like benchmark,推荐逻辑是:
reference.fa ↓alt.fa / junction.fa / targets.fa ↓ART ↓FASTQ ↓比对回 reference.fa ↓BAM ↓caller / custom algorithm ↓compare with truth