• FASTQ | md5 | 原始文件保存、传输、完整性检验


    像fastq这样的原始文件是肯定不能丢掉的,必须保存在硬盘里或者放到ftp服务器上,以便之后再度调取分析。

    fastq保存时问题不大,但因为文件巨大,传输通常需要几小时-几天,非常容易在传输过程中损毁,这时候我们就需要一种方法来检验我们下载的fastq(任何其他原始文件)是否完整。

    MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。

    安装:Macos 安装md5sum、sha1sum、md5deep、sha1deep

    brew install md5sha1sum

    建议:任何原始文件都必须构建md5原始验证码,然后存档。

    md5sum *.gz > md5.txt

    检测:

    md5sum -c md5.txt

    如果下载的fastq没有md5,则有几种办法:

    一、用gzip检验gz的文件完整性

    参考:使用gunzip命令的t参数检测fastq的gz文件完整度

    gunzip -t SRR11652583_2.fastq.gz

    二、检查配对端FASTQ数据完整性

    直接计数行数即可,配对就基本没问题。

    wc -l `gzcat *.gz` # 不可用
    
    wc -l `find -name *.gz`

    OSX不能直接用zcat,Linux则可以。  

    对于这种大数据,最好使用C写的工具,哪些别人用perl和python写的就不要用了,速度可以气死你,Linux上的基础命令基本能胜任大部分工作。

     并行加速

    brew install pigz
    
    for x in *.gz; do unpigz -p 8 -c $x | wc -l && echo $x; done  

    三、如果文件较少,可以直接看tail的read名字是否匹配。

    我喜欢用for,配合文件输入输出操作,可以用,速度也不会慢。

    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文件构建索引,然后直接读取最后几行,非常厉害。

    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
    

      

    我觉得第三种方法可以作为金标准,只要最后一个名字配对,基本不可能错。

    确定没问题

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

  • 相关阅读:
    VUE框架的插值操作补充
    VUE框架
    VUE框架vif
    VUE框架 methods使用
    JS 计时器案例
    JS 函数
    VUE框架安装
    VUE框架的插值操作
    JS Date类型
    VUE框架的使用
  • 原文地址:https://www.cnblogs.com/leezx/p/16666414.html
Copyright © 2020-2023  润新知