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