class Bio::DB::Pileup

Extends the methods of the Bio::DB::Pileup class in bio-samtools. A pileup object represents the SAMtools pileup format at samtools.sourceforge.net/pileup.shtml. These extension methods are used by the Bio::Util::Gngm object internally and are not exposed to the user of the Bio::Util::Gngm object through that.

Attributes

second_non_ref_count[RW]

attributes set by call to #discordant_chastity

third_non_ref_count[RW]

attributes set by call to #discordant_chastity

top_non_ref_count[RW]

attributes set by call to #discordant_chastity

Public Instance Methods

discordant_chastity() click to toggle source

calculates the discordant chastity statistic as defined in Austin et al (2011) bar.utoronto.ca/ngm/description.html and onlinelibrary.wiley.com/doi/10.1111/j.1365-313X.2011.04619.x/abstract;jsessionid=F73E2DA628523B26205297CEE95526DA.d02t04 Austin et al (2011) Next-generation mapping of Arabidopsis genes Plant Journal 67(4):7125-725

Briefly,

The statistic measures the degree of difference between the SNP and the expected reference base. 
Using the mapping information comprising a SNP, the most frequent base that is not the reference base 
is compared to the next most common base after it.
(from http://bar.utoronto.ca/ngm/description.html )
# File lib/bio/util/bio-gngm.rb, line 56
def discordant_chastity
  arr = self.non_refs.to_a.sort {|a,b| b.last <=> a.last }
  @top_non_ref_count, @second_non_ref_count, @third_non_ref_count = arr.collect {|c| c.last}
  case
  when self.non_ref_count == 0 then 0.0
  when @top_non_ref_count == @coverage then 1.0
  when @second_non_ref_count > 0 then @top_non_ref_count.to_f / (@top_non_ref_count + @second_non_ref_count).to_f
  else @top_non_ref_count.to_f / @coverage.to_f
  end
end
is_snp?(opts) click to toggle source

returns true if self is a SNP with minimum coverage depth of :min_depth and minimum non-reference bases of :min_non_ref_count returns false for every position where the reference base is N or n if :ignore_reference_n is set to true

Options and Defaults:

  • :min_depth => 2

  • :min_non_ref_count => 2

  • :ignore_reference_n => false

Example

pileup.is_snp?(:min_depth => 5, :min_non_ref_count => 2)
pileup.is_snp?(:min_depth => 5, :min_non_ref_count => 1, :ignore_reference_n => true)
# File lib/bio/util/bio-gngm.rb, line 78
def is_snp?(opts)  
  return false if self.ref_base == '*'
  #return false unless is_ct
  return false if opts[:ignore_reference_n] and self.ref_base == "N" or self.ref_base == "n"
  return true if self.coverage >= opts[:min_depth] and self.non_ref_count >= opts[:min_non_ref_count]
  false
end