On 21/10/2011 00:32, nac wrote:
> HI again,
> I have corrected myself a bit, I think the script is now giving me what I
> want, having said that, I guess it is not the best way ( even if there is
> more than one way), again any pointer are welcome.
> many thanks
> Nat
> #!/usr/bin/perl
> use strict;
> use warnings;
> my @seq;
> @seq=qw{^TGGCAGTGGAGG ^TGTCTGGCAGTG ^TG....GCAGTG TCTGTCTG TCTGGCAG
> GCAGTGGA TGTCTGGC ^TGTCTGGC ^..TCTGGCAGTG ^TGTCTGGCAGTG ^TGCATGGC};
> 
> open (IN,"</Users/nac/Desktop/example.fastq") or die
> "can't open in:$!";
> open
> (OUT,">>//Users/nac/Desktop/example.fastq\_class_COUNTED2.txt")
> or die "can't open out: $!";
> my %final_hash;
>        while (<IN>) {
> 
> 
>     if (/^A|T|G|C/){
> print my $seq_line=$_;
> foreach my $ff (@seq){
>       if ($seq_line =~ /$ff/g){
> 
>          if (!exists $final_hash{$ff}) {
>              $final_hash{$ff}=1;
>          } else {
>          $final_hash {$ff}++;
>                        }
>      }
>      }
> }
> }
> for my $key (sort {$final_hash {$b}<=>  $final_hash {$a}}keys
> %final_hash){
>      my $value=$final_hash{$key};
>       print OUT $key,"\t",$value, "\n";
> }

The following script seems to do the trick. As per John's comments, you
don't open IN or OUT in your original script so I have used DATA and
STDOUT instead.

It works by building a regex from the contents of the array, joining the
elements with the alternation symbol '|'. Then you can do the pattern
matching in a single step.

It produces the output

@MF8V4:4:156  2
@MF8V4:4:197  2
@MF8V4:4:170  2
@MF8V4:4:164  2
@MF8V4:4:162  2
@MF8V4:4:620  1
@MF8V4:4:199  1
@MF8V4:4:210  1
@MF8V4:4:602  1
@MF8V4:4:215  1
@MF8V4:4:214  1
@MF8V4:4:211  1

Hope this helps,

Rob


use strict;
use warnings;
 
my @sequences = qw{
  ^TGGCAGTGGAGG   ^TGTCTGGCAGTG   ^TG....GCAGTG   TCTGTCTG
  TCTGGCAG        GCAGTGGA        TGTCTGGC        ^TGTCTGGC
  ^..TCTGGCAGTG   ^TGTCTGGCAGTG   ^TGCATGGC
};

my $sequence_re = join '|', @sequences;
$sequence_re = qr/$sequence_re/;

my %final_hash;

while (<DATA>) {
  next unless /^@/;
  my $seq = <DATA>;
  chomp;
  $final_hash{$_}++ if $seq =~ $sequence_re;
}

for my $key (sort {$final_hash {$b} <=> $final_hash {$a}} keys %final_hash) {
  my $value = $final_hash{$key};
  print "$key\t$value\n";
}

__DATA__
@MF8V4:4:156
TGGCAGTGGAGGAAGTCTCTTTAAGAAAATAGTTTAAACAATTTGTTAAAAATTTTCCGTCTTATTTCATTTCTGTAACAGTTGATATCTGGCTGTCCA
+
:<:<<>;<=====>>==<:893583368-9<;:;1::35::;;6;;7;;99+7<<-;<::136999499::4:9189;;<1::9;8851.0+...+2/2

@MF8V4:4:162
CTCTGGCAGTGGAGGAAGTCTCTTTAAGAAAATAGTTTAAACAATTTGTTAAAAAATTTTCCGTCTTATTTCATTTCTGTAACAGTTGATACTTCGTAGGCTGTCCA
+
88888988885.21*205168888.833555+888.6.68-12+23*04444444&446,662/-4355606766136.43(+,,-*--+-(+&,+---),10++.1

@MF8V4:4:164
CTGGCAGTGGAGGAAGTCTCTTTAAGAAAATAGTTTAAACAATTTGTTAAAAAATTTTCCGTCTTATTTCATTTCTAGTTACATATTGATATCTGTCTGTCA
+
8889888887886848865565-545888,88868188056155+14+..000&233(6-+(,,,1,1-..11+22.+-+((+,(,&-..,,..,,131-0+

@MF8V4:4:170
TGGCAGTGGAGGAAGTCTCTTTAAGAAAATAGTTTAAACAATTTGTTAAAAATTTTCCGTTCTTAATTTCATTTCTGTAACAGTTGATATCTGGCTGTCA
+
>>>> ;;21,22;=;;<<9998/391034*3;9<<5<=;>>=<;265+-//0),<<,27,,(,5/2.76/58990998785::::<<;97==10.,85,,(

@MF8V4:4:171
CTCTAGGCTGAGATATGAGGAAGTACTCTTTAAGAAAATAGTTTAAACAATTAT+
864/.+*++---,0,1,155,.,10/-+--',,,,,,&,/.,1(11+11.1211

@MF8V4:4:191
ATTCAAGATCTCTGCGAGAGTGGAAGATCTTCTTAAAGAAATAGTTTAACATTGTTAAATTTCAATTTCATTATTCTTTCTTGATTTGTGATACATTGATA
+
668884886556/-+-,((+,0-0),(+,-*,,(0/),,,&(/--/&--/011-1(11+,0'-+'--&,,(/,1,0-/&(,,(((,&+++/0/,+(-0,,,

@MF8V4:4:197
CAAGATCTCTGGCAGTGAGGAAGTCCTTATAAGTAAGATTAAGATTTGTAAAACATTTTTGTAAAATTTTCCTATCATTTCTACTGAATTATATGTCTGCCA
+
88958898888888,,)3823/351*0,,((+,+,((-/+-*+---'+0000&,,(,,,&(,(,,&(//&0,,(,--,-(cbi4a[nac]17:
 which perl

@MF8V4:4:156
TGGCAGTGGAGGAAGTCTCTTTAAGAAAATAGTTTAAACAATTTGTTAAAAATTTTCCGTCTTATTTCATTTCTGTAACAGTTGATATCTGGCTGTCCA
+
:<:<<>;<=====>>==<:893583368-9<;:;1::35::;;6;;7;;99+7<<-;<::136999499::4:9189;;<1::9;8851.0+...+2/2

@MF8V4:4:162
CTCTGGCAGTGGAGGAAGTCTCTTTAAGAAAATAGTTTAAACAATTTGTTAAAAAATTTTCCGTCTTATTTCATTTCTGTAACAGTTGATACTTCGTAGGCTGTCCA
+
88888988885.21*205168888.833555+888.6.68-12+23*04444444&446,662/-4355606766136.43(+,,-*--+-(+&,+---),10++.1

@MF8V4:4:164
CTGGCAGTGGAGGAAGTCTCTTTAAGAAAATAGTTTAAACAATTTGTTAAAAAATTTTCCGTCTTATTTCATTTCTAGTTACATATTGATATCTGTCTGTCA
+
8889888887886848865565-545888,88868188056155+14+..000&233(6-+(,,,1,1-..11+22.+-+
((+,(,&-..,,..,,131-0+

@MF8V4:4:170
TGGCAGTGGAGGAAGTCTCTTTAAGAAAATAGTTTAAACAATTTGTTAAAAATTTTCCGTTCTTAATTTCATTTCTGTAACAGTTGATATCTGGCTGTCA
+
>>>> ;;21,22;=;;<<9998/391034*3;9<<5<=;>>=<;265+-//0),<<,27,,(,5/2.76/58990998785::::<<;97==10.,85,,(

@MF8V4:4:171
CTCTAGGCTGAGATATGAGGAAGTACTCTTTAAGAAAATAGTTTAAACAATTAT
+
864/.+*++---,0,1,155,.,10/-+--',,,,,,&,/.,1(11+11.1211

@MF8V4:4:191
ATTCAAGATCTCTGCGAGAGTGGAAGATCTTCTTAAAGAAATAGTTTAACATTGTTAAATTTCAATTTCATTATTCTTTCTTGATTTGTGATACATTGATA
+
668884886556/-+-,((+,0-0),(+,-*,,(0/),,,&(/--/&--/011-1(11+,0'-+'--&,,(/,1,0-/&(,,(((,&+++/0/,+(-0,,,

@MF8V4:4:197
CAAGATCTCTGGCAGTGAGGAAGTCCTTATAAGTAAGATTAAGATTTGTAAAACATTTTTGTAAAATTTTCCTATCATTTCTACTGAATTATATGTCTGCCA
+
88958898888888,,)3823/351*0,,((+,+,((-/+-*+---'+0000&,,(,,,&(,(,,&(//&0,,(,--,-((,(,((1+1(1,,22((,,(&(

@MF8V4:4:199
TGGCAGTGGAGGAAGTCTCTTTAAGAAAATAGTTTAAACAATTTGTTAAAAAATTTTCCGTCTTATTTCATTTCTAGTAACATGTTGATATCTGGTCGTCCA
+
======<;8988968996344,499;<<1<<<;;+11*,73783:9788889'999+9744.6*,(2-5552,30.0/+43265564561/++-(--+-+*/

@MF8V4:4:210
CAAGATCTCTGGCAGTGAGGAAGTCTCTTTAGGAAAATAGTTTAAACATTTGTTAAATTTCAATTTCATTATTTCTTGTTACATTTCATATACGTTGATA
+
8914399:::::98710,3,5/0444110&,(&,..&14444/66-21+0&-/./0),-&--+-0)/--.(,,&,-((,/--++-&+(-(,(,(,,,((,

@MF8V4:4:211
CAAGATCTCTGGCAGTGGAGGAAGTCTCTTTAAGAAAATAGTTTAAACAATTTGTTAAAAATTTTCCATCTTATTTCATTTCTGTAACAGTTGATATCTGGCTGTCCA
+
:;99<<<<<<<<<<<::69866;<<<<<<<;<<<<<<176588(//'+6,22*.5+0122&-55(6/50144567499::156054676073977675//)+00.0+3

@MF8V4:4:214
TCAAGATCTCTGGCAGTGGAGGAAGTCTCTTTAAGAAAATAGTTTAAACAATTTGTTAAAAATTTTCCGTCTTATTTCATTTCTGGTAACATGTTGATATCTGGCTGTCA
+
778746268888;898886889838666,,,&,4,+,,&,11-1/44/44544/4464444(665(500++10001-1441-14,,1-/221113544400.0*+--(,(

@MF8V4:4:215
CAAGATCTCTGGCAGTGGAGGAAGTCTCCTTAAGAAAATAGTTTCAACAATTTGTTAAAAATTTTCCATCATTATTTCATTTCTGTTAATCAGTTGAGTATCTGCTGTCGA
+
;;576;::;;;77::9:6;:::::8735(+(,22369+877770463843771-4-....&+--'+/22+,(),22-4324.441+&1--23,63---343/.1,3,.0+0

@MF8V4:4:558
TGGCAGTGAAGAAGTCTCTTTAGAAAATAGTTTAAACATTGTTAAATTCAATTTCATTATTCTTATTACATTCTATACGTTGATA
+
>>>> ::0,)(,(/1122355',(,77*89999065,1,(((/*//'+0//-/0(/+00.0/00&,(-//,(((++-/-,/*/-,-

@MF8V4:4:580
TGGCAGCGGAGGAAGCTCTTAGAAAGAAATAGTTTAAACAGTTTTATAAATTTTCCGATCTTATTTCATTCTGTAACAGTTGATATCTGTCGTCCAC
+
> ;;;=,,(776276,((31*--..&,-3,262.2122-20+---&+++0+.22)2+-0/--+/--(/0,,,2-2286628776400(++(-+((*--

@MF8V4:4:602
TGGCAGTGGAGGAAGTCTCTTTAAGAAAATAGTTTAAACAATTTGTTAAAAATTTTCCGTCTTATTTCATTTCTGTAACATGTTGATATCTGGCTGTCCA
+
>>>>>>> =:=>===9=;3+,.&,6669=08<<3;6;;79;7;;69::;<<<,<<</<:65080209518997:<195;91/2;;;::40.++(+..+316

@MF8V4:4:605
TGGCAGCGGAGGAAGCCTCTTGAAGAAAATAGTTTAAACAGTTTTTTATAAGTTTTCCGTCTTATTTCACTTCTGTAACATGTTGATATCTGGCGTTCA
+
<=====<<:<:<<<<9;9<:;7;;;<<</<8817*33+05345778'57748977*4-110304281699:89908:;:525:7/0,712..(((,&,(

@MF8V4:4:607
TGGCAGTGGTGGAAGTCTCTTGAAGAAAATAGTTTAAACAATTTATTCAACATTTTCTGTCTTATTTCATTTCTGTAACAGTTGATATCTGGCT
+
>>> =>>>>>>>>>>>>>>>=<<=;;;<<3=;9=>.6835===<7;8;54//5568-99997998990878;3:;;;<<<====<===>;===9<

@MF8V4:4:620
TGGCAGTGGAGGAAGTCTCCTTAAGAAAATAGTTTCAACTAATTTAGTTAAAAATTTTCCATCAATTATTTCATTTCTGATAATCAGTTGTATATCTGACTGTCCGA
+
9<::=============:<98-1--99;/:=:::6/8;657775055265222'555*6412,6267643*.+(,&(+-,,(1221-1--00-/0.+,(----/&-/

-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to