Forums » Operator News »
CDO and Julia - Watch out, Romeo!
Added by Ralf Mueller about 5 years ago
hi folks!
Some people have asked me if CDO can be used from Julia. So here is a little summary of how to do this.
First of all: It works pretty much the same way as it works with Python and Ruby. And as a bonus (for me) I don't have to write anything new. Instead the PyCall module can be used to load the installed python bindings like this
using PyCall
pycdo = pyimport("cdo")
cdo = pycdo.Cdo()cdo is an object very similar to the python version. Like many Julia packages PyCall can be installed withimport Pkg
Pkg.add("PyCall")Now you can use the
cdo object the usual way:cdo.topo("global_5", options = "-f nc", output="t.nc")
"t.nc"
cdo.outputkey("value",input="-stdatm,0,10000")
5-element Array{String,1}:
"# value"
"1013.25"
"271.9125"
"288"
"240.591"
In addition the option to return numpy or xarray arrays is still present because PyCall developers took this into account:
numpy_data = cdo.topo(returnArray="topo")
xarray_data = cdo.topo(returnXArray="topo")
# or in a chain:
cdo.setrtomiss(-100000,0,input="-expr,'logTopo=log(abs(topo)+0.1)' -topo,r10x10", returnArray="logTopo")
For more, please refer to the official docu of CDO and have a look at the python related tests. That should provide a good insight in what you can to with it.
Don't hesitate to ask right here!
cheers + bye, Romeo!
ralf