Changelog¶
Release 1.2.0¶
2026-06-08
Support for 3.0.0 and 3.2.0 schema RSK files with new table structure and multi-schedule
Stricter derive-dependency policy: derive methods no longer silently auto-derive an all-NaN dependency. A required channel that exists but is entirely NaN (e.g. sea pressure or salinity) now raises
ValueErrorinstead of being overwritten. An absent sea pressure channel is still auto-derived (viaderiveseapressurewith default atmospheric pressure) but now emits aUserWarning. Salinity is never auto-derived; an absent or all-NaN salinity channel raises. On 3.0.0+ files (where derived columns are pre-created as all-NaN), derive in order:deriveseapressurethenderivesalinitythen salinity-dependent derives (derivesoundspeed,derivesigma,deriveSA,derivetheta,derivebuoyancy,deriveO2).Fixed multi-schedule cross-fill (
getrefdataset/filldataset): the reference dataset is now built from rows where any requested channel is non-NaN and is forward-filled per channel, so derivations whose inputs live on different schedules (e.g.deriveO2saturation, where O2 is on one schedule and temperature on another) are populated instead of all-NaNAdded
pyrsktools.routines, a package of standalone array-in / array-out processing functions. Each routine lives in its own versioned file with its own__version__, depends only on the standard scientific stack, and can be lifted into another project unchanged.Added the
correcttempADCcalroutine, which removes the periodic once-per-minute A2D self-calibration outliers from a temperature series, and the matchingRSK.correcttempADCcalpost-processor, which adds atemperature_correctedchannel inheriting the source temperature channel’s instrument type and units. On files with no confirmable self-cal signature it makes no change and returns the series unchanged (no error, matchingcorrecthold), rather than fabricating a correction.Added
RSK2RSKFULLfor exporting full 3.0.0+ schema RSK files (supports both v3.0.0 and v3.2.0 schemas)Added a demo Jupyter notebook for basic usage demonstration
Temperature channels are now renamed to descriptive names based on their sensor type (e.g.,
conductivity_cell_temperature,pressure_gauge_temperature) instead of generictemperature2,temperature3Updated
RSK2RSKbehaviour to handle different RSK schemasUse
instrumentChannel.channelOrderas the canonical mapping between channels and data columns, falling back tochannelIDwhen absentRSK.addchannelgained an optionalshortNameparameter, so a derived channel can take its source channel’s instrument type instead of the generic count default.Channels added in memory (e.g. via
RSK.addchannelor thecorrecttempADCcalpost-processor) are now written toinstrumentChannelsandrangingwith alabelonRSK2RSKexport, so Ruskin shows them under their display name (e.g.temperature_correctedas “Temperature Corrected”) instead of hiding the channel or showing it as “Temperature”Removed internal
hybridmode/hybriddataparameters from the publicRSK.getprofilesindicessignature; the cross-schedule indexing path used byplotprofilesnow lives in a private helperalignchannelnow supportslagunits="seconds"plotprofilesuses scatter plots instead of line plots for better multi-schedule visualisationAdded
showLegendandreferenceThresholdoptions for plot functionsRSK.deriveO2unit parameter now accepts either upper or lower caseUpdated
RSK.deriveBPRto include updated channel listsFixed
RSK2RSKFULLto produce Ruskin-readable RSK files (schema-aware channel/data table writes, globally unique data row IDs, downsample cache cleanup)Fixed
RSK.computeprofilesassigning a duplicateregionIDto the trailing single cast of a deployment that ends mid-profile (unequal up/down cast counts), which crashedRSK2RSKexport with a UNIQUE-constraintIntegrityErrorFixed
RSK.deriveBPRcrashing on multi-schedule files: it now passes channellongNamestrings (notChannelobjects) to the cross-fill helpers, so the BPR pressure/temperature columns are matched instead of droppedFixed
RSK.centrebursttimestampraising “This method only applies to wave data” on genuine burst files: a v3.x BURST schedule carriesBurstInforather thanWaveInfo, so the method now resolves the single wave/burst schedule and accepts eitherFixed
RSK2CSVnot writing profiles for the second and later schedules of a multi-schedule file, where the per-profile loop variable shadowed thedirectionargument and raised “Invalid cast direction: u”Fixed
RSK2RSKFULLraisingsqlite3.ProgrammingErrorwhen an RSK has a geodata region, by writing the 5thregionGeoDatacolumn (source) the 3.0.0 schema expectsFixed opening older-schema RSK files (roughly 2.0.0 through 2.18.x) that raised
sqlite3.OperationalError: no such columnforregion.collapsedorregionPlateau.refUnit;RSKFullReadernow introspects the real tables and drops any requested column the file’s schema does not exposeFixed
derivethetaandderivesigmaraisingno field of name absolute_salinitywhen reusing an existing Absolute Salinity channel on multi-schedule filesImproved the stability of
RSK.computeprofilesand profile detectionFixed
RSK.trimremoving incorrect profile indicesFixed region profile order being read/calculated incorrectly
Fixed channels’ derived status being processed improperly
Fixed
deriveSAnot recognising latitude and longitude at 0_despikemade NaN-safe usingnp.nanstdand finite masksFixed
plotdatacast direction displayFixed
alignchannelerror whenlagunits="seconds"Corrected several docstrings to match actual behaviour (e.g.
deriveAPTacceleration-coefficient matrix shape,plotTSy-axis temperature type,deriveC25output units,removeloopsreturn type, andalignchannelshiftfilloptions)
Release 1.1.2¶
2025-10-06
DeriveSA now recognizes latitude and longitude at 0 correctly
Fixed a bug where channels’ derived status were processed improperly
Fixed a bug where the region profile order was calculated incorrectly
Fixed a bug where the region profile order was read incorrectly from the RSK file
Fixed a bug where the alignchannels encountered an error when lagunit == ‘seconds’
Fixed a bug where RSK.trim removed incorrect profile indices
Release 1.1.1¶
2022-11-09
Support “EPdesktop” RSK files up to the latest version (from v1.13.4 to v2.18.2)
Release 1.1.0¶
2022-09-09
New method RSK.deriveAPT() to derive triaxial accelerations and temperature from the accelerometer period data
pyRSKtools now supports reading data from RBR cervello and RBR cervata
Release 1.0.0¶
2022-08-22
Initial release 🎉