example_scripts/convert_lilas.py

Wed, 28 Nov 2018 22:27:28 +0200

author
Iannis <ioannis@inoe.ro>
date
Wed, 28 Nov 2018 22:27:28 +0200
changeset 168
9fed2446a59f
parent 92
6d26002aaeed
permissions
-rw-r--r--

First attempt for python 3 compatibility.

ioannis@48 1 """ Sample script to convert licel files to SCC netcdf format.
ioannis@48 2
ioannis@48 3 The script assumes the following things:
ioannis@48 4
ioannis@48 5 1. You have already installed the atmospheric_lidar module (e.g. using pip).
ioannis@48 6 2. You have create a class in a file "lilas" describing your system (described the readme file).
ioannis@48 7 If you want to use it for a different system you need to change the script to use your own class
ioannis@48 8
ioannis@48 9 Run the script using: python convert_lilas.py <your options>
ioannis@48 10
ioannis@48 11 Examples
ioannis@48 12 --------
ioannis@48 13 # This will read all files starting with "l" from "my_dir".
ioannis@48 14 # It will guess the measurement ID based on the date of the files, and will assume measurement number 00.
ioannis@48 15 # For example, the new measurment id could be 20120101mb00
ioannis@48 16 python convert_lilas.py my_dir l*.
ioannis@48 17
ioannis@48 18 # This will use the measurement id you defined.
ioannis@48 19 python convert_lilas.py my_dir l*. -m 20120204mb32 # It will create the file 20120204mb32.nc
ioannis@48 20
ioannis@48 21 Help string
ioannis@48 22 -----------
ioannis@48 23 # To get this, run: python convert_lilas.py -h
ioannis@48 24 usage: convert_lilas.py [-h] [-m MEASUREMENT_ID] [-n MEASUREMENT_NUMBER]
ioannis@48 25 [directory] [searchstring]
ioannis@48 26
ioannis@48 27 positional arguments:
ioannis@48 28 directory Directory with licel files.
ioannis@48 29 searchstring Processing system id.
ioannis@48 30
ioannis@48 31 optional arguments:
ioannis@48 32 -h, --help show this help message and exit
ioannis@48 33 -m MEASUREMENT_ID, --measurement_id MEASUREMENT_ID
ioannis@48 34 The new measurement id
ioannis@48 35 -n MEASUREMENT_NUMBER, --measurement_number MEASUREMENT_NUMBER
ioannis@48 36 The measurement number for the date, if no id is
ioannis@48 37 provided
ioannis@48 38
ioannis@48 39 """
ioannis@48 40
ioannis@48 41 import glob
ioannis@48 42 import os
ioannis@48 43 import argparse
ioannis@48 44
ioannis@48 45 from atmospheric_lidar import lilas
ioannis@48 46
ioannis@48 47
ioannis@48 48 if __name__ == "__main__":
ioannis@48 49
ioannis@48 50 # Define the command line arguments.
ioannis@48 51 parser = argparse.ArgumentParser()
ioannis@48 52 parser.add_argument("directory", nargs='?', help="Directory with licel files.", default='.')
ioannis@48 53 parser.add_argument("searchstring", nargs='?', help="Processing system id.", default="*.*")
ioannis@48 54 parser.add_argument("-m", "--measurement_id", help="The new measurement id", default=None)
ioannis@48 55 parser.add_argument("-n", "--measurement_number", help="The measurement number for the date, if no id is provided", default="00")
ioannis@48 56 args = parser.parse_args()
ioannis@48 57
ioannis@48 58
ioannis@48 59 # Get a list of files to convert
ioannis@48 60 search_str = os.path.join(args.directory, args.searchstring)
ioannis@48 61 files = glob.glob(search_str)
ioannis@48 62
ioannis@48 63 if files:
ioannis@48 64 # Read the files
ioannis@168 65 print("Reading {0} files from {1}".format(len(files), args.directory))
ioannis@48 66 measurement = lilas.LilasLidarMeasurement(files)
ioannis@48 67
ioannis@48 68 #Save the netcdf
ioannis@168 69 print("Saving netcdf.")
ioannis@48 70 measurement.set_measurement_id(args.measurement_id, args.measurement_number)
ulalume3@92 71 measurement.save_as_SCC_netcdf()
ioannis@168 72 print("Created file ", measurement.scc_filename)
ioannis@48 73 else:
ioannis@168 74 print("No files found when searching for ", search_str)

mercurial