Skip to content
Snippets Groups Projects
Forked from CTDAS / CTDAS
276 commits behind the upstream repository.
daily_fluxes.py 1.70 KiB
#!/usr/bin/env python
# daily_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

def daily_avg(rundir,avg):
    """ Function to create a set of daily files in a folder, needed to make longer term means """
    
    if avg not in ['transcom','olson','country','flux1x1']:
        raise IOError,'Choice of averaging invalid'
    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)
    files  = os.listdir(weekdir)
    
    daydir = os.path.join(rundir , 'data_%s_daily'%avg)
    if not os.path.exists(daydir):
        print "Creating new output directory " + daydir
        os.makedirs(daydir)

    files = [f for f in files if '-' in f]

    fileinfo = {}
    for filename in files:
        date=datetime.datetime.strptime(filename.split('.')[-2],'%Y-%m-%d')
        fileinfo[filename] = date
    
    dt = fileinfo[files[1]] - fileinfo[files[0]]

    for k,v in fileinfo.iteritems():
        cycle_file = os.path.join(weekdir,k)
        for i in range(dt.days):
            daily_file = os.path.join(daydir,'%s_fluxes.%s.nc'%(avg,(v+datetime.timedelta(days=i)).strftime('%Y-%m-%d')))
            if not os.path.lexists(daily_file):
                os.symlink(cycle_file,daily_file)
                print daily_file,cycle_file


if __name__ == "__main__":

    try:
        rundir = sys.argv[1]
    except:
        rundir  = "/Storage/CO2/ivar/zeus_output/ICDC9/ctdas_co2c13_terdisbcb_manscale/analysis/"

    try:
        avg=sys.argv[2]
    except:
        avg='transcom'

    daily_avg(rundir,avg)