#!/usr/bin/env python # encoding: utf-8 import glob import subprocess import sys import os from datetime import datetime # -------------------- def usage(): print "hsrtv.py sat# output-rsync-url input-rsync-urls" # -------------------- WRK=os.getenv('TMP') os.chdir(WRK) print "Working in ", WRK SOFTWARE_DIR='/delta/users/nickb/code/CSPP_UW_HSRTV' LOCAL_SOFTWARE='/scratch/nickb/CSPP_UW_HSRTV' GDAS_DIR='/delta/instruments/GDAS' # -------------------- print "HSRTV processing started at: %s" % (str(datetime.now())) satdict = {"airs" : 1, "iasi" : 2, "cris" : 3,} script = sys.argv[0] sat = sys.argv[1] outdir = sys.argv[2] infiles = sys.argv[3:] if len(sys.argv) < 4: usage() raise RuntimeError if sat not in satdict: print "sat [%s] not recognized" % (sat) raise NotImplementedError satnum = satdict[sat] # Copy CSPP package locally (using all the small ancil files over delta slows it down a lot!) cmd = "mkdir -p %s;\n" % (LOCAL_SOFTWARE) cmd+= "flock -w 900 %s/rsync_lock -c \"rsync -au %s/ %s/\"" % (LOCAL_SOFTWARE, SOFTWARE_DIR, LOCAL_SOFTWARE) print cmd subprocess.check_call(cmd, shell=True) # Make link to input files cmd = "" for inurl in infiles: # cmd+= "find %s -exec cp '{}' . \;\n" % (inurl) # COPY FILES LOCALLY cmd+= "find %s -exec ln -s '{}' \;\n" % (inurl) # LINK TO FILES print cmd subprocess.check_call(cmd, shell=True) # Setup: cmd ='export SOURCE_DIR=%s' % (LOCAL_SOFTWARE) cmd+=';\n export WORK_DIR=%s' % (WRK) cmd+=';\n export LOCAL_ANC_DIR=%s' % (GDAS_DIR) #cmd+=';\n export LOCAL_ANC_DIR=${WORK_DIR}' cmd+=';\n export REMOTE_ANC_DIR=ftp://ftp.ssec.wisc.edu/pub/eosdb/ancillary' #cmd+=';\n export REMOTE_ANC_DIR=ftp://this.domain.does.not.exist.says.nickb/please/timeout' cmd+=';\n export IN_DIR=${WORK_DIR}' cmd+=';\n export OUT_DIR=${WORK_DIR}' # USE ANCIL IN PLACE cmd+=';\n export L2_COEFF_CLR=${SOURCE_DIR}/coeffs/%s/coeffs_clear' % (sat) cmd+=';\n export L2_COEFF_CLD=${SOURCE_DIR}/coeffs/%s/coeffs_cldy' % (sat) cmd+=';\n export L2_STATICANC=${SOURCE_DIR}/static_ancillary' # COPY ANCIL TO NODE AND USE #cmd+=';\n cp -r ${SOURCE_DIR}/coeffs/%s/coeffs_clear .; export L2_COEFF_CLR=coeffs_clear' % (sat) #cmd+=';\n cp -r ${SOURCE_DIR}/coeffs/%s/coeffs_cldy . ; export L2_COEFF_CLD=coeffs_cldy' % (sat) #cmd+=';\n cp -r ${SOURCE_DIR}/static_ancillary . ; export L2_STATICANC=static_ancillary' cmd+=';\n export SHELLB3_PY=${SOURCE_DIR}/ShellB3/bin/python' cmd+=';\n export PATH=${SOURCE_DIR}:${SOURCE_DIR}/bin:${SOURCE_DIR}/scripts:${PATH}' # Run: cmd+=';\n\n ${SOURCE_DIR}/run_HSRTV.scr %d' % (satnum) # 1 = AIRS, 2 = IASI, 3 = CrIS print cmd subprocess.check_call(cmd, shell=True) # Copy output out cmd = 'mkdir -p %s; ' % (outdir) cmd+= 'rsync -v *rtv.h5 %s/.' % (outdir) print cmd subprocess.check_call(cmd, shell=True) print "HSRTV processing finished at: %s" % (str(datetime.now()))