Comments (4)
Thanks for reporting! That's a great point. You are right that ESMF's error message is sort of hard to decipher.
where you would put this check (for example read the log file from ESMF/use something existing routine inside if
esmfpy
/check the bounds inxesmf
when creating the regridder)?
I actually added explicit checking at several places in xesmf (at Python level, i.e. the latter approach), to prevent running into ESMF error; one common error is calling conservative regridding when the boundaries are not defined.
But your case is tricker that performing explicit checking in Python needs fairly complicated code. Just a sanity check like lat1.min() < lat2.max()
is easy, but scanning for overlaps should actually be part of regridding, not preprocessing... In this case, loading the LogFile (the former approach) probably makes more sense.
One thing I need to confirm (before PR or code change) is whether nothing to write
is specific to writing offline weight files. Maybe this error won't not exist with online weight retrieve (#11), say if an empty numpy array is returned in the case of no overlapping cells. @bekozi can probably answer this better 😀
from xesmf.
@leifdenby I'm assuming the unmapped action is set to ignore?
Maybe this error won't not exist with online weight retrieval (#11), say if an empty numpy array is returned in the case of no overlapping cells.
I'm not sure what will happen with disjoint geometries and online weight retrieval...will have to test. Returning zero weights makes sense, but it is normal ESMF behavior to bail out with no geometry overlap. We have an open ESMF internal ticket to better handle the logging for this case. There is talk about implementing a costly grid validation option that could eventually be useful here.
But your case is trickier that performing explicit checking in Python needs fairly complicated code.
We implemented this in ocgis, and it does get mildly complex. Disjoint checks need to account for regridding type (centers v corners), coordinate systems, longitude wrapping (-180/180 v 0/360), and masking (not sure we actually account for this).
for example read the log file from ESMF
We have talked about implementing something like this. It might be nice to simply read the log output into an exception string. Ideally, ESMPy would capture the ESMF return code and map it to a user-friendly exception, but we are not there yet.
from xesmf.
I'm assuming the unmapped action is set to ignore?
I set unmapped_action=ESMF.UnmappedAction.IGNORE
by default. ESMF.UnmappedAction.ERROR
requires the target grid to be fully covered by the source grid, which is generally not true. It will indeed throw an error for disjoint grids, but will also throw an error for other reasonable cases like when the target grid is larger than the source grid.
from xesmf.
I wanted to quickly follow-up on this just in case. Are you waiting on anything from me?
The choice of unmapped action flag is up to the client of course, and I can see the logic for xesmf using the IGNORE
flag. My understanding is that the default ERROR
setting in ESMF was chosen because the original global modeling grids were expected to have matching spatial domains.
from xesmf.
Related Issues (20)
- After conda update, problem with cf_xarray: "Receive multiple variables for key 'longitude': ['i', 'lon']" HOT 4
- installation impossible with anaconda HOT 3
- MOAB support in ESMF 8.1.0 HOT 1
- repo not maintained see https://github.com/pangeo-data/xESMF
- ValueError: Dimensions {'bounds'} do not exist. Expected one or more of ('lon', 'bnds') HOT 1
- Example of interpolating 6 tiles cube-sphere grid to lat-lon grid HOT 2
- Error writing log file HOT 1
- xESMF regridding showing repeated values at latitude poles? HOT 2
- xESMF error after 12+ hour script run in downscaling grid/upsampling data HOT 2
- Misrepresentation of the number of precipitation events HOT 1
- ImportError: The ESMF shared library did not load properly. HOT 1
- How does xesmf treats grid cell with Nan values? HOT 1
- Hi, want to regrid wrfout (rainc+rainnc) data HOT 1
- ModuleNotFoundError: No module named 'ESMF' HOT 6
- ValueError: {'longitude', 'latitude'} are not variables in the underlying object. {'longitude', 'latitude'} are dimensions with no index.
- Using xesmf to efficiently regrid data to another resolution including vertical dimension
- Issue xe.regridder(); cannot reshape array of size A*B*C*D into shape (A, B, C, D) HOT 1
- Not Found for url
- pytest reports PIO errors HOT 1
- regrid velocity vector from tripolar grid to regular lat-lon grid
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 xesmf.