Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery

Re: Creating 2 arrays from a larger array

by tangent (Vicar)
on Mar 08, 2012 at 02:43 UTC ( #958408=note: print w/replies, xml ) Need Help??

in reply to Creating 2 arrays from a larger array

Not sure of your data but this might help:
my @seqList; my @sequences; my $dnaString; my $count = 0; my @DNA = <DATA>; foreach my $line (@DNA) { if ($line=~/^>(\S+)/){ push (@seqList, $1); push (@sequences, $dnaString) if $count++; $dnaString = ''; } else { chomp $line; $dnaString .= $line; } } push (@sequences, $dnaString); # need to push last one __DATA__ >123 blah abcdef ghijkl >456 de dah mnopqr >789 nothing wanted here stuvwxyz # OUTPUT @seqList = ( '123', '456', '789' ); @sequences = ( 'abcdefghijkl', 'mnopqr', 'stuvwxyz' );

Replies are listed 'Best First'.
Re^2: Creating 2 arrays from a larger array
by imtakinbioinformatic (Initiate) on Mar 08, 2012 at 03:18 UTC
    Thanks tangent! I'm confused how  push (@sequences, $dnaString) ever operates. If the string matches >, it goes to the seqList array, so how is the @sequences array being created?
      You are in a loop, so $dnaString is being added to everytime the line doesn't match your start pattern. $dnaString is always one step behind @seqList so when you come to the next start line, it pushes the previous $dnaString onto @sequences, then clears it for the next iteration. Best thing to do is try it: set $count = 1 and see what happens.

      Update: after re-reading this I'm a bit confused myself. Better to put a print statement within the loop:
      my $dnaString = ''; ... if ($line=~/^>(\S+)/){ print qq|Count: $count, Match: $1, String: $dnaString\n|; push (@seqList, $1);
        uggg still not getting it. No errors but the elements I printed were all the same. I'll keep working, thanks for explaining!
        Yeah here's the file

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://958408]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (4)
As of 2018-04-21 16:24 GMT
Find Nodes?
    Voting Booth?