miga-base 0.2.0.7 → 0.2.0.8
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 +4 -4
- data/README.md +11 -8
- data/Rakefile +9 -25
- data/lib/miga/version.rb +1 -1
- data/test/common_test.rb +2 -2
- data/test/metadata_test.rb +3 -3
- metadata +43 -59
- data/lib/miga/gui.rb +0 -366
- data/test/jruby_gui_test.rb +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d5b65b148f8dcf02c72cb2f639dc5e9489e6c48
|
4
|
+
data.tar.gz: 9a622a92c91d26a9bb9e0c95c113fa2c3e37e115
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d6fde30f68fa1b4c011ad48de229fde75b01d3113028f169e4e6fa951328db7ae4b78f16366772900d65eb8b5047cca6464f6b9ea0428f406d1a85d0ddfb7d7
|
7
|
+
data.tar.gz: 286a9b45b54bb400ca772cec6c8dc9c9c2ed62de170dd28a1b715af590e726a6544a1a127495062b41764de6e4f3ddfa92566196fdbd84febc6041056cf566af
|
data/README.md
CHANGED
@@ -3,19 +3,20 @@
|
|
3
3
|
[](https://travis-ci.org/bio-miga/miga)
|
4
4
|
[](https://badge.fury.io/rb/miga-base)
|
5
5
|
[](http://inch-ci.org/github/bio-miga/miga)
|
6
|
-
[](http://www.rubydoc.info/github/bio-miga/miga)
|
7
6
|
|
8
7
|
|
9
8
|
# MiGA: Microbial Genomes Atlas
|
10
9
|
|
11
|
-
**Important**:
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
**Important**: MiGA is under active development, and we currently cannot ensure
|
11
|
+
any stability on the different interfaces. We'll be launching a Beta Testing
|
12
|
+
program soon, with dedicated support for a small number of laboratories. If
|
13
|
+
you're interested, please [contact us][contact].
|
15
14
|
|
16
|
-
For additional information on
|
17
|
-
[MiGA manual][gitbook]
|
18
|
-
|
15
|
+
For additional information on MiGA, visit:
|
16
|
+
* [MiGA manual][gitbook]: The definitive guide to MiGA.
|
17
|
+
* [MiGA API docs][rubydoc]: Inner-workings of the `miga-base` gem.
|
18
|
+
* [MiGA Web][miga-web]: MiGA on Rails!
|
19
|
+
* [MiGA GUI][miga-gui]: MiGA on Shoes!
|
19
20
|
|
20
21
|
|
21
22
|
# Authors
|
@@ -31,3 +32,5 @@ See [LICENSE](LICENSE).
|
|
31
32
|
[gitbook]: https://miga.gitbooks.io/miga/content/
|
32
33
|
[rubydoc]: http://www.rubydoc.info/github/bio-miga/miga
|
33
34
|
[contact]: http://enve-omics.gatech.edu/node/7
|
35
|
+
[miga-web]: https://github.com/bio-miga/miga-web
|
36
|
+
[miga-gui]: https://github.com/bio-miga/miga-gui
|
data/Rakefile
CHANGED
@@ -3,29 +3,13 @@ require "rake/testtask"
|
|
3
3
|
SOURCES = FileList["lib/**/*.rb"]
|
4
4
|
|
5
5
|
desc "Default Task"
|
6
|
-
task :default => "test:
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
desc "GUI Tests"
|
16
|
-
Rake::TestTask.new("test:gui") do |t|
|
17
|
-
ENV["GUI_TESTS"] = "true"
|
18
|
-
t.libs << "test"
|
19
|
-
t.libs << "test"
|
20
|
-
t.pattern = "test/j*_test.rb"
|
21
|
-
t.verbose = true
|
22
|
-
end
|
23
|
-
|
24
|
-
desc "All the tests"
|
25
|
-
Rake::TestTask.new("test:all") do |t|
|
26
|
-
ENV["GUI_TESTS"] = "true"
|
27
|
-
t.libs << "test"
|
28
|
-
t.libs << "test"
|
29
|
-
t.pattern = "test/*_test.rb"
|
30
|
-
t.verbose = true
|
6
|
+
task :default => "test:all"
|
7
|
+
|
8
|
+
namespace :test do
|
9
|
+
desc "All tests"
|
10
|
+
Rake::TestTask.new(:all) do |t|
|
11
|
+
t.libs << "test"
|
12
|
+
t.pattern = "test/*_test.rb"
|
13
|
+
t.verbose = true
|
14
|
+
end
|
31
15
|
end
|
data/lib/miga/version.rb
CHANGED
@@ -10,7 +10,7 @@ module MiGA
|
|
10
10
|
# - Float representing the major.minor version.
|
11
11
|
# - Integer representing gem releases of the current version.
|
12
12
|
# - Integer representing minor changes that require new version number.
|
13
|
-
VERSION = [0.2, 0,
|
13
|
+
VERSION = [0.2, 0, 8]
|
14
14
|
|
15
15
|
##
|
16
16
|
# Nickname for the current major.minor version.
|
data/test/common_test.rb
CHANGED
@@ -3,7 +3,7 @@ require "test_helper"
|
|
3
3
|
class CommonTest < Test::Unit::TestCase
|
4
4
|
|
5
5
|
def setup
|
6
|
-
$
|
6
|
+
$jruby_tests = !ENV["JRUBY_TESTS"].nil?
|
7
7
|
end
|
8
8
|
|
9
9
|
def test_debug
|
@@ -28,7 +28,7 @@ class CommonTest < Test::Unit::TestCase
|
|
28
28
|
assert_respond_to(MiGA::MiGA, :DEBUG)
|
29
29
|
assert_respond_to(MiGA::MiGA, :DEBUG_ON)
|
30
30
|
assert_respond_to(MiGA::MiGA, :DEBUG_OFF)
|
31
|
-
omit_if($
|
31
|
+
omit_if($jruby_tests, "JRuby doesn't like interceptions.")
|
32
32
|
MiGA::MiGA.DEBUG_TRACE_ON
|
33
33
|
err = capture_stderr do
|
34
34
|
MiGA::MiGA.DEBUG "Dandadi"
|
data/test/metadata_test.rb
CHANGED
@@ -5,7 +5,7 @@ class MetadataTest < Test::Unit::TestCase
|
|
5
5
|
|
6
6
|
def setup
|
7
7
|
$tmp = Dir.mktmpdir
|
8
|
-
$
|
8
|
+
$jruby_tests = !ENV["JRUBY_TESTS"].nil?
|
9
9
|
end
|
10
10
|
|
11
11
|
def teardown
|
@@ -13,7 +13,7 @@ class MetadataTest < Test::Unit::TestCase
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def test_save
|
16
|
-
omit_if($
|
16
|
+
omit_if($jruby_tests, "JRuby doesn't implement fork.")
|
17
17
|
md1 = MiGA::Metadata.new(File.expand_path("md_save.json", $tmp))
|
18
18
|
FileUtils.touch(md1.lock_file)
|
19
19
|
fork do
|
@@ -30,7 +30,7 @@ class MetadataTest < Test::Unit::TestCase
|
|
30
30
|
def test_load
|
31
31
|
md1 = MiGA::Metadata.new(File.expand_path("md_load.json", $tmp), {:t=>1})
|
32
32
|
assert_equal(1, md1[:t])
|
33
|
-
omit_if($
|
33
|
+
omit_if($jruby_tests, "JRuby doesn't implement fork.")
|
34
34
|
FileUtils.touch(md1.lock_file)
|
35
35
|
fork do
|
36
36
|
sleep(1)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: miga-base
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.0.
|
4
|
+
version: 0.2.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luis M. Rodriguez-R
|
@@ -14,84 +14,70 @@ dependencies:
|
|
14
14
|
name: rest-client
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.7'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.7'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: sqlite3
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '1.3'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '1.3'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: daemons
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
|
-
- -
|
31
|
+
- - ~>
|
46
32
|
- !ruby/object:Gem::Version
|
47
33
|
version: '1.2'
|
48
34
|
type: :runtime
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
|
-
- -
|
38
|
+
- - ~>
|
53
39
|
- !ruby/object:Gem::Version
|
54
40
|
version: '1.2'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: json
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
|
-
- -
|
45
|
+
- - ~>
|
60
46
|
- !ruby/object:Gem::Version
|
61
47
|
version: '1.8'
|
62
48
|
type: :runtime
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
|
-
- -
|
52
|
+
- - ~>
|
67
53
|
- !ruby/object:Gem::Version
|
68
54
|
version: '1.8'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: rake
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
|
-
- -
|
59
|
+
- - ~>
|
74
60
|
- !ruby/object:Gem::Version
|
75
61
|
version: '11'
|
76
62
|
type: :development
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
|
-
- -
|
66
|
+
- - ~>
|
81
67
|
- !ruby/object:Gem::Version
|
82
68
|
version: '11'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: test-unit
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
|
-
- -
|
73
|
+
- - ~>
|
88
74
|
- !ruby/object:Gem::Version
|
89
75
|
version: '3'
|
90
76
|
type: :development
|
91
77
|
prerelease: false
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
|
-
- -
|
80
|
+
- - ~>
|
95
81
|
- !ruby/object:Gem::Version
|
96
82
|
version: '3'
|
97
83
|
description: Microbial Genomes Atlas
|
@@ -102,28 +88,9 @@ extensions: []
|
|
102
88
|
extra_rdoc_files:
|
103
89
|
- README.md
|
104
90
|
files:
|
105
|
-
- Gemfile
|
106
|
-
- LICENSE
|
107
|
-
- README.md
|
108
|
-
- Rakefile
|
109
|
-
- actions/add_result
|
110
|
-
- actions/add_taxonomy
|
111
|
-
- actions/create_dataset
|
112
|
-
- actions/create_project
|
113
|
-
- actions/daemon
|
114
|
-
- actions/download_dataset
|
115
|
-
- actions/find_datasets
|
116
|
-
- actions/import_datasets
|
117
|
-
- actions/index_taxonomy
|
118
|
-
- actions/list_datasets
|
119
|
-
- actions/list_files
|
120
|
-
- actions/unlink_dataset
|
121
|
-
- bin/miga
|
122
|
-
- lib/miga.rb
|
123
91
|
- lib/miga/common.rb
|
124
92
|
- lib/miga/daemon.rb
|
125
93
|
- lib/miga/dataset.rb
|
126
|
-
- lib/miga/gui.rb
|
127
94
|
- lib/miga/metadata.rb
|
128
95
|
- lib/miga/project.rb
|
129
96
|
- lib/miga/remote_dataset.rb
|
@@ -131,6 +98,16 @@ files:
|
|
131
98
|
- lib/miga/tax_index.rb
|
132
99
|
- lib/miga/taxonomy.rb
|
133
100
|
- lib/miga/version.rb
|
101
|
+
- lib/miga.rb
|
102
|
+
- test/common_test.rb
|
103
|
+
- test/daemon_test.rb
|
104
|
+
- test/dataset_test.rb
|
105
|
+
- test/metadata_test.rb
|
106
|
+
- test/project_test.rb
|
107
|
+
- test/remote_dataset_test.rb
|
108
|
+
- test/tax_index_test.rb
|
109
|
+
- test/taxonomy_test.rb
|
110
|
+
- test/test_helper.rb
|
134
111
|
- scripts/_distances_noref_nomulti.bash
|
135
112
|
- scripts/_distances_ref_nomulti.bash
|
136
113
|
- scripts/aai_distances.bash
|
@@ -151,22 +128,29 @@ files:
|
|
151
128
|
- scripts/subclades.bash
|
152
129
|
- scripts/trimmed_fasta.bash
|
153
130
|
- scripts/trimmed_reads.bash
|
154
|
-
- test/common_test.rb
|
155
|
-
- test/daemon_test.rb
|
156
|
-
- test/dataset_test.rb
|
157
|
-
- test/jruby_gui_test.rb
|
158
|
-
- test/metadata_test.rb
|
159
|
-
- test/project_test.rb
|
160
|
-
- test/remote_dataset_test.rb
|
161
|
-
- test/tax_index_test.rb
|
162
|
-
- test/taxonomy_test.rb
|
163
|
-
- test/test_helper.rb
|
164
131
|
- utils/adapters.fa
|
165
132
|
- utils/mytaxa_scan.R
|
166
133
|
- utils/mytaxa_scan.rb
|
167
134
|
- utils/requirements.txt
|
168
135
|
- utils/subclades-compile.rb
|
169
136
|
- utils/subclades.R
|
137
|
+
- bin/miga
|
138
|
+
- actions/add_result
|
139
|
+
- actions/add_taxonomy
|
140
|
+
- actions/create_dataset
|
141
|
+
- actions/create_project
|
142
|
+
- actions/daemon
|
143
|
+
- actions/download_dataset
|
144
|
+
- actions/find_datasets
|
145
|
+
- actions/import_datasets
|
146
|
+
- actions/index_taxonomy
|
147
|
+
- actions/list_datasets
|
148
|
+
- actions/list_files
|
149
|
+
- actions/unlink_dataset
|
150
|
+
- Gemfile
|
151
|
+
- Rakefile
|
152
|
+
- README.md
|
153
|
+
- LICENSE
|
170
154
|
homepage: http://enve-omics.ce.gatech.edu/miga
|
171
155
|
licenses:
|
172
156
|
- Artistic-2.0
|
@@ -175,25 +159,25 @@ post_install_message:
|
|
175
159
|
rdoc_options:
|
176
160
|
- lib
|
177
161
|
- README.md
|
178
|
-
-
|
162
|
+
- --main
|
179
163
|
- README.md
|
180
|
-
-
|
164
|
+
- --title
|
181
165
|
- MiGA
|
182
166
|
require_paths:
|
183
167
|
- lib
|
184
168
|
required_ruby_version: !ruby/object:Gem::Requirement
|
185
169
|
requirements:
|
186
|
-
- -
|
170
|
+
- - ~>
|
187
171
|
- !ruby/object:Gem::Version
|
188
172
|
version: '2.0'
|
189
173
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
190
174
|
requirements:
|
191
|
-
- -
|
175
|
+
- - '>='
|
192
176
|
- !ruby/object:Gem::Version
|
193
177
|
version: '0'
|
194
178
|
requirements: []
|
195
179
|
rubyforge_project:
|
196
|
-
rubygems_version: 2.
|
180
|
+
rubygems_version: 2.0.14
|
197
181
|
signing_key:
|
198
182
|
specification_version: 4
|
199
183
|
summary: MiGA
|
data/lib/miga/gui.rb
DELETED
@@ -1,366 +0,0 @@
|
|
1
|
-
# @package MiGA
|
2
|
-
# @license Artistic-2.0
|
3
|
-
|
4
|
-
require "miga/common"
|
5
|
-
require "miga/project"
|
6
|
-
require "shoes"
|
7
|
-
require "shoes/swt"
|
8
|
-
|
9
|
-
Shoes::Swt.initialize_backend
|
10
|
-
|
11
|
-
##
|
12
|
-
# Graphical User Interface for MiGA using Shoes.
|
13
|
-
class MiGA::GUI < Shoes
|
14
|
-
|
15
|
-
# Class-level
|
16
|
-
|
17
|
-
##
|
18
|
-
# Set system status for MiGA::GUI.
|
19
|
-
def self.status=(status) @@STATUS = status ; end
|
20
|
-
|
21
|
-
##
|
22
|
-
# System status for MiGA::GUI.
|
23
|
-
def self.status() @@STATUS; end
|
24
|
-
@@STATUS = "Initializing MiGA..."
|
25
|
-
|
26
|
-
##
|
27
|
-
# Reset the system status for MiGA::GUI.
|
28
|
-
def self.reset_status() @@STATUS="MiGA is ready to go!" ; end
|
29
|
-
|
30
|
-
url "/", :index
|
31
|
-
url "/project", :project
|
32
|
-
url "/datasets", :datasets
|
33
|
-
url "/dataset-(.*)", :dataset
|
34
|
-
url "/report", :report
|
35
|
-
$miga_gui_path = File.expand_path("../../../gui", __FILE__)
|
36
|
-
|
37
|
-
##
|
38
|
-
# Initialize GUI.
|
39
|
-
def self.init (&block)
|
40
|
-
Shoes.app title: "MiGA | Microbial Genomes Atlas",
|
41
|
-
width: 750, height: 400, &block
|
42
|
-
end
|
43
|
-
|
44
|
-
# =====================[ View : Windows ]
|
45
|
-
|
46
|
-
##
|
47
|
-
# Main window.
|
48
|
-
def index
|
49
|
-
header("Microbial Genomes Atlas")
|
50
|
-
stack(margin:40) do
|
51
|
-
menu_bar [:open_project, :new_project, :help]
|
52
|
-
box alpha: 0.0 do
|
53
|
-
para "Welcome to the MiGA GUI. If you use MiGA in your research, ",
|
54
|
-
"please consider citing:\n", MiGA::MiGA.CITATION
|
55
|
-
end
|
56
|
-
end
|
57
|
-
MiGA::GUI.reset_status
|
58
|
-
status_bar
|
59
|
-
end
|
60
|
-
|
61
|
-
##
|
62
|
-
# Project window.
|
63
|
-
def project
|
64
|
-
header("» " + $project.name.unmiga_name)
|
65
|
-
stack(margin:40) do
|
66
|
-
menu_bar [:list_datasets, :new_dataset, :progress_report, :help]
|
67
|
-
stack(margin_top:10) do
|
68
|
-
para strong("Path"), ": ", $project.path
|
69
|
-
para strong("Datasets"), ": ", $project.metadata[:datasets].size
|
70
|
-
$project.metadata.each do |k,v|
|
71
|
-
para(strong(k.to_s.capitalize), ": ", v) unless k==:datasets
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
MiGA::GUI.reset_status
|
76
|
-
end
|
77
|
-
|
78
|
-
##
|
79
|
-
# Datasets list window.
|
80
|
-
def datasets
|
81
|
-
header("» " + $project.name.unmiga_name)
|
82
|
-
stack(margin:40) do
|
83
|
-
para "#{$project.metadata[:datasets].size} datasets:"
|
84
|
-
para ""
|
85
|
-
flow(width: 1.0) do
|
86
|
-
$project.metadata[:datasets].each do |name|
|
87
|
-
stack(width:150) do
|
88
|
-
para "> ", link(name.unmiga_name){ show_dataset(name) }
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
MiGA::GUI.reset_status
|
94
|
-
end
|
95
|
-
|
96
|
-
##
|
97
|
-
# Dataset details window.
|
98
|
-
def dataset(name)
|
99
|
-
header("» " + $project.name.unmiga_name + " » " + name.unmiga_name)
|
100
|
-
stack(margin:40) do
|
101
|
-
ds = $project.dataset(name)
|
102
|
-
stack do
|
103
|
-
ds.metadata.each { |k,v| para strong(k.to_s.capitalize), ": ", v }
|
104
|
-
end
|
105
|
-
flow(margin_top:10) do
|
106
|
-
w = 40+30*MiGA::Dataset.PREPROCESSING_TASKS.size
|
107
|
-
stack(width:w) do
|
108
|
-
subtitle "Advance"
|
109
|
-
done = graphic_advance(ds)
|
110
|
-
para sprintf("%.1f%% Complete", done*100)
|
111
|
-
end
|
112
|
-
stack(width:-w) do
|
113
|
-
subtitle "Task"
|
114
|
-
$task_name_field = stack { para "" }
|
115
|
-
animate do
|
116
|
-
$task_name_field.clear{ para $task }
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
120
|
-
MiGA::GUI.reset_status
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
##
|
125
|
-
# Project report window.
|
126
|
-
def report
|
127
|
-
header("» " + $project.name.unmiga_name)
|
128
|
-
stack(margin:40) do
|
129
|
-
$done_para = subtitle "Dataset tasks advance: "
|
130
|
-
$done = 0.0
|
131
|
-
w = 40+30*MiGA::Dataset.PREPROCESSING_TASKS.size
|
132
|
-
stack(width:w) do
|
133
|
-
stack(margin_top:10) do
|
134
|
-
$done = $project.datasets.map{ |ds| graphic_advance(ds, 7) }.inject(:+)
|
135
|
-
motion { |_,y| show_report_hover(w, y) }
|
136
|
-
click { show_dataset($dataset) }
|
137
|
-
end
|
138
|
-
$done /= $project.metadata[:datasets].size
|
139
|
-
$done_para.text += sprintf("%.1f%% Complete.", $done*100)
|
140
|
-
end
|
141
|
-
$task_ds_box = stack(width:-w)
|
142
|
-
stack(margin_top:10) do
|
143
|
-
subtitle "Project-wide tasks:"
|
144
|
-
tasks = MiGA::Project.DISTANCE_TASKS
|
145
|
-
tasks += MiGA::Project.INCLADE_TASK if $project.metadata[:type]==:clade
|
146
|
-
tasks.each do |t|
|
147
|
-
para strong(t), ": ",
|
148
|
-
($project.add_result(t, false).nil? ? "Pending" : "Done")
|
149
|
-
end
|
150
|
-
end if $done==1.0
|
151
|
-
end
|
152
|
-
end
|
153
|
-
|
154
|
-
private
|
155
|
-
|
156
|
-
##
|
157
|
-
# The MiGA GUI's blue.
|
158
|
-
def miga_blue(alpha=1.0)
|
159
|
-
rgb(0,121,166,alpha)
|
160
|
-
end
|
161
|
-
|
162
|
-
##
|
163
|
-
# The MIGA GUI's red.
|
164
|
-
def miga_red(alpha=1.0)
|
165
|
-
rgb(179,0,3,alpha)
|
166
|
-
end
|
167
|
-
|
168
|
-
# =====================[ View : Elements ]
|
169
|
-
|
170
|
-
##
|
171
|
-
# Header in all windows
|
172
|
-
def header(msg="")
|
173
|
-
# workaround to shoes/shoes4#1212:
|
174
|
-
$clicky ||= []
|
175
|
-
$clicky.each{ |i| i.hide }
|
176
|
-
$clicky = []
|
177
|
-
# Keyboard support
|
178
|
-
key_shortcuts = {
|
179
|
-
:control_o => :open_project, :super_o => :open_project,
|
180
|
-
:control_n => :new_project, :super_n => :new_project,
|
181
|
-
:control_l => :list_datasets, :super_l => :list_datasets,
|
182
|
-
:control_r => :progress_report, :super_r => :progress_report
|
183
|
-
}
|
184
|
-
keypress do |key|
|
185
|
-
funct = key_shortcuts[key]
|
186
|
-
send(funct) unless funct.nil?
|
187
|
-
end
|
188
|
-
# Graphical header
|
189
|
-
flow(margin:[40,10,40,0]) do
|
190
|
-
image $miga_gui_path + "/img/MiGA-sm.png", width: 120, height: 50
|
191
|
-
title msg, margin_top: 5, margin_left: 5
|
192
|
-
end
|
193
|
-
end
|
194
|
-
|
195
|
-
##
|
196
|
-
# General-purpose box
|
197
|
-
def box(opts={}, &blk)
|
198
|
-
flow(margin_bottom:5) do
|
199
|
-
opts[:alpha] ||= 0.2
|
200
|
-
opts[:side_line] ||= miga_blue
|
201
|
-
opts[:background] ||= miga_blue(opts[:alpha])
|
202
|
-
stack(width: 5, height: 1.0) do
|
203
|
-
background opts[:side_line]
|
204
|
-
end unless opts[:right]
|
205
|
-
stack(width: -5) do
|
206
|
-
background opts[:background]
|
207
|
-
stack{ background rgb(0,0,0,1.0) } # workaround to shoes/shoes4#1190
|
208
|
-
s = stack(margin:5, &blk)
|
209
|
-
unless opts[:click].nil?
|
210
|
-
s.click{ visit opts[:click] }
|
211
|
-
end
|
212
|
-
end
|
213
|
-
stack(width: 5, height: 1.0) do
|
214
|
-
background opts[:side_line]
|
215
|
-
end if opts[:right]
|
216
|
-
end
|
217
|
-
end
|
218
|
-
|
219
|
-
##
|
220
|
-
# Menu bar.
|
221
|
-
def menu_bar actions
|
222
|
-
box do
|
223
|
-
flow do
|
224
|
-
img = {
|
225
|
-
open_project: "iconmonstr-archive-5-icon-40",
|
226
|
-
new_project: "iconmonstr-plus-5-icon-40",
|
227
|
-
list_datasets: "iconmonstr-note-10-icon-40",
|
228
|
-
new_dataset: "iconmonstr-note-25-icon-40",
|
229
|
-
progress_report: "iconmonstr-bar-chart-2-icon-40",
|
230
|
-
help: "iconmonstr-help-3-icon-40"}
|
231
|
-
actions.each do |k|
|
232
|
-
flow(margin:0, width:200) do
|
233
|
-
image $miga_gui_path + "/img/#{img[k]}.png", margin: 2
|
234
|
-
button(k.to_s.unmiga_name.capitalize, top:5){ send(k) }
|
235
|
-
end
|
236
|
-
end
|
237
|
-
end
|
238
|
-
end
|
239
|
-
end
|
240
|
-
|
241
|
-
##
|
242
|
-
# Status bar.
|
243
|
-
def status_bar
|
244
|
-
stack(bottom:0) do
|
245
|
-
flow bottom:0, height:20, margin:0 do
|
246
|
-
background "#CCC"
|
247
|
-
$status_cont = stack(width:-300, height:1.0, margin_left:45)
|
248
|
-
every do
|
249
|
-
$status_cont.clear { inscription MiGA::GUI.status, margin:5 }
|
250
|
-
end
|
251
|
-
stack(width:250, height:1.0, right: 5) do
|
252
|
-
inscription MiGA::MiGA.LONG_VERSION, align:"right", margin:5
|
253
|
-
end
|
254
|
-
end
|
255
|
-
image "#{$miga_gui_path}/img/MiGA-sq.png",
|
256
|
-
left:10, bottom:5, width:30, height:32
|
257
|
-
end
|
258
|
-
end
|
259
|
-
|
260
|
-
##
|
261
|
-
# Display processing status of a dataset as a horizontal bar, as reported
|
262
|
-
# by MiGA::Dataset#profile_advance.
|
263
|
-
def graphic_advance(ds, h=10)
|
264
|
-
ds_adv = ds.profile_advance
|
265
|
-
flow(width:30*MiGA::Dataset.PREPROCESSING_TASKS.size) do
|
266
|
-
nostroke
|
267
|
-
col = ["#CCC", rgb(119,130,61), rgb(160,41,50)]
|
268
|
-
ds_adv.each_index do |i|
|
269
|
-
stack(width:28,margin:0,top:0,left:i*30,height:h) do
|
270
|
-
background col[ ds_adv[i] ]
|
271
|
-
t = MiGA::Dataset.PREPROCESSING_TASKS[i]
|
272
|
-
hover do
|
273
|
-
$task = t
|
274
|
-
$dataset = ds.name.unmiga_name
|
275
|
-
end
|
276
|
-
leave do
|
277
|
-
$task = nil
|
278
|
-
$dataset = nil
|
279
|
-
$task_ds_box.hide unless $task_ds_box.nil?
|
280
|
-
end
|
281
|
-
end
|
282
|
-
end
|
283
|
-
nofill
|
284
|
-
end
|
285
|
-
return 0.0 if ds_adv.count{|i| i>0} <= 1
|
286
|
-
(ds_adv.count{|i| i==1}.to_f - 1.0)/(ds_adv.count{|i| i>0}.to_f - 1.0)
|
287
|
-
end
|
288
|
-
|
289
|
-
##
|
290
|
-
# Show floating window with additional information on report cells.
|
291
|
-
def show_report_hover(w, y)
|
292
|
-
unless $task.nil?
|
293
|
-
$task_ds_box.clear do
|
294
|
-
para strong("Task: "), $task, "\n", strong("Dataset: "), $dataset
|
295
|
-
end
|
296
|
-
$task_ds_box.show
|
297
|
-
$task_ds_box.move(w-20, y-115)
|
298
|
-
end
|
299
|
-
end
|
300
|
-
|
301
|
-
# =====================[ Controller : Projects ]
|
302
|
-
|
303
|
-
##
|
304
|
-
# Load a project.
|
305
|
-
def open_project
|
306
|
-
open_window("Opening project...") do
|
307
|
-
folder = ask_open_folder
|
308
|
-
if folder.nil? or not MiGA::Project.exist?(folder)
|
309
|
-
alert "Cannot find a MiGA project at #{folder}!" unless folder.nil?
|
310
|
-
else
|
311
|
-
$project = MiGA::Project.new(folder)
|
312
|
-
visit "/project"
|
313
|
-
end
|
314
|
-
end
|
315
|
-
end
|
316
|
-
|
317
|
-
##
|
318
|
-
# Create a project.
|
319
|
-
def new_project
|
320
|
-
open_window("Creating project...") do
|
321
|
-
if MiGA::MiGA.initialized?
|
322
|
-
folder = ask_save_folder
|
323
|
-
if folder.nil? or MiGA::Project.exist?(folder)
|
324
|
-
alert "Cannot overwrite existent MiGA project at #{folder}!" unless
|
325
|
-
folder.nil?
|
326
|
-
else
|
327
|
-
$project = MiGA::Project.new(folder)
|
328
|
-
visit "/project"
|
329
|
-
end
|
330
|
-
else
|
331
|
-
# FIXME Add a way to initialize MiGA from the GUI
|
332
|
-
alert "MiGA is currently uninitialized, no projects can be created."
|
333
|
-
end
|
334
|
-
end
|
335
|
-
end
|
336
|
-
|
337
|
-
##
|
338
|
-
# Open a window on #datasets.
|
339
|
-
def list_datasets
|
340
|
-
open_window("Listing all datasets..."){
|
341
|
-
visit "/datasets" } unless $project.nil?
|
342
|
-
end
|
343
|
-
|
344
|
-
##
|
345
|
-
# Open a window on #dataset +name+.
|
346
|
-
def show_dataset(name)
|
347
|
-
open_window("Showing dataset details..."){
|
348
|
-
visit "/dataset-#{name}" } unless name.nil?
|
349
|
-
end
|
350
|
-
|
351
|
-
##
|
352
|
-
# Open a window on #report.
|
353
|
-
def progress_report
|
354
|
-
open_window("Creating progress report..."){
|
355
|
-
visit "/report" } unless $project.nil?
|
356
|
-
end
|
357
|
-
|
358
|
-
##
|
359
|
-
# Open a window sending +msg+ to the status, the yields +blk+.
|
360
|
-
def open_window(msg, &blk)
|
361
|
-
MiGA::GUI.status = msg
|
362
|
-
MiGA::GUI.init(&blk)
|
363
|
-
MiGA::GUI.reset_status
|
364
|
-
end
|
365
|
-
|
366
|
-
end
|
data/test/jruby_gui_test.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
require "test_helper"
|
2
|
-
require "miga/gui"
|
3
|
-
|
4
|
-
class GUITest < Test::Unit::TestCase
|
5
|
-
|
6
|
-
def setup
|
7
|
-
$app = MiGA::GUI.new
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_status
|
11
|
-
assert_respond_to(MiGA::GUI, :status)
|
12
|
-
assert_equal("Initializing MiGA...", MiGA::GUI.status)
|
13
|
-
assert_equal(MiGA::GUI, $app.class)
|
14
|
-
MiGA::GUI.status = "Well well well..."
|
15
|
-
assert_equal("Well well well...", MiGA::GUI.status)
|
16
|
-
MiGA::GUI.reset_status
|
17
|
-
assert_equal("MiGA is ready to go!", MiGA::GUI.status)
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|