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.
@@ -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
@@ -0,0 +1,5 @@
1
+ require File.dirname(__FILE__) + "/../lib/experiment/base"
2
+
3
+ class TestBase < Test::Unit::TestCase
4
+ # honestly I have no idea how to test this class, please commit!
5
+ end
@@ -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
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/test_helper.rb'
1
+ #require File.dirname(__FILE__) + '/test_helper.rb'
2
2
 
3
3
  class TestExperiment < Test::Unit::TestCase
4
4
 
@@ -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
- - 1
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-10-31 01:00:00 +01:00
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