bio-hmmer3_report 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/.travis.yml ADDED
@@ -0,0 +1,12 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.2
4
+ - 1.9.3
5
+ - jruby-19mode # JRuby in 1.9 mode
6
+ - rbx-19mode
7
+ # - 1.8.7
8
+ # - jruby-18mode # JRuby in 1.8 mode
9
+ # - rbx-18mode
10
+
11
+ # uncomment this line if your project needs to run something other than `rake`:
12
+ # script: bundle exec rspec spec
data/Gemfile ADDED
@@ -0,0 +1,15 @@
1
+ source "http://rubygems.org"
2
+ # Add dependencies required to use your gem here.
3
+ # Example:
4
+ # gem "activesupport", ">= 2.3.5"
5
+
6
+ # Add dependencies to develop your gem here.
7
+ # Include everything needed to run rake, tests, features, etc.
8
+ group :development do
9
+ gem "shoulda", ">= 0"
10
+ gem "rdoc", "~> 3.12"
11
+ gem "jeweler", "~> 1.8.3"
12
+ gem "bundler", ">= 1.0.21"
13
+ gem "bio", ">= 1.4.2"
14
+ gem "rdoc", "~> 3.12"
15
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2012 Christian Zmasek and Ben J Woodcroft
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,99 @@
1
+ # bio-hmmer3_report
2
+
3
+ [![Build Status](https://secure.travis-ci.org/wwood/bioruby-hmmer3_report.png)](http://travis-ci.org/wwood/bioruby-hmmer3_report)
4
+
5
+ Parser class for hmmsearch and hmmscan in the HMMER 3 package.
6
+
7
+ ## Examples
8
+
9
+ # Description
10
+
11
+
12
+ # Input from string:
13
+ data = String.new
14
+ data << '# --- full sequence --- -------------- this domain ------------- hmm coord ali coord env coord'
15
+ data << "\n" << '# target name accession tlen query name accession qlen E-value score bias # of c-Evalue i-Evalue score bias from to from to from to acc description of target'
16
+ data << "\n" << '#------------------- ---------- ----- -------------------- ---------- ----- --------- ------ ----- --- --- --------- --------- ------ ----- ----- ----- ----- ----- ----- ----- ---- ---------------------'
17
+ data << "\n" << 'Bcl-2 PF00452.13 101 sp|P10415|BCL2_HUMAN - 239 3.7e-30 103.7 0.1 1 1 7.9e-34 4.9e-30 103.3 0.0 1 101 97 195 97 195 0.99 Apoptosis regulator proteins, Bcl-2 family'
18
+ data << "\n" << 'BH4 PF02180.11 27 sp|P10415|BCL2_HUMAN - 239 3.9e-15 54.6 0.1 1 1 1.3e-18 8.2e-15 53.6 0.1 2 26 8 32 7 33 0.94 Bcl-2 homology region 4'
19
+ data << "\n"
20
+
21
+ report = Bio::HMMER::HMMER3::Report.new(data)
22
+ report.hits.each do |hit|
23
+ puts hit.target_name
24
+ puts hit.full_sequence_e_value
25
+ end
26
+
27
+
28
+ # Input from file:
29
+ report = Bio::HMMER::HMMER3::Report.new(File.open('test/data/HMMER/hmmsearch_domtblout.out'))
30
+ report.hits.each do |hit|
31
+ puts hit.target_name
32
+ puts hit.target_accession
33
+ puts hit.query_name
34
+ puts hit.query_accession
35
+ puts hit.query_length
36
+ puts hit.full_sequence_e_value
37
+ puts hit.full_sequence_score
38
+ puts hit.domain_number
39
+ puts hit.domain_sum
40
+ puts hit.domain_c_e_value
41
+ puts hit.domain_i_e_value
42
+ puts hit.domain_score
43
+ puts hit.domain_bias
44
+ puts hit.hmm_coord_from
45
+ puts hit.hmm_coord_to
46
+ puts hit.ali_coord_from
47
+ puts hit.ali_coord_to
48
+ puts hit.env_coord_from
49
+ puts hit.env_coord_to
50
+ puts hit.acc
51
+ puts hit.target_description
52
+ end
53
+
54
+
55
+ ## References
56
+
57
+ * HMMER http://hmmer.janelia.org/
58
+
59
+ Note: this software is under active development!
60
+
61
+ ## Installation
62
+
63
+ ```sh
64
+ gem install bio-hmmer3_report
65
+ ```
66
+
67
+ ## Usage
68
+
69
+ ```ruby
70
+ require 'bio-hmmer3_report'
71
+ ```
72
+
73
+ The API doc is online. For more code examples see the test files in
74
+ the source tree.
75
+
76
+ ## Project home page
77
+
78
+ Information on the source tree, documentation, examples, issues and
79
+ how to contribute, see
80
+
81
+ http://github.com/wwood/bioruby-hmmer3_report
82
+
83
+ The BioRuby community is on IRC server: irc.freenode.org, channel: #bioruby.
84
+
85
+ ## Cite
86
+
87
+ If you use this software, please cite one of
88
+
89
+ * [BioRuby: bioinformatics software for the Ruby programming language](http://dx.doi.org/10.1093/bioinformatics/btq475)
90
+ * [Biogem: an effective tool-based approach for scaling up open source software development in bioinformatics](http://dx.doi.org/10.1093/bioinformatics/bts080)
91
+
92
+ ## Biogems.info
93
+
94
+ This Biogem is published at [#bio-hmmer3_report](http://biogems.info/index.html)
95
+
96
+ ## Copyright
97
+
98
+ Copyright (c) 2012 Ben J Woodcroft. See LICENSE.txt for further details.
99
+
data/Rakefile ADDED
@@ -0,0 +1,45 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+ require 'rake'
13
+
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
+ gem.name = "bio-hmmer3_report"
18
+ gem.homepage = "http://github.com/wwood/bioruby-hmmer3_report"
19
+ gem.license = "MIT"
20
+ gem.summary = %Q{Enables parsing of HMMER version 3 reports}
21
+ gem.description = %Q{Enables parsing of HMMER version 3 reports}
22
+ gem.email = "gmail.com after donttrustben"
23
+ gem.authors = ["Christian Zmasek","Ben J Woodcroft"]
24
+ # dependencies defined in Gemfile
25
+ end
26
+ Jeweler::RubygemsDotOrgTasks.new
27
+
28
+ require 'rake/testtask'
29
+ Rake::TestTask.new(:test) do |test|
30
+ test.libs << 'lib' << 'test'
31
+ test.pattern = 'test/**/test_*.rb'
32
+ test.verbose = true
33
+ end
34
+
35
+ task :default => :test
36
+
37
+ require 'rdoc/task'
38
+ Rake::RDocTask.new do |rdoc|
39
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
40
+
41
+ rdoc.rdoc_dir = 'rdoc'
42
+ rdoc.title = "bio-hmmer3_report #{version}"
43
+ rdoc.rdoc_files.include('README*')
44
+ rdoc.rdoc_files.include('lib/**/*.rb')
45
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
@@ -0,0 +1,2 @@
1
+ require 'bio/appl/hmmer/hmmer3/report'
2
+
@@ -0,0 +1,193 @@
1
+ #
2
+ # = bio/appl/hmmer/hmmer3/report.rb - hmmscan/hmmsearch parser
3
+ #
4
+ # Copyright:: Copyright (C) 2011
5
+ # Christian Zmasek <cmzmasek@yahoo.com>, Ben Woodcroft <https://github.com/wwood>
6
+ # License:: The Ruby License
7
+ #
8
+ # $Id:$
9
+ #
10
+
11
+ require 'stringio'
12
+
13
+ module Bio
14
+ class HMMER
15
+ # == Description
16
+ #
17
+ # Parser class for hmmsearch and hmmscan in the HMMER 3 package. See README of this biogem for more information.
18
+ class HMMER3
19
+ class Report
20
+ def initialize(hmmer_output, format = nil)
21
+
22
+ @hits = Array.new
23
+ @line_number = 0
24
+ @format = format
25
+ if hmmer_output.kind_of?(String)
26
+ str = StringIO.new(hmmer_output)
27
+ str.each_line() { |line| parse_line(line) }
28
+ elsif hmmer_output.kind_of?(IO)
29
+ hmmer_output.each_line() { |line| parse_line(line) }
30
+ else
31
+ raise "Unexpected hmmer_output class: excpected String or IO, found #{hmmer_output.class}"
32
+ end
33
+ end
34
+
35
+ attr_reader :hits
36
+ attr_reader :format
37
+
38
+ private
39
+
40
+ def parse_line(line)
41
+ @line_number += 1
42
+ if line =~ /^#.+this\s+domain/
43
+ @format = :domtblout
44
+ elsif line =~ /^#.+best\s+1\s+domain/
45
+ @format = :tblout
46
+ elsif line =~ /\S/ && line !~ /^#/
47
+ if @format == nil
48
+ if looks_like_per_domain_result?(line)
49
+ @format = :domtblout
50
+ else
51
+ @format = :tblout
52
+ end
53
+ end
54
+ if @format == :domtblout
55
+ @hits << PerDomainHit.new(line, @line_number)
56
+ elsif @format == :tblout
57
+ @hits << PerSequenceHit.new(line, @line_number)
58
+ else
59
+ raise ArgumentError, "attempt to parse hmmscan/hmmsearch output style other than \"domtblout\" or \"tblout\""
60
+ end
61
+ end
62
+ end
63
+
64
+ def looks_like_per_domain_result?(line)
65
+ line =~ /^(\S*)\s+(\S+)\s+(\d+)\s+(\S+)\s+(\S+)\s+(\d+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\d+)\s+(\d+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\S+)\s*(.*)/
66
+ end
67
+
68
+ end # class Report
69
+
70
+ class Hit
71
+ def initialize
72
+ # This is an abstract class. Prevents 'new' being called on this class
73
+ # and force implementation of 'initialize' in inheriting classes.
74
+ raise NotImplementedError
75
+ end
76
+ attr_reader :target_name
77
+ attr_reader :target_accession
78
+ attr_reader :target_description
79
+ attr_reader :query_name
80
+ attr_reader :query_accession
81
+ attr_reader :full_sequence_e_value
82
+ attr_reader :full_sequence_score
83
+ attr_reader :full_sequence_bias
84
+
85
+ end # class Hit
86
+
87
+
88
+ class PerSequenceHit < Hit
89
+
90
+ # Sets hit data.
91
+ def initialize(line, line_number)
92
+
93
+ # tblout:
94
+ # tn tacc qn qacc fs_eval fs_scor fs_bias bst_e bst_scor bst_bias exp reg clu ov env dom rep inc desc
95
+ # 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
96
+ if line =~ /^(\S*)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(.*)/
97
+ @target_name = $1
98
+ @target_accession = $2
99
+ @query_name = $3
100
+ @query_accession = $4
101
+ @full_sequence_e_value = $5.to_f
102
+ @full_sequence_score = $6.to_f
103
+ @full_sequence_bias = $7.to_f
104
+ @best_1_domain_e_value = $8.to_f
105
+ @best_1_domain_score = $9.to_f
106
+ @best_1_domain_bias = $10.to_f
107
+ @domain_number_est_exp = $11.to_i
108
+ @domain_number_est_reg = $12.to_i
109
+ @domain_number_est_clu = $13.to_i
110
+ @domain_number_est_ov = $14.to_i
111
+ @domain_number_est_env = $15.to_i
112
+ @domain_number_est_dom = $16.to_i
113
+ @domain_number_est_rep = $17.to_i
114
+ @domain_number_est_inc = $18.to_i
115
+ @target_description = $19
116
+ else
117
+ raise ArgumentError, "line "+ line_number.to_s + " is in an unrecognized format [#{line}]"
118
+ end
119
+
120
+ end # initialize
121
+
122
+ attr_reader :best_1_domain_e_value
123
+ attr_reader :best_1_domain_score
124
+ attr_reader :best_1_domain_bias
125
+ attr_reader :domain_number_est_exp
126
+ attr_reader :domain_number_est_reg
127
+ attr_reader :domain_number_est_clu
128
+ attr_reader :domain_number_est_ov
129
+ attr_reader :domain_number_est_env
130
+ attr_reader :domain_number_est_dom
131
+ attr_reader :domain_number_est_rep
132
+ attr_reader :domain_number_est_inc
133
+
134
+ end # class PerSequenceHit
135
+
136
+ class PerDomainHit < Hit
137
+
138
+ # Sets hit data.
139
+ def initialize(line, line_number)
140
+
141
+ # domtblout:
142
+ # tn acc tlen query acc qlen Evalue score bias # of c-E i-E score bias hf ht af at ef et acc desc
143
+ # 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
144
+ if line =~ /^(\S*)\s+(\S+)\s+(\d+)\s+(\S+)\s+(\S+)\s+(\d+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\d+)\s+(\d+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\S+)\s*(.*)/
145
+ @target_name = $1
146
+ @target_accession = $2
147
+ @target_length = $3.to_i
148
+ @query_name = $4
149
+ @query_accession = $5
150
+ @query_length = $6.to_i
151
+ @full_sequence_e_value = $7.to_f
152
+ @full_sequence_score = $8.to_f
153
+ @full_sequence_bias = $9.to_f
154
+ @domain_number = $10.to_i
155
+ @domain_sum = $11.to_i
156
+ @domain_c_e_value = $12.to_f
157
+ @domain_i_e_value = $13.to_f
158
+ @domain_score = $14.to_f
159
+ @domain_bias = $15.to_f
160
+ @hmm_coord_from = $16.to_i
161
+ @hmm_coord_to = $17.to_i
162
+ @ali_coord_from = $18.to_i
163
+ @ali_coord_to = $19.to_i
164
+ @env_coord_from = $20.to_i
165
+ @env_coord_to = $21.to_i
166
+ @acc = $22.to_f
167
+ @target_description = $23
168
+ else
169
+ raise ArgumentError, "line "+ line_number.to_s + " is in a unrecognized format [#{line}]"
170
+ end
171
+
172
+ end # initialize
173
+
174
+ attr_reader :target_length
175
+ attr_reader :query_length
176
+ attr_reader :domain_number
177
+ attr_reader :domain_sum
178
+ attr_reader :domain_c_e_value
179
+ attr_reader :domain_i_e_value
180
+ attr_reader :domain_score
181
+ attr_reader :domain_bias
182
+ attr_reader :hmm_coord_from
183
+ attr_reader :hmm_coord_to
184
+ attr_reader :ali_coord_from
185
+ attr_reader :ali_coord_to
186
+ attr_reader :env_coord_from
187
+ attr_reader :env_coord_to
188
+ attr_reader :acc
189
+
190
+ end # class PerDomainHit
191
+ end # class HMMER3
192
+ end # class HMMER
193
+ end # module Bio
@@ -0,0 +1,9 @@
1
+ # --- full sequence --- -------------- this domain ------------- hmm coord ali coord env coord
2
+ # target name accession tlen query name accession qlen E-value score bias # of c-Evalue i-Evalue score bias from to from to from to acc description of target
3
+ #------------------- ---------- ----- -------------------- ---------- ----- --------- ------ ----- --- --- --------- --------- ------ ----- ----- ----- ----- ----- ----- ----- ---- ---------------------
4
+ #comment PF08016.5 426 jgi|Nemve1|7|gw.28.1.1 - 1604 5.9e-19 67.4 70.5 1 8 0.00053 1.1 7.3 0.4 220 264 142 191 134 200 0.73 Polycystin cation channel
5
+ Ion_trans PF00520.24 201 jgi|Nemve1|7|gw.28.1.1 - 1604 6.3e-169 557.4 95.3 1 4 1.5e-41 3e-38 130.8 11.1 3 171 140 307 139 346 0.81 Ion transport protein
6
+ Ion_trans PF00520.24 201 jgi|Nemve1|7|gw.28.1.1 - 1604 6.3e-169 557.4 95.3 2 4 9.1e-45 1.8e-41 141.3 13.1 4 200 479 664 476 665 0.97 Ion transport protein
7
+ Ion_trans PF00520.24 201 jgi|Nemve1|7|gw.28.1.1 - 1604 6.3e-169 557.4 95.3 3 4 5.2e-45 1e-41 142.1 14.0 1 201 900 1117 900 1117 0.96 Ion transport protein
8
+ Ion_trans PF00520.24 201 jgi|Nemve1|7|gw.28.1.1 - 1604 6.3e-169 557.4 95.3 4 4 9.2e-51 1.8e-47 160.9 11.3 1 201 1217 1423 1217 1423 0.97 Ion transport protein
9
+ PKD_channel PF08016.5 426 jgi|Nemve1|7|gw.28.1.1 - 1604 5.9e-19 67.4 70.5 1 8 0.00053 1.1 7.3 0.4 220 264 142 191 134 200 0.73 Polycystin cation channel
@@ -0,0 +1,4 @@
1
+ # --- full sequence ---- --- best 1 domain ---- --- domain number estimation ----
2
+ # 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
3
+ #------------------- ---------- -------------------- ---------- --------- ------ ----- --------- ------ ----- --- --- --- --- --- --- --- --- ---------------------
4
+ wnt PF00110.12 sp|P56705|WNT4_HUMAN - 9.7e-130 418.5 23.4 1.1e-129 418.3 16.2 1.0 1 0 0 1 1 1 1 wnt family
@@ -0,0 +1,5 @@
1
+ # --- full sequence --- -------------- this domain ------------- hmm coord ali coord env coord
2
+ # target name accession tlen query name accession qlen E-value score bias # of c-Evalue i-Evalue score bias from to from to from to acc description of target
3
+ #------------------- ---------- ----- -------------------- ---------- ----- --------- ------ ----- --- --- --------- --------- ------ ----- ----- ----- ----- ----- ----- ----- ---- ---------------------
4
+ wnt PF00110.12 310 sp|P56705|WNT4_HUMAN - 351 1.2e-125 418.5 23.4 1 1 2.2e-129 1.3e-125 418.3 16.2 2 310 43 351 42 351 0.97 wnt family
5
+ MEF2_binding PF09047.3 35 sp|P56705|WNT4_HUMAN - 351 0.17 11.2 1.0 1 1 6.4e-05 0.38 10.1 0.7 3 21 31 50 30 51 0.84 MEF2 binding
@@ -0,0 +1,3 @@
1
+ # --- full sequence --- -------------- this domain ------------- hmm coord ali coord env coord
2
+ # target name accession tlen query name accession qlen E-value score bias # of c-Evalue i-Evalue score bias from to from to from to acc description of target
3
+ #------------------- ---------- ----- -------------------- ---------- ----- --------- ------ ----- --- --- --------- --------- ------ ----- ----- ----- ----- ----- ----- ----- ---- ---------------------
@@ -0,0 +1,4 @@
1
+ # --- full sequence ---- --- best 1 domain ---- --- domain number estimation ----
2
+ # 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
3
+ #------------------- ---------- -------------------- ---------- --------- ------ ----- --------- ------ ----- --- --- --- --- --- --- --- --- ---------------------
4
+ wnt PF00110.12 sp|P56705|WNT4_HUMAN - 9.7e-130 418.5 23.4 1.1e-129 418.3 16.2 1.0 1 2 3 4 5 6 7 wnt family
data/test/helper.rb ADDED
@@ -0,0 +1,18 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'test/unit'
11
+ require 'shoulda'
12
+
13
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
15
+ require 'bio-hmmer3_report'
16
+
17
+ class Test::Unit::TestCase
18
+ end
@@ -0,0 +1,240 @@
1
+ #
2
+ #
3
+ #
4
+ # Copyright:: Copyright (C) 2011
5
+ # Christian Zmasek <cmzmasek@yahoo.com>
6
+ # License:: The Ruby License
7
+ #
8
+ # $Id:$
9
+ #
10
+ require 'helper'
11
+
12
+ module Bio
13
+ module Testreport
14
+
15
+ HMMER_TEST_DATA = Pathname.new(File.join('test','data','HMMER')).cleanpath.to_s
16
+
17
+ def self.hmmsearch_domtblout_empty
18
+ File.open(File.join HMMER_TEST_DATA, 'hmmsearch_domtblout_empty.out')
19
+ end
20
+
21
+ def self.hmmsearch_domtblout
22
+ File.open(File.join HMMER_TEST_DATA, 'hmmsearch_domtblout.out')
23
+ end
24
+
25
+ def self.hmmsearch_tblout
26
+ File.open(File.join HMMER_TEST_DATA, 'hmmsearch_tblout.out')
27
+ end
28
+
29
+ def self.hmmscan_domtblout
30
+ File.open(File.join HMMER_TEST_DATA, 'hmmscan_domtblout.out')
31
+ end
32
+
33
+ def self.hmmscan_tblout
34
+ File.open(File.join HMMER_TEST_DATA, 'hmmscan_tblout.out')
35
+ end
36
+
37
+ end # Testreport
38
+
39
+ class Testreport_class_methods < Test::Unit::TestCase
40
+
41
+
42
+ def test_hmmsearch_domtblout_empty
43
+ filename = Testreport.hmmsearch_domtblout_empty
44
+
45
+ assert_instance_of(Bio::HMMER::HMMER3::Report,
46
+ report = Bio::HMMER::HMMER3::Report.new(filename))
47
+
48
+ assert_instance_of(Array,
49
+ report.hits)
50
+
51
+ assert_equal(0, report.hits.length)
52
+ end #
53
+
54
+
55
+ def test_hmmsearch_domtblout
56
+ filename = Testreport.hmmsearch_domtblout
57
+
58
+ assert_instance_of(Bio::HMMER::HMMER3::Report,
59
+ report = Bio::HMMER::HMMER3::Report.new(filename))
60
+
61
+ assert_instance_of(Array,
62
+ report.hits)
63
+
64
+ assert_instance_of(Bio::HMMER::HMMER3::PerDomainHit,
65
+ report.hits[0])
66
+
67
+ assert_kind_of(Bio::HMMER::HMMER3::Hit,
68
+ report.hits[0])
69
+
70
+ assert_equal(2,report.hits.length)
71
+ assert_equal("wnt", report.hits[0].target_name)
72
+ assert_equal("PF00110.12", report.hits[0].target_accession)
73
+ assert_equal(310, report.hits[0].target_length)
74
+ assert_equal("sp|P56705|WNT4_HUMAN", report.hits[0].query_name)
75
+ assert_equal("-", report.hits[0].query_accession)
76
+ assert_equal(351, report.hits[0].query_length)
77
+ assert_equal(1.2e-125, report.hits[0].full_sequence_e_value)
78
+ assert_equal(418.5, report.hits[0].full_sequence_score)
79
+ assert_equal(23.4, report.hits[0].full_sequence_bias)
80
+ assert_equal(1, report.hits[0].domain_number)
81
+ assert_equal(1, report.hits[0].domain_sum)
82
+ assert_equal(2.2e-129, report.hits[0].domain_c_e_value)
83
+ assert_equal(1.3e-125, report.hits[0].domain_i_e_value)
84
+ assert_equal(418.3, report.hits[0].domain_score)
85
+ assert_equal(16.2, report.hits[0].domain_bias)
86
+ assert_equal(2, report.hits[0].hmm_coord_from)
87
+ assert_equal(310, report.hits[0].hmm_coord_to)
88
+ assert_equal(43, report.hits[0].ali_coord_from)
89
+ assert_equal(351, report.hits[0].ali_coord_to)
90
+ assert_equal(42, report.hits[0].env_coord_from)
91
+ assert_equal(351, report.hits[0].env_coord_to)
92
+ assert_equal(0.97, report.hits[0].acc)
93
+ assert_equal("wnt family", report.hits[0].target_description)
94
+ assert_equal("MEF2_binding", report.hits[1].target_name)
95
+ assert_equal(0.17, report.hits[1].full_sequence_e_value)
96
+ assert_equal(6.4e-05, report.hits[1].domain_c_e_value)
97
+ assert_equal("MEF2 binding", report.hits[1].target_description)
98
+
99
+ end # test_hmmsearch_domtblout
100
+
101
+ def test_hmmsearch_tblout
102
+
103
+ filename = Testreport.hmmsearch_tblout
104
+
105
+ assert_instance_of(Bio::HMMER::HMMER3::Report,
106
+ report = Bio::HMMER::HMMER3::Report.new(filename))
107
+
108
+ assert_instance_of(Array,
109
+ report.hits)
110
+
111
+ assert_instance_of(Bio::HMMER::HMMER3::PerSequenceHit,
112
+ report.hits[0])
113
+
114
+ assert_kind_of(Bio::HMMER::HMMER3::Hit,
115
+ report.hits[0])
116
+
117
+ assert_equal(1,report.hits.length)
118
+ assert_equal("wnt", report.hits[0].target_name)
119
+ assert_equal("PF00110.12", report.hits[0].target_accession)
120
+ assert_equal("sp|P56705|WNT4_HUMAN", report.hits[0].query_name)
121
+ assert_equal("-", report.hits[0].query_accession)
122
+ assert_equal(9.7e-130, report.hits[0].full_sequence_e_value)
123
+ assert_equal(418.5, report.hits[0].full_sequence_score)
124
+ assert_equal(23.4, report.hits[0].full_sequence_bias)
125
+ assert_equal(1.1e-129, report.hits[0].best_1_domain_e_value)
126
+ assert_equal(418.3, report.hits[0].best_1_domain_score)
127
+ assert_equal(16.2, report.hits[0].best_1_domain_bias)
128
+ assert_equal(1.0, report.hits[0].domain_number_est_exp)
129
+ assert_equal(1, report.hits[0].domain_number_est_reg)
130
+ assert_equal(2, report.hits[0].domain_number_est_clu)
131
+ assert_equal(3, report.hits[0].domain_number_est_ov)
132
+ assert_equal(4, report.hits[0].domain_number_est_env)
133
+ assert_equal(5, report.hits[0].domain_number_est_dom)
134
+ assert_equal(6, report.hits[0].domain_number_est_rep)
135
+ assert_equal(7, report.hits[0].domain_number_est_inc)
136
+ assert_equal("wnt family", report.hits[0].target_description)
137
+
138
+ end # test_hmmsearch_tblout
139
+
140
+ def test_hmmscan_domtblout
141
+
142
+ filename = Testreport.hmmscan_domtblout
143
+
144
+ assert_instance_of(Bio::HMMER::HMMER3::Report,
145
+ report = Bio::HMMER::HMMER3::Report.new(filename))
146
+
147
+ assert_instance_of(Array,
148
+ report.hits)
149
+
150
+ assert_instance_of(Bio::HMMER::HMMER3::PerDomainHit,
151
+ report.hits[0])
152
+
153
+ assert_kind_of(Bio::HMMER::HMMER3::Hit,
154
+ report.hits[0])
155
+
156
+ assert_equal(5,report.hits.length)
157
+ assert_equal("Ion_trans", report.hits[0].target_name)
158
+ assert_equal("PF00520.24", report.hits[0].target_accession)
159
+ assert_equal(201, report.hits[0].target_length)
160
+ assert_equal("jgi|Nemve1|7|gw.28.1.1", report.hits[0].query_name)
161
+ assert_equal("-", report.hits[0].query_accession)
162
+ assert_equal(1604, report.hits[0].query_length)
163
+ assert_equal(6.3e-169, report.hits[0].full_sequence_e_value)
164
+ assert_equal(557.4, report.hits[0].full_sequence_score)
165
+ assert_equal(95.3, report.hits[0].full_sequence_bias)
166
+ assert_equal(1, report.hits[0].domain_number)
167
+ assert_equal(4, report.hits[0].domain_sum)
168
+ assert_equal(1.5e-41, report.hits[0].domain_c_e_value)
169
+ assert_equal(3e-38, report.hits[0].domain_i_e_value)
170
+ assert_equal(130.8, report.hits[0].domain_score)
171
+ assert_equal(11.1, report.hits[0].domain_bias)
172
+ assert_equal(3, report.hits[0].hmm_coord_from)
173
+ assert_equal(171, report.hits[0].hmm_coord_to)
174
+ assert_equal(140, report.hits[0].ali_coord_from)
175
+ assert_equal(307, report.hits[0].ali_coord_to)
176
+ assert_equal(139, report.hits[0].env_coord_from)
177
+ assert_equal(346, report.hits[0].env_coord_to)
178
+ assert_equal(0.81, report.hits[0].acc)
179
+ assert_equal("Ion transport protein", report.hits[0].target_description)
180
+ end # test_hmmscan_domtblout
181
+
182
+ def test_hmmscan_tblout
183
+ filename = Testreport.hmmscan_tblout
184
+
185
+ assert_instance_of(Bio::HMMER::HMMER3::Report,
186
+ report = Bio::HMMER::HMMER3::Report.new(filename))
187
+
188
+ assert_instance_of(Array,
189
+ report.hits)
190
+
191
+ assert_instance_of(Bio::HMMER::HMMER3::PerSequenceHit,
192
+ report.hits[0])
193
+
194
+ assert_kind_of(Bio::HMMER::HMMER3::Hit,
195
+ report.hits[0])
196
+
197
+ assert_equal(1,report.hits.length)
198
+ assert_equal("wnt", report.hits[0].target_name)
199
+ assert_equal("PF00110.12", report.hits[0].target_accession)
200
+ assert_equal("sp|P56705|WNT4_HUMAN", report.hits[0].query_name)
201
+ assert_equal("-", report.hits[0].query_accession)
202
+ assert_equal(9.7e-130, report.hits[0].full_sequence_e_value)
203
+ assert_equal(418.5, report.hits[0].full_sequence_score)
204
+ assert_equal(23.4, report.hits[0].full_sequence_bias)
205
+ assert_equal(1.1e-129, report.hits[0].best_1_domain_e_value)
206
+ assert_equal(418.3, report.hits[0].best_1_domain_score)
207
+ assert_equal(16.2, report.hits[0].best_1_domain_bias)
208
+ assert_equal(1.0, report.hits[0].domain_number_est_exp)
209
+ assert_equal(1, report.hits[0].domain_number_est_reg)
210
+ assert_equal(0, report.hits[0].domain_number_est_clu)
211
+ assert_equal(0, report.hits[0].domain_number_est_ov)
212
+ assert_equal(1, report.hits[0].domain_number_est_env)
213
+ assert_equal(1, report.hits[0].domain_number_est_dom)
214
+ assert_equal(1, report.hits[0].domain_number_est_rep)
215
+ assert_equal(1, report.hits[0].domain_number_est_inc)
216
+ assert_equal("wnt family", report.hits[0].target_description)
217
+ end # test_hmmscan_tblout
218
+
219
+ def test_string_input
220
+ data = String.new
221
+ data << '# --- full sequence --- -------------- this domain ------------- hmm coord ali coord env coord'
222
+ data << "\n" << '# target name accession tlen query name accession qlen E-value score bias # of c-Evalue i-Evalue score bias from to from to from to acc description of target'
223
+ data << "\n" << '#------------------- ---------- ----- -------------------- ---------- ----- --------- ------ ----- --- --- --------- --------- ------ ----- ----- ----- ----- ----- ----- ----- ---- ---------------------'
224
+ data << "\n" << 'Bcl-2 PF00452.13 101 sp|P10415|BCL2_HUMAN - 239 3.7e-30 103.7 0.1 1 1 7.9e-34 4.9e-30 103.3 0.0 1 101 97 195 97 195 0.99 Apoptosis regulator proteins, Bcl-2 family'
225
+ data << "\n" << 'BH4 PF02180.11 27 sp|P10415|BCL2_HUMAN - 239 3.9e-15 54.6 0.1 1 1 1.3e-18 8.2e-15 53.6 0.1 2 26 8 32 7 33 0.94 Bcl-2 homology region 4'
226
+ data << "\n"
227
+
228
+ report = Bio::HMMER::HMMER3::Report.new(data)
229
+ hits = report.hits
230
+ hits.each do |hit|
231
+ assert_kind_of Bio::HMMER::HMMER3::PerDomainHit, hit
232
+ end
233
+ assert_equal 2, hits.length
234
+ assert_equal 'Bcl-2', hits[0].target_name
235
+ assert_equal 'BH4', hits[1].target_name
236
+ end
237
+
238
+ end # Testreport _class_methods
239
+
240
+ end # Bio
metadata ADDED
@@ -0,0 +1,133 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bio-hmmer3_report
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Christian Zmasek
9
+ - Ben J Woodcroft
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2012-05-18 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: shoulda
17
+ requirement: &76510780 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: *76510780
26
+ - !ruby/object:Gem::Dependency
27
+ name: rdoc
28
+ requirement: &76510420 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '3.12'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: *76510420
37
+ - !ruby/object:Gem::Dependency
38
+ name: jeweler
39
+ requirement: &76510040 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ~>
43
+ - !ruby/object:Gem::Version
44
+ version: 1.8.3
45
+ type: :development
46
+ prerelease: false
47
+ version_requirements: *76510040
48
+ - !ruby/object:Gem::Dependency
49
+ name: bundler
50
+ requirement: &76509650 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: 1.0.21
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: *76509650
59
+ - !ruby/object:Gem::Dependency
60
+ name: bio
61
+ requirement: &76524960 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: 1.4.2
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: *76524960
70
+ - !ruby/object:Gem::Dependency
71
+ name: rdoc
72
+ requirement: &76524250 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '3.12'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: *76524250
81
+ description: Enables parsing of HMMER version 3 reports
82
+ email: gmail.com after donttrustben
83
+ executables: []
84
+ extensions: []
85
+ extra_rdoc_files:
86
+ - LICENSE.txt
87
+ - README.md
88
+ files:
89
+ - .document
90
+ - .travis.yml
91
+ - Gemfile
92
+ - LICENSE.txt
93
+ - README.md
94
+ - Rakefile
95
+ - VERSION
96
+ - lib/bio-hmmer3_report.rb
97
+ - lib/bio/appl/hmmer/hmmer3/report.rb
98
+ - test/data/HMMER/hmmscan_domtblout.out
99
+ - test/data/HMMER/hmmscan_tblout.out
100
+ - test/data/HMMER/hmmsearch_domtblout.out
101
+ - test/data/HMMER/hmmsearch_domtblout_empty.out
102
+ - test/data/HMMER/hmmsearch_tblout.out
103
+ - test/helper.rb
104
+ - test/unit/bio/appl/hmmer/test_hmmer3report.rb
105
+ homepage: http://github.com/wwood/bioruby-hmmer3_report
106
+ licenses:
107
+ - MIT
108
+ post_install_message:
109
+ rdoc_options: []
110
+ require_paths:
111
+ - lib
112
+ required_ruby_version: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ segments:
119
+ - 0
120
+ hash: -284128881
121
+ required_rubygems_version: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ requirements: []
128
+ rubyforge_project:
129
+ rubygems_version: 1.8.17
130
+ signing_key:
131
+ specification_version: 3
132
+ summary: Enables parsing of HMMER version 3 reports
133
+ test_files: []