欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【生信】使用QIIME进行 进化树,Alpha,Beta多样性 分析

程序员文章站 2024-03-03 16:01:46
...

使用QIIME进行 进化树,Alpha,Beta多样性 分析


上回讲到,使用Usearch进行进化树,Alpha,Beta多样性的分析。同时,我们还要再次强调QIIME的伟大之处在于全流程分析的能力。因此,使用QIIME同样可以进行上述分析过程。因此,将QIIME进行进化树,Alpha,Beta多样性 分析的脚本粘贴如下,怀着开放科研的心态,供有需要的朋友参考。同时,需要注意的是因为每个人的使用环境不同,可能部分无法正常运行,因此这对于新手来说可能不是那么友好。

#!/bin/bash
## 使用QIIME进行 进化树,Alpha,Beta多样性 分析

## 文件
HOME=`pwd`                ### 操作空间
temp=${HOME}/temp2              ### 临时文件存放目录
res=${HOME}/res2                ### 结果文件存放目录
data=${HOME}/seq                ### 测序数据存放位置
refdb=${HOME}/database          ### 参考测序数据库
err=${HOME}/err2                ### 错误信息
log=${HOME}/log2                ### 日志信息

printf "最终的OTU表:%s\t最终的OTU序列:%s\n"${res}/otu_table_tax.txt ${res}/rep_seqs.fasta
echo "进化树构建"
# clustalo多序列比对,如果没有请安装Clustal Omega
clustalo -i ${res}/rep_seqs.fasta -o ${temp}/rep_seqs_align.fa --seqtype=DNA --full --force --threads=30

echo "筛选结果中保守序列和保守区"
filter_alignment.py -i ${temp}/rep_seqs_align.fa -o ${temp}/  # rep_seqs_align_pfiltered.fa, only very short conserved region saved

echo "基于fasttree建树"
make_phylogeny.py -i ${temp}/rep_seqs_align_pfiltered.fasta -o ${res}/rep_seqs.tree # generate tree by FastTree

echo "Alpha多样性"
echo "查看样品的数据量最小值"
biom summarize-table -i ${res}/otu_table3.biom

echo "基于最小值进行重抽样标准化"
single_rarefaction.py -i ${res}/otu_table3.biom -o ${temp}/otu_table_rare.biom -d 2797

echo "计算常用的四种Alpha多样性指数"
alpha_diversity.py -i ${temp}/otu_table_rare.biom -o ${res}/alpha.txt -t ${res}/rep_seqs.tree -m shannon,chao1,observed_otus,PD_whole_tree

echo "Beta多样性"
echo "CSS标准化OTU表"
normalize_table.py -i ${res}/otu_table3.biom -o ${temp}/otu_table_css.biom -a CSS

echo "转换标准化OTU表为文本,用于后期绘图"
biom convert -i ${temp}/otu_table_css.biom -o ${res}/otu_table_css.txt --table-type="OTU table" --to-tsv

echo "删除表格多余信息,方便R读取"
sed -i '/# Const/d;s/#OTU //g;s/ID.//g' ${res}/otu_table_css.txt

echo "计算Beta多样性"
beta_diversity.py -i ${temp}/otu_table_css.biom -o ${res}/beta/ -t ${res}/rep_seqs.tree -m weighted_unifrac,unweighted_unifrac

echo "Beta多样性距离文件整理,方便R读取"
sed -i 's/^\t//g' ${res}/beta/*

echo "物种分类统计,筛选进化树和其他操作"
cd ${HOME}
echo "按物种分类级别分类汇总"
echo "结果按门、纲、目、科、属五个级别进行分类汇总,对应结果的L2-L6"
summarize_taxa.py -i ${res}/otu_table3.biom -o ${res}/sum_taxa # summary each level percentage
echo "修改一下文本表头,适合R读取的表格格式"
sed -i '/# Const/d;s/#OTU ID.//g' ${res}/sum_taxa/* # format for R read
#echo "以门为例查看结果"
#less -S ${res}/sum_taxa/otu_table3_L2.txt

echo "筛选可展示的进化树"
echo "选择OTU表中丰度大于0.1%的OTU"
filter_otus_from_otu_table.py --min_count_fraction 0.001 -i ${res}/otu_table3.biom -o ${temp}/otu_table_k1.biom

echo "获得对应的fasta序列"
filter_fasta.py -f ${res}/rep_seqs.fasta -o ${temp}/tax_rep_seqs.fa -b ${temp}/otu_table_k1.biom 

echo "统计序列数量,104条,一般100条左右即有大数据的B格,又能读懂和更清规律和细节"
grep -c '>' ${temp}/tax_rep_seqs.fa # 104

echo "多序列比对"
clustalo -i ${temp}/tax_rep_seqs.fa -o ${temp}/tax_rep_seqs_clus.fa --seqtype=DNA --full --force --threads=30

echo "建树"
make_phylogeny.py -i ${temp}/tax_rep_seqs_clus.fa -o ${temp}/tax_rep_seqs.tree

echo "格式转换为R ggtree可用的树"
sed "s/'//g" ${temp}/tax_rep_seqs.tree > ${res}/tax_rep_seqs.tree # remove '

echo "获得序列ID"
grep '>' ${temp}/tax_rep_seqs_clus.fa|sed 's/>//g' > ${temp}/tax_rep_seqs_clus.id

echo "获得这些序列的物种注释,用于树上着色显示不同分类信息"
awk 'BEGIN{OFS="\t";FS="\t"} NR==FNR {a[$1]=$0} NR>FNR {print a[$1]}' ${res}/rep_seqs_tax_assignments.txt ${temp}/tax_rep_seqs_clus.id|sed 's/; /\t/g'|cut -f 1-5 |sed 's/p__//g;s/c__//g;s/o__//g' > ${res}/tax_rep_seqs.tax

echo " 其他操作"
#echo "将mappingfile转换为R可读的实验设计"
#sed 's/#//' mappingfile.txt > ${res}/design.txt

echo "转换文本otu_table格式为R可读"
sed '/# Const/d;s/#OTU //g;s/ID.//g' ${res}/otu_table3.txt > ${res}/otu_table.txt

echo "转换物种注释信息为制表符分隔,方便R读取"
sed 's/;/\t/g;s/ //g' ${res}/rep_seqs_tax_assignments.txt > ${res}/rep_seqs_tax.txt