Class: Bio::DB::Faidx
- Inherits:
-
Object
- Object
- Bio::DB::Faidx
- Defined in:
- lib/bio-faidx/faidx.rb
Defined Under Namespace
Classes: Entry
Instance Method Summary collapse
- #[](entry) ⇒ Object
- #each_entry ⇒ Object
- #entries ⇒ Object
- #entries_order ⇒ Object
- #init_cache ⇒ Object
-
#initialize(opts) ⇒ Faidx
constructor
A new instance of Faidx.
- #read_entries ⇒ Object
Constructor Details
#initialize(opts) ⇒ Faidx
Returns a new instance of Faidx.
10 11 12 13 14 15 |
# 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 |
Instance Method Details
#[](entry) ⇒ Object
32 33 34 35 |
# File 'lib/bio-faidx/faidx.rb', line 32 def [](entry) init_cache unless @inited @entries[entry] end |
#each_entry ⇒ Object
54 55 56 57 58 59 60 |
# 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 ⇒ Object
27 28 29 30 |
# File 'lib/bio-faidx/faidx.rb', line 27 def entries init_cache unless @inited @entries end |
#entries_order ⇒ Object
38 39 40 41 |
# File 'lib/bio-faidx/faidx.rb', line 38 def entries_order init_cache unless @inited return @entries_order end |
#init_cache ⇒ Object
17 18 19 20 21 22 23 24 25 |
# 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 ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# 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 |