文件完整性检查
在拷贝完原始数据之后,应对拷贝后的数据进行完整性校验,以确认数据正常拷贝完成;部分场景中程序运行中断但没有报错日志,用户通过日志无法判断该程序是否正常跑完,通过校验文件完整性可以判断程序是否正常跑完。
不同的文件可以有不同的校验方式,其中利用md5值进行校验为通用的校验方式。
md5检验¶
MD5是报文摘要算法5(Message-Digest Algorithm 5)的缩写,该算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),不同的文件产生相同的报文摘要的可能性非常小。
利用这一特性可以校验文件的完整性,这也是最通用的文件校验方式,linux/mac/windows等各个平台通用。
生成md5校验文件。一般测序公司给的原始数据会生产md5校验文件。
# 同时对5个文件生成检验码,加速速度。文件越大,运行时间越长。
$ ls *gz|xargs -i -P 5 md5sum {} > md5.txt
$ cat md5.txt
d77344a98132c6d1469200d5ad466ea5 BYU21001_1.fastq.gz
568baf7a8b6ea8069026c86388905235 BYU21001_2.fastq.gz
$ md5sum -c md5.txt
BYU21001_1.fastq.gz: OK
BYU21001_2.fastq.gz: OK
gzip完整性检查¶
如果是gzip压缩后的文件,且没有原始的md5校验文件,可以使用这种方式进行快速校验文件是否完整。
# 同时检查5个文件,加速速度。文件越大,运行时间越长。没有任何输出则说明所有gzip文件是完整的。
$ ls|xargs -i -P 5 gzip -t {}
# 如果出现类似如下报错,则说明gzip文件不完整,需要重新拷贝。
$ gzip -t BYU21001_1_part1.fastq.gz
gzip: BYU21001_1_part1.fastq.gz: unexpected end of file
seqkit校验fq文件完整性¶
seqkit子命令stats可以统计fastq/fasta文件的reads数、碱基数、Q30等信息,如果文件有问题则会出现报错,利用这一特性也以校验fastq文件的完整性。
# -j 10 多线程加速,大量文件校验可加快速度
# -e skip error,加上这个选项可以一次跑完所有文件校验,否则遇到问题文件会报错停下
$ seqkit stats -j 10 tests/* -e
[WARN] tests/hairpin.fa.fai: fastx: invalid FASTA/Q format
[WARN] tests/hairpin.fa.seqkit.fai: fastx: invalid FASTA/Q format
[WARN] tests/miRNA.diff.gz: fastx: invalid FASTA/Q format
[WARN] tests/test.sh: fastx: invalid FASTA/Q format
file format type num_seqs sum_len min_len avg_len max_len
tests/contigs.fa FASTA DNA 9 54 2 6 10
tests/hairpin.fa FASTA RNA 28,645 2,949,871 39 103 2,354
tests/Illimina1.5.fq FASTQ DNA 1 100 100 100 100
tests/Illimina1.8.fq.gz FASTQ DNA 10,000 1,500,000 150 150 150
tests/hairpin.fa.gz FASTA RNA 28,645 2,949,871 39 103 2,354
tests/reads_1.fq.gz FASTQ DNA 2,500 567,516 226 227 229
tests/mature.fa.gz FASTA RNA 35,828 781,222 15 21.8 34
tests/reads_2.fq.gz FASTQ DNA 2,500 560,002 223 224 225
bam文件完整性检查¶
大量群体样本比对过程中,可能会因为各种原因导致作业中断,因此建议比对完成之后,检查所有bam文件的完整性,将bam文件不完整的样本重新比对。cram文件也同样适用。
大量bam转cram之后、大量bam保存备份之前,建议都跑一遍完整性检查。
for i in *.bam ;do (samtools quickcheck $i && echo "ok" || echo $i error);done
本站总访问量 次