|
|
#!PYTHONEXE
|
|
|
|
|
|
#$Id: createExpWithFile.py 7045 2019-10-07 19:56:46Z brideout $
|
|
|
|
|
|
usage = """
|
|
|
createExpWithFile.py is a script used to create a new Madrigal experiment
|
|
|
based on an already existing file. Information such as the duration of the
|
|
|
experiment is obtained by analyzing the file.
|
|
|
|
|
|
With Madrigal 3, accepts either old CEDAR database format files, or CEDAR Madrigal
|
|
|
Hdf5 files.
|
|
|
|
|
|
Required arguments:
|
|
|
|
|
|
--madFilename - full path to the complete Madrigal file. Basename will
|
|
|
be maintained. If old CEDAR databse format, .hdf5 will
|
|
|
be appended
|
|
|
|
|
|
--expTitle - experiment title. Use quotes if title contains spaces.
|
|
|
|
|
|
|
|
|
--permission - 0 for public, 1 for private (restricted to certain IP range)
|
|
|
(both the experiment and the file will set)
|
|
|
|
|
|
--fileDesc - file decription
|
|
|
|
|
|
Optional arguments:
|
|
|
|
|
|
--instCode - instrument code. If this argument missing, instrument code is
|
|
|
taken from file, but error is thrown if more than one kinst found.
|
|
|
|
|
|
--category - 1=default, 2=variant, or 3=history If this argument is missing,
|
|
|
1 (default) used.
|
|
|
|
|
|
--dirName - directory name to use for experiment. If not given, the directory
|
|
|
name will be the default name DDmmmYY[optChar]. Cannot contain "/"
|
|
|
|
|
|
--optChar - optional character to be added to experiment directory if no dirName
|
|
|
given. If dirName argument given, this argument ignored. optChar
|
|
|
is used if the default directory name DDmmmYY is used for
|
|
|
more than one experiment created for a given instrument on a given day.
|
|
|
For example, if --optChar=h for a MLH experiment on September 12, 2005,
|
|
|
then the experiment directory created would be experiments/2005/mlh/12sep05h.
|
|
|
|
|
|
--kindat - Set file kindat independently from one (or more) in file
|
|
|
|
|
|
--experimentsDirNum - the number to be appended to the experiments directory, if experiments
|
|
|
directory being used is of the form experiments[0-9]* instead of just
|
|
|
experiments. For example, if experimentsDirNum is 7, then the experiment
|
|
|
would be created in MADROOT/experiments7 instead of MADROOT/experiments.
|
|
|
Default is to create in experiments directory.
|
|
|
|
|
|
--PI - set Principal Investigator for this experiment
|
|
|
|
|
|
--PIEmail - set PI email for this experiment
|
|
|
|
|
|
--fileAnalyst - set file analyst name for this file. This will default to blank.
|
|
|
|
|
|
--fileAnalystEmail - set file analyst email for this file. This will default to blank.
|
|
|
|
|
|
--createCachedText - create a cached text file in overview. Default is no cached file.
|
|
|
Improves speed when text version is downloaded; uses disk space.
|
|
|
|
|
|
--createCachedNetCDF4 - create a cached netCDF4 file in overview. Default is no cached file.
|
|
|
Improves speed when netCDF4 version is downloaded; uses disk space.
|
|
|
"""
|
|
|
|
|
|
import sys
|
|
|
import os, os.path
|
|
|
import getopt
|
|
|
import traceback
|
|
|
|
|
|
import madrigal.admin
|
|
|
|
|
|
|
|
|
|
|
|
# parse command line
|
|
|
arglist = ''
|
|
|
longarglist = ['madFilename=',
|
|
|
'expTitle=',
|
|
|
'permission=',
|
|
|
'fileDesc=',
|
|
|
'instCode=',
|
|
|
'category=',
|
|
|
'dirName=',
|
|
|
'optChar=',
|
|
|
'kindat=',
|
|
|
'experimentsDirNum=',
|
|
|
'PI=',
|
|
|
'PIEmail=',
|
|
|
'fileAnalyst=',
|
|
|
'fileAnalystEmail=',
|
|
|
'createCachedText',
|
|
|
'createCachedNetCDF4']
|
|
|
|
|
|
optlist, args = getopt.getopt(sys.argv[1:], arglist, longarglist)
|
|
|
|
|
|
|
|
|
# set default values
|
|
|
madFilename = None
|
|
|
expTitle = None
|
|
|
permission = None
|
|
|
fileDesc = None
|
|
|
instCode = None
|
|
|
category = 1
|
|
|
dirName = None
|
|
|
kindat = None
|
|
|
optChar = ''
|
|
|
experimentsDirNum = None
|
|
|
PI = ''
|
|
|
PIEmail = ''
|
|
|
fileAnalyst = ''
|
|
|
fileAnalystEmail = ''
|
|
|
createCachedText = False
|
|
|
createCachedNetCDF4 = False
|
|
|
|
|
|
for opt in optlist:
|
|
|
if opt[0] == '--madFilename':
|
|
|
madFilename = opt[1]
|
|
|
elif opt[0] == '--expTitle':
|
|
|
expTitle = opt[1]
|
|
|
elif opt[0] == '--permission':
|
|
|
permission = int(opt[1])
|
|
|
elif opt[0] == '--fileDesc':
|
|
|
fileDesc = opt[1]
|
|
|
elif opt[0] == '--instCode':
|
|
|
instCode = int(opt[1])
|
|
|
elif opt[0] == '--category':
|
|
|
category = opt[1]
|
|
|
elif opt[0] == '--dirName':
|
|
|
dirName = opt[1]
|
|
|
elif opt[0] == '--kindat':
|
|
|
kindat = int(opt[1])
|
|
|
elif opt[0] == '--optChar':
|
|
|
optChar = opt[1]
|
|
|
if len(optChar) != 1:
|
|
|
raise ValueError('optChar argument must contain exactly one character, not %s' % (optChar))
|
|
|
elif opt[0] == '--experimentsDirNum':
|
|
|
experimentsDirNum = int(opt[1])
|
|
|
elif opt[0] == '--PI':
|
|
|
PI = opt[1]
|
|
|
elif opt[0] == '--PIEmail':
|
|
|
PIEmail = opt[1]
|
|
|
elif opt[0] == '--fileAnalyst':
|
|
|
fileAnalyst = opt[1]
|
|
|
elif opt[0] == '--fileAnalystEmail':
|
|
|
fileAnalystEmail = opt[1]
|
|
|
elif opt[0] == '--createCachedText':
|
|
|
createCachedText = True
|
|
|
elif opt[0] == '--createCachedNetCDF4':
|
|
|
createCachedNetCDF4 = True
|
|
|
else:
|
|
|
raise ValueError('Illegal option %s\n%s' % (opt[0], usage))
|
|
|
|
|
|
# check that all required arguments passed in
|
|
|
if madFilename == None:
|
|
|
print('--madFilename argument required - must be full path to madrigal file')
|
|
|
print(usage)
|
|
|
sys.exit(0)
|
|
|
|
|
|
if expTitle == None:
|
|
|
print('--expTitle argument required - must be experiment title')
|
|
|
sys.exit(0)
|
|
|
|
|
|
if permission == None:
|
|
|
print('--permission argument required - must be 0 for public, 1 for private')
|
|
|
sys.exit(0)
|
|
|
|
|
|
if fileDesc == None:
|
|
|
print('--fileDesc argument required - must be file description')
|
|
|
sys.exit(0)
|
|
|
|
|
|
adminObj = madrigal.admin.MadrigalDBAdmin()
|
|
|
|
|
|
expDir = adminObj.createMadrigalExperiment(madFilename,
|
|
|
expTitle,
|
|
|
permission,
|
|
|
fileDesc,
|
|
|
instCode,
|
|
|
category,
|
|
|
optChar,
|
|
|
dirName,
|
|
|
kindat,
|
|
|
experimentsDirNum,
|
|
|
PI=PI,
|
|
|
PIEmail=PIEmail,
|
|
|
fileAnalyst=fileAnalyst,
|
|
|
fileAnalystEmail=fileAnalystEmail,
|
|
|
createCachedText=createCachedText,
|
|
|
createCachedNetCDF4=createCachedNetCDF4,
|
|
|
updateToMad3=True)
|
|
|
|
|
|
print('New experiment successfully created at %s with file %s - run updateMaster to register' % (expDir,
|
|
|
madFilename))
|
|
|
|