diff --git a/da/analysis/daily_fluxes.py b/da/analysis/daily_fluxes.py index 809dc2767e3f76ca5265d46df2a5ede29566e03a..5c42dc83d13b1742dc6ccd6f1451c4138e7938d4 100755 --- a/da/analysis/daily_fluxes.py +++ b/da/analysis/daily_fluxes.py @@ -23,10 +23,10 @@ def daily_avg(rundir,avg): if not os.path.exists(rundir): raise IOError,'rundir requested (%s) does not exist, exiting...'%rundir - weekdir = os.path.join(rundir + 'data_%s_weekly'%avg) + weekdir = os.path.join(rundir , 'data_%s_weekly'%avg) files = os.listdir(weekdir) - daydir = os.path.join(rundir + 'data_%s_daily'%avg) + daydir = os.path.join(rundir , 'data_%s_daily'%avg) if not os.path.exists(daydir): print "Creating new output directory " + daydir os.makedirs(daydir) diff --git a/da/analysis/monthly_fluxes.py b/da/analysis/monthly_fluxes.py index 547a7070f5879be52cb840c2e7d5e71f9176cc70..291413753faa85c1238fc57eb8a05171edfa2533 100755 --- a/da/analysis/monthly_fluxes.py +++ b/da/analysis/monthly_fluxes.py @@ -23,7 +23,7 @@ def monthly_avg(rundir,avg): if not os.path.exists(rundir): raise IOError,'rundir requested (%s) does not exist, exiting...'%rundir - daydir = rundir + 'data_%s_daily'%avg + daydir = os.path.join(rundir , 'data_%s_daily'%avg) files = os.listdir(daydir) monthdir = os.path.join(rundir,'data_%s_monthly'%avg) if not os.path.exists(monthdir): diff --git a/da/analysis/time_avg_fluxes.py b/da/analysis/time_avg_fluxes.py new file mode 100755 index 0000000000000000000000000000000000000000..8767899cebc82d8574669e6d0f6434014aa86e12 --- /dev/null +++ b/da/analysis/time_avg_fluxes.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python +# time_avg_fluxes.py + +""" +Author : peters + +Revision History: +File created on 20 Dec 2012. + +""" +import sys +sys.path.append('../../') +import os +import sys +import shutil +import datetime +from da.analysis.daily_fluxes import daily_avg +from da.analysis.monthly_fluxes import monthly_avg +from da.analysis.yearly_fluxes import yearly_avg + +def time_avg(dacycle,avg='transcom'): + """ Function to create a set of averaged files in a folder, needed to make longer term means """ + + if avg not in ['transcom','olson','country']: + raise IOError,'Choice of averaging invalid' + + analysisdir = dacycle['dir.analysis'] + + if not os.path.exists(analysisdir): + raise IOError,'analysis dir requested (%s) does not exist, exiting...'%analysisdir + + daily_avg(analysisdir,avg) + + if new_month(dacycle): + monthly_avg(analysisdir,avg) + + if new_year(dacycle): + yearly_avg(analysisdir,avg) + +def new_month(dacycle): + """ check whether we just entered a new month""" + + this_month = dacycle['time.start'].month + prev_month = (dacycle['time.start']-dacycle['cyclelength']).month + + return (this_month != prev_month) + +def new_year(dacycle): + """ check whether we just entered a new year""" + + this_year = dacycle['time.start'].year + prev_year = (dacycle['time.start']-dacycle['cyclelength']).year + + return (this_year != prev_year) + +if __name__ == "__main__": + + from da.tools.initexit import CycleControl + + sys.path.append('../../') + + dacycle = CycleControl(args={'rc':'../../ctdas-ei-gfed2-glb6x4-griddedNH.rc'}) + dacycle.setup() + dacycle.parse_times() + + while dacycle['time.end'] < dacycle['time.finish']: + + time_avg(dacycle,avg='transcom') + dacycle.advance_cycle_times() + diff --git a/da/analysis/yearly_fluxes.py b/da/analysis/yearly_fluxes.py index 02b623cc15c80b24821d2b52e5bb36e2e5beaf6f..3f6c5762f852f04d4a5d3082879faa66afc4a767 100755 --- a/da/analysis/yearly_fluxes.py +++ b/da/analysis/yearly_fluxes.py @@ -23,7 +23,7 @@ def yearly_avg(rundir,avg): if not os.path.exists(rundir): raise IOError,'rundir requested (%s) does not exist, exiting...'%rundir - monthdir = rundir + 'data_%s_monthly'%avg + monthdir = os.path.join(rundir , 'data_%s_monthly'%avg ) files = os.listdir(monthdir) yeardir = os.path.join(rundir,'data_%s_yearly'%avg) if not os.path.exists(yeardir):