Class: GeneValidator::OutputFiles

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/genevalidator/output_files.rb

Overview

A Class for creating output files

Instance Method Summary collapse

Constructor Details

#initializeOutputFiles

Returns a new instance of OutputFiles.



15
16
17
18
19
20
21
# File 'lib/genevalidator/output_files.rb', line 15

def initialize()
  @config    = config
  @opt       = opt
  @dirs      = dirs
  @overview  = overview
  @json_data = @config[:json_output]
end

Instance Method Details



64
65
66
67
68
69
70
# File 'lib/genevalidator/output_files.rb', line 64

def print_best_fasta
  return unless @opt[:select_single_best]
  top_data = @json_data.max_by { |e| [e[:overall_score], e[:no_hits]] }
  query = GeneValidator.extract_input_fasta_sequence(top_data[:idx])
  File.open(@dirs[:fasta_file], 'w') { |f| f.write(query) }
  puts query
end

#write_csvObject



41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/genevalidator/output_files.rb', line 41

def write_csv
  return unless @opt[:output_formats].include? 'csv'
  File.open(@dirs[:csv_file], 'a') do |file|
    file.puts csv_header.join(',')
    @json_data.each do |data|
      short_def = data[:definition].split(' ')[0]
      line = [data[:idx], data[:overall_score], short_def, data[:nr_hits]]
      line += data[:validations].values.map { |e| e[:print] }
                                .each { |e| e.gsub!(' ', ' ') }
      line.map { |e| e.gsub!(',', ' -') if e.is_a? String }
      file.puts line.join(',')
    end
  end
end

#write_html(overall_eval) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/genevalidator/output_files.rb', line 23

def write_html(overall_eval)
  return unless @opt[:output_formats].include? 'html'
  @all_html_fnames = all_html_filenames
  @json_data.each_slice(@config[:output_max]).with_index do |data, i|
    @json_data_section = data
    template_file = File.join(@dirs[:aux_dir], 'gv_results.slim')
    template_contents = File.open(template_file, 'r').read
    html_output = Slim::Template.new { template_contents }.render(self)
    File.open(@all_html_fnames[i], 'w') { |f| f.write(html_output) }
  end
  create_overview_json_file(overall_eval)
end

#write_jsonObject



36
37
38
39
# File 'lib/genevalidator/output_files.rb', line 36

def write_json
  return unless @opt[:output_formats].include? 'json'
  File.open(@dirs[:json_file], 'w') { |f| f.write(@json_data.to_json) }
end

#write_summaryObject



56
57
58
59
60
61
62
# File 'lib/genevalidator/output_files.rb', line 56

def write_summary
  return unless @opt[:output_formats].include? 'summary'
  data = generate_summary_data
  File.open(@dirs[:summary_file], 'w') do |f|
    f.write data.map(&:to_csv).join
  end
end