使用orthofinder查找单拷贝基因并建树

本文主要是对这篇文章利用orthofinder寻找单拷贝基因构建系统发育树 - 简书 (jianshu.com)
的复现及自己的一点心得体会。
前几天老师给了一个枯草芽孢杆菌的全基因组蛋白序列,让我去建个系统发育树,刚开始整个人都是懵的,全基因组,蛋白序列,直系同源基因,单拷贝基因。。。有点陌生,去查找了资料发现还需要自己去下载芽孢杆菌属物种蛋白序列,利用这些蛋白序列查找到直系同源单拷贝序列,对这些序列进行对比后修剪再串联构建系统发育树。主要的步骤有:

1.序列下载

在NCBI的Nucleotide数据库中以“Bacillus”,“genome”为关键词进行检索,筛选序列长度为1000000-10000000bp的序列,这样能够筛选出芽孢杆菌属物种的全基因组,再下载选定的物种的蛋白序列并将这些序列上传到服务器中。

2.orthofinder的下载与使用

2.1orthofinder下载

相比较于自己去下载orthofinder的压缩包然后自己去配置,conda安装简直不要太香,但是安装时也有点小门道,不注意可能造成orthofinder毁miniconda亡(小声bb,才不是因为自己踩过这个坑)

conda create -n orthofinder
#为orthofinder创建一个小环境,后续其依赖库都安装在这个环境中
conda activate orthofinder
#激活刚创建的环境
conda install -c bioconda orthofinder
#安装orthofinder

2.2使用

最基本的使用命令

nohup orthofinder -t 16 -f /home/monkeyflower/bioworkplace/KCYB0330 -S diamond
#nohup:不挂起运行应用,即关闭终端仍然可以继续运行。-t:指定运行线程数。-f:指定工作目录,即存放序列的目录。-S:指定序列搜索程序,有blast, mmseqs, blast_gz, diamond可用,diamond是速度最快的。

结果文件比较多,但我们在这里只需要使用Single_Copy_Orthologue_Sequences中的序列
,这个文件夹中保存的就是单拷贝直系同源序列了

3.使用muscle进行多序列比对

conda create -n muscle
conda activate muscle
conda install -c bioconda muscle
muscle -align seq.fasta -output aln.fasta

上面实现了使用miniconda设置环境,安装muscle和最基础的使用命令。
但是序列数量很多,靠一个个的去敲命令比对太浪费时间,在这里使用一点shell命令缩短时间

#!/bin/bash
  
# 创建一个名为aligments的文件夹
mkdir -p alignments

# 遍寻~/sequence文件夹中的所有.fa文件
for file in /home/monkeyflower/bioworkplace/KCYB0330/OrthoFinder/Results_Apr03_1/sequences/*.fa; do
  # 获取没有扩展名的文件名
  name=$(basename "$file" .fasta)

  # 使用muscle比对序列并将比对结果输出到alignments文件夹中
  muscle -align "$file" -output "alignments/${name}_aligned.fasta"
done

4.使用Gblocks进行序列修剪

依然是朴实无华的conda安装

conda create -n Gblocks
conda activate Gblocks
conda install -c bioconda gblocks

上述步骤与安装muscle时一样,先创造环境,再激活环境,再安装
批量修剪序列,代码如下

#!/bin/bash

# 进入需要进行序列修剪的目录
cd /home/monkeyflower/bioworkplace/KCYB0330/OrthoFinder/Results_Apr03_1/sequences/alignments

# 循环处理每一个序列文件
for file in *.fasta
do
    # 定义输出文件名
    output="/home/monkeyflower/bioworkplace/KCYB0330/OrthoFinder/Results_Apr03_1/sequences/alignments/output ${file%.fasta}_1.fasta"
    
    # 运行 Gblocks 进行序列修剪
    Gblocks "$file" -t "$output" -b4=5 -b5=h -t=p -e=.2
    
    # 输出处理完成的序列文件名
    echo "Processed $file -> /home/monkeyflower/bioworkplace/KCYB0330/OrthoFinder/Results_Apr03_1/sequences/alignments/output/"
done

5.使用seqkit串联序列

经过上一步的序列修剪后,我们需要将每个物种单个的序列进行串联,构建基因矩阵。也需要使用一点代码循环完成该任务。

conda create -n seqkit
conda activate seqkit
conda install -c bioconda seqkit
#上述代码完成了对seqkit的环境建设和安装
for i in *.2;do seqkit sort $i >$i.3
seqkit seq $i.3 -w 0 > $i.3.4
done
mkdir new
mv *.4 new/
cd new
paste -d " " *.4 > all.fa
sed -i "s\ \\g" all.fa

6.使用记事本修改各物种名称

使用记事本打开串联好的序列,使用各个物种名替代基因名。

7.使用iqtree2构建系统发育树

iqtree2 -s all.fa -m MFP -T 16 -B 1000 -o sepcific_species
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容