当一个基因组含有多个 Contigs/Scaffolds 的时候,在 GenBank 文件中也会产生多个 LOCUS。某些软件会将 GenBank 文件作为输入,但仅支持一个 GenBank 文件中只包含一条 Contig/Scaffold,如基因岛预测软件 islandpath。这个时候就需要我们将 GenBank 文件进行切割。手动切是体力活,也不像钓鱼那样有成就感,因此提供一个脚本 "split_GenBank.pl" 来完成。
敬告:使用该脚本请引用本文网址,请尊重本人的劳动成果,谢谢!
#!/usr/bin/perl
use strict;
use warnings;
# Author: Liu hualin
# Date: Oct 9, 2021
my @gbk = glob("*.gbk");# 批处理所有后缀为.gbk的文件
foreach (@gbk) {
$_=~/(.+).gbk/;
my $str = $1;
open IN, "$_" || die;
local $/ = "LOCUS";
<IN>;
while (<IN>) {
chomp;
$_=~/\s+(\S+)/;
my $scaf = $1;
my $out = $str . "_" . $scaf . ".gb";
my $assession = $str . "_" . $scaf;
$_=~s/ACCESSION.+/ACCESSION $assession/g;# 添加ACCESSION number
open OUT, ">$out" || die;
print OUT "LOCUS$_";
close OUT;
}
close IN;
}
将脚本与后缀名为 “.gbk” 的 GenBank 文件放在同一目录下,运行如下代码:
perl split_GenBank.pl
得到的后缀名为 “.gb” 的文件即为切割后的 GenBank 文件。
脚本获取
关注公众号 “生信之巅”,聊天窗口回复 “d9f9” 获取下载链接。
![]() | ![]() |
敬告:使用文中脚本请引用本文网址,请尊重本人的劳动成果,谢谢!