Skip to content
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

load_earth_mask: Keep data's encoding to correctly infer data's registration and gtype information #2632

Merged
merged 3 commits into from
Aug 16, 2023

Conversation

seisman
Copy link
Member

@seisman seisman commented Aug 16, 2023

Description of proposed changes

See #2629 for the bug report.

The bug is because:

  1. In the GMT accessor, we rely on grid.encoding["source"] to determine the grid's registration and gtype
  2. For the earth_mask dataset, we use return grid.astype("int8"). It copies the old xarray object to a new one, converts the new grid's data array to int8 type and returns the new xarary object. (ref: https://docs.xarray.dev/en/stable/generated/xarray.DataArray.astype.html)
  3. During the "int8" conversion, the grid.encoding information is lost.

This PR fixes the bug by directly working on the grid's data array. I also updated the test to check if the returned grid has the correct gtype.

Closes #2629.

Reminders

  • Run make format and make check to make sure the code follows the style guide.
  • Add tests for new features or tests that would have caught the bug that you're fixing.
  • Add new public functions/methods/classes to doc/api/index.rst.
  • Write detailed docstrings for all functions/methods.
  • If wrapping a new module, open a 'Wrap new GMT module' issue and submit reasonably-sized PRs.
  • If adding new functionality, add an example to docstrings or tutorials.
  • Use underscores (not hyphens) in names of Python files and directories.

Slash Commands

You can write slash commands (/command) in the first line of a comment to perform
specific operations. Supported slash commands are:

  • /format: automatically format and lint the code
  • /test-gmt-dev: run full tests on the latest GMT development version

@seisman
Copy link
Member Author

seisman commented Aug 16, 2023

BTW, the upstream discussions in pydata/xarray#1297 and pydata/xarray#1614 provide more background information.

@seisman seisman added the bug Something isn't working label Aug 16, 2023
@seisman seisman added this to the 0.10.0 milestone Aug 16, 2023
@seisman seisman changed the title load_earth_mask: Fix dataset's gtype information load_earth_mask: Keep data's encoding to correctly infer data's registration and gtype information Aug 16, 2023
@seisman seisman added the needs review This PR has higher priority and needs review. label Aug 16, 2023
Copy link
Member

@weiji14 weiji14 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, just one minor suggested check on the dtype for test_earth_mask_01d_with_region

pygmt/tests/test_datasets_earth_mask.py Show resolved Hide resolved
Co-authored-by: Wei Ji <23487320+weiji14@users.noreply.github.com>
@seisman seisman added final review call This PR requires final review and approval from a second reviewer and removed needs review This PR has higher priority and needs review. labels Aug 16, 2023
@seisman seisman merged commit e4ee800 into main Aug 16, 2023
16 checks passed
@seisman seisman deleted the earth-mask-gtype branch August 16, 2023 14:25
@seisman seisman removed the final review call This PR requires final review and approval from a second reviewer label Aug 16, 2023
This pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

datasets.load_earth_mask: Unexpected display of remote dataset "earth_mask"
4 participants