rsruby 0.4.0 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +5 -0
- data/License.txt +504 -0
- data/Manifest.txt +37 -0
- data/README.txt +96 -0
- data/examples/arrayfields.rb +50 -34
- data/examples/bioc.rb +34 -98
- data/examples/dataframe.rb +34 -14
- data/examples/erobj.rb +29 -15
- data/ext/{rsruby/Converters.c → Converters.c} +50 -25
- data/ext/{rsruby/Converters.h → Converters.h} +3 -0
- data/ext/{rsruby/R_eval.c → R_eval.c} +0 -0
- data/ext/{rsruby/R_eval.h → R_eval.h} +0 -0
- data/ext/{rsruby/extconf.rb → extconf.rb} +0 -7
- data/ext/{rsruby/robj.c → robj.c} +0 -0
- data/ext/{rsruby/rsruby.c → rsruby.c} +12 -26
- data/ext/{rsruby/rsruby.h → rsruby.h} +0 -0
- data/lib/rsruby.rb +49 -125
- data/lib/rsruby/dataframe.rb +11 -6
- data/lib/rsruby/erobj.rb +18 -10
- data/lib/rsruby/robj.rb +7 -2
- data/test/table.txt +4 -0
- data/test/tc_array.rb +13 -16
- data/test/tc_boolean.rb +5 -8
- data/test/tc_cleanup.rb +11 -13
- data/test/tc_eval.rb +9 -5
- data/test/tc_extensions.rb +26 -0
- data/test/tc_io.rb +7 -10
- data/test/tc_library.rb +6 -6
- data/test/tc_modes.rb +131 -79
- data/test/tc_robj.rb +26 -29
- data/test/tc_sigint.rb +1 -1
- data/test/tc_to_r.rb +57 -60
- data/test/tc_to_ruby.rb +62 -65
- data/test/tc_vars.rb +14 -14
- data/test/test_all.rb +21 -0
- metadata +34 -40
- data/README +0 -102
data/test/tc_vars.rb
CHANGED
@@ -1,28 +1,28 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
require 'rsruby'
|
3
3
|
|
4
|
-
unless $r
|
5
|
-
$r = RSRuby.instance
|
6
|
-
end
|
7
|
-
|
8
4
|
class TestVars < Test::Unit::TestCase
|
9
5
|
|
6
|
+
def setup
|
7
|
+
@r = RSRuby.instance
|
8
|
+
end
|
9
|
+
|
10
10
|
def test_get_vars
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
@r.eval_R("f<-function(x) x+1")
|
12
|
+
@r.assign('x',100)
|
13
|
+
@r.assign('v',(1..10).to_a)
|
14
14
|
#There is a difference here between RPy and us
|
15
15
|
#a final hash argument is treated as named arguments
|
16
16
|
#to the original function call (assign) not as a list
|
17
17
|
#to be given to the function
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
@r.c.autoconvert(RSRuby::NO_CONVERSION)
|
19
|
+
@r.assign('d',@r.c({'a' => 1, 'b' => 2}))
|
20
|
+
@r.c.autoconvert(RSRuby::BASIC_CONVERSION)
|
21
21
|
|
22
|
-
assert_equal(
|
23
|
-
assert_equal(
|
24
|
-
assert_equal(
|
25
|
-
assert_equal(
|
22
|
+
assert_equal(@r.x, 100)
|
23
|
+
assert_equal(@r.v, (1..10).to_a)
|
24
|
+
assert_equal(@r.d, @r.c({'a' => 1, 'b' => 2}))
|
25
|
+
assert_equal(@r.f.class, @r.c.class)
|
26
26
|
end
|
27
27
|
|
28
28
|
end
|
data/test/test_all.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
#Tests all test cases for rsruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
require 'tc_array'
|
6
|
+
require 'tc_boolean'
|
7
|
+
require 'tc_cleanup'
|
8
|
+
require 'tc_eval'
|
9
|
+
require 'tc_extensions'
|
10
|
+
require 'tc_init'
|
11
|
+
#require 'tc_io'
|
12
|
+
require 'tc_library'
|
13
|
+
require 'tc_modes'
|
14
|
+
require 'tc_robj'
|
15
|
+
#require 'tc_sigint'
|
16
|
+
require 'tc_to_ruby'
|
17
|
+
require 'tc_to_r'
|
18
|
+
require 'tc_util'
|
19
|
+
require 'tc_vars'
|
20
|
+
|
21
|
+
|
metadata
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.
|
2
|
+
rubygems_version: 0.9.0
|
3
3
|
specification_version: 1
|
4
4
|
name: rsruby
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.4.
|
7
|
-
date:
|
8
|
-
summary:
|
6
|
+
version: 0.4.2
|
7
|
+
date: 2007-01-16 00:00:00 +09:00
|
8
|
+
summary: RSRuby is a bridge library for Ruby giving Ruby developers access to the full R statistical programming environment. RSRuby embeds a full R interpreter inside the running Ruby script, allowing R methods to be called and data passed between the Ruby script and the R interpreter. Most data conversion is handled automatically, but user-definable conversion routines can also be written to handle any R or Ruby class.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
11
11
|
- ext
|
12
12
|
email: alexg@kuicr.kyoto-u.ac.jp
|
13
13
|
homepage: http://web.kuicr.kyoto-u.ac.jp/~alexg/rsruby/
|
14
|
-
rubyforge_project:
|
15
|
-
description:
|
14
|
+
rubyforge_project: rsruby
|
15
|
+
description: RSRuby is a bridge library for Ruby giving Ruby developers access to the full R statistical programming environment. RSRuby embeds a full R interpreter inside the running Ruby script, allowing R methods to be called and data passed between the Ruby script and the R interpreter. Most data conversion is handled automatically, but user-definable conversion routines can also be written to handle any R or Ruby class.
|
16
16
|
autorequire:
|
17
17
|
default_executable:
|
18
18
|
bindir: bin
|
@@ -26,63 +26,57 @@ required_ruby_version: !ruby/object:Gem::Version::Requirement
|
|
26
26
|
platform: ruby
|
27
27
|
signing_key:
|
28
28
|
cert_chain:
|
29
|
+
post_install_message:
|
29
30
|
authors:
|
30
31
|
- Alex Gutteridge
|
31
32
|
files:
|
32
|
-
-
|
33
|
-
-
|
34
|
-
-
|
35
|
-
-
|
36
|
-
- ext/rsruby/Converters.c
|
37
|
-
- ext/rsruby/rsruby.c
|
38
|
-
- ext/rsruby/R_eval.c
|
39
|
-
- ext/rsruby/robj.c
|
40
|
-
- ext/rsruby/Converters.h
|
41
|
-
- ext/rsruby/rsruby.h
|
42
|
-
- ext/rsruby/R_eval.h
|
43
|
-
- ext/rsruby/extconf.rb
|
44
|
-
- test/tc_array.rb
|
45
|
-
- test/tc_boolean.rb
|
46
|
-
- test/tc_cleanup.rb
|
47
|
-
- test/tc_eval.rb
|
48
|
-
- test/tc_io.rb
|
49
|
-
- test/tc_to_r.rb
|
50
|
-
- test/tc_library.rb
|
51
|
-
- test/tc_init.rb
|
52
|
-
- test/tc_util.rb
|
53
|
-
- test/tc_modes.rb
|
54
|
-
- test/tc_robj.rb
|
55
|
-
- test/tc_sigint.rb
|
56
|
-
- test/tc_to_ruby.rb
|
57
|
-
- test/tc_vars.rb
|
33
|
+
- History.txt
|
34
|
+
- License.txt
|
35
|
+
- Manifest.txt
|
36
|
+
- README.txt
|
58
37
|
- examples/arrayfields.rb
|
59
38
|
- examples/bioc.rb
|
60
39
|
- examples/dataframe.rb
|
61
40
|
- examples/erobj.rb
|
62
|
-
-
|
63
|
-
|
41
|
+
- ext/Converters.c
|
42
|
+
- ext/Converters.h
|
43
|
+
- ext/R_eval.c
|
44
|
+
- ext/R_eval.h
|
45
|
+
- ext/extconf.rb
|
46
|
+
- ext/robj.c
|
47
|
+
- ext/rsruby.c
|
48
|
+
- ext/rsruby.h
|
49
|
+
- lib/rsruby.rb
|
50
|
+
- lib/rsruby/dataframe.rb
|
51
|
+
- lib/rsruby/erobj.rb
|
52
|
+
- lib/rsruby/robj.rb
|
53
|
+
- test/table.txt
|
64
54
|
- test/tc_array.rb
|
65
55
|
- test/tc_boolean.rb
|
66
56
|
- test/tc_cleanup.rb
|
67
57
|
- test/tc_eval.rb
|
58
|
+
- test/tc_extensions.rb
|
59
|
+
- test/tc_init.rb
|
68
60
|
- test/tc_io.rb
|
69
|
-
- test/tc_to_r.rb
|
70
61
|
- test/tc_library.rb
|
71
|
-
- test/tc_init.rb
|
72
|
-
- test/tc_util.rb
|
73
62
|
- test/tc_modes.rb
|
74
63
|
- test/tc_robj.rb
|
75
64
|
- test/tc_sigint.rb
|
65
|
+
- test/tc_to_r.rb
|
76
66
|
- test/tc_to_ruby.rb
|
67
|
+
- test/tc_util.rb
|
77
68
|
- test/tc_vars.rb
|
69
|
+
- test/test_all.rb
|
70
|
+
test_files:
|
71
|
+
- test/test_all.rb
|
78
72
|
rdoc_options: []
|
79
73
|
|
80
|
-
extra_rdoc_files:
|
81
|
-
|
74
|
+
extra_rdoc_files: []
|
75
|
+
|
82
76
|
executables: []
|
83
77
|
|
84
78
|
extensions:
|
85
|
-
- ext/
|
79
|
+
- ext/extconf.rb
|
86
80
|
requirements: []
|
87
81
|
|
88
82
|
dependencies: []
|
data/README
DELETED
@@ -1,102 +0,0 @@
|
|
1
|
-
== Introduction
|
2
|
-
|
3
|
-
RSRuby is a partial conversion of RPy (http://rpy.sourceforge.net/), the original RSRuby was based on RSPerl (http://www.omegahat.org/RSPerl/) (hence RSRuby), however almost all the code is now from RPy. RSRuby provides the ability to embed a full R interpreter inside a running Ruby script. R methods can then be called from the Ruby script and data passed between the R interpreter and the Ruby script.
|
4
|
-
|
5
|
-
== License
|
6
|
-
|
7
|
-
Copyright (C) 2006 Alex Gutteridge
|
8
|
-
|
9
|
-
The Original Code is the RPy python module.
|
10
|
-
|
11
|
-
The Initial Developer of the Original Code is Walter Moreira.
|
12
|
-
Portions created by the Initial Developer are Copyright (C) 2002
|
13
|
-
the Initial Developer. All Rights Reserved.
|
14
|
-
|
15
|
-
Contributor(s):
|
16
|
-
Gregory R. Warnes <greg@warnes.net> (RPy Maintainer)
|
17
|
-
|
18
|
-
This library is free software; you can redistribute it and/or
|
19
|
-
modify it under the terms of the GNU Lesser General Public
|
20
|
-
License as published by the Free Software Foundation; either
|
21
|
-
version 2.1 of the License, or (at your option) any later version.
|
22
|
-
|
23
|
-
This library is distributed in the hope that it will be useful,
|
24
|
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
25
|
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
26
|
-
Lesser General Public License for more details.
|
27
|
-
|
28
|
-
You should have received a copy of the GNU Lesser General Public
|
29
|
-
License along with this library; if not, write to the Free Software
|
30
|
-
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
31
|
-
|
32
|
-
== Installation
|
33
|
-
|
34
|
-
Obviously a working R installation is required. R must have been installed/built with the '--enable-R-shlib' option enabled to provide the R shared library. I have tested on R version 2.2.1, but earlier version might work.
|
35
|
-
|
36
|
-
Firstly, on OS X please set the compiler to gcc 3.3
|
37
|
-
|
38
|
-
sudo gcc_select 3.3
|
39
|
-
|
40
|
-
Then (on all systems) to install:
|
41
|
-
|
42
|
-
1. Set the R_HOME environment variable appropriately:
|
43
|
-
|
44
|
-
R_HOME=/usr/lib/R (on my Ubuntu Linux box)
|
45
|
-
R_HOME=/Library/Frameworks/R.framework/Resources (on OS X)
|
46
|
-
|
47
|
-
2. Compile/install the Ruby library using setup.rb. You need to supply the location of your R installation for the libR shared library. This may be the same as R_HOME, e.g. ('/usr/lib/R' on Ubuntu, '/Library/Frameworks/R.framework/Resources' on OS X):
|
48
|
-
|
49
|
-
cd rsruby
|
50
|
-
ruby setup.rb config -- --with-R-dir=/usr/lib/R
|
51
|
-
ruby setup.rb setup
|
52
|
-
sudo ruby setup.rb install
|
53
|
-
|
54
|
-
If RSRuby does not compile you may need to configure the path to the R library (this wasn't required on either of my machines, but your mileage may vary). From the RPy README, anyone of the following should be sufficient:
|
55
|
-
|
56
|
-
o make a link to RHOME/bin/libR.so in /usr/local/lib or /usr/lib, then
|
57
|
-
run 'ldconfig',
|
58
|
-
|
59
|
-
o or, put the following line in your .bashrc (or equivalent):
|
60
|
-
|
61
|
-
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:RHOME/bin
|
62
|
-
|
63
|
-
o or, edit the file /etc/ld.so.conf and add the following line:
|
64
|
-
|
65
|
-
RHOME/bin
|
66
|
-
|
67
|
-
and then, run 'ldconfig'.
|
68
|
-
|
69
|
-
3. Test it.
|
70
|
-
|
71
|
-
ruby setup.rb test
|
72
|
-
|
73
|
-
Should pass all tests.
|
74
|
-
|
75
|
-
== Installation Notes
|
76
|
-
|
77
|
-
If you're brave then you can combine the config, setup and install steps into 'sudo ruby setup.rb all -- --with-R-dir=/usr/lib/R'.
|
78
|
-
|
79
|
-
You can avoid needing root/sudo access in the install step by providing setup.rb with a suitable install directory (such as home). Please run 'ruby setup.rb --help' for more details.
|
80
|
-
|
81
|
-
A Ruby Gem version of RSRuby is also available.
|
82
|
-
|
83
|
-
== Usage
|
84
|
-
|
85
|
-
To use (read examples and tests for more hints - the RPy manual will also be helpful until I have written something similar myself!):
|
86
|
-
|
87
|
-
#Initialize R
|
88
|
-
require 'rsruby'
|
89
|
-
|
90
|
-
#RSRuby uses Singleton design pattern so call instance rather
|
91
|
-
#than new
|
92
|
-
r = RSRuby.instance
|
93
|
-
#Call R functions
|
94
|
-
data = r.rnorm(100)
|
95
|
-
r.plot(data)
|
96
|
-
sleep(2)
|
97
|
-
#Call with named args
|
98
|
-
r.plot({'x' => data,
|
99
|
-
'y' => data,
|
100
|
-
'xlab' => 'test',
|
101
|
-
'ylab' => 'test'})
|
102
|
-
sleep(2)
|