r2r_ctd.accessors

Adds an .r2r accessor to the xarray.Dataset objects in use within this software.

Mostly these are wrappers around functions in r2r_ctd.derived for nice syntax. Instead of writing:

get_longitude(ds)

I could write:

ds.r2r.longitude

While that example isn’t very short, some of the more involved derived products benefit nicely from this e.g.:

get_or_write_derived_file(ds, "con_report", make_con_report)

Makes the configuration report, with the accessor pattern, this becomes as simple as getting the longitude:

d2.r2r.con_report

All that complexity is hidden from me. Does it need to be that complex? Probably, since that function checks the cache, and if missed, runs a while routing within the companion container to get the results.

Attributes

Classes

Module Contents

r2r_ctd.accessors.logger
class r2r_ctd.accessors.R2RAccessor(xarray_obj: xarray.Dataset)
_obj
property latitude: float | None

Simple wrapper around get_latitude()

property longitude: float | None

Simple wrapper around get_longitude()

property lon_lat_valid: bool

Caching wrapper around check_lon_lat_valid()

property time: datetime.datetime | None

Simple wrapper around get_time()

property time_valid: bool

Caching wrapper around check_time_valid()

property all_three_files: bool

Caching wrapper around check_three_files()

time_in(dt_range: r2r_ctd.breakout.Interval) bool

Caching wrapper around check_dt()

lon_lat_in(bbox: r2r_ctd.breakout.BBox) bool

Caching wrapper around check_lon_lat()

property con_report: str | None

Caching wrapper around make_con_report()

property cnv_24hz: str | None

Caching wrapper around make_cnvs()

Will generate the cnv_1db() as a side effect if not already done.

property cnv_1db: str | None

Caching wrapper around make_cnvs()

Will generate the cnv_24hz() as a side effect if not already done.

property bottles_fired: bool

This cast has bottle trip records in its bl file.

A trip record has 5 components:

  • sequence (int)

  • carrousel position (int)

  • timestamp (time string)

  • scan start (int)

  • scan end (int)

This works by checking each line to see if any of the 4 “int” components parse as ints and returning true if any of them can.

The bl file records every attempt to close a bottle and does not necessarily reflect how many bottles actually closed

write_con_report(breakout: r2r_ctd.breakout.Breakout) None

Actually write the configuration report files to disk.

write_cnv(breakout: r2r_ctd.breakout.Breakout, cnv: Literal['cnv_24hz', 'cnv_1db']) None

Actually write the derived cnv files to disk.