Class: Bio::DB::Fasta::Region
- Inherits:
-
Object
- Object
- Bio::DB::Fasta::Region
- Defined in:
- lib/bio/db/fastadb.rb
Overview
Class to wrap a region of a chromosome
Constant Summary collapse
- BASE_COUNT_ZERO =
{:A => 0, :C => 0, :G => 0, :T => 0}
Instance Attribute Summary collapse
-
#allele_freq ⇒ Object
(also: #base_ratios)
Returns the value of attribute allele_freq.
-
#average_coverage ⇒ Object
Returns the value of attribute average_coverage.
-
#bases ⇒ Object
Returns the value of attribute bases.
-
#called ⇒ Object
Returns the value of attribute called.
-
#consensus ⇒ Object
Returns the value of attribute consensus.
-
#coverages ⇒ Object
Returns the value of attribute coverages.
-
#end ⇒ Object
Returns the value of attribute end.
-
#entry ⇒ Object
Returns the value of attribute entry.
-
#orientation ⇒ Object
Returns the value of attribute orientation.
-
#pileup ⇒ Object
Returns the value of attribute pileup.
-
#reference ⇒ Object
Returns the value of attribute reference.
-
#snps ⇒ Object
Returns the value of attribute snps.
-
#start ⇒ Object
Returns the value of attribute start.
-
#total_cov ⇒ Object
Returns the value of attribute total_cov.
Class Method Summary collapse
-
.parse_region(reg_str) ⇒ Object
Returns a region object from a string in form “name:start-end”.
Instance Method Summary collapse
-
#allele_freq_for_base(base) ⇒ Object
(also: #base_ratios_for_base)
TODO: Debug, as it hasnt been tested in the actual code.
-
#calculate_stats_from_pile(opts = {}) ⇒ Object
Calculates the concensus, base ratios, coverages and total coverages in the region * min_cov minimum coverage to make a call (default 0) * min_per minimum representation to make make a call.
-
#initialize(args = {}) ⇒ Region
constructor
A new instance of Region.
-
#size ⇒ Object
(also: #length)
Length of the region.
- #to_s ⇒ Object
Constructor Details
#initialize(args = {}) ⇒ Region
Returns a new instance of Region.
89 90 91 92 93 94 |
# File 'lib/bio/db/fastadb.rb', line 89 def initialize(args ={}) @entry = args[:entry] @start = args[:start] @end = args[:end] @orientation = args[:orientation] end |
Instance Attribute Details
#allele_freq ⇒ Object Also known as: base_ratios
Returns the value of attribute allele_freq.
87 88 89 |
# File 'lib/bio/db/fastadb.rb', line 87 def allele_freq @allele_freq end |
#average_coverage ⇒ Object
Returns the value of attribute average_coverage.
87 88 89 |
# File 'lib/bio/db/fastadb.rb', line 87 def average_coverage @average_coverage end |
#bases ⇒ Object
Returns the value of attribute bases.
87 88 89 |
# File 'lib/bio/db/fastadb.rb', line 87 def bases @bases end |
#called ⇒ Object
Returns the value of attribute called.
87 88 89 |
# File 'lib/bio/db/fastadb.rb', line 87 def called @called end |
#consensus ⇒ Object
Returns the value of attribute consensus.
87 88 89 |
# File 'lib/bio/db/fastadb.rb', line 87 def consensus @consensus end |
#coverages ⇒ Object
Returns the value of attribute coverages.
87 88 89 |
# File 'lib/bio/db/fastadb.rb', line 87 def coverages @coverages end |
#end ⇒ Object
Returns the value of attribute end.
85 86 87 |
# File 'lib/bio/db/fastadb.rb', line 85 def end @end end |
#entry ⇒ Object
Returns the value of attribute entry.
85 86 87 |
# File 'lib/bio/db/fastadb.rb', line 85 def entry @entry end |
#orientation ⇒ Object
Returns the value of attribute orientation.
85 86 87 |
# File 'lib/bio/db/fastadb.rb', line 85 def orientation @orientation end |
#pileup ⇒ Object
Returns the value of attribute pileup.
87 88 89 |
# File 'lib/bio/db/fastadb.rb', line 87 def pileup @pileup end |
#reference ⇒ Object
Returns the value of attribute reference.
87 88 89 |
# File 'lib/bio/db/fastadb.rb', line 87 def reference @reference end |
#snps ⇒ Object
Returns the value of attribute snps.
87 88 89 |
# File 'lib/bio/db/fastadb.rb', line 87 def snps @snps end |
#start ⇒ Object
Returns the value of attribute start.
85 86 87 |
# File 'lib/bio/db/fastadb.rb', line 85 def start @start end |
#total_cov ⇒ Object
Returns the value of attribute total_cov.
87 88 89 |
# File 'lib/bio/db/fastadb.rb', line 87 def total_cov @total_cov end |
Class Method Details
.parse_region(reg_str) ⇒ Object
Returns a region object from a string in form “name:start-end”
155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/bio/db/fastadb.rb', line 155 def self.parse_region(reg_str) string = reg_str.delete("'") fields_1 = string.split(":") raise FastaDBException.new(), "Invalid region. #{string}" if fields_1.length != 2 fields_2 = fields_1[1].split("-") raise FastaDBException.new(), "Invalid region. #{string}" if fields_2.length != 2 reg = Region.new(:entry=> fields_1[0], :start=>fields_2[0].to_i, :end=>fields_2[1].to_i) if reg.end < reg.start reg.orientation = :reverse else reg.orientation = :forward end reg end |
Instance Method Details
#allele_freq_for_base(base) ⇒ Object Also known as: base_ratios_for_base
TODO: Debug, as it hasnt been tested in the actual code.
97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/bio/db/fastadb.rb', line 97 def allele_freq_for_base(base) @all_ratios = Hash.new unless @all_ratios unless @all_ratios[base] ratios = Array.new for i in (0..region.size-1) ratios << @allele_freq[i][base] end @all_ratios[base] = ratios end @all_ratios[base] end |
#calculate_stats_from_pile(opts = {}) ⇒ Object
Calculates the concensus, base ratios, coverages and total coverages in the region
-
min_cov minimum coverage to make a call (default 0)
-
min_per minimum representation to make make a call. If more than one base
can be called, the IUAPC ambiguity code is returned
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
# File 'lib/bio/db/fastadb.rb', line 116 def calculate_stats_from_pile(opts={}) min_cov = opts[:min_cov] ? opts[:min_cov] : 0 min_per = opts[:min_per] ? opts[:min_per] : 0.20 self.called = 0 reference = self.reference.downcase self.allele_freq = Array.new(self.size, BASE_COUNT_ZERO) self.bases = Array.new(self.size, BASE_COUNT_ZERO) self.coverages = Array.new(self.size, 0) self.total_cov = 0 self.pileup.each do | pile | if pile.coverage > min_cov self.allele_freq[pile.pos - self.start ] = pile.allele_freq reference[pile.pos - self.start ] = pile.consensus_iuap(min_per).upcase self.coverages[pile.pos - self.start ] = pile.coverage.to_i self.bases[pile.pos - self.start ] = pile.bases self.called += 1 end #puts "#{pile.pos}\t#{bef}\t#{reference[pile.pos - region.start - 1 ]} " self.total_cov += pile.coverage end self.consensus = Bio::Sequence.new(reference) self.consensus.na if self.orientation == :reverse self.consensus.reverse_complement!() end self.average_coverage = self.total_cov.to_f/self.size.to_f self end |
#size ⇒ Object Also known as: length
Length of the region
173 174 175 |
# File 'lib/bio/db/fastadb.rb', line 173 def size @end - @start end |
#to_s ⇒ Object
149 150 151 152 |
# File 'lib/bio/db/fastadb.rb', line 149 def to_s string = @entry + ":" + @start.to_s + "-" + @end.to_s string end |