Newer
Older
#!/usr/bin/env python
#################################################################################################
# First order of business is always to make all other python modules accessible through the path
#################################################################################################
import sys
import os
import logging
sys.path.append(os.getcwd())
#################################################################################################
# Next, import the tools needed to initialize a data assimilation cycle
#################################################################################################
from da.tools.initexit import start_logger, validate_opts_args, parse_options, CycleControl
from da.tools.pipeline import ensemble_smoother_pipeline, header, footer
from da.carbondioxide.dasystem import CO2DaSystem
from da.carbondioxide.optimizer import CO2Optimizer
from da.carbondioxide.obspack_geocarbon import ObsPackObservations
#from da.carbondioxide.statevector import CO2StateVector
from da.co2gridded.statevector import CO2GriddedStateVector
#from da.carbondioxide.obspack import ObsPackObservations
#from da.carbondioxide.obs import CO2Observations
from da.tm5.observationoperator import TM5ObservationOperator
from da.analysis.expand_fluxes import save_weekly_avg_1x1_data, save_weekly_avg_state_data, save_weekly_avg_tc_data, save_weekly_avg_ext_tc_data
from da.analysis.expand_mixingratios import write_mixing_ratios
from da.analysis.summarize_obs import summarize_obs
#################################################################################################
# Parse and validate the command line options, start logging
#################################################################################################
start_logger()
opts, args = parse_options()
opts, args = validate_opts_args(opts, args)
#################################################################################################
# Create the Cycle Control object for this job
#################################################################################################
DaCycle = CycleControl(opts, args)
###########################################################################################
### IMPORT THE APPLICATION SPECIFIC MODULES HERE, TO BE PASSED INTO THE MAIN PIPELINE!!! ##
###########################################################################################
DaSystem = CO2DaSystem(DaCycle['da.system.rc'])
ObsOperator = TM5ObservationOperator(DaCycle['da.obsoperator.rc'])
Samples = ObsPackObservations()
#Samples = CtObservations()
StateVector = CO2GriddedStateVector()
Optimizer = CO2Optimizer()
##########################################################################################
################### ENTER THE PIPELINE WITH THE OBJECTS PASSED BY THE USER ###############
##########################################################################################
logging.info(header + "Entering Pipeline " + footer)
ensemble_smoother_pipeline(DaCycle, Platform, DaSystem, Samples, StateVector, ObsOperator, Optimizer)
##########################################################################################
################### All done, extra stuff can be added next, such as analysis
##########################################################################################
logging.info(header + "Starting analysis" + footer)
save_weekly_avg_1x1_data(DaCycle, StateVector)
save_weekly_avg_state_data(DaCycle, StateVector)
save_weekly_avg_tc_data(DaCycle, StateVector)
save_weekly_avg_ext_tc_data(DaCycle)
write_mixing_ratios(DaCycle)
summarize_obs(DaCycle)