介绍
seqkit 能够通过反向互补操作来倒转染色体的方向。具体来说,它首先对DNA序列中的每个碱基进行互补替换:A变为T,T变为A,C变为G,G变为C。然后,它将整个序列的顺序倒置,即将末端的碱基移到起始位置,形成反向互补的序列。这一过程常用于基因组学中的序列方向修正,尤其是在处理基因注释时,帮助确保正链和反链的正确表示和分析。通过这种方式,seqkit使得原本正向的DNA序列转换为反向序列,以适应不同的分析需求。
使用方法
- 先找一个方向调整好的基因组,和目标基因组进行全基因组比对
- 这里用的基因组都是杜鹃的基因组,染色体数量也一样,方向的话Rsimsii这个是调整过的,所以只要通过全基因组比对两个基因组中染色体的连线情况,就能够判断目标基因组染色体(ctg_chr_scaffolds.fa)的方向情况
nohup /home/soft/NGenomeSyn/bin/GetTwoGenomeSyn.pl \
-InGenomeA ../Rsimsii.chr.fa \
-InGenomeB ctg_chr_scaffolds.fa \
-OutPrefix RS_vs_ctg \
-BinDir /home/soft/mummer-4.0.1 \
-MinAlnLen 10000 &- 全基因组比对结果图
- 老实说,全基因组比对大概是无法判断方向情况,个别倒是能够看得出来,但是连染色体编号也无法知道的情况下,那就牡蛎了
- 但是,GetTwoGenomeSyn.pl生成的图片虽然用不上,但它基于比对的数据结果(.link)的这个文件,只要加以解读就能够知道哪个染色体对应到哪个染色体上
- 统计每一对染色体的比对结果的数量
awk '{key=$1"\t"$4; count[key]++} END{for (k in count) print k"\t"count[k]}' RS_vs_ctg.link \
| sort -k1,1 -k2,2 > chr_scaffold_link.count.txt- 筛选最有染色体比对
- 两个基因组各有13条染色体,比对的组合一共有91中。不过,吾辈只需要最优的那个比对。
- 通过计算,保留比对数量最多的,这就是最后的13个比对结果统计,也没有重复
awk '
{
chr=$1; scaffold=$2; cnt=$3
if (!(chr in max) || cnt > max[chr]) {
max[chr]=cnt
best[chr]=scaffold
}
}
END{
for (chr in max)
print chr "\t" best[chr] "\t" max[chr]
}' chr_scaffold_link.count.txt \
| sort -k1,1 > chr_best_scaffold.txt- 拆分染色体,按照对应的染色体重新进行比对,查看方向
- 拆分Rsimsii基因组
awk '
/^>/ {
if (out) close(out)
name=substr($0,2)
out=name".fa"
}
{ print > out }
' Rsimsii.chr.fa- 拆分ctg基因组
awk '
/^>/ {
if (out) close(out)
name=substr($0,2)
out=name".fa"
}
{
print > out
}
' ctg_chr_scaffolds.fa
- 单个染色体进行比对
- 相较于一整个基因组的比对,单个染色体之间的比对能够看得更加清楚一些
nohup /home/soft/NGenomeSyn/bin/GetTwoGenomeSyn.pl \
-InGenomeA chr01.fa \
-InGenomeB scaffold_1.fa \
-OutPrefix 01 \
-BinDir /home/soft/mummer-4.0.1 \
-MinAlnLen 10000 &- 这是染色体方向相同的
- 这是染色体方向相反的
- seqkit染色体到位
- 根据图片和统计表来决定哪些染色体序列需要倒位
- 参数
- r,对每个序列执行反向互补操作,即生成序列的互补链,并反转序列的方向。
- p,此选项指示
seqkit对输入文件中的所有序列都应用-r参数(即对所有序列进行反向互补处理)。 - t,指定输入的序列类型为 DNA(默认),
seqkit将根据此信息进行相应的处理(如计算互补链时,基于 DNA 的碱基对规则 A ↔ T 和 C ↔ G)。
seqkit seq -r -p -t dna scaffold_7.fa > scaffold_7.revcomp.fa
seqkit seq -r -p -t dna scaffold_11.fa > scaffold_11.revcomp.fa
seqkit seq -r -p -t dna scaffold_12.fa > scaffold_12.revcomp.fa
seqkit seq -r -p -t dna scaffold_13.fa > scaffold_13.revcomp.fa
seqkit seq -r -p -t dna scaffold_2.fa > scaffold_2.revcomp.fa- 合并到位后的染色体序列
cat \
scaffold_1.fa \
scaffold_2.revcomp.fa \
scaffold_3.fa \
scaffold_4.fa \
scaffold_5.fa \
scaffold_6.fa \
scaffold_7.revcomp.fa \
scaffold_8.fa \
scaffold_9.fa \
scaffold_10.fa \
scaffold_11.revcomp.fa \
scaffold_12.revcomp.fa \
scaffold_13.revcomp.fa \
> all_scaffolds_merged.fa- 根据id重命名
awk '
NR==FNR {
if ($1 ~ /^chr/) map[$2] = "Chr" substr($1,4);
next
}
{
if ($0 ~ /^>/) {
id = substr($0,2);
if (id in map) print ">" map[id];
else print $0;
} else {
print
}
}
' chr_best_scaffold.txt all_scaffolds_merged.fa > all_scaffolds_merged_renamed.fa- 重新全基因组比对一遍
- 将方向调整后的目标基因组和参考基因组比对,结果图能够清楚地看到两个基因组上所有染色体方向一致
- 不过,相较于这样一个一个拆分进行比对的有些肝的方法,如果能够在全基因组比对出图那里,获得更多的情报,比如染色体编号、更清晰的比对情况,就不需要拆分染色体这种法子了,写在这里作为参考使用
/home/soft/NGenomeSyn/bin/GetTwoGenomeSyn.pl \
-InGenomeA Rsimsii.chr.fa \
-InGenomeB all_scaffolds_merged_renamed.fa \
-OutPrefix rs_ctg_last \
-BinDir /home/soft/mummer-4.0.1 \
-MinAlnLen 10000