Package: atmospheric-lidar
OverviewThis package provides utilities to handle raw (atmospheric) lidar input data.
The main format supported are Licel binary files (including the Raymetrics modified format).The package provides a single command line tool, called licel2scc that can convert Licel binary files to the
EARLINET’s Single Calculus Chain NetCDF format.InstallationThe easiest way to install this module is from the python package index usingpip:pip install atmospheric-lidarUsing it as a Licel to SCC converterParameter fileBefore converting Licel binary to SCC format, you need to create a file linking Licel channels to SCC channels.As an example, you can start by changing the file “cf_netcdf_parameters.py” that describe such
parameters for the Clermont Ferrand  lidar.Command line interfaceThe usage of thelicel2sccprogram is described below:A program to convert Licel binary files to the SCC NetCDF format.

positional arguments:
  parameter_file        The path to a parameter file linking licel and SCC
                        channels.
  files                 Location of licel files. Use relative path and
                        filename wildcards. (default './*.*')

optional arguments:
  -h, --help            show this help message and exit
  -i, --id_as_name      Use transient digitizer ids as channel names, instead
                        of descriptive names
  -m MEASUREMENT_ID, --measurement_id MEASUREMENT_ID
                        The new measurement id
  -n MEASUREMENT_NUMBER, --measurement_number MEASUREMENT_NUMBER
                        The measurement number for the date from 00 to 99.
                        Used if no id is provided
  -t TEMPERATURE, --temperature TEMPERATURE
                        The temperature (in C) at lidar level, required if
                        using US Standard atmosphere
  -p PRESSURE, --pressure PRESSURE
                        The pressure (in hPa) at lidar level, required if
                        using US Standard atmosphere
  -D DARK_FILES, --dark_files DARK_FILES
                        Location of files containing dark measurements.
                        Use relative path and filename wildcars, see 'files'
                        parameter for example.
  -d, --debug           Print dubuging information.
  -s, --silent          Show only warning and error messages.
  --version             Show current version.Similarly, thelicel2scc-depolprogram can be used to convert
Licel files from Delta45 depolarization calibration measurements:A program to convert Licel binary files from depolarization calibration
measurements to the SCC NetCDF format.

positional arguments:
  parameter_file        The path to a parameter file linking licel and SCC
                        channels.
  plus45_string         Search string for plus 45 degree files (default '*.*')
  minus45_string        Search string for minus 45 degree files (default
                        '*.*')

optional arguments:
  -h, --help            show this help message and exit
  -i, --id_as_name      Use transient digitizer ids as channel names, instead
                        of descriptive names
  -m MEASUREMENT_ID, --measurement_id MEASUREMENT_ID
                        The new measurement id
  -n MEASUREMENT_NUMBER, --measurement_number MEASUREMENT_NUMBER
                        The measurement number for the date from 00 to 99.
                        Used if no id is provided
  -t TEMPERATURE, --temperature TEMPERATURE
                        The temperature (in C) at lidar level, required if
                        using US Standard atmosphere
  -p PRESSURE, --pressure PRESSURE
                        The pressure (in hPa) at lidar level, required if
                        using US Standard atmosphere
  -d, --debug           Print dubuging information.
  -s, --silent          Show only warning and error messages.
  --version             Show current version.Usage in python codeSystem classTo read data from a system, you need create a class that describes you system.
This is very simple if your lidar data are in the Licel format, as you only need to specify
the external file with the extra SCC parameters. You can use as an example the filecf_netcdf_parameters.py:fromlicelimportLicelLidarMeasurementimportcf_netcdf_parametersclassCfLidarMeasurement(LicelLidarMeasurement):extra_netcdf_parameters=cf_netcdf_parametersThis code assumes that thecf_netcdf_parameters.pyis in your python path.Using the classOnce you have made the above setup you can start using it. The best way to understand how
it works is through an interactive shell (I suggest [ipython](http://ipython.org/)).
In the following example I use the cf_raymetrics setup:importglob# This is needed to read a list of filenamesimportcf_lidar# Go to the folder where you files are storedcd/path/to/lidar/files# Read the filenamesfiles=glob.glob("*")# The * reads all the files in the folder.# Read the filesmy_measurement=cf_lidar.CfLidarMeasurement(files)# Now the data have been read, and you have a measurement object to work with:# See what channels are presentprint(my_measurement.channels)# Quicklooks of all the channelsmy_measurements.plot()Converting to SCC formatThere are some extra info you need to put in before converting to SCC format, “Measurement_ID”, “Temperature”, “Pressure”:my_measurement.info["Measurement_ID"]="20101229op00"my_measurement.info["Temperature"]="14"my_measurement.info["Pressure"]="1010"You can use standard values of temperature and pressure by just calling:my_measurement.get_PT()You can specify the standard values by overriding your system’sget_PTmethod:fromlicelimportLicelLidarMeasurementimportcf_netcdf_parametersclassCfLidarMeasurement(LicelLidarMeasurement):extra_netcdf_parameters=cf_netcdf_parametersdefget_PT():self.info['Temperature']=25.0self.info['Pressure']=1020.0If you have an external source of temperature and pressure information (a meteorological station) you can automate
this by reading the appropriate code in theget_PTmethod .After you have used this extra input, you save the file using this command:my_measurement.save_as_SCC_netcdf("filename")where you change the output filename to the filename you want to use.