'Compressing a netCDF file with the pynco package
I'm interested in compressing a NetCDF file in python using the pynco
package. From the command line, I would usually use:
nccopy -d 3 input_file.nc output_file.nc
In python, I have tried the following:
from nco import Nco
Nco.nccopy(input='input_file.nc', output='output_file.nc', options=['-d 1'])
This produces an attribute error 'Nco' has no attribute 'nccopy'
. Is nccopy
supported within pynco
?
Solution 1:[1]
nccopy
is a netCDF command, not an NCO command. However, ncks
can do nearly everything nccopy
does, and a whole lot else. To compress as in your example, try
Nco.ncks(input='input_file.nc', output='output_file.nc', options=['-7 -L 1'])
Solution 2:[2]
Just to list an alternative to pynco
, you can also do this within python using the cdo
package:
from cdo import *
cdo = Cdo()
cdo.copy(input='input.nc',output='output.nc',options='-f nc4 -z zip_7')
You can choose the compression level from light (zip_1
) all the way up to most compressed (zip_9
), I usually find that going above level 4 or 5 there is not much gain (i.e. additional size saving very minor) for a lot of pain (command takes a lot longer!). I think the -f nc4
to ensure netCDF4 output is perhaps not needed if the input is netCDF4 standard, but it doesn't hurt to put it anyway.
You can install cdo with
pip3 install cdo
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Charlie Zender |
Solution 2 |