phy文件由cds和pro序列比对得到,cds和pro需要保持id一致
从数据库下载到总的cds序列后,需要对其进行相关处理
awk '/^>/ {if (match($0, /\\[locus_tag=([^]]+)\\]/, arr)) print ">" arr[1]; else print $0} !/^>/ {print}' input.fa > output.fa
##这里是保留locus_tag部分的ID,有些是protein_id则需把locus_tag换成protein_id
cat *cds > all.fa
for file in *fa; do
**base_name="${file%.fa}"**
grep '>' $file | sed 's/>//g' > $base_name.id
seqkit grep -f $base_name.id all.fa > $base_name.cds
done
for file in *.fa; do
# 提取文件名前面的部分(去掉 .aln 后缀)
base_name="${file%.fa}"
mafft --maxiterate 1000 --localpair "$file" > "${base_name}.aln"
pal2nal.pl "${base_name}.aln" "${base_name}.cds" -nogap -nomismatch -output fasta > "${base_name}.phy"
**
done
for i in *phy ; do sed -i -E 's/^(>...).*/\\1/' $i ; done
可直接使用基因家族扩张与收缩中的树文件,想要检验哪一支,是不是受到了正选择,我们需要在树结构对应的位置上加上#1,表示foreground,其他的为background。
14 1
(Cre,(((Mco,Cva),(Psp,(Hsp,(Apr,Pwi)))),((Ebi,(Cpr,Csu #1)),(Agl,(Tsp4,(Tsp5,Tsp6)))))'B(.662,1)');