== amee-analytics
The amee-analytics gem provides support for handling collections of the class
<i>AMEE::DataAbstraction::OngoingCalculation</i> and performing analytical
operations across the collection.
Licensed under the BSD 3-Clause license (See LICENSE.txt for details)
Authors: James Smith, Andrew Berkeley, George Palmer
Copyright: Copyright (c) 2011 AMEE UK Ltd
Homepage: http://github.com/AMEE/amee-analytics
Documentation: http://rubydoc.info/gems/amee-analytics
== INSTALLATION
gem install amee-analytics
== REQUIREMENTS
* ruby 1.8.7
* rubygems >= 1.5
All gem requirements should be installed as part of the rubygems installation process
above, but are listed here for completeness.
* amee-data-abstraction ~> 1.1
* amee-data-persistence ~> 1.1
== USAGE
The library extends a number of classes within the <i>AMEE::DataAbstraction</i>
module:
1. <i>AMEE::DataAbstraction::CalculationCollection</i> is extended by the
<i>CalculationCollectionReportingSupport</i> module, providing the ability to filter
specific calculation terms, sort by term values, standardize units and perform
analytical operations on specific terms, such as sums, means, modes, and medians
2. <i>AMEE::DataAbstraction::TermsList</i> is extended by the
<i>TermsListReportingSupport</i> module. This provides much of the functionality
used by <i>CalculationCollectionReportingSupport</i>, allowing lists to be sorted
and summed, averaged, etc...
3. <i>AMEE::DataAbstraction::Term</i> is extended by the <i>TermReportingSupport</i>
module. This provides the ability to convert the units within a term (changing the
term value attribute accordingly), and is used by the operations provided in
<i>CalculationCollectionReportingSupport</i> and <i>TermsListReportingSupport</i>.
4. A new subclass of <i>AMEE::DataAbstraction::Term</i> is defined, <i>Result</i>.
This provides a simple container for returning the result of a <i>TermsList</i>
analytical operation (e.g. sum, mean) complete with label, value, unit, etc...
=Example usage
# find method returns instance of CalculationCollection
my_calculations = OngoingCalculation.find_by_type(:all, :electricity)
#=> <AMEE::DataAbstraction::CalculationCollection ... >
# Dynamic label-derived method returns TermsList of the named term from each
# calculation in the set
my_calculations.country #=> <AMEE::DataAbstraction::TermsList ... >
my_calculations.energy #=> <AMEE::DataAbstraction::TermsList ... >
my_calculations.co2 #=> <AMEE::DataAbstraction::TermsList ... >
# Analytical operations can be applied to lists of terms. These return new
# objects, of the Result class. #to_s used here for illustrative purposes
my_calculations.country.sum.to_s #=> "0.0"
my_calculations.energy.sum.to_s #=> "23456 kWh"
my_calculations.co2.sum.to_s #=> "12345 kg"
my_calculations.co2.sum(:lb).to_s #=> "23456 lb"
my_calculations.country.mode.to_s #=> "Sweden"
my_calculations.co2.mean.to_s #=> "4512.5 kg"
my_calculations.co2.mean('t').to_s #=> "4.5125 t"
my_calculations.co2.median.to_s #=> "4567 kg"
my_calculations.co2.predominant_unit #=> "kg"
my_calculations.sort_by_co2 #=> <AMEE::DataAbstraction::CalculationCollection ... >
my_calculations.sort_by_co2! #=> <AMEE::DataAbstraction::CalculationCollection ... >
The amee-analytics gem provides support for handling collections of the class
<i>AMEE::DataAbstraction::OngoingCalculation</i> and performing analytical
operations across the collection.
Licensed under the BSD 3-Clause license (See LICENSE.txt for details)
Authors: James Smith, Andrew Berkeley, George Palmer
Copyright: Copyright (c) 2011 AMEE UK Ltd
Homepage: http://github.com/AMEE/amee-analytics
Documentation: http://rubydoc.info/gems/amee-analytics
== INSTALLATION
gem install amee-analytics
== REQUIREMENTS
* ruby 1.8.7
* rubygems >= 1.5
All gem requirements should be installed as part of the rubygems installation process
above, but are listed here for completeness.
* amee-data-abstraction ~> 1.1
* amee-data-persistence ~> 1.1
== USAGE
The library extends a number of classes within the <i>AMEE::DataAbstraction</i>
module:
1. <i>AMEE::DataAbstraction::CalculationCollection</i> is extended by the
<i>CalculationCollectionReportingSupport</i> module, providing the ability to filter
specific calculation terms, sort by term values, standardize units and perform
analytical operations on specific terms, such as sums, means, modes, and medians
2. <i>AMEE::DataAbstraction::TermsList</i> is extended by the
<i>TermsListReportingSupport</i> module. This provides much of the functionality
used by <i>CalculationCollectionReportingSupport</i>, allowing lists to be sorted
and summed, averaged, etc...
3. <i>AMEE::DataAbstraction::Term</i> is extended by the <i>TermReportingSupport</i>
module. This provides the ability to convert the units within a term (changing the
term value attribute accordingly), and is used by the operations provided in
<i>CalculationCollectionReportingSupport</i> and <i>TermsListReportingSupport</i>.
4. A new subclass of <i>AMEE::DataAbstraction::Term</i> is defined, <i>Result</i>.
This provides a simple container for returning the result of a <i>TermsList</i>
analytical operation (e.g. sum, mean) complete with label, value, unit, etc...
=Example usage
# find method returns instance of CalculationCollection
my_calculations = OngoingCalculation.find_by_type(:all, :electricity)
#=> <AMEE::DataAbstraction::CalculationCollection ... >
# Dynamic label-derived method returns TermsList of the named term from each
# calculation in the set
my_calculations.country #=> <AMEE::DataAbstraction::TermsList ... >
my_calculations.energy #=> <AMEE::DataAbstraction::TermsList ... >
my_calculations.co2 #=> <AMEE::DataAbstraction::TermsList ... >
# Analytical operations can be applied to lists of terms. These return new
# objects, of the Result class. #to_s used here for illustrative purposes
my_calculations.country.sum.to_s #=> "0.0"
my_calculations.energy.sum.to_s #=> "23456 kWh"
my_calculations.co2.sum.to_s #=> "12345 kg"
my_calculations.co2.sum(:lb).to_s #=> "23456 lb"
my_calculations.country.mode.to_s #=> "Sweden"
my_calculations.co2.mean.to_s #=> "4512.5 kg"
my_calculations.co2.mean('t').to_s #=> "4.5125 t"
my_calculations.co2.median.to_s #=> "4567 kg"
my_calculations.co2.predominant_unit #=> "kg"
my_calculations.sort_by_co2 #=> <AMEE::DataAbstraction::CalculationCollection ... >
my_calculations.sort_by_co2! #=> <AMEE::DataAbstraction::CalculationCollection ... >