class Cheripic::Implementer
An Implementer
object for running pipeline from Cmd
object options
@!attribute [r] options
@return [Hash] a hash of required input files names as keys and user provided file paths as values taken from Cmd object
@!attribute [r] variants
@return [<Cheripic::Variants>] a Variants object initialized using options from Cmd object
Attributes
has_run[R]
options[R]
variants[R]
Public Class Methods
new(inputs)
click to toggle source
Initializes an Implementer
object using inputs from cmd object @param inputs [Hash] a hash of trollop option names as keys and user or default setting as values from Cmd
object
# File lib/cheripic/implementer.rb, line 23 def initialize(inputs) set1 = %i{assembly input_format mut_bulk bg_bulk mut_bulk_vcf bg_bulk_vcf hmes_frags bfr_frags mut_parent bg_parent repeats_file} @options = OpenStruct.new(inputs.select { |k| set1.include?(k) }) set2 = %i{hmes_adjust htlow hthigh mindepth maxdepth max_d_multiple min_non_ref_count min_indel_count_support ambiguous_ref_bases mapping_quality base_quality noise cross_type use_all_contigs include_low_hmes polyploidy bfr_adjust sel_seq_len} settings = inputs.select { |k| set2.include?(k) } Options.update(settings) logger.debug "parameter values set\n#{Options.current_values.to_yaml}" @vars_extracted = false @has_run = false end
Public Instance Methods
extract_vars()
click to toggle source
Initializes a Variants
object using using input options (files). Each pileup file is processed and bulks are compared
# File lib/cheripic/implementer.rb, line 64 def extract_vars @variants = Variants.new(@options) @variants.compare_pileups @vars_extracted = true end
process_variants(pos_type)
click to toggle source
Extracted variants from bulk comparison are re-analysed and selected variants are written to a file
# File lib/cheripic/implementer.rb, line 72 def process_variants(pos_type) if pos_type == :hmes_frags @variants.verify_bg_bulk_pileup end # print selected variants that could be potential markers or mutation out_file = File.open(@options[pos_type], 'w') out_file.puts "HMES\tAlleleFreq\tlength\tseq_id\tposition\tref_base\tcoverage\tbases\tbase_quals\tsequence_left\tAlt_seq\tsequence_right" regions = Regions.new(@options.assembly) @variants.send(pos_type).each_key do | frag | contig_obj = @variants.assembly[frag] if pos_type == :hmes_frags positions = contig_obj.hm_pos.keys score = contig_obj.hme_score else positions = contig_obj.hemi_pos.keys score = contig_obj.bfr_score end positions.each do | pos | pileup = @variants.pileups[frag].mut_bulk[pos] seqs = regions.fetch_seq(frag,pos) out_file.puts "#{score}\t#{contig_obj.hm_pos[pos]}\t#{contig_obj.length}\t#{pileup.to_s.chomp}\t#{seqs[0]}\t#{pileup.consensus}\t#{seqs[1]}" end end out_file.close end
run()
click to toggle source
Wrapper to extract and isolate selected variants implements extract_vars
and process_variants
and if data is from polyploids extracts contigs with high bfr
# File lib/cheripic/implementer.rb, line 101 def run unless @vars_extracted self.extract_vars end self.process_variants(:hmes_frags) if Options.polyploidy self.process_variants(:bfr_frags) end @has_run = true end