class MgNu::Parser::Fastq
Attributes
file[R]
filename[R]
Public Class Methods
new(filename = nil)
click to toggle source
create a new Fastq
parser
# File lib/mgnu/parser/fastq.rb, line 8 def initialize(filename = nil) @filename = filename if @filename if File.exists?(@filename) and File.readable?(@filename) @file = File.open(@filename) else raise "\n\n -- No file by that name (#{@filename}). Exiting\n\n" exit(1) end else $stderr.puts("MgNu::Parser::Fastq.new(): need an existing fastq file name") exit(1) end end
Public Instance Methods
each() { |fastq(:header => header, :sequence => sequence, :qualhdr => qualhdr, :quality => quality)| ... }
click to toggle source
override enumerables
# File lib/mgnu/parser/fastq.rb, line 24 def each while @file.eof != true # keep reading until EOF header = @file.readline.chomp sequence = @file.readline.chomp qualhdr = @file.readline.chomp quality = @file.readline.chomp if header =~ /^@(.*)/ header = $1 if qualhdr =~ /^\+(.*)/ qualhdr = $1 else error("Malformed quality header!") error("\n#{qualhdr}") error("\nExiting at line #{@file.lineno}") exit(1) end if header != qualhdr if qualhdr =~ /\s*/ qualhdr = header else warn("Sequence header and quality header don't match!") warn("sequence: #{header}") warn(" quality: #{qualhdr}") end end yield MgNu::Sequence::Fastq.new(:header => header, :sequence => sequence, :qualhdr => qualhdr, :quality => quality) else $stderr.puts "Malformed header!" $stderr.puts "\n#{header}" $stderr.puts "\nExiting at line #{@file.lineno}" exit(1) end end # end of while @file.eof end