-
Notifications
You must be signed in to change notification settings - Fork 156
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add .util.sankey
and tutorial
#770
base: main
Are you sure you want to change the base?
Conversation
Thanks for this PR :) |
Thanks @daymontas1 for stepping up here, much appreciated :) You should be able to test the PR as is and see how you like it's usefulness, but there are a few things that I would like to see happen before we merge it:
Please feel free to ask about any of these steps if you need help :) |
Hi all, to simplify here, I would simply limit this functionality to pyam > 2 - we can do a version check for this on the fly and raise an error. |
message_ix/report/__init__.py
Outdated
@@ -141,6 +141,7 @@ | |||
"message::costs", | |||
"message::emissions", | |||
), | |||
("message::sankey", "concat", "out::pyam", "in::pyam"), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would get rid of this, and simply do the concatenation outside of reporter (e.g., in the jupyter notebook here)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I kept this for now as I don't know what the Reporter actually does and it seems useful to just get the dataframe format we need from the Reporter. But please elaborate :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have created a new file, sankey.py, within the report directory, which extracts Sankey diagram functionality from init.py. Fridolin (@glatterf42), could you please confirm if this is what we want? Additionally, I have updated the westeros_sankey.ipynb file to ensure compatibility with the new sankey.py file in the report directory. I have annotated these changes in the westeros_sankey.ipynb below. Also, in this case, the following line inside the init.py file must be either removed or commented out:
("message::sankey", "concat", "out::pyam", "in::pyam")
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, @daymontas1, these changes sound good to me. For the line that has become redundant, please remove it rather than commenting it out, this keeps the code clean.
Could you please push your changes to the branch so that we can take a look and see how the tests are doing?
If you don't have write access to @mabudz's fork, please let us know so that we can figure out a solution :)
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #770 +/- ##
=====================================
Coverage 95.5% 95.6%
=====================================
Files 46 47 +1
Lines 4340 4383 +43
=====================================
+ Hits 4148 4191 +43
Misses 192 192
|
be56f01
to
c45ad62
Compare
In today's team meeting, @SiddharthJoshi-Git mentioned that he is fine with merging this PR as is and providing feedback later on. So I'm happy to merge this once the tests pass, which ... seem kind of confused about which versions of Python they should be using. For message_ix, that is still 3.8 and not 3.13, so maybe we'll have to merge #881 first. |
* In recent pyam versions, get_variable_components moved to pyam.str
Create sankey diagram and add tutorial.
The approach here creates the sankey diagram by using the sankey plot function of the
pyam
package. This function requires a mapping dictionary. The mapping dict is created by using the newly created automatic reportmessage::sankey
and a utility functionsankey_mapper()
map_for_sankey
.This pull request is related to the draft pull request in message_data , which can be removed, since the sankey diagram has been implemented in the
pyam
package.Note
The new key is now only added when calling
Reporter.add_sankey()
.How to review
General approach should be reviewed. Also, I am not sure if the util function
sankey_mapper()
map_for_sankey()
is at the right place.PR checklist