cabalist 0.0.1 → 0.0.2

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.
Files changed (38) hide show
  1. data/.gitignore +4 -0
  2. data/.travis.yml +4 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE +0 -0
  5. data/README.md +121 -0
  6. data/Rakefile +17 -0
  7. data/cabalist.gemspec +42 -0
  8. data/lib/cabalist.rb +13 -2
  9. data/lib/cabalist/configuration.rb +20 -0
  10. data/lib/cabalist/frontend.rb +111 -0
  11. data/lib/cabalist/model_additions.rb +127 -0
  12. data/lib/cabalist/railtie.rb +14 -0
  13. data/lib/cabalist/version.rb +3 -0
  14. data/lib/cabalist/views/classifier.haml +82 -0
  15. data/lib/cabalist/views/index.haml +21 -0
  16. data/lib/cabalist/views/layout.haml +39 -0
  17. data/lib/generators/cabalist/classifier/USAGE +0 -0
  18. data/lib/generators/cabalist/classifier/classifier_generator.rb +37 -0
  19. data/lib/generators/cabalist/classifier/templates/migrations/add_cabalist.rb.erb +11 -0
  20. data/lib/generators/cabalist/install/USAGE +0 -0
  21. data/lib/generators/cabalist/install/install_generator.rb +26 -0
  22. data/lib/generators/cabalist/install/templates/initializers/cabalist.rb +4 -0
  23. data/lib/generators/cabalist/install/templates/public/images/eye_12x9.png +0 -0
  24. data/lib/generators/cabalist/install/templates/public/images/logo.png +0 -0
  25. data/lib/generators/cabalist/install/templates/public/images/ncirl.png +0 -0
  26. data/lib/generators/cabalist/install/templates/public/images/pen_12x12.png +0 -0
  27. data/lib/generators/cabalist/install/templates/public/images/symbol.png +0 -0
  28. data/lib/generators/cabalist/install/templates/public/images/target_12x12.png +0 -0
  29. data/lib/generators/cabalist/install/templates/public/images/x_14x14.png +0 -0
  30. data/lib/generators/cabalist/install/templates/public/javascripts/cabalist.js +23 -0
  31. data/lib/generators/cabalist/install/templates/public/stylesheets/cabalist.css +197 -0
  32. data/spec/cabalist/frontend_spec.rb +79 -0
  33. data/spec/cabalist/model_additions_spec.rb +104 -0
  34. data/spec/cabalist/performance_benchmark_spec.rb +76 -0
  35. data/spec/spec_helper.rb +30 -0
  36. metadata +164 -12
  37. data/lib/cabalist/manager.rb +0 -30
  38. data/lib/cabalist/object_hooks.rb +0 -59
@@ -1,30 +0,0 @@
1
- require 'singleton'
2
-
3
- module Cabalist
4
-
5
- class Manager
6
-
7
- include Singleton
8
- attr_accessor :classifiers
9
-
10
- def initialize() self.classifiers = [] end
11
-
12
-
13
- def self.register_classifier(klass, proc)
14
- instance.classifiers << { :klass => klass, :proc => proc }
15
- end
16
-
17
- def self.setup!
18
- instance.classifiers.each do |classifier|
19
- classifier[:klass].const_set( 'CABALIST_CLASSIFIER',
20
- classifier[:proc].call )
21
- classifier[:klass].class_eval do
22
- def classify() CABALIST_CLASSIFIER.eval(self.get_signals) end
23
- def classify!() set_category(classify) end
24
- end
25
- end
26
- end
27
-
28
- end
29
-
30
- end
@@ -1,59 +0,0 @@
1
- require 'ai4r'
2
-
3
- Object::instance_eval do
4
-
5
- def acts_as_cabalist(options = {})
6
-
7
- # == Set defaults ======================================================= #
8
- collection = options[:collection] || :all
9
- algorithm = options[:algorithm] || :id3
10
- # == END ================================================================ #
11
-
12
- # == Determine a classifier ============================================= #
13
- classifier = case algorithm
14
- when :hyperpipes then Ai4r::Classifiers::Hyperpipes
15
- when :ib1 then Ai4r::Classifiers::IB1
16
- when :id3 then Ai4r::Classifiers::ID3
17
- when :one_r then Ai4r::Classifiers::OneR
18
- when :prism then Ai4r::Classifiers::Prism
19
- when :zero_r then Ai4r::Classifiers::ZeroR
20
- else raise 'Unknown algorithm provided'
21
- end
22
- # == END ================================================================ #
23
-
24
- # == Set classification methods ========================================= #
25
- get_signals_proc = Proc::new do
26
- options[:fields].map do |field|
27
- field.is_a?(Proc) ? field.call(self) : self.send(field)
28
- end
29
- end
30
-
31
- get_category_proc = Proc::new do
32
- self.send(options[:category])
33
- end
34
-
35
- set_category_proc = Proc::new do |val|
36
- self.send("#{options[:category]}=".to_sym, val)
37
- self
38
- end
39
-
40
- send(:define_method, 'get_signals'.to_sym, &get_signals_proc)
41
- send(:define_method, 'get_category'.to_sym, &get_category_proc)
42
- send(:define_method, 'set_category'.to_sym, &set_category_proc)
43
-
44
- proc = Proc::new do
45
- data_items = send(collection).map do |el|
46
- el.get_signals.push(el.get_category)
47
- end
48
- data_set = Ai4r::Data::DataSet::new({ :data_items => data_items })
49
- classifier::new.build(data_set)
50
- end
51
- # == END ================================================================ #
52
-
53
- # == Register classifier ================================================ #
54
- Cabalist::Manager.register_classifier(self, proc)
55
- # == END ================================================================ #
56
-
57
- end
58
-
59
- end