There is a newer version of the record available.

Published March 26, 2026 | Version 1.2.0

ctdam: A python package for conversion, processing and plotting of CTD data

Authors/Creators

  • 1. German Marine Research Alliance (DAM)

Description

 

Intro

Welcome to the ctdam software package, a library to help with all the
different stages in working with CTD data. For now, it focuses only on
Sea-Bird CTD data, but we are open to extend to other CTD data types in
the future. At the moment, the focus remains on fast and reliable
conversion and processing of Sea-Birds .hex files. Data and metadata are
stored inside python objects, with the possibility to export native .cnv
files, as well as NetCDFs. In general, there are parsers for all the
different Sea-Bird file formats: .hex, .xmlcon, .bl, .btl and .cnv .

Conversion

For conversion of raw CTD data, only a .hex file and its corresponding
.xmlcon file are needed. Then, you can simply do:

 

from ctdam.conv import decode_hex

converted_ctd_data = decode_hex('sbs_data/hex/EMB356_11-1.hex')

 

This assumes that the .xmlcon resides in the same directory as the .hex
and is also using a similar name. The code snippet would yield you a
`CTDData` object, a very general representation of CTD data and metadata
of a single cast. You could for example do some processing on this data.

Processing

To process CTD data, one needs to define workflow files, called
'procedures', .toml files which correspond to python dictionaries and
e.g. look like this:

 

processing_config = {
    "output_type": "cnv",
    "output_dir": ".",
    "modules": {
        "airpressure": {},
        "wildedit_geomar": {'std2': 7},
        "wfilter": {},
        "celltm": {},
        "alignctd": {'Oxygen': 3},
        "SA_from_SP_Baltic": {},
        "binavg": {},
    },

}

 

All processing module behaviour can be modified via key-values, as seen
for 'wildedit_geomar' and 'alignctd'. In the example
config you can also see, that the native Sea-Bird processing modules can
be mixed with custom ones (airpressure) and all gsw functions
(SA_from_SP_Baltic). The Sea-Bird ones are either
taken from seabirdscientific or are more efficient rewrites that stick to the same core logic. Its
also possible to use the original Sea-Bird processing binaries, as long
as they are installed on your machine.

In order to process the converted data from above, you would go ahead
and do:

 

from ctdam.proc import Procedure

processed_ctd_data = Procedure(processing_config).run(converted_ctd_data)

This again results in a `CTDData` instance, which you now could plot.

Plotting

This library uses bokeh for generating interactive
plots, that can be viewed inside your webbrowser:

from ctdam.vis import basic_bokeh_plot

basic_bokeh_plot(processed_ctd_data)

The resulting plot of this operation can be seen here.

The .html files generated like this, are self-contained and can be
shared easily without the need of the original data or external tooling.

Data export

To write the data back to disk, two output methods are currently
supported, Sea-Bird-like .cnv and NetCDF. In order to write the
converted and processed 'EMB356.hex' as .cnv to disk, just
do:

processed_ctd_data.to_cnv('processed_EMB356_11-1.cnv')

CLI

Instead of working inside a python environment, the same results can
also be obtained by using a command line interface, also called
'ctdam':

ctdam run sbs_data/hex/EMB356_11-1.hex proc_workflow.toml
ctdam plot EMB356_11-1.cnv -d '' -sm

With the first command, a processing workflow is used on a .hex file,
which also means, that its converted automatically. The second command
does plot the new .cnv file and save it in the same directory. Meaning
that we have literaly done the exact steps like above.

 

v1.2.0 (2026-03-26)

Chores

  • Reduce possible metadata errors for zenodo publishing (#18, 72d7b9e)

  • Update pyproject.toml to include netcdf dependencies (#19, cf3252b)

Continuous Integration

  • docs: Fix plot html path (#17, 074f165)

  • docs: Run gh-pages when 'docs' was used in commit message (#17, 074f165)

Documentation

  • Removed commented settings (#17, 074f165)

  • Replaced iframe in README with link to external plot page (#17, 074f165)

Features

  • Add function to convert NMA Coordinates to decimal (#19, cf3252b)

  • Function to convert ctd data to netcdf format (#19, cf3252b)

Testing

  • parser: Tests for to_netCDF function (#19, cf3252b)

Detailed Changes: v1.1.3...v1.2.0

Files

DAM-CTD-Software/ctdam-v1.2.0.zip

Files (222.6 kB)

Name Size Download all
md5:d308a954f3ccf57664c44117fe508a59
222.6 kB Preview Download

Additional details

Related works

Funding

Federal Ministry of Education and Research
Unterwegsdaten-2; Vorhaben: Entwicklung des CTD-Frameworks 03F0935D

Software

Repository URL
https://github.com/DAM-CTD-Software/ctdam
Programming language
Python
Development Status
Active