ClimaOcean.jl icon indicating copy to clipboard operation
ClimaOcean.jl copied to clipboard

OceananiganPythonInterface or ClimaOceanPythonInterface auxiliary package for collecting PythonCall utilities?

Open glwagner opened this issue 3 months ago • 5 comments

Right now ClimaOcean defines an extension for PythonCall which allows one to use the copernicusmarine python package:

https://github.com/CliMA/ClimaOcean.jl/blob/main/ext/ClimaOceanPythonCallExt.jl

As discussed over on Oceananigans PR https://github.com/CliMA/Oceananigans.jl/pull/4782 with @cjdoris and @vchuravy, it makes more sense to wrap this function in a new package (CopernicusMarine.jl?) which provides a wrapper around the python package copernicusmarine.

Then, ClimaOcean will have an extension ClimaOceanCopernicusMarine which hooks into the Julia package to define datasets / extend Metadata for CopernicusMarine.jl.

also cc @giordano

glwagner avatar Sep 13 '25 15:09 glwagner

Possibly we want to write a single wrapper package for all python packages that we want to use to interface with ClimaOcean (this will lower the bar for adding python capabilities to ClimaOcean). Discussed here:

https://github.com/CliMA/Oceananigans.jl/pull/4782#issuecomment-3288591783

glwagner avatar Sep 13 '25 16:09 glwagner

Having a single package for all the python integrations seems like a reasonable compromise. You can always split them out later if necessary.

cjdoris avatar Sep 14 '25 09:09 cjdoris

related: https://github.com/NumericalEarth/CopernicusMarine.jl

navidcy avatar Oct 11 '25 23:10 navidcy

I will reopen this issue to discuss the fate of other Python packages we want to use. In particular, #602 requires Python to download and interact with Veros. Shall we put this in another package? However, methods in #602 are tightly integrated with ClimaOcean (for example, the set!(::VerosSimulation, args..) method) to justify keeping this extension in ClimaOcean. What do people think?

simone-silvestri avatar Oct 15 '25 09:10 simone-silvestri

You could consider a new package called OceananigansPythonInterface.jl which collects a lot of PythonCall stuff.

glwagner avatar Oct 15 '25 14:10 glwagner