转录组表达量分析(SAM to BAM)

1、将sam文件转成bam文件,以当前50线程的服务器来算,运行40次需要10小时左右(实际为二进制文件,因此文件相对较小,为3G左右)。

利用samtools的sort命令将bam进行排序。(为什么 BAM 文件sort之后体积会变小?因为BAM文件是压缩的二进制文件,对文件内容排序之后相似的内容排在一起,使得文件压缩比提高了)

将下列代码写成.sh文件,利用“bash+文件名”运行

#!/bin/bash

# 定义要循环的路径列表

paths=(

        "/home/hztext/dai/Ana_trans/hisat/Tc_Female"

        "/home/hztext/dai/Ana_trans/hisat/Tc_Fruit"

        "/home/hztext/dai/Ana_trans/hisat/Tc_Male"

        "/home/hztext/dai/Ana_trans/hisat/Tc_Petals"

        "/home/hztext/dai/Ana_trans/hisat/Tc_VegOr"

)

 

# 循环遍历路径列表

for path in "${paths[@]}"; do

#获取当前路径的最后一个文件夹的文件名

  folder_name=$(basename "$path")

  # 在每个路径下执行您的命令

  cd "$path"  # 切换到当前路径

#遍历当前文件夹所有文件,对.sam文件进行处理

for sam_file in *.sam; do

#获取当前处理的文件名

  base_name=$(basename "$sam_file" .sam)

 #构建输出bam文件的文件名

  bam_file="${base_name}.bam"

 #用samtools的view命令将sam文件转成bam文件。-@:选择50个线程;-S:选择sam文件的路径及文件名;-b:利用“>”指定输出bam文件的路径和文件名。

  samtools view -@ 50 -S $path/$sam_file -b > $path/$bam_file

 #利用sort命令对bam文件进行排序,默认是按照染色体进行排序。$path/$bam_file:输入的bam文件;-o:输出的已排序的bam文件。

  samtools sort $path/$bam_file -o /home/hztext/dai/Ana_trans/bam_file/sorted/$folder_name/$bam_file

done

done

 

Loading