jubatus 0.1.0 → 0.4.0

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.
@@ -0,0 +1,92 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/unit'
4
+
5
+ require 'json'
6
+
7
+ require 'jubatus/regression/client'
8
+ require 'jubatus/regression/types'
9
+ require 'jubatus_test/test_util'
10
+
11
+ class RegressionTest < Test::Unit::TestCase
12
+ HOST = "127.0.0.1"
13
+ PORT = 23002
14
+ TIMEOUT = 10
15
+
16
+ def setup
17
+ @config = {
18
+ "method" => "PA",
19
+ "converter" => {
20
+ "string_filter_types" => {},
21
+ "string_filter_rules" => [],
22
+ "num_filter_types" => {},
23
+ "num_filter_rules" => [],
24
+ "string_types" => {},
25
+ "string_rules" => [{"key" => "*", "type" => "str", "sample_weight" => "bin", "global_weight" => "bin"}],
26
+ "num_types" => {},
27
+ "num_rules" => [{"key" => "*", "type" => "num"}]
28
+ },
29
+ "parameter" => {
30
+ "sensitivity" => 0.1,
31
+ "regularization_weight" => 3.402823e+38
32
+ }
33
+ }
34
+
35
+ TestUtil.write_file("config_regression.json", @config.to_json)
36
+ @srv = TestUtil.fork_process("regression", PORT, "config_regression.json")
37
+ @cli = Jubatus::Regression::Client::Regression.new(HOST, PORT)
38
+ end
39
+
40
+ def teardown
41
+ TestUtil.kill_process(@srv)
42
+ end
43
+
44
+ def test_get_config
45
+ config = @cli.get_config("name")
46
+ assert_equal(@config.to_json, JSON.parse(config).to_json)
47
+
48
+ end
49
+
50
+
51
+ def test_train
52
+ string_values = [["key1", "val1"], ["key2", "val2"]]
53
+ num_values = [["key1", 1.0], ["key2", 2.0]]
54
+ d = Jubatus::Regression::Datum.new(string_values, num_values)
55
+ data = [[1.0, d]]
56
+ assert_equal(@cli.train("name", data), 1)
57
+
58
+ end
59
+
60
+
61
+ def test_estimate
62
+ string_values = [["key1", "val1"], ["key2", "val2"]]
63
+ num_values = [["key1", 1.0], ["key2", 2.0]]
64
+ d = Jubatus::Regression::Datum.new(string_values, num_values)
65
+ data = [d]
66
+ result = @cli.estimate("name", data)
67
+
68
+ end
69
+
70
+
71
+ def test_save
72
+ assert_equal(@cli.save("name", "regression.save_test.model"), true)
73
+
74
+ end
75
+
76
+
77
+ def test_load
78
+ model_name = "regression.load_test.model"
79
+ @cli.save("name", model_name)
80
+ assert_equal(@cli.load("name", model_name), true)
81
+
82
+ end
83
+
84
+
85
+ def test_get_status
86
+ @cli.get_status("name")
87
+
88
+ end
89
+
90
+
91
+ end
92
+
@@ -0,0 +1,125 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/unit'
4
+
5
+ require 'json'
6
+
7
+ require 'jubatus/stat/client'
8
+ require 'jubatus/stat/types'
9
+ require 'jubatus_test/test_util'
10
+
11
+ class StatTest < Test::Unit::TestCase
12
+ HOST = "127.0.0.1"
13
+ PORT = 23004
14
+ TIMEOUT = 10
15
+
16
+ def setup
17
+ @config = {
18
+ "window_size" => 10
19
+ }
20
+
21
+ TestUtil.write_file("config_stat.json", @config.to_json)
22
+ @srv = TestUtil.fork_process("stat", PORT, "config_stat.json")
23
+ @cli = Jubatus::Stat::Client::Stat.new(HOST, PORT)
24
+
25
+ end
26
+
27
+ def teardown
28
+ TestUtil.kill_process(@srv)
29
+ end
30
+
31
+ def test_get_config
32
+ config = @cli.get_config("name")
33
+ assert_equal(@config.to_json, JSON.parse(config).to_json)
34
+
35
+ end
36
+
37
+
38
+ def test_stddev
39
+ @cli.push("name", "stddev", 1.0)
40
+ @cli.push("name", "stddev", 2.0)
41
+ @cli.push("name", "stddev", 3.0)
42
+ @cli.push("name", "stddev", 4.0)
43
+ @cli.push("name", "stddev", 5.0)
44
+ assert_equal(@cli.stddev("name", "stddev"), Math::sqrt(2.0))
45
+
46
+ end
47
+
48
+
49
+ def test_sum
50
+ @cli.push("name", "sum", 1.0)
51
+ @cli.push("name", "sum", 2.0)
52
+ @cli.push("name", "sum", 3.0)
53
+ @cli.push("name", "sum", 4.0)
54
+ @cli.push("name", "sum", 5.0)
55
+ assert_equal(@cli.sum("name", "sum"), 15.0)
56
+
57
+ end
58
+
59
+
60
+ def test_max
61
+ @cli.push("name", "max", 1.0)
62
+ @cli.push("name", "max", 2.0)
63
+ @cli.push("name", "max", 3.0)
64
+ @cli.push("name", "max", 4.0)
65
+ @cli.push("name", "max", 5.0)
66
+ assert_equal(@cli.max("name", "max"), 5.0)
67
+
68
+ end
69
+
70
+
71
+ def test_min
72
+ @cli.push("name", "min", 1.0)
73
+ @cli.push("name", "min", 2.0)
74
+ @cli.push("name", "min", 3.0)
75
+ @cli.push("name", "min", 4.0)
76
+ @cli.push("name", "min", 5.0)
77
+ assert_equal(@cli.min("name", "min"), 1.0)
78
+
79
+ end
80
+
81
+
82
+ def test_entropy
83
+ @cli.push("name", "entropy", 1.0)
84
+ @cli.push("name", "entropy", 2.0)
85
+ @cli.push("name", "entropy", 3.0)
86
+ @cli.push("name", "entropy", 4.0)
87
+ @cli.push("name", "entropy", 5.0)
88
+ assert_equal(@cli.entropy("name", "entropy"), 0.0)
89
+
90
+ end
91
+
92
+
93
+ def test_moment
94
+ @cli.push("name", "moment", 1.0)
95
+ @cli.push("name", "moment", 2.0)
96
+ @cli.push("name", "moment", 3.0)
97
+ @cli.push("name", "moment", 4.0)
98
+ @cli.push("name", "moment", 5.0)
99
+ assert_equal(@cli.moment("name", "moment", 3, 0.0), 45.0)
100
+
101
+ end
102
+
103
+
104
+ def test_save
105
+ assert_equal(@cli.save("name", "stat.save_test.model"), true)
106
+
107
+ end
108
+
109
+
110
+ def test_load
111
+ model_name = "stat.load_test.model"
112
+ @cli.save("name", model_name)
113
+ assert_equal(@cli.load("name", model_name), true)
114
+
115
+ end
116
+
117
+
118
+ def test_get_status
119
+ @cli.get_status("name")
120
+
121
+ end
122
+
123
+
124
+ end
125
+
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'msgpack/rpc'
5
+
6
+ class TestUtil
7
+ def self.wait_server(port)
8
+ cli = MessagePack::RPC::Client.new("127.0.0.1", port)
9
+ sleep_time = 1000;
10
+ # 1000 * \sum {i=0..9} 2^i = 1024000 micro sec = 1024 ms
11
+ for i in 0..9
12
+ sleep(sleep_time/1000000.0) # from usec to sec
13
+ begin
14
+ cli.call("dummy")
15
+ raise "dummy rpc succeeded"
16
+ rescue MessagePack::RPC::RPCError => ex
17
+ return if ex.class == MessagePack::RPC::RemoteError
18
+ end
19
+ sleep_time *= 2;
20
+ end
21
+ raise "cannot connect"
22
+ end
23
+
24
+ def self.fork_process(name, port = 9199, config = "")
25
+ cmd = "juba" + name
26
+ child = Process.fork()
27
+ if child.nil? then
28
+ begin
29
+ exec(cmd, cmd, "--rpc-port", port.to_s, "--configpath", config, "--thread", "100", "--datadir", ".")
30
+ rescue
31
+ puts $!
32
+ exit 1
33
+ end
34
+ end
35
+ wait_server(port)
36
+ return child;
37
+ end
38
+
39
+ def self.kill_process(pid)
40
+ Process.kill("TERM", pid)
41
+ Process.wait(pid)
42
+ end
43
+
44
+ def self.write_file(path, data)
45
+ f = File.open(path, "w")
46
+ f.write(data)
47
+ f.close
48
+ end
49
+ end
metadata CHANGED
@@ -1,69 +1,64 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: jubatus
3
- version: !ruby/object:Gem::Version
4
- hash: 27
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 0
10
- version: 0.1.0
11
6
  platform: ruby
12
- authors:
13
- - Jubatus Team
7
+ authors:
8
+ - PFI & NTT
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-07-20 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2013-01-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: msgpack-rpc
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
18
+ requirements:
26
19
  - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 5
29
- segments:
30
- - 0
31
- - 4
32
- - 5
33
- version: 0.4.5
20
+ - !ruby/object:Gem::Version
21
+ version: 0.5.1
34
22
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: rake
38
23
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 0.5.1
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
40
33
  none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 63
45
- segments:
46
- - 0
47
- - 9
48
- - 2
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
49
37
  version: 0.9.2
50
38
  type: :development
51
- version_requirements: *id002
52
- description: Jubatus client for Ruby
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 0.9.2
46
+ description: Jubatus is a distributed processing framework and streaming machine learning
47
+ library. This is the Jubatus client in Ruby.
53
48
  email: jubatus@googlegroups.com
54
49
  executables: []
55
-
56
50
  extensions: []
57
-
58
51
  extra_rdoc_files: []
59
-
60
- files:
52
+ files:
61
53
  - .gitignore
62
54
  - LICENSE
63
- - README.md
55
+ - README.rst
64
56
  - Rakefile
65
57
  - VERSION
58
+ - generate.sh
66
59
  - jubatus.gemspec
60
+ - lib/jubatus/anomaly/client.rb
61
+ - lib/jubatus/anomaly/types.rb
67
62
  - lib/jubatus/classifier/client.rb
68
63
  - lib/jubatus/classifier/types.rb
69
64
  - lib/jubatus/graph/client.rb
@@ -74,38 +69,43 @@ files:
74
69
  - lib/jubatus/regression/types.rb
75
70
  - lib/jubatus/stat/client.rb
76
71
  - lib/jubatus/stat/types.rb
77
- homepage: https://github.com/jubatus/jubatus-ruby-client
78
- licenses: []
79
-
72
+ - test/jubatus_test/anomaly/test.rb
73
+ - test/jubatus_test/classifier/test.rb
74
+ - test/jubatus_test/graph/test.rb
75
+ - test/jubatus_test/recommender/test.rb
76
+ - test/jubatus_test/regression/test.rb
77
+ - test/jubatus_test/stat/test.rb
78
+ - test/jubatus_test/test_util.rb
79
+ homepage: http://jubat.us
80
+ licenses:
81
+ - MIT
80
82
  post_install_message:
81
83
  rdoc_options: []
82
-
83
- require_paths:
84
+ require_paths:
84
85
  - lib
85
- required_ruby_version: !ruby/object:Gem::Requirement
86
+ required_ruby_version: !ruby/object:Gem::Requirement
86
87
  none: false
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- hash: 3
91
- segments:
92
- - 0
93
- version: "0"
94
- required_rubygems_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ! '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
95
93
  none: false
96
- requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- hash: 3
100
- segments:
101
- - 0
102
- version: "0"
94
+ requirements:
95
+ - - ! '>='
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
103
98
  requirements: []
104
-
105
99
  rubyforge_project:
106
- rubygems_version: 1.8.11
100
+ rubygems_version: 1.8.23
107
101
  signing_key:
108
102
  specification_version: 3
109
- summary: Jubatus client for Ruby
110
- test_files: []
111
-
103
+ summary: Jubatus Ruby client
104
+ test_files:
105
+ - test/jubatus_test/anomaly/test.rb
106
+ - test/jubatus_test/classifier/test.rb
107
+ - test/jubatus_test/graph/test.rb
108
+ - test/jubatus_test/recommender/test.rb
109
+ - test/jubatus_test/regression/test.rb
110
+ - test/jubatus_test/stat/test.rb
111
+ - test/jubatus_test/test_util.rb
data/README.md DELETED
@@ -1,30 +0,0 @@
1
- jubatus-ruby-client
2
- ===================
3
-
4
- Jubatus' Ruby client skeleton. Don't clone this repository.
5
-
6
- Released client is generated by [MessagePack IDL](https://github.com/msgpack/msgpack-haskell/tree/master/msgpack-idl).
7
-
8
- ## TODO
9
-
10
- - Release gem (Currently, IDL generated codes are broken...)
11
-
12
- ## Copyright
13
-
14
- <table>
15
- <tr>
16
- <td>Web site</td><td>http://jubat.us/</td>
17
- </tr>
18
- <tr>
19
- <td>Repository</td><td>https://github.com/jubatus</td>
20
- </tr>
21
- <tr>
22
- <td>Author</td><td>Jubatus Team</td>
23
- </tr>
24
- <tr>
25
- <td>Copyright</td><td>Copyright (c) 2012, Jubatus Team</td>
26
- </tr>
27
- <tr>
28
- <td>License</td><td>New BSD License</td>
29
- </tr>
30
- </table>