小马的生信笔记

自从2023年接触基因组以来,关于染色体挂载用过了无数个软件,包括juice+3ddna、haphic和yahs。接下来我会使用这些软件的时间来描述我对这些软件的感受,并且从软件的下载和配置难度、使用门槛、运行速度和表现四个个方面给出我的主管评价。

1. juice+3ddna

作为第一个接触的染色体挂载软件,当时的我还是一个小白,一边看Github的教程一边参考徐州更老师写的笔记,也算是完整的走完了所有的流程。这个软件给我的第一印象就是“麻烦!麻烦!麻烦”,并且分析时间非常长,如果是基因组比较大,甚至需要花上数天乃至一周的时间。

(1)配置难度:软件的下载和配置对于新手来说也极其不友好,完全不支持conda下载,只能本地下载,然后配置。

(2)使用门槛:具有一定的门槛,我自己在使用的过程中出现过多次报错,例如awk版本问题,ulimit问题等等,现在我还记得软件要求HIC的测序数据必须严格按照_R1和_R2的格式来才行,不然会报错。

(3)运行速度:运行速度很慢,较大的基因组通常需要运行几天乃至一周。

(4)表现:表现还算可以,但是对于多倍体或者单倍型基因组的挂载表现不足。

2. Haphic

这个软件是基因所侯师兄推荐我使用的,师兄和我说这个软件运行速度很快,我就去尝试了,结果确如师兄所言,快到飞起。

(1)配置难度:直接Conda下载即可,非常方便,但是在我的服务器上不能通过直接输入软件的主程序来运行,必须要指定主程序的路径才可以。

(2)使用门槛:基本上没有门槛,跟着曾老师在官网写的教程就可以。

(3)运行速度:极快。

(4)表现:对多倍体和单倍型基因组表现很好,正常基因组未知,没试过。

额外补充一点:这个软件对于下游的调整挂载结果的Juicebox衔接非常优秀,作者直接修好了sh脚本,并且有一些其他优秀的小功能,对于多倍体基因组的染色体挂载及其推荐!

3. Yahs

近期接触的一个软件,速度同样快的飞起,但是对于下游Juicebox调整的衔接不如Haphic。

(1)配置难度:直接Conda下载即可,非常方便。

(2)使用门槛:基本上没有门槛,但是下游软件的衔接不足。

(3)运行速度:极快。

(4)表现:正常基因组的表现很好。

Yahs完全是juice+3ddna的上位替代,更快!更准!更好!

4. 总结

多倍体和单倍型基因组首选Haphic,正常基因组首选Yahs。接下来是Yahs的使用教程。

5. Yahs进行染色体挂载

5.1 下载

				
					mamba install bioconda::yahs

				
			

5.2 使用

				
					### 这是一个由三个命令通过管道 (|) 连接起来的命令流,用于将 Hi-C 测序数据比对到基因组草图上,并进行初步过滤。
bwa mem -5SP -t 28 purged.fa ../Chr/fastq/huangwenwucifeng_R1.fastq.gz ../Chr/fastq/huangwenwucifeng_R2.fastq.gz| samblaster | samtools view - -@ 14 -S -h -b -F 3340 -o HiC.bam

# -5SP: 这是两个参数的组合,特别适用于处理Hi-C数据,有助于处理嵌合读长并强制进行正确的双端配对。
# -t 28: 指定使用 28 个线程进行计算,以加快比对速度。
# purged.fa: 这是参考基因组文件(FASTA格式),即contigs或初步组装的序列。
# ../Chr/fastq/huangwenwucifeng_R1.fastq.gz 和 ../Chr/fastq/huangwenwucifeng_R2.fastq.gz: 双端测序的两个FASTQ文件(R1和R2)。
# |: 管道符号,将前一个命令的输出作为后一个命令的输入。
# samblaster: 用于标记PCR重复序列的工具。
# samtools view: SAMtools工具集中的一个命令,用于转换比对文件格式。
# -: 表示从标准输入(stdin)读取数据,���从samblaster的输出中读取。
# -@ 14: 指定samtools使用14个线程。
# -S: 指定输入为SAM格式。
# -h: 在输出中包含头信息(header)。
# -b: 指定输出格式为BAM。
# -F 3340: 过滤器参数,用于排除标记为不合格的比对记录(如未比对、非主要比对、重复等)。
# -o HiC.bam: 指定输出文件名为HiC.bam。

### 使用上一步生成的Hi-C比对信息,对purged.fa中的contigs进行染色体级别的挂载。
yahs ./purged.fa aligned.bam

# yahs: YAHS (Yet Another Hi-C Scaffolder) 工具的主命令,用于利用Hi-C数据进行基因组挂载。
# ./purged.fa: 输入的contigs文件,与上一步中的参考基因组是同一个文件。
# aligned.bam: YAHS所需的比对文件(BAM格式)。注意:上一个命令生成的BAM文件是`HiC.bam`,这里使用了`aligned.bam`,请确保文件名一致或已做相应处理。

### 使用yahs的输出结果,为Juicer生成Hi-C接触图做准备。
juicer pre -a -o out_JBAT hic-to-contigs.bin scaffolds_final.agp contigs.fa.fai >out_JBAT.log 2>&1

# juicer pre: Juicer工具集的第一步,用于预处理数据。
# -a: 只对AGP文件中列出的contigs/scaffolds进行基因组大小的估计。
# -o out_JBAT: 指定输出文件的前缀为out_JBAT。
# hic-to-contigs.bin: yahs生成的二进制文件,包含Hi-C链接信息。
# scaffolds_final.agp: yahs生成的AGP文件,定义了contigs如何组成scaffolds。
# contigs.fa.fai: 参考基因组的索引文件(通过`samtools faidx`生成)。
# >out_JBAT.log 2>&1: 将标准输出和标准错误信息都重定向到`out_JBAT.log`文件。

### 使用Juicer Tools,根据预处理步骤生成的结果创建.hic文件。
(java -jar -Xmx32G juicer_tools.1.9.9_jcuda.0.8.jar pre out_JBAT.txt out_JBAT.hic.part <(cat out_JBAT.log | grep PRE_C_SIZE | awk '{print $2" "$3}')) && (mv out_JBAT.hic.part out_JBAT.hic)

# java -jar -Xmx32G juicer_tools.1.9.9_jcuda.0.8.jar pre: 执行Juicer Tools程序,并分配最大32GB内存。
# out_JBAT.txt: `juicer pre`命令生成的输入文件列表。
# out_JBAT.hic.part: 临时的输出.hic文件。
# <(...): 这是一个进程替换,它将括号内命令的输出作为一个临时文件供`juicer_tools`读取。该命令从日志文件中提取基��组大小信息。
# &&: 逻辑与操作符。只有当`java`命令成功执行后,才会执行`mv`命令。
# mv out_JBAT.hic.part out_JBAT.hic: 将临时的.hic文件重命名为最终的输出文件。

### 对Juicer的输出进行后处理,生成最终的组装文件。
juicer post -o out_JBAT out_JBAT.review.assembly out_JBAT.liftover.agp contigs.fa

# juicer post: Juicer的后处理步骤。
# -o out_JBAT: 指定输出文件的前缀。
# out_JBAT.review.assembly: 输入的程序集审查文件,通常是在Juicebox等工具中手动审查和校对后的结果。
# out_JBAT.liftover.agp: Juicer生成的AGP文件,用于坐标转换。
# contigs.fa: 原始的contigs FASTA文件。

				
			

发表评论

基因组专栏