FASTQ | md5 | 原始文件保存、传输、完整性检验 | 修复
一般在传输过程中中断,fastq就会truncate,但仍然可以用zless或者zcat打开查看。
真到万不得已的时候还是要截取可以利用的部分,然后用bbmap修复一下。
bbmap
1 | repair.sh -Xmx14g in1=1.fq.gz in2=2.fq.gz out1=1_1.fq.gz out2=1_2.fq.gz outs=outs.fq.gz repair |
最简单快速的fastq check方法
1 2 | export PATH= /home/zz950/softwares/self_bin :$PATH fastqc -t 20 -o fastqc *fq.gz |
如果fastq文件不完整,truncated,fastqc就会报错。
1 2 3 4 5 6 | Failed to process file M303P1_2.fq.gz uk.ac.babraham.FastQC.Sequence.SequenceFormatException: Ran out of data in the middle of a fastq entry. Your file is probably truncated at uk.ac.babraham.FastQC.Sequence.FastQFile.readNext(FastQFile.java:179) at uk.ac.babraham.FastQC.Sequence.FastQFile.next(FastQFile.java:125) at uk.ac.babraham.FastQC.Analysis.AnalysisRunner.run(AnalysisRunner.java:77) at java.lang.Thread.run(Thread.java:748) |
Mac上安装md5sum
1 | brew install md5sha1sum |
像fastq这样的原始文件是肯定不能丢掉的,必须保存在硬盘里或者放到ftp服务器上,以便之后再度调取分析。
fastq保存时问题不大,但因为文件巨大,传输通常需要几小时-几天,非常容易在传输过程中损毁,这时候我们就需要一种方法来检验我们下载的fastq(任何其他原始文件)是否完整。
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
安装:Macos 安装md5sum、sha1sum、md5deep、sha1deep【目前测试mac生成比较慢,不适合大数据,md5 -r类似于md5sum的功能】
1 | brew install md5sha1sum |
建议:任何原始文件都必须构建md5原始验证码,然后存档。
1 | md5sum *.gz > md5.txt |
传输前的批量密码生成,最好是已经跑完流程,确保fastq没问题。
1 | md5sum */*/*fastq.gz > all.md5.txt |
传输后的批量检测:
1 | md5sum -c md5.txt |
如果下载的fastq没有md5,则有几种办法:
一、用gzip检验gz的文件完整性
参考:使用gunzip命令的t参数检测fastq的gz文件完整度
1 | gunzip -t SRR11652583_2.fastq.gz |
二、检查配对端FASTQ数据完整性
直接计数行数即可,配对就基本没问题。
1 | wc -l `gzcat *.gz` # 不可用 |
1 | wc -l ` find -name *.gz` |
OSX不能直接用zcat,Linux则可以。
对于这种大数据,最好使用C写的工具,哪些别人用perl和python写的就不要用了,速度可以气死你,Linux上的基础命令基本能胜任大部分工作。
并行加速
1 | brew install pigz |
1 | for x in *.gz; do unpigz -p 8 -c $x | wc -l && echo $x; done |
三、如果文件较少,可以直接看tail的read名字是否匹配。
我喜欢用for,配合文件输入输出操作,可以用,速度也不会慢。
1 2 3 4 5 6 7 | echo "last line" > tail .name for i in ` ls *.gz` do echo $i >> tail .name gzcat $i | tail -4 | grep '@' >> tail .name echo "" >> tail .name done |
普通的gzcat太慢了,需要按顺序读到文件的最后一行。
这里发现了一个神器,gztool,可以给gz文件构建索引,然后直接读取最后几行,非常厉害。
1 2 3 4 5 6 7 8 | echo "last line" > tail .name for i in ` ls *.gz` do echo $i >> tail .name # gzcat $i | tail -4 | grep '@' >> tail.name /Users/zxli/Downloads/rawdata/gztool/gztool -t $i | tail -4 >> tail .name echo "" >> tail .name done |
我觉得第三种方法可以作为金标准,只要最后一个名字配对,基本不可能错。
确定没问题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | last line Pool111-2_23_S23_L003_I1_001.fastq.gz @A00198:856:H5GFVDSX3:3:2678:32651:37059 1:N:0:CGGAACCCAA+TCCTCGAATC CGGAACCCAA + FFFF:FFF,, Pool111-2_23_S23_L003_I2_001.fastq.gz @A00198:856:H5GFVDSX3:3:2678:32651:37059 2:N:0:CGGAACCCAA+TCCTCGAATC TCCTCGAATC + :FF,FF,,,F Pool111-2_23_S23_L003_R1_001.fastq.gz @A00198:856:H5GFVDSX3:3:2678:32651:37059 1:N:0:CGGAACCCAA+TCCTCGAATC CGCGATTCAAGTAAGCGGTGCAAAGGGG + FFFF:,FFFFFFF,FFFF,FFF:FFF,, Pool111-2_23_S23_L003_R2_001.fastq.gz @A00198:856:H5GFVDSX3:3:2678:32651:37059 2:N:0:CGGAACCCAA+TCCTCGAATC GGACTCCAACTACTTCGATCCCAGCAAGATCCAGTTACCAGAAGAGGACTGATGGCTTACCGAGCAGGGCCTAAGAAGCATTACTCAGCC + FFF,:FF:FF,,F:FFFFFFF:,FF::FF,FF,F,,FFF:F:,F:,F,FFFF:F::,F:FFFFFFFFFFFFF:FFF,FF,,,,F,F,,FF Pool111-2_23_S23_L004_I1_001.fastq.gz @A00198:856:H5GFVDSX3:4:2678:32777:37059 1:N:0:CGGAACCCAA+TCCTCGAATC CGGAACCCAA + FFFF:FFF,: Pool111-2_23_S23_L004_I2_001.fastq.gz @A00198:856:H5GFVDSX3:4:2678:32777:37059 2:N:0:CGGAACCCAA+TCCTCGAATC TCCTCGAATC + :FF,FF,:,F Pool111-2_23_S23_L004_R1_001.fastq.gz @A00198:856:H5GFVDSX3:4:2678:32777:37059 1:N:0:CGGAACCCAA+TCCTCGAATC TGCCTGTTCGGTACGCAACTTTAGCATA + :FFFFF:FFFFFFFFFFFF:,F:FFFFF Pool111-2_23_S23_L004_R2_001.fastq.gz @A00198:856:H5GFVDSX3:4:2678:32777:37059 2:N:0:CGGAACCCAA+TCCTCGAATC GTCGGGCGCCGGCGGCTTTGGTGACTCTAGATAACCTCGGGCCGATCGCACGCCCCCCGGGGCGGCGACGACCCATTCGAACGTCTGCCC + FFFFFFFFFFFFFFFF,FFFFFFFF,FF,FF:::FFFFFFFFFF:FFFFFFFF:F:FFF,FFFFFFFFFFFFFFF,:FFFF:FFFFFFFF |
同一批数据,名字基本一样,就是lane和read R1/R2不一样。
R1和R2的长度不必一样!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)