# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-require 'biopieces'
-require 'fasta'
-require 'prodigal'
+require 'maasha/biopieces'
+require 'maasha/fasta'
+require 'maasha/prodigal'
casts = []
-casts << {:long=>'full', :short=>'f', :type=>'flag', :mandatory=>false, :default=>nil, :allowed=>nil, :disallowed=>nil}
-casts << {:long=>'full', :short=>'p', :type=>'procedure', :mandatory=>true, :default=>'single', :allowed=>'single,meta', :disallowed=>nil}
+casts << {:long=>'full', :short=>'f', :type=>'flag', :mandatory=>false, :default=>nil, :allowed=>nil, :disallowed=>nil}
+casts << {:long=>'procedure', :short=>'p', :type=>'string', :mandatory=>true, :default=>'single', :allowed=>'single,meta', :disallowed=>nil}
-bp = Biopieces.new
+options = Biopieces.options_parse(ARGV, casts)
-options = bp.parse(ARGV, casts)
+tmpdir = Biopieces.mktmpdir
+infile = File.join(tmpdir, "in.fna")
+outfile = File.join(tmpdir, "out.prodigal")
-tmpdir = bp.mktmpdir
-infile = "#{tmpdir}/in.fna"
-outfile = "#{tmpdir}/out.prodigal"
+Biopieces.open(options[:stream_in], options[:stream_out]) do |input, output|
+ Fasta.open(infile, mode="w") do |fasta_io|
+ input.each_record do |record|
+ output.puts record
-Fasta.open(infile, mode="w") do |fasta_io|
- bp.each_record do |record|
- bp.puts record
- fasta_io.puts record
+ if record[:SEQ_NAME] and record[:SEQ]
+ seq = Seq.new_bp(record)
+ fasta_io.puts seq.to_fasta
+ end
+ end
end
-end
-prodigal = Prodigal.new(infile, outfile, options)
-prodigal.run
+ prodigal = Prodigal.new(infile, outfile, options)
+ prodigal.run
-prodigal.each do |record|
- record[:DEFINITION].match /seqhdr="([^"]+)/ do |m|
- record[:S_ID] = $1
+ prodigal.each do |record|
+ output.puts record
end
-
- bp.puts record
end