samtools-安装

#1. 环境配置

1
2
3
4
5
#报错缺少时 curses.h: No such file or directory
yum install ncurses-devel ncurses

#报错缺少时 bzlib.h: No such file or directory
yum install bzip2-devel.x86_64

#2. 软件安装

1
2
3
4
5
6
7
wget -c https://github.com/samtools/samtools/releases/download/1.9/samtools-1.9.tar.bz2
tar xvf samtools-1.9.tar.bz2
cd samtools-1.9/

./configure --prefix=~/biosoft/samtools-1.9
make
make install

3. 异常处理

##3.1 samtools打开的文件句柄数目超出Linux限制

问题描述

在使用Samtools进行排序时,遇到如下情况,程序中断,
从截图中可以看到,samtools一共需要合并1032个bam文件,但是在合并到1020个文件时,程序打开文件失败了。
image
因为常用samtools的时候,我们都知道这个sort.1020.bam 文件,其实是samtools在进行排序处理过程中,生成的中间文件。而这个报错是在合并时出现的(意味着该文件已经生成)。所以经过查找,发现是Linux文件句柄存在限制导致的问题。

1
2
$ ulimit -n
1024 # Linux系统设置的,一个程序支持打开的文件句柄数

本次问题中,Linux系统支持最多打开1024个文件,但是需要排序的文件超过了这个数字,因为由于句柄超出,软件处理失败。

解决方案

其实Linux是有文件句柄限制的,一般都是1024,因此我们需要把这个值改大一些。这个1024是当前用户给准备要运行的程序的限制。

  1. 针对非Root用户
    1
    2
    3
    4
    5
    6
    7
    ulimit -n 2048 # 句柄数调整为2048。 #调整当前工作窗口,重启工作窗口后会重置。
    ```
    2. 针对具有root权限的用户
    ```
    $ cat >> /etc/security/limits.conf
    soft nofile 1000000
    hard nofile 1000000

将ulimit 值添加到/etc/profile文件中(适用于有root权限登录的系统)
为了每次系统重新启动时,都可以获取更大的ulimit值,将ulimit 加入到/etc/profile 文件底部。

-------------本文结束感谢您的阅读-------------