diff --git a/da/analysis/runinfo.py b/da/analysis/runinfo.py deleted file mode 100755 index 02f87289e61012882b6963172106b61879c77adb..0000000000000000000000000000000000000000 --- a/da/analysis/runinfo.py +++ /dev/null @@ -1,156 +0,0 @@ -#!/usr/bin/env python -# runinfo.py - -""" -Author : peters - -Revision History: -File created on 01 Mar 2011. - -""" - -import mysettings -import commands -import os -import sys -from datetime import datetime, timedelta - - -class RunInfo(object): - """ - This is a CarbonTracker run info object - Initialize it with the following keywords: - - MANDATORY: - project = Name of project, should correspond to a directory [string] - sd = start date of project output [datetime object or integer yyyymmdd] - ed = end date of project output [datetime object or integer yyyymmdd] - OPTIONAL: - basedir = base directory of model output on your machine [string, default='~/Modeling/download'] - outputdir= output directory for figures and summary files [string, default='~/Modeling/SEATA'] - - Tip: change the std_rundat dictionary in module filtertools to set new defaults for all values! - """ - def __init__(self,infodict={},rcfile=None): - """ Initialize from the name of an rcfile, or by passing the dictionary directly """ - import da.tools.rc as rc - import da.tools.io4 as io - import copy - - - if rcfile: - infodict = rc.read(rcfile) - - self.basedir = infodict['dir.da_run'] - self.proj = os.path.split(self.basedir)[-1] - self.projdir = self.basedir - - self.dir_scheme = mysettings.ct_dir_scheme - - self.inputdir = os.path.join(self.basedir,'output') - self.outputdir = os.path.join(self.basedir,'analysis') - - if not os.path.exists(self.outputdir): - os.makedirs(self.outputdir) - print "Creating new output directory "+self.outputdir - - sd=infodict['time.start'] - ed=infodict['time.finish'] - dt=infodict['time.cycle'] - - self.dt = timedelta(days=int(dt)) - - if not isinstance(sd,datetime): - self.sd = datetime.strptime(sd,'%Y-%m-%d %H:%M:%S') - if not isinstance(ed,datetime): - self.ed = datetime.strptime(ed,'%Y-%m-%d %H:%M:%S') - - dd = copy.deepcopy(self.sd) - self.inputfiles= [] - self.weeks = [] - self.inputdict = {} - - while dd < self.ed: - filename = os.path.join(self.inputdir,'%s'%dd.strftime('%Y%m%d'),'savestate.nc') - if os.path.exists(filename): - self.inputfiles.append(filename) - self.weeks.append(dd) - self.inputdict[dd] = filename - else: - break - - dd = dd+self.dt - - self.ed = dd - self.nweeks = len(self.weeks) - - # run parameters from file - ncf = io.CT_Read(self.inputfiles[0],'read') - self.nlag = len(ncf.dimensions['nlag']) - self.nmembers = len(ncf.dimensions['nmembers']) - self.nparameters = len(ncf.dimensions['nparameters']) - ncf.close() - - self.namingscheme = 'wp_Mar2011' - filename = os.path.join('NamingScheme.'+self.namingscheme+'.rc') - - try: - rcinfo=rc.read(filename) - except IOError: - print '%s was specified as naming scheme, but no matching %s rc-file was found, exiting...'%(NamingScheme,filename,) - sys.exit(1) - except: - print 'Unknown error reading rc-file: %s, exiting...'%(filename,) - sys.exit(1) - - - self.namedict=rcinfo - - def __str__(self): - return 'project : '+self.projdir+\ - '\nstart date : '+str(self.sd)+\ - '\nend date : '+str(self.ed)+\ - '\ndelta date : '+str(self.dt)+\ - '\nnweeks : '+str(self.nweeks)+\ - '\nnparameters : '+str(self.nparameters)+\ - '\nnmembers : '+str(self.nmembers)+\ - '\nnlag : '+str(self.nlag)+\ - '\nDA output dir : '+self.inputdir+\ - '\nanalysis output dir : '+self.outputdir+\ - '\nnaming scheme : '+self.namingscheme - -def get_rundat_settings(args): - """ create settings dict for rundat from scripts arguments """ - - settings=std_rundat.copy() # start with defaults for rundat - - for items in args: - items=items.lower() - k, v = items.split('=') - if settings.has_key(k): - if k in std_constructors: - settings[k] = std_constructors[k](v) - else: - settings[k] = v - else: raise IOError,'Parameter unknown:%s'%(v,) - - return settings - - - - - -if __name__ == "__main__": - import getopt - import sys - from string import * - - sys.path.append('../../') - -# Parse keywords - - rundat=RunInfo(rcfile='../../da.rc') - - print rundat - - sys.exit(0) diff --git a/da/analysis/tools_transcom.py b/da/analysis/tools_transcom.py index b6d8b85d7c2c73953e5667af3821dd1b017b9c96..590aaeb3ed20e1561a1a21a8e32ccb3b536a9f71 100755 --- a/da/analysis/tools_transcom.py +++ b/da/analysis/tools_transcom.py @@ -236,42 +236,6 @@ ntcocean = 11 # TC standard ExtendedTCRegionsFile='postagg_definitions.nc' -def StateToTranscom(runinfo,x): - """ convert to transcom shaped regions""" - from numpy import dot - - try: - nparams = runinfo.nparameters - except: - nparams = runinfo - if nparams==240: - M=Ols240_to_TC23 - elif nparams==221: - M=Ols221_to_TC23 - elif nparams==259: - M=Ols259_to_TC23 - else: - raise ValueError('Do not know how to convert %s regions to 23 transcom regions'%(nparams,)) - - return dot(array(x).squeeze(),M) - -def StateCovToTranscom(runinfo,p): - """ convert to transcom shaped regions""" - try: - nparams = runinfo.nparameters - except: - nparams = runinfo - if nparams==240: - M=Ols240_to_TC23 - elif nparams==221: - M=Ols221_to_TC23 - elif nparams==259: - M=Ols259_to_TC23 - else: - raise ValueError('Do not know how to convert %s regions to 23 transcom regions'%(nparams,)) - - return transpose(dot(dot(transpose(M),p),M),(1,0,2)) - def ExtendedTCRegions(data,cov=False): """ convert to extended transcom shaped regions""" from numpy import dot, transpose @@ -290,7 +254,6 @@ def cov2corr(A): b=1./sqrt(A.diagonal()) return A*dot(b[:,newaxis],b[newaxis,:]) -def map_to_tc(data): """ function projects 1x1 degree map onto TransCom regions by adding gridboxes over larger areas """ from hdf2field import Sds2field import cPickle @@ -322,7 +285,6 @@ def map_to_tc(data): result[k-1]=data.ravel().take(v).sum() return result -def LookUpName(rundat,reg=33,tc=False,eco=False, olson=False, longnames=False): """ return name of region number reg """ if longnames: