단순 시퀀스 반복을 찾아야하며 각 고유 반복을 해당 위치와 함께 저장해야합니다. 나는 이미 그것을하기위한 펄 코드를 작성했다. (pentamers 때까지 반복을 찾는 if와 for를 가지고있다.) 내 질문은 일부 정규식 또는 문자열을 검색하고 연속 반복 및 위치, 많은 제어 문 및 반복이 포함되지 않은 뭔가를 계산 반환 뭔가 같은 Java에서이 작업을 수행하는 몇 가지 간단한 방법입니다.Java에서 단순 시퀀스 반복을 찾는 효율적인 방법
업데이트 : 간단한 시퀀스 반복 (SSR)은 2 중 문자 (즉, 서로 다른 두 문자가 함께 반복)에서 시작하는 중단되지 않은 반복 된 문자열입니다. 그것은 끊임없이 문장없이 반복적으로 반복되는 단어와 같습니다. AT 및 TGA 간단한 시퀀스는 AT 다이머이고, TGA는 삼량 체이고, 여기에 반복
AATTAAAATTTTAAAAAAAAGGGCCCTTTAA[ATATATATATATAT]AAGGGATTTAAGGAATTAAGA[TGATGATGATGATGA]TGGTAG
같은 DNA의 경우, 보일 것이다. 내가 찾던 것은 시퀀스 반복의 시작 위치, 반복되는 반복 횟수 (즉, 길이) 및 시퀀스 (즉, 예를 들어 AT는 위치 6에서 시작하고 10 회 반복되고 TGA 그래서 위치 25)에서 시작
내 펄 코드 (그리고 그것은 버그의 종류) 당신이 "이량 체는는"당신이 진술에 적용을 시작하는 데 도움이해야 정규 표현식에 같은
my $i=0;
my $j=0;
my $dna;
my $m2=0;
my $m4=0;
my $m3=0;
my $m5=0;
my $temp1;
my $temp2;
my $min;
print "Please enter DNA sequence : ";
$dna=<>;
my $firstdi;
my $seconddi;
my $thirddi;
my $fourthdi;
my $fifthtet;
my $firsttet;
my $secondtet;
my $thirdtet;
my $fourthtet;
my $fifthtet;
my $firsttri;
my $secondtri;
my $thirdtri;
my $fourttri;
my $fifthtri;
my $firstpent;
my $secondpent;
my $thirdpent;
my $fourtpent;
my $fifthpent;
print "\n";
print "Please enter the length to search for : ";
$motif=<>;
print "\n";
print "Please enter the minimum number of motif repeats : " ;
$min=<>;
chomp($dna);
chomp($motif);
chomp($min);
my @output;
my @codearr = split //, $dna;
print "\n";print @codearr;print "\n";
my [email protected];
print "\nSize : ";
print "\n";print $arrsize; print "\n";
print "Output : ";
my $total=0;
if($motif==2)
{
for($i=0;$i<($arrsize-2);$i=$i+$motif)
{
if($codearr[$i] ne $codearr[$i+1])
{
$temp1 = join("",$codearr[$i],$codearr[$i+1]);
$temp2 = join("",$codearr[$i+2],$codearr[$i+3]);
if($temp1 eq $temp2)
{
if($m2==0)
{
$ms1=$i;
}
$total++;
$m2++;
}
}
}
}
if($motif==3)
{
for($i=0;$i<($arrsize-2);$i=$i+$motif)
{if($codearr[$i] ne $codearr[$i+1])
{
$temp1 = join("",$codearr[$i],$codearr[$i+1]);
$temp2 = join("",$codearr[$i+2],$codearr[$i+3]);
if($temp1 eq $temp2)
{
if($m2==0)
{
$ms1=$i;
}
$m2++;
$total++;
}
}
}
for($i=0;$i<($arrsize-3);$i=$i+$motif)
{if($codearr[$i] ne $codearr[$i+1])
{
$temp1 = join("",$codearr[$i],$codearr[$i+1],$codearr[$i+2]);
$temp2 = join("",$codearr[$i+3],$codearr[$i+4],$codearr[$i+5]);
if($temp1 eq $temp2)
{
if($m3==0)
{
$ms3=$i;
}
$m3++;
$total++;
}
}
}
}
if($motif==4)
{
for($i=0;$i<($arrsize-2);$i=$i+$motif)
{
if($codearr[$i] ne $codearr[$i+1])
{
$temp1 = join("",$codearr[$i],$codearr[$i+1]);
$temp2 = join("",$codearr[$i+2],$codearr[$i+3]);
if($temp1 eq $temp2)
{
if($m2==0)
{
$ms1=$i;
}
$m2++;
$total++;
}
}
}
for($i=0;$i<($arrsize-3);$i=$i+$motif)
{
if($codearr[$i] ne $codearr[$i+1])
{
$temp1 = join("",$codearr[$i],$codearr[$i+1],$codearr[$i+2]);
$temp2 = join("",$codearr[$i+3],$codearr[$i+4],$codearr[$i+5]);
if($temp1 eq $temp2)
{
if($m3==0)
{
$ms3=$i;
}
$m3++;
$total++;
}
}
}
for($i=0;$i<($arrsize-4);$i=$i+$motif)
{
if($codearr[$i] ne $codearr[$i+1])
{
$temp1 = join("",$codearr[$i],$codearr[$i+1],$codearr[$i+2],$codearr[$i+3]);
$temp2 = join("",$codearr[$i+4],$codearr[$i+5],$codearr[$i+6],$codearr[$i+7]);
if($temp1 eq $temp2)
{
if($m4==0)
{
$ms4=$i;
}
$m4++;
$total++;
}
}
}
}
if($motif==5)
{
for($i=0;$i<($arrsize-2);$i=$i+$motif)
{if($codearr[$i] ne $codearr[$i+1])
{
$temp1 = join("",$codearr[$i],$codearr[$i+1]);
$temp2 = join("",$codearr[$i+2],$codearr[$i+3]);
if($temp1 eq $temp2)
{
if($m2==0)
{
$ms1=$i;
}
$total++;
$m2++;
}
} }
for($i=0;$i<($arrsize-3);$i=$i+$motif)
{
if($codearr[$i] ne $codearr[$i+1])
{
$temp1 = join("",$codearr[$i],$codearr[$i+1],$codearr[$i+2]);
$temp2 = join("",$codearr[$i+3],$codearr[$i+4],$codearr[$i+5]);
if($temp1 eq $temp2)
{
if($m3==0)
{
$ms3=$i;
}
$total++;
$m3++;
}
}
}
for($i=0;$i<($arrsize-4);$i=$i+$motif)
{
if($codearr[$i] ne $codearr[$i+1])
{
$temp1 = join("",$codearr[$i],$codearr[$i+1],$codearr[$i+2],$codearr[$i+3]);
$temp2 = join("",$codearr[$i+4],$codearr[$i+5],$codearr[$i+6],$codearr[$i+7]);
if($temp1 eq $temp2)
{
if($m4==0)
{
$ms4=$i;
}
$total++;
$m4++;
}
}
}
for($i=0;$i<($arrsize-5);$i=$i+$motif)
{if($codearr[$i] ne $codearr[$i+1])
{
$temp1 = join("",$codearr[$i],$codearr[$i+1],$codearr[$i+2],$codearr[$i+3],$codearr[$i+4]);
$temp2 = join("",$codearr[$i+5],$codearr[$i+6],$codearr[$i+7],$codearr[$i+8],$codearr[$i+9]);
if($temp1 eq $temp2)
{
if($m5==0)
{
$ms5=$i;
}
$total++;
$m5++;
}
}
}
}
if($motif==2)
{
if($min<$total)
{
print"Number of Dimer repeats : ";
print $m2;
print"\n";
print"First position : ";
print $ms1;
print "\n";
print "Sequence Lenght : ";
print $arrsize;
print "\n";
}
else
{
print "No or less than minimum SSRs found";}
}
if($motif==3)
{
if($min<$total)
{
print"Number of Dimer repeats : ";
print $m2;
print"\n";
print"First position : ";
print $ms1;
print "\n";
print "Sequence Lenght : ";
print $arrsize;
print "\n";
print"Number of Trimer repeats : ";
print $m3;
print"\n";
print"First position : ";
print $ms3;
print "\n";
print "Sequence Lenght : ";
print $arrsize;
print "\n";
}
else
{
print "No or less than minimum SSRs found";}
}
if($motif==4)
{
if($min<$total)
{
print"Number of Dimer repeats : ";
print $m2;
print"\n";
print"First position : ";
print $ms1;
print "\n";
print "Sequence Lenght : ";
print $arrsize;
print "\n";
print"Number of Trimer repeats : ";
print $m3;
print"\n";
print"First position : ";
print $ms3;
print "\n";
print "Sequence Lenght : ";
print $arrsize;
print "\n";
print"Number of Tetramer repeats : ";
print $m4;
print"\n";
print"First position : ";
print $ms4;
print "\n";
print "Sequence Lenght : ";
print $arrsize;
print "\n";
}
else
{
print "No or less than minimum SSRs found";}
}
if($motif==5)
{
if($min<$total)
{
print"Number of Dimer repeats : ";
print $m2;
print"\n";
print"First position : ";
print $ms1;
print "\n";
print "Sequence Lenght : ";
print $arrsize;
print "\n";
print"Number of Trimer repeats : ";
print $m3;
print"\n";
print"First position : ";
print $ms3;
print "\n";
print "Sequence Lenght : ";
print $arrsize;
print "\n";
print"Number of Tetramer repeats : ";
print $m4;
print"\n";
print"First position : ";
print $ms4;
print "\n";
print "Sequence Lenght : ";
print $arrsize;
print "\n";
print"Number of Pentamer repeats : ";
print $m5;
print"\n";
print"First position : ";
print $ms5;
print "\n";
print "Sequence Lenght : ";
print $arrsize;
print "\n";
}
else
{
print "No or less than minimum SSRs found";}
}
perl 코드가 너무 많이 반복됩니다. 또한, 각각의 고유 한 반복을 자신의 위치와 함께 저장하여 무엇을 의미하는지 명확히 할 수 있습니까? (어쩌면 ** 입력 ** 및 ** 예상 출력 **의 테스트 케이스가 있음) –
알다시피, 나는 그냥 노력하고 있었고, 서브 루틴으로 갈 수도 있었지만, 다시, 나는 여전히 명확한 논리를 가지고 있지 않다. 내 마음 속에. – Siddharth
나는이 문제를 이해하지 못한다. –