Giter Club home page Giter Club logo

Comments (4)

JiaweiZhuang avatar JiaweiZhuang commented on May 26, 2024

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 in xesmf 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.

bekozi avatar bekozi commented on May 26, 2024

@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.

JiaweiZhuang avatar JiaweiZhuang commented on May 26, 2024

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.

bekozi avatar bekozi commented on May 26, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.