Module: Diadem::Cubic::Commandline

Defined in:
lib/diadem/cubic/commandline.rb

Class Method Summary collapse

Class Method Details

.parse(argv) ⇒ Object



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
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/diadem/cubic/commandline.rb', line 9

def parse(argv)
  make_range = ->(start,stop,step) { Range.new(start, stop).step(step) }

  start = 0.0
  stop = 0.1
  step = 0.002
  opt = OpenStruct.new( {
    carbamidomethyl: true,
    oxidized_met: true,
    pyroglutamate_from_glutamine: true,
    element: :H,
    mass_number: 2,
    range: make_range[ start, stop, step ],
    degree: 3,
    header: true,
    num_isotopomers: 5,
    zero: false,
    remove_duplicates: true,
  } )
                      
  parser = OptionParser.new do |op|
    prog = File.basename($0)
    op.banner =  "usage: #{prog} <AASEQ> ..." 
    op.separator "   or: #{prog} <aaseqs>.csv" 
    op.separator "       <aaseqs>.csv is a single column of AA sequences"
    op.separator "        (csv file should have no header; blank lines will be ignored)"
    op.separator ""
    op.separator "output: tab delimited to stdout if AASEQ"
    op.separator "        <aaseqs>#{Diadem::Cubic::FILE_EXT} if csv input"
    op.separator ""
    op.separator "options:"
    op.on("-e", "--element <#{opt.element}>", "element with isotopic label") {|v| opt.element = v.to_sym }
    op.on("-m", "--mass-number <#{opt.mass_number}>", Integer, "the labeled element mass number") {|v| opt.mass_number = v }
    op.on("--[no-]carbamidomethyl", "default: carbamidomethyl = true") {|v| opt.carbamidomethyl = v }
    op.on("--range <start:stop:step>", "the underlying input values (#{[start, stop, step].join(':')})") {|v| opt.range = make_range[ *v.split(':') ] }
    op.on("--degree <#{opt.degree}>", Integer, "the degree polynomial") {|v| opt.degree = v }
    op.on("--num-isotopomers <#{opt.num_isotopomers}>", Integer, "the number of isotopomers to calculate") {|v| opt.num_isotopomers = v }
    op.on("--[no-]header", "print header line, default: true") {|v| opt.header = v }
    op.on("--return-zero-coeff", "return the 0th polyfit coefficient") {|v| opt.return_zero_coeff = v }
    op.on("--[no-]remove-duplicates", "disregard duplicate peptide entries, default: true") {|v| opt.remove_duplicates = v }
  end
  parser.parse!(argv)
  if argv.size == 0
    puts parser
    exit
  end
  [argv, opt]
end