Forums » Operator News »
CDO and Julia - Watch out, Romeo!
Added by Ralf Mueller about 4 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