netica 0.0.21-java → 1.0.0.pre-java

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 231e9845a73e728268cbc2db7801e44cf3d46c68
4
+ data.tar.gz: 30512cdcf0a3573a8dfe1c7f5f7546442a87fc14
5
+ SHA512:
6
+ metadata.gz: d834a08e817f3e579c14906fb70f08680c8f0ab52772757ace63be7293f507f37e863e1127b7b028653e495851c21c5ae24b8e525b2e78a76c6979076f0d56aa
7
+ data.tar.gz: 16ed7f4c125df781c6b206dd8207db5e8fc22892f6ddde12d37f344b8ec58be691ef6923b6948e894d361e7a9fc1646e44fd60e86ce84d69ef0ce24f72b80690
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- jruby-1.7.3
1
+ jruby-1.7.9
data/README.md CHANGED
@@ -67,9 +67,11 @@ Then, re-read the value of the Belief node.
67
67
 
68
68
  ## Release Notes
69
69
 
70
- ### Version 0.0.21
70
+ ### Version 1.0.0.pre
71
71
 
72
- Search multiple locations for NeticaJ.jar.
72
+ * Split ActiveNetwork's out-of-process storage and retrieval methods into a new subclass, StorableNetwork.
73
+ * Add filename parameter to StorableNetwork#find, allowing a stored network's .dne file to be updated.
74
+ * Built and tested with JRuby 1.7.9
73
75
 
74
76
  ### Version 0.0.20
75
77
 
@@ -0,0 +1,110 @@
1
+ // ~->[DNET-1]->~
2
+
3
+ // File created by an unlicensed user using Netica 5.04 on 10/01/12 at 20:20:06.
4
+
5
+ bnet ChestClinic {
6
+ autoupdate = FALSE;
7
+
8
+ node VisitAntarctica {
9
+ kind = NATURE;
10
+ discrete = TRUE;
11
+ chance = CHANCE;
12
+ states = (visit, no_visit);
13
+ statetitles = ("Visited Antarctica within the last 3 years", );
14
+ parents = ();
15
+ probs =
16
+ // Visited Antarctica wit no visit
17
+ (0.01, 0.99);
18
+ title = "Visit to Antarctica";
19
+ };
20
+
21
+ node Tuberculosis {
22
+ kind = NATURE;
23
+ discrete = TRUE;
24
+ chance = CHANCE;
25
+ states = (present, absent);
26
+ parents = (VisitAntarctica);
27
+ probs =
28
+ // present absent // VisitAntarctica
29
+ (0.05, 0.95, // Visited Antarctica wit
30
+ 0.01, 0.99); // no visit ;
31
+ };
32
+
33
+ node Smoking {
34
+ kind = NATURE;
35
+ discrete = TRUE;
36
+ chance = CHANCE;
37
+ states = (smoker, nonsmoker);
38
+ parents = ();
39
+ probs =
40
+ // smoker nonsmoker
41
+ (0.5, 0.5);
42
+ };
43
+
44
+ node Cancer {
45
+ kind = NATURE;
46
+ discrete = TRUE;
47
+ chance = CHANCE;
48
+ states = (present, absent);
49
+ parents = (Smoking);
50
+ probs =
51
+ // present absent // Smoking
52
+ (0.1, 0.9, // smoker
53
+ 0.01, 0.99); // nonsmoker ;
54
+ title = "Lung Cancer";
55
+ };
56
+
57
+ node TbOrCa {
58
+ kind = NATURE;
59
+ discrete = TRUE;
60
+ chance = DETERMIN;
61
+ states = (true, false);
62
+ parents = (Tuberculosis, Cancer);
63
+ functable =
64
+ // Tuberculosis Cancer
65
+ (true, // present present
66
+ true, // present absent
67
+ true, // absent present
68
+ false); // absent absent ;
69
+ equation = "TbOrCa (Tuberculosis, Cancer) = Tuberculosis || Cancer";
70
+ title = "Tuberculosis or Cancer";
71
+ };
72
+
73
+ node XRay {
74
+ kind = NATURE;
75
+ discrete = TRUE;
76
+ chance = CHANCE;
77
+ states = (abnormal, normal);
78
+ parents = (TbOrCa);
79
+ probs =
80
+ // abnormal normal // TbOrCa
81
+ (0.98, 0.02, // true
82
+ 0.05, 0.95); // false ;
83
+ };
84
+
85
+ node Bronchitis {
86
+ kind = NATURE;
87
+ discrete = TRUE;
88
+ chance = CHANCE;
89
+ states = (present, absent);
90
+ parents = (Smoking);
91
+ probs =
92
+ // present absent // Smoking
93
+ (0.6, 0.4, // smoker
94
+ 0.3, 0.7); // nonsmoker ;
95
+ };
96
+
97
+ node Dyspnea {
98
+ kind = NATURE;
99
+ discrete = TRUE;
100
+ chance = CHANCE;
101
+ states = (present, absent);
102
+ parents = (TbOrCa, Bronchitis);
103
+ probs =
104
+ // present absent // TbOrCa Bronchitis
105
+ (0.9, 0.1, // true present
106
+ 0.7, 0.3, // true absent
107
+ 0.8, 0.2, // false present
108
+ 0.1, 0.9); // false absent ;
109
+ };
110
+ };
data/lib/netica.rb CHANGED
@@ -1,20 +1,5 @@
1
1
  require 'java'
2
-
3
- loaded_netica_j = false
4
-
5
- locations = ['/Library/Java/Extensions/NeticaJ.jar', '/System/Library/Java/Extensions/NeticaJ.jar', '/usr/lib/java/NeticaJ.jar', '/lib/NeticaJ.jar']
6
- locations.each do |fname|
7
- if !loaded_netica_j && File.exists?(fname)
8
- begin
9
- require fname
10
- loaded_netica_j = true
11
- rescue LoadError
12
- puts "NeticaJ.jar not found at '#{fname}'"
13
- end
14
- end
15
- end
16
-
17
- raise "NeticaJ library files not found in #{locations}. See https://github.com/disruptive/netica for installation instructions." unless loaded_netica_j
2
+ require '/lib/NeticaJ.jar'
18
3
 
19
4
  require "netica/version"
20
5
  require "netica/environ"
@@ -24,6 +9,7 @@ require "netica/node"
24
9
  require "netica/node_list"
25
10
  require "netica/bayes_network"
26
11
  require "netica/active_network"
12
+ require "netica/storable_network"
27
13
  require "netica/java_library_path"
28
14
 
29
15
  module Netica
@@ -6,7 +6,7 @@ module Netica
6
6
  class ActiveNetwork::NodeNotFound < RuntimeError; end
7
7
  class ActiveNetwork::NetworkNotFound < RuntimeError; end
8
8
 
9
- attr_accessor :network, :token, :created_at, :updated_at, :reloaded_at, :in_use
9
+ attr_accessor :network, :token, :created_at, :updated_at, :reloaded_at, :in_use, :filepath
10
10
 
11
11
  def initialize(token, filepath = nil)
12
12
  Netica::NeticaLogger.info "Initializing #{self.class} for #{token}."
@@ -16,7 +16,8 @@ module Netica
16
16
  self.in_use = false
17
17
 
18
18
  if filepath
19
- self.network = BayesNetwork.new(filepath)
19
+ self.filepath = filepath
20
+ self.network = BayesNetwork.new(filepath)
20
21
  end
21
22
  processor = Netica::Environment.instance
22
23
  processor.active_networks << self
@@ -58,21 +59,11 @@ module Netica
58
59
  }
59
60
  end
60
61
 
61
- # Save ActiveNetwork to an associated redis store, if one is defined.
62
- #
63
- # @return [true,false,nil] outcome of redis.set, or nil if redis is not found
64
- def save
65
- if Netica::Environment.instance.redis
66
- return Netica::Environment.instance.redis.set(token, JSON.dump(state))
67
- end
68
- end
69
-
70
62
  # Retrieve ActiveNetwork from current Netica Environment instance
71
- # or an associated redis store, if one is defined.
72
63
  #
73
64
  # @param token [String] identifying token for ActiveNetwork sought
74
65
  # @return [ActiveNetwork] ActiveNetwork object found
75
- def self.find(token, load_from_storage = true)
66
+ def self.find(token)
76
67
  environment = Netica::Environment.instance
77
68
  Netica::NeticaLogger.info "Searching in #{environment.network_container.class} #{environment.network_container.object_id} (length: #{environment.network_container.length}) for #{token}."
78
69
  environment.network_container.each do |an|
@@ -85,62 +76,31 @@ module Netica
85
76
  end
86
77
  end
87
78
  Netica::NeticaLogger.info "Network #{token} not found in current instance #{environment.object_id}."
88
- if Netica::Environment.instance.redis
89
- stored_state = Netica::Environment.instance.redis.get(token)
90
- if stored_state && load_from_storage
91
- hash = JSON.parse(stored_state)
92
- active_network = Object.const_get(hash['class']).new(token)
93
- active_network.load_from_saved_state(hash)
94
- Netica::NeticaLogger.info "Network #{token} reloaded from saved state: #{hash}"
95
- return active_network
96
- elsif stored_state
97
- return stored_state
98
- else
99
- Netica::NeticaLogger.info "Network #{token} not found in redis."
100
- end
101
- end
102
79
  return nil
103
80
  end
104
81
 
105
82
  # Destroy the ActiveNetwork
106
83
  #
107
- # @param memory [Boolean] destroy the in-memory object?, default is `true`
108
- # @param storage [Boolean] destroy object in redis?, default is `true`
109
- # @return [Hash] outcome of deletion attempts per storage location
110
- def destroy(memory = true, storage = true)
111
- outcome = { token: token, deletion: { memory: nil, redis: nil}}
84
+ # @return [Hash] outcome of deletion attempt
85
+ def destroy
86
+ outcome = { token: token, deletion: { memory: nil }}
112
87
  environment = Netica::Environment.instance
113
-
114
- if memory
115
- rejection = environment.network_container.reject!{|network| network.token == token}
116
- outcome[:deletion][:memory] = rejection.is_a?(Array)
117
- end
118
-
119
- if environment.redis && storage == true
120
- outcome[:deletion][:redis] = (environment.redis.del(token) > 0)
121
- end
88
+ rejection = environment.network_container.reject!{|network| network.token == token}
89
+ outcome[:deletion][:memory] = rejection.is_a?(Array)
122
90
  outcome
123
91
  end
124
92
 
125
- # Destroy a saved network
126
- #
127
- # @return [Hash] outcome of deletion attempts per storage location
128
- def self.destroy_by_token(token)
129
- outcome = { token: token, deletion: { memory: nil, redis: nil}}
130
- environment = Netica::Environment.instance
131
-
132
- if environment.redis
133
- outcome[:deletion][:redis] = (environment.redis.del(token) > 0)
134
- end
135
-
136
- outcome
137
- end
138
93
 
139
- # Load ActiveNetwork from a saved state
94
+ # Load ActiveNetwork from a Hash
140
95
  #
141
96
  # @param hash [Hash] network state to be restored
142
97
  def load_from_saved_state(hash)
143
- self.network = BayesNetwork.new(hash["network"]["dne_file_path"])
98
+ if filepath
99
+ self.network = BayesNetwork.new(filepath)
100
+ else
101
+ self.filepath = hash["network"]["dne_file_path"]
102
+ self.network = BayesNetwork.new(hash["network"]["dne_file_path"])
103
+ end
144
104
  self.reloaded_at = Time.now
145
105
  self.network.load_from_state(hash["network"])
146
106
  end
@@ -42,11 +42,16 @@ module Netica
42
42
  end
43
43
 
44
44
  def load_from_state(network_hash)
45
- Netica::NeticaLogger.info "Loading state from network_hash => #{network_hash}"
46
45
  network_hash["decision_nodes"].each do |node_name, node_value|
47
46
  Netica::NeticaLogger.info "Setting #{node_name} => #{node_value}"
48
47
  node(node_name).value = node_value
49
48
  end
49
+
50
+ network_hash["nature_nodes"].each do |node_name, node_value_hash|
51
+ next unless node_name == 'XRay'
52
+ Netica::NeticaLogger.info "Setting #{node_name} => #{node_value_hash}"
53
+ node(node_name).value = node_value_hash
54
+ end
50
55
  end
51
56
 
52
57
  def state
data/lib/netica/node.rb CHANGED
@@ -65,7 +65,16 @@ class Java::NorsysNetica::Node
65
65
  finding().setReal(new_value)
66
66
  elsif nature_node?
67
67
  Netica::NeticaLogger.info "Nature Node: Setting #{kind} #{type} node #{self.name} to #{new_value}"
68
- finding.enterState(new_value)
68
+ if new_value.is_a?(Hash)
69
+ value_array = []
70
+ states.each do |s|
71
+ value_array << new_value[s.name]
72
+ end
73
+ finding().enter_likelihood(value_array)
74
+ else
75
+ finding.enterState(new_value)
76
+ end
77
+ Netica::NeticaLogger.info beliefs
69
78
  else
70
79
  throw "Could not set value for #{kind} #{type} node #{self.name} to #{new_value}"
71
80
  end
@@ -0,0 +1,74 @@
1
+ # provides a persistable object container for a Netica Bayes net.
2
+ class StorableNetwork < Netica::ActiveNetwork
3
+
4
+ # Save StorableNetwork to an associated redis store, if one is defined.
5
+ #
6
+ # @return [true,false,nil] outcome of redis.set, or nil if redis is not found
7
+ def save
8
+ if Netica::Environment.instance.redis
9
+ return Netica::Environment.instance.redis.set(token, JSON.dump(state))
10
+ end
11
+ end
12
+
13
+ # Retrieve ActiveNetwork from current Netica Environment instance
14
+ # or an associated redis store, if one is defined.
15
+ #
16
+ # @param token [String] identifying token for ActiveNetwork sought
17
+ # @return [ActiveNetwork] ActiveNetwork object found
18
+ def self.find(token, load_from_storage = true, filepath = nil)
19
+ environment = Netica::Environment.instance
20
+ redis = environment.redis
21
+ found_network = super(token)
22
+ if found_network.nil? && redis
23
+ stored_state = redis.get(token)
24
+ if stored_state && load_from_storage
25
+ hash = JSON.parse(stored_state)
26
+ found_network = Object::const_get(hash['class']).new(token)
27
+ found_network.filepath = filepath
28
+ found_network.load_from_saved_state(hash)
29
+ Netica::NeticaLogger.info "Network #{token} reloaded from saved state: #{hash}"
30
+ Netica::NeticaLogger.info "#{token} reloaded state: #{found_network.state}"
31
+ return found_network
32
+ elsif stored_state
33
+ return stored_state
34
+ else
35
+ Netica::NeticaLogger.info "Network #{token} not found in redis."
36
+ end
37
+ end
38
+ return nil
39
+ end
40
+
41
+ # Destroy the ActiveNetwork
42
+ #
43
+ # @param memory [Boolean] destroy the in-memory object?, default is `true`
44
+ # @param storage [Boolean] destroy object in redis?, default is `true`
45
+ # @return [Hash] outcome of deletion attempts per storage location
46
+ def destroy(memory = true, storage = true)
47
+ outcome = { token: token, deletion: { memory: nil, redis: nil}}
48
+ environment = Netica::Environment.instance
49
+
50
+ if memory
51
+ rejection = environment.network_container.reject!{|network| network.token == token}
52
+ outcome[:deletion][:memory] = rejection.is_a?(Array)
53
+ end
54
+
55
+ if environment.redis && storage == true
56
+ outcome[:deletion][:redis] = (environment.redis.del(token) > 0)
57
+ end
58
+ outcome
59
+ end
60
+
61
+ # Destroy a saved network
62
+ #
63
+ # @return [Hash] outcome of deletion attempts per storage location
64
+ def self.destroy_by_token(token)
65
+ outcome = { token: token, deletion: { memory: nil, redis: nil}}
66
+ environment = Netica::Environment.instance
67
+
68
+ if environment.redis
69
+ outcome[:deletion][:redis] = (environment.redis.del(token) > 0)
70
+ end
71
+
72
+ outcome
73
+ end
74
+ end
@@ -1,3 +1,3 @@
1
1
  module Netica
2
- VERSION = "0.0.21"
2
+ VERSION = "1.0.0.pre"
3
3
  end
@@ -31,7 +31,7 @@ describe Netica::ActiveNetwork do
31
31
  end
32
32
 
33
33
  it "should be returned when searched for" do
34
- Netica::ActiveNetwork.find("fake_token_identifier", false).should === @active_network
34
+ Netica::ActiveNetwork.find("fake_token_identifier").should === @active_network
35
35
  end
36
36
 
37
37
  context "the tuberculosis node" do
@@ -49,67 +49,8 @@ describe Netica::ActiveNetwork do
49
49
  Netica::Environment.instance.active_networks.length.should eq(1)
50
50
  outcome = @active_network.destroy
51
51
  outcome[:deletion][:memory].should be_true
52
- outcome[:deletion][:redis].should be_nil
53
52
  Netica::Environment.instance.active_networks.length.should eq(0)
54
53
  end
55
54
  end
56
55
  end
57
-
58
- context "with redis" do
59
- before(:all) do
60
- Java::NorsysNetica::Environ.__persistent__ = true
61
- redis_settings = { :redis => { :host => "127.0.0.1", :port => 6379 }}
62
- Netica::Environment.engage(redis_settings)
63
- @redis = Redis.new(redis_settings)
64
- end
65
-
66
- after(:all) do
67
- Netica::Environment.instance.processor.finalize
68
- end
69
-
70
- context "with ChestClinic.dne" do
71
- before(:all) do
72
- @active_network = Netica::ActiveNetwork.new("fake_token_identifier", "#{File.dirname(__FILE__)}/../../examples/ChestClinic.dne")
73
- @active_network_token = @active_network.token
74
- end
75
-
76
- describe "#save" do
77
- it "should be savable" do
78
- @redis.get(@active_network_token).should be_nil
79
- @active_network.save
80
- @redis.get(@active_network_token).should_not be_nil
81
- end
82
- end
83
-
84
- describe "#destroy" do
85
- it "should be deletable" do
86
- Netica::Environment.instance.active_networks.length.should eq(1)
87
- @redis.get(@active_network_token).should_not be_nil
88
- outcome = @active_network.destroy
89
- outcome[:deletion][:memory].should be_true
90
- outcome[:deletion][:redis].should be_true
91
- @redis.get(@active_network_token).should be_nil
92
- Netica::Environment.instance.active_networks.length.should eq(0)
93
- end
94
- end
95
-
96
- describe "#destroy_by_token" do
97
- context "A stored active network" do
98
- it "should be deletable" do
99
- @active_network.save
100
- @active_network.destroy(true, false)
101
- @redis.get(@active_network_token).should be_true
102
-
103
- outcome = Netica::ActiveNetwork.destroy_by_token(@active_network_token)
104
- outcome[:deletion][:memory].should be_nil
105
- outcome[:deletion][:redis].should be_true
106
-
107
- @redis.get(@active_network_token).should be_nil
108
- Netica::Environment.instance.active_networks.length.should eq(0)
109
- end
110
- end
111
- end
112
- end
113
- end
114
56
  end
115
-
@@ -0,0 +1,87 @@
1
+ require 'spec_helper'
2
+
3
+ describe StorableNetwork do
4
+ context "with redis" do
5
+ before(:all) do
6
+ Java::NorsysNetica::Environ.__persistent__ = true
7
+ redis_settings = { :redis => { :host => "127.0.0.1", :port => 6379 }}
8
+ Netica::Environment.engage(redis_settings)
9
+ @redis = Redis.new(redis_settings)
10
+ end
11
+
12
+ after(:all) do
13
+ Netica::Environment.instance.processor.finalize
14
+ end
15
+
16
+ context "with ChestClinic.dne" do
17
+ before(:all) do
18
+ @active_network = StorableNetwork.new("storable_fake_token_identifier", "#{File.dirname(__FILE__)}/../../examples/ChestClinic.dne")
19
+ @active_network_token = @active_network.token
20
+ end
21
+
22
+ after(:all) do
23
+ @redis.del("storable_fake_token_identifier")
24
+ end
25
+
26
+ describe "#save" do
27
+ it "should be savable" do
28
+ @redis.get(@active_network_token).should be_nil
29
+ @active_network.save
30
+ @redis.get(@active_network_token).should_not be_nil
31
+ end
32
+ end
33
+
34
+ describe "#destroy" do
35
+ it "should be deletable" do
36
+ Netica::Environment.instance.active_networks.length.should eq(1)
37
+ @redis.get(@active_network_token).should_not be_nil
38
+ outcome = @active_network.destroy
39
+ outcome[:deletion][:memory].should be_true
40
+ outcome[:deletion][:redis].should be_true
41
+ @redis.get(@active_network_token).should be_nil
42
+ Netica::Environment.instance.active_networks.length.should eq(0)
43
+ end
44
+ end
45
+
46
+ describe "#destroy_by_token" do
47
+ context "A stored active network" do
48
+ it "should be deletable" do
49
+ @active_network.save
50
+ @active_network.destroy(true, false)
51
+ @redis.get(@active_network_token).should be_true
52
+
53
+ outcome = StorableNetwork.destroy_by_token(@active_network_token)
54
+ outcome[:deletion][:memory].should be_nil
55
+ outcome[:deletion][:redis].should be_true
56
+
57
+ @redis.get(@active_network_token).should be_nil
58
+ Netica::Environment.instance.active_networks.length.should eq(0)
59
+ end
60
+ end
61
+ end
62
+
63
+ describe "#find" do
64
+ it "should be reloadable" do
65
+ @active_network.network.node("Tuberculosis").value("present").should be_less_than 0.011
66
+ @active_network.network.node("XRay").value = "abnormal"
67
+
68
+ @active_network.network.node("Tuberculosis").value("present").should be_greater_than 0.092
69
+ @active_network.save
70
+
71
+ @active_network.destroy(true, false)
72
+
73
+ Netica::Environment.instance.active_networks.length.should eq(0)
74
+
75
+ @reloaded_network = StorableNetwork.find(@active_network_token, true)
76
+ Netica::Environment.instance.active_networks.length.should eq(1)
77
+
78
+ @reloaded_network.network.node("Tuberculosis").value("present").should be_greater_than 0.092
79
+
80
+ @reloaded_network.destroy
81
+ Netica::Environment.instance.active_networks.length.should eq(0)
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
87
+
metadata CHANGED
@@ -1,32 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: netica
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.0.21
4
+ version: 1.0.0.pre
6
5
  platform: java
7
6
  authors:
8
7
  - Jerry Richardson
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-06-03 00:00:00.000000000 Z
11
+ date: 2013-12-30 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: redis
16
15
  version_requirements: !ruby/object:Gem::Requirement
17
16
  requirements:
18
- - - ">="
17
+ - - '>='
19
18
  - !ruby/object:Gem::Version
20
- version: !binary |-
21
- MA==
22
- none: false
19
+ version: '0'
23
20
  requirement: !ruby/object:Gem::Requirement
24
21
  requirements:
25
- - - ">="
22
+ - - '>='
26
23
  - !ruby/object:Gem::Version
27
- version: !binary |-
28
- MA==
29
- none: false
24
+ version: '0'
30
25
  prerelease: false
31
26
  type: :development
32
27
  description: Netica Bayes Network Management
@@ -36,15 +31,16 @@ executables: []
36
31
  extensions: []
37
32
  extra_rdoc_files: []
38
33
  files:
39
- - ".gitignore"
40
- - ".rspec"
41
- - ".ruby-version"
34
+ - .gitignore
35
+ - .rspec
36
+ - .ruby-version
42
37
  - CONTRIBUTING.md
43
38
  - Gemfile
44
39
  - LICENSE.txt
45
40
  - README.md
46
41
  - Rakefile
47
42
  - examples/ChestClinic.dne
43
+ - examples/ChestClinicv2.dne
48
44
  - examples/chest_clinic.rb
49
45
  - lib/netica.rb
50
46
  - lib/netica/active_network.rb
@@ -57,43 +53,43 @@ files:
57
53
  - lib/netica/node_list.rb
58
54
  - lib/netica/railtie.rb
59
55
  - lib/netica/state.rb
56
+ - lib/netica/storable_network.rb
60
57
  - lib/netica/version.rb
61
58
  - lib/tasks/netica.rake
62
59
  - log/.gitignore
63
60
  - netica.gemspec
64
61
  - spec/netica/active_network_spec.rb
65
62
  - spec/netica/environment_spec.rb
63
+ - spec/netica/storable_network_spec.rb
66
64
  - spec/netica_spec.rb
67
65
  - spec/spec_helper.rb
68
66
  homepage: http://disruptive.github.io/netica/
69
67
  licenses:
70
68
  - MIT
69
+ metadata: {}
71
70
  post_install_message:
72
71
  rdoc_options: []
73
72
  require_paths:
74
73
  - lib
75
74
  required_ruby_version: !ruby/object:Gem::Requirement
76
75
  requirements:
77
- - - ">="
76
+ - - '>='
78
77
  - !ruby/object:Gem::Version
79
- version: !binary |-
80
- MA==
81
- none: false
78
+ version: '0'
82
79
  required_rubygems_version: !ruby/object:Gem::Requirement
83
80
  requirements:
84
- - - ">="
81
+ - - '>'
85
82
  - !ruby/object:Gem::Version
86
- version: !binary |-
87
- MA==
88
- none: false
83
+ version: 1.3.1
89
84
  requirements: []
90
85
  rubyforge_project:
91
- rubygems_version: 1.8.24
86
+ rubygems_version: 2.1.9
92
87
  signing_key:
93
- specification_version: 3
88
+ specification_version: 4
94
89
  summary: Tools to manage Bayes Networks with the NeticaJ API
95
90
  test_files:
96
91
  - spec/netica/active_network_spec.rb
97
92
  - spec/netica/environment_spec.rb
93
+ - spec/netica/storable_network_spec.rb
98
94
  - spec/netica_spec.rb
99
95
  - spec/spec_helper.rb