构建索引和转录组CleanData比对
1、安装hisat2软件
11conda install -c bioconda hisat2
2、hisat2构建索引
#-p:选择使用的线程数;Toona_ciliata_LG_Genome.fasta:基因组染色体文件;index:索引文件的前缀,必须包含index_
x
1hisat2-build -p 50 /home/hztext/dai/Ana_trans/Toona_cilita_var_Genome/Toona_ciliata_LG_Genome.fasta /home/hztext/dai/Ana_trans/hisat2_index/index_
#索引结果文件中包含多个以index_开头的文件
3、利用索引文件批量比对fastq文件,生成sam文件。
香椿转录组sam文件大小一般为20G左右。该代码只针对一个文件夹的文件进行处理,需要多文件夹自动化处理,需增加文件夹的自动访问,具体代码参考后续的sam文件转bam文件。
261
2#index_dir:指定索引文件的路径和前缀
3index_dir="/home/hztext/dai/Ana_trans/hisat2_index/index_"
4#input_dir:指定fastq文件的路径
5input_dir="/home/hztext/dai/Ana_trans/Total_fastq/Tc_Fruit"
6#output_dir:指定比对后的sam文件输出路径
7output_dir="/home/hztext/dai/Ana_trans/hisat/Tc_Fruit"
8
9# 在{input_dir}路径中遍历输入fastq结尾的文件
10for file in ${input_dir}/*.fastq; do
11 # 提取文件名和ID
12 filename=$(basename "$file")
13 #提取不包含扩展名.fastq的部分
14 id="${filename%%.*}"
15
16 # 拼接输入文件路径
17 input_1="${input_dir}/${id}.clean.1.fastq"
18 input_2="${input_dir}/${id}.clean.2.fastq"
19
20 # 拼接输出文件路径
21
22 output="${output_dir}/${id}_hisat2.sam"
23
24 # 执行比对命令
25 hisat2 -p 50 -x "${index_dir}" -1 "${input_1}" -2 "${input_2}" -S "${output}"
26done
4、将sam文件转成bam文件
以当前50线程的服务器来算,运行40次需要10小时左右(实际为二进制文件,因此文件相对较小,为3G左右)。
利用samtools的sort命令将bam进行排序。
(为什么 BAM 文件sort之后体积会变小?因为BAM文件是压缩的二进制文件,对文件内容排序之后相似的内容排在一起,使得文件压缩比提高了)
将下列代码写成.sh文件,利用“bash 文件名”运行。
281
2# 定义要循环的路径列表
3paths=(
4 "/home/hztext/dai/Ana_trans/hisat/Tc_Female"
5 "/home/hztext/dai/Ana_trans/hisat/Tc_Fruit"
6 "/home/hztext/dai/Ana_trans/hisat/Tc_Male"
7 "/home/hztext/dai/Ana_trans/hisat/Tc_Petals"
8 "/home/hztext/dai/Ana_trans/hisat/Tc_VegOr"
9)
10
11# 循环遍历路径列表
12for path in "${paths[@]}"; do
13#获取当前路径的最后一个文件夹的文件名
14 folder_name=$(basename "$path")
15 # 在每个路径下执行您的命令
16 cd "$path" # 切换到当前路径
17#遍历当前文件夹所有文件,对.sam文件进行处理
18for sam_file in *.sam; do
19#获取当前处理的文件名
20 base_name=$(basename "$sam_file" .sam)
21 #构建输出bam文件的文件名
22 bam_file="${base_name}.bam"
23 #用samtools的view命令将sam文件转成bam文件。-@:选择50个线程;-S:选择sam文件的路径及文件名;-b:利用“>”指定输出bam文件的路径和文件名。
24 samtools view -@ 50 -S $path/$sam_file -b > $path/$bam_file
25 #利用sort命令对bam文件进行排序,默认是按照染色体进行排序。$path/$bam_file:输入的bam文件;-o:输出的已排序的bam文件。
26 samtools sort $path/$bam_file -o /home/hztext/dai/Ana_trans/bam_file/sorted/$folder_name/$bam_file
27done
28done