-
Notifications
You must be signed in to change notification settings - Fork 225
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
grdfilter wrapper #612
grdfilter wrapper #612
Conversation
💖 Thanks for opening this pull request! 💖 Please make sure you read our contributing guidelines and abide by our code of conduct. A few things to keep in mind:
|
I think the changes in the init.py were blocked. But it's just to add call gridfilter |
pygmt/__init__.py
Outdated
@@ -19,7 +19,7 @@ | |||
from .sampling import grdtrack | |||
from .mathops import makecpt | |||
from .modules import GMTDataArrayAccessor, config, info, grdinfo, which | |||
from .gridops import grdcut | |||
from .gridops import grdcut, gridfilter |
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.
from .gridops import grdcut, gridfilter | |
from .gridops import grdcut, grdfilter |
Just a small typo, that's why it's not importing 😃
Thanks for opening this PR @carocamargo. Once you fix the typo, you should be able to start using Let me know how much you want to work on this PR, depending on your time/Python familiarity: Level 1. Just happy that it works, and want to get on with other stuff. |
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.
Another issue is that you're making changes to your "master" branch. It's OK but it will cause troubles after we merging this PR. It's always better to make changes in a new branch.
@@ -20,13 +20,15 @@ | |||
|
|||
@fmt_docstring | |||
@use_alias( |
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.
You're changing the alias settings for grdcut
. That's incorrect. You should revert the changes here and add decorators @fmt_docstring
, @use_alias
and @kwargs_to_strings
just before the grdfilter
function, i.e., each function has its own decorators.
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.
Ok.. I thought they could be the same. Thanks!
pygmt/gridops.py
Outdated
""" | ||
|
||
filter a grid file in the time domain using one of the selected convolution | ||
or non-convolution isotropic or rectangular filters and compute distances | ||
using Cartesian or Spherical geometries. The output grid file can optionally | ||
be generated as a sub-region of the input (via -R) and/or with new increment | ||
(via -I) or registration (via -T). In this way, one may have “extra space” in | ||
the input data so that the edges will not be used and the output can be within | ||
one half-width of the input edges. If the filter is low-pass, then the output | ||
may be less frequently sampled than the input. | ||
|
||
Parameters | ||
---------- | ||
grid : str or xarray.DataArray | ||
The file name of the input grid or the grid loaded as a DataArray. | ||
outgrid : str or None | ||
The name of the output netCDF file with extension .nc to store the grid | ||
in. | ||
{F} : str | ||
Name of filter type you which to apply, followed by the width | ||
b: Box Car; c: Cosine Arch; g: Gaussian; o: Operator; m: Median; p: Maximum Likelihood probability; h: histogram | ||
{D}: str | ||
Distance flag, that tells how grid (x,y) rrlated to the filter width as follows: | ||
flag = p: grid (px,py) with width an odd number of pixels; Cartesian distances. | ||
|
||
flag = 0: grid (x,y) same units as width, Cartesian distances. | ||
|
||
flag = 1: grid (x,y) in degrees, width in kilometers, Cartesian distances. | ||
|
||
flag = 2: grid (x,y) in degrees, width in km, dx scaled by cos(middle y), Cartesian distances. | ||
|
||
The above options are fastest because they allow weight matrix to be computed only once. The next three options are slower because they recompute weights for each latitude. | ||
|
||
flag = 3: grid (x,y) in degrees, width in km, dx scaled by cosine(y), Cartesian distance calculation. | ||
|
||
flag = 4: grid (x,y) in degrees, width in km, Spherical distance calculation. | ||
|
||
flag = 5: grid (x,y) in Mercator -Jm1 img units, width in km, Spherical distance calculation. | ||
|
||
Returns | ||
------- | ||
ret: xarray.DataArray or None | ||
Return type depends on whether the *outgrid* parameter is set: | ||
- xarray.DataArray if *outgrid* is not set | ||
- None if *outgrid* is set (grid output will be stored in *outgrid*) | ||
""" |
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.
The indentation of the docstrings looks wrong.
I'm new to all github things.. This is the only way that I know how to commit the changes... |
…with each owns decorators
I wouldn't mind working on this function, even up to Level 3... but as you can see my github knowledge is quite limited |
Excellent, we'll try to guide you along then (let us know if you have any questions), there's always a first time for everyone 😄 I'll close this PR since you've got a parallel one open at #616. |
Added grdfilter function to the gridops.py file, and modified the .init.py to call the new function as well.
Grdfilter is a wrapper of the grdfilter function of GMT.
Given an input grid (either a datarray or a netcdf file), it applies a filter (of chosen type and length), and returns the filtered field.
Grdfilter function was made by modifying the grdcut function.