Ian, > I'm running into a crash while trying to construct a > tri.LinearTriInterpolator. Here is the short version of the code: > > import netCDF4 > import matplotlib.tri as tri > > var = netCDF4.Dataset('filename.cdf').variables > x = var['x'][:] > y = var['y'][:] > data = var['zeta_max'][:] > elems = var['element'][:, :]-1 > > triang = tri.Triangulation(x, y, triangles=elems) > > # this crashes the python interpreter > interp = tri.LinearTriInterpolator(triang, data) > > The data arrays (x, y, data, elems) are fairly large (>1 mio elements), > all > represented as numpy arrays (as returned by netCDF4). The 'data' array is > a > masked array and contains masked values. > > If somebody cares, I'd be able to post a link to the netCDF data file > causing this. > > All this happens when using matplotlib 1.3.1, Win32, Python 2.7. > > Any help would be highly appreciated! > Regards Hartmut > > Hartmut, > That is an excellent issue report; all the relevant information and > nothing extraneous. Hence the quick response. > The second argument to TriLinearInterpolator (and other TriInterpolator > classes), i.e. your 'data' array, is expected to be an array of the same > size as the 'x' and 'y' arrays. It is not expecting a masked array. If a > masked array is used the mask will be ignored, and so the values behind > the mask will be used as though they were real values. If my memory of > netCDF is correct, this will be whatever 'FillValue' is defined for the > file, but it may depend on what is used to generate the netCDF file. > I would normally expect the code to work but produce useless output. A > crash is possible though. It would be best if you could post a link to > the netCDF file and I will take a closer look to check there is not > something else going wrong.
Thanks for the quick response! Here is the data file: http://tinyurl.com/ms7vzxw. I did some more experiments. The picture stays unchanged, even if I fill the masked values in the array with some real numbers (I'm not saying that this would give me any sensible results...): import netCDF4 import matplotlib.tri as tri var = netCDF4.Dataset('maxele.63.nc').variables x = var['x'][:] y = var['y'][:] data = var['zeta_max'][:] elems = var['element'][:, :]-1 triang = tri.Triangulation(x, y, triangles=elems) data = data.filled(0.0) # this still crashes the python interpreter interp = tri.LinearTriInterpolator(triang, data) Thanks again! Regards Hartmut --------------- http://boost-spirit.com http://stellar.cct.lsu.edu ------------------------------------------------------------------------------ _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users