美文网首页生物信息笔记生物信息学Linux基础
Linux 下提升生物信息分析工作效率的神器(持续更新)

Linux 下提升生物信息分析工作效率的神器(持续更新)

作者: wangpeng905 | 来源:发表于2017-05-17 11:56 被阅读314次

    tags: fastq clumpify linux pigz axel Ctrl+R

    子曰:“工欲善其事,必先利其器。”


    多线程超快速压缩工具 pigz

    pigz 是 linux 下一个高效压缩工具,与 gzip 相比 pigz 在压缩文件时默认使用多线程,如果不指定线程数,软件检测到的机器的 cpu 可用线程数就是默认线程数,如果检测不到,则默认设为 8,因此比 gzip 快,也比 gzip 更耗资源。

    为什么叫 pigz,官网这么描述的:A parallel implementation of gzip for modern multi-processor, multi-core machines

    压缩解压测序原始数据,VCF 文件等等,pigz 飞一般的感觉~
    压缩:

    pigz  raw.fastq
    

    解压:

    pigz -d raw.fastq.gz
    

    详细用法

    $ pigz
    Usage: pigz [options] [files ...]
      对文件进行压缩替换,文件名添加后缀 '.gz'。如果不指定文件,则接受标准输入然后将压缩结果输出到标准输出。pigz 是多线程版的 gzip。
    
    Options:
      -0 to -9, -11        压缩水平 (11 is much slower, a few % better)
      --fast, --best       --fast 代表压缩水平为1,--best代表压缩水平为9
      -b, --blocksize mmm  设置压缩区块大小为 mmmK (默认 128K)
      -c, --stdout         将处理结果输出到标准输出 (won't delete)
      -d, --decompress     对压缩文件进行解压缩
      -f, --force          Force overwrite, compress .gz, links, and to terminal
      -F  --first          Do iterations first, before block split for -11
      -h, --help           显示帮助文档
      -i, --independent    Compress blocks independently for damage recovery
      -I, --iterations n   Number of iterations for -11 optimization
      -k, --keep           Do not delete original file after processing
      -K, --zip            Compress to PKWare zip (.zip) single entry format
      -l, --list           List the contents of the compressed input
      -L, --license        Display the pigz license and quit
      -M, --maxsplits n    Maximum number of split blocks for -11
      -n, --no-name        Do not store or restore file name in/from header
      -N, --name           Store/restore file name and mod time in/from header
      -O  --oneblock       Do not split into smaller blocks for -11
      -p, --processes n    使用 n 线程进行压缩(默认是值是机器核心数,核心数未知则使用 8 线程) 
      -q, --quiet          静默模式,不输出任何信息
      -r, --recursive      递归模式,对所有的子文件夹中内容进行同样的处理
      -R, --rsyncable      Input-determined block locations for rsync
      -S, --suffix .sss    压缩文件后缀用 .sss 代替默认的 .gz 
      -t, --test           Test the integrity of the compressed input
      -T, --no-time        Do not store or restore mod time in/from header
      -v, --verbose        Provide more verbose output
      -V  --version        Show the version of pigz
      -z, --zlib           Compress to zlib (.zz) instead of gzip format
      --                   All arguments after "--" are treated as files
    
    

    实际上没有任何理由不用 pigz 代替 gzip 了


    能使 Fastq 压缩文件再缩小 30% 并加速后续分析流程的小神器 Clumpify

    Clumpify 是 BBMap 工具包中的一个组件,用法如下:

    clumpify.sh -Xmx50000m in1 = r1.fq.gz in2 = r2.fq.gz out1 = c1.fq.gz out2 = c2.fq.gz
    

    它其实只是将 Fastq 文件按照序列相似性和 tile 位置进行了排序(有点类似 CD-hit 工作原理),以便使得文件压缩率达到最大,它并没有对文件内容做任何改动。它除了会使后续分析流程变快之外,没有任何副作用。

    建议对于数据需要长期存储,或者后续分析流程耗时较长的场景,数据下机之后首先用这个工具对 fastq 进行排序压缩,节省数据存储空间。

    实测 Clumpify 确实能显著减少 fastq 压缩文件的体积,这里注意一个参数 -Xmx 限制 JVM 使用的最大内存,一定要根据自己机器配置情况设置一下,不然 Clumpify 默认自动检测可用内存,如果处理的 Fastq 文件太大,会把机器内存都占满,就别再想跑别的程序了。

    另外,Clumpify 还可以直接识别原始数据中的光学 duplicate,就是那些 @seq-id 坐标临近、序列相同的 reads,并去除它,清理数据同时节省空间 :)


    多线程下载工具 axel

    axel 是 linux 下支持多线程下载的工具,下载速度会比 wget 快,下载数据库,参考基因组,比 wget 强多了:

    $ axel
    Usage: axel [options] url1 [url2] [url...]
    
    --max-speed=x       -s x    最大下载速度 (bytes per second)
    --num-connections=x -n x    最大下载进程数
    --output=f      -o f    指定输出文件名
    --search[=x]    -S [x]  搜索境像并且从指定的x服务器(可以是多个)下载
    --header=x      -H x    添加文件头
    --user-agent=x  -U x    使用代理
    --no-proxy      -N  不使用代理
    --insecure      -k  不验证 SSL 证书
    --quiet         -q  静默模式
    --verbose       -v  显示下载详情
    --alternate     -a  设置下载过程中按不刷屏方式显示下载过程
    --help          -h  显示帮助信息
    --version       -V  显示版本信息
    
    Visit https://github.com/eribertomota/axel/issues to report bugs
    
    

    支持断点续传,下载中断之后,再次输入上次的下载命令,会接着上次下载的位置继续下载。

    对我来说没有任何理由不用 axel 代替 wget 了


    Linux 快捷搜索历史命令 Ctrl + R

    在日常的工作中,用到的很多 Linux 命令都可以通过修改历史命令快速编辑完成,效率比重新敲打一条命令不知道高哪里去了。使用上下方向键可以按顺序查找历史命令,但是效率不高,最高效的方法是使用 Ctrl + R 快捷键组合通过输入关键字符快速调出相关的历史命令,如果匹配这个关键字符的历史命令有多条,可以重复按 Ctrl + R 在多条命令中进行切换,切到自己想要的命令后可以直接 Enter 键运行命令,也可以按 → 右方向键得到这条命令以便进一步修改。

    快捷搜索历史命令 Ctrl + R快捷搜索历史命令 Ctrl + R

    相关文章

      网友评论

        本文标题:Linux 下提升生物信息分析工作效率的神器(持续更新)

        本文链接:https://www.haomeiwen.com/subject/pnkdxxtx.html