lib/cheripic/options.rb
#!/usr/bin/env ruby
module Cheripic
# A class to get default settings and update user settings for parameters
# and facilitate retrieval of settings any where in the module
class Options
# Default parameter settings
@def_settings = {
:hmes_adjust => 0.5,
:htlow => 0.25,
:hthigh => 0.75,
:mindepth => 6,
:maxdepth => 0,
:max_d_multiple => 5,
:min_non_ref_count => 3,
:min_indel_count_support => 3,
:ambiguous_ref_bases => false,
:mapping_quality => 20,
:base_quality => 15,
:noise => 0.1,
:cross_type => 'back',
:use_all_contigs => false,
:include_low_hmes => false,
:polyploidy => false,
:bfr_adjust => 0.05,
:sel_seq_len => 50
}
# set defaults as user settings
@user_settings = @def_settings
# A value to adjust calculation of Homozygosity Enrichment Score (HMES)
# @return [Float]
def self.hmes_adjust
@user_settings[:hmes_adjust]
end
# Lower cut off of Allele fraction for categorization of an variant to heterozygous
# @return [Float]
def self.htlow
@user_settings[:htlow]
end
# Higher cut off of Allele fraction for categorization of an variant to heterozygous
# @return [Float]
def self.hthigh
@user_settings[:hthigh]
end
# Minimum read coverage at the variant position to be considered for analysis
# @return [Integer]
def self.mindepth
@user_settings[:mindepth]
end
# Maximum read coverage at the variant position to be considered for analysis
# @return [Integer]
def self.maxdepth
@user_settings[:maxdepth]
end
# Setting maximum read coverage at the variant position to be considered for analysis
# @param value [Integer] provided integer value will be updated as maxdepth
# @return [Integer] updated maxdepth value
def self.maxdepth=(value)
@user_settings[:maxdepth] = value
end
# Multiplication factor to average coverage to calculate maximum read coverage
# at the variant position to be considered for analysis
# @return [Integer]
def self.max_d_multiple
@user_settings[:max_d_multiple]
end
# Minimum non reference count at the variant position to be considered for analysis
# @return [Integer]
def self.min_non_ref_count
@user_settings[:min_non_ref_count]
end
# Minimum reads supporting an indel at the variant position to be considered for analysis as indel
# @return [Integer]
def self.min_indel_count_support
@user_settings[:min_indel_count_support]
end
# Option to whether to ignore or consider the reference positions which are ambiguous
# @note switching option name here so Pileup options are same
# @return [Boolean]
def self.ignore_reference_n
@user_settings[:ambiguous_ref_bases] ? false : true
end
# Minimum alignment mapping quality of the read to be used for bam files
# @return [Integer]
def self.mapping_quality
@user_settings[:mapping_quality]
end
# Minimum aligned base quality at the variant position to be considered for analysis
# @return [Integer]
def self.base_quality
@user_settings[:base_quality]
end
# Threshold for fraction of read bases at variant position below which are ignored as noise
# @return [Float]
def self.noise
@user_settings[:noise]
end
# Option for cross type used for generating bulk population
# @note options are either 'back' or 'out'
# @return [String]
def self.cross_type
@user_settings[:cross_type]
end
# Option to whether to ignore or consider the contigs with out any variants
# @return [Boolean]
def self.use_all_contigs
@user_settings[:use_all_contigs]
end
# Option to whether to ignore or consider the contigs with low HME score
# @return [Boolean]
def self.include_low_hmes
@user_settings[:include_low_hmes]
end
# Option to whether to set the input data is from polyploid or not
# @return [Boolean]
def self.polyploidy
@user_settings[:polyploidy]
end
# A value to adjust calculation of bulk frequency ratio (bfr)
# @return [Float]
def self.bfr_adjust
@user_settings[:bfr_adjust]
end
# Number of nucleotides of sequence to select from each side of the selected variant
# @return [Integer]
def self.sel_seq_len
@user_settings[:sel_seq_len]
end
# Updates the values of options using a hash generated from user inputs
# @param newset [Hash] a hash of option names as keys user settings as values
def self.update(newset)
@user_settings = @def_settings.merge(newset)
end
# Resets the values of options to defaults
def self.defaults
@user_settings = @def_settings
end
# Resets the values of options to defaults
def self.current_values
@user_settings
end
end
end