day21ChIP-seq之sam转换为bam

生成的sam要转换成bam,再排序,在生成index。都是用samtools这个工具。

一、samtools view

samtools view -bS abc.sam > abc.bam

二、samtools sort

samtools sort [options] <输入bam文件> <输出bam文件名>

三、samtools index

samtools index <排序后的bam文件>

四、整合samtools各个命令的脚本

project=/data/zds209/ChIP-seqtest
out=$project/bam
ls $project/sam/*.sam | while read id
do
file=$(basename $id)
sample=${file%%_*} 
samtools view -@ 5 -S $id -b >$out/$sample.bam
samtools sort -@ 5 $out/$sample.bam -o $out/$sample.sorted.bam
samtools index -@ 5 $out/$sample.sorted.bam
rm $out/$sample.bam
done

五、samtools程序运行出现Segmentation fault (core dumped)

1,首先看一下是不是Glibc的问题,可以在.bashrc里把export LD_LIBRARY_PATH=/data/software/glibc-2.141/lib:$LD_LIBRARY_PATH用#给注释掉。
2,调整-@后面的数字,如果太大导致线程过多,有可能报错。
3,sh在home目录和在其他目录下运行都是可以的。qsub提交的时候带运行sh所在目录应为当前工作目录。

六、把bowtie2和samtool合并在一起(非管道连接)

bowtie2_index=/data/zds209/database/bowtie2/hg19/hg19   #最后一个hg19是前缀的名称
project=/data/zds209/ssresult
ls $project/clean/*.gz | grep "_val_1" > tempgz1
ls $project/clean/*.gz | grep "_val_2" > tempgz2
paste tempgz1 tempgz2>tempconfig_file
cat tempconfig_file | while read id
do
arr=($id)
fq1=${arr[0]}
fq2=${arr[1]}
file=$(basename $fq1)
sample=${file%%_*} 
bowtie2 -p 5 -x $bowtie2_index -1 $fq1 -2 $fq2 -S $project/sam/$sample.sam
samtools view -@ 5 -S $project/sam/$sample.sam -b >$project/dam/$sample.bam
samtools sort -@ 5 $project/dam/$sample.bam -o $project/dam/$sample.sorted.bam
samtools index -@ 5 $project/dam/$sample.sorted.bam
rm $project/sam/$sample.sam
rm $project/dam/$sample.bam
done

以后运行sh可以把sh文件移动到project下,生成的temp文件在程序都跑完后,如果没问题就可以删除。如果有问题,可以查看之。

你可能感兴趣的:(day21ChIP-seq之sam转换为bam)