sciruby 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
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(', ')