rbma 1.0.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.
Files changed (51) hide show
  1. checksums.yaml +15 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +34 -0
  4. data/lib/rbma.rb +11 -0
  5. data/lib/rbma/cma.rb +17 -0
  6. data/lib/rbma/ema.rb +24 -0
  7. data/lib/rbma/i_ema.rb +53 -0
  8. data/lib/rbma/n_day_ema.rb +10 -0
  9. data/lib/rbma/simple_ma.rb +33 -0
  10. data/lib/rbma/version.rb +3 -0
  11. data/lib/tasks/rbma_tasks.rake +4 -0
  12. data/test/dummy/README.rdoc +28 -0
  13. data/test/dummy/Rakefile +6 -0
  14. data/test/dummy/app/assets/javascripts/application.js +13 -0
  15. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  16. data/test/dummy/app/controllers/application_controller.rb +5 -0
  17. data/test/dummy/app/helpers/application_helper.rb +2 -0
  18. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  19. data/test/dummy/bin/bundle +3 -0
  20. data/test/dummy/bin/rails +4 -0
  21. data/test/dummy/bin/rake +4 -0
  22. data/test/dummy/bin/setup +29 -0
  23. data/test/dummy/config.ru +4 -0
  24. data/test/dummy/config/application.rb +26 -0
  25. data/test/dummy/config/boot.rb +5 -0
  26. data/test/dummy/config/database.yml +25 -0
  27. data/test/dummy/config/environment.rb +5 -0
  28. data/test/dummy/config/environments/development.rb +41 -0
  29. data/test/dummy/config/environments/production.rb +79 -0
  30. data/test/dummy/config/environments/test.rb +42 -0
  31. data/test/dummy/config/initializers/assets.rb +11 -0
  32. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  33. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  34. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  35. data/test/dummy/config/initializers/inflections.rb +16 -0
  36. data/test/dummy/config/initializers/mime_types.rb +4 -0
  37. data/test/dummy/config/initializers/session_store.rb +3 -0
  38. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  39. data/test/dummy/config/locales/en.yml +23 -0
  40. data/test/dummy/config/routes.rb +56 -0
  41. data/test/dummy/config/secrets.yml +22 -0
  42. data/test/dummy/db/test.sqlite3 +0 -0
  43. data/test/dummy/log/development.log +0 -0
  44. data/test/dummy/log/test.log +2505 -0
  45. data/test/dummy/public/404.html +67 -0
  46. data/test/dummy/public/422.html +67 -0
  47. data/test/dummy/public/500.html +66 -0
  48. data/test/dummy/public/favicon.ico +0 -0
  49. data/test/rbma_test.rb +119 -0
  50. data/test/test_helper.rb +18 -0
  51. metadata +176 -0
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/404.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The page you were looking for doesn't exist.</h1>
62
+ <p>You may have mistyped the address or the page may have moved.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/422.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The change you wanted was rejected.</h1>
62
+ <p>Maybe you tried to change something you didn't have access to.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/500.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>We're sorry, but something went wrong.</h1>
62
+ </div>
63
+ <p>If you are the application owner check the logs for more information.</p>
64
+ </div>
65
+ </body>
66
+ </html>
File without changes
@@ -0,0 +1,119 @@
1
+ require 'test_helper'
2
+
3
+ class RbmaTest < ActiveSupport::TestCase
4
+ test "Ema recursive" do
5
+ e = Ema.new(a: 0.3)
6
+ e.compute(current: 11)
7
+ e.compute(current: 13)
8
+ e.compute(current: 15)
9
+ e.compute(current: 9)
10
+ e.compute(current: 8)
11
+ e.compute(current: 8)
12
+ e.compute(current: 7)
13
+ e.compute(current: 9)
14
+ assert (e.compute(current: 10)*1000).round == 9257
15
+ end
16
+ test "Ema non recursive" do
17
+ e = Ema.new(a: 0.3)
18
+ e.compute(current: 11)
19
+ e.compute(current: 13)
20
+ e.compute(current: 15)
21
+ e.compute(current: 9)
22
+ e.compute(current: 8)
23
+ e.compute(current: 8)
24
+ e.compute(current: 7)
25
+ d = e.compute(current: 9)
26
+ e = Ema.new(a: 0.3)
27
+ assert (e.compute(current: 10, previous: d)*1000).round == 9257
28
+ end
29
+
30
+ test "NDayEma" do
31
+ days = 6
32
+ n = NDayEma.new(n: days)
33
+ assert n.a == 2.0/(days+1)
34
+ end
35
+
36
+ test "SimpleMa recursive" do
37
+ s = SimpleMa.new(n: 5, empty: "-")
38
+ assert s.compute(current: 2) == "-"
39
+ s.compute(current: 3)
40
+ s.compute(current: 5)
41
+ s.compute(current: 3)
42
+ assert s.compute(current: 3) == 3.2
43
+ end
44
+
45
+ test "SimpleMa non recursive" do
46
+ s = SimpleMa.new(n: 5, empty: "-")
47
+ assert s.compute(current: 2) == "-"
48
+ s.compute(current: 3)
49
+ s.compute(current: 5)
50
+ s.compute(current: 3)
51
+ lasts = s.lasts
52
+ s = SimpleMa.new(n: 5, empty: "-")
53
+ assert s.compute(current: 3, lasts: lasts ) == 3.2
54
+ end
55
+
56
+ test "Cma recursive" do
57
+ c = Cma.new()
58
+ c.compute(current: 1)
59
+ c.compute(current: 2)
60
+ c.compute(current: 21)
61
+ c.compute(current: 10)
62
+ c.compute(current: 31)
63
+ c.compute(current: 28)
64
+ c.compute(current: 5)
65
+ assert c.compute(current: 2) == 12.5
66
+ end
67
+
68
+
69
+ test "Cma non recursive" do
70
+ c = Cma.new()
71
+ c.compute(current: 1)
72
+ c.compute(current: 2)
73
+ c.compute(current: 21)
74
+ c.compute(current: 10)
75
+ c.compute(current: 31)
76
+ c.compute(current: 28)
77
+ d = c.compute(current: 5)
78
+ c = Cma.new()
79
+ assert c.compute(current: 2, last: d, count: 7) == 12.5
80
+ end
81
+ test "IEma recursive" do
82
+ i = IEma.new(g: 60)
83
+ i.compute(t: 0, current: 17)
84
+ i.compute(t: 1, current: 15)
85
+ i.compute(t: 3, current: 12)
86
+ i.compute(t: 5, current: 11)
87
+ i.compute(t: 9, current: 13)
88
+ i.compute(t: 10, current: 15)
89
+ i.compute(t: 13, current: 9)
90
+ i.compute(t: 17, current: 8)
91
+ i.compute(t: 19, current: 8)
92
+ i.compute(t: 23, current: 7)
93
+ i.compute(t: 29, current: 9)
94
+ i.compute(t: 38, current: 10)
95
+ i.compute(t: 49, current: 8)
96
+ i.compute(t: 60, current: 6)
97
+ i.compute(t: 80, current: 5)
98
+ i.compute(t: 100, current: 8)
99
+ i.compute(t: 150, current: 12)
100
+ assert (i.compute(t: 152.88, current: 9)*100).round == 1070
101
+
102
+ end
103
+ test "IEma non recursive" do
104
+ i = IEma.new(g: 60)
105
+ i.compute(t: 0, current: 17)
106
+ i.compute(t: 1, current: 15)
107
+ prev = i.compute(t: 3, current: 12)
108
+ j = IEma.new(g: 60)
109
+ assert (j.compute(t: 5, current: 11, tprev: 3, prev: prev) * 100).round == 1661
110
+ end
111
+
112
+ test "IEma let you check value at t > tn" do
113
+ i = IEma.new(g: 60)
114
+ i.compute(t: 0, current: 17)
115
+ i.compute(t: 1, current: 15)
116
+ assert i.compute(t: 3, current: 12) == i.value(t:3)
117
+ assert i.value(t:99999999).round == 0
118
+ end
119
+ end
@@ -0,0 +1,18 @@
1
+ # Configure Rails Environment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require File.expand_path("../../test/dummy/config/environment.rb", __FILE__)
5
+ ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../test/dummy/db/migrate", __FILE__)]
6
+ require "rails/test_help"
7
+
8
+ # Filter out Minitest backtrace while allowing backtrace from other libraries
9
+ # to be shown.
10
+ Minitest.backtrace_filter = Minitest::BacktraceFilter.new
11
+
12
+ # Load support files
13
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
14
+
15
+ # Load fixtures from the engine
16
+ if ActiveSupport::TestCase.respond_to?(:fixture_path=)
17
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
18
+ end
metadata ADDED
@@ -0,0 +1,176 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rbma
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Pierre-Yves Mathieu
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-04-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 4.2.0
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 4.2.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: sqlite3
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry-rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: (SimpleMA) Moving average over last n day, (EMA) Exponential moving average,
56
+ (IEMA) Exponential moving average on irregularly timed events series, N days EMA,
57
+ Cumulative EMA
58
+ email:
59
+ - git@pywebdesogn.net
60
+ executables: []
61
+ extensions: []
62
+ extra_rdoc_files: []
63
+ files:
64
+ - MIT-LICENSE
65
+ - Rakefile
66
+ - lib/rbma.rb
67
+ - lib/rbma/cma.rb
68
+ - lib/rbma/ema.rb
69
+ - lib/rbma/i_ema.rb
70
+ - lib/rbma/n_day_ema.rb
71
+ - lib/rbma/simple_ma.rb
72
+ - lib/rbma/version.rb
73
+ - lib/tasks/rbma_tasks.rake
74
+ - test/dummy/README.rdoc
75
+ - test/dummy/Rakefile
76
+ - test/dummy/app/assets/javascripts/application.js
77
+ - test/dummy/app/assets/stylesheets/application.css
78
+ - test/dummy/app/controllers/application_controller.rb
79
+ - test/dummy/app/helpers/application_helper.rb
80
+ - test/dummy/app/views/layouts/application.html.erb
81
+ - test/dummy/bin/bundle
82
+ - test/dummy/bin/rails
83
+ - test/dummy/bin/rake
84
+ - test/dummy/bin/setup
85
+ - test/dummy/config.ru
86
+ - test/dummy/config/application.rb
87
+ - test/dummy/config/boot.rb
88
+ - test/dummy/config/database.yml
89
+ - test/dummy/config/environment.rb
90
+ - test/dummy/config/environments/development.rb
91
+ - test/dummy/config/environments/production.rb
92
+ - test/dummy/config/environments/test.rb
93
+ - test/dummy/config/initializers/assets.rb
94
+ - test/dummy/config/initializers/backtrace_silencers.rb
95
+ - test/dummy/config/initializers/cookies_serializer.rb
96
+ - test/dummy/config/initializers/filter_parameter_logging.rb
97
+ - test/dummy/config/initializers/inflections.rb
98
+ - test/dummy/config/initializers/mime_types.rb
99
+ - test/dummy/config/initializers/session_store.rb
100
+ - test/dummy/config/initializers/wrap_parameters.rb
101
+ - test/dummy/config/locales/en.yml
102
+ - test/dummy/config/routes.rb
103
+ - test/dummy/config/secrets.yml
104
+ - test/dummy/db/test.sqlite3
105
+ - test/dummy/log/development.log
106
+ - test/dummy/log/test.log
107
+ - test/dummy/public/404.html
108
+ - test/dummy/public/422.html
109
+ - test/dummy/public/500.html
110
+ - test/dummy/public/favicon.ico
111
+ - test/rbma_test.rb
112
+ - test/test_helper.rb
113
+ homepage: https://github.com/pywebdesign/rbma
114
+ licenses:
115
+ - MIT
116
+ metadata: {}
117
+ post_install_message:
118
+ rdoc_options: []
119
+ require_paths:
120
+ - lib
121
+ required_ruby_version: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ required_rubygems_version: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ! '>='
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ requirements: []
132
+ rubyforge_project:
133
+ rubygems_version: 2.2.2
134
+ signing_key:
135
+ specification_version: 4
136
+ summary: Many moving averages function, both recursive and non recursive
137
+ test_files:
138
+ - test/rbma_test.rb
139
+ - test/dummy/README.rdoc
140
+ - test/dummy/db/test.sqlite3
141
+ - test/dummy/log/development.log
142
+ - test/dummy/log/test.log
143
+ - test/dummy/config.ru
144
+ - test/dummy/app/assets/javascripts/application.js
145
+ - test/dummy/app/assets/stylesheets/application.css
146
+ - test/dummy/app/controllers/application_controller.rb
147
+ - test/dummy/app/helpers/application_helper.rb
148
+ - test/dummy/app/views/layouts/application.html.erb
149
+ - test/dummy/Rakefile
150
+ - test/dummy/bin/rails
151
+ - test/dummy/bin/rake
152
+ - test/dummy/bin/setup
153
+ - test/dummy/bin/bundle
154
+ - test/dummy/config/initializers/wrap_parameters.rb
155
+ - test/dummy/config/initializers/backtrace_silencers.rb
156
+ - test/dummy/config/initializers/session_store.rb
157
+ - test/dummy/config/initializers/inflections.rb
158
+ - test/dummy/config/initializers/filter_parameter_logging.rb
159
+ - test/dummy/config/initializers/cookies_serializer.rb
160
+ - test/dummy/config/initializers/mime_types.rb
161
+ - test/dummy/config/initializers/assets.rb
162
+ - test/dummy/config/routes.rb
163
+ - test/dummy/config/secrets.yml
164
+ - test/dummy/config/boot.rb
165
+ - test/dummy/config/application.rb
166
+ - test/dummy/config/locales/en.yml
167
+ - test/dummy/config/environments/test.rb
168
+ - test/dummy/config/environments/development.rb
169
+ - test/dummy/config/environments/production.rb
170
+ - test/dummy/config/database.yml
171
+ - test/dummy/config/environment.rb
172
+ - test/dummy/public/422.html
173
+ - test/dummy/public/404.html
174
+ - test/dummy/public/favicon.ico
175
+ - test/dummy/public/500.html
176
+ - test/test_helper.rb