class MgNu::Parser::FastaIndex

Attributes

db[R]
db_name[R]
db_type[R]
filename[R]

Public Class Methods

new(filename, options = {}) click to toggle source

create a new FastaIndex parser

# File lib/mgnu/parser/fasta_index.rb, line 10
def initialize(filename, options = {})
  options = {
    :db_type => :TokyoCabinet
  }.merge!(options)

  @db_type = options[:db_type]

  @filename = filename
  if @db_type == :TokyoCabinet
    if @filename =~ /^.+\.tch$/
      @db_name = @filename
    else
      @db_name = "#{@filename}.tch"
    end
  end

  if db_type == :TokyoCabinet
    @db = Moneta.new(:TokyoCabinet, file: @db_name, type: :hdb)
  end
  parse
end

Public Instance Methods

[](name) click to toggle source
# File lib/mgnu/parser/fasta_index.rb, line 41
def [](name)
  f = nil
  if @db.key?(name)
    d = JSON.parse(@db[name])
    f = MgNu::Sequence::Fasta.new(:header => "#{name} #{d['description']}",
                                   :sequence => d['sequence'])
  end
  f
end
close() click to toggle source
# File lib/mgnu/parser/fasta_index.rb, line 51
def close
  @db.close unless @db.nil?
end
parse() click to toggle source

setup parse method for creating tokyo cabinet

# File lib/mgnu/parser/fasta_index.rb, line 33
def parse
  MgNu::Parser::Fasta.new(@filename).each do |f|
    name = f.header_name
    description = f.header_description
    @db[name] = { 'description' => description, 'sequence' => f.sequence }.to_json
  end
end