Class: Bio::Sequence::Format::Formatter::Fastq

Inherits:
Bio::Sequence::Format::FormatterBase show all
Defined in:
lib/bio/db/fastq/format_fastq.rb

Overview

INTERNAL USE ONLY, YOU SHOULD NOT USE THIS CLASS.

FASTQ format output class for Bio::Sequence.

The default FASTQ format is fastq-sanger.

Direct Known Subclasses

Fastq_illumina, Fastq_solexa

Instance Method Summary collapse

Methods inherited from Bio::Sequence::Format::FormatterBase

output

Constructor Details

#initializeFastq

INTERNAL USE ONLY, YOU SHOULD NOT CALL THIS METHOD.

Creates a new Fasta format generater object from the sequence.


Arguments:

  • sequence: Bio::Sequence object

  • (optional) :repeat_title => (true or false) if true, repeating title in the “+” line; if not true, “+” only (default false)

  • (optional) :width => width: (Fixnum) width to wrap sequence and quality lines; nil to prevent wrapping (default nil)

  • (optional) :title => title: (String) completely replaces title line with the title (default nil)

  • (optional) :default_score => score: (Integer) default score for bases that have no valid quality scores or error probabilities; false or nil means the lowest score, true means the highest score (default nil)



31
# File 'lib/bio/db/fastq/format_fastq.rb', line 31

def initialize; end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Bio::Sequence::Format::FormatterBase

Instance Method Details

#outputObject

INTERNAL USE ONLY, YOU SHOULD NOT CALL THIS METHOD.

Output the FASTQ format string of the sequence.

Currently, this method is used in Bio::Sequence#output like so,

s = Bio::Sequence.new('atgc')
puts s.output(:fastq_sanger)

Returns

String object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/bio/db/fastq/format_fastq.rb', line 43

def output
  title = @options[:title]
  width = @options.has_key?(:width) ? @options[:width] : nil
  seq = @sequence.seq.to_s
  entry_id = @sequence.entry_id || 
    "#{@sequence.primary_accession}.#{@sequence.sequence_version}"
  definition = @sequence.definition
  unless title then
    title = definition.to_s
    unless title[0, entry_id.length] == entry_id and
        /\s/ =~ title[entry_id.length, 1].to_s then
      title = "#{entry_id} #{title}"
    end
  end
  title2 = @options[:repeat_title] ? title : ''
  qstr = fastq_quality_string(seq, @options[:default_score])

  "@#{title}\n" +
    if width then
      seq.gsub(Regexp.new(".{1,#{width}}"), "\\0\n")
    else
      seq + "\n"
    end +
    "+#{title2}\n" +
    if width then
      qstr.gsub(Regexp.new(".{1,#{width}}"), "\\0\n")
    else
      qstr + "\n"
    end
end