Repository navigation
CSV Improvements: RVI/MVI and Units - #9395
jasondegraw wants to merge 21 commits into
Conversation
| ## References ## | ||
|
|
||
| --- | ||
|
|
There was a problem hiding this comment.
This looks perfectly reasonable. I was thinking if the csv is not created/requested and these new objects are present in the input then the "unused objects" message will show up in the err file, and if the csv is created/requested those messages will not show up.
OutputControl:Files,
No, !- Output CSV
|
Overall this is a great change. a) Perhaps the input object names "OutputControl:RVI" and "OutputControl:MVI" should be more descriptive such as "OutputControl:CSV:SelectedOutputVariableOrder" and "OutputControl:CSV:SelectedMeterOrder" or something. b) I believe that even if the RVI or MVI had a column that was not an existing variable that it would leave a blank column for that variable (someone else maybe can confirm this) so that the spreadsheet that is created had a fixed set of columns. Is this still going to occur? c) Are there any other features of ReadVARSESO that are not supported? If so, please identify them. d) ConvertESOMTR had this unique conversion to IP approach that worked with the names of the output variables. If it was output in Joules and the name contained the string "elec" it was converted to kWh, if it contained the string "gas" it was converted to therms, if it contained "cool" it was converted to ton-hr. Similarly, the output was Watts and the name contained "elec" then it was converted to kW. This is better than just converting all JtokWH as an option. I suggest that you add "JtoAuto" option in "OutputControl:CSV:Style" to replicate this. e) Related to the last item, ConvertESOMTR used a "convert.txt" file to specify the rules of conversions which would allow users to modify the rules. I presume we are losing this capability. I don't think this is a big deal since I think it rarely (or maybe never) happened, but I just want to double-check that the "convert.txt" file is not going to be used anymore. f) There is a little-used program called CSVproc that creates some simple statistics for each column in the CSV file. It would be great if this could just be done as part of this work (it is just the sum, max, min, average plus some counts) and this could be an added option to "OutputControl:CSV:Style" like "Generate simple statistics" maybe these are added to the bottom of the CSV file? It would be nice to eliminate this little program as well. g) Are we going to eliminate ReadVARSESO and ConvertESOMTR from the installer? If so this may necessitate other changes to EP-Launch 2 source code and EP-Launch 3 workflows. Post an issue pointing to me about this if that is what is decided. h) One other suggestion, Excel locks the CSV file so that it cannot be written to but it is very common for users to try to run EnergyPlus with the CSV opened by accident. EP-Launch detects this and shows a warning but maybe EnergyPlus should also do something initially when processing the command line options (maybe it does already) and just put a message up and not bother with the simulation. |
|
If you want to be feature-complete with |
|
Regarding item b) above, ReadVarsESO does not leave blank columns if a variable is name in the rvi is not present in the idf Output:Variable or Output:Meter objects. Also, in case you don't realize this, ReadVarsESO matches initial substrings in the variable name. For example "Zone Air" in the rvi will match all occurrences of Zone Air Temperature, Zone Air System Sensible Cooling Rate, etc. Not sure if it's important to support this, but noting it's a feature. |
Thanks for clarifying that. |
|
@JasonGlazer thanks for the feedback! Here are responses to most of your comments, we'll drop b) because @mjwitte has responded on that.
We're fine with the names you're proposing, it makes sense to drop the "RVI" and "MVI" terminology.
As far as we know, the things missing are mentioned in Mike's comment:
We are not terribly opposed to including this, but we are concerned that this will push our budget/time limits. If it isn’t a “must have”, then perhaps it could be a stretch goal? If this is a “must have”, we could combine it with e) as a FY23 new feature to guarantee it gets done.
This is probably a bit out of our original scope, but we would not envision using a separate file if we did implement it. A potential solution would be to combine it with d) above for FY23.
We are reluctant to include additional “special” rows (beyond headers) based upon (very emphatic) user feedback. This seems like something that would still be best done as a postprocessing step (which would mean keeping CSVProc, but the program could be translated to Python).
We do believe that these programs should be deprecated at some point, but not in this PR. We would like to consider redirecting the
E+ will probably detect that there’s something going on when it can’t open the file for writing, but we’ll have to look into what it does then. We think that handling it as a “failure to open output file” error is probably the way to go, other options may get platform specific really quickly. |
|
@mjwitte thanks for the comments and feedback!
We were aware of this capability, and we had looked into a little, but hadn't decided whether we should implement it or not. We'll take a harder look, and if it is feasible we'll do something. I don't know if that would necessarily mean multiple files or not, we'll just have to see how it plays out.
We had missed this in the review of ReadVars, thanks for catching this. This can probably be handled using the code that does matching for the output variables themselves, and if that can be done then this should be (relatively) easy to do. We’ll look into it and if it is feasible, we’ll do it. |
|
@jasondegraw @Myoldmopar it has been 28 days since this pull request was last updated. |
2 similar comments
|
@jasondegraw @Myoldmopar it has been 28 days since this pull request was last updated. |
|
@jasondegraw @Myoldmopar it has been 28 days since this pull request was last updated. |
|
@jasondegraw do you anticipate this progressing for I/O freeze? I'm just scanning PRs looking at milestones now while prepping for the review push over the next couple weeks. Thanks! (If I repeat this comment on any other PRs, my apologies for cross posting.) |
|
@jasondegraw @Myoldmopar it has been 28 days since this pull request was last updated. |
1 similar comment
|
@jasondegraw @Myoldmopar it has been 28 days since this pull request was last updated. |
|
@jasondegraw @Myoldmopar it has been 28 days since this pull request was last updated. |
3 similar comments
|
@jasondegraw @Myoldmopar it has been 28 days since this pull request was last updated. |
|
@jasondegraw @Myoldmopar it has been 28 days since this pull request was last updated. |
|
@jasondegraw @Myoldmopar it has been 28 days since this pull request was last updated. |
|
@jasondegraw I saw you made a commit here. Are you planning on pushing on this in the very near term to get this into the 23.1 IO freeze next week? |
|
@Myoldmopar Yes, working on it right now. |
|
@jasondegraw it has been 7 days since this pull request was last updated. |
14 similar comments
|
@jasondegraw it has been 7 days since this pull request was last updated. |
|
@jasondegraw it has been 7 days since this pull request was last updated. |
|
@jasondegraw it has been 7 days since this pull request was last updated. |
|
@jasondegraw it has been 7 days since this pull request was last updated. |
|
@jasondegraw it has been 7 days since this pull request was last updated. |
|
@jasondegraw it has been 7 days since this pull request was last updated. |
|
@jasondegraw it has been 7 days since this pull request was last updated. |
|
@jasondegraw it has been 7 days since this pull request was last updated. |
|
@jasondegraw it has been 7 days since this pull request was last updated. |
|
@jasondegraw it has been 7 days since this pull request was last updated. |
|
@jasondegraw it has been 7 days since this pull request was last updated. |
|
@jasondegraw it has been 7 days since this pull request was last updated. |
|
@jasondegraw it has been 7 days since this pull request was last updated. |
|
@jasondegraw it has been 7 days since this pull request was last updated. |
|
@mitchute This PR has now been rehabilitated and needs to get back into the review queue. |
|
@JasonGlazer you reviewed this back in yon day. Would you be able to take a look and refresh your memory / review? |
|
@mitchute sure I will review. Just let me dust off a few cobwebs.... |
mitchute
left a comment
There was a problem hiding this comment.
Thanks @jasondegraw. I think you said you were still tidying up a few things, but I wanted to point this out.
|
|
||
| --- | ||
|
|
||
| The EnergyPlus native CSV output is a useful new feature but it eliminates the need for “ReadVarsESO”. “ReadVarsESO” previously had the capability to use “.rvi” or “.mvi” file types. The “.rvi” file was used to order and filter the reporting variables while the “.mvi” was used to order and filter meter variables. A need for unit conversions in the native CSV output has also been raised. This was previously possible using the convertESOMTR executable. |
There was a problem hiding this comment.
Previously? Doesn't it still do that?
There was a problem hiding this comment.
I wasn't the author, so I can only say that you can probably read that as "currently".
| "OutputControl:RVI": "keys", | ||
| "OutputControl:MVI": "keys", | ||
| } |
There was a problem hiding this comment.
Yes, I was just trying to get things working again and picked the first thing I thought of.
| auto const &fields = instance.value(); | ||
| ip->markObjectAsUsed("OutputControl:RVI", instance.key()); | ||
|
|
||
| auto extensibles = fields.find("output_variables"); |
There was a problem hiding this comment.
These should probably match the fields in modify_schema. Editing the OutputControl:RVI names in the new IDF file has no effect on filtering.
There was a problem hiding this comment.
I'll be changing the name in modify_schema to match this. I'm not sure how the original name got lost, perhaps a rogue merge, but in any case, this is what the extension should be renamed to.
JasonGlazer
left a comment
There was a problem hiding this comment.
I focused on the NFP primarily. It wasn't clear to me if it is fully implemented and you want feedback on that also, or if you are still in the process of implementing.
| --- | ||
|
|
||
| ``` | ||
| OutputControl:RVI, |
There was a problem hiding this comment.
Can we make this a more logical input object name such as: "OutputControl:CSV:SelectedOutputVariableOrder"
There was a problem hiding this comment.
I'm not 100% against renaming with a more descriptive name, but I fear that this name would mask the intent of the object, which is to act like the RVI file in a ReadVars based workflow. There are some important differences, though, and if we can figure out a way to keep the connection clear while renaming, then I'd be on board.
| A9, \field Key Name 9 | ||
| A10; \field Key Name 10 | ||
|
|
||
| OutputControl:MVI, |
There was a problem hiding this comment.
and "OutputControl:CSV:SelectedMeterOrder"
There was a problem hiding this comment.
Same as the response on the RVI object.
| \key JtoKWH | ||
| \key JtoMJ | ||
| \key JtoGJ | ||
| \key InchPound |
There was a problem hiding this comment.
Please make sure this is consistent with ConvertESOMTR and the convert.txt file and sensitive to the name of the variable in how it is converted (Joules into therms, ton-hrs, kWh for example)
There was a problem hiding this comment.
Yes. Due to the passage of time, all of this is going to need to be checked through again.
|
@JasonGlazer This has all been implemented off an approved NFP, but things got a bit muddled and some secondary things (mainly the ISO8601 bit) got split off and merged. So I'm working through things to get the RVI/MVI parts (the main point of the NFP) back into mergeable shape. Basic functionality seems to be there, I'm working on getting things verified and we can work through the comments you've already made and get to the full implementation once I've fully verified things. |
As of this commit, both the RVI and MVI object are selecting which variables to include and which order.
Pull request overview
The current native CSV output is much faster than but not as flexible as the outputs that can be produced by the ReadVars post-processing workflow. Unit options are limited and there is no analog of the RVI/MVI file. Develop a replacement for RVI/MVI input that allows the user to select units, ordering of outputs, and other reporting options that will allow ReadVars users to transition to the built-in CSV workflow.
Pull Request Author
Add to this list or remove from it as applicable. This is a simple templated set of guidelines.
Reviewer
This will not be exhaustively relevant to every PR.