class Bio::Sequence::Format::Formatter::Fasta_numeric

INTERNAL USE ONLY, YOU SHOULD NOT USE THIS CLASS. Simple FastaNumeric format output class for Bio::Sequence.

Public Class Methods

new() click to toggle source

INTERNAL USE ONLY, YOU SHOULD NOT CALL THIS METHOD.

Creates a new FastaNumericFormat generater object from the sequence.

It does not care whether the content of the quality score is consistent with the sequence or not, e.g. it does not check length of the quality score.


Arguments:

  • sequence: Bio::Sequence object

  • (optional) :header => header: (String) (default nil)

  • (optional) :width => width: (Fixnum) (default 70)

# File lib/bio/db/fasta/format_qual.rb, line 28
def initialize; end

Public Instance Methods

output() click to toggle source

INTERNAL USE ONLY, YOU SHOULD NOT CALL THIS METHOD.

Output the FASTA format string of the sequence.

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

s = Bio::Sequence.new('atgc')
s.quality_scores = [ 70, 80, 90, 100 ]
puts s.output(:fasta_numeric)

Returns

String object

# File lib/bio/db/fasta/format_qual.rb, line 41
def output
  header = @options[:header]
  width = @options.has_key?(:width) ? @options[:width] : 70
  seq = @sequence.seq.to_s
  entry_id = @sequence.entry_id || 
    "#{@sequence.primary_accession}.#{@sequence.sequence_version}"
  definition = @sequence.definition
  header ||= "#{entry_id} #{definition}"

  sc = fastanumeric_quality_scores(seq)
  if width then
    if width <= 0 then
      main = sc.join("\n")
    else
      len = 0
      main = sc.collect do |x|
        str = (len == 0) ? "#{x}" : " #{x}"
        len += str.size
        if len > width then
          len = "#{x}".size
          str = "\n#{x}"
        end
        str
      end.join('')
    end
  else
    main = sc.join(' ')
  end

  ">#{header}\n#{main}\n"
end