欢迎光临
我们一直在努力

基于perl怎么提取基因家族内的串联重复基因对

本篇内容介绍了“基于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怎么提取基因家族内的串联重复基因对”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注云搜网网站,小编将为大家输出更多高质量的实用文章!

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。