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的长度不必一样! 

 

posted @   Life·Intelligence  阅读(4242)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
TOP
点击右上角即可分享
微信分享提示