2017-05-30 24 views
-4

我正在嘗試獲取fasta文件中匹配模式的計數。我從一個包含57k序列的fasta文件開始。我想拉我的匹配模式序列的數顯模式的起始位置fasta文件中的模式計數器

輸入文件:

chr1 ATTAG**CAGAT**GTGACGTCGATGT**CAGAT**TG 

chr2 TGAGCTG**CAGAT**CGTAGATGATTCTGCAGGAACCT 

chr3 TCTTT**CAGAT**GCCTCTG**CAGAT**TC 

搜索模式「CAGAT」

輸出所需:

chr計數P1 P2

chr1 - 2 - 6 - 25

CHR2 - 1 - 8

CHR 3 - 2 - 6 - 19

在此先感謝

+0

你嘗試過什麼?如果你在一個變量中解析整個序列,你就會告訴基因組序列,它會走出內存。您應該逐行解析文件。 – mkHun

+0

感謝您的回覆, 我不想解析序列,我只想要每個染色體中存在匹配模式的數量。 –

+0

請向您展示實際輸入或鏈接NCBI網址。我不明白'chr1 - 2 - 6 - 25'這個輸出。 – mkHun

回答

1

我假設你的文件與選項卡作爲分隔符分隔。

open(my $in,"<:utf8","in.txt") or die "Cannot open FILE in.txt : $!\n"; 

    while(<$in>) { 
     chomp($_); 
     my $cur = $_; 
     #$print "iam $cur\n"; 
     my @tt = split(/\t/,$cur); #assuming you file tobe tab seperated 
     my $s1 = $tt[1]; 
     my $s2 = "CAGAT"; 
     my @val; 
     print "$cur\t"; 
     while ($s1 =~ /($s2)/g) { 
      push(@val, $-[0]); #$-[0] is the offset of the start of the last successful match. 
     } 
     my $count = @val; 
     @val = join(",",@val); 
     print " No of Matches:$count Starting positions:@val\n"; 

    } 

in.txt

chr1 ATTAG**CAGAT**GTGACGTCGATGT**CAGAT**TG 

chr2 TGAGCTG**CAGAT**CGTAGATGATTCTGCAGGAACCT 

chr3 TCTTT**CAGAT**GCCTCTG**CAGAT**TC