class GeneValidator::Validations
Class that initalises a separate Validate.new()
instance for each query.
Public Class Methods
new()
click to toggle source
# File lib/genevalidator/validation.rb, line 28 def initialize @opt = opt @config = config @query_idx = query_idx end
Public Instance Methods
check_if_maker_input?()
click to toggle source
Adds 'maker' to @opt if the first definiton in the input fasta file contains MAKER's QI (quality index) score
# File lib/genevalidator/validation.rb, line 86 def check_if_maker_input? query = GeneValidator.extract_input_fasta_sequence(0) parse_query = query.scan(/>([^\n]*)\n([A-Za-z\n]*)/)[0] definition = parse_query[0].delete("\n") number = '-?\d*\.?\d*' qi_match = definition.match(/QI:#{number}\|#{number}\|#{number}\| #{number}\|#{number}\|#{number}\| #{number}\|#{number}\|#{number}/x) return if qi_match.nil? @opt[:validations] << 'maker_qi' end
get_info_on_query_sequence(seq_type = @config[:type], index = @config[:idx])
click to toggle source
get info about the query
# File lib/genevalidator/validation.rb, line 69 def get_info_on_query_sequence(seq_type = @config[:type], index = @config[:idx]) query = GeneValidator.extract_input_fasta_sequence(index) parse_query = query.scan(/>([^\n]*)\n([A-Za-z\n]*)/)[0] prediction = Query.new prediction.definition = parse_query[0].delete("\n") prediction.identifier = prediction.definition.gsub(/ .*/, '') prediction.type = seq_type prediction.raw_sequence = parse_query[1].delete("\n") prediction.length_protein = prediction.raw_sequence.length prediction.length_protein /= 3 if seq_type == :nucleotide prediction end
parse_next_iteration(iterator, prediction)
click to toggle source
# File lib/genevalidator/validation.rb, line 98 def parse_next_iteration(iterator, prediction) iterator.next if @config[:idx] < @config[:start_idx] if @opt[:blast_xml_file] BlastUtils.parse_next(iterator) elsif @opt[:blast_tabular_file] iterator.parse_next(prediction.identifier) end end
run_validations(iterator)
click to toggle source
# File lib/genevalidator/validation.rb, line 36 def run_validations(iterator) p = Pool.new(@opt[:num_threads]) if @opt[:num_threads] > 1 check_if_maker_input? while @config[:idx] + 1 < @query_idx.length prediction = get_info_on_query_sequence @config[:idx] += 1 blast_hits = parse_next_iteration(iterator, prediction) if blast_hits.nil? @config[:idx] -= 1 break end arr_idx = @config[:idx] - 1 next unless @config[:json_output][arr_idx].nil? if @opt[:num_threads] == 1 Validate.new.validate(prediction, blast_hits, @config[:idx]) else p.schedule(prediction, blast_hits, @config[:idx]) do |pred, hits, idx| Validate.new.validate(pred, hits, idx) end end end ensure p.shutdown if @opt[:num_threads] > 1 end