本篇内容介绍了“基于perl怎么提取基因家族内的串联重复基因对”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
基于MCScanX串联重复分析结果中的tandem文件,提取属于特定基因家族内的串联重复基因对。
脚本文件名
get_tandem_gene.pl ,运行命令为:
perl get_tandem_gene.pl -id hqs.id -tandem ganlan.tandem -name hqs -od ./
命令解释:
get_tandem_gene.pl脚本文件名,最后写明全路径
-id 输入基因家族基因id,文件格式如下:
Bol014029 Bol014986 Bol021982 Bol023208 Bol005493 Bol008082 Bol021317 Bol021325 Bol033054 Bol033162
-tandem 输入MCScan的串联重复结果文件tandem( , 分隔),文件格式如下:
Bol004372,Bol004373 Bol004375,Bol004376 Bol004405,Bol004406 Bol004463,Bol004462 Bol004492,Bol004491 Bol004611,Bol004612 Bol004624,Bol004625 Bol004632,Bol004633 Bol004672,Bol004673 Bol004680,Bol004681
-name 输出文件名前缀
-od 输出路径
输出文件格式如下(\t 分隔):
Bol026623 Bol026622 Bol038386 Bol038387 Bol044343 Bol044344
全部perl 脚本内容如下:
use Data::Dumper;
use Getopt::Long;
use strict;
use Cwd qw(abs_path getcwd);
my %opts;
GetOptions (\%opts,"id=s","tandem=s","od=s","name=s");
my $od=$opts{od};
$od||=getcwd;
$od=abs_path($od);
unless(-d $od){ mkdir $od;}
my $gene;
my @info;
my %hashG;
open (IN,"$opts{id}") || die "open $opts{id} failed\n";
while(<IN>){
chomp;
@info=split(/\s+/,$_);
$gene=$info[0];
$hashG{$gene}=$gene;
}
close(IN);
my $Agene;
my $Bgene;
open(OUT,">$od/$opts{name}.tandem")||die "open $od/$opts{name}.tandem failed\n";
open (IN,"$opts{tandem}") || die "open $opts{tandem} failed\n";
while(<IN>){
chomp;
@info=split(/,/,$_);
$Agene=$info[0];
$Bgene=$info[1];
if(exists $hashG{$Agene} && exists $hashG{$Bgene}){
print OUT $Agene."\t".$Bgene."\n";
}
}
close(IN);
close(OUT);
“基于perl怎么提取基因家族内的串联重复基因对”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。