miga-base 0.2.0.7 → 0.2.0.8
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Build Status](https://travis-ci.org/bio-miga/miga.svg?branch=master)](https://travis-ci.org/bio-miga/miga)
|
4
4
|
[![Gem Version](https://badge.fury.io/rb/miga-base.svg)](https://badge.fury.io/rb/miga-base)
|
5
5
|
[![Inch docs](http://inch-ci.org/github/bio-miga/miga.svg)](http://inch-ci.org/github/bio-miga/miga)
|
6
|
-
[![Yard docs](http://img.shields.io/badge/yard-docs-blue.svg)](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
|