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
         |