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