Package: pycnv
Python toolbox to read and processSeabirdcnv files.These text files are the standard output files of the Seabird CTD software.The main purpose for pycnv is to create a standardised interface for
slightly differing naming conventions of sensors in the cnv files and
the usage of theGibb Sea Water Toolbox (gsw)for the calculation of all
derived parameters as practical salinity, absolute salinity, potential
and conservative temperature or density. For this purpose pycnv does
only need pressure, conductivity and temperature, all other properties
will be derived from these. Furthermore pycnv will take care for a
different absolute salinity computation in the Baltic Sea, by
automatically checking of a cast was made in the Baltic Sea and
choosing the correct function.InstallThe package was developed using python 3.5+, it might work with
earlier versions, but its not supported. The newestGibb Sea Water Toolbox (gsw)depends also on python 3.5+, pycnv heavily depends on the gsw toolbox. It
therefore strongly recommended to use python 3.5+.UserInstall as a user using pippipinstallpycnvInstall as a user from the repositorypythonsetup.pyinstall--userUninstall as a userpipuninstallpycnvDeveloperInstall as a developerpythonsetup.pydevelop--userUninstall as a userpipuninstallpycnvFEATURESThe data can be accessed by the original names defined in the cnv
file in the named array called data. E.g. header name “# name 11 =
oxsatML/L: Oxygen Saturation, Weiss [ml/l]” can be accessed like
this: data[‘oxsatML/L’].Standard parameters (Temperature, Conductivity, pressure, oxygen)
are mapped to standard names. E.g. data[‘T0’] for the first
temperature sensor and data[‘C1’] for the second conductivity sensor.If the standard parameters (C0,T0,p), (C1,T1,p) are available the
Gibbs Sea water toolbox is used to calculate absolute salinity, SA,
conservative temperature, CT, and potential temperature pt. The data
is stored in a second field called computed data:
cdata. E.g. cdata[‘SA00’]. The code used to compute the properties
areSP=gsw.SP_from_C(data['C'+isen],T,data['p'])SA=gsw.SA_from_SP(SP,data['p'],lon=lon,lat=lat)if(baltic==True):SA=gsw.SA_from_SP_Baltic(SA,lon=lon,lat=lat)PT=gsw.pt0_from_t(SA,T,data['p'])CT=gsw.CT_from_t(SA,T,data['p'])pot_rho=gsw.pot_rho_t_exact(SA,T,data['p'],p_ref)The cnv object provides standard entries for pressure (cnv.p),
temperature (cnv.T), conservative temperature (cnv.CT), practical
salinity (cnv.SP), absolute salinity (cnv.SA), potential density
(cnv.pot_rho), oxygen (cnv.oxy). The units have the extension
_units, i.e. cnv.p_unitsThe module checks if the cast was made in the Baltic Sea, if so, the
modified Gibbs sea water functions are automatically used.The package provides scripts to search a given folder for cnv files
and can create a summary of the folder in a csv format easily
readable by python or office programs. The search can be refined by
a location or a predefined station.Possibility to provide an own function for parsing custom header
information.Plotting of the profile usingmatplotlibUSAGEThe package installs the executables:pycnvpycnv_sum_folderEXAMPLESPlot the absolute salinity and oxygen of a CTD cast:importpycnvimportpylabasplfname='test.cnv'# Some CTD castcnv=pycnv.pycnv(fname)print('Test if we are in the Baltic Sea (usage of different equation of state): '+str(cnv.baltic))print('Position of cast is: Longitude:',cnv.lon,'Latitude:',cnv.lat)print('Time of cast was:',cnv.date)print('Number of sensor entries (len(cnv.data.keys())):',len(cnv.data.keys()))print('Names of sensor entries (cnv.data.keys()):',cnv.data.keys())# Get data of entrykey0=list(cnv.data.keys())[0]data0=cnv.data[key0]# Get derived data:keyd0=list(cnv.cdata.keys())[0]datad0=cnv.cdata[keyd0]# Get unit of derived datadatad0_unit=cnv.cunits[keyd0]# Standard names are mapped to# cnv.p,cnv.CT,cnv.T,cnv.SP,cnv.oxy# units are _unit, e.g. cnv.p_unit# Plot standard parameterspl.figure(1)pl.clf()pl.subplot(1,2,1)pl.plot(cnv.SA,cnv.p)pl.xlabel('Absolute salinity ['+cnv.SA_unit+']')pl.ylabel('Pressure ['+cnv.p_unit+']')pl.gca().invert_yaxis()pl.subplot(1,2,2)pl.plot(cnv.oxy,cnv.p)pl.plot(cnv.cdata['oxy0'],cnv.p)pl.plot(cnv.cdata['oxy1'],cnv.p)pl.xlabel('Oxygen ['+cnv.oxy_unit+']')pl.ylabel('Pressure ['+cnv.p_unit+']')pl.gca().invert_yaxis()pl.show()Lists all predefined stations (in terminal):pycnv_sum_folder--list_stationsMakes a summary of the folder called cnv_data of all casts around
station TF0271 with a radius of 5000 m, prints it to the terminal and
saves it into the file TF271.txt  (in terminal):pycnv_sum_folder--data_foldercnv_data--stationTF02715000-p-fTF271.txtShow and plot conservative temperature, salinity and potential density of a cnv file into a pdf:pycnv--plotshow,save,CT00,SA00,pot_rho00ctd_cast.cnvInterpolate all CTD casts on station TF0271 onto the same pressure axis and make a netCDF out of it:see code pycnv/test/make_netcdf.pyDevices testedSEACAT (SBE16) V4.0gMICROCAT (SBE37)SBE 11plus V 5.1eSBE 11plus V 5.1gSea-Bird SBE 9 Software Version 4.206