netica 0.0.10-java → 0.0.15-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.
data/lib/netica.rb CHANGED
@@ -2,6 +2,7 @@ require 'java'
2
2
  require '/lib/NeticaJ.jar'
3
3
 
4
4
  require "netica/version"
5
+ require "netica/environ"
5
6
  require "netica/environment"
6
7
  require "netica/netica_logger"
7
8
  require "netica/node"
@@ -10,9 +11,8 @@ require "netica/bayes_network"
10
11
  require "netica/active_network"
11
12
  require "netica/java_library_path"
12
13
 
13
- Java::NorsysNetica::Environ.__persistent__ = true
14
-
15
14
  module Netica
16
15
  include_package "norsys.netica"
16
+ Java::NorsysNetica::Environ.__persistent__ = true
17
17
  require "netica/railtie" if defined?(Rails)
18
18
  end
@@ -6,13 +6,15 @@ 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
9
+ attr_accessor :network, :token, :created_at, :updated_at, :reloaded_at, :in_use
10
10
 
11
11
  def initialize(token, filepath = nil)
12
- Netica::NeticaLogger.info "initializing active network for #{token}"
12
+ Netica::NeticaLogger.info "Initializing #{self.class} for #{token}."
13
13
  self.created_at = Time.now
14
14
  self.updated_at = Time.now
15
- self.token = token
15
+ self.token = token
16
+ self.in_use = false
17
+
16
18
  if filepath
17
19
  self.network = BayesNetwork.new(filepath)
18
20
  end
@@ -36,7 +38,7 @@ module Netica
36
38
  self.updated_at = Time.now
37
39
  return node.incr()
38
40
  else
39
- raise ActiveNetwork::NodeNotFound
41
+ raise ActiveNetwork::NodeNotFound, "Node #{nodeName} not found in network."
40
42
  end
41
43
  else
42
44
  raise ActiveNetwork::NetworkNotFound
@@ -71,10 +73,18 @@ module Netica
71
73
  # @param token [String] identifying token for ActiveNetwork sought
72
74
  # @return [ActiveNetwork] ActiveNetwork object found
73
75
  def self.find(token)
74
- Netica::Environment.instance.active_networks.each do |an|
75
- return an if an.token == token
76
+ environment = Netica::Environment.instance
77
+ Netica::NeticaLogger.info "Searching in #{environment.network_container.class} #{environment.network_container.object_id} (length: #{environment.network_container.length}) for #{token}."
78
+ environment.network_container.each do |an|
79
+ if an.token == token
80
+ until !an.in_use
81
+ Netica::NeticaLogger.info "Network #{token} is locked."
82
+ wait 1000
83
+ end
84
+ return an
85
+ end
76
86
  end
77
- Netica::NeticaLogger.info "Network #{token} not found in current instance."
87
+ Netica::NeticaLogger.info "Network #{token} not found in current instance #{environment.object_id}."
78
88
  if Netica::Environment.instance.redis
79
89
  stored_state = Netica::Environment.instance.redis.get(token)
80
90
  if stored_state
@@ -0,0 +1,11 @@
1
+ class Java::NorsysNetica::Environ
2
+ @@active_networks = []
3
+
4
+ # define_method('active_networks') do
5
+ # return @@active_networks
6
+ # end
7
+
8
+ def active_networks
9
+ return @@active_networks
10
+ end
11
+ end
@@ -4,9 +4,8 @@ require 'redis'
4
4
  module Netica
5
5
  class Environment
6
6
  include Singleton
7
-
8
- @@active_networks = []
9
- @@explorations = []
7
+
8
+ @@network_container = []
10
9
  @@processor = nil
11
10
  @@redis = nil
12
11
  @@logfile = nil
@@ -26,9 +25,19 @@ module Netica
26
25
  else
27
26
  @@processor = Java::NorsysNetica::Environ.new(nil)
28
27
  end
28
+ #@@processor.control_concurrency("ExternalThreads", "OptimizeSafely")
29
+ @@processor.control_concurrency("ExternalThreads", "Serialize")
29
30
  if settings[:redis]
30
31
  @@redis = Redis.new(settings[:redis])
31
32
  end
33
+
34
+ if settings[:network_container]
35
+ @@network_container = settings[:network_container]
36
+ else
37
+ @@network_container = @@processor.active_networks
38
+ end
39
+
40
+ NeticaLogger.info "@@network_container is #{@@network_container.class} #{@@network_container.object_id}."
32
41
  NeticaLogger.info "Initializing the Netica Environment #{@@processor.object_id}"
33
42
  end
34
43
 
@@ -37,7 +46,11 @@ module Netica
37
46
  end
38
47
 
39
48
  def active_networks
40
- @@active_networks
49
+ @@network_container
50
+ end
51
+
52
+ def network_container
53
+ @@network_container
41
54
  end
42
55
 
43
56
  def redis
@@ -1,3 +1,3 @@
1
1
  module Netica
2
- VERSION = "0.0.10"
2
+ VERSION = "0.0.15"
3
3
  end
@@ -26,6 +26,10 @@ describe Netica::ActiveNetwork do
26
26
  it "should export its state as a hash" do
27
27
  @active_network.network.state.should be_an_instance_of(Hash)
28
28
  end
29
+
30
+ it "should be returned when searched for" do
31
+ Netica::ActiveNetwork.find("fake_token_identifier").should === @active_network
32
+ end
29
33
 
30
34
  context "the tuberculosis node" do
31
35
  it "should be less than 0.02 initially" do
@@ -12,5 +12,15 @@ describe Netica::Environment do
12
12
  Netica::NeticaLogger.info "Test logfile entry"
13
13
  Netica::Environment.instance.processor.finalize
14
14
  end
15
+
16
+ context "with a specified storage container" do
17
+ it 'should store active_networks in the storage container' do
18
+ @active_networks = []
19
+ Netica::Environment.engage(:network_container => @active_networks)
20
+ Netica::ActiveNetwork.new("fake_token_identifier", "#{File.dirname(__FILE__)}/../../examples/ChestClinic.dne")
21
+ @active_networks.length.should == 1
22
+ Netica::Environment.instance.processor.finalize
23
+ end
24
+ end
15
25
  end
16
26
  end
metadata CHANGED
@@ -2,14 +2,14 @@
2
2
  name: netica
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.10
5
+ version: 0.0.15
6
6
  platform: java
7
7
  authors:
8
8
  - Jerry Richardson
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-11 00:00:00.000000000 Z
12
+ date: 2013-07-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: redis
@@ -49,6 +49,7 @@ files:
49
49
  - lib/netica.rb
50
50
  - lib/netica/active_network.rb
51
51
  - lib/netica/bayes_network.rb
52
+ - lib/netica/environ.rb
52
53
  - lib/netica/environment.rb
53
54
  - lib/netica/java_library_path.rb
54
55
  - lib/netica/netica_logger.rb