class Bio::DB::Faidx

Public Class Methods

new(opts) click to toggle source
# File lib/bio-faidx/faidx.rb, line 10
def initialize(opts)
        @cache = false
        @cache = opts[:cache] if opts[:cache]
        @filename = opts[:filename]
        @inited = false
end

Public Instance Methods

[](entry) click to toggle source
# File lib/bio-faidx/faidx.rb, line 32
def [](entry)
        init_cache unless @inited
 @entries[entry]
end
each_entry() { |e| ... } click to toggle source
# File lib/bio-faidx/faidx.rb, line 54
def each_entry
        unless @cache
                read_entries { |e| yield e }
        else
                entries_order.each { |e|  yield @entries[e] }
        end
end
entries() click to toggle source
# File lib/bio-faidx/faidx.rb, line 27
def entries
        init_cache unless @inited
        @entries
end
entries_order() click to toggle source
# File lib/bio-faidx/faidx.rb, line 38
def entries_order
        init_cache unless @inited
        return @entries_order
end
init_cache() click to toggle source
# File lib/bio-faidx/faidx.rb, line 17
def init_cache
        @inited = true
        @entries = Hash.new
        @entries_order = Array.new
        read_entries do |e|
                @entries[e.name] = e
                @entries_order << e.name 
        end
end
read_entries() { |fasta_entry| ... } click to toggle source
# File lib/bio-faidx/faidx.rb, line 43
        def read_entries
                CSV.foreach(@filename, :col_sep => "\t", :skip_lines=>/^#/, :skip_blanks=>true) do |row|
                fasta_entry = Bio::DB::Faidx::Entry.new
                [:name, :length, :offset, :linebases, :linewidth].each_with_index do |sym, i|
                        answer = row[i]
                        answer = answer.to_i if [:length, :offset, :linebases, :linewidth].include?(sym)
                        fasta_entry.send("#{sym}=".to_sym, answer)
                        yield fasta_entry
                end
        end

        def each_entry
                unless @cache
                        read_entries { |e| yield e }
                else
                        entries_order.each { |e|  yield @entries[e] }
                end
        end
end