experiment 0.0.1 → 0.2.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.
- data/Manifest.txt +5 -1
- data/README.rdoc +12 -3
- data/Rakefile +1 -1
- data/bin/experiment +62 -186
- data/bin/growl.sh +241 -0
- data/lib/experiment.rb +1 -1
- data/lib/experiment/base.rb +51 -13
- data/lib/experiment/config.rb +32 -3
- data/lib/experiment/distributed.rb +67 -0
- data/lib/experiment/notify.rb +177 -3
- data/lib/experiment/runner.rb +208 -0
- data/lib/experiment/work_server.rb +58 -0
- data/test/test_base.rb +5 -0
- data/test/test_config.rb +11 -0
- data/test/test_experiment.rb +1 -1
- data/test/test_stats.rb +34 -0
- metadata +14 -3
@@ -0,0 +1,58 @@
|
|
1
|
+
module Experiment
|
2
|
+
class WorkServer
|
3
|
+
def initialize(experiments, options, ip = "localhost")
|
4
|
+
uri="druby://#{ip}:8787"
|
5
|
+
# The object that handles requests on the server
|
6
|
+
front_object = self
|
7
|
+
#$SAFE = 1 # disable eval() and friends
|
8
|
+
DRb.start_service(uri, front_object)
|
9
|
+
|
10
|
+
@experiments = experiments
|
11
|
+
@started = @experiments.map { |e| false }
|
12
|
+
@done = @started
|
13
|
+
@options = options
|
14
|
+
@experiment_instances = []
|
15
|
+
DRb.thread.join
|
16
|
+
end
|
17
|
+
|
18
|
+
def ready?
|
19
|
+
true
|
20
|
+
end
|
21
|
+
|
22
|
+
def new_item
|
23
|
+
@experiments.each_with_index do |e, i|
|
24
|
+
if @experiment_instances[i].nil?
|
25
|
+
exp = @experiments[i]
|
26
|
+
require "./experiments/#{exp}/#{exp}"
|
27
|
+
cla = eval(as_class_name(exp))
|
28
|
+
experiment = cla.new :master, exp, @options.opts, @options.env
|
29
|
+
experiment.master_run! @options.cv
|
30
|
+
@experiment_instances[i] = experiment
|
31
|
+
return i
|
32
|
+
elsif !@experiment_instances[i].distribution_done?
|
33
|
+
return i
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
DRb.stop_service if @experiment_instances.all? {|a| a.done? }
|
38
|
+
false
|
39
|
+
end
|
40
|
+
|
41
|
+
def notify
|
42
|
+
Notify
|
43
|
+
end
|
44
|
+
|
45
|
+
def experiment(num)
|
46
|
+
@experiments[num]
|
47
|
+
end
|
48
|
+
|
49
|
+
def instance(num)
|
50
|
+
@experiment_instances[num]
|
51
|
+
end
|
52
|
+
|
53
|
+
def as_class_name(str)
|
54
|
+
str.split(/[\_\-]+/).map(&:capitalize).join
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
data/test/test_base.rb
ADDED
data/test/test_config.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../lib/experiment/config"
|
2
|
+
#require "wrong"
|
3
|
+
class TestConfig < Test::Unit::TestCase
|
4
|
+
#include Wrong
|
5
|
+
def test_get
|
6
|
+
Experiment::Config::set "hello" => "Hello :who"
|
7
|
+
assert_equal "Hello world", Experiment::Config::get(:hello, :who => "world")
|
8
|
+
assert_equal "Hello world", Experiment::Config::get(:hello, "Hello jj", :what => "ganja", :who => "world")
|
9
|
+
assert_equal "Hello world", Experiment::Config::get(:world, "Hello world", :who => "world")
|
10
|
+
end
|
11
|
+
end
|
data/test/test_experiment.rb
CHANGED
data/test/test_stats.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../lib/experiment/stats"
|
2
|
+
#require "wrong"
|
3
|
+
class TestStats < Test::Unit::TestCase
|
4
|
+
#include Wrong
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@data = [1, 2, 3, 4]
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_sum
|
11
|
+
|
12
|
+
assert_equal 10, Stats::sum(@data)
|
13
|
+
assert_equal 20, Stats::sum(@data) {|d| d * 2}
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_variance
|
17
|
+
assert_equal 1.6666666666666667, Stats::variance(@data)
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_standard_deviation
|
21
|
+
assert_equal 1.2909944487358056, Stats::standard_deviation(@data)
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_z_scores
|
25
|
+
assert_equal [-1.161895003862225,
|
26
|
+
-0.3872983346207417,
|
27
|
+
0.3872983346207417,
|
28
|
+
1.161895003862225], Stats::z_scores(@data)
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_median
|
32
|
+
assert_equal 2.5, Stats::median(@data)
|
33
|
+
end
|
34
|
+
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
+
- 2
|
7
8
|
- 0
|
8
|
-
|
9
|
-
version: 0.0.1
|
9
|
+
version: 0.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Jakub Hampl
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-11-07 00:00:00 +00:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -52,6 +52,7 @@ email:
|
|
52
52
|
- honitom@seznam.cz
|
53
53
|
executables:
|
54
54
|
- experiment
|
55
|
+
- growl.sh
|
55
56
|
extensions: []
|
56
57
|
|
57
58
|
extra_rdoc_files:
|
@@ -66,14 +67,21 @@ files:
|
|
66
67
|
- lib/experiment.rb
|
67
68
|
- lib/experiment/config.rb
|
68
69
|
- lib/experiment/stats.rb
|
70
|
+
- lib/experiment/runner.rb
|
69
71
|
- lib/experiment/generator/readme_template.txt
|
70
72
|
- lib/experiment/generator/experiment_template.rb
|
71
73
|
- lib/experiment/generator/Rakefile
|
72
74
|
- lib/experiment/base.rb
|
73
75
|
- lib/experiment/notify.rb
|
76
|
+
- lib/experiment/work_server.rb
|
77
|
+
- lib/experiment/distributed.rb
|
74
78
|
- test/test_experiment.rb
|
75
79
|
- test/test_helper.rb
|
76
80
|
- bin/experiment
|
81
|
+
- bin/growl.sh
|
82
|
+
- test/test_base.rb
|
83
|
+
- test/test_config.rb
|
84
|
+
- test/test_stats.rb
|
77
85
|
has_rdoc: true
|
78
86
|
homepage: http://github.com/gampleman/experiment
|
79
87
|
licenses: []
|
@@ -108,5 +116,8 @@ signing_key:
|
|
108
116
|
specification_version: 3
|
109
117
|
summary: ""
|
110
118
|
test_files:
|
119
|
+
- test/test_base.rb
|
120
|
+
- test/test_config.rb
|
111
121
|
- test/test_experiment.rb
|
112
122
|
- test/test_helper.rb
|
123
|
+
- test/test_stats.rb
|