require 'maasha/biopieces'
require 'maasha/fasta'
+class Hash
+ def to_bp
+ record = self
+ bp = {}
+ bp[:REC_TYPE] = "HMMER"
+ bp[:S_ID] = record[:target_name]
+ bp[:S_AC] = record[:target_accession]
+ bp[:Q_ID] = record[:query_name]
+ bp[:Q_AC] = record[:query_accession]
+ bp[:E_VAL_SEQ] = record[:e_value_sequence]
+ bp[:SCORE_SEQ] = record[:score_sequence]
+ bp[:BIAS_SEQ] = record[:bias_sequence]
+ bp[:E_VAL_DOM] = record[:e_value_domain]
+ bp[:SCORE_DOM] = record[:score_domain]
+ bp[:BIAS_DOM] = record[:bias_domain]
+ bp[:EXP] = record[:exp]
+ bp[:REG] = record[:reg]
+ bp[:CLU] = record[:clu]
+ bp[:OV] = record[:ov]
+ bp[:ENV] = record[:env]
+ bp[:DOM] = record[:dom]
+ bp[:REP] = record[:rep]
+ bp[:INC] = record[:inc]
+ bp[:DESC] = record[:description_of_target]
+
+ bp
+ end
+end
+
class Hmmer
def initialize(output_file, options)
@output_file = output_file
end
def each
+ records = []
+
File.open(@output_file, "r") do |ios|
+
+ # target name accession query name accession E-value score bias E-value score bias exp reg
+ # clu ov env dom rep inc description of target
ios.each_line do |line|
- puts "line->#{line}"
+ next if line[0] == '#'
+ fields = line.chomp.split(" ")
+
+ record = {}
+ record[:target_name] = fields[0]
+ record[:target_accession] = fields[1]
+ record[:query_name] = fields[2]
+ record[:query_accession] = fields[3]
+ record[:e_value_sequence] = fields[4].to_f
+ record[:score_sequence] = fields[5].to_f
+ record[:bias_sequence] = fields[6].to_f
+ record[:e_value_domain] = fields[7].to_f
+ record[:score_domain] = fields[8].to_f
+ record[:bias_domain] = fields[9].to_f
+ record[:exp] = fields[10].to_f
+ record[:reg] = fields[11].to_i
+ record[:clu] = fields[12].to_i
+ record[:ov] = fields[13].to_i
+ record[:env] = fields[14].to_i
+ record[:dom] = fields[15].to_i
+ record[:rep] = fields[16].to_i
+ record[:inc] = fields[17].to_i
+ record[:description_of_target] = fields[18]
+
+ if block_given?
+ yield record
+ else
+ records << record
+ end
end
end
+
+ return records if block_given?
end
private