Skip to content
Snippets Groups Projects
Commit 8b583f6b authored by Peters, Wouter's avatar Peters, Wouter
Browse files

these modules are now absorbed into time_avg_fluxes.py

parent 4731a9e6
No related branches found
No related tags found
No related merge requests found
#!/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(abs(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)
#!/usr/bin/env python
# longterm_fluxes.py
"""
Author : peters
Revision History:
File created on 20 Dec 2012.
"""
import os
import sys
import datetime
from dateutil.relativedelta import relativedelta
import subprocess
def longterm_avg(rundir,avg):
""" Function to average a set of files in a folder from monthly to yearly 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
yeardir = os.path.join(rundir , 'data_%s_yearly'%avg )
files = os.listdir(yeardir)
longtermdir = os.path.join(rundir,'data_%s_longterm'%avg)
if not os.path.exists(longtermdir):
print "Creating new output directory " + longtermdir
os.makedirs(longtermdir)
sd = datetime.datetime(1999,1,1)
files = [f for f in files if avg in f]
dates = []
for filename in files:
date=datetime.datetime.strptime(filename.split('.')[-2],'%Y')
dates.append( date )
avg_files = [os.path.join(yeardir,k) for k in files]
if len(avg_files) > 0 :
command = ['ncra','-O']+ avg_files + [os.path.join(longtermdir,'%s_fluxes.%04d-%04d.nc'%(avg,dates[0].year, dates[-1].year))]
status = subprocess.check_call(command)
if __name__ == "__main__":
rundir = "/Storage/CO2/peters/ctdas-ei-gfed2-glb6x4-griddedNH/analysis"
try:
avg=sys.argv[1]
except:
avg='transcom'
longterm_avg(rundir,avg)
#!/usr/bin/env python
# daily_fluxes.py
"""
Author : peters
Revision History:
File created on 20 Dec 2012.
"""
import os
import sys
import datetime
from dateutil.relativedelta import relativedelta
import subprocess
def monthly_avg(rundir,avg):
""" Function to average a set of files in a folder from daily to monthly 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
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):
print "Creating new output directory " + monthdir
os.makedirs(monthdir)
sd = datetime.datetime(1999,1,1)
files_monthly = os.listdir(monthdir)
if files_monthly == []:
sd = datetime.datetime(1999,1,1)
else:
files_monthly.sort()
fm = files_monthly[-1]
#sd = datetime.datetime(int(fm[9:13]),int(fm[14:16]),1)
sd = datetime.datetime.strptime(fm.split('.')[-2],'%Y-%m')
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
years = [d.year for d in fileinfo.values()]
months = set([d.month for d in fileinfo.values()])
if sd > datetime.datetime(1999,2,1):
sd = sd + relativedelta(months=+1)
else:
sd = datetime.datetime(min(years),1,1)
ed = datetime.datetime(max(years)+1,1,1)
while sd < ed:
nd = sd + relativedelta(months=+1)
avg_files = [os.path.join(daydir,k) for k,v in fileinfo.iteritems() if v < nd and v >= sd]
print sd, nd , len(avg_files)
if len(avg_files) > 0:
command = ['ncra','-O']+ avg_files + [os.path.join(monthdir,'%s_fluxes.%s.nc'%(avg,sd.strftime('%Y-%m')))]
status = subprocess.check_call(command)
sd = nd
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'
monthly_avg(rundir,avg)
#!/usr/bin/env python
# daily_fluxes.py
"""
Author : peters
Revision History:
File created on 20 Dec 2012.
"""
import os
import sys
import datetime
from dateutil.relativedelta import relativedelta
import subprocess
def yearly_avg(rundir,avg):
""" Function to average a set of files in a folder from monthly to yearly 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
monthdir = os.path.join(rundir , 'data_%s_monthly'%avg )
yeardir = os.path.join(rundir,'data_%s_yearly'%avg)
if not os.path.exists(yeardir):
print "Creating new output directory " + yeardir
os.makedirs(yeardir)
sd = datetime.datetime(1999,1,1)
files_yearly = os.listdir(yeardir)
if files_yearly == []:
sd = datetime.datetime(1999,1,1)
else:
files_yearly.sort()
fm = files_yearly[-1]
sd = datetime.datetime.strptime(fm.split('.')[-2],'%Y')
files = [f for f in files if '-' in f]
fileinfo = {}
for filename in files:
date=datetime.datetime.strptime(filename.split('.')[-2],'%Y-%m')
fileinfo[filename] = date
years = set([d.year for d in fileinfo.values()])
sd = datetime.datetime(min(years),1,1)
ed = datetime.datetime(max(years)+1,1,1)
while sd < ed:
nd = sd + relativedelta(years=+1)
avg_files = [os.path.join(monthdir,k) for k,v in fileinfo.iteritems() if v < nd and v >= sd]
print sd, nd , len(avg_files)
if len(avg_files) > 0 :
command = ['ncra','-O']+ avg_files + [os.path.join(yeardir,'%s_fluxes.%s.nc'%(avg,sd.strftime('%Y')))]
status = subprocess.check_call(command)
sd = nd
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'
yearly_avg(rundir,avg)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment