小马的生信笔记

从直系同源筛选到系统树构建:HybSuite 全流程系统发育解决方案

引言

在系统发育研究领域,HybPiper 几乎已成为靶向捕获数据处理中最为经典的工具之一。该软件能够基于测序 reads 对目标基因进行局部组装,从而高效恢复候选直系同源基因,在系统发育与系统基因组学研究中得到了广泛应用。然而,HybPiper 本身主要聚焦于基因级别的组装输出,其结果仍需经过一系列后续处理步骤,方可进入系统树构建阶段。这些步骤通常包括旁系同源基因的识别与过滤、多序列比对、序列修剪、超矩阵构建或基因树推断,以及最终的物种树分析。整个流程往往需要调用多个独立软件并进行参数协调,不仅增加了技术门槛,也提高了流程管理与结果复现的复杂度,对于初学者而言尤为不友好。

为解决上述问题,HybSuite 以 HybPiper 为核心模块,构建了一个面向系统发育分析的整合型自动化工作流。该流程不仅能够完成直系同源基因的组装,还进一步整合了旁系同源过滤、多序列比对与系统树构建等关键步骤,实现从原始 reads 到物种树的完整分析闭环。通过流程整合与自动化调度,HybSuite 显著降低了系统发育数据处理的操作复杂度,提高了分析效率与结果一致性,为开展大规模系统发育研究提供了更加便捷而规范的技术路径。

Hybsuite

Hybsuite的工作流程主要分为4个阶段:

stage1:NGS数据的构建:对NCBI下载或本地提供的数据进行质控

stage2:数据集的构建和恢复旁系:针对预设计的单拷贝直系同源基因集,恢复每个样本的单拷贝直系同源基因

stage3:基于1=HRS, 2=RLWP, 3=LS, 4=MI, 5=MO, 6=RT, 7=1to1七种方法对删除旁系同源基因

stage4:构建基于串联和并联的物种树

安装

				
					mamba install yuxuanliu::hybsuite
				
			

Stage1:NGS数据的构建

输入文件是一个样本wen’jian,有三种形式的数据可以提供,

(1)SRA数据的NCBI登录号,第一列为样本名,第二列为SRA号

				
					Taxon1	SRR...
Taxon2	SRR...
...
				
			

(2)已有的测序数据,第一列为样本名,第二列为特征值

				
					Taxon3	A
Taxon4	A
...
				
			

这里要强调,样本对于的测序数据文件必须符合“<Taxon>_1.<suffix> + <Taxon>_2.<suffix>”的规范。suffix可以是.fq.gz, .fq, .fastq.gz, or .fastq。

(3)预组装的数据,第一列为样本名,第二列为特征值(这个我没太搞懂什么意思,所以我没使用)

				
					Taxon5	B
Taxon6	B
...
				
			

这三种形式也是可以出现在一个样本文件中的,并且最后会一起进行质控,作为外群的样本第三列要加上Outgroup。

				
					Taxon1	SRR...
Taxon2	SRR...
Taxon3	A
Taxon4	A
Taxon5	B	Outgroup
Taxon6	B
				
			
				
					hybsuite stage1 -input_list hybsuite_sample.txt -input_data ./ -output_dir ./Output -nt 8 -process 5

# -input_list 样本文件 
# -input_data 已有的测序数据的目录 
# -output_dir 输出结果文件 
# -nt 总线程数 
# -process 并行运行的数量  
				
			

最重要的输出结果位于“Output/NGS_dataset/03-My_clean_data”,是每个样本质控后的测序数据。

Stage2:单拷贝直系同源基因的构建和恢复旁系:

				
					hybsuite stage2 -input_list hybsuite_sample.txt \
-NGS_dir ./Output/NGS_dataset \
-t ../hybsuite_Chr_6.fasta 
-output_dir ./Output  \
-nt 10  \
-process 10  \
-eas_dir  ./Output/01-Assembled_data

# -input_list 样本文件
# -NGS_dir Stage1的输出结果 
# -t 目标基因文件
# -output_dir 输出结果
# -nt 总线程数 
# -process 并行运行的数量
# -eas_dir 是一个可选的参数,如果有已经存在的组装结果,软件会自动识别并跳过

				
			

Hybsuite的目标基因的格式和Hybpiper几乎一样,唯一的区别是,在 HybSuite 中,目标序列的基因名称必须紧接着头部行的最后一个连字符(-)之后。

				
					>Elaeagnus-pungens-4471
AATGTCATCCAGGATAAATATCGGTTGGAAGCTGCAAATACTGACTGGATGAACAAGTAC
AAAGGCTCTAGTAAGCTTCTATTGCATCCAAGGAACACTGAGGAGGTTTCACAGATACTC
...
>Hippophae-rhamnoides-4527
GAAGAGAGGGTTGTAGTATTAGTGATTGGTGGAGGAGGAAGAGAACATGCTCTTTGCTAT
GCAATGAATCGATCACCATCCTGCGATGCAGTCTTTTGTGCTCCTGGCAATGCTGGGATT
...
>Hippophae-salicifolia-4691
CAGAGACTGCCTCCATTGTCAACTGATCCCAACAGATGCGAGCGTGCATTTGTTGGAAAC
ACGATAGGTCAAGCAAATGGTGTGTACGACAAGCCAATCGATCTCCGATTCTGTGATTAC
...
				
			

补充一个非常重要的细节,Hybsuite有一个很重要的功能,就是可以对恢复的旁系同源基因进行过滤,我认为这个非常重要,可以过滤掉很多假阳性的结果。

-seqs_min_sample_coverage <NUM:0-1>
指定回收位点的最小样本覆盖范围。样本覆盖率低于该阈值的位点被移除。(默认:0)
-seqs_min_locus_coverage <NUM:0-1>
指定样本的最小位点覆盖率。位点覆盖率低于该阈值的样本会被移除。(默认:0)
-seqs_min_length <NUM>
指定过滤同源序列的最小序列长度。低于该阈值的序列会被移除。(默认:0)
-seqs_mean_length_ratio <NUM:0-1>
指定相对于靶序列平均长度的最小长度比值。长度比低于该阈值的序列会被移除。(默认:0)
-seqs_max_length_ratio <NUM:0-1>
指定相对于目标序列最大长度的最小长度比值。长度比低于该阈值的序列会被移除。(默认:0)
-seqs_min_length_ratio <NUM:0-1>
指定相对于目标序列最小长度的最小长度比值。长度比低于该阈值的序列会被移除。(默认:0)

Output/01-Assembled_data/:单拷贝直系同源基因的恢复结果,每个样本一个目录。

Output/02-All_paralogs/:旁系同源基因的恢复结果

Stage3:剔除旁系同源基因

基于1=HRS, 2=RLWP, 3=LS, 4=MI, 5=MO, 6=RT, 7=1to1七种方法对删除旁系同源基因,我认为这是最关键,也是最主要的一步。之前每种方法都要独立完成。

				
					hybsuite stage3 -input_list hybsuite_sample.txt \
-eas_dir ./Output/01-Assembled_data \
-t ../hybsuite_Chr_6.fasta \
-output_dir ./Output \
-nt 10 \
-process 10 \
-paralogs_dir ./Output/02-All_paralogs/03-Filtered_paralogs \
-PH 1234567a

# -input_list 样本文件
# -t 目标基因文件
# -output_dir 输出结果
# -nt 总线程数 
# -process 并行运行的数量
# -eas_dir 组装结果
# -PH 剔除旁系同源基因额的方法,1=HRS, 2=RLWP, 3=LS, 4=MI, 5=MO, 6=RT, 7=1to1,a=PhyloPyPruner, b=ParaGone
# -paralogs_dir 过滤后旁系同源基因的恢复结果

				
			

Output/06-Final_alignments:剔除旁系同源基因的结果,每个方法单独一个文件夹

stage4:构建基于串联和并联的物种树

				
					# Concatenation approach (IQ-TREE)
hybsuite stage4 \
  -input_list <FILE> \
  -aln_dir <output_dir>/06-Final_alignments \
  -output_dir <DIR> \
  -PH 1234567a \
  -sp_tree 1 \
  -nt 8

# Coalescent approach (ASTRAL-IV)
hybsuite stage4 \
  -input_list sample_list.txt \
  -aln_dir <output_dir>/06-Final_alignments\
  -output_dir <DIR> \
  -PH 1a \
  -sp_tree 4 \
  -run_phyparts TRUE \
  -nt 8 -process 5
  
# -input_list 样本文件
# -output_dir 输出结果
# -nt 总线程数 
# -PH 建树的基因集1=HRS, 2=RLWP, 3=LS, 4=MI, 5=MO, 6=RT, 7=1to1
# -aln_过滤旁系后的比对结果
# -sp_tree 建树的方法  1=IQ-TREE, 2=RAxML, 3=RAxML-NG,4=ASTRAL-IV, 5=wASTRAL, 6=ASTRAL-Pro
# -run_phyparts 是否进行系统发育冲突分析
# -process 并行运行的数量
				
			

一次运行整个流程

				
					# Complete pipeline with all paralog-handling methods
hybsuite full_pipeline \
  -input_list sample_list.txt \
  -input_data Input_data \
  -t Angiosperms353.fasta \
  -output_dir ./ \
  -PH 1234567ab \
  -sp_tree 12345 \
  -seqs_min_length 100 \
  -aln_min_sample 4 \
  -nt AUTO -process 10
				
			

还可以指定跳过“-skip_stage”跳过某一个阶段或者通过“-run_to_stage”指定停止运行在某个阶段。

结语

虽然我个人不太喜欢针对某个分析流程的大范围缝合,但是能像Hybsuite这种,缝合的非常全又非常好的流程,是真的少见,能够帮助很多系统发育的初学者快速上手。

发表评论