]> git.donarmstrong.com Git - biopieces.git/blobdiff - bp_bin/hmmer_seq
refactoring of assemble_pairs
[biopieces.git] / bp_bin / hmmer_seq
index 4cb9fa2585e93cab153fa1df5954a520e0ea6b77..d1573c30f14816d175648b8dc4bfd03936d28858 100755 (executable)
@@ -32,6 +32,35 @@ require 'pp'
 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
@@ -50,11 +79,46 @@ class Hmmer
   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