From a48ca61bbbd445624a98efc21d741723ef698c9e Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Mon, 29 Apr 2024 13:52:58 -0400
Subject: [PATCH 01/30] fix latitude longitude encoding to float32
---
ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py | 3 +++
ocean_data_parser/parsers/utils.py | 4 +++-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
index 96a30669..c486021f 100644
--- a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
+++ b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
@@ -1201,6 +1201,9 @@ def _flag_bad_values(dataset):
"units": "degrees_east",
"standard_name": "longitude",
}
+ ds.encoding(
+ {"latitude": {"dtype": "float32"}, "longitude": {"dtype": "float32"}}
+ )
# Define dimensions
if "time" in ds and ds["time"].dims and ds["index"].size == ds["time"].size:
diff --git a/ocean_data_parser/parsers/utils.py b/ocean_data_parser/parsers/utils.py
index cc14b7a7..fd7028d7 100644
--- a/ocean_data_parser/parsers/utils.py
+++ b/ocean_data_parser/parsers/utils.py
@@ -116,7 +116,9 @@ def generate_variables_encoding(
for var in variables or ds.variables:
ds.encoding[var] = {}
- if "datetime" in ds[var].dtype.name:
+ if var in ds.encoding:
+ continue
+ elif "datetime" in ds[var].dtype.name:
ds[var].encoding.update(
time_variables_encoding or time_variables_default_encoding
)
From a321ed7702267081762d68d51baddba83dd19997 Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Mon, 29 Apr 2024 13:53:13 -0400
Subject: [PATCH 02/30] add time variable attributes
---
ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
index c486021f..8722f67c 100644
--- a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
+++ b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
@@ -1181,6 +1181,12 @@ def _flag_bad_values(dataset):
# ds["time"].encoding["units"] = "seconds since 1970-01-01T00:00:00Z"
elif self.start_dateobj:
ds["time"] = self.start_dateobj
+ else:
+ logger.warning("Unable to set time coordinate")
+ ds["time"].attrs = {
+ "long_name": "Time",
+ "standard_name": "time",
+ }
ds.attrs["time_coverage_resolution"] = (
pd.Timedelta(self.time_increment).isoformat()
From 194825597f030758dd9d3531ae90e2b8d8fcf4a7 Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Mon, 29 Apr 2024 13:53:26 -0400
Subject: [PATCH 03/30] add 2023-003-0003.ctd test file
---
.../ios/shell/cruise/CTD/2023-003-0003.ctd | 469 ++++++++++++++++++
1 file changed, 469 insertions(+)
create mode 100644 tests/parsers_test_files/dfo/ios/shell/cruise/CTD/2023-003-0003.ctd
diff --git a/tests/parsers_test_files/dfo/ios/shell/cruise/CTD/2023-003-0003.ctd b/tests/parsers_test_files/dfo/ios/shell/cruise/CTD/2023-003-0003.ctd
new file mode 100644
index 00000000..f6ac1ca3
--- /dev/null
+++ b/tests/parsers_test_files/dfo/ios/shell/cruise/CTD/2023-003-0003.ctd
@@ -0,0 +1,469 @@
+*2023/07/31 15:00:32.74
+*IOS HEADER VERSION 2.0 2016/04/28 2016/06/13 IVF16
+
+*FILE
+ START TIME : UTC 2023/03/14 20:44:59.000
+ TIME INCREMENT : 0 0 0 0.125 0 ! (day hr min sec ms)
+ NUMBER OF RECORDS : 70
+ DATA DESCRIPTION : CTD
+ FILE TYPE : ASCII
+ CRC : 2D9C409F
+ NUMBER OF CHANNELS : 7
+
+ $TABLE: CHANNELS
+ ! No Name Units Minimum Maximum
+ !--- -------------------------- --------------- -------------- --------------
+ 1 Pressure decibar 0.9149565 69.76853
+ 2 Depth metres 0.8486956 69.204
+ 3 Temperature:Primary 'deg C (ITS90)' 7.335775 7.486074
+ 4 Fluorescence:URU:Wetlabs mg/m^3 1.061 14.14367
+ 5 PAR uE/m^2/sec 0.1977778E-01 499.7496
+ 6 Oxygen:Dissolved:SBE mL/L 5.705647 10.24691
+ 7 Number_of_bin_records n/a 8 26
+ $END
+
+ $TABLE: CHANNEL DETAIL
+ ! No Pad Start Width Format Type Decimal_Places
+ !--- ---- ----- ----- ------ ---- --------------
+ 1 -99 ' ' 7 F ' ' 1
+ 2 -99 ' ' 7 F ' ' 1
+ 3 -99 ' ' 9 F ' ' 4
+ 4 -99 ' ' 8 F ' ' 3
+ 5 -99 ' ' 7 F ' ' 1
+ 6 -99 ' ' 7 F ' ' 2
+ 7 -99 ' ' 5 I I 0
+ $END
+ $REMARKS
+ This file converted from Sea-Bird file:
+ D:\Telework\2023-003\Processing\derive\2023-003-0003.cnv
+ $END
+
+*ADMINISTRATION
+ MISSION : 2023-003
+ AGENCY : IOS,Ocean Sciences Division, Sidney, B.C.
+ COUNTRY : Canada
+ PROJECT : Strait of Georgia Plankton
+ SCIENTIST : Young K.
+ PLATFORM : Neocaligus
+
+*LOCATION
+ GEOGRAPHIC AREA : Strait of Georgia
+ STATION : SC-04
+ EVENT NUMBER : 3
+ LATITUDE : 48 43.52300 N ! (deg min)
+ LONGITUDE : 123 24.91500 W ! (deg min)
+ WATER DEPTH : 88
+
+*INSTRUMENT
+ TYPE : Sea-Bird CTD
+ MODEL : SBE-25
+ SERIAL NUMBER : 0456
+
+ $TABLE: SENSORS
+ ! Name Abs Depth Serial No
+ ! ----------------------------------- -------------- ----------
+ Temperature ' ' 6566
+ Conductivity ' ' 5046
+ 'Pressure:Strain Gauge' ' ' 0573
+ PAR/Irradiance:Biospherical/Licor ' ' 4565
+ 'Fluorometer:WET Labs ECO-AFL/FL' ' ' FLRTD-2216
+ 'Oxygen:SBE 43' ' ' 3779
+ $END
+ $REMARKS
+ Software Version 1.59
+ $END
+
+*HISTORY
+
+ $TABLE: PROGRAMS
+ ! Name Vers Date Time Recs In Recs Out
+ ! -------- ------ ---------- -------- --------- ---------
+ SBE_IOS 4.3 2023/07/26 16:08:47 2792 2792
+ CLEAN 5.3 2023/07/26 16:09:14 2792 2792
+ CLIP 1.4.1 2023/07/26 16:16:07 2792 1473
+ DELETE 6.3 2023/07/26 16:49:44 1473 742
+ CTDEDIT 5.4.0 2023/07/27 16:45:29 742 707
+ BINAVE 4.2.1 2023/07/31 14:59:41 707 70
+ REMOVECH 8.2 2023/07/31 15:00:17 70 70
+ HDREDIT2 3.2 2023/07/31 15:00:32 ? ?
+ $END
+ $REMARKS
+ -CLEAN functions: 2023/07/26 16:09:14 20
+ Reset #RECS, MIN & MAX values in header.
+ Interpolation by Record Number, in Pressure:StrainGauge
+ Set event to last 4 characters of file name
+ -The following CLIP parameters were used.
+ Clip by Record Number Limits
+ First, Last Records = 1320, end from event list: clip.csv
+ Time Not Available in File
+ -The following DELETE parameters were used:
+ Surface Record Removal: Last Press Min
+ Maximum Surface Pressure (relative): 10.00
+ Surface Swell Pressure Tolerance: 1.00
+ Pressure NOT filtered.
+ Swells deleted. Warning message if pressure difference of 2.00
+ Drop rates < 0.30m/s (calculated over 5 points) will be deleted.
+ Drop rate applies in the range 10.00 to 60.13 dbars
+ Sample interval (from FILE section of header) = 0.125 seconds.
+ -CTDEDIT v5.4.0 2023/07/27 16:45:29
+ 35 records were deleted in this editing session.
+ No data values were changed.
+ -The following BINAVE parameters were used:
+ Bin channel = Press*
+ Averaging interval = 1.00
+ Minimum bin value = 0.000
+ Average value was used
+ Interpolated values were NOT used for empty bins
+ Channel 'NUMBER_OF_BIN_RECORDS' was added to file.
+ -REMOVECH 2023/07/31 15:00:17
+ The following CHANNEL(S) were removed:
+ Scan_Number
+ Conductivity:Primary [S/m]
+ Oxygen:Voltage:SBE [volts]
+ Descent_Rate [m/s]
+ Salinity:T0:C0 [PSS-78]
+ Flag
+ -HEADER EDITS: 2023/07/31 15:00:32
+ Applied edit header: D:\Telework\2023-003\Processing\doc\2023-003-HDR.TXT
+ Channel 1: Pressure [decibar]
+ Name: Pressure:StrainGauge ==> Pressure
+ Format: F10.3 ==> F7.1
+ Channel 2: Depth [metres]
+ Name: Depth:Salt_Water ==> Depth
+ Format: F10.3 ==> F7.1
+ Channel 4: Fluorescence:URU:Wetlabs [mg/m^3]
+ Name: Fluorescence:URU:Wetlabs:ECO-AFL ==> Fluorescence:URU:Wetlabs
+ Channel 6: Oxygen:Dissolved:SBE [mL/L]
+ Format: F8.3 ==> F7.2
+ Channel 5: PAR [uE/m^2/sec]
+ Format: F11.3 ==> F7.1
+ Channel 7: Number_of_bin_records [n/a]
+ Pad: ' ' ==> -99
+ $END
+
+*COMMENTS
+ SBE HEADER
+ Sea-Bird SBE25 Data File:
+ FileName = C:\Users\Plankton\Desktop\Neocaligus Files\2023-003 Mar Neo\CTD\202
+ 3-003-0003.hex
+ Software Version 1.59
+ Temperature SN = 6566
+ Conductivity SN = 5046
+ System UpLoad Time = Mar 14 2023 14:52:55
+ Latitude: 48 43.523 N
+ Longitude: 123 24.915 W
+ Station: SC-04
+ Depth: 88 m
+ ds
+ SBE 25 CTD V 4.1c SN 0456 03/14/23 21:52:16.865
+ external pressure sensor, range = 1450 psia, tcval = -17
+ xtal = 9437029 clk = 32767.333 vmain = 10.6 iop = 303 vlith = 5.8
+ ncasts = 3 samples = 7278 free = 637695 lwait = 0 msec
+
+ CTD configuration:
+ number of scans averaged = 1, data stored at 8 scans per second
+ real time data transmitted at 1 scans per second
+ minimum conductivity frequency for pump turn on = 1400
+ pump delay = 45 seconds
+
+ battery type = ALKALINE
+
+ 3 external voltages sampled
+ stored voltage # 0 = external voltage 0
+ stored voltage # 1 = external voltage 1
+ stored voltage # 2 = external voltage 4
+
+
+ S>
+ dh
+ cast 1 03/14 20:44:59 smpls 2271 to 5062 nv = 3 avg = 1 stp = switch of
+
+ S>
+ # nquan = 12
+ # nvalues = 2792
+ # units = specified
+ # name 0 = scan: Scan Count
+ # name 1 = prSM: Pressure, Strain Gauge [db]
+ # name 2 = depSM: Depth [salt water, m], lat = 49.00
+ # name 3 = t090C: Temperature [ITS-90, deg C]
+ # name 4 = c0S/m: Conductivity [S/m]
+ # name 5 = flECO-AFL: Fluorescence, WET Labs ECO-AFL/FL [mg/m^3]
+ # name 6 = sbeox0V: Oxygen raw, SBE 43 [V]
+ # name 7 = par: PAR/Irradiance, Biospherical/Licor
+ # name 8 = dz/dtM: Descent Rate [m/s]
+ # name 9 = sal00: Salinity, Practical [PSU]
+ # name 10 = sbeox0ML/L: Oxygen, SBE 43 [ml/l], WS = 1
+ # name 11 = flag: flag
+ # span 0 = 1, 2792
+ # span 1 = -0.169, 70.126
+ # span 2 = -0.334, 69.548
+ # span 3 = 0.0049, 8.2948
+ # span 4 = 0.446826, 3.718906
+ # span 5 = -0.1031, 17.0251
+ # span 6 = 0.0073, 3.5250
+ # span 7 = 1.7358e-02, 1.5069e+03
+ # span 8 = -1.181, 1.065
+ # span 9 = 3.6743, 36.6469
+ # span 10 = -2.4254, 24.8116
+ # span 11 = 0.0000e+00, 0.0000e+00
+ # interval = seconds: 0.125
+ # start_time = Mar 14 2023 20:44:59 [Instrument's time stamp, header]
+ # bad_flag = -9.990e-29
+ #
+ #
+ #
+ #
+ # 6566
+ # 30-Mar-21
+ # 1
+ # 0.00000000e+000
+ # 0.00000000e+000
+ # 0.00000000e+000
+ # 0.00000000e+000
+ # 0.000
+ # 4.38863047e-003
+ # 6.35904397e-004
+ # 2.17885761e-005
+ # 2.00806356e-006
+ # 1000.000
+ # 1.00000000
+ # 0.0000
+ #
+ #
+ #
+ #
+ #
+ # 5046
+ # 30-Mar-21
+ # 1
+ #
+ # 0.0000
+ # 2000.0000
+ # 0
+ #
+ # 0.00000000e+000
+ # 0.00000000e+000
+ # 0.00000000e+000
+ # 0.00000000e+000
+ # 0.0
+ # -9.57000000e-008
+ #
+ #
+ # -1.01780301e+001
+ # 1.44636430e+000
+ # 3.44987636e-004
+ # 6.10740135e-005
+ # -9.57000000e-008
+ # 3.2500e-006
+ #
+ # 0.00000000e+000
+ #
+ # 1.00000000
+ # 0.00000
+ #
+ #
+ #
+ #
+ #
+ # 0573
+ # 04-Feb-22
+ # 9.025408e+002
+ # -2.514637e-001
+ # -5.379807e-008
+ # 0.70000
+ #
+ #
+ #
+ #
+ #
+ # 4565
+ # 2021-02-24
+ # 1.00000000
+ # 0.00000000
+ # 3802281368.82000020
+ # 1.00000000
+ # -0.39620000
+ #
+ #
+ #
+ #
+ #
+ # FLRTD-2216
+ # 8-Mar-17
+ # 1.20000000e+001
+ #
+ # 0.0440
+ #
+ #
+ #
+ #
+ #
+ # 3779
+ # 15-Oct-21
+ # 1
+ #
+ #
+ # 0.0000
+ # 0.0000e+000
+ # 0.0000
+ # 0.00e+000
+ # 0.0000
+ # 0.0
+ #
+ #
+ #
+ # 5.1070e-001
+ # -0.4978
+ # -3.7778e-003
+ # 1.3556e-004
+ # -1.9966e-006
+ # 2.5826e+000
+ # 1.92634e-004
+ # -4.64803e-002
+ # 3.6000e-002
+ # 1.1100
+ # -3.3000e-002
+ # 5.0000e+003
+ # 1.4500e+003
+ #
+ #
+ #
+ #
+ # datcnv_date = Jul 18 2023 15:14:47, 7.26.7.129 [datcnv_vars = 9]
+ # datcnv_in = D:\Telework\2023-003\Unprocessed\2023-003-0003.hex D:\Telework\202
+ 3-003\Processing\doc\2023-003-ctd.xmlcon
+ # datcnv_skipover = 0
+ # datcnv_ox_hysteresis_correction = no
+ # filter_date = Jul 19 2023 08:44:09, 7.26.7.129
+ # filter_in = D:\Telework\2023-003\Processing\convert\2023-003-0003.cnv
+ # filter_low_pass_tc_A = 1.000
+ # filter_low_pass_tc_B = 0.500
+ # filter_low_pass_A_vars =
+ # filter_low_pass_B_vars = prSM
+ # wfilter_date = Jul 19 2023 08:45:02, 7.26.7.129
+ # wfilter_in = D:\Telework\2023-003\Processing\filter\2023-003-0003.cnv
+ # wfilter_excl_bad_scans = yes
+ # wfilter_action t090C = cosine, 8
+ # wfilter_action c0S/m = cosine, 8
+ # alignctd_date = Jul 19 2023 09:35:40, 7.26.7.129
+ # alignctd_in = D:\Telework\2023-003\Processing\wfilter\2023-003-0003.cnv
+ # alignctd_adv = sbeox0V 2.500
+ # celltm_date = Jul 19 2023 09:36:27, 7.26.7.129
+ # celltm_in = D:\Telework\2023-003\Processing\align\2023-003-0003.cnv
+ # celltm_alpha = 0.0400, 0.0000
+ # celltm_tau = 8.0000, 0.0000
+ # celltm_temp_sensor_use_for_cond = primary,
+ # Derive_date = Jul 19 2023 09:38:17, 7.26.7.129 [derive_vars = 2]
+ # Derive_in = D:\Telework\2023-003\Processing\celltm\2023-003-0003.cnv D:\Telewo
+ rk\2023-003\Processing\doc\2023-003-ctd.xmlcon
+ # derive_time_window_docdt = seconds: 1
+ # derive_ox_tau_correction = yes
+ # file_type = ascii
+ END*
+ Remarks from CTDEDIT:
+ CTDEDIT was used to remove a few records corrupted by shed wakes from
+ the bottom of the cast.
+ --------------------------------------------------------------------------------------
+
+ Data Processing Notes:
+ ----------------------
+ Oxygen:Dissolved, Fluorescence:URU:Wetlabs and PAR data are nominal and unedited
+ except that some records were removed at the top or bottom of many casts and bad
+ Oxygen:Dissolved points were removed from the bottom of many casts between events
+ #17 and 49.
+
+ CTD conductivity and salinity data were bad and were removed from all files.
+
+ Extracted chlorophylls samples were available from the surface. The comparison of
+ fluorescence values with chlorophyll followed the usual pattern of fairly close
+ agreement for CHL <1ug/L and Fluorescence ~30-40% of CHL for most samples where
+ CHL was >1ug/L.
+
+ Oxygen:Dissolved:SBE values cannot be confirmed as there was no calibration sampling
+ for dissolved oxygen. Surface saturation values were could not be determined in the
+ absence of salinity data, but for the cases where surface salinity bottle data were
+ available, those values were combined with CTD pressure and temperature to make an
+ estimate of surface saturation. Values found were 98%,106%,125%,102% and 97%, which
+ are reasonable for this region which is subject to great variability.
+
+ For details on the processing see document: 2023-003_Processing_Report.doc.
+!--1--- --2--- ---3---- ---4--- --5--- --6--- -7--
+!Pressu Depth Temperat Fluores PAR Oxygen Numb
+!re ure: cence: : er_o
+! Primary URU: Dissol ~bin
+! Wetlabs ved: _rec
+! SBE ords
+!------ ------ -------- ------- ------ ------ ----
+*END OF HEADER
+ 0.9 0.8 7.4861 12.270 499.8 10.25 23
+ 2.0 2.0 7.4382 13.075 211.1 9.71 12
+ 3.0 3.0 7.3432 14.144 102.0 8.13 12
+ 4.0 4.0 7.3358 13.318 53.3 6.98 12
+ 5.0 5.0 7.3406 8.983 37.9 6.49 11
+ 6.0 5.9 7.3476 5.491 27.6 6.27 11
+ 7.0 6.9 7.3596 2.666 21.4 6.15 12
+ 8.0 7.9 7.3758 2.003 17.5 6.12 11
+ 9.0 8.9 7.3827 1.948 14.2 6.11 11
+ 10.0 9.9 7.3848 2.007 11.8 6.10 11
+ 11.0 10.9 7.3852 1.945 9.7 6.08 12
+ 12.0 11.9 7.3854 1.834 8.1 6.07 10
+ 13.0 12.9 7.3859 1.962 6.7 6.06 10
+ 14.0 13.8 7.3862 1.864 5.6 6.06 11
+ 15.0 14.8 7.3889 1.909 4.6 6.03 10
+ 16.0 15.8 7.3928 1.852 3.8 6.04 10
+ 17.0 16.9 7.3920 1.864 3.1 6.05 9
+ 18.0 17.9 7.3914 1.832 2.5 6.04 9
+ 19.0 18.9 7.4011 1.802 2.1 6.02 9
+ 20.0 19.9 7.4050 1.732 1.7 5.98 9
+ 21.0 20.8 7.4032 1.566 1.4 5.96 9
+ 22.0 21.8 7.4025 1.421 1.2 5.95 9
+ 23.0 22.8 7.4011 1.465 1.0 5.94 9
+ 24.0 23.8 7.3994 1.497 0.8 5.93 9
+ 25.0 24.8 7.3983 1.407 0.7 5.92 9
+ 26.0 25.8 7.3975 1.417 0.6 5.91 9
+ 27.0 26.8 7.3981 1.357 0.5 5.90 9
+ 28.0 27.8 7.3982 1.375 0.4 5.89 9
+ 29.0 28.7 7.3989 1.425 0.4 5.89 9
+ 30.0 29.8 7.3989 1.395 0.3 5.88 9
+ 31.0 30.7 7.3990 1.305 0.3 5.86 9
+ 32.0 31.7 7.3993 1.391 0.2 5.87 10
+ 33.1 32.8 7.3995 1.331 0.2 5.87 9
+ 34.0 33.8 7.3997 1.305 0.2 5.85 9
+ 35.0 34.7 7.3997 1.287 0.1 5.86 8
+ 36.0 35.7 7.3998 1.276 0.1 5.85 9
+ 37.0 36.7 7.4004 1.317 0.1 5.85 9
+ 38.0 37.7 7.4008 1.270 0.1 5.85 10
+ 39.0 38.7 7.4003 1.297 0.1 5.84 9
+ 40.0 39.6 7.4014 1.346 0.1 5.84 9
+ 41.0 40.6 7.4014 1.295 0.1 5.83 9
+ 42.0 41.6 7.4014 1.291 0.1 5.85 9
+ 43.0 42.6 7.4014 1.312 0.1 5.85 9
+ 44.0 43.6 7.4016 1.318 0.0 5.84 9
+ 45.0 44.6 7.4015 1.273 0.0 5.84 9
+ 46.0 45.6 7.4018 1.242 0.0 5.84 9
+ 47.0 46.6 7.4018 1.264 0.0 5.81 9
+ 48.0 47.6 7.4018 1.255 0.0 5.83 9
+ 49.0 48.6 7.4018 1.267 0.0 5.83 10
+ 50.0 49.5 7.4013 1.292 0.0 5.81 9
+ 51.0 50.5 7.3996 1.276 0.0 5.81 9
+ 52.0 51.6 7.3988 1.248 0.0 5.80 9
+ 53.0 52.6 7.3983 1.279 0.0 5.78 10
+ 54.0 53.6 7.3996 1.271 0.0 5.80 9
+ 55.0 54.5 7.3995 1.234 0.0 5.80 8
+ 56.0 55.5 7.3986 1.245 0.0 5.78 10
+ 57.0 56.5 7.3978 1.300 0.0 5.78 9
+ 58.0 57.5 7.3983 1.225 0.0 5.79 9
+ 59.0 58.5 7.3984 1.286 0.0 5.80 10
+ 60.0 59.5 7.3987 1.248 0.0 5.79 9
+ 61.0 60.5 7.3992 1.318 0.0 5.76 9
+ 62.0 61.5 7.4001 1.227 0.0 5.75 9
+ 63.0 62.4 7.4026 1.172 0.0 5.75 9
+ 64.0 63.4 7.4034 1.129 0.0 5.73 9
+ 65.0 64.4 7.4034 1.198 0.0 5.74 9
+ 66.0 65.4 7.4042 1.138 0.0 5.72 10
+ 67.0 66.5 7.4052 1.118 0.0 5.72 9
+ 68.0 67.5 7.4053 1.141 0.0 5.72 11
+ 68.9 68.4 7.4060 1.095 0.0 5.71 26
+ 69.8 69.2 7.4065 1.061 0.0 5.71 17
From b720753dcc1582e4acf442c371b0b17900e7eb2e Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Tue, 30 Apr 2024 10:09:25 -0400
Subject: [PATCH 04/30] make explicit variable selection
---
.../parsers/dfo/ios_source/IosObsFile.py | 26 +++++++++----------
1 file changed, 12 insertions(+), 14 deletions(-)
diff --git a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
index 8722f67c..b873f89c 100644
--- a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
+++ b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
@@ -1060,13 +1060,12 @@ def _flag_bad_values(dataset):
)
# Detect and rename duplicated variable names with different units
- col_name = "ios_name"
- duplicated_name = variables.duplicated(subset=[col_name])
+ duplicated_name = variables.duplicated(subset=["ios_name"])
if duplicated_name.any():
- variables["var_index"] = variables.groupby(col_name).cumcount()
+ variables["var_index"] = variables.groupby("ios_name").cumcount()
to_replace = duplicated_name & (variables["var_index"] > 0)
new_names = variables.loc[to_replace].apply(
- lambda x: update_variable_index(x[col_name], x["var_index"] + 1),
+ lambda x: update_variable_index(x["ios_name"], x["var_index"] + 1),
axis="columns",
)
logger.info(
@@ -1074,7 +1073,7 @@ def _flag_bad_values(dataset):
list(
zip(
variables.loc[
- to_replace, list(set(["ios_name", "units"] + [col_name]))
+ to_replace, list(set(["ios_name", "units"]))
]
.reset_index()
.values.tolist(),
@@ -1082,18 +1081,18 @@ def _flag_bad_values(dataset):
)
),
)
- variables.loc[to_replace, col_name] = new_names
+ variables.loc[to_replace, "ios_name"] = new_names
# Parse data, assign appropriate data type, padding values
# and convert to xarray object
ds = (
pd.DataFrame.from_records(
- self.data[:, variables.index], columns=variables[col_name]
+ self.data[:, variables.index], columns=variables["ios_name"]
)
.replace(r"\.$", "", regex=True)
- .astype(dict(variables[[col_name, "dtype"]].values))
+ .astype(dict(variables[["ios_name", "dtype"]].values))
.replace(
- dict(variables[[col_name, "_FillValues"]].dropna().values), value=np.nan
+ dict(variables[["ios_name", "_FillValues"]].dropna().values), value=np.nan
)
.to_xarray()
)
@@ -1106,7 +1105,7 @@ def _flag_bad_values(dataset):
ds_sub.attrs = ds.attrs
for id, row in variables.iterrows():
- var = ds[row[col_name]]
+ var = ds[row["ios_name"]]
var.attrs = _drop_empty_attrs(
{
"original_ios_variable": str(
@@ -1126,7 +1125,7 @@ def _flag_bad_values(dataset):
# Generate vocabulary variables
for new_var_attrs in row["matching_vocabularies"]:
- new_var = new_var_attrs.pop("rename", row[col_name])
+ new_var = new_var_attrs.pop("rename", row["ios_name"])
# if variable already exist from a different source variable
# append variable index
@@ -1155,14 +1154,14 @@ def _flag_bad_values(dataset):
ufunc = eval(new_var_attrs["apply_func"], {"ds": ds, "gsw": gsw})
new_data = xr.apply_ufunc(ufunc, var)
self.add_to_history(
- f"Generate new variable from {row[col_name]} ->"
+ f"Generate new variable from {row['ios_name']} ->"
f" apply {new_var_attrs['apply_func']}) -> {new_var}"
)
else:
new_data = var
self.add_to_history(
- f"Generate new variable from {row[col_name]} -> {new_var}"
+ f"Generate new variable from {row['ios_name']} -> {new_var}"
)
ds_sub[new_var] = (
@@ -1178,7 +1177,6 @@ def _flag_bad_values(dataset):
if self.obs_time and replace_date_time_variables:
ds = ds.drop_vars([var for var in ds if var in ["Date", "Time"]])
ds["time"] = (ds.dims, pd.Series(self.obs_time))
- # ds["time"].encoding["units"] = "seconds since 1970-01-01T00:00:00Z"
elif self.start_dateobj:
ds["time"] = self.start_dateobj
else:
From 0b241c1bcb84a71f01beb7a99a1e4d7b0dce3011 Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Tue, 30 Apr 2024 10:10:01 -0400
Subject: [PATCH 05/30] output pandas timestamp foand make missing time error
level
---
ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
index b873f89c..4d3bdefc 100644
--- a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
+++ b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
@@ -1178,9 +1178,9 @@ def _flag_bad_values(dataset):
ds = ds.drop_vars([var for var in ds if var in ["Date", "Time"]])
ds["time"] = (ds.dims, pd.Series(self.obs_time))
elif self.start_dateobj:
- ds["time"] = self.start_dateobj
+ ds["time"] = pd.to_datetime(self.start_dateobj)
else:
- logger.warning("Unable to set time coordinate")
+ logger.error("Unable to set time coordinate")
ds["time"].attrs = {
"long_name": "Time",
"standard_name": "time",
From b565551eae618e08876b1d1b436c181e4a05d278 Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Tue, 30 Apr 2024 10:10:25 -0400
Subject: [PATCH 06/30] handle cases where encoding is defined by parser
already
---
ocean_data_parser/parsers/utils.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ocean_data_parser/parsers/utils.py b/ocean_data_parser/parsers/utils.py
index fd7028d7..47bbd55b 100644
--- a/ocean_data_parser/parsers/utils.py
+++ b/ocean_data_parser/parsers/utils.py
@@ -116,7 +116,7 @@ def generate_variables_encoding(
for var in variables or ds.variables:
ds.encoding[var] = {}
- if var in ds.encoding:
+ if ds.encoding.get(var):
continue
elif "datetime" in ds[var].dtype.name:
ds[var].encoding.update(
From 8976c0ed8b1a82405e3aef0ca36f6bba5ef99310 Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Tue, 30 Apr 2024 10:11:16 -0400
Subject: [PATCH 07/30] add ctd pressure variable vocabulary
---
ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv | 1 +
1 file changed, 1 insertion(+)
diff --git a/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv b/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv
index 7866cbf1..c10538ec 100644
--- a/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv
+++ b/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv
@@ -282,6 +282,7 @@ che,oxygen:dissolved,mL\/L,,,Dissolved Oxygen,volume_fraction_of_oxygen_in_sea_w
,pressure,count|counts,,,Pressure,,counts,,,,,,PRESPR01
,pressure,dbar|dbars|decibar|decibars|DBars|DBAR,,,Pressure,sea_water_pressure,decibar,,SDN:P01::PRESPR01,Pressure (spatial coordinate) exerted by the water body by profiling pressure sensor and correction to read zero at sea level,,,PRESPR01
ctd,pressure,dbar|dbars|decibar|decibars|DBars|DBAR,,"lambda x: -1*gsw.z_from_p(x,ds.attrs['latitude'])",Depth,depth,m,,SDN:P01::ADEPZZ01,Depth (spatial coordinate) relative to water surface in the water body,,,depth
+ctd,pressure,dbar|dbars|decibar|decibars|DBars|DBAR,,,Pressure,sea_water_pressure,decibar,,SDN:P01::PRESPR01,Pressure (spatial coordinate) exerted by the water body by profiling pressure sensor and correction to read zero at sea level,,,PRESPR01
ane,pressure,kpascal|kilopascal|Kpascal,,,Pressure,air_pressure,kilopascal,,,,,,PRESPR01
,pressure:atmospheric:sealevel,mbar,,,Pressure Atmospheric SeaLevel,air_pressure_at_mean_sea_level,mbar,,,,,,
,pressure:ctd,decibar,,,Pressure CTD,sea_water_pressure,decibar,,SDN:P01::PRESPR01,Pressure (spatial coordinate) exerted by the water body by profiling pressure sensor and correction to read zero at sea level,,,PRESPR01
From 8ba5636ef9324084f8ad3f981136b7d48360519b Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Tue, 30 Apr 2024 10:11:30 -0400
Subject: [PATCH 08/30] fix ios file encoding
---
ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
index 4d3bdefc..147335bc 100644
--- a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
+++ b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
@@ -1205,7 +1205,7 @@ def _flag_bad_values(dataset):
"units": "degrees_east",
"standard_name": "longitude",
}
- ds.encoding(
+ ds.encoding.update(
{"latitude": {"dtype": "float32"}, "longitude": {"dtype": "float32"}}
)
From 5ac6b989a312674b5917f097d7497e5b0d1f6dcc Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Tue, 30 Apr 2024 10:11:51 -0400
Subject: [PATCH 09/30] fix ios vocabulary load
---
ocean_data_parser/vocabularies/load.py | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/ocean_data_parser/vocabularies/load.py b/ocean_data_parser/vocabularies/load.py
index b737397b..353128dd 100644
--- a/ocean_data_parser/vocabularies/load.py
+++ b/ocean_data_parser/vocabularies/load.py
@@ -43,7 +43,11 @@ def dfo_platforms() -> pd.DataFrame:
def dfo_ios_vocabulary() -> pd.DataFrame:
- return pd.read_csv(VOCABULARIES_DIRECTORY / "dfo_ios_vocabulary.csv")
+ return pd.read_csv(
+ VOCABULARIES_DIRECTORY / "dfo_ios_vocabulary.csv",
+ na_values={"accepted_units": [""]},
+ keep_default_na=False,
+ ).replace({"": np.nan})
def dfo_odf_vocabulary() -> pd.DataFrame:
From 796340a14929a4babf97d3b6b3b2e2f74e8126b5 Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Tue, 30 Apr 2024 13:25:15 -0400
Subject: [PATCH 10/30] refactor vocabulary handling and add test to make sure
apply_func variables are depriotorized
---
.../parsers/dfo/ios_source/IosObsFile.py | 319 +++++++++---------
tests/test_parsers.py | 7 +
2 files changed, 160 insertions(+), 166 deletions(-)
diff --git a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
index 147335bc..092feea6 100644
--- a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
+++ b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
@@ -47,7 +47,7 @@
"apply_func",
]
-ios_dtypes_to_python = {
+IOS_TYPE_MAPPING = {
"R": "float32",
"F": "float32",
"I": "int32",
@@ -57,7 +57,7 @@
"E": "float32",
}
-global_attributes = {
+GLOBAL_ATTRIBUTES = {
"institution": "DFO IOS",
"ices_edmo_code": 4155,
"sdn_institution_urn": "SDN:EDMO::4155",
@@ -83,22 +83,21 @@
}
-def get_dtype_from_ios_type(ios_type):
- if not ios_type or ios_type.strip() == "":
- return
- elif ios_type in ios_dtypes_to_python:
- return ios_dtypes_to_python[ios_type]
- elif ios_type[0].upper() in ios_dtypes_to_python:
- return ios_dtypes_to_python[ios_type[0]]
-
-
-def get_dtype_from_ios_name(ios_name):
- if re.search("flag", ios_name, re.IGNORECASE):
+def _cast_ios_variable(ios_type, ios_format, ios_name):
+ dtype = (ios_type or ios_format).strip().upper()
+ if dtype[0] in IOS_TYPE_MAPPING:
+ return IOS_TYPE_MAPPING[dtype]
+ elif re.search("flag", ios_name, re.IGNORECASE):
return "int32"
elif re.search("time|date", ios_name, re.IGNORECASE):
return str
- else:
- return float
+ logger.warning(
+ "Unknown data type for variable %s [Type=%s, Format=%s]",
+ ios_name,
+ ios_type,
+ ios_format,
+ )
+ return "float32"
IOS_SHELL_HEADER_SECTIONS = {
@@ -462,7 +461,7 @@ def add_to_history(self, input):
"ios_transform_history"
] += f"{datetime.now().isoformat()} - {input}\n"
- def get_data(self, formatline=None):
+ def get_data(self, formatline=None) -> list:
# reads data using the information in FORMAT
# if FORMAT information in file header is missing or does not work
# then create 'struct' data format based on channel details information
@@ -508,7 +507,7 @@ def get_data(self, formatline=None):
data = data.reshape((1, -1))
return data
- def get_location(self):
+ def get_location(self) -> dict:
# read 'LOCATION' section from ios header
# convert lat and lon to standard format (float, -180 to +180)
# initialize some other standard section variables if possible
@@ -528,7 +527,7 @@ def _convert_latlong_string(ll):
info["LONGITUDE"] = _convert_latlong_string(info.get("LONGITUDE"))
return info
- def get_channel_detail(self):
+ def get_channel_detail(self) -> dict:
# read channel details. create format_structure (fmt_struct)
# based on channel details. This information may be used as backup if
# file does not contain FORMAT specifier
@@ -538,14 +537,14 @@ def get_channel_detail(self):
# CHANGELOG July 2019: decipher python 'struct' format from channel details
lines = self.get_subsection("$TABLE: CHANNEL DETAIL")
if lines is None:
- return None
+ return {}
mask = lines[1].rstrip()
ch_det = [self.apply_col_mask(line, mask) for line in lines[2:]]
info = {
- "Pad": [line[1] for line in ch_det],
- "Width": [line[3] for line in ch_det],
- "Format": [line[4] for line in ch_det],
- "Type": [line[5] for line in ch_det],
+ "Pad": [line[1].strip() for line in ch_det],
+ "Width": [line[3].strip() for line in ch_det],
+ "Format": [line[4].strip() for line in ch_det],
+ "Type": [line[5].strip() for line in ch_det],
}
if int(self.file["NUMBER OF CHANNELS"]) != len(info["Pad"]):
raise Exception(
@@ -593,17 +592,17 @@ def get_channel_detail(self):
logger.debug("Python compatible data format: %s", fmt)
return info
- def get_channels(self):
+ def get_channels(self) -> dict:
# get the details of al the channels in the file
# return as dictionary with each column as list
lines = self.get_subsection("$TABLE: CHANNELS")
mask = lines[1].rstrip()
channels = [self.apply_col_mask(line, mask) for line in lines[2:]]
return {
- "Name": [line[1] for line in channels],
- "Units": [line[2] for line in channels],
- "Minimum": [line[3] for line in channels],
- "Maximum": [line[4] for line in channels],
+ "Name": [line[1].strip() for line in channels],
+ "Units": [line[2].strip() for line in channels],
+ "Minimum": [line[3].strip() for line in channels],
+ "Maximum": [line[4].strip() for line in channels],
}
def apply_col_mask(self, data, mask):
@@ -953,11 +952,12 @@ def _format_attribute_value(value):
"ocean_data_transform_version": VERSION,
"product_version": f"ios_header={self.ios_header_version}; ocean-data-transform={VERSION}",
"date_created": self.date_created.isoformat(),
- **global_attributes,
+ **GLOBAL_ATTRIBUTES,
}
def to_xarray(
self,
+ generate_extra_variables=True,
rename_variables=True,
append_sub_variables=True,
replace_date_time_variables=True,
@@ -1008,80 +1008,74 @@ def _flag_bad_values(dataset):
return dataset.where(~dataset.isin(bad_values))
+ def _handle_duplicated_variabes(variables):
+ """Handle duplicated variables ios_name,units pairs and same variable
+ names with different units
+
+ Both cases aren't allowed in xarray dataset,
+ so we need to rename the variables.
+ """
+
+ # Detect duplicated variables ios_name,units pairs
+ duplicates = variables.duplicated(subset=["ios_name", "units"], keep=False)
+ if duplicates.any():
+ logger.warning(
+ "Duplicated variables(Name,Units)! The first one will be considered: %s",
+ variables.loc[duplicates][["ios_name", "units"]],
+ )
+ variables.drop_duplicates(
+ subset=["ios_name", "units"], keep="first", inplace=True
+ )
+
+ # Detect and rename duplicated variable names with different units
+ duplicated_name = variables.duplicated(subset=["ios_name"])
+ if duplicated_name.any():
+ variables["var_index"] = variables.groupby("ios_name").cumcount()
+ to_replace = duplicated_name & (variables["var_index"] > 0)
+ new_names = variables.loc[to_replace].apply(
+ lambda x: update_variable_index(x["ios_name"], x["var_index"] + 1),
+ axis="columns",
+ )
+ logger.info(
+ "Duplicated variable names, rename variables: %s",
+ [
+ f"{name} [{units}] -> {new_name}"
+ for (name, units), new_name in zip(
+ variables.loc[to_replace, ["ios_name", "units"]].values,
+ new_names,
+ )
+ ],
+ )
+ variables.loc[to_replace, "ios_name"] = new_names
+
+ return variables
+
# Retrieve the different variable attributes
- variables = (
- pd.DataFrame(
- {
- "ios_name": self.channels["Name"],
- "units": self.channels["Units"],
- "ios_type": self.channel_details.get("Type")
- if self.channel_details
- else "",
- "ios_format": self.channel_details.get("Format")
- if self.channel_details
- else "",
- "pad": self.channel_details.get("Pad")
- if self.channel_details
- else "",
- }
- )
- .map(str.strip)
- .replace({"": None, "n/a": None})
- )
- variables["matching_vocabularies"] = self.vocabulary_attributes
- variables["dtype"] = (
- variables["ios_type"]
- .fillna(variables["ios_format"])
- .apply(get_dtype_from_ios_type)
- .fillna(variables["ios_name"].apply(get_dtype_from_ios_name))
+ variables = pd.DataFrame(
+ {
+ "ios_name": self.channels["Name"],
+ "units": self.channels["Units"],
+ "ios_type": self.channel_details.get("Type", []),
+ "ios_format": self.channel_details.get("Format", []),
+ "pad": self.channel_details.get("Pad"),
+ "vocabularies": self.vocabulary_attributes,
+ }
+ ).replace({"": None, "n/a": None})
+
+ # Define data type by using the ios_type, ios_format and ios_name attributes
+ variables["dtype"] = variables.apply(
+ lambda x: _cast_ios_variable(x.ios_type, x.ios_format, x.ios_name),
+ axis="columns",
)
+ # cast fill values to the appropriate data type
variables["_FillValues"] = variables.apply(
lambda x: pd.Series(x["pad"]).astype(x["dtype"]).values[0]
if x["pad"]
else None,
axis="columns",
)
- variables["renamed_name"] = variables.apply(
- lambda x: x["matching_vocabularies"][-1].get("rename", x["ios_name"]),
- axis="columns",
- )
-
- # Detect duplicated variables ios_name,units pairs
- duplicates = variables.duplicated(subset=["ios_name", "units"], keep=False)
- if duplicates.any():
- logger.warning(
- "Duplicated variables (Name,Units) pair detected, "
- "only the first one will be considered:\n%s",
- variables.loc[duplicates][["ios_name", "units"]],
- )
- variables.drop_duplicates(
- subset=["ios_name", "units"], keep="first", inplace=True
- )
-
- # Detect and rename duplicated variable names with different units
- duplicated_name = variables.duplicated(subset=["ios_name"])
- if duplicated_name.any():
- variables["var_index"] = variables.groupby("ios_name").cumcount()
- to_replace = duplicated_name & (variables["var_index"] > 0)
- new_names = variables.loc[to_replace].apply(
- lambda x: update_variable_index(x["ios_name"], x["var_index"] + 1),
- axis="columns",
- )
- logger.info(
- "Duplicated variable names, will rename the variables according to: %s",
- list(
- zip(
- variables.loc[
- to_replace, list(set(["ios_name", "units"]))
- ]
- .reset_index()
- .values.tolist(),
- "renamed -> " + new_names,
- )
- ),
- )
- variables.loc[to_replace, "ios_name"] = new_names
+ variables = _handle_duplicated_variabes(variables)
# Parse data, assign appropriate data type, padding values
# and convert to xarray object
@@ -1092,7 +1086,8 @@ def _flag_bad_values(dataset):
.replace(r"\.$", "", regex=True)
.astype(dict(variables[["ios_name", "dtype"]].values))
.replace(
- dict(variables[["ios_name", "_FillValues"]].dropna().values), value=np.nan
+ dict(variables[["ios_name", "_FillValues"]].dropna().values),
+ value=np.nan,
)
.to_xarray()
)
@@ -1100,78 +1095,76 @@ def _flag_bad_values(dataset):
ds.attrs = self.get_global_attributes()
# Add variable attributes
- if append_sub_variables is True:
- ds_sub = xr.Dataset()
- ds_sub.attrs = ds.attrs
-
- for id, row in variables.iterrows():
- var = ds[row["ios_name"]]
- var.attrs = _drop_empty_attrs(
- {
- "original_ios_variable": str(
- {id: row[["ios_name", "units"]].to_json()}
- ),
- "original_ios_name": row["ios_name"],
- "long_name": row["ios_name"],
- "units": row["units"],
- }
+ for id, attrs in variables.iterrows():
+ ds[attrs["ios_name"]].attrs = dict(
+ long_name=attrs["ios_name"],
+ units=attrs["units"],
+ original_ios_name=attrs["ios_name"],
+ original_ios_variable={
+ key: value for key, value in attrs.items() if key != "vocabularies"
+ },
+ )
+
+ # Add vocabulary attributes
+ # sort matching vocabulary by rename, apply_func, sdn_parameter_name(length)
+ # and keep the first one matching for each rename outputed variables
+ ds_new = xr.Dataset()
+ ds_new.attrs = ds.attrs
+ variables_vocabularies = (
+ variables.explode("vocabularies")
+ .set_index("ios_name")["vocabularies"]
+ .apply(pd.Series)
+ .fillna({"rename": variables["ios_name"]})
+ .sort_values(
+ ["rename", "apply_func", "sdn_parameter_name"],
+ na_position="first",
+ key=lambda col: col.str.len() if col.name == "sdn_parameter_name" else col,
)
- if not append_sub_variables:
- var.attrs["sub_variables"] = json.dumps(row["matching_vocabularies"])
+ .groupby("rename")
+ .head(1)
+ )
+ for variable in ds.variables:
+ if variable == "index":
continue
- elif not row["matching_vocabularies"]:
- ds_sub.assign({var.name: var})
+ elif variable not in variables_vocabularies.index:
+ logger.warning("Missing vocabulary for variable %s", variable)
+ ds_new[variable] = ds[variable]
continue
-
- # Generate vocabulary variables
- for new_var_attrs in row["matching_vocabularies"]:
- new_var = new_var_attrs.pop("rename", row["ios_name"])
-
- # if variable already exist from a different source variable
- # append variable index
- if new_var in ds_sub:
- if (
- ds_sub[new_var].attrs["original_ios_name"]
- == var.attrs["original_ios_name"]
- ):
- logger.error(
- "Duplicated vocabulary output for %s, will be ignored", row
- )
- continue
- else:
- new_index = (
- len([var for var in ds_sub if var.startswith(new_var[:-1])])
- + 1
- )
- logger.warning(
- "Duplicated variable from sub variables: %s, renamed %s",
- new_var,
- update_variable_index(new_var, new_index),
- )
- new_var = update_variable_index(new_var, new_index)
-
- if "apply_func" in new_var_attrs:
- ufunc = eval(new_var_attrs["apply_func"], {"ds": ds, "gsw": gsw})
- new_data = xr.apply_ufunc(ufunc, var)
+ variable_vocabulary = variables_vocabularies.loc[[variable]]
+
+ if not rename_variables and not generate_extra_variables:
+ ds_new[variable] = ds[variable]
+ # ignore apply_func vocabularies and get the most precise vocabulary
+ vocab = variable_vocabulary.query('apply_func.isna()')
+ if vocab.empty:
+ continue
+ ds_new[variable].attrs.update(vocab.iloc[-1].drop('rename').dropna().to_dict())
+
+ if not generate_extra_variables:
+ # favorize not transform variables if available
+ vocab = variable_vocabulary.query('apply_func.isna()')
+ if variable_vocabulary.query('apply_func.isna()').empty:
+ variable_vocabulary = variable_vocabulary.query('apply_func.isna()').iloc[[-1]]
+ else:
+ variable_vocabulary = variable_vocabulary.iloc[[-1]]
+
+ for variable,attrs in variable_vocabulary.iterrows():
+
+ new_var = attrs.pop("rename")
+
+ if pd.notna(attrs['apply_func']):
+ ufunc = eval(attrs["apply_func"], {"ds": ds, "gsw": gsw})
+ new_data = xr.apply_ufunc(ufunc, ds[variable])
self.add_to_history(
- f"Generate new variable from {row['ios_name']} ->"
- f" apply {new_var_attrs['apply_func']}) -> {new_var}"
+ f"Generate new variable from {variable} ->"
+ f" apply {attrs['apply_func']}) -> {new_var}"
)
-
else:
- new_data = var
- self.add_to_history(
- f"Generate new variable from {row['ios_name']} -> {new_var}"
- )
+ new_data = ds[variable]
+ self.add_to_history(f"Generate new variable from {variable} -> {new_var}")
+ ds_new[new_var] = (ds[variable].dims, new_data.data, {**ds[variable].attrs, **attrs.dropna().to_dict()})
- ds_sub[new_var] = (
- var.dims,
- new_data.data,
- _drop_empty_attrs({**var.attrs, **new_var_attrs}),
- )
-
- if append_sub_variables:
- ds = ds_sub
+ ds = ds_new
# coordinates
if self.obs_time and replace_date_time_variables:
@@ -1240,10 +1233,4 @@ def _flag_bad_values(dataset):
if "index" in ds.coords and ("time" in ds.coords or "depth" in ds.coords):
ds = ds.reset_coords("index").drop("index")
- # Drop empty attributes and variable attribtes
- ds.attrs = {key: value for key, value in ds.attrs.items() if value}
- for var in ds:
- ds[var].attrs = {
- key: value for key, value in ds[var].attrs.items() if value
- }
return ds
diff --git a/tests/test_parsers.py b/tests/test_parsers.py
index 00968ee4..8f4565a5 100644
--- a/tests/test_parsers.py
+++ b/tests/test_parsers.py
@@ -213,6 +213,13 @@ def test_dfo_ios_shell_moored_cur_files(self, path):
ds = dfo.ios.shell(path)
review_parsed_dataset(ds, path)
+ def test_dfo_ios_shell_ctd_file_not_ovewrite_exisiting_variable(self):
+ path = "tests/parsers_test_files/dfo/ios/shell/cruise/CTD/2023-003-0003.ctd"
+ ds = dfo.ios.shell(path)
+ assert "depth" in ds.variables
+ assert "Pressure" not in ds["depth"].attrs["original_ios_variable"]
+ assert "Depth" in ds["depth"].attrs["original_ios_name"]
+
class TestODFParser:
@pytest.mark.parametrize(
From 351315ecbeb095b5ebf34ff974d207f1cf9396e5 Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Tue, 30 Apr 2024 13:47:20 -0400
Subject: [PATCH 11/30] add a test to make sure pressure gets converted when no
depth exists
---
.../parsers/dfo/ios_source/IosObsFile.py | 10 ++++------
tests/test_parsers.py | 13 ++++++++++++-
2 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
index 092feea6..70d61ab9 100644
--- a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
+++ b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
@@ -936,12 +936,10 @@ def _format_attribute_value(value):
**_format_attributes("deployment", "deployment_"),
**_format_attributes("recovery", "recovery_"),
"calibration": json.dumps(self.calibration) if self.calibration else None,
- "comments": str(self.comments)
- if self.comments
- else None, # TODO missing file_remarks
- "remarks": str(self.remarks) if self.remarks else None,
- "history": str(self.history) if hasattr(self, "history") else None,
- "geographic_area": self.geo_code if hasattr(self, "geo_code") else None,
+ "comments": self.comments,
+ "remarks": self.remarks,
+ "history": self.history,
+ "geographic_area": self.geo_code,
"headers": json.dumps(
self.get_complete_header(), ensure_ascii=False, indent=False
),
diff --git a/tests/test_parsers.py b/tests/test_parsers.py
index 8f4565a5..37406e69 100644
--- a/tests/test_parsers.py
+++ b/tests/test_parsers.py
@@ -213,13 +213,24 @@ def test_dfo_ios_shell_moored_cur_files(self, path):
ds = dfo.ios.shell(path)
review_parsed_dataset(ds, path)
- def test_dfo_ios_shell_ctd_file_not_ovewrite_exisiting_variable(self):
+ def test_dfo_ios_shell_ctd_file_not_overwrite_exisiting_depth_variable(self):
path = "tests/parsers_test_files/dfo/ios/shell/cruise/CTD/2023-003-0003.ctd"
ds = dfo.ios.shell(path)
assert "depth" in ds.variables
assert "Pressure" not in ds["depth"].attrs["original_ios_variable"]
assert "Depth" in ds["depth"].attrs["original_ios_name"]
+ def test_dfo_ios_shell_ctd_file_generate_new_depth_variable(self):
+ path = "tests/parsers_test_files/dfo/ios/shell/cruise/CTD/2015-018-0008.ctd"
+ ds = dfo.ios.shell(path)
+ assert "depth" in ds.variables
+ assert "Pressure" in ds["depth"].attrs["original_ios_variable"]
+ assert "Pressure" in ds["depth"].attrs["original_ios_name"]
+ assert (
+ "Pressure -> apply lambda x: -1*gsw.z_from_p(x,ds.attrs['latitude']))"
+ in ds.attrs["history"]
+ )
+
class TestODFParser:
@pytest.mark.parametrize(
From c4191e0bfa40913a7e0dc8f068043d6c140a26a3 Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Tue, 30 Apr 2024 13:47:29 -0400
Subject: [PATCH 12/30] isort black
---
.../parsers/dfo/ios_source/IosObsFile.py | 41 ++++++++++++-------
1 file changed, 26 insertions(+), 15 deletions(-)
diff --git a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
index 70d61ab9..8838658b 100644
--- a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
+++ b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
@@ -1104,7 +1104,7 @@ def _handle_duplicated_variabes(variables):
)
# Add vocabulary attributes
- # sort matching vocabulary by rename, apply_func, sdn_parameter_name(length)
+ # sort matching vocabulary by rename, apply_func, sdn_parameter_name(length)
# and keep the first one matching for each rename outputed variables
ds_new = xr.Dataset()
ds_new.attrs = ds.attrs
@@ -1116,7 +1116,9 @@ def _handle_duplicated_variabes(variables):
.sort_values(
["rename", "apply_func", "sdn_parameter_name"],
na_position="first",
- key=lambda col: col.str.len() if col.name == "sdn_parameter_name" else col,
+ key=lambda col: col.str.len()
+ if col.name == "sdn_parameter_name"
+ else col,
)
.groupby("rename")
.head(1)
@@ -1129,28 +1131,31 @@ def _handle_duplicated_variabes(variables):
ds_new[variable] = ds[variable]
continue
variable_vocabulary = variables_vocabularies.loc[[variable]]
-
+
if not rename_variables and not generate_extra_variables:
ds_new[variable] = ds[variable]
# ignore apply_func vocabularies and get the most precise vocabulary
- vocab = variable_vocabulary.query('apply_func.isna()')
+ vocab = variable_vocabulary.query("apply_func.isna()")
if vocab.empty:
continue
- ds_new[variable].attrs.update(vocab.iloc[-1].drop('rename').dropna().to_dict())
-
+ ds_new[variable].attrs.update(
+ vocab.iloc[-1].drop("rename").dropna().to_dict()
+ )
+
if not generate_extra_variables:
# favorize not transform variables if available
- vocab = variable_vocabulary.query('apply_func.isna()')
- if variable_vocabulary.query('apply_func.isna()').empty:
- variable_vocabulary = variable_vocabulary.query('apply_func.isna()').iloc[[-1]]
- else:
+ vocab = variable_vocabulary.query("apply_func.isna()")
+ if variable_vocabulary.query("apply_func.isna()").empty:
+ variable_vocabulary = variable_vocabulary.query(
+ "apply_func.isna()"
+ ).iloc[[-1]]
+ else:
variable_vocabulary = variable_vocabulary.iloc[[-1]]
- for variable,attrs in variable_vocabulary.iterrows():
-
+ for variable, attrs in variable_vocabulary.iterrows():
new_var = attrs.pop("rename")
- if pd.notna(attrs['apply_func']):
+ if pd.notna(attrs["apply_func"]):
ufunc = eval(attrs["apply_func"], {"ds": ds, "gsw": gsw})
new_data = xr.apply_ufunc(ufunc, ds[variable])
self.add_to_history(
@@ -1159,8 +1164,14 @@ def _handle_duplicated_variabes(variables):
)
else:
new_data = ds[variable]
- self.add_to_history(f"Generate new variable from {variable} -> {new_var}")
- ds_new[new_var] = (ds[variable].dims, new_data.data, {**ds[variable].attrs, **attrs.dropna().to_dict()})
+ self.add_to_history(
+ f"Generate new variable from {variable} -> {new_var}"
+ )
+ ds_new[new_var] = (
+ ds[variable].dims,
+ new_data.data,
+ {**ds[variable].attrs, **attrs.dropna().to_dict()},
+ )
ds = ds_new
From dbdcdd61595e117e8f11fc3db774e6290c9b7782 Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Tue, 30 Apr 2024 16:18:58 -0400
Subject: [PATCH 13/30] fix some parsing issues
---
.../parsers/dfo/ios_source/IosObsFile.py | 34 ++++++++-----------
1 file changed, 15 insertions(+), 19 deletions(-)
diff --git a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
index 8838658b..10d85d92 100644
--- a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
+++ b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
@@ -84,9 +84,9 @@
def _cast_ios_variable(ios_type, ios_format, ios_name):
- dtype = (ios_type or ios_format).strip().upper()
- if dtype[0] in IOS_TYPE_MAPPING:
- return IOS_TYPE_MAPPING[dtype]
+ dtype = (ios_type or ios_format or "").strip().upper()
+ if dtype and dtype[0] in IOS_TYPE_MAPPING:
+ return IOS_TYPE_MAPPING[dtype[0]]
elif re.search("flag", ios_name, re.IGNORECASE):
return "int32"
elif re.search("time|date", ios_name, re.IGNORECASE):
@@ -148,6 +148,7 @@ def __init__(self, filename):
self.obs_time = None
self.vocabulary_attributes = None
self.history = None
+ self.geo_code = None
# Load file
try:
@@ -819,7 +820,7 @@ def match_term(reference, value):
)
self.vocabulary_attributes += [
[
- row.dropna().to_dict()
+ row.to_dict()
for _, row in matched_vocab[vocabulary_attributes].iterrows()
]
]
@@ -939,7 +940,7 @@ def _format_attribute_value(value):
"comments": self.comments,
"remarks": self.remarks,
"history": self.history,
- "geographic_area": self.geo_code,
+ # "geographic_area": self.geo_code,
"headers": json.dumps(
self.get_complete_header(), ensure_ascii=False, indent=False
),
@@ -957,8 +958,6 @@ def to_xarray(
self,
generate_extra_variables=True,
rename_variables=True,
- append_sub_variables=True,
- replace_date_time_variables=True,
):
"""Convert ios class to xarray dataset
@@ -975,11 +974,6 @@ def update_variable_index(varname, id):
return f"{varname[:-1]}{id}"
return f"{varname}{id:02g}"
- def _drop_empty_attrs(attrs):
- if isinstance(attrs, dict):
- return {key: value for key, value in attrs.items() if value}
- return attrs
-
def _flag_bad_values(dataset):
bad_values = [-9.99, -99.9, -99.0, -99.999, -9.9, -999.0, -9.0]
var_with_bad_values = [
@@ -1053,8 +1047,8 @@ def _handle_duplicated_variabes(variables):
{
"ios_name": self.channels["Name"],
"units": self.channels["Units"],
- "ios_type": self.channel_details.get("Type", []),
- "ios_format": self.channel_details.get("Format", []),
+ "ios_type": self.channel_details.get("Type"),
+ "ios_format": self.channel_details.get("Format"),
"pad": self.channel_details.get("Pad"),
"vocabularies": self.vocabulary_attributes,
}
@@ -1093,13 +1087,15 @@ def _handle_duplicated_variabes(variables):
ds.attrs = self.get_global_attributes()
# Add variable attributes
- for id, attrs in variables.iterrows():
+ for _, attrs in variables.iterrows():
ds[attrs["ios_name"]].attrs = dict(
long_name=attrs["ios_name"],
units=attrs["units"],
original_ios_name=attrs["ios_name"],
original_ios_variable={
- key: value for key, value in attrs.items() if key != "vocabularies"
+ key: value
+ for key, value in attrs.items()
+ if key not in ("vocabularies", "dtype", "_FillValues")
},
)
@@ -1116,7 +1112,7 @@ def _handle_duplicated_variabes(variables):
.sort_values(
["rename", "apply_func", "sdn_parameter_name"],
na_position="first",
- key=lambda col: col.str.len()
+ key=lambda col: col.fillna("").str.len()
if col.name == "sdn_parameter_name"
else col,
)
@@ -1176,7 +1172,7 @@ def _handle_duplicated_variabes(variables):
ds = ds_new
# coordinates
- if self.obs_time and replace_date_time_variables:
+ if self.obs_time:
ds = ds.drop_vars([var for var in ds if var in ["Date", "Time"]])
ds["time"] = (ds.dims, pd.Series(self.obs_time))
elif self.start_dateobj:
@@ -1240,6 +1236,6 @@ def _handle_duplicated_variabes(variables):
if any(var in ds for var in coordinates_variables):
ds = ds.set_coords([var for var in coordinates_variables if var in ds])
if "index" in ds.coords and ("time" in ds.coords or "depth" in ds.coords):
- ds = ds.reset_coords("index").drop("index")
+ ds = ds.drop_vars("index")
return ds
From 832d86fb9d9aad51dd8bff42e816759b07bcd226 Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Wed, 1 May 2024 11:12:58 -0400
Subject: [PATCH 14/30] add common attributes to flag variables
---
.../parsers/dfo/ios_source/IosObsFile.py | 28 +++++++++++++------
1 file changed, 20 insertions(+), 8 deletions(-)
diff --git a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
index 10d85d92..e3289ddb 100644
--- a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
+++ b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
@@ -292,9 +292,16 @@ def _get_subsection(idx) -> list:
return info
def get_flag_convention(self, name: str, units: str = None) -> dict:
+
+ common_attrs = {
+ "ios_name": name.lower(),
+ "rename": name.lower(),
+ "standard_name": "quality_flag",
+ }
+
if name.lower() == "flag:at_sea":
return {
- "rename": "flag:at_sea",
+ **common_attrs,
"flag_values": [0, 1, 2, 3, 4, 5],
"flag_meanings": " ".join(
[
@@ -309,6 +316,7 @@ def get_flag_convention(self, name: str, units: str = None) -> dict:
}
elif units.lower() == "igoss_flags":
return {
+ **common_attrs,
"flag_values": [0, 1, 2, 3, 4, 5],
"flag_meanings": " ".join(
[
@@ -323,6 +331,7 @@ def get_flag_convention(self, name: str, units: str = None) -> dict:
}
elif name.lower() == "flag:ctd" or name.lower() == "flag":
return {
+ **common_attrs,
"flag_values": [0, 2, 6],
"flag_meanings": " ".join(
[
@@ -332,16 +341,18 @@ def get_flag_convention(self, name: str, units: str = None) -> dict:
]
),
}
- elif name.lower().startswith("flag") and self.filename.endswith("che"):
+ elif name.lower().startswith("flag") and self.filename.endswith(("che",'bot')):
return {
+ **common_attrs,
"flag_values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
"flag_meanings": " ".join(
- [
- "sample_drawn_from_water_bottle_but_not_analyzed",
- "acceptable_measurement",
- "questionable_measurement",
- "bad_measurement",
- "not_reported",
+ [
+ "acceptable_measurement_with_no_header_comment",
+ "sample_drawn_from_water_bottle_but_not_analyzed_sample_lost",
+ "acceptable_measurement_with_header_comment",
+ "questionable_measurement(probably_bad)",
+ "poor_measurement(probably_bad)",
+ "not_reported(bad)",
"mean_of_replicate_measurement",
"manual_chromatographic_peak_measurement",
"irregular_digital_chromatographic_peak_integration",
@@ -352,6 +363,7 @@ def get_flag_convention(self, name: str, units: str = None) -> dict:
elif name.lower() == "sample_method":
return {
+ **common_attrs,
"flag_values": ["UN", "US", "USM"],
"flag_meanings": " ".join(["no_stop", "stop_for_30s", "up_stop_mix"]),
}
From ce80138c7f44b650e4eb4119b1a1e7d175ea5e95 Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Wed, 1 May 2024 11:13:15 -0400
Subject: [PATCH 15/30] lower log level of bad character
---
ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
index e3289ddb..9c525657 100644
--- a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
+++ b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
@@ -155,7 +155,7 @@ def __init__(self, filename):
with open(self.filename, "r", encoding="ASCII") as file:
self.lines = file.readlines()
except UnicodeDecodeError:
- logger.warning("Bad characters were encountered. We will ignore them")
+ logger.info("Bad characters were encountered. We will ignore them")
with open(self.filename, "r", encoding="ASCII", errors="ignore") as file:
self.lines = file.readlines()
From b29136dcde2abbe7edcafae3c9198883afdb3539 Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Wed, 1 May 2024 11:13:41 -0400
Subject: [PATCH 16/30] refactor a bit vocabulary mapping
---
.../parsers/dfo/ios_source/IosObsFile.py | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)
diff --git a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
index 9c525657..aab748ac 100644
--- a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
+++ b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
@@ -798,7 +798,7 @@ def match_term(reference, value):
# iterate over variables and find matching vocabulary
self.vocabulary_attributes = []
for name, units in zip(self.channels["Name"], self.channels["Units"]):
- # Drop trailing spaces and commas
+ # Drop trailing spaces and quotes
name = re.sub(r"^\'|[\s\']+$", "", name.lower())
units = re.sub(r"^\'|[\s\']+$", "", units)
@@ -823,19 +823,14 @@ def match_term(reference, value):
name,
units,
)
- self.vocabulary_attributes += [[{"long_name": name, "units": units}]]
+ self.vocabulary_attributes += [[{"long_name": name, "units": units,"ios_name": name}]]
continue
# Consider only the vocabularies specific to this ios_file_extension group
matched_vocab = matched_vocab.query(
f'ios_file_extension == "{matched_vocab.index.get_level_values(0)[0]}"'
)
- self.vocabulary_attributes += [
- [
- row.to_dict()
- for _, row in matched_vocab[vocabulary_attributes].iterrows()
- ]
- ]
+ self.vocabulary_attributes += [matched_vocab[vocabulary_attributes].to_dict('records')]
def fix_variable_names(self):
# get variable name list
From ee6eb08d6b92ea0ff34391bae5b31024422a044d Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Wed, 1 May 2024 11:14:07 -0400
Subject: [PATCH 17/30] update vocabulary ios_name on duplicated variables
---
ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
index aab748ac..b6ddf320 100644
--- a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
+++ b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
@@ -1035,6 +1035,12 @@ def _handle_duplicated_variabes(variables):
lambda x: update_variable_index(x["ios_name"], x["var_index"] + 1),
axis="columns",
)
+ # Update vocabulary ios_name
+ for _, row in variables.loc[to_replace].iterrows():
+ for vocab in row["vocabularies"]:
+ vocab["ios_name"] = update_variable_index(
+ vocab["ios_name"], row["var_index"] + 1
+ )
logger.info(
"Duplicated variable names, rename variables: %s",
[
From 88ba2891115f3a3664954dd100a881ebf9e088da Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Wed, 1 May 2024 11:14:27 -0400
Subject: [PATCH 18/30] ignore date time variabes in vocabulary mapping
---
ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
index b6ddf320..b4a3cb7a 100644
--- a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
+++ b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
@@ -1135,6 +1135,9 @@ def _handle_duplicated_variabes(variables):
for variable in ds.variables:
if variable == "index":
continue
+ elif variable.lower() in ["date", "time"]:
+ ds_new[variable] = ds[variable]
+ continue
elif variable not in variables_vocabularies.index:
logger.warning("Missing vocabulary for variable %s", variable)
ds_new[variable] = ds[variable]
From 8069f804eaca3d1da818e3b9b244371cf1573320 Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Wed, 1 May 2024 11:15:10 -0400
Subject: [PATCH 19/30] add a comment column to ios vocabulary and
dissolved:oxygen winkler term
---
.../vocabularies/dfo_ios_vocabulary.csv | 899 +++++++++---------
1 file changed, 450 insertions(+), 449 deletions(-)
diff --git a/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv b/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv
index c10538ec..6f971654 100644
--- a/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv
+++ b/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv
@@ -1,449 +1,450 @@
-ios_file_extension,ios_name,accepted_units,accepted_instrument_type,apply_func,long_name,standard_name,units,scale,sdn_parameter_urn,sdn_parameter_name,sdn_uom_urn,sdn_uom_name,rename
-,% light transmittance,%,,,% Light transmittance,,%,,,,,,
-,adenosine_triphosphate,mg\/m\^3,,,Adenosine Triphosphate,mass_concentration_of_adenosine_triphosphate_in_sea_water,mg/m^3,,SDN:P01::ATPXZZDZ,Concentration of adenosine triphosphate {ATP CAS 56-65-5} per unit volume of the water body [dissolved plus reactive particulate unknown phase],,,MDMAP010
-,carbon:particulate:organic,umol\/L,,,,,umol/L,,SDN:P01::MDMAP010,Concentration of organic carbon {organic_C CAS 7440-44-0} {POC} per unit volume of the water body [particulate >unknown phase],,,MDMAP010
-,carbon:particulate:total,umol\/L,,,Particulate Total Carbon,mole_concentration_of_particulate_matter_expressed_as_carbon_in_sea_water,umol/L,,SDN:P01::MDMAP011,Concentration of total carbon {total_C CAS 7440-44-0} per unit volume of the water body [particulate >unknown phase],,,MDMAP011
-,carbon:particulate:total,umol\/kg,,,Particulate Total Carbon,mole_concentration_of_particulate_matter_expressed_as_carbon_in_sea_water,umol/kg,,SDN:P01::MDMAP011,Concentration of total carbon {total_C CAS 7440-44-0} per unit volume of the water body [particulate >unknown phase],,,MDMAP011
-,carbon:total:organic,mg/L,,,Total Organic Carbon,,mg/L,,SDN:P01::CORGZZTL,Concentration of organic carbon {organic_C CAS 7440-44-0} {TOC} per unit volume of the water body [dissolved plus reactive particulate phase],,,CORGZZTL
-,carbon:total:organic,uM|umol\/L,,,Total Organic Carbon,,umol/L,,SDN:P01::CORGZZTL,Concentration of organic carbon {organic_C CAS 7440-44-0} {TOC} per unit volume of the water body [dissolved plus reactive particulate phase],,,CORGZZTL
-,carbon:total:organic,umol\/kg,,,Total Organic Carbon,,umol/kg,,SDN:P01::CORGZZTL,Concentration of organic carbon {organic_C CAS 7440-44-0} {TOC} per unit volume of the water body [dissolved plus reactive particulate phase],,,CORGZZTL
-,carbontetrachloride,pmol\/L,,,Carbontetrachloride,,pmol/L,,SDN:P01::CCL4AFX1,Concentration of tetrachloromethane {CCl4 carbon tetrachloride CAS 56-23-5} per unit volume of the water body [dissolved plus reactive particulate GF/F phase] by filtration, acetone extraction and fluorometry",mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::CPHLFLPZ,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,CPHLFLPZ
-,chlorophyll:extracted2,mg\/m\^3,,,Chlorophyll Extracted2,mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::CPHLFLPZ,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,CPHLFLPZ2
-,chlorophyll:extracted3,mg\/m\^3,,,Chlorophyll Extracted3,mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::CPHLFLPZ,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,CPHLFLPZ3
-,chlorophyll:extracted:0.3um,mg\/m\^3,,,Chlorophyll Extracted 0.3um,mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::CPHLFLPZ,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,CPHLFLPZ
-,chlorophyll:extracted:<5.0um,mg\/m\^3,,,Chlorophyll Extracted <5.0um,mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::CPHLFLPZ,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,CPHLFLPZ
-,chlorophyll:extracted:>0.7um,mg\/m\^3,,,Chlorophyll Extracted >0.7um,mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::CPHLFLPZ,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,CPHLFLPZ
-,chlorophyll:extracted:>5.0um,mg\/m\^3,,,Chlorophyll Extracted >5.0um,mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::SCHLFLPA,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >5um phase] by filtration, acetone extraction and fluorometry",,,SCHLFLPA
-,chlorophyll_plus_phaeo-pigment:extracted,mg\/m\^3,,,Chlorophyll plus Phaeo-Pigment Extracted,,mg/m^3,,,,,,
-,conductance:specific,S\/m,,,Specific Conductance,,S/m,,,,,,
-,conductance:specific,mS\/cm,,lambda x: x/10,Specific Conductance,,S/m,,,,,,
-,conductivity,Ratio,,,Conductivity,,Ratio,,,,,,
-,conductivity,counts|count,,,Sea Water Electrical Conductivity,sea_water_electrical_conductivity,count,,SDN:P01::CNDCZZ01,Electrical conductivity of the water body,,,CNDCZZ01
-ctd,conductivity,counts|count,,,Sea Water Electrical Conductivity,sea_water_electrical_conductivity,count,,SDN:P01::CNDCST01,Electrical conductivity of the water body by CTD,,,CNDCST01
-,conductivity,ms\/cm|mS\/cm,,lambda x: x/10,Sea Water Electrical Conductivity,sea_water_electrical_conductivity,S/m,,SDN:P01::CNDCZZ01,Electrical conductivity of the water body,,,CNDCZZ01
-ctd,conductivity,ms\/cm|mS\/cm,,lambda x: x/10,Sea Water Electrical Conductivity,sea_water_electrical_conductivity,S/m,,SDN:P01::CNDCST01,Electrical conductivity of the water body by CTD,,,CNDCST01
-,conductivity,s\/m|S\/m,,,Conductivity,sea_water_electrical_conductivity,S/m,,SDN:P01::CNDCZZ01,Electrical conductivity of the water body,,,CNDCZZ01
-ctd,conductivity,s\/m|S\/m,,,Conductivity,sea_water_electrical_conductivity,S/m,,SDN:P01::CNDCST01,Electrical conductivity of the water body by CTD,,,CNDCST01
-,conductivity:primary,S\/m,,,Conductivity,sea_water_electrical_conductivity,S/m,,SDN:P01::CNDCST01,Electrical conductivity of the water body by CTD,,,CNDCST01
-,conductivity:primary,mS\/cm,,lambda x: x/10,"Conductivity ",sea_water_electrical_conductivity,S/m,,SDN:P01::CNDCST01,Electrical conductivity of the water body by CTD,,,CNDCST01
-,conductivity:secondary,S\/m,,,Secondary Conductivity,sea_water_electrical_conductivity,S/m,,SDN:P01::CNDCST02,Electrical conductivity of the water body by CTD (sensor 2),,,CNDCST02
-,conductivity:upcast,S\/m,,,Upcast Conductivity,sea_water_electrical_conductivity,S/m,,SDN:P01::CNDCST01,Electrical conductivity of the water body by CTD,,,CNDCST01
-,conductivity_gsw,S\/m,,,Conductivity,sea_water_conductivity,S/m,,SDN:P01::CNDCST01,Electrical conductivity of the water body by CTD,,,bodc_code
-,conductivity_ratio,None,,,Conductivity Ratio,,,,,,,,
-,current:oxygen,mA,,,Current Oxygen,,mA,,,,,,
-,degree_days:cooling,deg C \(ITS\-90\) \(ITS90\) da|deg c \(ITS\-90\) day|deg C \(ITS90\)day|deg C \(ITS-90\) day|deg C \(ITS-90\)day|deg C \(ITS9|deg C \(ITS90\) day,,,Degree Days Cooling,,deg C (ITS-90) day,,,,,,
-,degree_days:cooling,deg C day,,,Cooling Degree Days,,deg C day,,,,,,
-,degree_days:heating,deg C \(ITS\-90\) \(ITS90\) da|deg c \(ITS\-90\) day|deg C \(ITS-90\) day|deg C \(ITS-90\)day|deg C \(ITS9|deg C \(ITS90\) day,,,Degree Days Heating,,deg C (ITS-90) day,,,,,,
-,degree_days:heating,deg C day,,,Heating Degree Days,,deg C day,,,,,,
-,degree_days:heating,,,,Degree Days Heating,,,,,,,,
-,density,kg\/m\^3,,,Density,sea_water_density,kg/m^3,,SDN:P01::DENSWB01,Density of the water body by gravimetry,,,DENSWB01
-,density:air:inside,kg\/m\^3,,,Air Density Inside,,kg/m^3,,,,,,
-,depth,m|metres|metre|meter|meters|Metres|Metre|Meter|Meters,,,Depth,depth,m,,SDN:P01::ADEPZZ01,Depth (spatial coordinate) relative to water surface in the water body,,,depth
-,depth:corrected,metres,,,Depth Corrected,depth,m,,SDN:P01::ADEPZZ01,Depth (spatial coordinate) relative to water surface in the water body,,,depth
-,depth:ctd,metres,,,Depth CTD,depth,m,,SDN:P01::ADEPZZ01,Depth (spatial coordinate) relative to water surface in the water body,,,depth
-,depth:nominal,metres|meters,,,Depth Nominal,depth,m,,SDN:P01::ADEPZZ01,Depth (spatial coordinate) relative to water surface in the water body,,,depth
-,dimethyl_sulphide,nmol\/L,,,Dimethyl Sulphide,mole_concentration_of_dimethyl_sulfide_in_sea_water,nmol/L,,SDN:P01::DMSXGCDZ,"Concentration of dimethyl sulphide {DMS CAS 75-18-3} per unit volume of the water body [dissolved plus reactive particulate unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01
-,fluorescence,volts,,,Sea Water Fluorescence,,Volts,,,,,,
-,fluorescence:calibrated,mg\/m\^3,,,Sea Water Calibrated Fluorescence,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPS01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer and calibration against sample data,,,CPHLPS01
-,fluorescence:calibrated:seapoint,mg\/m\^3,,,Sea Water Calibrated Fluorescence Seapoint,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPS01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer and calibration against sample data,,,CPHLPS01
-,fluorescence:calibrated:seatech,mg\/m\^3,,,Fluorescence Calibrated Seatech,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPS01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer and calibration against sample data,,,CPHLPS01
-,fluorescence:calibrated:wetlabs,mg\/m\^3,,,,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPS01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer and calibration against sample data,,,CPHLPS01
-,fluorescence:ctd,mg\/m\^3,,,Fluorescence CTD,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01
-tob,fluorescence:range,Volts|volts,,,,,,,,,,,
-,fluorescence:uru,mg\/m\^3,,,Sea Water Fluorescence,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01
-,fluorescence:uru:ctd,mg\/m\^3,,,Fluorescence URU CTD,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01
-,fluorescence:uru:rbr,mg\/m\^3,,,Fluorescence URU RBR,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01
-,fluorescence:uru:seapoint,mg\/m\^3,,,Sea Water Fluorescence Seapoint,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01
-,fluorescence:uru:seapoint:2,mg\/m\^3,,,Fluorescence URU Seapoint 2,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR02,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR02
-,fluorescence:uru:seatech,mg\/m\^3,,,Fluorescence URU Seatech,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01
-,fluorescence:uru:upcast,mg\/m\^3,,,Fluorescence URU Upcast,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01
-,fluorescence:uru:wetlabs,mg\/m\^3,,,Sea Water Fluorescence WetLabs,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01
-,fluorescence:uru:wetlabs,volts,,,Sea Water Fluorescence WetLabs,,Volts,,,,,,
-,fluorescence:wetlabs,volts,,,Sea Water Fluorescence WetLabs,,Volts,,,,,,
-,fluorescence:uru:wetlabs:eco-afl,mg\/m\^3,,,Fluorescence URU Wetlabs ECO-AFL,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01
-,fluorescence:wetlabs:eco-afl,mg\/m\^3,,,Fluorescence Wetlabs ECO-AFL,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01
-,fluorescence_cdom:uru:wetlabs,mg\/m\^3,,,Fluorescence CDOM URU Wetlabs,concentration_of_colored_dissolved_organic_matter_in_sea_water_expressed_as_equivalent_mass_fraction_of_quinine_sulfate_dihydrate,mg/m^3,,SDN:P01::CCOMD002,Concentration of coloured dissolved organic matter {CDOM Gelbstoff} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ WET Labs FDOM ECO fluorometer,,,CCOMD002
-,fluorescence_cdom:uru:wetlabs,volts,,,Fluorescence CDOM URU Wetlabs,,volts,,SDN:P01::NVLTWL01,Raw signal (voltage) of instrument output by WET Labs optical backscatter meter,,,NVLTWL01
-,fluorescensce:uru:turner,mg\/m\^3,,,Fluorescensce URU Turner,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01
-,fluorometry-chlorophyll,,,,Fluorometry-Chlorophyll,mass_concentration_of_chlorophyll_a_in_sea_water,,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01
-,heading,,,,platform_orientation,degrees,,,,,,,HEADCM01
-,hplc:allo,mg\/m\^3,,,HPLC Allo,,mg/m^3,,SDN:P01::ALLOMHP1,"Concentration of alloxanthin {CAS 28380-31-6} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,ALLOMHP1
-,hplc:b-car,mg\/m\^3,,,HPLC B-Car,,mg/m^3,,SDN:P01::BBCAMHP1,"Concentration of beta,beta-carotene {beta-carotene CAS 7235-40-7} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,BBCAMHP1
-,hplc:but-fuco,mg\/m\^3,,,HPLC But-fuco,,mg/m^3,,SDN:P01::BUTAMHP1,"Concentration of 19'-butanoyloxyfucoxanthin per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,BUTAMHP1
-,hplc:c2mgdg,mg\/m\^3,,,HPLC C2mgdg,,mg/m^3,,,,,,
-,hplc:chl-a,mg\/m\^3,,,HPLC Chl-a,,mg/m^3,,SDN:P01::CPHLMHP1,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,CPHLMHP1
-,hplc:chl-b,mg\/m\^3,,,HPLC Chl-b,,mg/m^3,,SDN:P01::CHLBMHP1,"Concentration of chlorophyll-b {chl-b CAS 519-62-0} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,CHLBMHP1
-,hplc:chl-c1,mg\/m\^3,,,HPLC Chl-c1,,mg/m^3,,,,,,
-,hplc:chl-c2,mg\/m\^3,,,HPLC Chl-c2,,mg/m^3,,SDN:P01::COCHWA07,"Concentration of chlorophyll-c2 {chl-c2} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,COCHWA07
-,hplc:chl-c3,mg\/m\^3,,,HPLC Chl-c3,,mg/m^3,,SDN:P01::CLC3MHP1,"Concentration of chlorophyll-c3 {chl-c3} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,CLC3MHP1
-,hplc:chlide-a,mg\/m\^3,,,HPLC Chlide-a,,mg/m^3,,SDN:P01::CIDAMHP1,"Concentration of chlorophyllide-a {CAS 14897-06-4} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,CIDAMHP1
-,hplc:diadino,mg\/m\^3,,,HPLC Diadino,,mg/m^3,,SDN:P01::DIADMHP1,"Concentration of diadinoxanthin {CAS 18457-54-0} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,DIADMHP1
-,hplc:diato,mg\/m\^3,,,HPLC Diato,,mg/m^3,,SDN:P01::DIATMHP1,"Concentration of diatoxanthin {CAS 31063-73-7} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,DIATMHP1
-,hplc:dvchl-a,mg\/m\^3,,,HPLC DVChl-a,,mg/m^3,,SDN:P01::DVCAMHP1,"Concentration of divinyl chlorophyll-a {DVchl-a} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,DVCAMHP1
-,hplc:fuco,mg\/m\^3,,,HPLC Fuco,,mg/m^3,,SDN:P01::FUCXMHP1,"Concentration of fucoxanthin {CAS 3351-86-8} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,FUCXMHP1
-,hplc:hex-fuco,mg\/m\^3,,,HPLC Hex-fuco,,mg/m^3,,SDN:P01::HEXAMHP1,"Concentration of 19'-hexanoyloxyfucoxanthin {CAS 60147-85-5} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,HEXAMHP1
-,hplc:lut,mg\/m\^3,,,HPLC Lut,,mg/m^3,,SDN:P01::LUTNMHP1,"Concentration of lutein {CAS 127-40-2} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,LUTNMHP1
-,hplc:me-chlide,mg\/m\^3,,,HPLC Me-chlide,,mg/m^3,,,,,,
-,hplc:mgdvp,mg\/m\^3,,,HPLC MgDVP,,mg/m^3,,,,,,
-,hplc:neo,mg\/m\^3,,,HPLC Neo,,mg/m^3,,SDN:P01::NEOXMHP1,"Concentration of neoxanthin {CAS 30743-41-0} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,NEOXMHP1
-,hplc:peri,mg\/m\^3,,,HPLC Peri,,mg/m^3,,SDN:P01::PERIMHP1,"Concentration of peridinin {CAS 33281-81-1} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,PERIMHP1
-,hplc:phe,mg\/m\^3,,,HPLC Phe,,mg/m^3,,SDN:P01::COPHWA09,"Concentration of phaeophytin-a {pheophytin-a CAS 603-17-8} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,COPHWA09
-,hplc:phe-a,mg\/m\^3,,,HPLC Phe-a,,mg/m^3,,SDN:P01::COPHWA09,"Concentration of phaeophytin-a {pheophytin-a CAS 603-17-8} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,COPHWA09
-,hplc:pheide-a,mg\/m\^3,,,HPLC Pheide-a,,mg/m^3,,,,,,
-,hplc:pras,mg\/m\^3,,,HPLC Pras,,mg/m^3,,SDN:P01::COPRWA11,"Concentration of prasinoxanthin {CAS 94705-97-2} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,COPRWA11
-,hplc:tchl-a,mg\/m\^3,,,HPLC TChl-a,,mg/m^3,,,,,,
-,hplc:viola,mg\/m\^3,,,HPLC Viola,,mg/m^3,,SDN:P01::VILXMHP1,"Concentration of violaxanthin {CAS 126-29-4} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,VILXMHP1
-,hplc:zea,mg\/m\^3,,,HPLC Zea,,mg/m^3,,SDN:P01::ZEAXMHP1,"Concentration of zeaxanthin {CAS 144-68-3} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,ZEAXMHP1
-,humidity:relative,%,,,Humidity Relative,,%,,,,,,
-,humidity:relative:inside,%,,,Humidity Relative Inside,,%,,,,,,
-,hydrogen-sulphide,microg-at\/l,,,Hydrogen-sulphide,,umol/L,,SDN:P01::H2SXZZXX,Concentration of hydrogen sulphide {H2S CAS 7783-06-4} per unit volume of the water body [dissolved plus reactive particulate phase],,,H2SXZZXX
-,hydrogen_sulfide,umol\/L,,,Hydrogen Sulfide,mole_concentration_of_hydrogen_sulfide_in_sea_water,umol/L,,SDN:P01::H2SXZZXX,Concentration of hydrogen sulphide {H2S CAS 7783-06-4} per unit volume of the water body [dissolved plus reactive particulate phase],,,H2SXZZXX
-,ins:location,,,,INS LOCATION,,,,,,,,
-,instr_depth,,,,Instrument Depth,instrument_depth,,,,,,,
-,iodine129,10exp7 at\/L,,,Iodine129,,10exp7 at/L,,,,,,
-,iodine129uncert,10exp7 at\/L,,,Iodine129uncert,,10exp7 at/L,,,,,,
-,iodine:isotope:129,10exp7 at\/L,,,Iodine Isotope 129,,10exp7 at/L,,,,,,
-,iodine:isotope:129:uncertainty,10exp7 at\/L,,,Iodine Isotope 129 Uncertainty,,10exp7 at/L,,,,,,
-,iron:filtered:buffered:0.03,nmol\/L,,,Iron Filtered Buffered 0.03,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX ?,,,,FEXXCLDX ?
-,iron:filtered:buffered:0.1,nmol\/L,,,Iron Filtered Buffered 0.1,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX ?,,,,FEXXCLDX ?
-,iron:filtered:buffered:0.22,nmol\/L,,,Iron Filtered Buffered 0.22,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX ?,,,,FEXXCLDX ?
-,iron:filtered:buffered:0.45,nmol\/L,,,Iron Filtered Buffered 0.45,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX ?,,,,FEXXCLDX ?
-,iron:filtered:buffered:200kdalton,nmol\/L,,,Iron Filtered Buffered 200kDalton,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX ?,,,,FEXXCLDX ?
-,iron:filtered:strongacid:0.22,nmol\/L,,,Iron Filtered StrongAcid 0.22,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX ?,,,,FEXXCLDX ?
-,iron:filtered:strongacid:geo:0.22,nmol\/L,,,Iron Filtered StrongAcid Geo 0.22,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX ?,,,,FEXXCLDX ?
-,iron:filtered:strongacid:mv:0.22,nmol\/L,,,Iron Filtered StrongAcid MV 0.22,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX ?,,,,FEXXCLDX ?
-,iron:unfiltered:buffered,nmol\/L,,,Iron Unfiltered Buffered,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX,Concentration of total iron {total_Fe CAS 7439-89-6} per unit volume of the water body [dissolved plus reactive particulate phase] by acidification and flow-injection chemiluminescence,,,FEXXCLDX
-,iron:unfiltered:geo:strongacid,nmol\/L,,,Iron Unfiltered Geo StrongAcid,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX,Concentration of total iron {total_Fe CAS 7439-89-6} per unit volume of the water body [dissolved plus reactive particulate phase] by acidification and flow-injection chemiluminescence,,,FEXXCLDX
-,iron:unfiltered:strongacid,nmol\/L,,,Iron Unfiltered StrongAcid,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX,Concentration of total iron {total_Fe CAS 7439-89-6} per unit volume of the water body [dissolved plus reactive particulate phase] by acidification and flow-injection chemiluminescence,,,FEXXCLDX
-,iron:unfiltered:strongacid:mv,nmol\/L,,,Iron Unfiltered StrongAcid MV,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX,Concentration of total iron {total_Fe CAS 7439-89-6} per unit volume of the water body [dissolved plus reactive particulate phase] by acidification and flow-injection chemiluminescence,,,FEXXCLDX
-ane,iss_reception,None,,,ISS Reception,,,,,,,,
-,kraft-mill_effluent,ppm,,,Kraft-Mill Effluent,,ppm,,,,,,
-,lat,degrees,,,Latitude,latitude,degrees_north,,SDN:P01::ALATZZ01,Latitude north,,,latitude
-,latitude,degrees,,,Latitude,latitude,degrees_north,,SDN:P01::ALATZZ01,Latitude north,,,latitude
-,lon,degrees,,,Longitude,longitude,degrees_east,,SDN:P01::ALONZZ01,Longitude east,,,longitude
-,longitude,degrees,,,Longitude,longitude,degrees_east,,SDN:P01::ALONZZ01,Longitude east,,,longitude
-,methane,nmol\/L,,,Methane,,nmol/L,,SDN:P01::CH4CGCXX,Concentration of methane {CH4 CAS 74-82-8} per unit volume of the water body [dissolved plus reactive particulate phase] by gas chromatography,,,CH4CGCXX
-,methylene_chloride,pmol\/L,,,Methylene Chloride,,pmol/L,,,,,,
-,nanophytoplankton,\/mL,,,Nanophytoplankton,,/mL,,SDN:P01::PU00A01B,Abundance of nanophytoplankton per unit volume of the water body by flow cytometry,,,PU00A01B
-,nitrate,umol\/L|microg-at/l,,,Nitrate,mole_concentration_of_nitrate_in_sea_water,umol/L,,SDN:P01::NTRAZZXX,Concentration of nitrate {NO3- CAS 14797-55-8} per unit volume of the water body [unknown phase],,,NTRAZZXX
-,nitrate_plus_nitrite,umol\/l|umol\/L|ug-at\/L,,,,mole_concentration_of_nitrate_and_nitrite_in_sea_water,umol/L,,SDN:P01::NTRZAAZX,Concentration of nitrate+nitrite {NO3+NO2} per unit volume of the water body [unknown phase] by colorimetric autoanalysis,,,NTRZAAZX
-,nitrate_plus_nitrite2,umol\/L,,,Nitrate plus Nitrite2,mole_concentration_of_nitrate_and_nitrite_in_sea_water,umol/L,,SDN:P01::NTRZAAZX,Concentration of nitrate+nitrite {NO3+NO2} per unit volume of the water body [unknown phase] by colorimetric autoanalysis,,,NTRZAAZ2
-,nitrate_plus_nitrite:isus,umol\/L,,,Nitrate plus nitrite ISUS,mole_concentration_of_nitrate_and_nitrite_in_sea_water,umol/L,,SDN:P01::NTRZAAZX,Concentration of nitrate+nitrite {NO3+NO2} per unit volume of the water body [unknown phase] by colorimetric autoanalysis,,,NTRZAAZX
-,nitrate_plus_nitrite:isus,volts|Volts,,,Nitrate plus nitrite ISUS,,volts,,,,,,
-,nitrate_plus_nitrite:isus:voltage,Volts,,,Nitrate plus nitrite ISUS Voltage,,Volts,,,,,,
-,nitrite,umol\/L|mmol\/m|microg-at\/l,,,Nitrite,mole_concentration_of_nitrite_in_sea_water,umol/L,,SDN:P01::NTRIZZXX,Concentration of nitrite {NO2- CAS 14797-65-0} per unit volume of the water body [unknown phase],,,NTRIZZXX
-,nitrogen:dissolved:organic,umol\/L,,,Nitrogen Dissolved Organic,mole_concentration_of_dissolved_organic_nitrogen_in_sea_water,umol/L,,SDN:P01::MDMAP009,Concentration of organic nitrogen {organic_N} {DON} per unit volume of the water body [dissolved plus reactive particulate unknown phase] by filtration and elemental analysis,,,NTOTCNPZ
-,nitrogen:particulate:organic,mg\/m\^3,,,Nitrogen Particulate Organic,,mg/m^3,,SDN:P01::NTOTZZZZ,Concentration of total nitrogen {total_N} {PON} per unit volume of the water body [particulate >unknown phase],,,NTOTZZZZ
-,nitrogen:particulate:total,umol\/L,,,Nitrogen Particulate Total,,umol/L,,,,,,
-,nitrogen:particulate:total,umol\/kg,,,Nitrogen Particulate Total,,umol/kg,,,,,,
-,nitrogen:total,uM,,,Nitrogen Total,,uM,,SDN:P01::NTOTZZXX,Concentration of total nitrogen {total_N} per unit volume of the water body [dissolved plus reactive particulate phase],,,NTOTZZXX
-,nitrogen:total:dissolved,uM,,,Nitrogen Total Dissolved,mole_concentration_of_dissolved_nitrogen_in_sea_water,uM,,,,,,
-,ntu,,,,Turbidity,sea_water_turbidity,NTU,,SDN:P01::TURBXXXX,Turbidity of water in the water body,,,TURBXXXX
-,number_of_bin_records,None,,,,,,,,,,,
-,oxygen,mg\/l,,lambda x: x*22.319/31.998,Oxygen,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01
-,oxygen,ml\/l|mL\/L,,,Oxygen concentration,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01
-,oxygen,umol\/L,,lambda x: x*0.022391,Oxygen concentration,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01
-,oxygen,umol\/kg,,,Oxygen concentration,moles_of_oxygen_per_unit_mass_in_sea_water,umol/kg,,,,,,
-,oxygen:dissolved,L\/L,,,,volume_fraction_of_oxygen_in_sea_water,L/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01
-,oxygen:dissolved,mL\/L,,,Dissolved Oxygen,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01
-che,oxygen:dissolved,mL\/L,,,Dissolved Oxygen,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYWITX,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by Winkler titration,,,DOXYWITX
-,oxygen:dissolved:ysi,mL\/L,,,Dissolved Oxygen,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01
-,oxygen:dissolved,mg\/L,,,Dissolved Oxygen,mass_concentration_of_oxygen_in_sea_water,mg/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01
-,oxygen:dissolved,umol\/L,,lambda x: x*0.022391,Dissolved Oxygen,volume_fraction_of_oxygen_in_sea_water,,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensorSDN:P06::UMLL,Millilitres per litre,DOXYZZ01
-,oxygen:dissolved,umol\/kg,,,Dissolved Oxygen,moles_of_oxygen_per_unit_mass_in_sea_water,umol/kg,,SDN:P01::DOXMZZXX,Concentration of oxygen {O2 CAS 7782-44-7} per unit mass of the water body [dissolved plus reactive particulate phase],SDN:P06::KGUM,Micromoles per kilogram,DOXMZZ01
-,oxygen:dissolved2,mL\/L,,,Dissolved Oxygen 2,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ02,,,,DOXYZZ02
-,oxygen:dissolved:bottle:mass [ml/l],umol\/kg,,,Dissolved Oxygen Bottle Mass,moles_of_oxygen_per_unit_mass_in_sea_water,umol/kg,,,,,,
-,oxygen:dissolved:bottle:volume [ml/l],mL\/L,,,Dissolved Oxygen Bottle Volume,,mL/L,,,,,,
-,oxygen:dissolved:ctd,mL\/L,,,,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01
-,oxygen:dissolved:ctd,umol\/kg,,,,moles_of_oxygen_per_unit_mass_in_sea_water,umol/kg,,SDN:P01::DOXMZZXX,Concentration of oxygen {O2 CAS 7782-44-7} per unit mass of the water body [dissolved plus reactive particulate phase],SDN:P06::KGUM,Micromoles per kilogram,DOXMZZ01
-,oxygen:dissolved:g+g,mL\/L,,,Dissolved Oxygen G+G,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01
-,oxygen:dissolved:mass:ctd,umol\/kg,,,Dissolved Oxygen Mass CTD,moles_of_oxygen_per_unit_mass_in_sea_water,umol/kg,,SDN:P01::DOXMZZXX,Concentration of oxygen {O2 CAS 7782-44-7} per unit mass of the water body [dissolved plus reactive particulate phase],SDN:P06::KGUM,Micromoles per kilogram,DOXMZZ01
-,oxygen:dissolved:rinko,Volts,,,,,Volts,,,,,,
-,oxygen:dissolved:rinko,mL\/L,,,,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01
-,oxygen:dissolved:saturation,%,,,Dissolved Oxygen Saturation,fractional_saturation_of_oxygen_in_sea_water,%,,SDN:P01::OXYSOP01,Saturation of oxygen {O2 CAS 7782-44-7} in the water body [dissolved plus reactive particulate phase] by in-situ oxygen optode and computation from concentration,,,OXYSOP01
-,oxygen:dissolved:saturation:rbr,%,,,Dissolved Oxygen Saturation RBR,fractional_saturation_of_oxygen_in_sea_water,%,,SDN:P01::OXYSOP01,Saturation of oxygen {O2 CAS 7782-44-7} in the water body [dissolved plus reactive particulate phase] by in-situ oxygen optode and computation from concentration,,,OXYSOP01
-,oxygen:dissolved:saturation:rinko,%,,,Dissolved Oxygen Saturation Rinko,fractional_saturation_of_oxygen_in_sea_water,%,,SDN:P01::OXYSOP01,Saturation of oxygen {O2 CAS 7782-44-7} in the water body [dissolved plus reactive particulate phase] by in-situ oxygen optode and computation from concentration,,,OXYSOP01
-,oxygen:dissolved:saturation:upcast,mL\/L,,,Dissolved Oxygen Saturation Upcast,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01
-,oxygen:dissolved:sbe,mL\/L,,,Dissolved Oxygen SBE,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01
-,oxygen:dissolved:sbe,umol\/kg,,,Dissolved Oxygen SBE,moles_of_oxygen_per_unit_mass_in_sea_water,umol/kg,,SDN:P01::DOXMZZXX,Concentration of oxygen {O2 CAS 7782-44-7} per unit mass of the water body [dissolved plus reactive particulate phase],SDN:P06::KGUM,Micromoles per kilogram,DOXMZZ01
-,oxygen:dissolved:sbe,umol\/l,,,Dissolved Oxygen SBE,mole_concentration_of_dissolved_molecular_oxygen_in_sea_water,umol/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01
-,oxygen:dissolved:volume:ctd,mL\/L,,,Dissolved Oxygen Volume CTD,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01
-,oxygen:dissolved:volume:sbe,mL\/L,,,Dissolved Oxygen Volume SBE,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01
-,oxygen:dissolved:weiss,mL\/L,,,Dissolved Oxygen Weiss,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLLSDN:P06::UMLL,Millilitres per litre,DOXYZZ01
-,oxygen:isotope:18,\/mille,,,Oxygen Isotope 18,,/mille,,SDN:P01::D18OMXWT,Enrichment of oxygen-18 in water molecules {18O in H2O CAS 14797-71-8} {delta(18)O} in the water body by mass spectrometry,,,D18OMXWT
-,oxygen_temperature:rinko,Volts,,,Oxygen Temperature Rinko,temperature_of_sensor_for_oxygen_in_sea_water,Volts,,SDN:P01::OXYTAAOP,Temperature of oxygen determination by optode,,,OXYTAAOP
-,par,uE\/m\^2\/sec,,,Photoactive Radiation,,uE/m^2/sec,,SDN:P01:: IRRDUV01,Downwelling vector irradiance as photons of electromagnetic radiation (PAR wavelengths) in the water body by cosine-collector radiometer,SDN:P06::UMES,MicroEinsteins per square metre per second,IRRDUV01
-,par1,uE\/m\^2\/sec,,,PAR1,,uE/m^2/sec,,SDN:P01:: IRRDUV01,Downwelling vector irradiance as photons of electromagnetic radiation (PAR wavelengths) in the water body by cosine-collector radiometer,SDN:P06::UMES,MicroEinsteins per square metre per second,IRRDUV01
-,par:1,uE\/m\^2\/sec,,,PAR 1,,uE/m^2/sec,,SDN:P01:: IRRDUV01,Downwelling vector irradiance as photons of electromagnetic radiation (PAR wavelengths) in the water body by cosine-collector radiometer,SDN:P06::UMES,MicroEinsteins per square metre per second,IRRDUV01
-,par:ctd,uE\/m\^2\/sec,,,PAR CTD,,uE/m^2/sec,,SDN:P01:: IRRDUV01,Downwelling vector irradiance as photons of electromagnetic radiation (PAR wavelengths) in the water body by cosine-collector radiometer,SDN:P06::UMES,MicroEinsteins per square metre per second,IRRDUV01
-,par:reference,uE\/m\^2\/sec,,,PAR Reference,,uE/m^2/sec,,SDN:P01::IRRDSV01,Downwelling vector irradiance as photons of electromagnetic radiation (PAR wavelengths) in the atmosphere by cosine-collector radiometer,SDN:P06::UMES,MicroEinsteins per square metre per second,IRRDSV01
-,ph,None,,,,sea_water_ph_reported_on_total_scale,,,SDN:P01::PHXXPR01,pH (unspecified scale) of the water body by pH electrode,,,PHXXPR01
-,ph:nbs,None,,,pH NBS,sea_water_ph_reported_on_total_scale,,,SDN:P01::PHXXPR01,pH (unspecified scale) of the water body by pH electrode,,,PHXXPR01
-,ph:sbe,None,,,,sea_water_ph_reported_on_total_scale,,,SDN:P01::PHXXPR01,pH (unspecified scale) of the water body by pH electrode,,,PHXXPR01
-,ph:sbe:nominal,None,,,pH SBE Nominal,sea_water_ph_reported_on_total_scale,,,SDN:P01::PHXXPR01,pH (unspecified scale) of the water body by pH electrode,,,PHXXPR01
-,ph:sws,None,,,pH SWS,sea_water_ph_reported_on_total_scale,,,SDN:P01::PHXXPR01,pH (unspecified scale) of the water body by pH electrode,,,PHXXPR01
-,phaeo-pigment:extracted,mg\/m\^3,,,Phaeo-Pigment Extracted,mass_concentration_of_phaeopigments_in_sea_water,mg/m^3,,SDN:P01::PHAEFLPZ,"Concentration of phaeopigments {pheopigments} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,PHAEFLPZ
-,phaeo-pigment:extracted3,mg\/m\^3,,,Phaeo-Pigment Extracted3,mass_concentration_of_phaeopigments_in_sea_water,mg/m^3,,SDN:P01::PHAEFLPZ,"Concentration of phaeopigments {pheopigments} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,PHAEFLPZ
-,phaeo-pigment:extracted:0.3um,mg\/m\^3,,,Phaeo-Pigment Extracted 0.3um,mass_concentration_of_phaeopigments_in_sea_water,mg/m^3,,,,,,
-,phaeo-pigment:extracted:bottle,mg\/m\^3,,,Phaeo-Pigment Extracted Bottle,,mg/m^3,,,,,,
-,phosphate,microg-at\/l|ug-at\/L|umol\/L|mmol\/m,,,Phosphate,mass_concentration_of_phosphate_in_sea_water,umol/L,,SDN:P01::PHOSAAZX,Concentration of phosphate {PO43- CAS 14265-44-2} per unit volume of the water body [unknown phase] by colorimetric autoanalysis,,,PHOSAAZX
-,phosphate(inorg),mmol\/m,,,Phosphate(inorg),mole_concentration_of_phosphate_in_sea_water,umol/L,,,,,,
-,phosphate2,umol\/L,,,Phosphate2,mole_concentration_of_phosphate_in_sea_water,umol/L,,SDN:P01::PHOSAAZX,Concentration of phosphate {PO43- CAS 14265-44-2} per unit volume of the water body [unknown phase] by colorimetric autoanalysis,,,PHOSAAZ2
-,phytoplankton:volume,mm\^3\/m\^3,,,Phytoplankton Volume,,mm^3/m^3,,,,,,
-,picophytoplankton,\/mL,,,Picophytoplankton,,/mL,,SDN:P01::PU00A02Z,Abundance of picophytoplankton per unit volume of the water body by flow cytometry,,,PU00A02Z
-,pitch,,,,platform_pitch,,degrees,,,,,,PTCHEI01
-,precipitation,mm,,,Precipitation,thickness_of_rainfall_amount,mm,,,,,,
-,precipitation:rate,mm\/hr,,,Precipitation Rate,rainfall_rate,mm/hr,,,,,,
-,pressure,count|counts,,,Pressure,,counts,,,,,,PRESPR01
-,pressure,dbar|dbars|decibar|decibars|DBars|DBAR,,,Pressure,sea_water_pressure,decibar,,SDN:P01::PRESPR01,Pressure (spatial coordinate) exerted by the water body by profiling pressure sensor and correction to read zero at sea level,,,PRESPR01
-ctd,pressure,dbar|dbars|decibar|decibars|DBars|DBAR,,"lambda x: -1*gsw.z_from_p(x,ds.attrs['latitude'])",Depth,depth,m,,SDN:P01::ADEPZZ01,Depth (spatial coordinate) relative to water surface in the water body,,,depth
-ctd,pressure,dbar|dbars|decibar|decibars|DBars|DBAR,,,Pressure,sea_water_pressure,decibar,,SDN:P01::PRESPR01,Pressure (spatial coordinate) exerted by the water body by profiling pressure sensor and correction to read zero at sea level,,,PRESPR01
-ane,pressure,kpascal|kilopascal|Kpascal,,,Pressure,air_pressure,kilopascal,,,,,,PRESPR01
-,pressure:atmospheric:sealevel,mbar,,,Pressure Atmospheric SeaLevel,air_pressure_at_mean_sea_level,mbar,,,,,,
-,pressure:ctd,decibar,,,Pressure CTD,sea_water_pressure,decibar,,SDN:P01::PRESPR01,Pressure (spatial coordinate) exerted by the water body by profiling pressure sensor and correction to read zero at sea level,,,PRESPR01
-,pressure:reversing,decibar,,,Pressure Reversing,sea_water_pressure,decibar,,SDN:P01::PRESPR01,Pressure (spatial coordinate) exerted by the water body by profiling pressure sensor and correction to read zero at sea level,,,PRESPR01
-,production:primary,mgC\/m\^3\/day,,,Production Primary,net_primary_production_of_biomass_expressed_as_carbon_per_unit_volume_in_sea_water,mgC/m^3/day,,,,,,
-,production:primary,mgC\/m\^3\/hour,,,Production Primary,net_primary_production_of_biomass_expressed_as_carbon_per_unit_volume_in_sea_water,mgC/m^3/hour,,,,,,
-,profile,None,,,,,,,,,,,
-,propane,nmol\/L,,,Propane,,nmol/L,,SDN:P01::AX03GCTX,"Concentration of propane {CAS 74-98-6} per unit volume of the water body [dissolved plus reactive particulate phase] by purging, cryogenic trapping and gas chromatography",,,AX03GCTX
-,radiation:solar,W\/m\^2,,,Solar Radiation,,W/m^2,,,,,,
-,radiation:solar:high,W\/m\^2,,,High Solar Radiation,,W/m^2,,,,,,
-,record #,None,,,Record #,,,,,,,,record_number
-,record_number,None|/a,,,,,,,,,,,record_number
-,recordnumber,None,,,RecordNumber,,,,,,,,record_number
-,reference,None,,,,,,,,,,,
-,roll,,,,platform_roll,degrees,,,,,,,ROLLEI01
-,run:wind,km,,,Run Wind,,km,,,,,,
-,run_wind,km,,,Run Wind,,km,,,,,,
-,salinity,PSS\-78|PPS78,,,Sea Water Practical Salinity,sea_water_practical_salinity,PSS-78,,SDN:P01::PSALST01,Practical salinity of the water body by CTD and computation using UNESCO 1983 algorithm,,,PSALST01
-,salinity,ppt|PPT,,,Sea Water Practical Salinity,sea_water_salinity,PPT,,SDN:P01::SSALST01,Salinity of the water body by CTD,,,SSALST01
-,salinity,ppt|PPT,,lambda x: gsw.SP_from_SK(x),Sea Water Practical Salinity,sea_water_practical_salinity,PSS-78,,SDN:P01::PSALST01,Practical salinity of the water body by CTD and computation using UNESCO 1983 algorithm,,,PSALST01
-,salinity: practical,PSS-78|PSU,,,Sea Water Practical Salinity,sea_water_practical_salinity,PSS-78,,SDN:P01::PSALST01,Practical salinity of the water body by CTD and computation using UNESCO 1983 algorithm,,,PSALBST01
-,salinity: pre-1978,PPT,,,Salinity Pre-1978,sea_water_salinity,PPT,,SDN:P01::SSALST01,Salinity of the water body by CTD,,,SSALST01
-,salinity: pre-1978,PPT,,lambda x: gsw.SP_from_SK(x),Sea Water Practical Salinity,sea_water_practical_salinity,PSS-78,,SDN:P01::PSALST01,Practical salinity of the water body by CTD and computation using UNESCO 1983 algorithm,,,PSALST01
-,salinity:bottle,PPT|ppt,,,Salinity Bottle,sea_water_salinity,PPT,,SDN:P01::SSALBSTX,Salinity of the water body by bench salinometer,,,SSALBSTX
-,salinity:bottle,PPT,,lambda x: gsw.SP_from_SK(x),Salinity Bottle,sea_water_practical_salinity,PSS-78,,SDN:P01::PSALBSTX,Practical salinity of the water body by bench salinometer and computation using UNESCO 1983 algorithm,,,PSALBSTX
-,salinity:bottle,PSS-78,,,Salinity Bottle,sea_water_practical_salinity,PSS-78,,SDN:P01::PSALBSTX,Practical salinity of the water body by bench salinometer and computation using UNESCO 1983 algorithm,,,PSALBSTX
-,salinity:bottle,,,,Salinity Bottle,sea_water_salinity,,,SDN:P01::SSALBSTX,Salinity of the water body by bench salinometer,,,SSALBSTX_no_unit
-,salinity:ctd,PSS-78,,,Salinity CTD,sea_water_practical_salinity,PSS-78,,SDN:P01::PSALST01,Practical salinity of the water body by CTD and computation using UNESCO 1983 algorithm,,,PSALST01
-,salinity:cur,PSS-78,,,Sea Water Practical Salinity,sea_water_practical_salinity,PSS-78,,,,,,PSLTZZ01
-,salinity:cur,ppt,,,Sea Water Practical Salinity,sea_water_practical_salinity,PPT,,,,,,ODSDM021
-,salinity:t0:c0,none|PSS-78,,,Salinity T0 C0,sea_water_practical_salinity,PSS-78,,SDN:P01::PSALST01,Practical salinity of the water body by CTD and computation using UNESCO 1983 algorithm,,,PSALST01
-,salinity:t1:c1,PSS-78,,,Salinity T1 C1,sea_water_practical_salinity,PSS-78,,SDN:P01::PSALST02,Practical salinity of the water body by CTD (second sensor) and computation using UNESCO 1983 algorithm,,,PSALST02
-,salinity:upcast,PSS-78,,,Salinity Upcast,sea_water_practical_salinity,PSS-78,,SDN:P01::PSALST01,Practical salinity of the water body by CTD and computation using UNESCO 1983 algorithm,,,PSALST01
-,sample_method,None,,,Sample Method,,,,,,,,
-,sample_number,None,,,Sample Number,,,,,,,,
-,sample_order,None,,,Sample Order,,,,,,,,
-,sampler_id_number,None,,,Sampler ID Number,,,,,,,,
-,sampler_type,None,,,Sampler Type,,,,,,,,
-,scan_number,None,,,Record Number,,,,,,,,record_number
-,sigma-t,kg\/m\^3,,,Sigma-theta,sea_water_sigma_t,kg/m^3,,SDN:P01::SIGTPR01,Sigma-theta of the water body by CTD and computation from salinity and potential temperature using UNESCO algorithm,,,SIGTEQST
-,sigma-t:ctd,Kg\/m\^3,,,Sigma-t CTD,,Kg/m^3,,,,,,
-ubc,sigma-t,None,,,Sigma-t,sea_water_sigma_t,kg/m^3,,SDN:P01::SIGTPR01,Sigma-theta of the water body by CTD and computation from salinity and potential temperature using UNESCO algorithm,,,SIGTEQST
-,silicate,microg-at/l|ug-at\/L|umol\/L|umol\/l|umol\/L|mmol\/m,,,Silicate,mole_concentration_of_silicate_in_sea_water,umol/L,,SDN:P01::SLCAZZXX,Concentration of silicate {SiO44- CAS 17181-37-2} per unit volume of the water body [unknown phase],,,SLCAZZXX
-,silicate2,umol\/L,,,Silicate2,mole_concentration_of_silicate_in_sea_water,umol/L,,SDN:P01::SLCAZZXX,Concentration of silicate {SiO44- CAS 17181-37-2} per unit volume of the water body [unknown phase],,,SLCAZZX2
-,silicate:acidified,umol\/L,,,Silicate Acidified,mole_concentration_of_silicate_in_sea_water,umol/L,,SDN:P01::SLCAZZXX,Concentration of silicate {SiO44- CAS 17181-37-2} per unit volume of the water body [unknown phase],,,SLCAZZXX
-,silicate:corrected,umol\/L,,,Silicate Corrected,mole_concentration_of_silicate_in_sea_water,umol/L,,SDN:P01::SLCAZZXX,Concentration of silicate {SiO44- CAS 17181-37-2} per unit volume of the water body [unknown phase],,,SLCAZZXX
-,sound velocity,m\/s,,,Sound Velocity,speed_of_sound_in_sea_water,m/s,,SDN:P01::SVELCV01,Sound velocity in the water body by computation from temperature and salinity by unspecified algorithm,,,SVELCV01
-,speed,cm\/s,,,sea_water_speed,cm/s,,,,,,,LCSAEL01
-,speed,m\/s,,,,m/s,,,,,,,LCSAEL01
-tob,speed:ship,knots,,,Platform Speed,platform_speed_wrt_ground,knots,,SDN:P01::APSAZZ01,Speed of measurement platform relative to ground surface {speed over ground},,,APSAZZ01
-tob,direction:ship,degrees,,,Platform Speed Direction,platform_course,degrees,,SDN:P01::APDAZZ01,Direction of motion of measurement platform relative to ground surface {course made good},,,APDAZZ01
-ane,speed:gust,m\/s,,,Speed Gust,,,,,,,,
-ane,speed:gust:1,m\/s,,,Speed Gust 1,,m/s,,,,,,
-ane,speed:gust:2,m\/s,,,Speed Gust 2,,m/s,,,,,,
-,speed:sound,m/s,,,,speed_of_sound_in_sea_water,m/s,,SDN:P01::SVELXXXX,Sound velocity in the water body,,,SVELXXXX
-,speed:sound,,,,speed_of_sound_in_sea_water,m/s,,,SDN:P01::SVELXXXX,Sound velocity in the water body,,,SVELXXXX
-,speed:sound:1,,,,speed_of_sound_in_sea_water,m/s,,,SDN:P01::SVELXXXX,Sound velocity in the water body,,,SVELXXXX
-,speed:sound:2,,,,speed_of_sound_in_sea_water,m/s,,,SDN:P01::SVELXXXX,Sound velocity in the water body,,,SVELXXX2
-,speed:up,,,,upward_sea_water_velocity,cm/s,,,,,,,LRZASP01
-ane,speed:wind,m\/s,,,Speed Wind,,m/s,,,,,,
-ane,speed:wind:1,m\/s,,,Speed Wind 1,,m/s,,,,,,
-ane,speed:wind:2,m\/s,,,Speed Wind 2,,m/s,,,,,,
-ane,speed:wind:east,m\/s,,,Speed Wind East,,,,,,,,
-ane,speed:wind:high,m\/s,,,Speed Wind High,,m/s,,,,,,
-ane,speed:wind:north,m\/s,,,Speed Wind North,,,,,,,,
-ane,speed:wind_high,m\/s,,,Speed Wind High,,m/s,,,,,,
-,spm,mg\/L,,,SPM,mass_concentration_of_suspended_matter_in_sea_water,mg/L,,,,,,
-,station,None,,,Station,,,,,,,,
-,station_name,None,,,Station Name,,,,,,,,
-,str_id,None,,,,,,,,,,,
-,sulphate so4,mol\/m,,,Sulphate SO4,,mol/m,,SDN:P01::SO4XCLP1,Concentration of sulphate {SO4(2-) sulfate CAS 14808-79-8} per unit volume of the water body [dissolved plus reactive particulate unknown phase],,,MDMAP010,
+,carbon:particulate:organic,umol\/L,,,,,umol/L,,SDN:P01::MDMAP010,Concentration of organic carbon {organic_C CAS 7440-44-0} {POC} per unit volume of the water body [particulate >unknown phase],,,MDMAP010,
+,carbon:particulate:total,umol\/L,,,Particulate Total Carbon,mole_concentration_of_particulate_matter_expressed_as_carbon_in_sea_water,umol/L,,SDN:P01::MDMAP011,Concentration of total carbon {total_C CAS 7440-44-0} per unit volume of the water body [particulate >unknown phase],,,MDMAP011,
+,carbon:particulate:total,umol\/kg,,,Particulate Total Carbon,mole_concentration_of_particulate_matter_expressed_as_carbon_in_sea_water,umol/kg,,SDN:P01::MDMAP011,Concentration of total carbon {total_C CAS 7440-44-0} per unit volume of the water body [particulate >unknown phase],,,MDMAP011,
+,carbon:total:organic,mg/L,,,Total Organic Carbon,,mg/L,,SDN:P01::CORGZZTL,Concentration of organic carbon {organic_C CAS 7440-44-0} {TOC} per unit volume of the water body [dissolved plus reactive particulate phase],,,CORGZZTL,
+,carbon:total:organic,uM|umol\/L,,,Total Organic Carbon,,umol/L,,SDN:P01::CORGZZTL,Concentration of organic carbon {organic_C CAS 7440-44-0} {TOC} per unit volume of the water body [dissolved plus reactive particulate phase],,,CORGZZTL,
+,carbon:total:organic,umol\/kg,,,Total Organic Carbon,,umol/kg,,SDN:P01::CORGZZTL,Concentration of organic carbon {organic_C CAS 7440-44-0} {TOC} per unit volume of the water body [dissolved plus reactive particulate phase],,,CORGZZTL,
+,carbontetrachloride,pmol\/L,,,Carbontetrachloride,,pmol/L,,SDN:P01::CCL4AFX1,Concentration of tetrachloromethane {CCl4 carbon tetrachloride CAS 56-23-5} per unit volume of the water body [dissolved plus reactive particulate GF/F phase] by filtration, acetone extraction and fluorometry",mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::CPHLFLPZ,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,CPHLFLPZ,
+,chlorophyll:extracted2,mg\/m\^3,,,Chlorophyll Extracted2,mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::CPHLFLPZ,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,CPHLFLPZ2,
+,chlorophyll:extracted3,mg\/m\^3,,,Chlorophyll Extracted3,mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::CPHLFLPZ,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,CPHLFLPZ3,
+,chlorophyll:extracted:0.3um,mg\/m\^3,,,Chlorophyll Extracted 0.3um,mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::CPHLFLPZ,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,CPHLFLPZ,
+,chlorophyll:extracted:<5.0um,mg\/m\^3,,,Chlorophyll Extracted <5.0um,mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::CPHLFLPZ,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,CPHLFLPZ,
+,chlorophyll:extracted:>0.7um,mg\/m\^3,,,Chlorophyll Extracted >0.7um,mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::CPHLFLPZ,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,CPHLFLPZ,
+,chlorophyll:extracted:>5.0um,mg\/m\^3,,,Chlorophyll Extracted >5.0um,mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::SCHLFLPA,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >5um phase] by filtration, acetone extraction and fluorometry",,,SCHLFLPA,
+,chlorophyll_plus_phaeo-pigment:extracted,mg\/m\^3,,,Chlorophyll plus Phaeo-Pigment Extracted,,mg/m^3,,,,,,,
+,conductance:specific,S\/m,,,Specific Conductance,,S/m,,,,,,,
+,conductance:specific,mS\/cm,,lambda x: x/10,Specific Conductance,,S/m,,,,,,,
+,conductivity,Ratio,,,Conductivity,,Ratio,,,,,,,
+,conductivity,counts|count,,,Sea Water Electrical Conductivity,sea_water_electrical_conductivity,count,,SDN:P01::CNDCZZ01,Electrical conductivity of the water body,,,CNDCZZ01,
+ctd,conductivity,counts|count,,,Sea Water Electrical Conductivity,sea_water_electrical_conductivity,count,,SDN:P01::CNDCST01,Electrical conductivity of the water body by CTD,,,CNDCST01,
+,conductivity,ms\/cm|mS\/cm,,lambda x: x/10,Sea Water Electrical Conductivity,sea_water_electrical_conductivity,S/m,,SDN:P01::CNDCZZ01,Electrical conductivity of the water body,,,CNDCZZ01,
+ctd,conductivity,ms\/cm|mS\/cm,,lambda x: x/10,Sea Water Electrical Conductivity,sea_water_electrical_conductivity,S/m,,SDN:P01::CNDCST01,Electrical conductivity of the water body by CTD,,,CNDCST01,
+,conductivity,s\/m|S\/m,,,Conductivity,sea_water_electrical_conductivity,S/m,,SDN:P01::CNDCZZ01,Electrical conductivity of the water body,,,CNDCZZ01,
+ctd,conductivity,s\/m|S\/m,,,Conductivity,sea_water_electrical_conductivity,S/m,,SDN:P01::CNDCST01,Electrical conductivity of the water body by CTD,,,CNDCST01,
+,conductivity:primary,S\/m,,,Conductivity,sea_water_electrical_conductivity,S/m,,SDN:P01::CNDCST01,Electrical conductivity of the water body by CTD,,,CNDCST01,
+,conductivity:primary,mS\/cm,,lambda x: x/10,"Conductivity ",sea_water_electrical_conductivity,S/m,,SDN:P01::CNDCST01,Electrical conductivity of the water body by CTD,,,CNDCST01,
+,conductivity:secondary,S\/m,,,Secondary Conductivity,sea_water_electrical_conductivity,S/m,,SDN:P01::CNDCST02,Electrical conductivity of the water body by CTD (sensor 2),,,CNDCST02,
+,conductivity:upcast,S\/m,,,Upcast Conductivity,sea_water_electrical_conductivity,S/m,,SDN:P01::CNDCST01,Electrical conductivity of the water body by CTD,,,CNDCST01,
+,conductivity_gsw,S\/m,,,Conductivity,sea_water_conductivity,S/m,,SDN:P01::CNDCST01,Electrical conductivity of the water body by CTD,,,bodc_code,
+,conductivity_ratio,None,,,Conductivity Ratio,,,,,,,,,
+,current:oxygen,mA,,,Current Oxygen,,mA,,,,,,,
+,degree_days:cooling,deg C \(ITS\-90\) \(ITS90\) da|deg c \(ITS\-90\) day|deg C \(ITS90\)day|deg C \(ITS-90\) day|deg C \(ITS-90\)day|deg C \(ITS9|deg C \(ITS90\) day,,,Degree Days Cooling,,deg C (ITS-90) day,,,,,,,
+,degree_days:cooling,deg C day,,,Cooling Degree Days,,deg C day,,,,,,,
+,degree_days:heating,deg C \(ITS\-90\) \(ITS90\) da|deg c \(ITS\-90\) day|deg C \(ITS-90\) day|deg C \(ITS-90\)day|deg C \(ITS9|deg C \(ITS90\) day,,,Degree Days Heating,,deg C (ITS-90) day,,,,,,,
+,degree_days:heating,deg C day,,,Heating Degree Days,,deg C day,,,,,,,
+,degree_days:heating,,,,Degree Days Heating,,,,,,,,,
+,density,kg\/m\^3,,,Density,sea_water_density,kg/m^3,,SDN:P01::DENSWB01,Density of the water body by gravimetry,,,DENSWB01,
+,density:air:inside,kg\/m\^3,,,Air Density Inside,,kg/m^3,,,,,,,
+,depth,m|metres|metre|meter|meters|Metres|Metre|Meter|Meters,,,Depth,depth,m,,SDN:P01::ADEPZZ01,Depth (spatial coordinate) relative to water surface in the water body,,,depth,
+,depth:corrected,metres,,,Depth Corrected,depth,m,,SDN:P01::ADEPZZ01,Depth (spatial coordinate) relative to water surface in the water body,,,depth,
+,depth:ctd,metres,,,Depth CTD,depth,m,,SDN:P01::ADEPZZ01,Depth (spatial coordinate) relative to water surface in the water body,,,depth,
+,depth:nominal,metres|meters,,,Depth Nominal,depth,m,,SDN:P01::ADEPZZ01,Depth (spatial coordinate) relative to water surface in the water body,,,depth,
+,dimethyl_sulphide,nmol\/L,,,Dimethyl Sulphide,mole_concentration_of_dimethyl_sulfide_in_sea_water,nmol/L,,SDN:P01::DMSXGCDZ,"Concentration of dimethyl sulphide {DMS CAS 75-18-3} per unit volume of the water body [dissolved plus reactive particulate unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01,
+,fluorescence,volts,,,Sea Water Fluorescence,,Volts,,,,,,,
+,fluorescence:calibrated,mg\/m\^3,,,Sea Water Calibrated Fluorescence,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPS01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer and calibration against sample data,,,CPHLPS01,
+,fluorescence:calibrated:seapoint,mg\/m\^3,,,Sea Water Calibrated Fluorescence Seapoint,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPS01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer and calibration against sample data,,,CPHLPS01,
+,fluorescence:calibrated:seatech,mg\/m\^3,,,Fluorescence Calibrated Seatech,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPS01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer and calibration against sample data,,,CPHLPS01,
+,fluorescence:calibrated:wetlabs,mg\/m\^3,,,,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPS01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer and calibration against sample data,,,CPHLPS01,
+,fluorescence:ctd,mg\/m\^3,,,Fluorescence CTD,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01,
+tob,fluorescence:range,Volts|volts,,,,,,,,,,,,
+,fluorescence:uru,mg\/m\^3,,,Sea Water Fluorescence,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01,
+,fluorescence:uru:ctd,mg\/m\^3,,,Fluorescence URU CTD,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01,
+,fluorescence:uru:rbr,mg\/m\^3,,,Fluorescence URU RBR,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01,
+,fluorescence:uru:seapoint,mg\/m\^3,,,Sea Water Fluorescence Seapoint,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01,
+,fluorescence:uru:seapoint:2,mg\/m\^3,,,Fluorescence URU Seapoint 2,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR02,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR02,
+,fluorescence:uru:seatech,mg\/m\^3,,,Fluorescence URU Seatech,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01,
+,fluorescence:uru:upcast,mg\/m\^3,,,Fluorescence URU Upcast,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01,
+,fluorescence:uru:wetlabs,mg\/m\^3,,,Sea Water Fluorescence WetLabs,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01,
+,fluorescence:uru:wetlabs,volts,,,Sea Water Fluorescence WetLabs,,Volts,,,,,,,
+,fluorescence:wetlabs,volts,,,Sea Water Fluorescence WetLabs,,Volts,,,,,,,
+,fluorescence:uru:wetlabs:eco-afl,mg\/m\^3,,,Fluorescence URU Wetlabs ECO-AFL,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01,
+,fluorescence:wetlabs:eco-afl,mg\/m\^3,,,Fluorescence Wetlabs ECO-AFL,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01,
+,fluorescence_cdom:uru:wetlabs,mg\/m\^3,,,Fluorescence CDOM URU Wetlabs,concentration_of_colored_dissolved_organic_matter_in_sea_water_expressed_as_equivalent_mass_fraction_of_quinine_sulfate_dihydrate,mg/m^3,,SDN:P01::CCOMD002,Concentration of coloured dissolved organic matter {CDOM Gelbstoff} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ WET Labs FDOM ECO fluorometer,,,CCOMD002,
+,fluorescence_cdom:uru:wetlabs,volts,,,Fluorescence CDOM URU Wetlabs,,volts,,SDN:P01::NVLTWL01,Raw signal (voltage) of instrument output by WET Labs optical backscatter meter,,,NVLTWL01,
+,fluorescensce:uru:turner,mg\/m\^3,,,Fluorescensce URU Turner,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01,
+,fluorometry-chlorophyll,,,,Fluorometry-Chlorophyll,mass_concentration_of_chlorophyll_a_in_sea_water,,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01,
+,heading,,,,platform_orientation,degrees,,,,,,,HEADCM01,
+,hplc:allo,mg\/m\^3,,,HPLC Allo,,mg/m^3,,SDN:P01::ALLOMHP1,"Concentration of alloxanthin {CAS 28380-31-6} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,ALLOMHP1,
+,hplc:b-car,mg\/m\^3,,,HPLC B-Car,,mg/m^3,,SDN:P01::BBCAMHP1,"Concentration of beta,beta-carotene {beta-carotene CAS 7235-40-7} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,BBCAMHP1,
+,hplc:but-fuco,mg\/m\^3,,,HPLC But-fuco,,mg/m^3,,SDN:P01::BUTAMHP1,"Concentration of 19'-butanoyloxyfucoxanthin per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,BUTAMHP1,
+,hplc:c2mgdg,mg\/m\^3,,,HPLC C2mgdg,,mg/m^3,,,,,,,
+,hplc:chl-a,mg\/m\^3,,,HPLC Chl-a,,mg/m^3,,SDN:P01::CPHLMHP1,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,CPHLMHP1,
+,hplc:chl-b,mg\/m\^3,,,HPLC Chl-b,,mg/m^3,,SDN:P01::CHLBMHP1,"Concentration of chlorophyll-b {chl-b CAS 519-62-0} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,CHLBMHP1,
+,hplc:chl-c1,mg\/m\^3,,,HPLC Chl-c1,,mg/m^3,,,,,,,
+,hplc:chl-c2,mg\/m\^3,,,HPLC Chl-c2,,mg/m^3,,SDN:P01::COCHWA07,"Concentration of chlorophyll-c2 {chl-c2} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,COCHWA07,
+,hplc:chl-c3,mg\/m\^3,,,HPLC Chl-c3,,mg/m^3,,SDN:P01::CLC3MHP1,"Concentration of chlorophyll-c3 {chl-c3} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,CLC3MHP1,
+,hplc:chlide-a,mg\/m\^3,,,HPLC Chlide-a,,mg/m^3,,SDN:P01::CIDAMHP1,"Concentration of chlorophyllide-a {CAS 14897-06-4} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,CIDAMHP1,
+,hplc:diadino,mg\/m\^3,,,HPLC Diadino,,mg/m^3,,SDN:P01::DIADMHP1,"Concentration of diadinoxanthin {CAS 18457-54-0} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,DIADMHP1,
+,hplc:diato,mg\/m\^3,,,HPLC Diato,,mg/m^3,,SDN:P01::DIATMHP1,"Concentration of diatoxanthin {CAS 31063-73-7} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,DIATMHP1,
+,hplc:dvchl-a,mg\/m\^3,,,HPLC DVChl-a,,mg/m^3,,SDN:P01::DVCAMHP1,"Concentration of divinyl chlorophyll-a {DVchl-a} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,DVCAMHP1,
+,hplc:fuco,mg\/m\^3,,,HPLC Fuco,,mg/m^3,,SDN:P01::FUCXMHP1,"Concentration of fucoxanthin {CAS 3351-86-8} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,FUCXMHP1,
+,hplc:hex-fuco,mg\/m\^3,,,HPLC Hex-fuco,,mg/m^3,,SDN:P01::HEXAMHP1,"Concentration of 19'-hexanoyloxyfucoxanthin {CAS 60147-85-5} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,HEXAMHP1,
+,hplc:lut,mg\/m\^3,,,HPLC Lut,,mg/m^3,,SDN:P01::LUTNMHP1,"Concentration of lutein {CAS 127-40-2} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,LUTNMHP1,
+,hplc:me-chlide,mg\/m\^3,,,HPLC Me-chlide,,mg/m^3,,,,,,,
+,hplc:mgdvp,mg\/m\^3,,,HPLC MgDVP,,mg/m^3,,,,,,,
+,hplc:neo,mg\/m\^3,,,HPLC Neo,,mg/m^3,,SDN:P01::NEOXMHP1,"Concentration of neoxanthin {CAS 30743-41-0} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,NEOXMHP1,
+,hplc:peri,mg\/m\^3,,,HPLC Peri,,mg/m^3,,SDN:P01::PERIMHP1,"Concentration of peridinin {CAS 33281-81-1} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,PERIMHP1,
+,hplc:phe,mg\/m\^3,,,HPLC Phe,,mg/m^3,,SDN:P01::COPHWA09,"Concentration of phaeophytin-a {pheophytin-a CAS 603-17-8} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,COPHWA09,
+,hplc:phe-a,mg\/m\^3,,,HPLC Phe-a,,mg/m^3,,SDN:P01::COPHWA09,"Concentration of phaeophytin-a {pheophytin-a CAS 603-17-8} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,COPHWA09,
+,hplc:pheide-a,mg\/m\^3,,,HPLC Pheide-a,,mg/m^3,,,,,,,
+,hplc:pras,mg\/m\^3,,,HPLC Pras,,mg/m^3,,SDN:P01::COPRWA11,"Concentration of prasinoxanthin {CAS 94705-97-2} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,COPRWA11,
+,hplc:tchl-a,mg\/m\^3,,,HPLC TChl-a,,mg/m^3,,,,,,,
+,hplc:viola,mg\/m\^3,,,HPLC Viola,,mg/m^3,,SDN:P01::VILXMHP1,"Concentration of violaxanthin {CAS 126-29-4} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,VILXMHP1,
+,hplc:zea,mg\/m\^3,,,HPLC Zea,,mg/m^3,,SDN:P01::ZEAXMHP1,"Concentration of zeaxanthin {CAS 144-68-3} per unit volume of the water body [particulate >GF/F phase] by filtration, methanol extraction and high performance liquid chromatography (HPLC)",,,ZEAXMHP1,
+,humidity:relative,%,,,Humidity Relative,,%,,,,,,,
+,humidity:relative:inside,%,,,Humidity Relative Inside,,%,,,,,,,
+,hydrogen-sulphide,microg-at\/l,,,Hydrogen-sulphide,,umol/L,,SDN:P01::H2SXZZXX,Concentration of hydrogen sulphide {H2S CAS 7783-06-4} per unit volume of the water body [dissolved plus reactive particulate phase],,,H2SXZZXX,
+,hydrogen_sulfide,umol\/L,,,Hydrogen Sulfide,mole_concentration_of_hydrogen_sulfide_in_sea_water,umol/L,,SDN:P01::H2SXZZXX,Concentration of hydrogen sulphide {H2S CAS 7783-06-4} per unit volume of the water body [dissolved plus reactive particulate phase],,,H2SXZZXX,
+,ins:location,,,,INS LOCATION,,,,,,,,,
+,instr_depth,,,,Instrument Depth,instrument_depth,,,,,,,,
+,iodine129,10exp7 at\/L,,,Iodine129,,10exp7 at/L,,,,,,,
+,iodine129uncert,10exp7 at\/L,,,Iodine129uncert,,10exp7 at/L,,,,,,,
+,iodine:isotope:129,10exp7 at\/L,,,Iodine Isotope 129,,10exp7 at/L,,,,,,,
+,iodine:isotope:129:uncertainty,10exp7 at\/L,,,Iodine Isotope 129 Uncertainty,,10exp7 at/L,,,,,,,
+,iron:filtered:buffered:0.03,nmol\/L,,,Iron Filtered Buffered 0.03,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX ?,,,,FEXXCLDX ?,
+,iron:filtered:buffered:0.1,nmol\/L,,,Iron Filtered Buffered 0.1,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX ?,,,,FEXXCLDX ?,
+,iron:filtered:buffered:0.22,nmol\/L,,,Iron Filtered Buffered 0.22,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX ?,,,,FEXXCLDX ?,
+,iron:filtered:buffered:0.45,nmol\/L,,,Iron Filtered Buffered 0.45,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX ?,,,,FEXXCLDX ?,
+,iron:filtered:buffered:200kdalton,nmol\/L,,,Iron Filtered Buffered 200kDalton,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX ?,,,,FEXXCLDX ?,
+,iron:filtered:strongacid:0.22,nmol\/L,,,Iron Filtered StrongAcid 0.22,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX ?,,,,FEXXCLDX ?,
+,iron:filtered:strongacid:geo:0.22,nmol\/L,,,Iron Filtered StrongAcid Geo 0.22,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX ?,,,,FEXXCLDX ?,
+,iron:filtered:strongacid:mv:0.22,nmol\/L,,,Iron Filtered StrongAcid MV 0.22,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX ?,,,,FEXXCLDX ?,
+,iron:unfiltered:buffered,nmol\/L,,,Iron Unfiltered Buffered,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX,Concentration of total iron {total_Fe CAS 7439-89-6} per unit volume of the water body [dissolved plus reactive particulate phase] by acidification and flow-injection chemiluminescence,,,FEXXCLDX,
+,iron:unfiltered:geo:strongacid,nmol\/L,,,Iron Unfiltered Geo StrongAcid,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX,Concentration of total iron {total_Fe CAS 7439-89-6} per unit volume of the water body [dissolved plus reactive particulate phase] by acidification and flow-injection chemiluminescence,,,FEXXCLDX,
+,iron:unfiltered:strongacid,nmol\/L,,,Iron Unfiltered StrongAcid,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX,Concentration of total iron {total_Fe CAS 7439-89-6} per unit volume of the water body [dissolved plus reactive particulate phase] by acidification and flow-injection chemiluminescence,,,FEXXCLDX,
+,iron:unfiltered:strongacid:mv,nmol\/L,,,Iron Unfiltered StrongAcid MV,mole_concentration_of_dissolved_iron_in_sea_water,nmol/L,,SDN:P01::FEXXCLDX,Concentration of total iron {total_Fe CAS 7439-89-6} per unit volume of the water body [dissolved plus reactive particulate phase] by acidification and flow-injection chemiluminescence,,,FEXXCLDX,
+ane,iss_reception,None,,,ISS Reception,,,,,,,,,
+,kraft-mill_effluent,ppm,,,Kraft-Mill Effluent,,ppm,,,,,,,
+,lat,degrees,,,Latitude,latitude,degrees_north,,SDN:P01::ALATZZ01,Latitude north,,,latitude,
+,latitude,degrees,,,Latitude,latitude,degrees_north,,SDN:P01::ALATZZ01,Latitude north,,,latitude,
+,lon,degrees,,,Longitude,longitude,degrees_east,,SDN:P01::ALONZZ01,Longitude east,,,longitude,
+,longitude,degrees,,,Longitude,longitude,degrees_east,,SDN:P01::ALONZZ01,Longitude east,,,longitude,
+,methane,nmol\/L,,,Methane,,nmol/L,,SDN:P01::CH4CGCXX,Concentration of methane {CH4 CAS 74-82-8} per unit volume of the water body [dissolved plus reactive particulate phase] by gas chromatography,,,CH4CGCXX,
+,methylene_chloride,pmol\/L,,,Methylene Chloride,,pmol/L,,,,,,,
+,nanophytoplankton,\/mL,,,Nanophytoplankton,,/mL,,SDN:P01::PU00A01B,Abundance of nanophytoplankton per unit volume of the water body by flow cytometry,,,PU00A01B,
+,nitrate,umol\/L|microg-at/l,,,Nitrate,mole_concentration_of_nitrate_in_sea_water,umol/L,,SDN:P01::NTRAZZXX,Concentration of nitrate {NO3- CAS 14797-55-8} per unit volume of the water body [unknown phase],,,NTRAZZXX,
+,nitrate_plus_nitrite,umol\/l|umol\/L|ug-at\/L,,,,mole_concentration_of_nitrate_and_nitrite_in_sea_water,umol/L,,SDN:P01::NTRZAAZX,Concentration of nitrate+nitrite {NO3+NO2} per unit volume of the water body [unknown phase] by colorimetric autoanalysis,,,NTRZAAZX,
+,nitrate_plus_nitrite2,umol\/L,,,Nitrate plus Nitrite2,mole_concentration_of_nitrate_and_nitrite_in_sea_water,umol/L,,SDN:P01::NTRZAAZX,Concentration of nitrate+nitrite {NO3+NO2} per unit volume of the water body [unknown phase] by colorimetric autoanalysis,,,NTRZAAZ2,
+,nitrate_plus_nitrite:isus,umol\/L,,,Nitrate plus nitrite ISUS,mole_concentration_of_nitrate_and_nitrite_in_sea_water,umol/L,,SDN:P01::NTRZAAZX,Concentration of nitrate+nitrite {NO3+NO2} per unit volume of the water body [unknown phase] by colorimetric autoanalysis,,,NTRZAAZX,
+,nitrate_plus_nitrite:isus,volts|Volts,,,Nitrate plus nitrite ISUS,,volts,,,,,,,
+,nitrate_plus_nitrite:isus:voltage,Volts,,,Nitrate plus nitrite ISUS Voltage,,Volts,,,,,,,
+,nitrite,umol\/L|mmol\/m|microg-at\/l,,,Nitrite,mole_concentration_of_nitrite_in_sea_water,umol/L,,SDN:P01::NTRIZZXX,Concentration of nitrite {NO2- CAS 14797-65-0} per unit volume of the water body [unknown phase],,,NTRIZZXX,
+,nitrogen:dissolved:organic,umol\/L,,,Nitrogen Dissolved Organic,mole_concentration_of_dissolved_organic_nitrogen_in_sea_water,umol/L,,SDN:P01::MDMAP009,Concentration of organic nitrogen {organic_N} {DON} per unit volume of the water body [dissolved plus reactive particulate unknown phase] by filtration and elemental analysis,,,NTOTCNPZ,
+,nitrogen:particulate:organic,mg\/m\^3,,,Nitrogen Particulate Organic,,mg/m^3,,SDN:P01::NTOTZZZZ,Concentration of total nitrogen {total_N} {PON} per unit volume of the water body [particulate >unknown phase],,,NTOTZZZZ,
+,nitrogen:particulate:total,umol\/L,,,Nitrogen Particulate Total,,umol/L,,,,,,,
+,nitrogen:particulate:total,umol\/kg,,,Nitrogen Particulate Total,,umol/kg,,,,,,,
+,nitrogen:total,uM,,,Nitrogen Total,,uM,,SDN:P01::NTOTZZXX,Concentration of total nitrogen {total_N} per unit volume of the water body [dissolved plus reactive particulate phase],,,NTOTZZXX,
+,nitrogen:total:dissolved,uM,,,Nitrogen Total Dissolved,mole_concentration_of_dissolved_nitrogen_in_sea_water,uM,,,,,,,
+,ntu,,,,Turbidity,sea_water_turbidity,NTU,,SDN:P01::TURBXXXX,Turbidity of water in the water body,,,TURBXXXX,
+,number_of_bin_records,None,,,,,,,,,,,,
+,oxygen,mg\/l,,lambda x: x*22.319/31.998,Oxygen,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01,
+,oxygen,ml\/l|mL\/L,,,Oxygen concentration,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01,
+,oxygen,umol\/L,,lambda x: x*0.022391,Oxygen concentration,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01,
+,oxygen,umol\/kg,,,Oxygen concentration,moles_of_oxygen_per_unit_mass_in_sea_water,umol/kg,,,,,,,
+,oxygen:dissolved,L\/L,,,,volume_fraction_of_oxygen_in_sea_water,L/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01,
+,oxygen:dissolved,mL\/L,,,Dissolved Oxygen,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01,
+che,oxygen:dissolved,mL\/L,,,Dissolved Oxygen,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYWITX,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by Winkler titration,,,DOXYWITX,
+,oxygen:dissolved:ysi,mL\/L,,,Dissolved Oxygen,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01,
+,oxygen:dissolved,mg\/L,,,Dissolved Oxygen,mass_concentration_of_oxygen_in_sea_water,mg/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01,
+,oxygen:dissolved,umol\/L,,lambda x: x*0.022391,Dissolved Oxygen,volume_fraction_of_oxygen_in_sea_water,,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensorSDN:P06::UMLL,Millilitres per litre,DOXYZZ01,
+,oxygen:dissolved,umol\/kg,,,Dissolved Oxygen,moles_of_oxygen_per_unit_mass_in_sea_water,umol/kg,,SDN:P01::DOXMZZXX,Concentration of oxygen {O2 CAS 7782-44-7} per unit mass of the water body [dissolved plus reactive particulate phase],SDN:P06::KGUM,Micromoles per kilogram,DOXMZZ01,
+che,oxygen:dissolved,umol\/kg,,,Dissolved Oxygen,moles_of_oxygen_per_unit_mass_in_sea_water,umol/kg,,SDN:P01::DOXMWITX,Concentration of oxygen {O2 CAS 7782-44-7} per unit mass of the water body [dissolved plus reactive particulate phase] by Winkler titration,SDN:P06::KGUM,Micromoles per kilogram,DOXMWITX,NERC unavailable code should be suggested
+,oxygen:dissolved2,mL\/L,,,Dissolved Oxygen 2,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ02,,,,DOXYZZ02,
+,oxygen:dissolved:bottle:mass [ml/l],umol\/kg,,,Dissolved Oxygen Bottle Mass,moles_of_oxygen_per_unit_mass_in_sea_water,umol/kg,,,,,,,
+,oxygen:dissolved:bottle:volume [ml/l],mL\/L,,,Dissolved Oxygen Bottle Volume,,mL/L,,,,,,,
+,oxygen:dissolved:ctd,mL\/L,,,,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01,
+,oxygen:dissolved:ctd,umol\/kg,,,,moles_of_oxygen_per_unit_mass_in_sea_water,umol/kg,,SDN:P01::DOXMZZXX,Concentration of oxygen {O2 CAS 7782-44-7} per unit mass of the water body [dissolved plus reactive particulate phase],SDN:P06::KGUM,Micromoles per kilogram,DOXMZZ01,
+,oxygen:dissolved:g+g,mL\/L,,,Dissolved Oxygen G+G,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01,
+,oxygen:dissolved:mass:ctd,umol\/kg,,,Dissolved Oxygen Mass CTD,moles_of_oxygen_per_unit_mass_in_sea_water,umol/kg,,SDN:P01::DOXMZZXX,Concentration of oxygen {O2 CAS 7782-44-7} per unit mass of the water body [dissolved plus reactive particulate phase],SDN:P06::KGUM,Micromoles per kilogram,DOXMZZ01,
+,oxygen:dissolved:rinko,Volts,,,,,Volts,,,,,,,
+,oxygen:dissolved:rinko,mL\/L,,,,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01,
+,oxygen:dissolved:saturation,%,,,Dissolved Oxygen Saturation,fractional_saturation_of_oxygen_in_sea_water,%,,SDN:P01::OXYSOP01,Saturation of oxygen {O2 CAS 7782-44-7} in the water body [dissolved plus reactive particulate phase] by in-situ oxygen optode and computation from concentration,,,OXYSOP01,
+,oxygen:dissolved:saturation:rbr,%,,,Dissolved Oxygen Saturation RBR,fractional_saturation_of_oxygen_in_sea_water,%,,SDN:P01::OXYSOP01,Saturation of oxygen {O2 CAS 7782-44-7} in the water body [dissolved plus reactive particulate phase] by in-situ oxygen optode and computation from concentration,,,OXYSOP01,
+,oxygen:dissolved:saturation:rinko,%,,,Dissolved Oxygen Saturation Rinko,fractional_saturation_of_oxygen_in_sea_water,%,,SDN:P01::OXYSOP01,Saturation of oxygen {O2 CAS 7782-44-7} in the water body [dissolved plus reactive particulate phase] by in-situ oxygen optode and computation from concentration,,,OXYSOP01,
+,oxygen:dissolved:saturation:upcast,mL\/L,,,Dissolved Oxygen Saturation Upcast,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01,
+,oxygen:dissolved:sbe,mL\/L,,,Dissolved Oxygen SBE,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01,
+,oxygen:dissolved:sbe,umol\/kg,,,Dissolved Oxygen SBE,moles_of_oxygen_per_unit_mass_in_sea_water,umol/kg,,SDN:P01::DOXMZZXX,Concentration of oxygen {O2 CAS 7782-44-7} per unit mass of the water body [dissolved plus reactive particulate phase],SDN:P06::KGUM,Micromoles per kilogram,DOXMZZ01,
+,oxygen:dissolved:sbe,umol\/l,,,Dissolved Oxygen SBE,mole_concentration_of_dissolved_molecular_oxygen_in_sea_water,umol/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01,
+,oxygen:dissolved:volume:ctd,mL\/L,,,Dissolved Oxygen Volume CTD,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01,
+,oxygen:dissolved:volume:sbe,mL\/L,,,Dissolved Oxygen Volume SBE,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLL,Millilitres per litre,DOXYZZ01,
+,oxygen:dissolved:weiss,mL\/L,,,Dissolved Oxygen Weiss,volume_fraction_of_oxygen_in_sea_water,mL/L,,SDN:P01::DOXYZZ01,Concentration of oxygen {O2 CAS 7782-44-7} per unit volume of the water body [dissolved plus reactive particulate phase] by in-situ sensor,SDN:P06::UMLLSDN:P06::UMLL,Millilitres per litre,DOXYZZ01,
+,oxygen:isotope:18,\/mille,,,Oxygen Isotope 18,,/mille,,SDN:P01::D18OMXWT,Enrichment of oxygen-18 in water molecules {18O in H2O CAS 14797-71-8} {delta(18)O} in the water body by mass spectrometry,,,D18OMXWT,
+,oxygen_temperature:rinko,Volts,,,Oxygen Temperature Rinko,temperature_of_sensor_for_oxygen_in_sea_water,Volts,,SDN:P01::OXYTAAOP,Temperature of oxygen determination by optode,,,OXYTAAOP,
+,par,uE\/m\^2\/sec|umol/m^2/sec,,,Photoactive Radiation,,uE/m^2/sec,,SDN:P01:: IRRDUV01,Downwelling vector irradiance as photons of electromagnetic radiation (PAR wavelengths) in the water body by cosine-collector radiometer,SDN:P06::UMES,MicroEinsteins per square metre per second,IRRDUV01,
+,par1,uE\/m\^2\/sec,,,PAR1,,uE/m^2/sec,,SDN:P01:: IRRDUV01,Downwelling vector irradiance as photons of electromagnetic radiation (PAR wavelengths) in the water body by cosine-collector radiometer,SDN:P06::UMES,MicroEinsteins per square metre per second,IRRDUV01,
+,par:1,uE\/m\^2\/sec,,,PAR 1,,uE/m^2/sec,,SDN:P01:: IRRDUV01,Downwelling vector irradiance as photons of electromagnetic radiation (PAR wavelengths) in the water body by cosine-collector radiometer,SDN:P06::UMES,MicroEinsteins per square metre per second,IRRDUV01,
+,par:ctd,uE\/m\^2\/sec,,,PAR CTD,,uE/m^2/sec,,SDN:P01:: IRRDUV01,Downwelling vector irradiance as photons of electromagnetic radiation (PAR wavelengths) in the water body by cosine-collector radiometer,SDN:P06::UMES,MicroEinsteins per square metre per second,IRRDUV01,
+,par:reference,uE\/m\^2\/sec,,,PAR Reference,,uE/m^2/sec,,SDN:P01::IRRDSV01,Downwelling vector irradiance as photons of electromagnetic radiation (PAR wavelengths) in the atmosphere by cosine-collector radiometer,SDN:P06::UMES,MicroEinsteins per square metre per second,IRRDSV01,
+,ph,None,,,,sea_water_ph_reported_on_total_scale,,,SDN:P01::PHXXPR01,pH (unspecified scale) of the water body by pH electrode,,,PHXXPR01,
+,ph:nbs,None,,,pH NBS,sea_water_ph_reported_on_total_scale,,,SDN:P01::PHXXPR01,pH (unspecified scale) of the water body by pH electrode,,,PHXXPR01,
+,ph:sbe,None,,,,sea_water_ph_reported_on_total_scale,,,SDN:P01::PHXXPR01,pH (unspecified scale) of the water body by pH electrode,,,PHXXPR01,
+,ph:sbe:nominal,None,,,pH SBE Nominal,sea_water_ph_reported_on_total_scale,,,SDN:P01::PHXXPR01,pH (unspecified scale) of the water body by pH electrode,,,PHXXPR01,
+,ph:sws,None,,,pH SWS,sea_water_ph_reported_on_total_scale,,,SDN:P01::PHXXPR01,pH (unspecified scale) of the water body by pH electrode,,,PHXXPR01,
+,phaeo-pigment:extracted,mg\/m\^3,,,Phaeo-Pigment Extracted,mass_concentration_of_phaeopigments_in_sea_water,mg/m^3,,SDN:P01::PHAEFLPZ,"Concentration of phaeopigments {pheopigments} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,PHAEFLPZ,
+,phaeo-pigment:extracted3,mg\/m\^3,,,Phaeo-Pigment Extracted3,mass_concentration_of_phaeopigments_in_sea_water,mg/m^3,,SDN:P01::PHAEFLPZ,"Concentration of phaeopigments {pheopigments} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,PHAEFLPZ,
+,phaeo-pigment:extracted:0.3um,mg\/m\^3,,,Phaeo-Pigment Extracted 0.3um,mass_concentration_of_phaeopigments_in_sea_water,mg/m^3,,,,,,,
+,phaeo-pigment:extracted:bottle,mg\/m\^3,,,Phaeo-Pigment Extracted Bottle,,mg/m^3,,,,,,,
+,phosphate,microg-at\/l|ug-at\/L|umol\/L|mmol\/m,,,Phosphate,mass_concentration_of_phosphate_in_sea_water,umol/L,,SDN:P01::PHOSAAZX,Concentration of phosphate {PO43- CAS 14265-44-2} per unit volume of the water body [unknown phase] by colorimetric autoanalysis,,,PHOSAAZX,
+,phosphate(inorg),mmol\/m,,,Phosphate(inorg),mole_concentration_of_phosphate_in_sea_water,umol/L,,,,,,,
+,phosphate2,umol\/L,,,Phosphate2,mole_concentration_of_phosphate_in_sea_water,umol/L,,SDN:P01::PHOSAAZX,Concentration of phosphate {PO43- CAS 14265-44-2} per unit volume of the water body [unknown phase] by colorimetric autoanalysis,,,PHOSAAZ2,
+,phytoplankton:volume,mm\^3\/m\^3,,,Phytoplankton Volume,,mm^3/m^3,,,,,,,
+,picophytoplankton,\/mL,,,Picophytoplankton,,/mL,,SDN:P01::PU00A02Z,Abundance of picophytoplankton per unit volume of the water body by flow cytometry,,,PU00A02Z,
+,pitch,,,,platform_pitch,,degrees,,,,,,PTCHEI01,
+,precipitation,mm,,,Precipitation,thickness_of_rainfall_amount,mm,,,,,,,
+,precipitation:rate,mm\/hr,,,Precipitation Rate,rainfall_rate,mm/hr,,,,,,,
+,pressure,count|counts,,,Pressure,,counts,,,,,,PRESPR01,
+,pressure,dbar|dbars|decibar|decibars|DBars|DBAR,,,Pressure,sea_water_pressure,decibar,,SDN:P01::PRESPR01,Pressure (spatial coordinate) exerted by the water body by profiling pressure sensor and correction to read zero at sea level,,,PRESPR01,
+ctd,pressure,dbar|dbars|decibar|decibars|DBars|DBAR,,"lambda x: -1*gsw.z_from_p(x,ds.attrs['latitude'])",Depth,depth,m,,SDN:P01::ADEPZZ01,Depth (spatial coordinate) relative to water surface in the water body,,,depth,
+ctd,pressure,dbar|dbars|decibar|decibars|DBars|DBAR,,,Pressure,sea_water_pressure,decibar,,SDN:P01::PRESPR01,Pressure (spatial coordinate) exerted by the water body by profiling pressure sensor and correction to read zero at sea level,,,PRESPR01,
+ane,pressure,kpascal|kilopascal|Kpascal,,,Pressure,air_pressure,kilopascal,,,,,,PRESPR01,
+,pressure:atmospheric:sealevel,mbar,,,Pressure Atmospheric SeaLevel,air_pressure_at_mean_sea_level,mbar,,,,,,,
+,pressure:ctd,decibar,,,Pressure CTD,sea_water_pressure,decibar,,SDN:P01::PRESPR01,Pressure (spatial coordinate) exerted by the water body by profiling pressure sensor and correction to read zero at sea level,,,PRESPR01,
+,pressure:reversing,decibar,,,Pressure Reversing,sea_water_pressure,decibar,,SDN:P01::PRESPR01,Pressure (spatial coordinate) exerted by the water body by profiling pressure sensor and correction to read zero at sea level,,,PRESPR01,
+,production:primary,mgC\/m\^3\/day,,,Production Primary,net_primary_production_of_biomass_expressed_as_carbon_per_unit_volume_in_sea_water,mgC/m^3/day,,,,,,,
+,production:primary,mgC\/m\^3\/hour,,,Production Primary,net_primary_production_of_biomass_expressed_as_carbon_per_unit_volume_in_sea_water,mgC/m^3/hour,,,,,,,
+,profile,None,,,,,,,,,,,,
+,propane,nmol\/L,,,Propane,,nmol/L,,SDN:P01::AX03GCTX,"Concentration of propane {CAS 74-98-6} per unit volume of the water body [dissolved plus reactive particulate phase] by purging, cryogenic trapping and gas chromatography",,,AX03GCTX,
+,radiation:solar,W\/m\^2,,,Solar Radiation,,W/m^2,,,,,,,
+,radiation:solar:high,W\/m\^2,,,High Solar Radiation,,W/m^2,,,,,,,
+,record #,None,,,Record #,,,,,,,,record_number,
+,record_number,None|/a,,,,,,,,,,,record_number,
+,recordnumber,None,,,RecordNumber,,,,,,,,record_number,
+,reference,None,,,,,,,,,,,,
+,roll,,,,platform_roll,degrees,,,,,,,ROLLEI01,
+,run:wind,km,,,Run Wind,,km,,,,,,,
+,run_wind,km,,,Run Wind,,km,,,,,,,
+,salinity,PSS\-78|PPS78,,,Sea Water Practical Salinity,sea_water_practical_salinity,PSS-78,,SDN:P01::PSALST01,Practical salinity of the water body by CTD and computation using UNESCO 1983 algorithm,,,PSALST01,
+,salinity,ppt|PPT,,,Sea Water Practical Salinity,sea_water_salinity,PPT,,SDN:P01::SSALST01,Salinity of the water body by CTD,,,SSALST01,
+,salinity,ppt|PPT,,lambda x: gsw.SP_from_SK(x),Sea Water Practical Salinity,sea_water_practical_salinity,PSS-78,,SDN:P01::PSALST01,Practical salinity of the water body by CTD and computation using UNESCO 1983 algorithm,,,PSALST01,
+,salinity: practical,PSS-78|PSU,,,Sea Water Practical Salinity,sea_water_practical_salinity,PSS-78,,SDN:P01::PSALST01,Practical salinity of the water body by CTD and computation using UNESCO 1983 algorithm,,,PSALBST01,
+,salinity: pre-1978,PPT,,,Salinity Pre-1978,sea_water_salinity,PPT,,SDN:P01::SSALST01,Salinity of the water body by CTD,,,SSALST01,
+,salinity: pre-1978,PPT,,lambda x: gsw.SP_from_SK(x),Sea Water Practical Salinity,sea_water_practical_salinity,PSS-78,,SDN:P01::PSALST01,Practical salinity of the water body by CTD and computation using UNESCO 1983 algorithm,,,PSALST01,
+,salinity:bottle,PPT|ppt,,,Salinity Bottle,sea_water_salinity,PPT,,SDN:P01::SSALBSTX,Salinity of the water body by bench salinometer,,,SSALBSTX,
+,salinity:bottle,PPT,,lambda x: gsw.SP_from_SK(x),Salinity Bottle,sea_water_practical_salinity,PSS-78,,SDN:P01::PSALBSTX,Practical salinity of the water body by bench salinometer and computation using UNESCO 1983 algorithm,,,PSALBSTX,
+,salinity:bottle,PSS-78,,,Salinity Bottle,sea_water_practical_salinity,PSS-78,,SDN:P01::PSALBSTX,Practical salinity of the water body by bench salinometer and computation using UNESCO 1983 algorithm,,,PSALBSTX,
+,salinity:bottle,,,,Salinity Bottle,sea_water_salinity,,,SDN:P01::SSALBSTX,Salinity of the water body by bench salinometer,,,SSALBSTX_no_unit,
+,salinity:ctd,PSS-78,,,Salinity CTD,sea_water_practical_salinity,PSS-78,,SDN:P01::PSALST01,Practical salinity of the water body by CTD and computation using UNESCO 1983 algorithm,,,PSALST01,
+,salinity:cur,PSS-78,,,Sea Water Practical Salinity,sea_water_practical_salinity,PSS-78,,,,,,PSLTZZ01,
+,salinity:cur,ppt,,,Sea Water Practical Salinity,sea_water_practical_salinity,PPT,,,,,,ODSDM021,
+,salinity:t0:c0,none|PSS-78,,,Salinity T0 C0,sea_water_practical_salinity,PSS-78,,SDN:P01::PSALST01,Practical salinity of the water body by CTD and computation using UNESCO 1983 algorithm,,,PSALST01,
+,salinity:t1:c1,PSS-78,,,Salinity T1 C1,sea_water_practical_salinity,PSS-78,,SDN:P01::PSALST02,Practical salinity of the water body by CTD (second sensor) and computation using UNESCO 1983 algorithm,,,PSALST02,
+,salinity:upcast,PSS-78,,,Salinity Upcast,sea_water_practical_salinity,PSS-78,,SDN:P01::PSALST01,Practical salinity of the water body by CTD and computation using UNESCO 1983 algorithm,,,PSALST01,
+,sample_method,None,,,Sample Method,,,,,,,,,
+,sample_number,None,,,Sample Number,,,,,,,,,
+,sample_order,None,,,Sample Order,,,,,,,,,
+,sampler_id_number,None,,,Sampler ID Number,,,,,,,,,
+,sampler_type,None,,,Sampler Type,,,,,,,,,
+,scan_number,None,,,Record Number,,,,,,,,record_number,
+,sigma-t,kg\/m\^3,,,Sigma-theta,sea_water_sigma_t,kg/m^3,,SDN:P01::SIGTPR01,Sigma-theta of the water body by CTD and computation from salinity and potential temperature using UNESCO algorithm,,,SIGTEQST,
+,sigma-t:ctd,Kg\/m\^3,,,Sigma-t CTD,,Kg/m^3,,,,,,,
+ubc,sigma-t,None,,,Sigma-t,sea_water_sigma_t,kg/m^3,,SDN:P01::SIGTPR01,Sigma-theta of the water body by CTD and computation from salinity and potential temperature using UNESCO algorithm,,,SIGTEQST,
+,silicate,microg-at/l|ug-at\/L|umol\/L|umol\/l|umol\/L|mmol\/m,,,Silicate,mole_concentration_of_silicate_in_sea_water,umol/L,,SDN:P01::SLCAZZXX,Concentration of silicate {SiO44- CAS 17181-37-2} per unit volume of the water body [unknown phase],,,SLCAZZXX,
+,silicate2,umol\/L,,,Silicate2,mole_concentration_of_silicate_in_sea_water,umol/L,,SDN:P01::SLCAZZXX,Concentration of silicate {SiO44- CAS 17181-37-2} per unit volume of the water body [unknown phase],,,SLCAZZX2,
+,silicate:acidified,umol\/L,,,Silicate Acidified,mole_concentration_of_silicate_in_sea_water,umol/L,,SDN:P01::SLCAZZXX,Concentration of silicate {SiO44- CAS 17181-37-2} per unit volume of the water body [unknown phase],,,SLCAZZXX,
+,silicate:corrected,umol\/L,,,Silicate Corrected,mole_concentration_of_silicate_in_sea_water,umol/L,,SDN:P01::SLCAZZXX,Concentration of silicate {SiO44- CAS 17181-37-2} per unit volume of the water body [unknown phase],,,SLCAZZXX,
+,sound velocity,m\/s,,,Sound Velocity,speed_of_sound_in_sea_water,m/s,,SDN:P01::SVELCV01,Sound velocity in the water body by computation from temperature and salinity by unspecified algorithm,,,SVELCV01,
+,speed,cm\/s,,,sea_water_speed,cm/s,,,,,,,LCSAEL01,
+,speed,m\/s,,,,m/s,,,,,,,LCSAEL01,
+tob,speed:ship,knots,,,Platform Speed,platform_speed_wrt_ground,knots,,SDN:P01::APSAZZ01,Speed of measurement platform relative to ground surface {speed over ground},,,APSAZZ01,
+tob,direction:ship,degrees,,,Platform Speed Direction,platform_course,degrees,,SDN:P01::APDAZZ01,Direction of motion of measurement platform relative to ground surface {course made good},,,APDAZZ01,
+ane,speed:gust,m\/s,,,Speed Gust,,,,,,,,,
+ane,speed:gust:1,m\/s,,,Speed Gust 1,,m/s,,,,,,,
+ane,speed:gust:2,m\/s,,,Speed Gust 2,,m/s,,,,,,,
+,speed:sound,m/s,,,,speed_of_sound_in_sea_water,m/s,,SDN:P01::SVELXXXX,Sound velocity in the water body,,,SVELXXXX,
+,speed:sound,,,,speed_of_sound_in_sea_water,m/s,,,SDN:P01::SVELXXXX,Sound velocity in the water body,,,SVELXXXX,
+,speed:sound:1,,,,speed_of_sound_in_sea_water,m/s,,,SDN:P01::SVELXXXX,Sound velocity in the water body,,,SVELXXXX,
+,speed:sound:2,,,,speed_of_sound_in_sea_water,m/s,,,SDN:P01::SVELXXXX,Sound velocity in the water body,,,SVELXXX2,
+,speed:up,,,,upward_sea_water_velocity,cm/s,,,,,,,LRZASP01,
+ane,speed:wind,m\/s,,,Speed Wind,,m/s,,,,,,,
+ane,speed:wind:1,m\/s,,,Speed Wind 1,,m/s,,,,,,,
+ane,speed:wind:2,m\/s,,,Speed Wind 2,,m/s,,,,,,,
+ane,speed:wind:east,m\/s,,,Speed Wind East,,,,,,,,,
+ane,speed:wind:high,m\/s,,,Speed Wind High,,m/s,,,,,,,
+ane,speed:wind:north,m\/s,,,Speed Wind North,,,,,,,,,
+ane,speed:wind_high,m\/s,,,Speed Wind High,,m/s,,,,,,,
+,spm,mg\/L,,,SPM,mass_concentration_of_suspended_matter_in_sea_water,mg/L,,,,,,,
+,station,None,,,Station,,,,,,,,,
+,station_name,None,,,Station Name,,,,,,,,,
+,str_id,None,,,,,,,,,,,,
+,sulphate so4,mol\/m,,,Sulphate SO4,,mol/m,,SDN:P01::SO4XCLP1,Concentration of sulphate {SO4(2-) sulfate CAS 14808-79-8} per unit volume of the water body [dissolved plus reactive particulate
Date: Wed, 1 May 2024 11:15:35 -0400
Subject: [PATCH 20/30] fill rename column in ios vocabulary by ios_name if no
defined
---
ocean_data_parser/vocabularies/load.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/ocean_data_parser/vocabularies/load.py b/ocean_data_parser/vocabularies/load.py
index 353128dd..136d7fa9 100644
--- a/ocean_data_parser/vocabularies/load.py
+++ b/ocean_data_parser/vocabularies/load.py
@@ -43,11 +43,13 @@ def dfo_platforms() -> pd.DataFrame:
def dfo_ios_vocabulary() -> pd.DataFrame:
- return pd.read_csv(
+ df = pd.read_csv(
VOCABULARIES_DIRECTORY / "dfo_ios_vocabulary.csv",
na_values={"accepted_units": [""]},
keep_default_na=False,
).replace({"": np.nan})
+ df = df.fillna({"rename":df['ios_name']})
+ return df
def dfo_odf_vocabulary() -> pd.DataFrame:
From 31ca8a44ffd2365403d9c1735f351dada7d83e56 Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Wed, 1 May 2024 11:15:52 -0400
Subject: [PATCH 21/30] drop fillna in main parser
---
ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
index b4a3cb7a..674a9708 100644
--- a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
+++ b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
@@ -1121,7 +1121,6 @@ def _handle_duplicated_variabes(variables):
variables.explode("vocabularies")
.set_index("ios_name")["vocabularies"]
.apply(pd.Series)
- .fillna({"rename": variables["ios_name"]})
.sort_values(
["rename", "apply_func", "sdn_parameter_name"],
na_position="first",
From e797adfdb3dcfcb9be5babd9834bbe0e6be9d5ee Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Wed, 1 May 2024 11:28:45 -0400
Subject: [PATCH 22/30] add placeholder for chlorophyll variables
---
ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv b/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv
index 6f971654..1470cdd6 100644
--- a/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv
+++ b/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv
@@ -68,10 +68,10 @@ ios_file_extension,ios_name,accepted_units,accepted_instrument_type,apply_func,l
,chlorophyll:extracted,mg\/m\^3,,,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >GF/F phase] by filtration, acetone extraction and fluorometry",mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::CPHLFLPZ,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,CPHLFLPZ,
,chlorophyll:extracted2,mg\/m\^3,,,Chlorophyll Extracted2,mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::CPHLFLPZ,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,CPHLFLPZ2,
,chlorophyll:extracted3,mg\/m\^3,,,Chlorophyll Extracted3,mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::CPHLFLPZ,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,CPHLFLPZ3,
-,chlorophyll:extracted:0.3um,mg\/m\^3,,,Chlorophyll Extracted 0.3um,mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::CPHLFLPZ,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,CPHLFLPZ,
-,chlorophyll:extracted:<5.0um,mg\/m\^3,,,Chlorophyll Extracted <5.0um,mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::CPHLFLPZ,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,CPHLFLPZ,
-,chlorophyll:extracted:>0.7um,mg\/m\^3,,,Chlorophyll Extracted >0.7um,mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::CPHLFLPZ,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,CPHLFLPZ,
-,chlorophyll:extracted:>5.0um,mg\/m\^3,,,Chlorophyll Extracted >5.0um,mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::SCHLFLPA,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >5um phase] by filtration, acetone extraction and fluorometry",,,SCHLFLPA,
+,chlorophyll:extracted:0.3um,mg\/m\^3,,,Chlorophyll Extracted 0.3um,mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::CPHLFLPZ,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,CPHLFLPZ_0_3um,variable name do not match a real BODC term
+,chlorophyll:extracted:<5.0um,mg\/m\^3,,,Chlorophyll Extracted <5.0um,mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::CPHLFLPZ,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,CPHLFLPZ_l_5um,variable name do not match a real BODC term
+,chlorophyll:extracted:>0.7um,mg\/m\^3,,,Chlorophyll Extracted >0.7um,mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::CPHLFLPZ,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by filtration, acetone extraction and fluorometry",,,CPHLFLPZ_l_0_7um,variable name do not match a real BODC term
+,chlorophyll:extracted:>5.0um,mg\/m\^3,,,Chlorophyll Extracted >5.0um,mass_concentration_of_chlorophyll_in_sea_water,mg/m^3,,SDN:P01::SCHLFLPA,"Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >5um phase] by filtration, acetone extraction and fluorometry",,,SCHLFLPA_g_5um,variable name do not match a real BODC term
,chlorophyll_plus_phaeo-pigment:extracted,mg\/m\^3,,,Chlorophyll plus Phaeo-Pigment Extracted,,mg/m^3,,,,,,,
,conductance:specific,S\/m,,,Specific Conductance,,S/m,,,,,,,
,conductance:specific,mS\/cm,,lambda x: x/10,Specific Conductance,,S/m,,,,,,,
From 542b6ef82b19d604fadaaf6ffa650d3fd7a99cec Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Wed, 1 May 2024 11:28:57 -0400
Subject: [PATCH 23/30] ignore start times
---
ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
index 674a9708..1d0d5d97 100644
--- a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
+++ b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
@@ -1134,7 +1134,7 @@ def _handle_duplicated_variabes(variables):
for variable in ds.variables:
if variable == "index":
continue
- elif variable.lower() in ["date", "time"]:
+ elif variable.lower().startswith(("date", "time")):
ds_new[variable] = ds[variable]
continue
elif variable not in variables_vocabularies.index:
From 40a5b990587329e85003b393c0160ffa5dd7cdfc Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Wed, 1 May 2024 11:29:14 -0400
Subject: [PATCH 24/30] add a vocabulary to convert kpascal pressure to dbar
---
ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv | 1 +
1 file changed, 1 insertion(+)
diff --git a/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv b/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv
index 1470cdd6..576dae59 100644
--- a/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv
+++ b/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv
@@ -281,6 +281,7 @@ che,oxygen:dissolved,umol\/kg,,,Dissolved Oxygen,moles_of_oxygen_per_unit_mass_i
,precipitation,mm,,,Precipitation,thickness_of_rainfall_amount,mm,,,,,,,
,precipitation:rate,mm\/hr,,,Precipitation Rate,rainfall_rate,mm/hr,,,,,,,
,pressure,count|counts,,,Pressure,,counts,,,,,,PRESPR01,
+,pressure,Kpascal,,lambda x: 10*x,Pressure,sea_water_pressure,decibar,,SDN:P01::PRESPR01,Pressure (spatial coordinate) exerted by the water body by profiling pressure sensor and correction to read zero at sea level,,,PRESPR01,
,pressure,dbar|dbars|decibar|decibars|DBars|DBAR,,,Pressure,sea_water_pressure,decibar,,SDN:P01::PRESPR01,Pressure (spatial coordinate) exerted by the water body by profiling pressure sensor and correction to read zero at sea level,,,PRESPR01,
ctd,pressure,dbar|dbars|decibar|decibars|DBars|DBAR,,"lambda x: -1*gsw.z_from_p(x,ds.attrs['latitude'])",Depth,depth,m,,SDN:P01::ADEPZZ01,Depth (spatial coordinate) relative to water surface in the water body,,,depth,
ctd,pressure,dbar|dbars|decibar|decibars|DBars|DBAR,,,Pressure,sea_water_pressure,decibar,,SDN:P01::PRESPR01,Pressure (spatial coordinate) exerted by the water body by profiling pressure sensor and correction to read zero at sea level,,,PRESPR01,
From 3f8cdf8abf71b1c83ac59d19b3b37022a3e04497 Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Wed, 1 May 2024 12:21:54 -0400
Subject: [PATCH 25/30] lower missing format to info level
---
ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
index 1d0d5d97..0f93aa14 100644
--- a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
+++ b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
@@ -91,8 +91,8 @@ def _cast_ios_variable(ios_type, ios_format, ios_name):
return "int32"
elif re.search("time|date", ios_name, re.IGNORECASE):
return str
- logger.warning(
- "Unknown data type for variable %s [Type=%s, Format=%s]",
+ logger.info(
+ "Unknown data type for variable %s [Type=%s, Format=%s], default to 'float32'",
ios_name,
ios_type,
ios_format,
From 34700e7c87bcb737a3ee405008da4e0c9991dcbd Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Wed, 1 May 2024 12:22:12 -0400
Subject: [PATCH 26/30] add RAW section parser
---
ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
index 0f93aa14..18ee78fc 100644
--- a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
+++ b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
@@ -111,6 +111,7 @@ def _cast_ios_variable(ios_type, ios_format, ios_name):
"DEPLOYMENT",
"RECOVERY",
"CALIBRATION",
+ "RAW",
}
@@ -149,6 +150,7 @@ def __init__(self, filename):
self.vocabulary_attributes = None
self.history = None
self.geo_code = None
+ self.raw = None
# Load file
try:
@@ -185,6 +187,8 @@ def import_data(self):
self.recovery = self.get_section("RECOVERY")
if "CALIBRATION" in sections_available:
self.calibration = self.get_section("CALIBRATION")
+ if "RAW" in sections_available:
+ self.raw = self.get_section("RAW")
unparsed_sections = sections_available - IOS_SHELL_HEADER_SECTIONS
if unparsed_sections:
From 90cb05b41e223ab28aabe4077bc42b5c95a939ce Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Wed, 1 May 2024 12:22:28 -0400
Subject: [PATCH 27/30] add more default variable mappings
---
ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv b/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv
index 576dae59..680df403 100644
--- a/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv
+++ b/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv
@@ -125,7 +125,7 @@ ctd,conductivity,s\/m|S\/m,,,Conductivity,sea_water_electrical_conductivity,S/m,
drf,flag:at_sea,None,,,Flag at Sea,,,,,,,,,
tob,flow_rate,L/min,,,Flow rate through instrument,,L/min,,SDN:P01::INFLTF01,Flow rate through instrument,SDN:P06::ULPM,Litres per minute,INFLTF01,
tob,flow_rate,None,,,Flow rate through instrument,,L/min,,SDN:P01::INFLTF01,Flow rate through instrument,SDN:P06::ULPM,Litres per minute,INFLTF01,
-tob,flow_rate_fl,L/min,,,Flow rate through instrument,,L/min,,SDN:P01::INFLTF01,Flow rate through instrument,SDN:P06::ULPM,Litres per minute,INFLTF01,
+tob,flow_rate_fl,L/min,,,Flow rate through instrument,,L/min,,SDN:P01::INFLTF01,Flow rate through instrument,SDN:P06::ULPM,Litres per minute,INFLTF01_fl,variable name do not match a real BODC term
,fluorescence,mg\/m\^3|ug\/L,,,,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPR01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer,,,CPHLPR01,
,fluorescence,volts,,,Sea Water Fluorescence,,Volts,,,,,,,
,fluorescence:calibrated,mg\/m\^3,,,Sea Water Calibrated Fluorescence,mass_concentration_of_chlorophyll_a_in_sea_water,mg/m^3,,SDN:P01::CPHLPS01,Concentration of chlorophyll-a {chl-a CAS 479-61-8} per unit volume of the water body [particulate >unknown phase] by in-situ chlorophyll fluorometer and calibration against sample data,,,CPHLPS01,
@@ -324,6 +324,7 @@ ane,pressure,kpascal|kilopascal|Kpascal,,,Pressure,air_pressure,kilopascal,,,,,,
,sampler_id_number,None,,,Sampler ID Number,,,,,,,,,
,sampler_type,None,,,Sampler Type,,,,,,,,,
,scan_number,None,,,Record Number,,,,,,,,record_number,
+,sigma-t,n/a,,,Sigma-theta,sea_water_sigma_t,unknow,,SDN:P01::SIGTPR01,Sigma-theta of the water body by CTD and computation from salinity and potential temperature using UNESCO algorithm,,,SIGTEQST,
,sigma-t,kg\/m\^3,,,Sigma-theta,sea_water_sigma_t,kg/m^3,,SDN:P01::SIGTPR01,Sigma-theta of the water body by CTD and computation from salinity and potential temperature using UNESCO algorithm,,,SIGTEQST,
,sigma-t:ctd,Kg\/m\^3,,,Sigma-t CTD,,Kg/m^3,,,,,,,
ubc,sigma-t,None,,,Sigma-t,sea_water_sigma_t,kg/m^3,,SDN:P01::SIGTPR01,Sigma-theta of the water body by CTD and computation from salinity and potential temperature using UNESCO algorithm,,,SIGTEQST,
From 226a851fc5123ab29a3e96d5b7c2c6709497cecc Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Wed, 1 May 2024 12:22:38 -0400
Subject: [PATCH 28/30] add a CTD test variable
---
.../ios/shell/cruise/CTD/2023-025-0046.ctd | 781 ++++++++++++++++++
1 file changed, 781 insertions(+)
create mode 100644 tests/parsers_test_files/dfo/ios/shell/cruise/CTD/2023-025-0046.ctd
diff --git a/tests/parsers_test_files/dfo/ios/shell/cruise/CTD/2023-025-0046.ctd b/tests/parsers_test_files/dfo/ios/shell/cruise/CTD/2023-025-0046.ctd
new file mode 100644
index 00000000..0afa9e03
--- /dev/null
+++ b/tests/parsers_test_files/dfo/ios/shell/cruise/CTD/2023-025-0046.ctd
@@ -0,0 +1,781 @@
+*2024/01/12 09:29:07.16
+*IOS HEADER VERSION 2.0 2016/04/28 2016/06/13 IVF16
+
+*FILE
+ START TIME : UTC 2023/06/28 12:36:02.000
+ TIME INCREMENT : 0 0 0 0.416667E-01 0 ! (day hr min sec ms)
+ NUMBER OF RECORDS : 173
+ DATA DESCRIPTION : CTD
+ FILE TYPE : ASCII
+ CRC : E1E8713E
+ NUMBER OF CHANNELS : 13
+
+ $TABLE: CHANNELS
+ ! No Name Units Minimum Maximum
+ !--- --------------------------- --------------- -------------- --------------
+ 1 Pressure decibar 2.25 173.8
+ 2 Depth metres 2.23 172.267
+ 3 Temperature:Secondary 'deg C (ITS90)' 9.3328 12.7696
+ 4 Transmissivity %/metre 26.6 55.2
+ 5 Fluorescence:URU:Seapoint mg/m^3 0.236 4.183
+ 6 PAR umol/m^2/sec 0 15.362
+ 7 PAR:Reference uE/m^2/sec 121.22 136.646
+ 8 pH:SBE:Nominal n/a 7.766 8.199
+ 9 Salinity:T1:C1 PSS-78 27.9329 31.5438
+ 10 Oxygen:Dissolved:SBE mL/L 3.558 6.543
+ 11 Oxygen:Dissolved:SBE umol/kg 155.1213 286.209
+ 12 Conductivity:Secondary S/m 3.264543 3.418809
+ 13 Number_of_bin_records n/a 19 57
+ $END
+
+ $TABLE: CHANNEL DETAIL
+ ! No Pad Start Width Format Type Decimal_Places
+ !--- ---- ----- ----- ------ ---- --------------
+ 1 -99 ' ' 7 F ' ' 1
+ 2 -99 ' ' 7 F ' ' 1
+ 3 -99 ' ' 9 F ' ' 4
+ 4 -99 ' ' 6 F ' ' 1
+ 5 -99 ' ' 8 F ' ' 3
+ 6 -99 ' ' 7 F ' ' 1
+ 7 -99 ' ' 7 F ' ' 1
+ 8 -99 ' ' 8 F ' ' 3
+ 9 -99 ' ' 9 F ' ' 4
+ 10 -99 ' ' 7 F ' ' 2
+ 11 -99 ' ' 6 F ' ' 1
+ 12 -99 ' ' 10 F ' ' 5
+ 13 ' ' ' ' 5 I I 0
+ $END
+ $REMARKS
+ This file converted from Sea-Bird file:
+ E:\Telework\2023-025\Processing\derive\2023-025-0046.cnv
+ $END
+
+*ADMINISTRATION
+ MISSION : 2023-025
+ AGENCY : IOS, Ocean Sciences Division, Sidney, B.C.
+ COUNTRY : Canada
+ PROJECT : Salish Sea Biophysical Survey
+ SCIENTIST : Donnet S.
+ PLATFORM : Vector
+
+*LOCATION
+ GEOGRAPHIC AREA : Juan de Fuca Strait / Strait of Georgia
+ STATION : 46
+ EVENT NUMBER : 46
+ LATITUDE : 48 51.38000 N ! (deg min)
+ LONGITUDE : 123 10.74000 W ! (deg min)
+ WATER DEPTH : 179
+ ALTIMETER (M) : 4.93 ! custom item
+ $REMARKS
+ Altimeter value is distance from bottom and is calculated as the
+ median of the deepest 2 metres of data.
+ $END
+
+*INSTRUMENT
+ TYPE : Sea-Bird CTD
+ MODEL : SBE-911plus
+ SERIAL NUMBER : 0550
+
+ $TABLE: SENSORS
+ ! Name Abs Depth Serial No
+ ! ----------------------------------- -------------- ----------
+ Temperature ' ' 2663
+ Conductivity ' ' 2280
+ 'Pressure:Digiquartz with TC' ' ' 0550
+ Temperature:2 ' ' 2106
+ Conductivity:2 ' ' 2754
+ 'Oxygen:SBE 43' ' ' 3791
+ Fluorometer:Seapoint ' ' 3641
+ pH ' ' 0691
+ PAR/Irradiance:Biospherical/Licor ' ' 4565
+ 'Transmissometer:WET Labs C-Star' ' ' 983DR
+ Altimeter ' ' 76341
+ Unavailable ' ' ' '
+ SPAR:Biospherical/Licor ' ' 20518
+ $END
+ $REMARKS
+ Software Version Seasave V 7.26.7.121
+ $END
+
+*HISTORY
+
+ $TABLE: PROGRAMS
+ ! Name Vers Date Time Recs In Recs Out
+ ! -------- ------ ---------- -------- --------- ---------
+ SBE_IOS 4.3 2024/01/09 14:43:29 41153 41153
+ CLEAN 5.3 2024/01/10 16:26:19 41153 41153
+ SHIFTDAT 3.5 2024/01/11 09:19:18 41153 41153
+ SHIFTDAT 3.5 2024/01/11 09:20:43 41153 41153
+ SHIFTDAT 3.5 2024/01/11 09:56:32 41153 41153
+ SHIFTDAT 3.5 2024/01/11 10:13:48 41153 41153
+ DELETE 6.3 2024/01/11 10:16:53 41153 4734
+ CTDEDIT 5.5.1 2024/01/11 13:25:01 4734 4636
+ CALIB 12.1 2024/01/11 15:57:45 4636 4636
+ FILTERS 4.3 2024/01/12 07:58:24 4636 4636
+ BINAVE 4.2.1 2024/01/12 07:58:53 4636 173
+ REMOVECH 8.2 2024/01/12 09:11:54 173 173
+ CHGUNITS 3.2 2024/01/12 09:12:50 173 173
+ REORDER 1.3.1 2024/01/12 09:13:08 ? ?
+ HDREDIT2 3.2 2024/01/12 09:29:07 ? ?
+ $END
+ $REMARKS
+ -CLEAN functions: 2024/01/10 16:25:25 20
+ Reset #RECS, MIN & MAX values in header.
+ Interpolation by Record Number, in Pressure
+ Set event to last 4 characters of file name
+ -The following SHIFT parameters were used.
+ Shift Channel: Conductivity:Primary
+ # of Records to Advance (-ve for Delay):
+ At REC# 0 Shift= -0.80
+ Salinity was recalculated after shift
+ -The following SHIFT parameters were used.
+ Shift Channel: Conductivity:Secondary
+ # of Records to Advance (-ve for Delay):
+ At REC# 0 Shift= -0.65
+ Salinity was recalculated after shift
+ -The following SHIFT parameters were used.
+ Shift Channel: pH:SBE
+ # of Records to Advance (-ve for Delay):
+ At REC# 0 Shift= 20.00
+ -The following SHIFT parameters were used.
+ Shift Channel: Fluorescence:URU:Seapoint
+ # of Records to Advance (-ve for Delay):
+ At REC# 0 Shift= 24.00
+ -The following DELETE parameters were used:
+ Surface Record Removal: Last Press Min
+ Maximum Surface Pressure (relative): 10.00
+ Surface Swell Pressure Tolerance: 1.00
+ Pressure filtered over width: 9
+ Swells deleted. Warning message if pressure difference of 3.00
+ Drop rates < 0.30m/s (calculated over 11 points) will be deleted.
+ Drop rate applies in the range 10.00 to 163.17 dbars
+ Sample interval (from FILE section of header) = 0.042 seconds.
+ -CTDEDIT v5.5.1 2024/01/11 13:25:01
+ 98 records were deleted in this editing session.
+ No data values were changed.
+ -CALIB parameters: 2024/01/11 15:57:45
+ Calibration type = Correct
+ Mode: ONLY - calibration specs from Cal File only.
+ Calibration file = E:\Telework\2023-025\Processing\doc\2023-025-recal1.CCF
+ Calibrations applied:
+ Ch Name Units Fmla Coefficents
+ -- ----------------------------- --------- --- -----------------------------
+ 2 Pressure decibar 10 0.8000000E+00 0.1000000E+01
+ 3 Depth:Salt_Water metres 10 0.8000000E+00 0.1000000E+01
+ 19 Oxygen:Dissolved:SBE mL/L 10 0.0000000E+00 0.1021000E+01
+ -The following FILTER parameters were used.
+ Median filter was used.
+ Filter width = 11
+ The following channel(s) were filtered.
+ Fluorescence:URU:Seapoint
+ -The following BINAVE parameters were used:
+ Bin channel = Pressure
+ Averaging interval = 1.00
+ Minimum bin value = 0.000
+ Average value was used
+ Interpolated values were NOT used for empty bins
+ Channel 'NUMBER_OF_BIN_RECORDS' was added to file.
+ -REMOVECH 2024/01/12 09:11:54
+ The following CHANNEL(S) were removed:
+ Scan_Number
+ Temperature:Primary [deg C (ITS90)]
+ Conductivity:Primary [S/m]
+ Oxygen:Voltage:SBE [volts]
+ Descent_Rate [m/s]
+ Status:Pump
+ Altimeter [metres]
+ Salinity:T0:C0 [PSS-78]
+ Flag
+ -CHANGE units:
+ Temperature reference channel: Temperature:Secondary
+ Salinity reference channel: Salinity:T1:C1
+ 'Oxygen:Dissolved:SBE' changed from mL/L to umol/kg
+ -HEADER EDITS: 2024/01/12 09:29:07
+ Applied edit header: E:\Telework\2023-025\Processing\doc\2022-025-HDR.TXT
+ Channel 2: Depth [metres]
+ Name: Depth:Salt_Water ==> Depth
+ Channel 4: Transmissivity [%/metre]
+ Name: Transmissivity:1 ==> Transmissivity
+ Format: F8.3 ==> F6.1
+ Channel 6: PAR [umol/m^2/sec]
+ Format: F11.3 ==> F7.1
+ Channel 9: Salinity:T1:C1 [PSS-78]
+ Format: F11.4 ==> F9.4
+ Channel 12: Conductivity:Secondary [S/m]
+ Format: F11.6 ==> F10.5
+ Channel 8: pH:SBE:Nominal [n/a]
+ Name: pH:SBE ==> pH:SBE:Nominal
+ Units: pH Units ==> n/a
+ Channel 7: PAR:Reference [uE/m^2/sec]
+ Format: F11.3 ==> F7.1
+ $END
+
+*COMMENTS
+ SBE HEADER
+ Sea-Bird SBE 9 Data File:
+ FileName = C:\Users\User\Desktop\CTD Data\2023-025\2023-025-0046.hex
+ Software Version Seasave V 7.26.7.121
+ Temperature SN = 2663
+ Conductivity SN = 2280
+ Number of Bytes Per Scan = 40
+ Number of Voltage Words = 5
+ Number of Scans Averaged by the Deck Unit = 1
+ System UpLoad Time = Jun 28 2023 12:36:02
+ NMEA Latitude = 48 51.38 N
+ NMEA Longitude = 123 10.74 W
+ NMEA UTC (Time) = Jun 28 2023 12:33:02
+ Store Lat/Lon Data = Append to Every Scan
+ SBE 11plus V 5.2
+ number of scans to average = 1
+ pressure baud rate = 9600
+ NMEA baud rate = 4800
+ surface PAR voltage added to scan
+ A/D offset = 5
+ GPIB address = 1
+ advance primary conductivity 0.073 seconds
+ advance secondary conductivity 0.073 seconds
+ autorun on power up is disabled
+ S>
+ Ship: Vector
+ Station: 46
+ Depth: 179
+ System UTC = Jun 28 2023 12:36:02
+ # nquan = 20
+ # nvalues = 41153
+ # units = specified
+ # name 0 = scan: Scan Count
+ # name 1 = prDM: Pressure, Digiquartz [db]
+ # name 2 = depSM: Depth [salt water, m]
+ # name 3 = t090C: Temperature [ITS-90, deg C]
+ # name 4 = t190C: Temperature, 2 [ITS-90, deg C]
+ # name 5 = c0S/m: Conductivity [S/m]
+ # name 6 = c1S/m: Conductivity, 2 [S/m]
+ # name 7 = CStarTr0: Beam Transmission, WET Labs C-Star [%]
+ # name 8 = flSP: Fluorescence, Seapoint
+ # name 9 = sbeox0V: Oxygen raw, SBE 43 [V]
+ # name 10 = par: PAR/Irradiance, Biospherical/Licor
+ # name 11 = spar: SPAR, Biospherical/Licor
+ # name 12 = ph: pH
+ # name 13 = dz/dtM: Descent Rate [m/s]
+ # name 14 = pumps: Pump Status
+ # name 15 = altM: Altimeter [m]
+ # name 16 = sal00: Salinity, Practical [PSU]
+ # name 17 = sal11: Salinity, Practical, 2 [PSU]
+ # name 18 = sbeox0ML/L: Oxygen, SBE 43 [ml/l], WS = 1
+ # name 19 = flag: flag
+ # span 0 = 1, 41153
+ # span 1 = 0.453, 173.170
+ # span 2 = 0.449, 171.632
+ # span 3 = 9.3263, 14.8969
+ # span 4 = 9.3241, 14.9079
+ # span 5 = 3.262482, 3.419633
+ # span 6 = 3.262182, 3.419188
+ # span 7 = 66.9108, 86.3669
+ # span 8 = 2.1978e-01, 5.9707e+00
+ # span 9 = 2.0073, 3.9756
+ # span 10 = 1.0000e-12, 6.0050e+01
+ # span 11 = 1.2122e+02, 5.5099e+02
+ # span 12 = 7.760, 8.349
+ # span 13 = -1.014, 0.989
+ # span 14 = 0, 1
+ # span 15 = 4.05, 100.00
+ # span 16 = 27.0884, 31.5577
+ # span 17 = 27.0604, 31.5553
+ # span 18 = 3.4522, 7.9733
+ # span 19 = 0.0000e+00, 0.0000e+00
+ # interval = seconds: 0.0416667
+ # start_time = Jun 28 2023 12:36:02 [System UTC, header]
+ # bad_flag = -9.990e-29
+ #
+ #
+ #
+ #
+ # 2663
+ # 15-Feb-23
+ # 1
+ # 0.00000000e+000
+ # 0.00000000e+000
+ # 0.00000000e+000
+ # 0.00000000e+000
+ # 0.000
+ # 4.36558182e-003
+ # 6.42227278e-004
+ # 2.39658557e-005
+ # 2.39890113e-006
+ # 1000.000
+ # 1.00000000
+ # 0.0000
+ #
+ #
+ #
+ #
+ #
+ # 2280
+ # 14-Feb-23
+ # 1
+ #
+ # 0.0000
+ # 2000.0000
+ # 0
+ #
+ # 0.00000000e+000
+ # 0.00000000e+000
+ # 0.00000000e+000
+ # 0.00000000e+000
+ # 0.0
+ # -9.57000000e-008
+ #
+ #
+ # -1.01104933e+001
+ # 1.35743728e+000
+ # -3.38809892e-003
+ # 3.03752041e-004
+ # -9.57000000e-008
+ # 3.2500e-006
+ #
+ # 0.00000000e+000
+ #
+ # 1.00000000
+ # 0.00000
+ #
+ #
+ #
+ #
+ #
+ # 0550
+ # 20-Feb-23
+ # -4.232943e+004
+ # 1.065076e-001
+ # 1.464900e-002
+ # 3.694200e-002
+ # 0.000000e+000
+ # 3.041883e+001
+ # -3.536199e-004
+ # 4.388420e-006
+ # 2.583800e-009
+ # 0.99997549
+ # -0.00431
+ # 0.000000e+000
+ # 1.286170e-002
+ # -9.445820e+000
+ #
+ #
+ #
+ #
+ #
+ # 2106
+ # 15-Feb-23
+ # 1
+ # 0.00000000e+000
+ # 0.00000000e+000
+ # 0.00000000e+000
+ # 0.00000000e+000
+ # 0.000
+ # 4.14692690e-003
+ # 6.30774382e-004
+ # 2.10717013e-005
+ # 2.11511943e-006
+ # 1000.000
+ # 1.00000000
+ # 0.0000
+ #
+ #
+ #
+ #
+ #
+ # 2754
+ # 14-Feb-23
+ # 1
+ #
+ # 0.0000
+ # 2000.0000
+ # 0
+ #
+ # 0.00000000e+000
+ # 0.00000000e+000
+ # 0.00000000e+000
+ # 0.00000000e+000
+ # 0.0
+ # -9.57000000e-008
+ #
+ #
+ # -1.06129987e+001
+ # 1.62039974e+000
+ # -3.87914662e-003
+ # 3.93074083e-004
+ # -9.57000000e-008
+ # 3.2500e-006
+ #
+ # 0.00000000e+000
+ #
+ # 1.00000000
+ # 0.00000
+ #
+ #
+ #
+ #
+ #
+ # 3791
+ # 10-Feb-23
+ # 1
+ #
+ #
+ # 0.0000
+ # 0.0000e+000
+ # 0.0000
+ # 0.00e+000
+ # 0.0000
+ # 0.0
+ #
+ #
+ #
+ # 4.0837e-001
+ # -0.7163
+ # -2.9787e-003
+ # 1.4488e-004
+ # -2.5416e-006
+ # 2.5826e+000
+ # 1.92634e-004
+ # -4.64803e-002
+ # 3.6000e-002
+ # 1.9500
+ # -3.3000e-002
+ # 5.0000e+003
+ # 1.4500e+003
+ #
+ #
+ #
+ #
+ #
+ #
+ # 3641
+ #
+ #
+ # 2
+ # 0.000
+ #
+ #
+ #
+ #
+ #
+ # 0691
+ # 09-Mar-23
+ # 4.6121
+ # 2.5347
+ #
+ #
+ #
+ #
+ #
+ # 4565
+ # 2021-02-24
+ # 1.00000000
+ # 0.00000000
+ # 3802281368.82000020
+ # 1.00000000
+ # -0.39620000
+ #
+ #
+ #
+ #
+ #
+ # 983DR
+ # 4 Jul 2023
+ # 20.4552
+ # -1.0984
+ # 0.250
+ #
+ #
+ #
+ #
+ #
+ #
+ #
+ #
+ # 76341
+ # 2021-02-10
+ # 15.000
+ # 0.000
+ #
+ #
+ #
+ #
+ #
+ #
+ #
+ #
+ #
+ #
+ #
+ # 20518
+ # 20210224
+ # 1.5042e+003
+ # 1.00000000
+ #
+ #
+ #
+ # datcnv_date = Jan 08 2024 15:10:45, 7.26.7.129 [datcnv_vars = 16]
+ # datcnv_in = E:\Telework\2023-025\Unprocessed\CTD\2023-025-0046.hex E:\Telework
+ \2023-025\Processing\doc\2023-025-ctd3.XMLCON
+ # datcnv_skipover = 0
+ # datcnv_ox_hysteresis_correction = no
+ # wildedit_date = Jan 09 2024 11:23:12, 7.26.7.129
+ # wildedit_in = E:\Telework\2023-025\Processing\convert\2023-025-0046.cnv
+ # wildedit_pass1_nstd = 2.0
+ # wildedit_pass2_nstd = 5.0
+ # wildedit_pass2_mindelta = 0.000e+000
+ # wildedit_npoint = 50
+ # wildedit_vars = prDM depSM t090C t190C c0S/m c1S/m
+ # wildedit_excl_bad_scans = yes
+ # alignctd_date = Jan 09 2024 11:24:48, 7.26.7.129
+ # alignctd_in = E:\Telework\2023-025\Processing\wildedit\2023-025-0046.cnv
+ # alignctd_adv = sbeox0V 2.500
+ # celltm_date = Jan 09 2024 11:27:30, 7.26.7.129
+ # celltm_in = E:\Telework\2023-025\Processing\align\2023-025-0046.cnv
+ # celltm_alpha = 0.0245, 0.0245
+ # celltm_tau = 9.5000, 9.5000
+ # celltm_temp_sensor_use_for_cond = primary, secondary
+ # Derive_date = Jan 09 2024 11:38:51, 7.26.7.129 [derive_vars = 3]
+ # Derive_in = E:\Telework\2023-025\Processing\celltm\2023-025-0046.cnv E:\Telewo
+ rk\2023-025\Processing\doc\2023-025-ctd3.XMLCON
+ # derive_time_window_docdt = seconds: 1
+ # derive_ox_tau_correction = yes
+ # file_type = ascii
+ END*
+ Remarks from CTDEDIT:
+ CTDEDIT was used to remove records corrupted by shed wakes near the top
+ and bottom of the cast.
+ --------------------------------------------------------------------------------------
+
+ Data Processing Notes:
+ ----------------------
+ CTD #0550 as used for events #27 to #58.
+
+ Conductivity, transmissivity, pH, PAR and SPAR data are nominal and mostly unedited
+ except that some records were removed in editing temperature and salinity.
+
+ pH data were all bad for event #29; channel pH:SBE was removed from that file only.
+
+ NOTE: While the SBE fluorescence data are expressed in concentration units, they
+ do not always compare well to extracted chlorophyll samples, particularly for casts
+ far from shore. It is recommended that users check extracted chlorophyll values
+ where available.
+
+ The secondary temperature and salinity channels were selected for all casts. The
+ salinity compared well with bottle samples.
+
+ Pressure and depth were recalibrated by adding 0.8db based on observations during 3
+ cruises in 2023.
+
+ The SBE DO sensor has a fairly long response time so data accuracy is not as high
+ when it is in motion as it is during stops for bottles. This will be especially true
+ when vertical DO gradients are large. To get an estimate of the accuracy of the
+ SBE DO data during downcasts (after recalibration) a rough comparison was made between
+ downcast SBE Dissolved Oxygen and upcast titrated samples. Some of the difference will
+ be due to incomplete flushing of Niskin bottles and imperfect matches in levels from
+ the two data sets as well as errors in sample analysis/collection, so the following
+ statement likely underestimates SBE DO accuracy.
+
+ Downcast (CTD files) Oxygen:Dissolved:SBE data for this cruise are considered, very
+ roughly, to be:
+ ±0.30 mL/L from 0 - 50db except in areas of very large DO gradients
+ ±0.10 mL/L from 50db - 150db
+ ±0.04 mL/L from 150db - 200db
+ ±0.02 mL/L below 200db
+
+ For details on the processing see the report: 2023-025_Processing_Report.doc.
+ -------------------------------------------------------------------------
+
+*CALIBRATION
+
+ $TABLE: CORRECTED CHANNELS
+ ! Name Units Fmla Pad Coefficients
+ ! ---------------------- --------- ---- ------ ------------
+ Pressure decibar 10 -99 () (0.8 1)
+ Depth:Salt_Water metres 10 -99 () (0.8 1)
+ Oxygen:Dissolved:SBE mL/L 10 -99 () (0 1.021)
+ $END
+!--1--- --2--- ---3---- --4-- ---5--- --6--- --7--- ---8--- ---9---- --10-- --11- ----12--- -13-
+!Pressu Depth Temperat Trans Fluores PAR PAR: pH:SBE: Salinity Oxygen Oxyge Conductiv Numb
+!re ure: missi cence: Refere Nominal :T1:C1 : n: ity: er_o
+! Secondar vity URU: nce Dissol Disso Secondary ~bin
+! y Seapoin ved: lved: _rec
+! t SBE SBE ords
+!------ ------ -------- ----- ------- ------ ------ ------- -------- ------ ----- --------- ----
+*END OF HEADER
+ 2.2 2.2 12.7696 26.6 4.183 15.4 135.5 8.199 27.9329 6.54 286.2 3.32614 38
+ 2.9 2.9 12.4423 27.8 4.098 11.7 135.1 8.184 28.1039 6.25 273.4 3.31845 39
+ 4.0 4.0 12.1363 30.8 4.013 7.8 135.9 8.174 28.3171 6.05 264.5 3.31670 30
+ 5.0 5.0 12.0050 32.2 3.882 5.4 135.9 8.161 28.4272 6.03 263.5 3.31786 29
+ 6.0 6.0 12.0227 32.7 3.863 3.8 135.9 8.148 28.4532 6.06 265.1 3.32207 27
+ 7.0 6.9 12.0232 32.7 3.921 2.7 135.9 8.137 28.4541 6.06 264.8 3.32224 28
+ 8.0 7.9 12.0256 32.8 3.868 1.9 135.9 8.128 28.4580 6.09 266.4 3.32288 28
+ 9.0 8.9 12.0231 33.0 3.676 1.4 135.9 8.120 28.4639 6.05 264.7 3.32335 27
+ 10.0 9.9 12.1144 36.4 2.827 1.0 135.9 8.117 28.7334 5.64 246.7 3.35852 20
+ 11.0 10.9 11.3525 41.8 2.046 0.8 135.9 8.115 29.1704 5.14 224.6 3.34277 28
+ 12.0 11.9 10.8198 45.7 1.590 0.6 135.9 8.107 29.4316 4.86 212.5 3.32621 27
+ 13.0 12.9 10.6575 46.9 1.340 0.4 135.9 8.091 29.4604 4.78 208.8 3.31589 27
+ 14.0 13.9 10.4850 48.7 1.104 0.4 135.9 8.072 29.4607 4.78 208.6 3.30185 27
+ 15.0 14.9 10.3888 49.1 0.920 0.3 135.9 8.052 29.4781 4.80 209.6 3.29578 26
+ 16.0 15.9 10.4079 48.0 1.070 0.2 135.9 8.033 29.5419 4.84 211.2 3.30382 27
+ 17.0 16.9 10.4325 47.6 1.062 0.2 135.9 8.017 29.5611 4.86 212.3 3.30782 27
+ 18.0 17.9 10.4149 47.9 1.028 0.2 135.9 8.002 29.5638 4.88 213.2 3.30668 26
+ 19.0 18.8 10.3992 48.1 0.950 0.1 135.9 7.988 29.5702 4.88 213.2 3.30609 27
+ 20.0 19.8 10.5003 48.0 0.913 0.1 135.9 7.974 29.6339 4.90 213.8 3.32087 25
+ 21.0 20.8 10.5713 47.0 0.978 0.1 135.9 7.962 29.6733 4.87 212.8 3.33073 26
+ 22.0 21.8 10.4811 47.1 0.966 0.1 136.2 7.955 29.6876 4.85 211.7 3.32479 26
+ 23.0 22.8 10.4247 47.5 0.971 0.0 135.9 7.950 29.6912 4.80 209.8 3.32055 26
+ 24.0 23.8 10.2909 48.5 0.829 0.0 136.6 7.945 29.6757 4.77 208.4 3.30803 25
+ 25.0 24.8 10.2276 49.0 0.737 0.0 135.9 7.941 29.6705 4.76 207.7 3.30235 26
+ 26.0 25.8 10.1745 49.6 0.651 0.0 135.9 7.936 29.6711 4.71 205.6 3.29809 26
+ 27.0 26.8 10.0803 51.7 0.579 0.0 135.9 7.932 29.7071 4.67 204.0 3.29400 26
+ 28.0 27.8 10.0510 52.1 0.575 0.0 135.9 7.926 29.7187 4.67 204.0 3.29279 25
+ 29.0 28.7 10.0259 51.8 0.507 0.0 135.9 7.918 29.7187 4.68 204.4 3.29078 26
+ 30.0 29.8 10.0317 51.8 0.522 0.0 135.9 7.910 29.7295 4.68 204.1 3.29238 26
+ 31.0 30.7 10.0274 51.7 0.544 0.0 135.9 7.901 29.7352 4.65 203.0 3.29263 26
+ 32.0 31.7 10.0223 51.9 0.504 0.0 135.9 7.894 29.7458 4.66 203.5 3.29332 25
+ 33.0 32.7 9.8936 53.1 0.463 0.0 136.0 7.888 29.7659 4.66 203.4 3.28495 20
+ 34.0 33.7 9.9211 52.7 0.457 0.0 135.9 7.881 29.7851 4.63 202.3 3.28900 26
+ 35.0 34.7 9.9307 52.2 0.476 0.0 135.9 7.873 29.7971 4.62 201.7 3.29102 24
+ 36.0 35.7 9.8788 52.3 0.426 0.0 135.9 7.868 29.8010 4.59 200.5 3.28719 26
+ 37.0 36.7 9.8471 52.7 0.385 0.0 135.9 7.864 29.8163 4.57 199.7 3.28614 26
+ 38.0 37.7 9.7077 53.3 0.343 0.0 135.9 7.858 29.8142 4.58 199.9 3.27452 25
+ 39.0 38.7 9.5861 54.4 0.316 0.0 135.9 7.851 29.8161 4.63 202.2 3.26478 26
+ 40.0 39.7 9.5645 55.2 0.295 0.0 135.9 7.843 29.8313 4.61 201.4 3.26454 26
+ 41.0 40.6 9.8246 55.1 0.313 0.0 135.9 7.839 29.9175 4.52 197.4 3.29489 19
+ 42.0 41.6 9.8530 53.3 0.322 0.0 135.9 7.836 29.9253 4.51 196.9 3.29768 26
+ 43.0 42.6 9.8928 52.4 0.291 0.0 135.9 7.835 29.9369 4.43 193.6 3.30216 26
+ 44.0 43.6 9.9723 52.2 0.270 0.0 135.9 7.834 29.9583 4.37 190.9 3.31090 26
+ 45.0 44.6 9.9988 51.4 0.269 0.0 135.9 7.834 29.9678 4.35 190.1 3.31407 25
+ 46.0 45.6 10.0001 51.1 0.259 0.0 135.9 7.834 29.9713 4.35 189.9 3.31457 26
+ 47.0 46.6 10.0024 51.0 0.251 0.0 135.9 7.834 29.9787 4.34 189.4 3.31554 26
+ 48.0 47.6 10.0163 51.1 0.255 0.0 135.9 7.834 29.9985 4.33 189.2 3.31871 27
+ 49.0 48.6 10.0092 50.9 0.253 0.0 135.9 7.833 30.0047 4.32 188.8 3.31878 25
+ 50.0 49.6 10.0013 50.6 0.244 0.0 135.9 7.832 30.0109 4.32 188.4 3.31878 26
+ 51.0 50.6 10.0066 50.6 0.244 0.0 135.9 7.831 30.0185 4.30 187.8 3.32002 26
+ 52.0 51.6 10.0044 50.7 0.240 0.0 135.9 7.830 30.0252 4.30 187.8 3.32056 27
+ 53.0 52.5 10.0184 50.6 0.244 0.0 135.9 7.830 30.0360 4.29 187.4 3.32283 26
+ 54.0 53.5 10.0065 50.4 0.244 0.0 135.9 7.830 30.0364 4.30 187.6 3.32192 25
+ 55.0 54.5 10.0033 50.2 0.244 0.0 135.9 7.829 30.0376 4.30 187.8 3.32182 27
+ 56.0 55.5 9.9631 50.3 0.243 0.0 135.9 7.828 30.0359 4.31 188.2 3.31837 22
+ 57.0 56.5 9.9143 50.4 0.236 0.0 135.9 7.826 30.0379 4.33 189.0 3.31456 26
+ 58.0 57.5 9.9017 50.8 0.236 0.0 135.9 7.825 30.0479 4.32 188.4 3.31456 25
+ 59.0 58.5 9.9361 50.9 0.239 0.0 135.9 7.824 30.0668 4.29 187.4 3.31932 27
+ 60.0 59.5 9.9456 50.7 0.238 0.0 135.9 7.821 30.0759 4.28 186.7 3.32106 27
+ 61.0 60.5 9.9525 50.5 0.244 0.0 135.9 7.821 30.0810 4.30 187.5 3.32219 25
+ 62.0 61.5 9.9573 50.4 0.247 0.0 135.9 7.821 30.0833 4.30 187.5 3.32285 27
+ 63.0 62.5 9.9610 50.4 0.244 0.0 135.9 7.821 30.0853 4.30 187.9 3.32339 27
+ 64.0 63.5 9.9637 50.5 0.257 0.0 135.9 7.823 30.0867 4.32 188.5 3.32380 25
+ 65.0 64.4 9.9637 50.6 0.256 0.0 135.9 7.824 30.0866 4.32 188.6 3.32382 21
+ 66.0 65.4 9.9244 50.7 0.262 0.0 135.9 7.825 30.1018 4.36 190.3 3.32212 26
+ 67.0 66.4 9.8855 50.8 0.266 0.0 135.9 7.825 30.1157 4.36 190.3 3.32032 26
+ 68.0 67.4 9.8531 51.2 0.262 0.0 135.6 7.825 30.1260 4.36 190.4 3.31870 27
+ 69.0 68.4 9.8134 51.2 0.256 0.0 135.7 7.822 30.1324 4.36 190.1 3.31608 26
+ 70.0 69.4 9.8608 51.3 0.259 0.0 134.1 7.821 30.1864 4.33 189.1 3.32543 26
+ 71.0 70.4 9.8262 51.3 0.263 0.0 135.5 7.821 30.2018 4.34 189.6 3.32412 26
+ 72.0 71.4 9.9204 51.1 0.269 0.0 134.7 7.820 30.2359 4.32 188.7 3.33539 26
+ 73.0 72.4 9.9759 50.8 0.274 0.0 134.3 7.823 30.2510 4.32 188.4 3.34156 27
+ 74.0 73.4 10.0335 50.6 0.285 0.0 134.1 7.826 30.2771 4.32 188.7 3.34900 26
+ 75.0 74.4 10.0686 50.4 0.294 0.0 134.1 7.829 30.3145 4.31 188.1 3.35571 26
+ 76.0 75.4 10.0706 49.7 0.293 0.0 134.1 7.831 30.3281 4.29 187.4 3.35727 26
+ 77.0 76.4 10.0368 49.6 0.293 0.0 134.1 7.834 30.3336 4.28 186.7 3.35513 24
+ 78.0 77.3 9.9522 49.5 0.293 0.0 134.1 7.833 30.3341 4.27 186.5 3.34807 26
+ 79.0 78.3 9.9281 49.3 0.293 0.0 134.1 7.830 30.3367 4.27 186.3 3.34635 25
+ 80.0 79.3 9.9385 49.2 0.290 0.0 134.1 7.830 30.3430 4.28 186.6 3.34789 26
+ 81.0 80.3 9.9656 49.1 0.293 0.0 134.0 7.830 30.3537 4.28 187.0 3.35125 26
+ 82.0 81.3 10.0008 49.1 0.312 0.0 134.0 7.830 30.3680 4.27 186.5 3.35566 25
+ 83.0 82.3 10.0132 49.1 0.297 0.0 133.7 7.830 30.3743 4.27 186.3 3.35737 26
+ 84.0 83.3 10.0147 49.1 0.299 0.0 133.9 7.830 30.3764 4.28 186.7 3.35775 26
+ 85.0 84.3 10.0210 48.9 0.305 0.0 133.5 7.832 30.3899 4.27 186.2 3.35966 24
+ 86.0 85.2 10.0246 48.9 0.310 0.0 132.7 7.832 30.4040 4.27 186.3 3.36141 26
+ 87.0 86.2 10.0248 49.0 0.305 0.0 132.9 7.834 30.4033 4.27 186.5 3.36139 25
+ 88.0 87.2 10.0241 49.0 0.298 0.0 132.2 7.834 30.3993 4.25 185.6 3.36098 26
+ 89.0 88.2 10.0218 49.0 0.305 0.0 132.2 7.833 30.4023 4.25 185.5 3.36113 26
+ 90.0 89.2 10.0199 49.0 0.310 0.0 132.2 7.833 30.4083 4.26 185.9 3.36161 25
+ 91.0 90.2 10.0213 49.0 0.305 0.0 132.2 7.833 30.4069 4.25 185.6 3.36163 26
+ 92.0 91.2 10.0230 49.1 0.322 0.0 132.2 7.833 30.4032 4.26 185.8 3.36144 25
+ 93.0 92.2 10.0130 49.1 0.317 0.0 132.2 7.833 30.4092 4.24 185.2 3.36124 26
+ 94.0 93.2 9.9911 49.1 0.315 0.0 132.2 7.832 30.4222 4.24 185.3 3.36075 25
+ 95.0 94.2 9.9856 49.2 0.317 0.0 132.2 7.831 30.4255 4.26 185.7 3.36065 26
+ 96.0 95.2 9.9755 49.3 0.309 0.0 131.6 7.830 30.4322 4.25 185.5 3.36051 25
+ 97.0 96.2 9.9714 49.2 0.307 0.0 131.5 7.830 30.4354 4.25 185.4 3.36053 25
+ 98.0 97.1 9.9708 49.3 0.299 0.0 131.2 7.830 30.4359 4.25 185.6 3.36058 25
+ 99.0 98.1 9.9690 49.2 0.309 0.0 130.4 7.830 30.4372 4.24 185.2 3.36059 25
+ 100.0 99.1 9.9646 49.1 0.311 0.0 130.4 7.830 30.4395 4.25 185.3 3.36056 22
+ 101.0 100.1 9.9418 49.2 0.317 0.0 130.4 7.829 30.4542 4.23 184.4 3.36009 25
+ 102.0 101.1 9.9194 49.2 0.306 0.0 130.1 7.826 30.4661 4.23 184.6 3.35943 25
+ 103.0 102.1 9.8892 49.3 0.311 0.0 128.6 7.825 30.4832 4.24 185.0 3.35864 26
+ 104.0 103.1 9.8803 49.2 0.305 0.0 129.7 7.825 30.4874 4.22 184.4 3.35836 25
+ 105.0 104.1 9.8757 47.4 0.305 0.0 130.4 7.823 30.4885 4.23 184.5 3.35811 24
+ 106.0 105.1 9.8701 49.3 0.310 0.0 130.4 7.821 30.4907 4.24 184.8 3.35791 26
+ 107.0 106.1 9.8657 49.4 0.304 0.0 130.4 7.821 30.4932 4.24 185.1 3.35783 25
+ 108.0 107.1 9.8638 49.5 0.301 0.0 130.4 7.821 30.4949 4.22 184.2 3.35788 25
+ 109.0 108.0 9.8624 49.3 0.311 0.0 130.3 7.821 30.4983 4.22 184.1 3.35814 26
+ 110.0 109.1 9.8559 49.3 0.300 0.0 130.4 7.821 30.4989 4.23 184.5 3.35769 25
+ 111.0 110.0 9.8585 49.3 0.305 0.0 129.1 7.820 30.5022 4.22 184.3 3.35828 25
+ 112.0 111.0 9.8650 49.3 0.316 0.0 129.1 7.821 30.5065 4.23 184.6 3.35929 26
+ 113.0 112.0 9.8597 49.2 0.325 0.0 128.8 7.820 30.5073 4.22 184.4 3.35897 25
+ 114.0 113.0 9.8544 49.2 0.300 0.0 128.6 7.818 30.5073 4.24 184.8 3.35857 25
+ 115.0 114.0 9.8474 49.0 0.309 0.0 128.6 7.818 30.5067 4.23 184.6 3.35796 26
+ 116.0 115.0 9.8405 49.1 0.317 0.0 128.6 7.817 30.5052 4.22 184.1 3.35728 25
+ 117.0 116.0 9.8330 49.1 0.314 0.0 128.6 7.816 30.5043 4.22 184.2 3.35659 26
+ 118.0 117.0 9.8096 49.1 0.293 0.0 128.6 7.816 30.5079 4.24 185.0 3.35504 25
+ 119.0 118.0 9.8480 49.1 0.306 0.0 128.6 7.816 30.5269 4.22 184.2 3.36019 26
+ 120.0 118.9 9.8816 49.0 0.317 0.0 128.6 7.816 30.5516 4.22 184.3 3.36550 26
+ 121.0 119.9 9.8824 48.8 0.322 0.0 128.6 7.817 30.5665 4.20 183.5 3.36709 25
+ 122.0 120.9 9.9190 48.7 0.336 0.0 128.6 7.818 30.5969 4.19 183.0 3.37323 26
+ 123.0 121.9 9.9348 48.1 0.349 0.0 128.6 7.820 30.6226 4.18 182.2 3.37715 26
+ 124.0 122.9 9.9283 48.1 0.364 0.0 128.6 7.821 30.6306 4.17 181.8 3.37744 25
+ 125.0 123.9 9.9073 47.9 0.363 0.0 128.4 7.821 30.6430 4.14 180.8 3.37695 26
+ 126.0 124.9 9.9058 47.7 0.378 0.0 127.0 7.821 30.6898 4.14 180.6 3.38151 23
+ 127.0 125.9 9.9080 47.5 0.384 0.0 126.8 7.821 30.6957 4.13 180.0 3.38232 25
+ 128.0 126.9 9.9071 47.3 0.412 0.0 126.7 7.821 30.6966 4.14 180.8 3.38237 26
+ 129.0 127.9 9.9038 47.1 0.386 0.0 126.7 7.821 30.7008 4.12 179.7 3.38256 27
+ 130.0 128.9 9.8940 47.1 0.387 0.0 126.7 7.821 30.7153 4.11 179.2 3.38321 25
+ 131.0 129.9 9.8546 47.2 0.356 0.0 126.7 7.820 30.7418 4.09 178.4 3.38256 26
+ 132.0 130.8 9.8224 47.2 0.355 0.0 126.7 7.817 30.7544 4.08 177.9 3.38112 27
+ 133.0 131.8 9.7869 47.3 0.354 0.0 126.7 7.816 30.7632 4.06 177.1 3.37905 25
+ 134.0 132.8 9.7648 47.0 0.352 0.0 125.3 7.813 30.8202 4.04 176.3 3.38286 26
+ 135.0 133.8 9.7576 47.1 0.384 0.0 125.0 7.812 30.8751 4.01 175.1 3.38773 27
+ 136.0 134.8 9.7535 46.9 0.411 0.0 124.9 7.810 30.9432 3.97 173.0 3.39416 25
+ 137.0 135.8 9.7265 47.0 0.456 0.0 124.9 7.809 30.9863 3.93 171.5 3.39617 26
+ 138.0 136.8 9.7170 46.6 0.463 0.0 124.9 7.807 31.0077 3.93 171.4 3.39750 26
+ 139.0 137.8 9.6995 46.5 0.452 0.0 124.9 7.806 31.0347 3.90 170.3 3.39873 26
+ 140.0 138.8 9.6561 46.1 0.467 0.0 124.9 7.804 31.0915 3.86 168.3 3.40068 26
+ 141.0 139.8 9.6041 46.0 0.442 0.0 124.8 7.802 31.1650 3.81 166.2 3.40353 26
+ 142.0 140.8 9.5677 45.5 0.439 0.0 124.7 7.798 31.2143 3.79 165.1 3.40532 26
+ 143.0 141.7 9.5499 45.0 0.395 0.0 123.2 7.796 31.2353 3.77 164.5 3.40591 26
+ 144.0 142.7 9.5438 45.0 0.385 0.0 123.4 7.793 31.2413 3.77 164.3 3.40601 27
+ 145.0 143.7 9.5340 44.5 0.384 0.0 123.0 7.793 31.2553 3.77 164.3 3.40659 27
+ 146.0 144.7 9.5263 44.3 0.365 0.0 123.0 7.791 31.2663 3.76 164.0 3.40706 25
+ 147.0 145.7 9.5240 43.9 0.381 0.0 123.0 7.789 31.2695 3.76 164.1 3.40722 26
+ 148.0 146.7 9.5233 43.4 0.363 0.0 123.0 7.789 31.2708 3.76 163.8 3.40733 26
+ 149.0 147.7 9.5231 43.0 0.370 0.0 123.0 7.789 31.2714 3.76 163.7 3.40741 26
+ 150.0 148.7 9.5233 42.7 0.372 0.0 123.0 7.789 31.2716 3.76 163.7 3.40749 26
+ 151.0 149.7 9.5232 42.0 0.377 0.0 122.5 7.787 31.2722 3.77 164.5 3.40759 26
+ 152.0 150.7 9.5228 41.5 0.396 0.0 121.9 7.786 31.2733 3.75 163.7 3.40769 26
+ 153.0 151.6 9.5224 41.7 0.380 0.0 121.7 7.785 31.2740 3.75 163.6 3.40777 25
+ 154.0 152.6 9.5233 41.6 0.371 0.0 121.2 7.784 31.2727 3.75 163.7 3.40777 26
+ 155.0 153.6 9.5222 41.0 0.394 0.0 121.2 7.785 31.2748 3.75 163.7 3.40792 25
+ 156.0 154.6 9.5203 40.5 0.389 0.0 121.2 7.784 31.2782 3.74 163.3 3.40812 26
+ 157.0 155.6 9.5166 40.1 0.399 0.0 121.2 7.784 31.2839 3.74 163.2 3.40841 26
+ 158.0 156.6 9.5145 39.4 0.406 0.0 121.2 7.784 31.2871 3.73 162.9 3.40858 25
+ 159.0 157.6 9.5087 39.2 0.372 0.0 121.2 7.784 31.2955 3.73 162.5 3.40897 26
+ 160.0 158.6 9.4949 38.2 0.395 0.0 121.2 7.783 31.3153 3.70 161.5 3.40977 26
+ 161.0 159.6 9.4719 36.8 0.380 0.0 121.2 7.782 31.3482 3.67 159.9 3.41106 25
+ 162.0 160.6 9.4379 35.3 0.372 0.0 121.3 7.780 31.3960 3.63 158.3 3.41287 25
+ 163.0 161.5 9.3993 32.1 0.400 0.0 121.2 7.779 31.4494 3.59 156.7 3.41485 27
+ 164.0 162.6 9.3666 29.6 0.377 0.0 121.8 7.775 31.4953 3.57 155.6 3.41657 25
+ 165.0 163.6 9.3534 28.9 0.430 0.0 121.6 7.774 31.5129 3.56 155.3 3.41719 26
+ 166.0 164.5 9.3497 29.0 0.367 0.0 122.9 7.770 31.5180 3.57 155.4 3.41741 26
+ 167.0 165.5 9.3476 29.7 0.379 0.0 123.0 7.770 31.5208 3.57 155.7 3.41754 24
+ 168.0 166.5 9.3471 30.4 0.426 0.0 123.0 7.770 31.5213 3.56 155.3 3.41759 30
+ 169.0 167.5 9.3459 31.3 0.383 0.0 123.0 7.770 31.5230 3.57 155.4 3.41770 39
+ 170.0 168.5 9.3459 31.3 0.393 0.0 123.0 7.767 31.5233 3.58 155.9 3.41777 45
+ 171.0 169.5 9.3452 31.5 0.380 0.0 123.0 7.766 31.5246 3.56 155.3 3.41788 51
+ 172.0 170.5 9.3426 31.7 0.383 0.0 123.6 7.766 31.5284 3.56 155.4 3.41807 54
+ 173.0 171.5 9.3389 32.0 0.369 0.0 124.9 7.766 31.5338 3.57 155.6 3.41832 57
+ 173.8 172.3 9.3328 33.2 0.361 0.0 126.7 7.766 31.5438 3.56 155.1 3.41881 33
\ No newline at end of file
From 5803408783d4088ab77cabcd0b9d5a72bed91f08 Mon Sep 17 00:00:00 2001
From: Jessy Barrette <30420025+JessyBarrette@users.noreply.github.com>
Date: Wed, 1 May 2024 13:35:10 -0400
Subject: [PATCH 29/30] add absolute:salinity to ios vocablary #82
---
ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv | 1 +
1 file changed, 1 insertion(+)
diff --git a/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv b/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv
index 680df403..404fa6d2 100644
--- a/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv
+++ b/ocean_data_parser/vocabularies/dfo_ios_vocabulary.csv
@@ -1,5 +1,6 @@
ios_file_extension,ios_name,accepted_units,accepted_instrument_type,apply_func,long_name,standard_name,units,scale,sdn_parameter_urn,sdn_parameter_name,sdn_uom_urn,sdn_uom_name,rename,comments
,% light transmittance,%,,,% Light transmittance,,%,,,,,,,
+,salinity:absolute,g/kg (TEOS-10)|g/kg,,,Absolute Salinity,sea_water_absolute_salinity,g/kg,,SDN:P01::ASLTZZ01,Absolute salinity of the water body,SDN:P06::UGKG,Grams per kilogram,ASLTZZ01,
,adenosine_triphosphate,mg\/m\^3,,,Adenosine Triphosphate,mass_concentration_of_adenosine_triphosphate_in_sea_water,mg/m^3,,SDN:P01::ATPXZZDZ,Concentration of adenosine triphosphate {ATP CAS 56-65-5} per unit volume of the water body [dissolved plus reactive particulate
Date: Wed, 1 May 2024 15:01:14 -0400
Subject: [PATCH 30/30] isort black formatting
---
.../parsers/dfo/ios_source/IosObsFile.py | 15 +++++++++------
ocean_data_parser/vocabularies/load.py | 2 +-
2 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
index 18ee78fc..a65a5871 100644
--- a/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
+++ b/ocean_data_parser/parsers/dfo/ios_source/IosObsFile.py
@@ -296,13 +296,12 @@ def _get_subsection(idx) -> list:
return info
def get_flag_convention(self, name: str, units: str = None) -> dict:
-
common_attrs = {
"ios_name": name.lower(),
"rename": name.lower(),
"standard_name": "quality_flag",
}
-
+
if name.lower() == "flag:at_sea":
return {
**common_attrs,
@@ -345,12 +344,12 @@ def get_flag_convention(self, name: str, units: str = None) -> dict:
]
),
}
- elif name.lower().startswith("flag") and self.filename.endswith(("che",'bot')):
+ elif name.lower().startswith("flag") and self.filename.endswith(("che", "bot")):
return {
**common_attrs,
"flag_values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
"flag_meanings": " ".join(
- [
+ [
"acceptable_measurement_with_no_header_comment",
"sample_drawn_from_water_bottle_but_not_analyzed_sample_lost",
"acceptable_measurement_with_header_comment",
@@ -827,14 +826,18 @@ def match_term(reference, value):
name,
units,
)
- self.vocabulary_attributes += [[{"long_name": name, "units": units,"ios_name": name}]]
+ self.vocabulary_attributes += [
+ [{"long_name": name, "units": units, "ios_name": name}]
+ ]
continue
# Consider only the vocabularies specific to this ios_file_extension group
matched_vocab = matched_vocab.query(
f'ios_file_extension == "{matched_vocab.index.get_level_values(0)[0]}"'
)
- self.vocabulary_attributes += [matched_vocab[vocabulary_attributes].to_dict('records')]
+ self.vocabulary_attributes += [
+ matched_vocab[vocabulary_attributes].to_dict("records")
+ ]
def fix_variable_names(self):
# get variable name list
diff --git a/ocean_data_parser/vocabularies/load.py b/ocean_data_parser/vocabularies/load.py
index 136d7fa9..c410c943 100644
--- a/ocean_data_parser/vocabularies/load.py
+++ b/ocean_data_parser/vocabularies/load.py
@@ -48,7 +48,7 @@ def dfo_ios_vocabulary() -> pd.DataFrame:
na_values={"accepted_units": [""]},
keep_default_na=False,
).replace({"": np.nan})
- df = df.fillna({"rename":df['ios_name']})
+ df = df.fillna({"rename": df["ios_name"]})
return df