require 'maasha/biopieces'
require 'maasha/seq'
-require 'pp'
casts = []
casts << {:long=>'size', :short=>'s', :type=>'uint', :mandatory=>false, :default=>4, :allowed=>nil, :disallowed=>'0'}
casts << {:long=>'type', :short=>'t', :type=>'string', :mandatory=>false, :default=>"dna", :allowed=>"dna,rna,protein", :disallowed=>nil}
-bp = Biopieces.new
-
-options = bp.parse(ARGV, casts)
+options = Biopieces.options_parse(ARGV, casts)
oligos = Seq.generate_oligos(options[:size], options[:type])
-bp.each_record do |record|
- if record.has_key? :SEQ
- kmers = {}
- oligos.each { |oligo| kmers[oligo.upcase] = 0 }
+Biopieces.open(options[:stream_in], options[:stream_out]) do |input, output|
+ input.each_record do |record|
+ if record.has_key? :SEQ
+ kmers = {}
+ oligos.each { |oligo| kmers[oligo.upcase] = 0 }
+
+ (0 ... record[:SEQ].length - options[:size]).each do |i|
+ kmer = record[:SEQ][i .. i + options[:size] - 1].upcase
+ kmers[kmer] += 1 if kmers[kmer]
+ end
- (0 ... record[:SEQ].length - options[:size]).each do |i|
- kmer = record[:SEQ][i .. i + options[:size] - 1].upcase
- kmers[kmer] += 1 if kmers[kmer]
+ record.merge! kmers
end
- record.merge! kmers
+ output.puts record
end
-
- bp.puts record
end
+
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<