bio 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,7 +6,7 @@
6
6
  # Ryan Raaum <ryan@raaum.org>
7
7
  # License:: The Ruby License
8
8
  #
9
- # $Id: common.rb,v 1.4 2007/04/05 23:35:41 trevor Exp $
9
+ # $Id: common.rb,v 1.5 2007/12/03 06:19:12 nakao Exp $
10
10
  #
11
11
 
12
12
  module Bio
@@ -91,10 +91,13 @@ module Common
91
91
  # puts s #=> "atgcatgcatgcatgc"
92
92
  # ---
93
93
  # *Returns*:: current Bio::Sequence::NA/AA object (modified)
94
- def <<(*arg)
94
+ def concat(*arg)
95
95
  super(self.class.new(*arg))
96
96
  end
97
- alias concat <<
97
+
98
+ def <<(*arg)
99
+ concat(*arg)
100
+ end
98
101
 
99
102
  # Create a new sequence by adding to an existing sequence.
100
103
  # The existing sequence is not modified.
@@ -5,7 +5,7 @@
5
5
  # Toshiaki Katayama <k@bioruby.org>
6
6
  # License:: The Ruby License
7
7
  #
8
- # $Id: interface.rb,v 1.18 2007/06/26 08:38:38 k Exp $
8
+ # $Id: interface.rb,v 1.19 2007/11/15 07:08:49 k Exp $
9
9
  #
10
10
 
11
11
  module Bio::Shell
@@ -152,7 +152,7 @@ module Bio::Shell
152
152
  datadir = Bio::Shell.data_dir
153
153
  message = "Save file '#{file}' in '#{datadir}' directory? [y/n] "
154
154
  if ! file[/^#{datadir}/] and Bio::Shell.ask_yes_or_no(message)
155
- file = datadir + file
155
+ file = File.join(datadir, file)
156
156
  end
157
157
  if File.exists?(file)
158
158
  message = "Overwrite existing '#{file}' file? [y/n] "
@@ -5,7 +5,7 @@ class BiorubyGenerator < Rails::Generator::Base
5
5
  m.directory 'app/helpers'
6
6
  m.directory 'app/views/bioruby'
7
7
  m.directory 'app/views/layouts'
8
- m.directory 'public/images'
8
+ m.directory 'public/images/bioruby'
9
9
  m.directory 'public/stylesheets'
10
10
  m.file 'bioruby_controller.rb', 'app/controllers/bioruby_controller.rb'
11
11
  m.file 'bioruby_helper.rb', 'app/helpers/bioruby_helper.rb'
@@ -18,10 +18,10 @@ class BiorubyGenerator < Rails::Generator::Base
18
18
  m.file 'history.rhtml', 'app/views/bioruby/history.rhtml'
19
19
  m.file 'index.rhtml', 'app/views/bioruby/index.rhtml'
20
20
  m.file 'bioruby.rhtml', 'app/views/layouts/bioruby.rhtml'
21
- m.file 'bioruby-gem.png', 'public/images/bioruby-gem.png'
22
- m.file 'bioruby-link.gif', 'public/images/bioruby-link.gif'
23
- m.file 'bioruby-bg.gif', 'public/images/bioruby-bg.gif'
24
- m.file 'bioruby-console.png', 'public/images/bioruby-console.png'
21
+ m.file 'spinner.gif', 'public/images/bioruby/spinner.gif'
22
+ m.file 'bioruby-gem.png', 'public/images/bioruby/gem.png'
23
+ m.file 'bioruby-link.gif', 'public/images/bioruby/link.gif'
24
+ m.file 'bioruby-bg.gif', 'public/images/bioruby/bg.gif'
25
25
  m.file 'bioruby.css', 'public/stylesheets/bioruby.css'
26
26
  end
27
27
  end
@@ -3,7 +3,7 @@
3
3
  body {
4
4
  margin: 0;
5
5
  color: #555555;
6
- background: url("/images/bioruby-bg.gif") repeat-y center;
6
+ background: url("/images/bioruby/bg.gif") repeat-y center;
7
7
  font-family: "trebuchet ms", verdana, arial, helvetica, sans-serif;
8
8
  font-size: 12px;
9
9
  }
@@ -22,7 +22,7 @@ div#title {
22
22
  padding-right: 200px;
23
23
  margin-bottom: 20px;
24
24
  text-align: left;
25
- background: url("/images/bioruby-gem.png") no-repeat left bottom;
25
+ background: url("/images/bioruby/gem.png") no-repeat left bottom;
26
26
  }
27
27
 
28
28
  div#title .titletop {
@@ -169,6 +169,11 @@ div#side li {
169
169
 
170
170
  div#side img {
171
171
  padding: 5px;
172
+ /* centering */
173
+ display: block;
174
+ margin-left: auto;
175
+ margin-right: auto;
176
+ border: 0px;
172
177
  }
173
178
 
174
179
  /* history */
@@ -198,11 +203,6 @@ div#command {
198
203
  /* image */
199
204
 
200
205
  img {
201
- /* centering */
202
- display: block;
203
- margin-left: auto;
204
- margin-right: auto;
205
- border: 0px;
206
206
  }
207
207
 
208
208
  /* em */
@@ -335,7 +335,6 @@ input[type=submit] {
335
335
  /* textarea */
336
336
 
337
337
  textarea {
338
- background: url("/images/bioruby-console.png") no-repeat center;
339
338
  background-color: #eaedeb;
340
339
  font-family: monospace;
341
340
  font-size: 12px;
@@ -28,7 +28,7 @@
28
28
  <%= render :partial => "variables" %>
29
29
 
30
30
  <br>
31
- <a href="http://bioruby.org/"><img src="/images/bioruby-link.gif" border=0></a>
31
+ <a href="http://bioruby.org/"><img src="/images/bioruby/link.gif" border=0></a>
32
32
  </div><!-- side -->
33
33
 
34
34
  <div id="title">
@@ -1,22 +1,26 @@
1
1
  <div id="console">
2
- <%- if flash[:notice] -%>
3
- <div id="notice"><p><%= flash[:notice] %></p></div><br>
4
- <%- end -%>
5
- <%= form_remote_tag(:url => {:action => "evaluate"}, :position => "top") %>
6
- <b>BioRuby script:</b>
7
- <textarea id="script" name="script" rows=10 cols=80></textarea><br>
8
- <input type="submit" value="Evaluate">
9
- <input type="reset" value="Clear">
10
- &nbsp;&nbsp;
11
- Show [
12
- <%= link_to_remote "All", :url => {:action => "results", :limit => 0} %> |
13
- <%= link_to_remote "Last 5", :url => {:action => "results", :limit => 5} %> |
14
- <%= link_to_remote "Previous", :url => {:action => "results", :limit => 1} %>
15
- ] or
16
- <%= link_to "Hide", :action => "index" %>
17
- results<br>
18
- <%= end_form_tag %>
2
+ <%- if flash[:notice] -%>
3
+ <div id="notice"><p><%= flash[:notice] %></p></div><br>
4
+ <%- end -%>
5
+ <% form_remote_tag(:url => {:action => "evaluate"}, :position => "top",
6
+ :before => %(Element.show('spinner')),
7
+ :complete => %(Element.hide('spinner'))) do %>
8
+ <img id="spinner" src="/images/bioruby/spinner.gif" style="display:none">
9
+ <b>BioRuby script:</b>
10
+ <br/>
11
+ <textarea id="script" name="script" rows=10 cols=80></textarea>
12
+ <br/>
13
+ <input type="submit" value="Evaluate">
14
+ <input type="reset" value="Clear">
15
+ &nbsp;&nbsp;
16
+ Show [
17
+ <%= link_to_remote "All", :url => {:action => "results", :limit => 0} %> |
18
+ <%= link_to_remote "Last 5", :url => {:action => "results", :limit => 5} %> |
19
+ <%= link_to_remote "Previous", :url => {:action => "results", :limit => 1} %>
20
+ ] or <%= link_to "Hide", :action => "index" %> results<br/>
21
+ <% end %>
19
22
  </div>
23
+
20
24
  <div id="logs">
21
25
  </div>
22
26
 
@@ -5,7 +5,7 @@
5
5
  # Mitsuteru C. Nakao <n@bioruby.org>
6
6
  # License:: The Ruby License
7
7
  #
8
- # $Id: test_ensembl.rb,v 1.4 2007/04/05 23:35:42 trevor Exp $
8
+ # $Id: test_ensembl.rb,v 1.5 2007/11/10 16:57:43 nakao Exp $
9
9
  #
10
10
 
11
11
  require 'pathname'
@@ -73,13 +73,47 @@ class FuncTestEnsemblHuman < Test::Unit::TestCase
73
73
  end
74
74
 
75
75
  def test_gff_exportview
76
- line = "chromosome:NCBI36:4:1149206:1149209:1\tEnsembl\tGene\t-839\t2747\t.\t+\t.\tgene_id=ENSG00000206158; transcript_id=ENST00000382964; exon_id=ENSE00001494097; gene_type=KNOWN_protein_coding\n"
76
+ line = ["chromosome:NCBI36:4:1149206:1149209:1",
77
+ "Ensembl",
78
+ "Gene",
79
+ "-839",
80
+ "2747",
81
+ ".",
82
+ "+",
83
+ ".",
84
+ "gene_id=ENSG00000206158; transcript_id=ENST00000382964; exon_id=ENSE00001494097; gene_type=KNOWN_protein_coding\n"].join("\t") + "\n"
85
+ line = ["4",
86
+ "Ensembl",
87
+ "Gene",
88
+ "1148366",
89
+ "1151952",
90
+ ".",
91
+ "+",
92
+ "1",
93
+ "gene_id=ENSG00000206158; transcript_id=ENST00000382964; exon_id=ENSE00001494097; gene_type=KNOWN_protein_coding"].join("\t") + "\n"
77
94
  gff = @serv.exportview(4, 1149206, 1149209, ['gene'])
78
95
  assert_equal(line, gff)
79
96
  end
80
97
 
81
98
  def test_gff_exportview_with_named_args
82
- line = "chromosome:NCBI36:4:1149206:1149209:1\tEnsembl\tGene\t-839\t2747\t.\t+\t.\tgene_id=ENSG00000206158; transcript_id=ENST00000382964; exon_id=ENSE00001494097; gene_type=KNOWN_protein_coding\n"
99
+ line = ["chromosome:NCBI36:4:1149206:1149209:1",
100
+ "Ensembl",
101
+ "Gene",
102
+ "-839",
103
+ "2747",
104
+ ".",
105
+ "+",
106
+ ".",
107
+ "gene_id=ENSG00000206158; transcript_id=ENST00000382964; exon_id=ENSE00001494097; gene_type=KNOWN_protein_coding"].join("\t") + "\n"
108
+ line = ["4",
109
+ "Ensembl",
110
+ "Gene",
111
+ "1148366",
112
+ "1151952",
113
+ ".",
114
+ "+",
115
+ "1",
116
+ "gene_id=ENSG00000206158; transcript_id=ENST00000382964; exon_id=ENSE00001494097; gene_type=KNOWN_protein_coding"].join("\t") + "\n"
83
117
  gff = @serv.exportview(:seq_region_name => 4,
84
118
  :anchor1 => 1149206,
85
119
  :anchor2 => 1149209,
@@ -88,7 +122,56 @@ class FuncTestEnsemblHuman < Test::Unit::TestCase
88
122
  end
89
123
 
90
124
  def test_tab_exportview_with_named_args
91
- line = "seqname\tsource\tfeature\tstart\tend\tscore\tstrand\tframe\tgene_id\ttranscript_id\texon_id\tgene_type\nchromosome:NCBI36:4:1149206:1149209:1\tEnsembl\tGene\t-839\t2747\t.\t+\t.\tENSG00000206158\tENST00000382964\tENSE00001494097\tKNOWN_protein_coding\n"
125
+ line = [["seqname",
126
+ "source",
127
+ "feature",
128
+ "start",
129
+ "end",
130
+ "score",
131
+ "strand",
132
+ "frame",
133
+ "gene_id",
134
+ "transcript_id",
135
+ "exon_id",
136
+ "gene_type"].join("\t"),
137
+ ["chromosome:NCBI36:4:1149206:1149209:1",
138
+ "Ensembl",
139
+ "Gene",
140
+ "-839",
141
+ "2747",
142
+ ".",
143
+ "+",
144
+ ".",
145
+ "ENSG00000206158",
146
+ "ENST00000382964",
147
+ "ENSE00001494097",
148
+ "KNOWN_protein_coding"].join("\t") + "\n"
149
+ ].join("\n")
150
+ line = [["seqname",
151
+ "source",
152
+ "feature",
153
+ "start",
154
+ "end",
155
+ "score",
156
+ "strand",
157
+ "frame",
158
+ "gene_id",
159
+ "transcript_id",
160
+ "exon_id",
161
+ "gene_type"].join("\t"),
162
+ ["4",
163
+ "Ensembl",
164
+ "Gene",
165
+ "1148366",
166
+ "1151952",
167
+ ".",
168
+ "+",
169
+ "1",
170
+ "ENSG00000206158",
171
+ "ENST00000382964",
172
+ "ENSE00001494097",
173
+ "KNOWN_protein_coding"].join("\t") + "\n"
174
+ ].join("\n")
92
175
  gff = @serv.exportview(:seq_region_name => 4,
93
176
  :anchor1 => 1149206,
94
177
  :anchor2 => 1149209,
@@ -6,7 +6,7 @@
6
6
  # Naohisa Goto <ng@bioruby.org>
7
7
  # License:: The Ruby License
8
8
  #
9
- # $Id: test_newick.rb,v 1.5 2007/04/05 23:35:43 trevor Exp $
9
+ # $Id: test_newick.rb,v 1.6 2007/12/12 16:06:22 ngoto Exp $
10
10
  #
11
11
 
12
12
  require 'test/unit'
@@ -53,4 +53,241 @@ module Bio
53
53
  end
54
54
 
55
55
  end #class TestNewick
56
+
57
+ class TestNewick2 < Test::Unit::TestCase
58
+
59
+ TREE_STRING = <<-END_OF_TREE_STRING
60
+ (
61
+ (
62
+ 'this is test':0.0625,
63
+ 'test2 (abc, def)':0.125
64
+ ) 'internal node''s name' : 0.25,
65
+ (
66
+ '''':0.03125,
67
+ (
68
+ 'ABCAC_HUMAN [ABC superfamily]':0.015625,
69
+ hypothetical_protein:0.5
70
+ ) ABC : 0.25 [99]
71
+ ) test3 :0.5
72
+ )root;
73
+ END_OF_TREE_STRING
74
+
75
+ def test_string_tree
76
+ newick = Bio::Newick.new(TREE_STRING)
77
+ tree = newick.tree
78
+ assert_equal('root', tree.root.name)
79
+ assert_equal([
80
+ "this is test",
81
+ "test2 (abc, def)",
82
+ "internal node\'s name",
83
+ "\'",
84
+ "ABCAC_HUMAN [ABC superfamily]",
85
+ "hypothetical protein",
86
+ "ABC",
87
+ "test3",
88
+ "root"
89
+ ].sort,
90
+ tree.nodes.collect { |x| x.name }.sort)
91
+
92
+ assert_equal(tree.children(tree.root).collect { |x| x.name }.sort,
93
+ [ "internal node\'s name", "test3" ])
94
+
95
+ node = tree.get_node_by_name('ABC')
96
+ assert_equal(99, node.bootstrap)
97
+
98
+ assert_equal(1.5625,
99
+ tree.distance(tree.get_node_by_name('hypothetical protein'),
100
+ tree.get_node_by_name('this is test')))
101
+ end
102
+
103
+ end #class TestNewick2
104
+
105
+ class TestNewickPrivate < Test::Unit::TestCase
106
+ def setup
107
+ @newick = Bio::Newick.new('') # dummy data
108
+ end
109
+
110
+ def test_parse_newick_leaf
111
+ leaf_tokens = [ "A:B _C(D,E)F\'s G[H]", :":", '0.5', :"[",
112
+ "&&NHX", :":", "S=human", :":", "E=1.1.1.1", :"]" ]
113
+ node = Bio::Tree::Node.new
114
+ edge = Bio::Tree::Edge.new
115
+ options = {}
116
+
117
+ assert_equal(true,
118
+ @newick.instance_eval do
119
+ __parse_newick_leaf(leaf_tokens, node, edge, options)
120
+ end)
121
+
122
+ assert_equal(:nhx, @newick.options[:original_format])
123
+ assert_equal("A:B _C(D,E)F\'s G[H]", node.name)
124
+ assert_equal("human", node.scientific_name)
125
+ assert_equal("1.1.1.1", node.ec_number)
126
+ assert_equal(0.5, edge.distance)
127
+ end
128
+
129
+ def test_parse_newick_get_tokens_for_leaf
130
+ input = [ "A:B _C(D,E)F\'s G[H]", :":", '0.5', :"[",
131
+ "&&NHX", :":", "S=human", :":", "E=1.1.1.1", :"]",
132
+ :",", :"(", "bbb", :":", "0.2", :")" ]
133
+ leaf_should_be = [ "A:B _C(D,E)F\'s G[H]", :":", '0.5', :"[",
134
+ "&&NHX", :":", "S=human", :":", "E=1.1.1.1", :"]" ]
135
+ rest_should_be = [ :",", :"(", "bbb", :":", "0.2", :")" ]
136
+
137
+ assert_equal(leaf_should_be,
138
+ @newick.instance_eval do
139
+ __parse_newick_get_tokens_for_leaf(input)
140
+ end)
141
+
142
+ assert_equal(rest_should_be, input)
143
+ end
144
+
145
+ def test_parse_newick_tokenize
146
+ examples =
147
+ [
148
+ [
149
+ '(a,b);', # input
150
+ [ :"(", 'a', :",", 'b', :")" ], # normal parser result
151
+ [ :"(", 'a', :",", 'b', :")" ], # naive parser result
152
+ ],
153
+ [
154
+ # input
155
+ "(\'A:B _C(D,E)F\'\'s G[H]\':0.5[&&NHX:S=human:E=1.1.1.1], \n(bbb:0.2, c_d_e[&&NHX:B=100]);",
156
+ # normal parser result
157
+ [ :"(", "A:B _C(D,E)F\'s G[H]", :":", '0.5', :"[",
158
+ "&&NHX", :":", "S=human", :":", "E=1.1.1.1", :"]",
159
+ :",", :"(", "bbb", :":", "0.2", :",",
160
+ "c d e", :"[", "&&NHX", :":", "B=100", :"]", :")" ],
161
+ # naive parser result
162
+ [ :"(", "\'A", :":", "B _C", :"(", "D", :",", "E",
163
+ :")", "F\'\'s G", :"[", "H", :"]", "\'", :":", '0.5', :"[",
164
+ "&&NHX", :":", "S=human", :":", "E=1.1.1.1", :"]",
165
+ :",", :"(", "bbb", :":", "0.2", :",",
166
+ "c_d_e", :"[", "&&NHX", :":", "B=100", :"]", :")" ]
167
+ ]
168
+ ]
169
+
170
+ examples.each do |a|
171
+ # normal parser
172
+ assert_equal(a[1],
173
+ @newick.instance_eval do
174
+ __parse_newick_tokenize(a[0], {})
175
+ end)
176
+
177
+ # naive parser
178
+ assert_equal(a[2],
179
+ @newick.instance_eval do
180
+ __parse_newick_tokenize(a[0], { :parser => :naive })
181
+ end)
182
+ end
183
+ end
184
+ end #class TestNewickPrivate
185
+
186
+ class TestBioTreeOutputPrivate < Test::Unit::TestCase
187
+
188
+ def setup
189
+ @tree = Bio::Tree.new
190
+ end
191
+
192
+ def test_to_newick_format_label
193
+ # unquoted_label
194
+ assert_equal('ABC', @tree.instance_eval do
195
+ __to_newick_format_label('ABC', {})
196
+ end)
197
+
198
+ # unquoted_label, replaces blank to underscore
199
+ assert_equal('A_B_C', @tree.instance_eval do
200
+ __to_newick_format_label('A B C', {})
201
+ end)
202
+
203
+ # quoted_label example 1
204
+ assert_equal("\'A B_C\'", @tree.instance_eval do
205
+ __to_newick_format_label('A B_C', {})
206
+ end)
207
+
208
+ # quoted_label example 2
209
+ assert_equal("\'A(B),C\'", @tree.instance_eval do
210
+ __to_newick_format_label('A(B),C', {})
211
+ end)
212
+
213
+ # normal formatter
214
+ assert_equal("\'A_B_C\'", @tree.instance_eval do
215
+ __to_newick_format_label('A_B_C', {})
216
+ end)
217
+ # naive formatter
218
+ assert_equal("A_B_C", @tree.instance_eval do
219
+ __to_newick_format_label('A_B_C',
220
+ { :parser => :naive })
221
+ end)
222
+ end
223
+
224
+
225
+ def test_to_newick_format_leaf
226
+ node = Bio::Tree::Node.new('ABC')
227
+ edge = Bio::Tree::Edge.new(0.5)
228
+
229
+ assert_equal('ABC:0.5', @tree.instance_eval do
230
+ __to_newick_format_leaf(node, edge, {})
231
+ end)
232
+
233
+ # disable branch length
234
+ assert_equal('ABC', @tree.instance_eval do
235
+ __to_newick_format_leaf(node, edge,
236
+ { :branch_length_style =>
237
+ :disabled })
238
+ end)
239
+
240
+ node.bootstrap = 98
241
+ # default: molphy style bootstrap
242
+ assert_equal('ABC:0.5[98]', @tree.instance_eval do
243
+ __to_newick_format_leaf(node, edge, {})
244
+ end)
245
+ # force molphy style bootstrap
246
+ assert_equal('ABC:0.5[98]', @tree.instance_eval do
247
+ __to_newick_format_leaf(node, edge,
248
+ { :bootstrap_style => :molphy })
249
+ end)
250
+ # disable bootstrap output
251
+ assert_equal('ABC:0.5', @tree.instance_eval do
252
+ __to_newick_format_leaf(node, edge,
253
+ { :bootstrap_style =>
254
+ :disabled })
255
+ end)
256
+
257
+ # force traditional bootstrap style
258
+ assert_equal('ABC98:0.5', @tree.instance_eval do
259
+ __to_newick_format_leaf(node, edge,
260
+ { :bootstrap_style =>
261
+ :traditional })
262
+ end)
263
+ # normally, when traditional style, no node name allowed for the node
264
+ node2 = Bio::Tree::Node.new
265
+ node2.bootstrap = 98
266
+ assert_equal('98:0.5', @tree.instance_eval do
267
+ __to_newick_format_leaf(node2, edge,
268
+ { :bootstrap_style =>
269
+ :traditional })
270
+ end)
271
+
272
+ end
273
+
274
+ def test_to_newick_format_leaf_NHX
275
+ node = Bio::Tree::Node.new('ADH')
276
+ edge = Bio::Tree::Edge.new(0.5)
277
+ node.bootstrap = 98
278
+ node.ec_number = '1.1.1.1'
279
+ node.scientific_name = 'human'
280
+ node.taxonomy_id = '9606'
281
+ node.events.push :gene_duplication
282
+ edge.log_likelihood = 1.5
283
+ edge.width = 3
284
+
285
+ str = 'ADH:0.5[&&NHX:B=98:D=Y:E=1.1.1.1:L=1.5:S=human:T=9606:W=3]'
286
+ assert_equal(str, @tree.instance_eval do
287
+ __to_newick_format_leaf_NHX(node, edge, {})
288
+ end)
289
+ end
290
+
291
+ end #class TestBioTreeOutputPrivate
292
+
56
293
  end #module Bio