设计正向引物

2021-05-11  本文已影响0人  余绕

open FA, "$ARGV[0]";
print"Plz,input your primer length (In integers).\n";
$PL= <STDIN>;
chomp $PL;
print"Plz,input your start position(In integers).\n";
$start= <STDIN>;
print"Plz,input your end position(In Integers).\n";
$end= <STDIN>;
chomp $end;
print"Plz,input your lowest TM value(In Integers).\n";
$LTM=<STDIN>;
chomp $LTM;
print"Plz,input your highest TM value(In Integers).\n";
$HTM=<STDIN>;
chomp $HTM;

$/=">"; #以>进行全局分割,必须放在<STDIN>之后,否在不能停止输入。

<FA>;
while(<FA>){
    chomp;
    next,if($_=~/^$/); #忽略空行
    my($ID,$target)=split /\n/, $_,2; 
    $target=~s/\n//g;
    #print"$seq\n";
    $seq=substr($target,$start,($end-$start));
    $len=length($seq);
    #print"$seq\t$len\n";

    $n=0;
    print"Below is the selected primers for you:\n";

    for($i=0;$i<($len-$PL)+1;$i+=1){
        $primer=substr($seq,$i,$PL);
        #print"$primer\n";
        @array=split //,$primer;
        #print"@array\n";
            %hash=();
            $TM=0;
        foreach(@array){
            
            $hash{"A"}+=1,if($_ eq "A");
            $hash{"T"}+=1,if($_ eq "T");
            $hash{"G"}+=1,if($_ eq "G");
            $hash{"C"}+=1,if($_ eq "C");
            }
            #@A=values %hash;
            #print"@A\n";
    $TM=4*($hash{"G"} + $hash{'C'})+ 2*($hash{"A"} + $hash{"T"});
    #print"$TM\n";
    if($TM>=$LTM && $TM<=$HTM){
        $n+=1;
        print"$ID\tprimer$n:$primer\n";
    }
}

 
}

输入数据:

image.png

输出数据:

image.png
上一篇 下一篇

猜你喜欢

热点阅读