lib/cheripic/regions.rb in cheripic-1.0.0 vs lib/cheripic/regions.rb in cheripic-1.1.0
- old
+ new
@@ -2,35 +2,51 @@
require 'bio-samtools'
require 'forwardable'
module Cheripic
+ # Custom error handling for Regions class
class RegionsError < CheripicError; end
+ # An application of Bio::DB::Fasta object that lets to extract selected regions of the fasta entries
+ #
+ # @!attribute [r] reference_db
+ # @return [Bio::DB::Fasta::FastaFile] indexed fasta object
+ # @!attribute [r] id_len
+ # @return [Hash] a hash of fasta entry ids as keys and sequence length as values
class Regions
include Enumerable
extend Forwardable
def_delegators :@id_len, :each, :each_key, :each_value, :length, :[]
- attr_accessor :reference_db, :id_len
+ attr_reader :reference_db, :id_len
+ # creates a Regions object using fasta
+ #
+ # @param assembly [String] path to a fasta file
def initialize(assembly)
@reference_db = Bio::DB::Fasta::FastaFile.new({:fasta=>assembly})
@id_len = {}
self.get_id_len
end
+ # A method to extract fasta entry ids and length and make a hash
+ #
+ # @return [Hash] a hash of fasta entry ids as keys and sequence length as values
def get_id_len
@reference_db.load_fai_entries
@reference_db.index.entries.each_entry do | entry |
@id_len[entry.id] = entry.length
end
end
- # for each id and position returns left and right sequence
- # of pre-selected length
+ # A method to returns left and right sequence of specified length, for a provided id and position
+ # @note this method excludes the base at the position provided
+ # @param id [String]
+ # @param pos [Integer]
+ # @return [Array<String>]
def fetch_seq(id, pos)
- limit = Options.params.sel_seq_len + 1
+ limit = Options.sel_seq_len + 1
len = @id_len[id]
low = pos-limit <= 0 ? 0 : pos-limit
high = pos+limit >= len ? len : pos+limit
region = Bio::DB::Fasta::Region.parse_region("#{id}:#{low}-#{pos-1}")
seq_left = @reference_db.fetch_sequence(region)