Module: Bioinform::CLI::SplitMotifs

Extended by:
Helpers
Defined in:
lib/bioinform/cli/split_motifs.rb

Class Method Summary collapse

Methods included from Helpers

basename_changed_extension, basename_wo_extension, change_folder_and_extension, name_wo_extension, set_extension, set_folder

Class Method Details

.main(argv) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/bioinform/cli/split_motifs.rb', line 8

def self.main(argv)
  options = {folder: '.'}
  opt_parser = OptionParser.new do |opts|
    opts.version = ::Bioinform::VERSION
    opts.banner = "Motif splitter.\n" +
                  "It gets a file with a set of motifs and splits it into motifs according to their names.\n" +
                  "\n" +
                  "Usage:\n" +
                  "  split_motifs [options] <collection-file>"
    opts.on('-e', '--extension EXT', 'Extension of output files') do |v|
      options[:extension] = v
    end
    opts.on('-f', '--folder FOLDER', 'Where to save output files') do |v|
      options[:folder] = v
    end
  end

  opt_parser.parse!(argv)
  folder = options[:folder]
  extension = options[:extension]
  collection_filename = argv.first


  Dir.mkdir(folder)  unless Dir.exist?(folder)
  raise "Collection file not specified"  unless collection_filename
  raise "File `#{collection_filename}` not exist"  unless File.exist?(collection_filename)

  motif_list_string = File.read(collection_filename)
  coll = MotifSplitter.new.split(motif_list_string).map do |motif_string|
    motif_info = MatrixParser.new.parse(motif_string)
    MotifModel::PM.new(motif_info[:matrix]).named(motif_info[:name])
  end

  coll.each do |motif|
    File.open(set_folder(folder, set_extension(motif.name, extension || 'mat')), 'w'){|f| f.puts motif }
  end
end