Giter Club home page Giter Club logo

eemeter's People

Contributors

brandonwillard avatar cathydeng avatar jpvelez avatar marcpare avatar philngo avatar potash avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

eemeter's Issues

Should meters impose more rigidity in design?

Meters are quite flexible - should we force base meters to conform to a particular set of options or sequences? Pros: may make it easier to know what you're getting when you use a new meter, etc. Cons: reduces flexibility, makes it more difficult to update the skeletal structure of a meter.

Automatically check for unit compatibility.

Someone might unwittingly specify to use Celsius in a consumption generator and use a default like Fahrenheit in a weather model. This error would probably be tough to track down.

Remove redundancy from consumption data

Consumption data carries energy type and units along with it. Consider restructuring into something like this?

ct = ConsumptionType("electricity","kwh")
Consumption(ct,12.1,datetime(2011,1,1),datetime(2011,2,1))

Refactor generators to use models internally.

Generators should use "model" classes internally in order to:

  • use the same model parameters
  • make the internal model explicit
  • facilitate customization and modularity
  • avoid code repetition

Rename structural meters?

There was some discussion about whether calling structural meter classes (which also inherit from BaseMeter), should retain "Meter" in the name. For instance, which is better - SquentialMeter or Sequence? Does retaining "Meter" in the name make it easier or harder for newcomers to understand the meters they need to use? Does it help contributors contribute?

Test for python 3 compatibility

Some users have indicated a desire to use python 3; make sure we write python 3 compatible code in the future and convert the current code to be compatible.

Weather data local storage and caching

Weather data, including observational data, daily summaries, and weather normals often need to be collected for building performance analysis. Because needs across the library will vary widely - with some users performing statewide or nationwide studies and other users performing analyses on only one or two projects - data caching and storage must be efficient enough to work at scale or across multiple machines without being so cumbersome that it scares away users with simpler needs. We need to develop a flexible weather data caching strategy.

Need human-readable errors on meters

One of the downsides to using a (**kwargs) format for specifying meter parameters is that python's built-in error handling doesn't give very helpful errors. We'll have to make a better format for raising errors in meters for missing parameters, incorrect initialization, etc.

TMY3-dependent tests are... TMY3 dependent

potash:
Using this TMY3 file: http://rredc.nrel.gov/solar/old_data/nsrdb/1991-2005/data/tmy3/722880TYA.CSV

I get assertion errors in test_meter_content like:

assert arrays_similar(array([  1.51781322e-02,   2.57462824e-02,   7.85082316e+00,\n         6.50000000e+01,   2.00000000e+00]), [0.013456, 0.029507, 8.341199, 65, 3.8])

assert arrays_similar(array([  1.69555227e-02,   4.27854871e-02,   6.00419956e+00,\n         6.50000000e+01,   3.30000000e+00]), [0.016883, 0.042749, 6.013131, 65, 3.3])

Note that they are about equal to 2 significant digits. So I'm assuming my TMY3 file is slightly different from the one used to write the tests? Can you confirm that?

If so, one solution is to bundle or link to the exact TMY3 file needed for those numbers with ee-meter. Thoughts?

Internalize location wrangling

Right now we have dependencies on fairly static web APIs that go from zipcode to lat long to weather station. This data doesn't take up more than a couple of MB, so it may be worth just storing compressed json files with this info as an internal resources, making the eemeter completely standalone.

Should input and output mappings be explicit?

One of the main readability issues with meter specifications is that they don't require explicit input and output mappings. If they were required, they would be more verbose (and sometimes trivial) but more easily readable. Thoughts on this?

Meter setting or type for creating automatic flags for null inputs

Meters generally expect particular types of inputs, so it might be good to generate flags automatically for null inputs to the meter (such as meter.run(consumption_history=None)).

The alternative (current implementation) is to throw an error. For now, a meter can't be run unless all inputs are supplied. Some inputs will be missing, though, and the meter should still be able to run. One way or another these errors should be made more readable.

Code reuse between HDDCDD and HDD,CDD models

Can view the latter are special cases of the former, or the former is the sum of the latter. Either way, it's easier to maintain the code if the HDD and CDD calculations are only in one place.

Models are not always used for parameter optimizations

The __init__ function of the ModelBase implies that x0,bounds will be necessary for most model instances; however, this is not true for generators, for which these two values are meaningless. Either refactor or make them default to None.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.