抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

对于单拷贝直系同源基因的比对结果,常规操作是用Gblocks进行处理,但是Gblocks会删的比较彻底,以至于好多基因的文件夹都是空的,所以这次尝试了用TrimAI来进行删除。

1
2
3
4
# trimal提取保守序列 
for i in *.mafft;do
trimal -in $i -out $i.trimal -automated1;
done

然后就又遇到一个新的问题,那就是trimal删除以后那些全是gaps的序列会被直接删掉,在序列串联的时候也不能用了,所以这个需要写一个code把缺失的序列补齐。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 经典allspecies.txt囊括所有物种名称
allSpecies=$(cat allspecies.txt)
# 所有的序列排成一列
for i in *.trimal;do
seqkit seq $i -w 0 > $i.seqkit;
done
# 然后就开始补齐了
for i in *.seqkit;do
grep ">" $i > $i.al;
for j in $allSpecies;do
if grep -w "$j" $i.al;
then
echo "yes $j";
else
echo "$j" >> ${i};
len=$(cat ${i} | wc -L); echo $(eval "printf "%0.s-" {1..$len}") >> ${i};
fi
done
done

但是这行code有个bug,就是我以最长行的列数作为需要补齐的gaps数量,偶尔会出现有些序列还没有名称长,就导致了补齐的gaps会偏多,所以后面还需要调整成以第二行的列数作为gaps的补齐数量。

暂时用不上,等下次用的时候再进行修改了。

评论