sciruby 0.2.3 → 0.2.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3b252c16326a5fa8636385e42f9d751717e080eb
4
- data.tar.gz: a34b8dd62f82862746d78ec77d5e63e664b647c0
3
+ metadata.gz: 5407217eba73ab78ecf9b9d5c072992eebeeab9b
4
+ data.tar.gz: 8307708e990dc2da9b0f255e57ccebb9d2e112d8
5
5
  SHA512:
6
- metadata.gz: 827db23bec2b56a8d459329bb5f198be2870dacb7cceb4330dd7df33153097d6cd6e38ba5fee2c4049b768b3f8cc4e1108d7f63002363452a289b934916fc581
7
- data.tar.gz: f2c0e6b33df1e80f056da3f3f501a6b3c7308f4c6f41443ebdcb9cc2f57b9926fa9fa1005c350e40a060b294083592f989190d2b37158ac8be6f628e46e6d14a
6
+ metadata.gz: 621b44ad7af4920a6794f9d5961e0621e04aa4329b8f9c867ef81ccd05baf9dabca1b7c9d1e8ba4d054419938c564c87b81c024c9da8ddf473943c0cdaf067f4
7
+ data.tar.gz: ea961303d3cca616ed48bf08212c3561fe350e69e3e5e059a4365c599ed84eb72265d0282d3dbec0428e9c54d093e0641ba133ea106299c505625381651f0464
data/.gitignore CHANGED
@@ -1,2 +1,6 @@
1
1
  *.gem
2
- Gemfile.lock
2
+ Gemfile.lock
3
+ *.ipynb
4
+ .ipynb_checkpoints
5
+ gems.html
6
+ pages
data/.travis.yml ADDED
@@ -0,0 +1,24 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - ruby-head
5
+ - 2.2.2
6
+ - 2.1.6
7
+
8
+ matrix:
9
+ allow_failures:
10
+ - rvm: ruby-head
11
+
12
+ before_install:
13
+ - sudo apt-get update -qq
14
+ - sudo apt-get install -qq gnuplot-nox libgsl0-dev libsqlite3-dev libatlas-base-dev
15
+ - sudo ln -s /usr/lib/libtoolize /usr/lib/libtool
16
+
17
+ env:
18
+ global:
19
+ - secure: "Wr93642ujssq2+lTxWiAR0u3Y50MkNfq0jcEjPn9g2A9QQw8UitXZvtGjWa7VK8Cw2iJM7NQdY0G/eE+SBqGQ2d/NyDRwBdLUrQHBILWHeJFHoQnHcfgcGWoXVg2ztxkL6mmo8B5XpKm+ZEh4uYlZYiwp41VegmpmcuxWE0R1N0="
20
+
21
+ script: bundle exec rake test && bundle exec rake deploy
22
+
23
+ notifications:
24
+ irc: "chat.freenode.net#sciruby"
data/CHANGES CHANGED
@@ -1,3 +1,7 @@
1
+ 0.2.4 (2015-06-10)
2
+
3
+ * Tests added
4
+
1
5
  0.2.3 (2015-06-09)
2
6
 
3
7
  * Simpler SciRuby.gems api
data/Gemfile CHANGED
@@ -1,2 +1,13 @@
1
+ load File.expand_path(File.join(__FILE__, '..', 'scripts', 'helper.rb'))
2
+
1
3
  source 'https://rubygems.org'
2
- gemspec name: 'sciruby-full'
4
+
5
+ Helper.sciruby_gems(true).each do |g|
6
+ gem(g[:name], *g[:version])
7
+ end
8
+
9
+ # development dependencies
10
+ gem 'minitest'
11
+ gem 'rake'
12
+ gem 'bundler'
13
+ gem 'slim'
File without changes
data/README.md ADDED
@@ -0,0 +1,46 @@
1
+ # SciRuby meta gem
2
+
3
+ Tools for Scientific Computing in Ruby
4
+
5
+ * [Website](http://sciruby.com)
6
+ * [NMatrix](http://github.com/SciRuby/nmatrix)
7
+ * [List of gems](https://minad.github.io/sciruby-gems)
8
+ * [Travis-CI](https://travis-ci.org/SciRuby/sciruby)
9
+
10
+ ## Description
11
+
12
+ This gem acts as a meta gem which provides collects multiple scientific gems, including numeric and visualization libraries.
13
+
14
+ ## Getting started
15
+
16
+ Installation:
17
+
18
+ gem install sciruby
19
+ gem install sciruby-full
20
+
21
+ If you want to have a full-blown installation, install `sciruby-full`.
22
+
23
+ Start a notebook server:
24
+
25
+ iruby notebook
26
+
27
+ Enter commands:
28
+
29
+ require 'sciruby'
30
+ # Scientific gems are auto loaded, you can use them directly!
31
+ plot = Nyaplot::Plot.new
32
+ sc = plot.add(:scatter, [0,1,2,3,4], [-1,2,-3,4,-5])
33
+
34
+ Take a look at [gems.yml](gems.yml) or the [list of gems](https://minad.github.io/sciruby-gems) for interesting gems which are included in `sciruby-full`.
35
+
36
+ ## License
37
+
38
+ Copyright (c) 2010 onward, The Ruby Science Foundation.
39
+
40
+ All rights reserved.
41
+
42
+ SciRuby is licensed under the BSD 3-clause license. See [LICENSE](LICENSE) for details.
43
+
44
+ ## Donations
45
+
46
+ Support a SciRuby Fellow via [![Pledgie](http://pledgie.com/campaigns/15783.png?skin_name=chrome)](http://www.pledgie.com/campaigns/15783).
data/Rakefile ADDED
@@ -0,0 +1,13 @@
1
+ task 'gems.html' do
2
+ sh 'slimrb --trace scripts/gems.slim > gems.html'
3
+ end
4
+
5
+ task :test do
6
+ sh 'scripts/test'
7
+ end
8
+
9
+ task deploy: 'gems.html' do
10
+ sh 'scripts/deploy'
11
+ end
12
+
13
+ task default: %w(test gems.html)
data/gems.yml CHANGED
@@ -1,157 +1,282 @@
1
- # Specify all gems which are installed by the `sciruby-full` gem or recommended by the `sciruby` gem.
2
-
3
- nmatrix:
4
- description: Numerics matrix library
5
- module: [N, NMatrix, NVector]
6
- category: numerics
7
-
8
- gsl-nmatrix:
9
- description: Bindings for the GNU scientific library
10
- require: gsl
11
- module: GSL
12
- category: numerics
13
-
14
- rubyvis:
15
- description: Plotting library
1
+ ---
2
+ ai4r:
3
+ category: artificial intelligence
4
+ description: Artificial intelligence
5
+ module: Ai4r
6
+ version: "~> 1.13"
7
+ algorithms:
8
+ category: utilities
9
+ description: Algorithms and data structures
10
+ module:
11
+ - Algorithms
12
+ - Containers
13
+ version: "~> 0.6"
14
+ awesome_print:
15
+ category: utilities
16
+ description: Pretty object printing
17
+ version: "~> 1.6"
18
+ bio:
19
+ category: biology
20
+ description: Bioinformatics suite
21
+ module: Bio
22
+ version: "~> 1.4"
23
+ cassowary:
24
+ category: optimization
25
+ description: Incremental constraint solver
26
+ exclude: Native dependencies
27
+ module: Cassowary
28
+ classifier:
29
+ category: artificial intelligence
30
+ description: Machine learning
31
+ module: Classifier
32
+ version: "~> 1.3"
33
+ cmath:
34
+ category: algebra
35
+ description: Stdlib cmath module
36
+ maintainer: stdlib
37
+ daru:
38
+ category: data
39
+ description: Dataframe library
40
+ module: Daru
41
+ version: "~> 0.0"
42
+ darwinning:
43
+ category: optimization
44
+ description: Generic algorithms
45
+ module: Darwinning
46
+ version: "~> 0.0"
47
+ decisiontree:
48
+ category: artificial intelligence
49
+ description: Machine learning
50
+ module: DecisionTree
51
+ version: "~> 0.5"
52
+ distribution:
53
+ category: statistics
54
+ description: Statistical distributions
55
+ maintainer: sciruby
56
+ module: Distribution
57
+ version: "~> 0.7"
58
+ extendmatrix:
59
+ category: algebra
60
+ description: Helper methods for Matrix
61
+ version: "~> 0.4"
62
+ gga4r:
63
+ category: optimization
64
+ description: Generic algorithms
65
+ module: GeneticAlgorithm
66
+ version: "~> 0.9"
67
+ gimuby:
68
+ category: optimization
69
+ description: Genetic algorithms
70
+ module: Gimuby
71
+ version: "~> 0.7"
72
+ gnuplot:
16
73
  category: plotting
17
-
18
- nyaplot:
19
74
  description: Plotting library
75
+ module: Gnuplot
76
+ version: "~> 2.6"
77
+ integration:
78
+ category: numerics
79
+ description: Numerical integration
80
+ maintainer: sciruby
81
+ module: Integration
82
+ version: "~> 0.1"
83
+ irtruby:
84
+ category: artificial intelligence
85
+ description: Machine learning
86
+ exclude: Not available as a gem
87
+ module: IRT
88
+ iruby:
89
+ category: user interface
90
+ description: Ruby kernel for Jupyter
91
+ maintainer: sciruby
92
+ module: IRuby
93
+ version: "~> 0.2"
94
+ lpsolve:
95
+ category: optimization
96
+ description: Linear solver
97
+ exclude: Outdated native dependencies
98
+ module: LPSolve
99
+ mathgl:
20
100
  category: plotting
21
-
22
- plotrb:
23
101
  description: Plotting library
102
+ exclude: Native dependencies
103
+ module: MathGL
104
+ matrix:
105
+ category: algebra
106
+ description: Stdlib matrix module
107
+ maintainer: stdlib
108
+ module: Matrix
109
+ minimization:
110
+ category: numerics
111
+ description: Numerical minimization
112
+ maintainer: sciruby
113
+ module: Minimization
114
+ version: "~> 0.2"
115
+ modshogun:
116
+ category: artificial intelligence
117
+ description: Machine learning
118
+ exclude: Not available as a gem
119
+ module: Modshogun
120
+ narray:
121
+ category: numerics
122
+ description: Numerics matrix library
123
+ exclude: Conflicts with nmatrix
124
+ module: NArray
125
+ nmatrix:
126
+ category: numerics
127
+ description: Numerics matrix library
128
+ maintainer: sciruby
129
+ module:
130
+ - N
131
+ - NMatrix
132
+ - NVector
133
+ version: "~> 0.1"
134
+ nyaplot:
24
135
  category: plotting
25
-
26
- gnuplot:
27
136
  description: Plotting library
137
+ module: Nyaplot
138
+ version: "~> 0.1"
139
+ ode:
140
+ category: numerics
141
+ description: Ordinary differential equations
142
+ exclude: Fortran dependencies
143
+ module: Ode
144
+ plotrb:
28
145
  category: plotting
29
-
30
- iruby:
31
- module: IRuby
32
- description: Ruby kernel for Jupyter
33
- category: user interface
34
-
146
+ description: Plotting library
147
+ module: Plotrb
148
+ version: "~> 0.0"
149
+ prime:
150
+ category: algebra
151
+ description: Stdlib prime module
152
+ maintainer: stdlib
153
+ module: Prime
35
154
  pry:
36
- module: Pry
37
- description: Ruby repl
38
155
  category: user interface
39
-
40
- awesome_print:
41
- module: ~
42
- description: Pretty object printing
43
- category: utilities
44
-
45
- daru:
46
- description: Dataframe library
47
- category: database
48
-
49
- integration:
50
- description: Numerical integration
156
+ description: Ruby repl
157
+ module: Pry
158
+ version: "~> 0.10"
159
+ publisci:
160
+ category: publishing
161
+ description: Publishing toolkit
162
+ module: PubliSci
163
+ version: "~> 0.1"
164
+ rb-gsl:
51
165
  category: numerics
52
-
53
- minimization:
54
- description: Numerical minimization
166
+ description: Bindings for the GNU scientific library
167
+ exclude: Requires narray
168
+ module: GSL
169
+ require: gsl
170
+ rb-libsvm:
171
+ category: artificial intelligence
172
+ description: Support vector machines (machine learning)
173
+ module: Libsvm
174
+ require: libsvm
175
+ version: "~> 1.3"
176
+ rinruby:
177
+ category: statistics
178
+ description: R interpreter
179
+ module:
180
+ - R
181
+ - RinRuby
182
+ version: "~> 2.0"
183
+ rserve-client:
184
+ category: statistics
185
+ description: R interpreter
186
+ module: Rserve
187
+ require: rserve
188
+ version: "~> 0.3"
189
+ rsruby:
190
+ category: statistics
191
+ description: R interpreter
192
+ exclude: Native dependencies
193
+ module: RSRuby
194
+ ruby-band:
195
+ category: artificial intelligence
196
+ description: Data mining
197
+ exclude: Requires JRuby
198
+ ruby-dcl:
199
+ category: plotting
200
+ description: Plotting
201
+ exclude: Requires narray
202
+ ruby-fann:
203
+ category: artificial intelligence
204
+ description: Neural networks
205
+ module: RubyFann
206
+ version: "~> 1.2"
207
+ ruby-fftw3:
55
208
  category: numerics
56
-
57
- distribution:
58
- description: Statistical distributions
209
+ description: Fast Fourier transformation
210
+ exclude: Requires narray
211
+ module: FFTW3
212
+ ruby-minisat:
213
+ category: algebra
214
+ description: SAT solver
215
+ module: MiniSat
216
+ require: minisat
217
+ version: "~> 2.2"
218
+ ruby-netcdf:
219
+ category: data
220
+ description: Data file
221
+ exclude: Requires narray
222
+ ruby-opencv:
223
+ category: artificial intelligence
224
+ description: Computer vision
225
+ exclude: Native dependencies
226
+ module: OpenCV
227
+ ruby-pgplot:
228
+ category: plotting
229
+ description: Plotting
230
+ exclude: Requires narray
231
+ module: Pgplot
232
+ require: pgplot
233
+ rubyvis:
234
+ category: plotting
235
+ description: Plotting library
236
+ module: Rubyvis
237
+ version: "~> 0.5"
238
+ sciruby:
239
+ category: meta
240
+ description: SciRuby meta gem
241
+ maintainer: sciruby
242
+ sciruby-full:
243
+ category: meta
244
+ description: SciRuby meta gem (Full installation)
245
+ maintainer: sciruby
246
+ sicom:
59
247
  category: statistics
60
-
248
+ description: R interpreter
249
+ exclude: Requires JRuby
61
250
  statsample:
251
+ category: statistics
62
252
  description: Statistics
253
+ maintainer: sciruby
254
+ module: Statsample
255
+ version: "~> 1.4"
256
+ statsample-bivariate-extension:
63
257
  category: statistics
64
-
65
- statsample-glm:
66
258
  description: Statistics
67
- module: ~
259
+ version: "~> 1.1"
260
+ statsample-glm:
68
261
  category: statistics
69
-
70
- statsample-bivariate-extension:
71
262
  description: Statistics
72
- module: ~
263
+ maintainer: sciruby
264
+ version: "~> 0.1"
265
+ statsample-optimization:
73
266
  category: statistics
74
-
75
- statsample-timeseries:
76
- exclude: because of activesupport conflict
77
267
  description: Statistics
78
- module: ~
268
+ exclude: GSL conflict
269
+ statsample-timeseries:
79
270
  category: statistics
80
-
81
- extendmatrix:
82
- description: Helper methods for Matrix
83
- module: ~
84
- category: numerics
85
-
86
- publisci:
87
- description: Publishing toolkit
88
- module: PubliSci
89
- category: publishing
90
-
91
- ai4r:
92
- description: Artificial intelligence
93
- category: machine learning
94
-
95
- bio:
96
- description: Bioinformatics suite
97
- category: biology
98
-
99
- ruby-fftw3:
100
- module: FFTW3
101
- exclude: because it works only with narray
102
- description: Fast Fourier transformation
103
- category: numerics
104
-
105
- ruby-band:
106
- exclude: because of dependencies
107
- description: Data mining
108
- category: machine learning
109
- module: ~
110
-
111
- classifier:
112
- description: Machine learning
113
- category: machine learning
114
-
271
+ description: Statistics
272
+ exclude: activesupport version conflict
115
273
  stuff-classifier:
274
+ category: artificial intelligence
116
275
  description: Machine learning
117
- category: machine learning
118
276
  module: StuffClassifier
119
-
120
- decisiontree:
121
- description: Machine learning
122
- category: machine learning
123
- module: DecisionTree
124
-
125
- irtruby:
126
- exclude: because of dependencies
127
- description: Machine learning
128
- category: machine learning
129
- module: IRT
130
-
131
- ruby-opencv:
132
- description: Computer vision
133
- exclude: because of dependencies
134
- category: computer vision
135
- module: OpenCV
136
-
137
- ruby-fann:
138
- description: Neural networks
139
- category: machine learning
140
- module: RubyFann
141
-
142
- rb-libsvm:
143
- description: Support vector machines (machine learning)
144
- category: machine learning
145
- module: Libsvm
146
-
147
- sciruby:
148
- description: SciRuby meta gem
149
- category: meta
150
- exclude: to avoid circular dependencies
151
- module: ~
152
-
153
- sciruby-full:
154
- description: SciRuby meta gem (Full installation)
155
- category: meta
156
- exclude: to avoid circular dependencies
157
- module: ~
277
+ version: "~> 0.5"
278
+ unit:
279
+ category: physics
280
+ description: Calculation with units
281
+ module: Unit
282
+ version: "~> 0.5"
@@ -2,7 +2,7 @@ class Module
2
2
  alias :const_missing_without_sciruby :const_missing
3
3
 
4
4
  def const_missing(name)
5
- paths = SciRuby.autoload_modules.delete(name)
5
+ paths = SciRuby.autoload_modules.delete(name.to_sym)
6
6
  if paths
7
7
  paths.each {|path| require path }
8
8
  const_get(name)
data/lib/sciruby/gems.rb CHANGED
@@ -13,11 +13,7 @@ module SciRuby
13
13
 
14
14
  # Return map of all installed SciRuby gems
15
15
  def installed_gems
16
- @installed_gems ||=
17
- begin
18
- require 'rubygems'
19
- Hash[gems.each_value.map(&method(:installed_gem)).compact]
20
- end
16
+ @installed_gems ||= Hash[gems.each_value.map(&method(:installed_gem)).compact]
21
17
  end
22
18
 
23
19
  # Return list of all known SciRuby modules
@@ -37,7 +33,6 @@ module SciRuby
37
33
  gem = Hash[gem.map {|k,v| [k.to_sym, v] }]
38
34
  gem[:name] = name
39
35
  gem[:require] = [*(gem[:require] || name)]
40
- gem[:module] = name.capitalize unless gem.include?(:module)
41
36
  gem[:module] = [*gem[:module]].map(&:to_sym)
42
37
  gem[:module].each {|mod| autoload_modules[mod] = gem[:require] }
43
38
  gems[name] = gem
@@ -45,10 +40,12 @@ module SciRuby
45
40
  end
46
41
 
47
42
  def installed_gem(gem)
48
- [gem[:name], gem.merge(gem_version: Gem::Specification.find_by_name(gem[:name]).version.to_s)]
43
+ require 'rubygems' unless defined?(Gem::Specification)
44
+ [gem[:name], gem.merge(installed_version: Gem::Specification.find_by_name(gem[:name]).version.to_s)]
49
45
  rescue Exception
50
46
  nil
51
47
  end
52
48
 
53
- load_gems File.expand_path(File.join(__FILE__, '..', '..', '..', 'gems.yml'))
49
+ GEMS_YML = File.expand_path(File.join(__FILE__, '..', '..', '..', 'gems.yml'))
50
+ load_gems GEMS_YML
54
51
  end
@@ -2,5 +2,5 @@
2
2
  module SciRuby
3
3
  # SciRuby version string
4
4
  # @api public
5
- VERSION = '0.2.3'
5
+ VERSION = '0.2.4'
6
6
  end
data/sciruby.gemspec CHANGED
@@ -1,7 +1,4 @@
1
- # coding: utf-8
2
- $: << File.join(File.dirname(__FILE__), 'lib')
3
- require 'sciruby'
4
- require 'date'
1
+ require File.expand_path(File.join(__FILE__, '..', 'scripts', 'helper.rb'))
5
2
 
6
3
  SCIRUBY_FULL = false unless defined?(SCIRUBY_FULL)
7
4
 
@@ -16,20 +13,17 @@ Gem::Specification.new do |s|
16
13
  s.summary =
17
14
  s.description = "Scientific gems for Ruby#{SCIRUBY_FULL ? ' (Full installation)' : ''}"
18
15
 
19
- s.require_paths = %w(lib)
20
- s.files = `git ls-files`.split($/)
21
-
22
16
  if SCIRUBY_FULL
23
- s.files.delete 'sciruby.gemspec'
24
- s.files.reject! {|f| f =~ /\Alib/ }
17
+ s.files = %w(CHANGES CONTRIBUTING.md README.md LICENSE sciruby-full.gemspec)
25
18
 
26
19
  s.add_runtime_dependency 'sciruby', "= #{SciRuby::VERSION}"
27
- SciRuby.gems.each_value.reject {|gem| gem[:exclude] }.each {|gem| s.add_runtime_dependency gem[:name], *gem[:version] }
20
+ Helper.sciruby_gems(true).each {|gem| s.add_runtime_dependency gem[:name], *gem[:version] }
28
21
  else
22
+ s.files = `git ls-files`.split($/)
29
23
  s.files.delete 'sciruby-full.gemspec'
30
24
 
31
25
  m = "Please consider installing 'sciruby-full' or the following gems:\n"
32
- SciRuby.gems.each_value.sort_by {|gem| gem[:name] }.each {|gem| m << " * #{gem[:name]} - #{gem[:description]}\n" }
26
+ Helper.sciruby_gems(false).each {|gem| m << " * #{gem[:name]} - #{gem[:description]}\n" }
33
27
  s.post_install_message = m << "\n"
34
28
  end
35
29
  end
data/scripts/deploy ADDED
@@ -0,0 +1,18 @@
1
+ #!/bin/sh
2
+
3
+ mkdir -p pages
4
+
5
+ cd pages
6
+
7
+ git init
8
+ git config user.name "Daniel Mendler"
9
+ git config user.email "mail@daniel-mendler.de"
10
+
11
+ git remote add origin "https://$GH_TOKEN@github.com/minad/sciruby-gems.git"
12
+ git fetch && git reset origin/gh-pages
13
+
14
+ cp ../gems.html index.html
15
+
16
+ git add -A .
17
+ git commit -m "rebuild pages"
18
+ git push -q origin HEAD:gh-pages
data/scripts/gems.slim ADDED
@@ -0,0 +1,57 @@
1
+ - require File.expand_path(File.join(__FILE__, '..', 'helper.rb'))
2
+ doctype html
3
+ html
4
+ head
5
+ title SciRuby gems
6
+ link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"
7
+ link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.8.1/bootstrap-table.min.css"
8
+ script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.js"
9
+ script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.8.1/bootstrap-table.min.js"
10
+ body: .container: .row
11
+ h1 SciRuby gems
12
+ ul
13
+ li
14
+ | Last updated at #{Time.now.utc}
15
+ - if ENV['TRAVIS']
16
+ | by <a href="https://travis-ci.org/SciRuby/sciruby/jobs/#{ENV['TRAVIS_JOB_ID']}">Travis-CI</a> from commit
17
+ <a href="https://github.com/SciRuby/sciruby/commit/#{ENV['TRAVIS_COMMIT']}">#{ENV['TRAVIS_COMMIT']}</a>.
18
+ li #{SciRuby.gems.size} gems listed
19
+ table.table data={ toggle: 'table',
20
+ search: 'true',
21
+ sortable: 'true',
22
+ show_toggle: 'true',
23
+ show_columns: 'true',
24
+ mobile_responsive: 'true',
25
+ striped: 'true' }
26
+ thead: tr
27
+ th data-sortable="true" Maintainer
28
+ th data-sortable="true" Category
29
+ th data-sortable="true" Name
30
+ th data-sortable="true" Version
31
+ th data-sortable="true" Latest version
32
+ th data-sortable="true" Description
33
+ th data-sortable="true" Autoloaded modules
34
+ th data-sortable="true" Status
35
+ tbody
36
+ - Helper.sorted_gems.each do |gem|
37
+ - spec = Helper.fetch_spec(gem)
38
+ tr
39
+ td
40
+ - if gem[:maintainer]
41
+ - maintainer_tag = { 'stdlib' => 'info', 'sciruby' => 'success' }
42
+ span.label class="label-#{maintainer_tag[gem[:maintainer]] || 'warning'}" = gem[:maintainer]
43
+ td = gem[:category]
44
+ - if spec
45
+ td
46
+ a href=spec.homepage = gem[:name]
47
+ - else
48
+ td = gem[:name]
49
+ td = gem[:version]
50
+ td
51
+ - if spec
52
+ a href="https://rubygems.org/gems/#{gem[:name]}" #{spec.version} (#{spec.date.strftime '%Y-%m-%d'})
53
+ td = gem[:description]
54
+ td = gem[:module].join(', ')
55
+ td
56
+ - Helper.gem_status(gem).each do |tag, msg|
57
+ span.label<> class="label-#{tag}" = msg
data/scripts/helper.rb ADDED
@@ -0,0 +1,83 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue Exception
4
+ end
5
+
6
+ $: << File.join(File.dirname(__FILE__), '..', 'lib')
7
+
8
+ require 'sciruby'
9
+ require 'date'
10
+ require 'rubygems'
11
+
12
+ module Enumerable
13
+ def stable_sort_by
14
+ sort_by.with_index {|e, i| [yield(e), i] }
15
+ end
16
+ end
17
+
18
+ module Helper
19
+ extend self
20
+
21
+ def sort_hash(object)
22
+ if Hash === object
23
+ res = {}
24
+ object.each {|k, v| res[k] = sort_hash(v) }
25
+ Hash[res.sort_by {|a| a[0].to_s }]
26
+ elsif Array === object
27
+ array = []
28
+ object.each_with_index {|v, i| array[i] = sort_hash(v) }
29
+ array
30
+ else
31
+ object
32
+ end
33
+ end
34
+
35
+ def check_gem(name, gem)
36
+ gem[:name].must_equal name
37
+ gem.must_be_instance_of Hash
38
+ gem.each_key {|k| k.must_be_instance_of Symbol }
39
+ gem[:category].must_be_instance_of String
40
+ gem[:description].must_be_instance_of String
41
+ gem[:exclude].must_be_instance_of String if gem[:exclude] != nil
42
+ gem[:module].must_be_instance_of Array
43
+ gem[:require].must_be_instance_of Array
44
+ gem[:require].empty?.must_equal false
45
+
46
+ if gem[:exclude] || gem[:maintainer] == 'stdlib' || %w(sciruby sciruby-full).include?(gem[:name])
47
+ gem[:version].must_be_nil
48
+ else
49
+ gem[:version].must_be_instance_of String
50
+ end
51
+ end
52
+
53
+ def fetch_spec(gem)
54
+ #STDERR.puts "Fetching #{gem[:name]}..."
55
+ gem[:maintainer] != 'stdlib' && Gem::SpecFetcher.fetcher.spec_for_dependency(Gem::Dependency.new(gem[:name])).flatten.first
56
+ end
57
+
58
+ def gem_status(gem)
59
+ status = []
60
+ status << [:default, "Excluded: #{gem[:exclude]}"] if gem[:exclude]
61
+ if spec = fetch_spec(gem)
62
+ status << [:warning, "Last update #{spec.date.strftime '%Y-%m-%d'}"] if Time.now - spec.date > 2*365*24*3600
63
+ status[:danger] << 'Outdated version constraint' unless Gem::Dependency.new(gem[:name], *gem[:version]).matches_spec?(spec)
64
+ else
65
+ status << [:danger, 'Gem not found'] unless gem[:exclude]
66
+ end unless gem[:exclude] || gem[:maintainer] == 'stdlib'
67
+ status << [:success, 'OK'] if status.empty?
68
+ status.sort_by(&:first)
69
+ end
70
+
71
+ def sorted_gems
72
+ SciRuby.gems.each_value.
73
+ stable_sort_by {|gem| gem[:name] }.
74
+ stable_sort_by {|gem| gem[:category] }.
75
+ stable_sort_by {|gem| gem[:maintainer] == 'sciruby' ? 0 : (gem[:maintainer] ? 1 : 2) }
76
+ end
77
+
78
+ def sciruby_gems(exclude)
79
+ SciRuby.gems.each_value.sort_by {|gem| gem[:name] }.reject do |gem|
80
+ gem[:maintainer] == 'stdlib' || %w(sciruby sciruby-full).include?(gem[:name])
81
+ end.reject {|gem| gem[:exclude] && exclude }
82
+ end
83
+ end
data/scripts/test ADDED
@@ -0,0 +1,77 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.expand_path(File.join(__FILE__, '..', 'helper.rb'))
4
+ require 'minitest/spec'
5
+ require 'minitest/autorun'
6
+
7
+ class MiniTest::Spec
8
+ include Helper
9
+ end
10
+
11
+ describe 'gems.yml' do
12
+ it 'is sorted' do
13
+ sorted = YAML.dump(sort_hash(YAML.load_file(SciRuby::GEMS_YML)))
14
+ if File.read(SciRuby::GEMS_YML) != sorted
15
+ puts 'gems.yml has been sorted'
16
+ File.write(SciRuby::GEMS_YML, sorted)
17
+ fail
18
+ end
19
+ end
20
+
21
+ it 'contains no gratuitous keys' do
22
+ YAML.load_file(SciRuby::GEMS_YML).each do |name, gem|
23
+ gem.each_key {|k| %w(category maintainer description exclude version module require).include?(k).must_equal true }
24
+ gem['require'].wont_equal name if gem['require']
25
+ end
26
+ end
27
+ end
28
+
29
+ describe SciRuby do
30
+ it 'provides Hash of gems' do
31
+ SciRuby.gems.must_be_instance_of Hash
32
+ SciRuby.gems.each_key {|k| k.must_be_instance_of String }
33
+ SciRuby.gems.each do |name, gem|
34
+ check_gem(name, gem)
35
+ end
36
+ end
37
+
38
+ it 'provides Hash of installed gems' do
39
+ SciRuby.installed_gems.must_be_instance_of Hash
40
+ SciRuby.installed_gems.each_key {|k| k.must_be_instance_of String }
41
+ SciRuby.installed_gems.each do |name, gem|
42
+ check_gem(name, gem)
43
+ gem[:installed_version].must_be_instance_of String
44
+ end
45
+ end
46
+
47
+ it 'provides list of modules' do
48
+ SciRuby.modules.must_be_instance_of Array
49
+ SciRuby.modules.each {|m| m.must_be_instance_of Symbol }
50
+ end
51
+
52
+ it 'provides list of installed modules' do
53
+ SciRuby.installed_modules.must_be_instance_of Array
54
+ SciRuby.installed_modules.each {|m| m.must_be_instance_of Symbol }
55
+ end
56
+
57
+ it 'provides list of autoloadable modules' do
58
+ SciRuby.autoload_modules.must_be_instance_of Hash
59
+ SciRuby.autoload_modules.each_key {|k| k.must_be_instance_of Symbol }
60
+ SciRuby.autoload_modules.each_value {|v| v.must_be_instance_of Array }
61
+ end
62
+
63
+ it 'autoloads modules' do
64
+ SciRuby.autoload_modules.must_include :Prime
65
+
66
+ Object.const_defined?(:Prime).must_equal false
67
+ Prime.must_be_instance_of Class
68
+ Object.const_defined?(:Prime).must_equal true
69
+
70
+ SciRuby.autoload_modules.wont_include :Prime
71
+
72
+ SciRuby.installed_gems.each_value.map {|gem| gem[:module] }.flatten.each do |mod|
73
+ next if mod == :R || mod == :RinRuby # FIXME, don't test RinRuby for now since it requires an installaion of R
74
+ Object.const_get(mod).wont_equal nil
75
+ end
76
+ end
77
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sciruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - SciRuby Development Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-09 00:00:00.000000000 Z
11
+ date: 2015-06-10 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Scientific gems for Ruby
14
14
  email:
@@ -18,18 +18,23 @@ extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
20
  - ".gitignore"
21
+ - ".travis.yml"
21
22
  - CHANGES
22
23
  - CONTRIBUTING.md
23
24
  - Gemfile
24
- - LICENSE.txt
25
- - README.rdoc
26
- - gems.slim
25
+ - LICENSE
26
+ - README.md
27
+ - Rakefile
27
28
  - gems.yml
28
29
  - lib/sciruby.rb
29
30
  - lib/sciruby/autoload.rb
30
31
  - lib/sciruby/gems.rb
31
32
  - lib/sciruby/version.rb
32
33
  - sciruby.gemspec
34
+ - scripts/deploy
35
+ - scripts/gems.slim
36
+ - scripts/helper.rb
37
+ - scripts/test
33
38
  homepage: http://sciruby.com
34
39
  licenses:
35
40
  - BSD
@@ -37,37 +42,55 @@ metadata: {}
37
42
  post_install_message: |+
38
43
  Please consider installing 'sciruby-full' or the following gems:
39
44
  * ai4r - Artificial intelligence
45
+ * algorithms - Algorithms and data structures
40
46
  * awesome_print - Pretty object printing
41
47
  * bio - Bioinformatics suite
48
+ * cassowary - Incremental constraint solver
42
49
  * classifier - Machine learning
43
50
  * daru - Dataframe library
51
+ * darwinning - Generic algorithms
44
52
  * decisiontree - Machine learning
45
53
  * distribution - Statistical distributions
46
54
  * extendmatrix - Helper methods for Matrix
55
+ * gga4r - Generic algorithms
56
+ * gimuby - Genetic algorithms
47
57
  * gnuplot - Plotting library
48
- * gsl-nmatrix - Bindings for the GNU scientific library
49
58
  * integration - Numerical integration
50
59
  * irtruby - Machine learning
51
60
  * iruby - Ruby kernel for Jupyter
61
+ * lpsolve - Linear solver
62
+ * mathgl - Plotting library
52
63
  * minimization - Numerical minimization
64
+ * modshogun - Machine learning
65
+ * narray - Numerics matrix library
53
66
  * nmatrix - Numerics matrix library
54
67
  * nyaplot - Plotting library
68
+ * ode - Ordinary differential equations
55
69
  * plotrb - Plotting library
56
70
  * pry - Ruby repl
57
71
  * publisci - Publishing toolkit
72
+ * rb-gsl - Bindings for the GNU scientific library
58
73
  * rb-libsvm - Support vector machines (machine learning)
74
+ * rinruby - R interpreter
75
+ * rserve-client - R interpreter
76
+ * rsruby - R interpreter
59
77
  * ruby-band - Data mining
78
+ * ruby-dcl - Plotting
60
79
  * ruby-fann - Neural networks
61
80
  * ruby-fftw3 - Fast Fourier transformation
81
+ * ruby-minisat - SAT solver
82
+ * ruby-netcdf - Data file
62
83
  * ruby-opencv - Computer vision
84
+ * ruby-pgplot - Plotting
63
85
  * rubyvis - Plotting library
64
- * sciruby - SciRuby meta gem
65
- * sciruby-full - SciRuby meta gem (Full installation)
86
+ * sicom - R interpreter
66
87
  * statsample - Statistics
67
88
  * statsample-bivariate-extension - Statistics
68
89
  * statsample-glm - Statistics
90
+ * statsample-optimization - Statistics
69
91
  * statsample-timeseries - Statistics
70
92
  * stuff-classifier - Machine learning
93
+ * unit - Calculation with units
71
94
 
72
95
  rdoc_options: []
73
96
  require_paths:
@@ -89,4 +112,3 @@ signing_key:
89
112
  specification_version: 4
90
113
  summary: Scientific gems for Ruby
91
114
  test_files: []
92
- has_rdoc:
data/README.rdoc DELETED
@@ -1,34 +0,0 @@
1
- = SciRuby meta gem
2
-
3
- Tools for Scientific Computing in Ruby
4
-
5
- * {Website}[http://sciruby.com]
6
- * {Google+}[https://plus.google.com/109304769076178160953/posts]
7
- * {NMatrix}[http://github.com/SciRuby/nmatrix]
8
-
9
- == Description
10
-
11
- Ruby has for some time had no equivalent to the beautifully constructed numpy, scipy, and matplotlib libraries for Python. We believe that the time for a Ruby science and visualization package has come and gone. Sometimes when a solution of sugar and water becomes super-saturated, from it precipitates a pure, delicious, and diabetes-inducing crystal of sweetness, induced by no more than the tap of a finger. So it is, we believe, with the need for numeric and visualization libraries in Ruby.
12
-
13
- We are not the first with this idea, but we are trying to bring it to life.
14
-
15
- == Installation
16
-
17
- gem install sciruby
18
- gem install sciruby-full
19
-
20
- See also the {guide in the wiki}[https://github.com/SciRuby/sciruby/wiki/Installation].
21
-
22
- == License
23
-
24
- Copyright (c) 2010 onward, The Ruby Science Foundation.
25
-
26
- All rights reserved.
27
-
28
- SciRuby is licensed under the BSD 3-clause license. See {LICENSE.txt}[https://github.com/SciRuby/sciruby/wiki/License] for details.
29
-
30
- == Donations
31
-
32
- Support a SciRuby Fellow:
33
-
34
- {<img src=http://pledgie.com/campaigns/15783.png?skin_name=chrome>}[http://www.pledgie.com/campaigns/15783]
data/gems.slim DELETED
@@ -1,24 +0,0 @@
1
- ruby:
2
- require 'sciruby'
3
- doctype html
4
- html
5
- head
6
- title SciRuby gems
7
- link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"
8
- body
9
- h1 SciRuby gems
10
- table.table.table-striped
11
- thead
12
- tr
13
- th Name
14
- th Category
15
- th Description
16
- th Autoloaded modules
17
- tbody
18
- - SciRuby.gems.each_value.sort_by {|gem| gem[:category] }.chunk {|gem| gem[:category] }.each do |cat, gems|
19
- - gems.sort_by {|gem| gem [:name] }.each do |gem|
20
- tr
21
- td = gem[:name]
22
- td = gem[:category]
23
- td = gem[:description]
24
- td = gem[:module].join(', ')