bio-krona 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +2 -3
- data/Rakefile +0 -4
- data/VERSION +1 -1
- data/lib/bio-krona/krona.rb +43 -19
- data/spec/bio-krona_wrapper_spec.rb +51 -0
- metadata +27 -62
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5b05815b00deb3388e4c80630a62aa09eed51007
|
4
|
+
data.tar.gz: af4bf2f1f0101424c60c3a33f8b2af9f5456204b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 60240f084a744c257bd5aa0f921593aebf2ec885b9d23f5b886c08c1372d99f910faffcb62affa65f8871695f60b683ac67ae5a6bbf1b6f52b1cac7ffe86a888
|
7
|
+
data.tar.gz: c5467498399e8578c52d46ad7db63433cbe0ebc05feb432982849ad0c96441ada4249c6b53384bb61993690294e64c4364682d964367be36253ebc62e599a132
|
data/Gemfile
CHANGED
@@ -7,11 +7,10 @@ gem 'bio'
|
|
7
7
|
# Add dependencies to develop your gem here.
|
8
8
|
# Include everything needed to run rake, tests, features, etc.
|
9
9
|
group :development do
|
10
|
-
gem "rspec", "
|
10
|
+
gem "rspec", "~> 2.8.0"
|
11
11
|
gem "yard", ">= 0.7"
|
12
12
|
gem "rdoc", ">= 3.12"
|
13
|
-
gem "cucumber", ">= 0"
|
14
13
|
gem "jeweler", ">= 1.8.3"
|
15
14
|
gem "bundler", ">= 1.0.21"
|
16
|
-
gem
|
15
|
+
gem 'pry'
|
17
16
|
end
|
data/Rakefile
CHANGED
@@ -34,10 +34,6 @@ RSpec::Core::RakeTask.new(:test_without_wrapper) do |spec|
|
|
34
34
|
spec.pattern = FileList['spec/**/*_spec.rb'].reject{|f| f=='spec/bio-krona_wrapper_spec.rb'}
|
35
35
|
end
|
36
36
|
|
37
|
-
|
38
|
-
require 'cucumber/rake/task'
|
39
|
-
Cucumber::Rake::Task.new(:features)
|
40
|
-
|
41
37
|
task :default => :spec
|
42
38
|
|
43
39
|
require 'yard'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/lib/bio-krona/krona.rb
CHANGED
@@ -8,12 +8,14 @@ module Bio
|
|
8
8
|
# * options:
|
9
9
|
# ** :krona_path: path to the ktImportText script in the krona directory (default 'ktImportText' i.e. assuming it is already in the PATH)
|
10
10
|
# ** :resources_url: URL of krona resources (i.e. the -u option of ktImportText)
|
11
|
+
# ** :multiple_samples: count_hash is a hash of sample names to hash of Array => Numeric, when multiple samples are to be included [default false]
|
11
12
|
def self.html(count_hash, options={})
|
12
13
|
raise unless count_hash.kind_of?(Hash)
|
13
14
|
options[:krona_path] ||= %(ktImportText)
|
14
15
|
|
15
|
-
|
16
|
-
|
16
|
+
get_tempfile_from_count_hash = lambda do |ch|
|
17
|
+
tempfile = Tempfile.new('krona')
|
18
|
+
ch.each do |array, count|
|
17
19
|
raise unless array.kind_of?(Array)
|
18
20
|
raise unless count.kind_of?(Numeric)
|
19
21
|
|
@@ -23,27 +25,49 @@ module Bio
|
|
23
25
|
].flatten.join("\t")
|
24
26
|
end
|
25
27
|
tempfile.close
|
28
|
+
tempfile
|
29
|
+
end
|
26
30
|
|
27
|
-
|
28
|
-
|
31
|
+
input_tempfiles = []
|
32
|
+
input_names = []
|
33
|
+
if options[:multiple_samples]
|
34
|
+
input_names = count_hash.keys
|
35
|
+
input_tempfiles = count_hash.values.collect{|ch| get_tempfile_from_count_hash.call(ch)}
|
36
|
+
else
|
37
|
+
input_names = [nil]
|
38
|
+
input_tempfiles = [get_tempfile_from_count_hash.call(count_hash)]
|
39
|
+
end
|
29
40
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
end
|
40
|
-
Bio::Command.call_command_open3(command) do |stdin, stdout, stderr|
|
41
|
-
err = stderr.read
|
42
|
-
raise err unless err==''
|
43
|
-
end
|
41
|
+
pairs = []
|
42
|
+
input_names.each_with_index do |name, i|
|
43
|
+
tmpname = input_tempfiles[i].path
|
44
|
+
if name.nil?
|
45
|
+
pairs.push tmpname
|
46
|
+
else
|
47
|
+
pairs.push "#{tmpname},#{name}"
|
48
|
+
end
|
49
|
+
end
|
44
50
|
|
45
|
-
|
51
|
+
Tempfile.open('krona_out') do |output|
|
52
|
+
output.close
|
53
|
+
|
54
|
+
command = [
|
55
|
+
options[:krona_path],
|
56
|
+
'-o',
|
57
|
+
output.path,
|
58
|
+
pairs,
|
59
|
+
].flatten
|
60
|
+
if options[:resources_url]
|
61
|
+
command.push '-u'
|
62
|
+
command.push options[:resources_url]
|
46
63
|
end
|
64
|
+
Bio::Command.call_command_open3(command) do |stdin, stdout, stderr|
|
65
|
+
err = stderr.read
|
66
|
+
raise err unless err==''
|
67
|
+
end
|
68
|
+
|
69
|
+
input_tempfiles.each{|t| t.close}
|
70
|
+
return File.open(output.path).read
|
47
71
|
end
|
48
72
|
end
|
49
73
|
|
@@ -68,4 +68,55 @@ EOF
|
|
68
68
|
|
69
69
|
html.should match('script src="http://dummy.com')
|
70
70
|
end
|
71
|
+
|
72
|
+
it "should give a html with multiple samples" do
|
73
|
+
html = Bio::Krona.html({'sample1' => {
|
74
|
+
['Sponge','Amphimedon']=>3,
|
75
|
+
['Sponge','Calciums']=>4,
|
76
|
+
},
|
77
|
+
'sample2' => {
|
78
|
+
['Sponge','Amphimedon']=>30,
|
79
|
+
['Sponge','Calciums']=>45,
|
80
|
+
}
|
81
|
+
}, :multiple_samples => true)
|
82
|
+
html.should == '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n <head>\n <meta charset=\"utf-8\"/>\n <link rel=\"shortcut icon\" href=\"http://krona.sourceforge.net/img/favicon.ico\"/>\n <script id=\"notfound\">window.onload=function(){document.body.innerHTML=\"Could not get resources from \\\"http://krona.sourceforge.net\\\".\"}</script>\n <script src=\"http://krona.sourceforge.net/src/krona-2.0.js\"></script>\n </head>\n <body>\n <img id=\"hiddenImage\" src=\"http://krona.sourceforge.net/img/hidden.png\" style=\"display:none\"/>\n <img id=\"loadingImage\" src=\"http://krona.sourceforge.net/img/loading.gif\" style=\"display:none\"/>\n <noscript>Javascript must be enabled to view this page.</noscript>\n <div style=\"display:none\">\n <krona collapse=\"true\" key=\"true\">\n <attributes magnitude=\"magnitude\">\n <list>members</list>\n <attribute display=\"Total\">magnitude</attribute>\n </attributes>\n <datasets>\n <dataset>sample1</dataset>\n <dataset>sample2</dataset>\n </datasets>\n<node name=\"all\">\n <magnitude><val>7</val><val>75</val></magnitude>\n <node name=\"Sponge\">\n <magnitude><val>7</val><val>75</val></magnitude>\n <node name=\"Amphimedon\">\n <magnitude><val>3</val><val>30</val></magnitude>\n </node>\n <node name=\"Calciums\">\n <magnitude><val>4</val><val>45</val></magnitude>\n </node>\n </node>\n</node>\n </krona>\n</div></body></html>\n" (using ==)
|
83
|
+
Diff:
|
84
|
+
@@ -1 +1,37 @@
|
85
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
86
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
87
|
+
<head>
|
88
|
+
<meta charset="utf-8"/>
|
89
|
+
<link rel="shortcut icon" href="http://krona.sourceforge.net/img/favicon.ico"/>
|
90
|
+
<script id="notfound">window.onload=function(){document.body.innerHTML="Could not get resources from \"http://krona.sourceforge.net\"."}</script>
|
91
|
+
<script src="http://krona.sourceforge.net/src/krona-2.0.js"></script>
|
92
|
+
</head>
|
93
|
+
<body>
|
94
|
+
<img id="hiddenImage" src="http://krona.sourceforge.net/img/hidden.png" style="display:none"/>
|
95
|
+
<img id="loadingImage" src="http://krona.sourceforge.net/img/loading.gif" style="display:none"/>
|
96
|
+
<noscript>Javascript must be enabled to view this page.</noscript>
|
97
|
+
<div style="display:none">
|
98
|
+
<krona collapse="true" key="true">
|
99
|
+
<attributes magnitude="magnitude">
|
100
|
+
<list>members</list>
|
101
|
+
<attribute display="Total">magnitude</attribute>
|
102
|
+
</attributes>
|
103
|
+
<datasets>
|
104
|
+
<dataset>sample1</dataset>
|
105
|
+
<dataset>sample2</dataset>
|
106
|
+
</datasets>
|
107
|
+
<node name="all">
|
108
|
+
<magnitude><val>7</val><val>75</val></magnitude>
|
109
|
+
<node name="Sponge">
|
110
|
+
<magnitude><val>7</val><val>75</val></magnitude>
|
111
|
+
<node name="Amphimedon">
|
112
|
+
<magnitude><val>3</val><val>30</val></magnitude>
|
113
|
+
</node>
|
114
|
+
<node name="Calciums">
|
115
|
+
<magnitude><val>4</val><val>45</val></magnitude>
|
116
|
+
</node>
|
117
|
+
</node>
|
118
|
+
</node>
|
119
|
+
</krona>
|
120
|
+
+</div></body></html>'
|
121
|
+
end
|
71
122
|
end
|
metadata
CHANGED
@@ -1,144 +1,113 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bio-krona
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Ben J. Woodcroft
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2015-12-12 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bio
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rspec
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - "~>"
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: 2.8.0
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - "~>"
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: 2.8.0
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: yard
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0.7'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0.7'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rdoc
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ">="
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '3.12'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - ">="
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '3.12'
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: cucumber
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - ! '>='
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: '0'
|
86
|
-
type: :development
|
87
|
-
prerelease: false
|
88
|
-
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ! '>='
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '0'
|
94
69
|
- !ruby/object:Gem::Dependency
|
95
70
|
name: jeweler
|
96
71
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
72
|
requirements:
|
99
|
-
- -
|
73
|
+
- - ">="
|
100
74
|
- !ruby/object:Gem::Version
|
101
75
|
version: 1.8.3
|
102
76
|
type: :development
|
103
77
|
prerelease: false
|
104
78
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
79
|
requirements:
|
107
|
-
- -
|
80
|
+
- - ">="
|
108
81
|
- !ruby/object:Gem::Version
|
109
82
|
version: 1.8.3
|
110
83
|
- !ruby/object:Gem::Dependency
|
111
84
|
name: bundler
|
112
85
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
86
|
requirements:
|
115
|
-
- -
|
87
|
+
- - ">="
|
116
88
|
- !ruby/object:Gem::Version
|
117
89
|
version: 1.0.21
|
118
90
|
type: :development
|
119
91
|
prerelease: false
|
120
92
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
93
|
requirements:
|
123
|
-
- -
|
94
|
+
- - ">="
|
124
95
|
- !ruby/object:Gem::Version
|
125
96
|
version: 1.0.21
|
126
97
|
- !ruby/object:Gem::Dependency
|
127
|
-
name:
|
98
|
+
name: pry
|
128
99
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
100
|
requirements:
|
131
|
-
- -
|
101
|
+
- - ">="
|
132
102
|
- !ruby/object:Gem::Version
|
133
|
-
version: '
|
103
|
+
version: '0'
|
134
104
|
type: :development
|
135
105
|
prerelease: false
|
136
106
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
107
|
requirements:
|
139
|
-
- -
|
108
|
+
- - ">="
|
140
109
|
- !ruby/object:Gem::Version
|
141
|
-
version: '
|
110
|
+
version: '0'
|
142
111
|
description: This biogem is built around Krona, a flashy way of representing hierarchical
|
143
112
|
data.
|
144
113
|
email: donttrustben near gmail.com
|
@@ -148,9 +117,9 @@ extra_rdoc_files:
|
|
148
117
|
- LICENSE.txt
|
149
118
|
- README.md
|
150
119
|
files:
|
151
|
-
- .document
|
152
|
-
- .rspec
|
153
|
-
- .travis.yml
|
120
|
+
- ".document"
|
121
|
+
- ".rspec"
|
122
|
+
- ".travis.yml"
|
154
123
|
- Gemfile
|
155
124
|
- LICENSE.txt
|
156
125
|
- README.md
|
@@ -166,30 +135,26 @@ files:
|
|
166
135
|
homepage: http://github.com/wwood/bioruby-krona
|
167
136
|
licenses:
|
168
137
|
- MIT
|
138
|
+
metadata: {}
|
169
139
|
post_install_message:
|
170
140
|
rdoc_options: []
|
171
141
|
require_paths:
|
172
142
|
- lib
|
173
143
|
required_ruby_version: !ruby/object:Gem::Requirement
|
174
|
-
none: false
|
175
144
|
requirements:
|
176
|
-
- -
|
145
|
+
- - ">="
|
177
146
|
- !ruby/object:Gem::Version
|
178
147
|
version: '0'
|
179
|
-
segments:
|
180
|
-
- 0
|
181
|
-
hash: -432620685
|
182
148
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
183
|
-
none: false
|
184
149
|
requirements:
|
185
|
-
- -
|
150
|
+
- - ">="
|
186
151
|
- !ruby/object:Gem::Version
|
187
152
|
version: '0'
|
188
153
|
requirements: []
|
189
154
|
rubyforge_project:
|
190
|
-
rubygems_version:
|
155
|
+
rubygems_version: 2.2.2
|
191
156
|
signing_key:
|
192
|
-
specification_version:
|
157
|
+
specification_version: 4
|
193
158
|
summary: This biogem is built around Krona, a flashy way of representing hierarchical
|
194
159
|
data.
|
195
160
|
test_files: []
|