Comments (3)
With regards to cleaning negative numbers: it appears that the only place this is currently happening in our pipeline is with the raw EIA-930 data. We should probably fix this as part of #113
from open-grid-emissions.
There are several areas where there is a risk of multiplying by a negative number, primarily in src.impute_hourly_profiles
:
- In
calculate_scaled_residual()
the scaled residual is calculated as the product of the cems net generation and a scaling factor, which is min(eia930 net gen / cems net gen). If the cems profile is negative at any porint, it could lead to a negative scaling factor. Also, if the cems profile itself is negative, it could cause issues. We should investigate this further and implement fixes. - In
shape_monthly_eia_data_as_hourly()
we multiply each of the data columns by the profile as a percentage. We have already implemented a check so that in any months where the net generation is negative, we assingn it a flat profile. However, we have not checked whether the profile itself is negative. - When scaling the partial cems data, we have checks implemented to catch negative scaling values.
When we convert our profile to a percent, we divide each hourly value by the monthly total value. However, if the profile has any negative values in it, this will affect the monthly total and potentially create larger swings in the data. We should probably check whether this monthly total is ever negative
from open-grid-emissions.
Another issue that I'm discovering with the CEMS net generation data is that our current adjustment methodology sometimes results in hours or days where the negative net generation is in the hundreds of MW - it seems unlikely that a non-energy-storage generator would ever be consuming that much electricity as a house load. We should use data from EIA-923 or the disposition data to get an idea of maximum negative draw and filter out methods that would cause large negative values.
Based on the EIA-923 data, the largest negative generation for a single generator in a month is about -19,000 MWh, which works out to about -25MW on average in each hour. Thus, we probably should not see negative net generation values much larger than that created as a result of our gross to net conversion.
We can set a threshold such that the gross to net shift factor does not result in a negative net generation value less than, say -50 MW in any single hour. If it would, we can drop the shift factor and use the scaling factor instead, which would result in no negative net generation in any hour, but still result in a monthly total net generation that matches the EIA-reported value.
from open-grid-emissions.
Related Issues (20)
- Analyze and report differential between OGE versions
- CEMS data cleaning is dropping some CEMS data HOT 2
- Validate primary fuel methodology that should be used for assigning a plant's fuel category HOT 1
- Add option to use pudl nightly builds HOT 2
- Fix / clean up EIA-930 timestamp corrections
- Add validation for physical BA code ID
- Add typehints to all functions
- Add total consumed emissions to carbon accounting results
- Add emission factors for Canada
- Make output tables more user friendly
- Update PUDL Dependencies HOT 1
- Add PR template to OGE
- Fix EIA-923 Allocation Error
- Address inconsistent columns warning in `gridemissions`
- Fix incomplete timeseries warnings
- Add section on forks in the README for external collaborators
- Fix pipeline when running with --small argument HOT 1
- Add fuel-specific EIA-923 allocation warning
- Ensure complete timeseries data
- Update dependency on gridemissions repo to use v2 of EIA API
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from open-grid-emissions.