biopsy 0.1.0.alpha → 0.1.1.alpha
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.
- checksums.yaml +7 -0
- data/README.md +24 -1
- data/lib/biopsy/base_extensions.rb +2 -5
- data/lib/biopsy/experiment.rb +58 -21
- data/lib/biopsy/objective_handler.rb +21 -50
- data/lib/biopsy/optimisers/parameter_sweeper.rb +14 -1
- data/lib/biopsy/optimisers/tabu_search.rb +32 -4
- data/lib/biopsy/settings.rb +4 -23
- data/lib/biopsy/target.rb +71 -56
- data/lib/biopsy/version.rb +1 -1
- data/lib/biopsy.rb +0 -1
- data/test/helper.rb +35 -58
- data/test/test_experiment.rb +14 -27
- data/test/test_objective_handler.rb +10 -13
- data/test/test_settings.rb +2 -11
- data/test/test_target.rb +29 -18
- metadata +32 -52
- data/lib/biopsy/domain.rb +0 -156
- data/test/test_domain.rb +0 -61
data/test/helper.rb
CHANGED
@@ -11,9 +11,10 @@ require 'test/unit'
|
|
11
11
|
begin; require 'turn/autorun'; rescue LoadError; end
|
12
12
|
require 'shoulda-context'
|
13
13
|
require 'biopsy'
|
14
|
+
require 'yaml'
|
14
15
|
|
15
16
|
Turn.config.format = :pretty
|
16
|
-
Turn.config.trace =
|
17
|
+
Turn.config.trace = 5
|
17
18
|
|
18
19
|
Biopsy::Settings.instance.set_defaults
|
19
20
|
|
@@ -24,8 +25,6 @@ class Helper
|
|
24
25
|
|
25
26
|
attr_reader :tmp_dir
|
26
27
|
attr_reader :target_dir
|
27
|
-
attr_reader :domain_dir
|
28
|
-
attr_reader :domain_path
|
29
28
|
attr_reader :target_path
|
30
29
|
attr_reader :objective_dir
|
31
30
|
attr_reader :objective_path
|
@@ -48,18 +47,32 @@ class Helper
|
|
48
47
|
# Return a hash of valid target data
|
49
48
|
def target_data
|
50
49
|
{
|
51
|
-
:
|
52
|
-
|
50
|
+
:name => 'target_test',
|
51
|
+
:output => {
|
52
|
+
:onlyfile => 'output.txt'
|
53
53
|
},
|
54
|
-
:
|
55
|
-
:
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
54
|
+
:parameters => {
|
55
|
+
:a => {
|
56
|
+
type: 'integer',
|
57
|
+
opt: true,
|
58
|
+
min: -40,
|
59
|
+
max: 40,
|
60
|
+
step: 2
|
61
|
+
},
|
62
|
+
:b => {
|
63
|
+
type: 'integer',
|
64
|
+
opt: true,
|
65
|
+
min: 0,
|
66
|
+
max: 40,
|
67
|
+
step: 2
|
68
|
+
},
|
69
|
+
:c => {
|
70
|
+
type: 'integer',
|
71
|
+
opt: true,
|
72
|
+
min: -20,
|
73
|
+
max: 20
|
74
|
+
}
|
61
75
|
},
|
62
|
-
:constructor_path => 'test_constructor.rb'
|
63
76
|
}
|
64
77
|
end
|
65
78
|
|
@@ -73,12 +86,15 @@ class Helper
|
|
73
86
|
# Create a valid target definition in the target dir
|
74
87
|
def create_valid_target
|
75
88
|
data = self.target_data
|
76
|
-
name = '
|
89
|
+
name = 'target_test'
|
77
90
|
@target_path = File.join(@target_dir, name + '.yml')
|
78
91
|
self.yaml_dump data, @target_path
|
79
|
-
File.open(File.join(@target_dir,
|
92
|
+
File.open(File.join(@target_dir, name + '.rb'), 'w') do |f|
|
80
93
|
f.puts %Q{
|
81
|
-
class
|
94
|
+
class TargetTest
|
95
|
+
|
96
|
+
def initialize
|
97
|
+
end
|
82
98
|
|
83
99
|
require 'yaml'
|
84
100
|
|
@@ -86,7 +102,7 @@ class TestConstructor
|
|
86
102
|
File.open('output.txt', 'w') do |f|
|
87
103
|
f.puts(params.to_yaml)
|
88
104
|
end
|
89
|
-
|
105
|
+
nil
|
90
106
|
end
|
91
107
|
|
92
108
|
end
|
@@ -95,45 +111,6 @@ end
|
|
95
111
|
name
|
96
112
|
end
|
97
113
|
|
98
|
-
# Return a hash of valid domain data
|
99
|
-
def domain_data
|
100
|
-
{
|
101
|
-
:input_filetypes => [
|
102
|
-
{
|
103
|
-
:n => 1,
|
104
|
-
:allowed_extensions => [
|
105
|
-
'.txt'
|
106
|
-
]
|
107
|
-
}
|
108
|
-
],
|
109
|
-
:output_filetypes => [
|
110
|
-
{
|
111
|
-
:n => 1,
|
112
|
-
:allowed_extensions => [
|
113
|
-
'.txt'
|
114
|
-
]
|
115
|
-
}
|
116
|
-
],
|
117
|
-
:objectives => [
|
118
|
-
'test1', 'test2'
|
119
|
-
]
|
120
|
-
}
|
121
|
-
end
|
122
|
-
|
123
|
-
def setup_domain
|
124
|
-
@domain_dir = File.join(@tmp_dir, 'domains')
|
125
|
-
Dir.mkdir @domain_dir
|
126
|
-
Biopsy::Settings.instance.domain_dir = [@domain_dir]
|
127
|
-
end
|
128
|
-
|
129
|
-
def create_valid_domain
|
130
|
-
data = domain_data
|
131
|
-
name = 'test_domain'
|
132
|
-
@domain_path = File.join(@domain_dir, name + '.yml')
|
133
|
-
self.yaml_dump data, @domain_path
|
134
|
-
name
|
135
|
-
end
|
136
|
-
|
137
114
|
def setup_objective
|
138
115
|
@objective_dir = File.join(@tmp_dir, 'objectives')
|
139
116
|
Dir.mkdir @objective_dir
|
@@ -152,8 +129,8 @@ class TestObjective < Biopsy::ObjectiveFunction
|
|
152
129
|
@weighting = 1
|
153
130
|
end
|
154
131
|
|
155
|
-
def run(
|
156
|
-
file =
|
132
|
+
def run(raw_output, output_files, threads)
|
133
|
+
file = output_files[:onlyfile].first
|
157
134
|
input = YAML::load_file(file)
|
158
135
|
a = input[:a].to_i
|
159
136
|
b = input[:b].to_i
|
data/test/test_experiment.rb
CHANGED
@@ -8,15 +8,10 @@ class TestExperiment < Test::Unit::TestCase
|
|
8
8
|
@h = Helper.new
|
9
9
|
@h.setup_tmp_dir
|
10
10
|
|
11
|
-
# we need a domain
|
12
|
-
@h.setup_domain
|
13
|
-
domain_name = @h.create_valid_domain
|
14
|
-
@domain = Biopsy::Domain.new domain_name
|
15
|
-
|
16
11
|
# and a target
|
17
12
|
@h.setup_target
|
18
13
|
target_name = @h.create_valid_target
|
19
|
-
@target = Biopsy::Target.new
|
14
|
+
@target = Biopsy::Target.new
|
20
15
|
@target.load_by_name target_name
|
21
16
|
|
22
17
|
# and an objective
|
@@ -30,53 +25,45 @@ class TestExperiment < Test::Unit::TestCase
|
|
30
25
|
|
31
26
|
should "fail to init when passed a non existent target" do
|
32
27
|
assert_raise Biopsy::TargetLoadError do
|
33
|
-
Biopsy::Experiment.new('fake_target'
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
should "fail to init when passed a non existent domain" do
|
38
|
-
assert_raise Biopsy::DomainLoadError do
|
39
|
-
Biopsy::Experiment.new('test_target', 'fake_domain')
|
28
|
+
Biopsy::Experiment.new('fake_target')
|
40
29
|
end
|
41
30
|
end
|
42
31
|
|
43
32
|
should "be able to select a valid point from the parameter space" do
|
44
|
-
e = Biopsy::Experiment.new('
|
33
|
+
e = Biopsy::Experiment.new('target_test')
|
45
34
|
start_point = e.random_start_point
|
46
35
|
start_point.each_pair do |param, value|
|
47
|
-
assert @
|
36
|
+
assert @target.parameters[param].include?(value), "#{value} not in #{@target.parameters[param]}"
|
48
37
|
end
|
49
38
|
end
|
50
39
|
|
51
40
|
should "be able to select a starting point" do
|
52
|
-
e = Biopsy::Experiment.new('
|
41
|
+
e = Biopsy::Experiment.new('target_test')
|
53
42
|
start_point = e.start
|
54
43
|
start_point.each_pair do |param, value|
|
55
|
-
assert @
|
44
|
+
assert @target.parameters[param].include?(value), "#{value} not in #{@target.parameters[param]}"
|
56
45
|
end
|
57
46
|
end
|
58
47
|
|
59
48
|
should "respect user's choice of starting point" do
|
60
49
|
s = {:a => 2, :b => 4}
|
61
|
-
e = Biopsy::Experiment.new('
|
50
|
+
e = Biopsy::Experiment.new('target_test', s)
|
62
51
|
assert_equal s, e.start
|
63
52
|
end
|
64
53
|
|
65
54
|
should "automatically select an optimiser if none is specified" do
|
66
|
-
e = Biopsy::Experiment.new('
|
55
|
+
e = Biopsy::Experiment.new('target_test')
|
67
56
|
assert e.algorithm.kind_of? Biopsy::TabuSearch
|
68
57
|
end
|
69
58
|
|
70
59
|
should "return an optimal set of parameters and score when run" do
|
71
60
|
# Kernel.srand 123
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
best_found = e.run[:parameters]
|
79
|
-
assert_equal known_best, best_found
|
61
|
+
Dir.chdir @h.tmp_dir do
|
62
|
+
e = Biopsy::Experiment.new('target_test')
|
63
|
+
known_best = -4
|
64
|
+
best_found = e.run[:score]
|
65
|
+
assert known_best < best_found
|
66
|
+
end
|
80
67
|
end
|
81
68
|
|
82
69
|
end # Experiment context
|
@@ -8,20 +8,15 @@ class TestObjectiveHandler < Test::Unit::TestCase
|
|
8
8
|
@h = Helper.new
|
9
9
|
@h.setup_tmp_dir
|
10
10
|
|
11
|
-
# we need a domain
|
12
|
-
@h.setup_domain
|
13
|
-
domain_name = @h.create_valid_domain
|
14
|
-
@domain = Biopsy::Domain.new domain_name
|
15
|
-
|
16
11
|
# and a target
|
17
12
|
@h.setup_target
|
18
13
|
target_name = @h.create_valid_target
|
19
|
-
@target = Biopsy::Target.new
|
14
|
+
@target = Biopsy::Target.new
|
20
15
|
@target.load_by_name target_name
|
21
16
|
|
22
17
|
# and an objective
|
23
18
|
@h.setup_objective
|
24
|
-
|
19
|
+
@h.create_valid_objective
|
25
20
|
end
|
26
21
|
|
27
22
|
teardown do
|
@@ -29,7 +24,7 @@ class TestObjectiveHandler < Test::Unit::TestCase
|
|
29
24
|
end
|
30
25
|
|
31
26
|
should "return loaded objectives on init" do
|
32
|
-
oh = Biopsy::ObjectiveHandler.new @
|
27
|
+
oh = Biopsy::ObjectiveHandler.new @target
|
33
28
|
refute oh.objectives.empty?
|
34
29
|
end
|
35
30
|
|
@@ -49,13 +44,13 @@ class TestObjectiveHandler < Test::Unit::TestCase
|
|
49
44
|
f.puts 'another_objective'
|
50
45
|
end
|
51
46
|
end
|
52
|
-
oh = Biopsy::ObjectiveHandler.new @
|
47
|
+
oh = Biopsy::ObjectiveHandler.new @target
|
53
48
|
assert_equal 1, oh.objectives.length
|
54
49
|
assert_equal 'AnotherObjective', oh.objectives.keys.first
|
55
50
|
end
|
56
51
|
|
57
52
|
should "run an objective and return the result" do
|
58
|
-
oh = Biopsy::ObjectiveHandler.new @
|
53
|
+
oh = Biopsy::ObjectiveHandler.new @target
|
59
54
|
values = {
|
60
55
|
:a => 4,
|
61
56
|
:b => 4,
|
@@ -65,12 +60,14 @@ class TestObjectiveHandler < Test::Unit::TestCase
|
|
65
60
|
File.open(file, 'w') do |f|
|
66
61
|
f.puts values.to_yaml
|
67
62
|
end
|
68
|
-
|
69
|
-
|
63
|
+
Dir.chdir(@h.tmp_dir) do
|
64
|
+
result = oh.run_for_output(nil, {:onlyfile => file})
|
65
|
+
assert_equal 0, result
|
66
|
+
end
|
70
67
|
end
|
71
68
|
|
72
69
|
should "perform euclidean distance dimension reduction" do
|
73
|
-
oh = Biopsy::ObjectiveHandler.new @
|
70
|
+
oh = Biopsy::ObjectiveHandler.new @target
|
74
71
|
results = {
|
75
72
|
:a => {
|
76
73
|
:optimum => 100,
|
data/test/test_settings.rb
CHANGED
@@ -6,8 +6,7 @@ class TestSettings < Test::Unit::TestCase
|
|
6
6
|
|
7
7
|
setup do
|
8
8
|
@data = {
|
9
|
-
:
|
10
|
-
:objectives_dir => './objectives',
|
9
|
+
:objectives_dir => './objectives'
|
11
10
|
}
|
12
11
|
@config_file = File.expand_path 'testconfig.yml'
|
13
12
|
@settings = Biopsy::Settings.instance
|
@@ -22,7 +21,6 @@ class TestSettings < Test::Unit::TestCase
|
|
22
21
|
end
|
23
22
|
|
24
23
|
should "load the specified config file" do
|
25
|
-
assert @settings.domain == @data[:domain]
|
26
24
|
assert @settings.objectives_dir == @data[:objectives_dir]
|
27
25
|
end
|
28
26
|
|
@@ -50,25 +48,18 @@ class TestSettings < Test::Unit::TestCase
|
|
50
48
|
end
|
51
49
|
|
52
50
|
should "make loaded settings available as methods" do
|
53
|
-
assert @settings.domain == @data[:domain], 'domain key not loaded as method'
|
54
51
|
assert @settings.objectives_dir == @data[:objectives_dir], 'objectives_dir key not loaded as method'
|
55
52
|
end
|
56
53
|
|
57
54
|
should "produce a YAML string representation" do
|
58
55
|
s = @settings.to_s
|
59
56
|
h = YAML.load(s)
|
60
|
-
|
57
|
+
h.each_pair do |key, value|
|
61
58
|
varname = "@#{key.to_s}".to_sym
|
62
59
|
assert_equal value, @settings.instance_variable_get(varname)
|
63
60
|
end
|
64
61
|
end
|
65
62
|
|
66
|
-
should "error when a non-existent config is requested" do
|
67
|
-
assert_raise Biopsy::SettingsError do
|
68
|
-
@settings.locate_config :fake_key, 'blah'
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
63
|
end # RunHandler context
|
73
64
|
|
74
65
|
end # TestRunHandler
|
data/test/test_target.rb
CHANGED
@@ -10,15 +10,10 @@ class TestTarget < Test::Unit::TestCase
|
|
10
10
|
@h = Helper.new
|
11
11
|
@h.setup_tmp_dir
|
12
12
|
|
13
|
-
# we need a domain
|
14
|
-
@h.setup_domain
|
15
|
-
domain_name = @h.create_valid_domain
|
16
|
-
@domain = Biopsy::Domain.new domain_name
|
17
|
-
|
18
13
|
# and a target
|
19
14
|
@h.setup_target
|
20
15
|
target_name = @h.create_valid_target
|
21
|
-
@target = Biopsy::Target.new
|
16
|
+
@target = Biopsy::Target.new
|
22
17
|
@target.load_by_name target_name
|
23
18
|
end
|
24
19
|
|
@@ -36,7 +31,9 @@ class TestTarget < Test::Unit::TestCase
|
|
36
31
|
end
|
37
32
|
|
38
33
|
should "fail to find a non-existent definition" do
|
39
|
-
|
34
|
+
assert_raise Biopsy::TargetLoadError do
|
35
|
+
@target.locate_definition('not_real')
|
36
|
+
end
|
40
37
|
end
|
41
38
|
|
42
39
|
should "reject any invalid config" do
|
@@ -57,17 +54,29 @@ class TestTarget < Test::Unit::TestCase
|
|
57
54
|
end
|
58
55
|
end
|
59
56
|
|
60
|
-
should "reject a config that doesn't match the domain spec" do
|
61
|
-
d = @h.target_data
|
62
|
-
d[:input_files][:fake] = 'another.file'
|
63
|
-
assert @target.validate_config(d).length > 0
|
64
|
-
end
|
65
|
-
|
66
57
|
should "be able to store a loaded config file" do
|
67
58
|
config = YAML::load_file(@h.target_path).deep_symbolize
|
68
59
|
@target.store_config config
|
69
60
|
@h.target_data.each_pair do |key, value|
|
70
|
-
|
61
|
+
if key == :parameters
|
62
|
+
parsed = {}
|
63
|
+
value.each_pair do |param, spec|
|
64
|
+
if spec[:min] && spec[:max]
|
65
|
+
r = (spec[:min]..spec[:max])
|
66
|
+
r = spec[:step] ? r.step(spec[:step]) : r
|
67
|
+
parsed[param] = r.to_a
|
68
|
+
elsif spec[:values]
|
69
|
+
parsed[param] = spec[:values]
|
70
|
+
else
|
71
|
+
assert false, "parameter #{param} with spec #{spec} has no range or values"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
parsed.each_pair do |param, spec|
|
75
|
+
assert_equal spec, @target.parameters[param]
|
76
|
+
end
|
77
|
+
else
|
78
|
+
assert_equal value, @target.instance_variable_get('@' + key.to_s)
|
79
|
+
end
|
71
80
|
end
|
72
81
|
end
|
73
82
|
|
@@ -75,13 +84,15 @@ class TestTarget < Test::Unit::TestCase
|
|
75
84
|
config = YAML::load_file(@h.target_path).deep_symbolize
|
76
85
|
@target.store_config config
|
77
86
|
|
78
|
-
|
87
|
+
assert_raise Biopsy::TargetLoadError do
|
88
|
+
@target.check_constructor('target_missing')
|
89
|
+
end
|
79
90
|
|
80
|
-
File.open(@
|
91
|
+
File.open(@target.constructor_path, 'w') do |f|
|
81
92
|
f.puts '[x**2 for x in range(10)]' # python :)
|
82
93
|
end
|
83
|
-
assert !@target.check_constructor, "invalid ruby is invalid"
|
84
|
-
File.delete @
|
94
|
+
assert !@target.check_constructor('target_test'), "invalid ruby is invalid"
|
95
|
+
File.delete @target.constructor_path
|
85
96
|
end
|
86
97
|
|
87
98
|
end # Target context
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: biopsy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
5
|
-
prerelease: 6
|
4
|
+
version: 0.1.1.alpha
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Richard Smith
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-09-
|
11
|
+
date: 2013-09-18 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,103 +27,90 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: threach
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rubystats
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: statsample
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: turn
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: simplecov
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - '>='
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - '>='
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: shoulda-context
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - '>='
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: '0'
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- -
|
108
|
+
- - '>='
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: '0'
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
112
|
name: coveralls
|
128
113
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
114
|
requirements:
|
131
115
|
- - ~>
|
132
116
|
- !ruby/object:Gem::Version
|
@@ -134,7 +118,6 @@ dependencies:
|
|
134
118
|
type: :development
|
135
119
|
prerelease: false
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
121
|
requirements:
|
139
122
|
- - ~>
|
140
123
|
- !ruby/object:Gem::Version
|
@@ -146,53 +129,50 @@ extensions: []
|
|
146
129
|
extra_rdoc_files: []
|
147
130
|
files:
|
148
131
|
- Rakefile
|
149
|
-
- lib/biopsy/
|
150
|
-
- lib/biopsy/domain.rb
|
151
|
-
- lib/biopsy/experiment.rb
|
152
|
-
- lib/biopsy/objective_function.rb
|
132
|
+
- lib/biopsy/version.rb
|
153
133
|
- lib/biopsy/objective_handler.rb
|
134
|
+
- lib/biopsy/settings.rb
|
135
|
+
- lib/biopsy/base_extensions.rb
|
136
|
+
- lib/biopsy/target.rb
|
154
137
|
- lib/biopsy/objectives/fastest_optimum.rb
|
138
|
+
- lib/biopsy/experiment.rb
|
155
139
|
- lib/biopsy/opt_algorithm.rb
|
156
|
-
- lib/biopsy/
|
157
|
-
- lib/biopsy/optimisers/parameter_sweeper.rb
|
140
|
+
- lib/biopsy/objective_function.rb
|
158
141
|
- lib/biopsy/optimisers/tabu_search.rb
|
159
|
-
- lib/biopsy/
|
160
|
-
- lib/biopsy/
|
161
|
-
- lib/biopsy/version.rb
|
142
|
+
- lib/biopsy/optimisers/parameter_sweeper.rb
|
143
|
+
- lib/biopsy/optimisers/genetic_algorithm.rb
|
162
144
|
- lib/biopsy.rb
|
163
|
-
- test/helper.rb
|
164
|
-
- test/test_domain.rb
|
165
|
-
- test/test_experiment.rb
|
166
|
-
- test/test_file.rb
|
167
|
-
- test/test_hash.rb
|
168
|
-
- test/test_objective_handler.rb
|
169
145
|
- test/test_settings.rb
|
170
146
|
- test/test_string.rb
|
147
|
+
- test/helper.rb
|
148
|
+
- test/test_objective_handler.rb
|
149
|
+
- test/test_file.rb
|
171
150
|
- test/test_target.rb
|
151
|
+
- test/test_hash.rb
|
152
|
+
- test/test_experiment.rb
|
172
153
|
- README.md
|
173
154
|
- LICENSE.txt
|
174
155
|
homepage: https://github.com/Blahah/biopsy
|
175
156
|
licenses: []
|
157
|
+
metadata: {}
|
176
158
|
post_install_message:
|
177
159
|
rdoc_options: []
|
178
160
|
require_paths:
|
179
161
|
- lib
|
180
162
|
required_ruby_version: !ruby/object:Gem::Requirement
|
181
|
-
none: false
|
182
163
|
requirements:
|
183
|
-
- -
|
164
|
+
- - '>='
|
184
165
|
- !ruby/object:Gem::Version
|
185
166
|
version: '0'
|
186
167
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
187
|
-
none: false
|
188
168
|
requirements:
|
189
|
-
- -
|
169
|
+
- - '>'
|
190
170
|
- !ruby/object:Gem::Version
|
191
171
|
version: 1.3.1
|
192
172
|
requirements: []
|
193
173
|
rubyforge_project:
|
194
|
-
rubygems_version:
|
174
|
+
rubygems_version: 2.0.3
|
195
175
|
signing_key:
|
196
|
-
specification_version:
|
176
|
+
specification_version: 4
|
197
177
|
summary: framework for optimising any computational pipeline or program
|
198
178
|
test_files: []
|