From bb36082bcdf8baaf3d7d7e55f7a5ae5c297e27a6 Mon Sep 17 00:00:00 2001 From: Jacques Grelet <jacques.grelet@ird.fr> Date: Wed, 26 Dec 2007 17:48:37 +0000 Subject: [PATCH] =?UTF-8?q?Ajout=20des=20classes:=20hashtable=20tsg=5Fnc.m?= =?UTF-8?q?=20utilis=C3=A9es=20pour=20la=20gestion=20des=20attributs=20glo?= =?UTF-8?q?baux=20et=20variables=20netcdf=20tsg=5Fnc=20est=20utilis=C3=A9e?= =?UTF-8?q?=20=C3=A9galement=20pour=20la=20gestion=20dynamique=20du=20masq?= =?UTF-8?q?ue=20de=20l'entete=20des=20attributs=20globaux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- @hashtable/Contents.m | 14 ++++++ @hashtable/clear.m | 9 ++++ @hashtable/display.m | 24 +++++++++ @hashtable/elements.m | 13 +++++ @hashtable/get.m | 12 +++++ @hashtable/hashtable.m | 21 ++++++++ @hashtable/isempty.m | 8 +++ @hashtable/iskey.m | 9 ++++ @hashtable/keys.m | 8 +++ @hashtable/put.m | 18 +++++++ @hashtable/remove.m | 11 +++++ @hashtable/values.m | 8 +++ @tsg_nc/display.m | 8 +++ @tsg_nc/get.m | 52 ++++++++++++++++++++ @tsg_nc/get_fieldnames.m | 18 +++++++ @tsg_nc/keys.m | 10 ++++ @tsg_nc/set.m | 7 +++ @tsg_nc/tsg_nc.m | 103 +++++++++++++++++++++++++++++++++++++++ @tsg_nc/tsg_ncattr.csv | 34 +++++++++++++ @tsg_nc/tsg_ncvar.csv | 66 +++++++++++++++++++++++++ 20 files changed, 453 insertions(+) create mode 100644 @hashtable/Contents.m create mode 100644 @hashtable/clear.m create mode 100644 @hashtable/display.m create mode 100644 @hashtable/elements.m create mode 100644 @hashtable/get.m create mode 100644 @hashtable/hashtable.m create mode 100644 @hashtable/isempty.m create mode 100644 @hashtable/iskey.m create mode 100644 @hashtable/keys.m create mode 100644 @hashtable/put.m create mode 100644 @hashtable/remove.m create mode 100644 @hashtable/values.m create mode 100644 @tsg_nc/display.m create mode 100644 @tsg_nc/get.m create mode 100644 @tsg_nc/get_fieldnames.m create mode 100644 @tsg_nc/keys.m create mode 100644 @tsg_nc/set.m create mode 100644 @tsg_nc/tsg_nc.m create mode 100644 @tsg_nc/tsg_ncattr.csv create mode 100644 @tsg_nc/tsg_ncvar.csv diff --git a/@hashtable/Contents.m b/@hashtable/Contents.m new file mode 100644 index 0000000..7583c8d --- /dev/null +++ b/@hashtable/Contents.m @@ -0,0 +1,14 @@ +% @HASHTABLE +% +% Files +% clear - Clear hash table +% display - Display a hash table object +% elements - Get all hash table elements +% get - Get data from the hash table +% hashtable - Constructor for HashTable class +% isempty - Check to see if the hash is empty +% iskey - Check to see if the hash is currently using a key +% keys - Get all the keys currently being used in the hash +% put - Put data in the hash table +% remove - Remove element from the hash +% values - Get all data contained in the hash table diff --git a/@hashtable/clear.m b/@hashtable/clear.m new file mode 100644 index 0000000..0db4b37 --- /dev/null +++ b/@hashtable/clear.m @@ -0,0 +1,9 @@ +function hash = clear(hash) +%CLEAR Clear hash table +% hash = clear(hash) + +% Copyright (c) 2004 Matthew Krauski (mkrauski@uci.edu), CNLM, UC Irvine + +hash.keys = {}; +hash.data = {}; + diff --git a/@hashtable/display.m b/@hashtable/display.m new file mode 100644 index 0000000..b956331 --- /dev/null +++ b/@hashtable/display.m @@ -0,0 +1,24 @@ +function display(hash) +%DISPLAY Display a hash table object +% display(hash) + +% Copyright (c) 2004 Matthew Krauski (mkrauski@uci.edu), CNLM, UC Irvine + +%isLoose = strcmp(get(0,'FormatSpacing'),'loose'); +isLoose = 0; + +if(length(inputname(1)) ~= 0) + if isLoose, disp(' '), end + disp( sprintf('%s =', inputname(1)) ); +end + +if isLoose, disp(' '), end + +%fprintf('\thashtable\n' ); +if isempty(hash) + fprintf('\tEmpty\n\n' ); +else +% disp( sprintf('\tElements:') ); + display( elements(hash) ); +end + diff --git a/@hashtable/elements.m b/@hashtable/elements.m new file mode 100644 index 0000000..d610e8b --- /dev/null +++ b/@hashtable/elements.m @@ -0,0 +1,13 @@ +function data = elements(hash) +%ELEMENTS Get all hash table elements +% data = values(hash) +% +% Get all hash table elements in a N-by-2 cell matrix where N is the number of +% elements, first column contains the element keys, and second column contains +% the element values. + +% Copyright (c) 2004 Matthew Krauski (mkrauski@uci.edu), CNLM, UC Irvine + +data(:,1) = hash.keys; +data(:,2) = hash.data; + diff --git a/@hashtable/get.m b/@hashtable/get.m new file mode 100644 index 0000000..3b86f76 --- /dev/null +++ b/@hashtable/get.m @@ -0,0 +1,12 @@ +function data = get(hash,key) +%GET Get data from the hash table +% data = get(hash,key) + +% Copyright (c) 2004 Matthew Krauski (mkrauski@uci.edu), CNLM, UC Irvine + +index = find(strcmp(hash.keys,key)); +if isempty(index) + data = {}; +else + data = hash.data{index}; +end diff --git a/@hashtable/hashtable.m b/@hashtable/hashtable.m new file mode 100644 index 0000000..7e4a8d0 --- /dev/null +++ b/@hashtable/hashtable.m @@ -0,0 +1,21 @@ +function hash = hashtable(varargin) +%HASHTABLE Constructor for hashtable class +% hash = hashtable - Default constructor, empty hash table +% hash = hashtable(keys,data) - keys and data are N-by-1 lists + +% Copyright (c) 2004 Matthew Krauski (mkrauski@uci.edu), CNLM, UC Irvine + +if nargin == 1 && isa(varargin{1},'hashtable') + hash = varargin{1}; + return; +elseif nargin == 0 + h.keys = {}; + h.data = {}; +elseif nargin == 2 + h.keys = varargin{1}; + h.data = varargin{2}; +else + error('hashtable:hashtable', 'Invalid arguments.'); +end + +hash = class(h,'hashtable'); diff --git a/@hashtable/isempty.m b/@hashtable/isempty.m new file mode 100644 index 0000000..f3a39e7 --- /dev/null +++ b/@hashtable/isempty.m @@ -0,0 +1,8 @@ +function bool = isempty(hash) +%ISEMPTY Check to see if the hash is empty +% bool = isempty(hash) + +% Copyright (c) 2004 Matthew Krauski (mkrauski@uci.edu), CNLM, UC Irvine + +bool = isempty(hash.keys); + diff --git a/@hashtable/iskey.m b/@hashtable/iskey.m new file mode 100644 index 0000000..0431a80 --- /dev/null +++ b/@hashtable/iskey.m @@ -0,0 +1,9 @@ +function bool = iskey(hash,key) +%ISKEY Check to see if the hash is currently using a key +% bool = iskey(hash,key) + +% Copyright (c) 2004 Matthew Krauski (mkrauski@uci.edu), CNLM, UC Irvine + +index = find(strcmp(hash.keys,key)); +bool = ~isempty(index); + diff --git a/@hashtable/keys.m b/@hashtable/keys.m new file mode 100644 index 0000000..ddadf5e --- /dev/null +++ b/@hashtable/keys.m @@ -0,0 +1,8 @@ +function keys = keys(hash) +%KEYS Get all the keys currently being used in the hash +% keys = keys(hash) + +% Copyright (c) 2004 Matthew Krauski (mkrauski@uci.edu), CNLM, UC Irvine + +keys = hash.keys; + diff --git a/@hashtable/put.m b/@hashtable/put.m new file mode 100644 index 0000000..f08adfc --- /dev/null +++ b/@hashtable/put.m @@ -0,0 +1,18 @@ +function hash = put(hash,key,data) +%PUT Put data in the hash table +% hash = put(hash,key,data) + +% Copyright (c) 2004 Matthew Krauski (mkrauski@uci.edu), CNLM, UC Irvine + +index = find(strcmp(hash.keys,key)); +if isempty(index) + if isempty(hash.keys) + hash.keys{1} = key; + hash.data{1} = data; + else + hash.keys{end+1} = key; + hash.data{end+1} = data; + end +else + hash.data{index} = data; +end diff --git a/@hashtable/remove.m b/@hashtable/remove.m new file mode 100644 index 0000000..fa92ba4 --- /dev/null +++ b/@hashtable/remove.m @@ -0,0 +1,11 @@ +function hash = remove(hash,key) +%REMOVE Remove element from the hash +% hash = remove(hash,key) + +% Copyright (c) 2004 Matthew Krauski (mkrauski@uci.edu), CNLM, UC Irvine + +index = find(strcmp(hash.keys,key)); +if ~isempty(index) + hash.keys = {hash.keys{1:index-1} hash.keys{index+1:end}}; + hash.data = {hash.data{1:index-1} hash.data{index+1:end}}; +end diff --git a/@hashtable/values.m b/@hashtable/values.m new file mode 100644 index 0000000..c45cd44 --- /dev/null +++ b/@hashtable/values.m @@ -0,0 +1,8 @@ +function data = values(hash) +%VALUES Get all data contained in the hash table +% data = values(hash) + +% Copyright (c) 2004 Matthew Krauski (mkrauski@uci.edu), CNLM, UC Irvine + +data = hash.data; + diff --git a/@tsg_nc/display.m b/@tsg_nc/display.m new file mode 100644 index 0000000..2f733ac --- /dev/null +++ b/@tsg_nc/display.m @@ -0,0 +1,8 @@ +function display(self) + +% tsg_ncvar/display + +% $Id$ + +disp(struct(self)); + diff --git a/@tsg_nc/get.m b/@tsg_nc/get.m new file mode 100644 index 0000000..c950fc8 --- /dev/null +++ b/@tsg_nc/get.m @@ -0,0 +1,52 @@ +function result = get( self, varargin ) + +% tsg_ncvar/get -- get structure of "tsg_ncvar" object. +% +% Input +% ----- +% self ........... instance of 'tsg_ncvar' object +% key ........... GF3 code +% member ........... attribute member +% +% Output +% ------ +% result ........... structure for the key (hastable) +% +% if key dosn't exist, return empty struct + +% $Id$ + +% Test variable argument list +% --------------------------- +switch (nargin) + + % Return the list of key + % ---------------------- + case 1 + result = keys(self); + + % Return for a valid key the hash (structure) + % ------------------------------------------- + case 2 + if ~isempty( find(strcmp(keys(self), varargin{1}))) + result = get(self.hashtable, varargin{1}); + else + result = {}; + end + + % Return the hash member value + % ---------------------------- + case 3 + % call method get for an hashtable object + result = get(self, varargin{1}); + % test if third arg is a valid member of the struct in the hash + if ~isempty( find(strcmp(keys(self), varargin{1})) ) && ... + isfield(result,varargin{2}) + result = result.(varargin{2}); + else + result = {}; + end + + otherwise + error('Wrong input args'); +end diff --git a/@tsg_nc/get_fieldnames.m b/@tsg_nc/get_fieldnames.m new file mode 100644 index 0000000..0349aab --- /dev/null +++ b/@tsg_nc/get_fieldnames.m @@ -0,0 +1,18 @@ +function result = get_fieldnames( self ) + +% tsg_ncvar/get_fieldnames -- get internal fieldnames of "tsg_ncvar" object. +% +% Input +% ----- +% self ........... an instance of 'tsg_ncvar' object +% +% Output +% ------ +% result ........... cell with fieldnames + +% $Id$ + +theStruc = get(self,'DAYD'); +result = fieldnames(theStruc); + + diff --git a/@tsg_nc/keys.m b/@tsg_nc/keys.m new file mode 100644 index 0000000..2d86898 --- /dev/null +++ b/@tsg_nc/keys.m @@ -0,0 +1,10 @@ +function result = keys(self) + +% tsg_ncvar/keys -- Get all the keys currently being used in the internal +% tsg_ncvar hash +% result = keys(self) + +% $Id: keys.m 54 2006-03-03 13:44:00Z jgrelet $ + +result = keys(self.hashtable); + diff --git a/@tsg_nc/set.m b/@tsg_nc/set.m new file mode 100644 index 0000000..67b13aa --- /dev/null +++ b/@tsg_nc/set.m @@ -0,0 +1,7 @@ +function self = set( self, varargin ) + +% tsg_ncvar/set -- set new pair key/value for "tsg_ncvar" object. +% +% not implemented yet + +% $Id£ diff --git a/@tsg_nc/tsg_nc.m b/@tsg_nc/tsg_nc.m new file mode 100644 index 0000000..2d38954 --- /dev/null +++ b/@tsg_nc/tsg_nc.m @@ -0,0 +1,103 @@ +function ncv = tsg_ncr( varargin ) + +% tsg_nc/tsg_nr -- Constructor for "tsg_nc" class. +% tsg_nc(varargin) constructs a 'tsg_nc' object from +% supplied csv 'filename'. +% +% Usage: nca = tsg_ncvar( file ) +% +% Input +% ------- +% filename ........... csv data filename +% +% Output +% -------- +% ncv ........... instance of tsg_ncvar object +% +% See also: methods('tsg_ncvar'). +% +% $Id: roscop.m 129 2007-03-16 08:56:31Z jgrelet $ + +% check varargin +% -------------- +switch nargin + case 0 % create default object + error('csv filename not supplied'); + case 1 + if( isa(varargin{1}, 'char')) + file = varargin{1}; + else + error('Wrong input argument'); + end + otherwise + error('Wrong number of input arguments'); +end + +% check csv file validity +% ----------------------- +fid = fopen( file, 'r' ); +if fid == -1 + error(['The specified data file ''%s'' does not exist ...\n' ... + 'or is not in the directory which is on the MATLAB search path'],... + file); +end + +% create hashtable +% ---------------- +data = hashtable; + +% read csv file +% ------------- +header = textscan(fid,'%s \n %s [^\n]','headerlines', 3 ); +members = textscan(header{1}{1},'%s','delimiter',';'); +types = textscan(header{2}{1},'%s','delimiter',';'); +values = textscan(fid,'%s','delimiter',';'); + +% populate private structure ncv +% ------------------------------ +ncv.file = which( file ); +ncv.size = numel(values{1}) / numel(members{1}); +ncv.member = numel(members{1}); + +% loop +% ---- +for i=1:ncv.size + for j=2:ncv.member + member = genvarname(members{1}{j}); + type = genvarname(types{1}{j}); + value = values{1}{j + ncv.member * (i -1)}; + key = values{1}{1 + ncv.member * (i -1)}; + + % dynamically populate structure 'theStruct' + % ------------------------------------------ + if isempty(values{1}{j + ncv.member * (i -1)}) + theStruct.(member) = []; + else + switch type + case 'char' + theStruct.(member) = value; + case {'integer','double'} + theStruct.(member) = str2double(value); + otherwise + theStruct.(member) = value; + end + end + end + + % populate the hashtable + % ---------------------- + data = put(data, key, theStruct); + + % initialize internal structure + % ----------------------------- + theStruct = []; + +end + +% remove first member in structure, the key +% ----------------------------------------- +ncv.member = ncv.member -1; + +% bless tsg_ncvar class and inherite from hashtable data +% ------------------------------------------------------ +ncv = class(ncv, 'tsg_nc', data ); diff --git a/@tsg_nc/tsg_ncattr.csv b/@tsg_nc/tsg_ncattr.csv new file mode 100644 index 0000000..479b3e5 --- /dev/null +++ b/@tsg_nc/tsg_ncattr.csv @@ -0,0 +1,34 @@ +% definition +% $Id$ +% +code;name;uicontrolType;string;value;length;height;horizontalAlignment;comment; +char;char;char;char;integer;integer;integer;char;char; +PLATFORM_NAME;PLATFORM NAME:;edit;;;;;right;Ship name; +SHIP_CALL_SIGN;SHIP CALL SIGN:;edit;;;;;right;Ship call sign; +SHIP_MMSI;SHIP MMSI:;edit;;;;;right;Ship MMSI (ASN) number; +TSG_TYPE;TSG TYPE:;popupmenu;SBE21|SBE45|UNKNO;1;.1;.015;right;Thermosalinograph model number; +TSG_NUMBER;TSG NUMBER:;edit;;;;;right;TSG serial number; +TINT_TYPE;TINT TYPE:;popupmenu;SBE38|SBE3S|UNKNO;1;.1;.015;right;External sea surface temperature sensor; +TINT_NUMBER;TINT NUMBER:;edit;;;;;right;External temperature sensor serial number; +DATA_TYPE;DATA TYPE:;edit;;;;;right;Describe data type contained in file, eg: Thermosilinometer data; +DATA_MODE;DATA MODE:;popupmenu;Delayed mode data|Real time data;1;;;right;Indicate if the file contains real time or delayed mode data; +SAMPLING_PERIOD;SAMPLING PERIOD:;edit;300;;.05;;right;Sampling period in seconds: 6 to 3600; +PROCESSING_STATUS;PROCESSING STATUS:;edit;;;;;right;State of processing; +DATE_START;DATE_START:;edit;;;;;right;Date of first measurements; +DATE_END;DATE END:;edit;;;;;right;Date of last measurements; +SOUTH_LATX;SOUTH LATX:;edit;;;;;right;South limit of measurements; +NORTH_LATX;NORTH LATX:;edit;;;;;right;North limit of measurements; +WEST_LONX;WEST LONX:;edit;;;;;right;West limit of measurements; +EAST_LONX;EAST LONX:;edit;;;;;right;East limit of measurements; +FORMAT_VERSION;FORMAT VERSION:;edit;1.4;;;;right;File format version; +DATE_CREATION;DATE CREATION:;edit;;;;;right;Date and time of file creation, format: YYYYMMDDHHMISS; +DATE_UPDATE;DATE UPDATE:;edit;;;;;right;Date and time of file update, format: YYYYMMDDHHMISS; +DATA_RESTRICTIONS;DATA RESTRICTIONS:;edit;NONE;;;;right;Restriction on use for these data; +CITATION;CITATION:;edit;;;;;right;This citation should be used for publications; +COMMENT;COMMENT:;edit;;;;;right;; +PROJECT_NAME;PROJECT NAME:;edit;;;;;right;Name of project wich operates the TSG line, ex: ORE-SSS; +PI_NAME;PI NAME:;edit;;;;;right;Name of principal investigator in charge of the TSG, ex: IRD or GENAVIR; +DATA_CENTRE;DATA CENTRE:;edit;;;;;right;Code for data center (2 char); +DATA_ACQUISITION;DATA ACQUISITION:;edit;;;;;right;Acquisition data centre, ex: SHOM,IRD,GENAVIR,CNRS,...; +PROCESSING_CENTRE;PROCESSING CENTRE:;edit;;;;;right;Processing data centre, ex: ORE-SSS,CORIOLIS,SISMER,...; +PROCESSING_STATES;PROCESSING STATES:;edit;;;;;right;Need to be defined, IRD action,...; diff --git a/@tsg_nc/tsg_ncvar.csv b/@tsg_nc/tsg_ncvar.csv new file mode 100644 index 0000000..509ba34 --- /dev/null +++ b/@tsg_nc/tsg_ncvar.csv @@ -0,0 +1,66 @@ +% tsg_ncvar.csv: definition (14 separators ; actually) +% $Id$ +% +code;dimension;long_name;standard_name;units;conventions;valid_min;valid_max;format;FillValue;epic_code;axis;resolution;comment; +char;char;char;char;char;char;integer;integer;char;double;integer;char;double;char; +REFERENCE_DATE_TIME;STRING14;;;;yyyymmddhhmmss;;;;;;;;Reference date for julian days origin; +DATE;DAYD,STRING14;DATE OF MAIN INSTRUMENT MEASUREMENT;;;yyyymmddhhmmss;;;;;;;;This is the original data describing the date, it must not be lost; +DATE_WS;DAYD,STRING14;DATE OF WATER SAMPLE;;;yyyymmddhhmmss;;;;;;;;This is the original data describing the date, it must not be lost; +DATE_EXT;DAYD,STRING14;DATE OF EACH EXTERNAL DATA MEASUREMENT;;;yyyymmddhhmmss;;;;;;;;This is the original data describing the date, it must not be lost; +DAYD;DAYD;DECIMAL JULIAN DAY (UTC) OF EACH MEASUREMENT;time;days since 1950/01/01 00:00:00;Relative julian days with decimal part (as parts of the day);0.0;36600.0;%9.5lf;9999999.;601;t;;Julian day of the measurement; +DAYD_WS;DAYD_WS;DECIMAL JULIAN DAY (UTC) OF EACH WATER SAMPLE;time;days since 1950/01/01 00:00:00;Relative julian days with decimal part (as parts of the day);0.0;36600.0;%9.5lf;9999999.;601;t;;Julian day of the measurement; +DAYD_EXT;DAYD_EXT;DECIMAL JULIAN DAY (UTC) OF EXTERNAL DATA MEASUREMENT;time;Days since 1950/01/01 00:00:00;Relative julian days with decimal part (as parts of the day);0.0;36600.0;%9.5lf;9999999.;601;t;;Julian day of the measurement; +LATX;DAYD;LATITUDE OF EACH MEASUREMENT;latitude;degree_north (decimal);;-90;90;%+8.4lf;999999.;500;;;Latitude of the measurement; +LATX_WS;DAYD_WS;LATITUDE OF WATER SAMPLE;latitude;degree_north (decimal);;-90;90;%+8.4lf;999999.;500;;;Latitude of the measurement; +LATX_EXT;DAYD_EXT;LATITUDE OF EACH EXTERNAL DATA MEASUREMENT;latitude;degree_north (decimal);;-90;90;%+8.4lf;999999.;500;;;Latitude of the measurement; +LONX;DAYD;LONGITUDE OF EACH MEASUREMENT;longitude;degree_east (decimal);;-180;180;%+9.4lf;999999.;501;;;Longitude of the measurement; +LONX_WS;DAYD_WS;LONGITUDE OF WATER SAMPLE;longitude;degree_east (decimal);;-180;180;%+9.4lf;999999.;501;;;Longitude of the measurement; +LONX_EXT;DAYD_EXT;LONGITUDE OF EACH EXTERNAL DATA MEASUREMENT;longitude;degree_east (decimal);;-180;180;%+9.4lf;999999.;501;;;Longitude of the measurement; +SPDC;DAYD;SHIP SPEED COMPUTED FROM NAVIGATION;speed;knots;;0;50;%6.3lf;99999.;;;0.1;Ship speed from GPS (SOG). If SOG not available, derived from last position; +PRES;DAYD;SEA PRESSURE IN TSG;pressure;decibar=10000 pascals;;0;10;%6.1lf;99999.;;;0.1;Pressure inside TSG, this is an indication that pump is working properly; +CNDC;DAYD;ELECTRICAL CONDUCTIVITY;conductivity;mho/meter;;0;7;%5.3lf;99999.;;;0.0001;Conductivity measured by TSG. This data may have been reduced with a media (recommended) or a mean; +CNDC_STD;DAYD;CONDUCTIVITY STANDARD DEVIATION;conductivity;mho/meter;;0;7;%5.3lf;99999.;;;0.0001;Standard deviation of conductivity measured by TSG (CNDC); +CNDC_CAL;DAYD;CONDUCTIVITY CALIBRATED;conductivity calibrated;mho/meter;;0;7;%5.3lf;99999.;;;0.0001;Conductivity calibrated using linearization coefficient; +CNDC_CALCOEF;NCOEF_CAL;CONDUCTIVITY CALIBRATION COEFFICIENTS;;;a,b,c,d,m;;;;99999.;;;;Conductivity linear drift correction coefficient; +CNDC_LINCOEF;NCOEF_LIN;CONDUCTIVITY LINEAR DRIFT CORRECTION COEFFICIENTS;;;a,b;;;;99999.;;;;Conductivity Ocean temperature; +SSJT;DAYD;WATER JACKET TEMPERATURE;temperature in TSG;Celsius degree;;-1.5;38;%6.3lf;99.999;;;0.001;Temperature inside TSG (Water Jacket Temperature). Warning, this is not ocean SST temperature. Used for salinity computation; +SSJT_STD;DAYD;WATER JACKET TEMPERATURE STANDARD DEVIATION;temperature std;Celsius degree;;-1.5;38;%6.3lf;99.999;;;0.001;SSJT, Temperature inside TSG standard deviation for data wich have been reduced (with a mean or median); +SSJT_CAL;DAYD;WATER JACKET TEMPERATURE CALIBRATED;temperature cal;Celsius degree;;-1.5;38;%6.3lf;99.999;;;0.001;SSJT, Temperature inside TSG calibrated using linearization coefficient; +SSJT_CALCOEF;NCOEF_CAL;TEMPERATURE CALIBRATION COEFFICIENTS;;;a,b,c,d,f0;;;;99999.;;;;Temperature calibrated using linearization coefficient; +SSJT_LINCOEF;NCOEF_LIN;TEMPERATURE LINEAR DRIFT CORRECTION COEFFICIENTS;;;a,b;;;;99999.;;;;Temperature linear drift correction coefficient; +SSJT_ADJUSTED;DAYD;WATER JACKET TEMPERATURE ADJUSTED;temperature in TSG adjusted;Celsius degree;;-1.5;38;%6.3lf;99.999;;;0.001;Adjusted SSJT with external data (CTD,ARGO,XBT,...); +SSJT_ADJUSTED_ERROR;DAYD;ERROR ON ADJUSTED WATER JACKET TEMPERATURE;error temperature in TSG adjusted;Celsius degree;;-1.5;38;%6.3lf;99.999;;;0.001;Quality flag applied on adjusted SSJT; +SSJT_ADJUSTED_QC;DAYD;WATER JACKET TEMPERATURE QUALITY FLAG;quality flag applied on temperature in TSG adjusted;Celsius degree;;-1.5;38;%6.3lf;99.999;;;0.001;Quality flag applied on adjusted SSJT; +SSJT_ADJUSTED_HIST;DAYD;ADJUSTED WATER JACKET TEMPERATURE PROCESSING HISTORY;temperature in TSG adjusted processing history;Celsius degree;;-1.5;38;%6.3lf;99.999;;;0.001;; +SSPS;DAYD;SEA SURFACE PRACTICAL SALINITY;surface salinity;P.S.U.;;0;40;%6.3lf;99.999;;;0.001;Ocean salinity deduced fron conductivity and jacket TSG temperature; +SSPS_QC;DAYD;SEA SURFACE SALINITY QUALITY FLAG;surface salinity quality;;;0;9;%1d;0;;;;Quality flag applied on salinity values; +SSPS_CAL;DAYD;SEA SURFACE SALINITY CALIBRATED;surface salinity calibrated;P.S.U.;;0;40;%6.3lf;99.999;;;;Calibrated Ocean salinity deduced fron conductivity and jacket tsg temperature; +SSPS_ADJUSTED;DAYD;SEA SURFACE SALINITY ADJUSTED;surface salinity adjusted;P.S.U.;;0;40;%6.3lf;99.999;;;0.001;Adjusted Ocean salinity deduced fron conductivity and jacket tsg temperature; +SSPS_ADJUSTED_ERROR;DAYD;ERROR ON SEA SURFACE SALINITY ADJUSTED;error surface salinity adjusted;P.S.U.;;0;40;%6.3lf;99.999;;;;Error on adjusted Ocean salinity deduced fron conductivity and jacket tsg temperature; +SSPS_ADJUSTED_QC;DAYD;ERROR ON SEA SURFACE SALINITY ADJUSTED QUALITY FLAG;error surface salinity adjusted quality;;;0;9;%1d;0;;;;Quality flag applied on adjusted Ocean salinity deduced fron conductivity and jacket tsg temperature; +SSPS_ADJUSTED_HIST;DAYD;ADJUSTED SEA SURFACE SALINITY PROCESSING HISTORY;surface salinity adjusted processing history;;;;;;;;;;; +SSPS_DEPH;N1;NOMINAL DEPTH OF WATER INTAKE FOR SALINITY MEASUREMENT;depth surface salinity;meter;;0;100;%6.3lf;99999.;;;;; +SSPS_DEPH_MIN;N1;MINIMUM DEPTH OF WATER INTAKE FOR SALINITY MEASUREMENT;min depth surface salinity;meter;;0;100;%6.3lf;99999.;;;;; +SSPS_DEPH_MAX;N1;MAXIMUM DEPTH OF WATER INTAKE FOR SALINITY MEASUREMENT;max depth surface salinity;meter;;0;100;%6.3lf;99999.;;;;; +SSPS_WS;DAYD_WS;SEA SURFACE PRACTICAL SALINIT FROM WATER SAMPLE;surface salinity;P.S.U.;;0;40;%6.3lf;99.999;;;0.001;Sea surface salinity from water sample; +SSPS_WS_QC;DAYD_WS;SEA SURFACE SALINITY QUALITY FLAG;surface salinity quality;;;0;9;%1d;0;;;;Quality flag applied on salinity values from water sample; +SSPS_WS_ANALDATE;DAYD_WS;DATE OF WATER SAMPLE SURFACE SALINITY ANALYSIS;;;yyyymmddhhmmss;;;;;;;;Date of sea surface salinity water sample analysis; +SSPS_WS_BOTTLE;DAYD_WS;SEA SURFACE SALINITY BOTTLE NUMBER;;;;;;;;;;;Number of sea surface salinity water sample; +SSTP;DAYD;SEA SURFACE TEMPERATURE;surface temperature;Celsius degree;;-1.5;38;%6.3lf;99.999;;;0.001;Sea Surface Temperature (SST) measure at intake with external instrument. This is ocean SST; +SSTP_QC;DAYD;SEA SURFACE TEMPERATURE QUALITY FLAG;surface temperature quality;;;0;9;%1d;0;;;;Quality flag applied on SST temperature values; +SSTP_CAL;DAYD;SEA SURFACE TEMPERATURE CALIBRATED;surface temperature calibrated;Celsius degree;;-1.5;38;%6.3lf;99.999;;;;Calibrated Ocean temperature; +SSTP_ADJUSTED;DAYD;SEA SURFACE TEMPERATURE ADJUSTED;surface temperature adjusted;Celsius degree;;-1.5;38;%6.3lf;99.999;;;;Adjusted Ocean temperature; +SSTP_ADJUSTED_ERROR;DAYD;ERROR ON SEA SURFACE TEMPERATURE ADJUSTED;error surface temperature adjusted;Celsius degree;;-1.5;38;%6.3lf;99.999;;;;Error on adjusted Ocean temperature; +SSTP_ADJUSTED_QC;DAYD;SEA SURFACE TEMPERATURE ADJUSTED QUALITY FLAG;quality flag on surface temperature adjusted;;;0;9;%1d;0;;;;Quality flag applied on adjusted Ocean temperature; +SSTP_ADJUSTED_HIST;DAYD;ADJUSTED SEA SURFACE TEMPERATURE PROCESSING HISTORY;surface temperature adjusted processing history;;;;;;;;;;; +SSTP_DEPH;N1;NOMINAL DEPTH OF WATER INTAKE FOR TEMPERATURE MEASUREMENT;depth surface temperature;meter;;0;100;%6.3lf;99999;;;;; +SSTP_DEPH_MIN;N1;MINIMUM DEPTH OF WATER INTAKE FOR TEMPERATURE MEASUREMENT;min depth surface temperature;meter;;0;100;%6.3lf;99999;;;;; +SSTP_DEPH_MAX;N1;MAXIMUM DEPTH OF WATER INTAKE FOR TEMPERATURE MEASUREMENT;max depth surface temperature;meter;;0;100;%6.3lf;99999;;;;; +SSTP_CALCOEF;NCOEF_CAL;TEMPERATURE CALIBRATION COEFFICIENTS;;;a,b,c,d,f0;;;;99999.;;;;Temperature calibrated using linearization coefficient; +SSTP_LINCOEF;NCOEF_LIN;TEMPERATURE LINEAR DRIFT CORRECTION COEFFICIENTS;;;a,b;;;;99999.;;;;Temperature linear drift correction coefficient; +SSTP_EXT;DAYD_EXT;SEA SURFACE TEMPERATURE FROM EXTERNAL DATA;surface temperature;Celsius degree;;-1.5;38;%6.3lf;99.999;;;0.001;Sea Surface Temperature (SST) from external data instrument; +SSTP_EXT_QC;DAYD_EXT;SEA SURFACE TEMPERATURE QUALITY FLAG;surface temperature quality;;;0;9;%1d;0;;;;Quality flag applied on external temperature data values; +SSTP_EXT_TYPE;DAYD_EXT;SEA SURFACE TEMPERATURE EXTERNAL INSTRUMENT TYPE;surface temperature type instrument;;;;;;;;;;CTD,ARGO,XBT,...; +SSPS_EXT;DAYD_EXT;SEA SURFACE PRACTICAL SALINIT FROM WATER SAMPLE;surface salinity;P.S.U.;;0;40;%6.3lf;99.999;;;0.001;Sea surface salinity from external instrument; +SSPS_EXT_QC;DAYD_EXT;SEA SURFACE SALINITY QUALITY FLAG;surface salinity quality;;;0;9;%1d;0;;;;Quality flag applied on salinity values from external instrument; +SSPS_EXT_TYPE;DAYD_EXT;SEA SURFACE SALINITY EXTERNAL INSTRUMENT TYPE;surface salinity type instrument;;;;;;;;;;CTD,ARGO,XBT,...; -- GitLab