2016-10-06 1 views
1

Je suis l'erreur suivante en essayant d'écrire un objet xarray dans le fichier netcdf:« ValueError: chunksize ne peut pas dépasser la taille de la dimension » en essayant d'écrire xarray à netcdf

"ValueError: chunksize cannot exceed dimension size" 

Les données est trop grand pour ma mémoire et doit être fragmenté.
La routine est essentiellement comme suit:

import xarray as xr 
ds=xr.open_dataset("somefile.nc",chunks={'lat':72,'lon':144} 
myds=ds.copy() 
#ds is 335 (time) on 720 on 1440 and has variable var 
def some_function(x): 
    return x*2 
myds['newvar']=xr.DataArray(np.apply_along_axis(some_function,0,ds['var'])) 
myds.drop('var') 
myds.to_netcdf("somenewfile.nc") 

Donc, fondamentalement, je manipule tout le contenu et Réécriture. Néanmoins, les morceaux semblent être mauvais. Même avec rechunking à un tableau. Je ne peux pas réécrire ds. Une idée de comment suivre l'erreur ou la résoudre?

Version netCDF4 est la version 1.2.4
xarray (ancien Xray) est 0.8.2
version dask est 0.10.1

+0

Cela ressemble à un bug xarray. Nous devrions être en mesure de dépister cela si vous pouvez fournir un exemple autonome qui le reproduit. S'il vous plaît suivre sur GitHub: https://github.com/pydata/xarray/issues/1225 – shoyer

Répondre

2

Il était un problème du moteur dans la commande d'écriture. Vous devez changer le moteur de netcdf4 (par défaut) à scipy si vous utilisez des morceaux!

myds.to_netcdf("somenewfile.nc",engine='scipy') 

Le package netcdf4 n'est PAS capable d'écrire de tels fichiers.