Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re^2: Deconvolutinng FastQ files

by snakebites (Initiate)
on Aug 07, 2012 at 14:02 UTC ( #985997=note: print w/ replies, xml ) Need Help??


in reply to Re: Deconvolutinng FastQ files
in thread Deconvolutinng FastQ files

Thank you browseruk. Wow.. I didn't realise you could sort out the whole thing using less than 2 dozen lines of perl script :O. I am so glad I asked. However, when testing the script out with my fastq files I got three files with a few records in each, but then the script stopped and I got the following error message:

Use of uninitialized value within %outFHs in ref-to-glob cast at Sort.pl line 14, <> line 120.

Can't use string ("") as a symbol ref while "strict refs" in use at Sort.pl line 14, <> line 120.

How can I debug this? I guess this has to do with my records? Thank you.


Comment on Re^2: Deconvolutinng FastQ files
Re^3: Deconvolutinng FastQ files
by BrowserUk (Pope) on Aug 07, 2012 at 14:24 UTC

    Line 120 of your data file contains a record where the key field (characters 4 through 7) are not one of "TTGT" "GGTT" "ACCT"

    To handle that, try this modified version:

    #! perl -sw use strict; my %outFHs = map { open my $fh, '>', "$_.fastQ" or die $!; $_ => $fh; } qw[ TTGT GGTT ACCT other ]; until( eof() ) { my @lines = map scalar <>, 1 .. 4; my $barcode = substr $lines[1], 0, 9; my $tag = substr $barcode, 3, 4; print { $outFHs{ $tag } // $outFGs{ other } } @lines; } __END__ usage: thisScript theBigfile.fastQ ## outputs to TTGT.fastQ GGTT.fastQ ACCT.fastQ ## Unrecognised records are put into "other.fastQ"

    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.

    The start of some sanity?

      I see. That makes sense since the machine that spits the results makes about 4% errors reading the first few letters just by manually inspecting my files, so sometimes TTGT might come out as TGGT or GGTT might come out as GGTA which are neither of the three barcodes I am after. I guess with the new script you posted I need to specify 'other' with all possible combination of the four letters that might be in my fastq to make sure that the script doesn't stall. Thank you again browseruk.
        so sometimes TTGT might come out as TGGT or GGTT might come out as GGTA which are neither of the three barcodes I am after.

        If you wanted to add those other barcodes to the list, they'd each get their own file.

        I guess with the new script you posted I need to specify 'other' with all possible combination of the four letters that might be in my fastq to make sure that the script doesn't stall.

        If you are happy for all the "others" to go inti a single file called 'other.fastQ', use the new version as is.

        Come to that, if you wish to simply ignore them, use this version:

        #! perl -sw use strict; my %outFHs = map { open my $fh, '>', "$_.fastQ" or die $!; $_ => $fh; } qw[ TTGT GGTT ACCT ]; until( eof() ) { my @lines = map scalar <>, 1 .. 4; my $barcode = substr $lines[1], 0, 9; my $tag = substr $barcode, 3, 4; next unless exists $outFHs{ $tag }; print { $outFHs{ $tag } } @lines; } __END__ usage: thisScript theBigfile.fastQ ## outputs to TTGT.fastQ GGTT.fastQ ACCT.fastQ ## Unrecognised records are ignored

        If there are a high proportion of other records, that could speed things up substantially.


        With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority".
        In the absence of evidence, opinion is indistinguishable from prejudice.

        The start of some sanity?

      I have just realised there was a simple typo in the code ver2.0, but ver 2 and ver 3 worked really well :O. You are an amazing perlmonk! Browseruk, we will be happy to acknowledge your contribution with the script in future publications for this work. I will PM you.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://985997]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (8)
As of 2014-08-29 11:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (280 votes), past polls