statistical_array 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.
- checksums.yaml +7 -0
- data/.gitignore +16 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +6 -0
- data/AUTHORS +13 -0
- data/COPYING +13 -0
- data/Gemfile +2 -0
- data/LICENSE +13 -0
- data/README.md +73 -0
- data/Rakefile +1 -0
- data/bin/stats_array +12 -0
- data/lib/statistical_array.rb +12 -0
- data/lib/statistical_array/aliases.rb +10 -0
- data/lib/statistical_array/array_template.rb +18 -0
- data/lib/statistical_array/statistical_array.rb +43 -0
- data/lib/statistical_array/version.rb +3 -0
- data/statistical_array.gemspec +25 -0
- metadata +91 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8ca25eede413637c5ab1af345dbc0e277eb49d4a
|
4
|
+
data.tar.gz: 17c7fadf31feb668a70383032fe666eb81067fce
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4606ffb3c09db94cac19bd38648d17619c930f45dfdea9ad72cccb024cfabb52714a305ea1be940254b72ba6b35d236774c61b0fc350d5a9ebf5a78146188bb1
|
7
|
+
data.tar.gz: b954b380caf8d3b9b43283808213644ffb4e5b8a7b8a6aa6b4f6776e0315c3a025885c9eddc7d46b7500254cae29fd80b9109f4f322ee893210e7e9fc08f1ed0
|
data/.gitignore
ADDED
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
statistical_array
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-2.0.0-p247
|
data/.travis.yml
ADDED
data/AUTHORS
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
Copyright (c) 2012, 2013 Todd A. Jacobs
|
2
|
+
|
3
|
+
This program is free software: you can redistribute it and/or modify it under
|
4
|
+
the terms of the GNU General Public License as published by the Free Software
|
5
|
+
Foundation, either version 3 of the License, or (at your option) any later
|
6
|
+
version.
|
7
|
+
|
8
|
+
This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
9
|
+
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
10
|
+
PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
11
|
+
|
12
|
+
You should have received a copy of the GNU General Public License along with
|
13
|
+
this program. If not, see <http://www.gnu.org/licenses/>.
|
data/COPYING
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
Copyright (c) 2012, 2013 Todd A. Jacobs
|
2
|
+
|
3
|
+
This program is free software: you can redistribute it and/or modify it under
|
4
|
+
the terms of the GNU General Public License as published by the Free Software
|
5
|
+
Foundation, either version 3 of the License, or (at your option) any later
|
6
|
+
version.
|
7
|
+
|
8
|
+
This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
9
|
+
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
10
|
+
PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
11
|
+
|
12
|
+
You should have received a copy of the GNU General Public License along with
|
13
|
+
this program. If not, see <http://www.gnu.org/licenses/>.
|
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
Copyright (c) 2012, 2013 Todd A. Jacobs
|
2
|
+
|
3
|
+
This program is free software: you can redistribute it and/or modify it under
|
4
|
+
the terms of the GNU General Public License as published by the Free Software
|
5
|
+
Foundation, either version 3 of the License, or (at your option) any later
|
6
|
+
version.
|
7
|
+
|
8
|
+
This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
9
|
+
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
10
|
+
PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
11
|
+
|
12
|
+
You should have received a copy of the GNU General Public License along with
|
13
|
+
this program. If not, see <http://www.gnu.org/licenses/>.
|
data/README.md
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
# statistical_array
|
2
|
+
|
3
|
+
## Copyright and Licensing
|
4
|
+
|
5
|
+
### Copyright Notice
|
6
|
+
|
7
|
+
The copyright for the software, documentation, and associated files are
|
8
|
+
held by the author.
|
9
|
+
|
10
|
+
Copyright 2012, 2013 Todd A. Jacobs
|
11
|
+
All rights reserved.
|
12
|
+
|
13
|
+
The AUTHORS file is also included in the source tree.
|
14
|
+
|
15
|
+
### Software License
|
16
|
+
|
17
|
+

|
18
|
+
|
19
|
+
The software is licensed under the
|
20
|
+
[GPLv3](http://www.gnu.org/copyleft/gpl.html). The LICENSE file is
|
21
|
+
included in the source tree.
|
22
|
+
|
23
|
+
### README License
|
24
|
+
|
25
|
+

|
27
|
+
|
28
|
+
This README is licensed under the [Creative Commons
|
29
|
+
Attribution-NonCommercial-ShareAlike 3.0 United States
|
30
|
+
License](http://creativecommons.org/licenses/by-nc-sa/3.0/us/).
|
31
|
+
|
32
|
+
## Purpose
|
33
|
+
|
34
|
+
Perform statistical analysis on a custom array class that doesn't
|
35
|
+
actually inherit from Array. Provides a template system for flexible
|
36
|
+
output.
|
37
|
+
|
38
|
+
## Installation and Setup
|
39
|
+
|
40
|
+
gem install statistical_array
|
41
|
+
|
42
|
+
## Usage
|
43
|
+
|
44
|
+
stats_array <number ...>
|
45
|
+
|
46
|
+
## Examples
|
47
|
+
|
48
|
+
No screenshots here, just samples of what you can expect to see on
|
49
|
+
standard output when you run the program.
|
50
|
+
|
51
|
+
### Command Line
|
52
|
+
|
53
|
+
$> stats_array 1 2 3
|
54
|
+
Minimum Value: 1
|
55
|
+
Maximum Value: 3
|
56
|
+
Mean: 2.0
|
57
|
+
Median: 2
|
58
|
+
Population Standard Deviation: 0.816496580927726
|
59
|
+
Sample Standard Deviation: 1.1547005383792515
|
60
|
+
Sum of Values: 6
|
61
|
+
|
62
|
+
### REPL
|
63
|
+
|
64
|
+
require 'statistical_array'
|
65
|
+
include StatisticalArray
|
66
|
+
|
67
|
+
ary = StatisticalArray::StatsArray.new [2, 4, 4, 4, 5, 5, 7, 9]
|
68
|
+
[ary.median, ary.avg, ary.pop_std]
|
69
|
+
#=> [4.5, 5.0, 2.0]
|
70
|
+
|
71
|
+
----
|
72
|
+
|
73
|
+
[Project Home Page](https://github.com/CodeGnome/statistical_array)
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/stats_array
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require_relative File.join '..', 'lib', 'statistical_array'
|
4
|
+
|
5
|
+
unless ARGV.size >= 1
|
6
|
+
puts "Usage: #{File.basename $0} <number ...>"
|
7
|
+
exit 64
|
8
|
+
end
|
9
|
+
|
10
|
+
include StatisticalArray
|
11
|
+
a = StatsArray.new ARGV.map { |i| i.include?('.') ? i.to_f : i.to_i }
|
12
|
+
a.print
|
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'statistical_array/statistical_array'
|
4
|
+
require 'statistical_array/aliases'
|
5
|
+
require 'statistical_array/array_template'
|
6
|
+
require 'statistical_array/version'
|
7
|
+
|
8
|
+
if __FILE__ == $0
|
9
|
+
include StatisticalArray
|
10
|
+
a = StatsArray.new ARGV.map { |i| i.include?('.') ? i.to_f : i.to_i }
|
11
|
+
a.print
|
12
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module StatisticalArray
|
2
|
+
class StatsArray
|
3
|
+
alias_method :avg, :mean
|
4
|
+
alias_method :min, :minimum
|
5
|
+
alias_method :max, :maximum
|
6
|
+
alias_method :pop_std, :population_standard_deviation
|
7
|
+
alias_method :std_dev, :sample_standard_deviation
|
8
|
+
alias_method :total, :sum
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module StatisticalArray
|
2
|
+
class ArrayTemplate
|
3
|
+
FMT = '
|
4
|
+
Minimum Value: %s
|
5
|
+
Maximum Value: %s
|
6
|
+
Mean: %s
|
7
|
+
Median: %s
|
8
|
+
Population Standard Deviation: %s
|
9
|
+
Sample Standard Deviation: %s
|
10
|
+
Sum of Values: %s'.gsub /^\s+/, ''
|
11
|
+
|
12
|
+
def self.render obj
|
13
|
+
values =
|
14
|
+
%i[min max mean median pop_std std_dev sum].map { |sym| obj.send sym }
|
15
|
+
puts FMT % values
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module StatisticalArray
|
2
|
+
class StatsArray
|
3
|
+
def initialize ary, template=nil
|
4
|
+
@ary = Array(ary).flatten.compact
|
5
|
+
@template_name = template || 'ArrayTemplate'
|
6
|
+
end
|
7
|
+
|
8
|
+
def print
|
9
|
+
Kernel.const_get(@template_name.to_s).render self
|
10
|
+
end
|
11
|
+
|
12
|
+
def minimum
|
13
|
+
@ary.min
|
14
|
+
end
|
15
|
+
|
16
|
+
def maximum
|
17
|
+
@ary.max
|
18
|
+
end
|
19
|
+
|
20
|
+
def mean
|
21
|
+
@ary.reduce(:+) / @ary.count.to_f
|
22
|
+
end
|
23
|
+
|
24
|
+
def median
|
25
|
+
return nil if @ary.empty?
|
26
|
+
n = @ary.size
|
27
|
+
a = @ary.sort
|
28
|
+
n.odd? ? a[(n-1)/2] : a[(n-1)/2,2].reduce(:+) / 2.0
|
29
|
+
end
|
30
|
+
|
31
|
+
def population_standard_deviation
|
32
|
+
Math.sqrt @ary.reduce(0) { |i, j| i + (j - mean)**2 } / @ary.count
|
33
|
+
end
|
34
|
+
|
35
|
+
def sample_standard_deviation
|
36
|
+
Math.sqrt @ary.reduce(0) { |i, j| i + (j - mean)**2 } / (@ary.count - 1.5)
|
37
|
+
end
|
38
|
+
|
39
|
+
def sum
|
40
|
+
@ary.reduce(:+)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'statistical_array/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'statistical_array'
|
8
|
+
spec.version = StatisticalArray::VERSION
|
9
|
+
spec.authors = ['Todd A. Jacobs']
|
10
|
+
spec.email = ["github.projects@codegnome.org"]
|
11
|
+
spec.summary = %q{Generate statistics from a custom array object.}
|
12
|
+
spec.description = "Perform statistical analysis on a custom array class " +
|
13
|
+
"that doesn't actually inherit from Array. Provides a " +
|
14
|
+
"template system for flexible output."
|
15
|
+
spec.homepage = "https://github.com/CodeGnome/#{spec.name}"
|
16
|
+
spec.license = 'GPLv3'
|
17
|
+
|
18
|
+
spec.files = `git ls-files`.split($/)
|
19
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
20
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
21
|
+
spec.require_paths = ['lib']
|
22
|
+
|
23
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
24
|
+
spec.add_development_dependency 'rake'
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: statistical_array
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Todd A. Jacobs
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-10-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
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
|
+
description: Perform statistical analysis on a custom array class that doesn't actually
|
42
|
+
inherit from Array. Provides a template system for flexible output.
|
43
|
+
email:
|
44
|
+
- github.projects@codegnome.org
|
45
|
+
executables:
|
46
|
+
- stats_array
|
47
|
+
extensions: []
|
48
|
+
extra_rdoc_files: []
|
49
|
+
files:
|
50
|
+
- .gitignore
|
51
|
+
- .ruby-gemset
|
52
|
+
- .ruby-version
|
53
|
+
- .travis.yml
|
54
|
+
- AUTHORS
|
55
|
+
- COPYING
|
56
|
+
- Gemfile
|
57
|
+
- LICENSE
|
58
|
+
- README.md
|
59
|
+
- Rakefile
|
60
|
+
- bin/stats_array
|
61
|
+
- lib/statistical_array.rb
|
62
|
+
- lib/statistical_array/aliases.rb
|
63
|
+
- lib/statistical_array/array_template.rb
|
64
|
+
- lib/statistical_array/statistical_array.rb
|
65
|
+
- lib/statistical_array/version.rb
|
66
|
+
- statistical_array.gemspec
|
67
|
+
homepage: https://github.com/CodeGnome/statistical_array
|
68
|
+
licenses:
|
69
|
+
- GPLv3
|
70
|
+
metadata: {}
|
71
|
+
post_install_message:
|
72
|
+
rdoc_options: []
|
73
|
+
require_paths:
|
74
|
+
- lib
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - '>='
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - '>='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
requirements: []
|
86
|
+
rubyforge_project:
|
87
|
+
rubygems_version: 2.1.6
|
88
|
+
signing_key:
|
89
|
+
specification_version: 4
|
90
|
+
summary: Generate statistics from a custom array object.
|
91
|
+
test_files: []
|