def build_output_graph(): from awrams.utils.nodegraph import nodes,graph from awrams.models import awral from awrams.models.awral import ffi_wrapper as fw from awrams.models.awral.template import DEFAULT_TEMPLATE output_map = awral.get_output_nodes(DEFAULT_TEMPLATE) print(output_map) outpath = '/data/cwd_awra_data/awra_test_outputs/sbaronha/sim_test_outputs/' output_map.mapping.update({ 's0_avg': nodes.transform(nodes.average,['s0_dr','s0_sr']), 's0_avg_save': nodes.write_to_annual_ncfile(outpath,'s0_avg'), 'ss_avg': nodes.transform(nodes.average,['ss_dr','ss_sr']), 'ss_avg_save': nodes.write_to_annual_ncfile(outpath,'ss_avg'), # 'sd_avg': nodes.transform(nodes.average,['s0_dr','s0_sr']), # 'sd_avg_save': nodes.write_to_annual_ncfile('./','s0_avg'), # # 'qtot_avg_save': nodes.write_to_annual_ncfile('./','qtot'), # 'etot_avg_save': nodes.write_to_annual_ncfile('./','etot') }) outputs = graph.OutputGraph(output_map.mapping) # print(outputs.get_dataspecs()) # print(outputs.get_dataspecs(flat=True)) return outputs
def setup_v5(): from awrams.utils import config_manager sys_settings = config_manager.get_system_profile('default').get_settings() model_profile = config_manager.get_model_profile('awral','v5_default') model_settings = model_profile.get_settings() global awral awral = model_profile.get_model(model_settings) global period period = dt.dates('dec 2010 - jan 2011') global input_map input_map = model_profile.get_input_mapping(model_settings) model_settings['CLIMATE_DATASET'] = sys_settings['CLIMATE_DATASETS']['TESTING'] global output_map output_map = awral.get_output_mapping() global outpath outpath = join(dirname(__file__),'..','..','test_data','simulation','outputs') output_map['s0_ncsave'] = nodes.write_to_annual_ncfile(outpath,'s0') output_map['mleaf_hrudr_state'] = nodes.write_to_ncfile_snapshot(outpath,'mleaf_hrudr')
def test_SplitFileWriterNode(): from awrams.utils import extents from awrams.utils import datetools as dt import awrams.models.awral.description awrams.models.awral.description.CLIMATE_DATA = os.path.join( os.path.dirname(__file__), '..', '..', 'test_data', 'simulation') from awrams.utils.nodegraph import nodes from awrams.simulation.ondemand import OnDemandSimulator from awrams.models import awral input_map = awral.get_default_mapping() from awrams.utils.nodegraph import nodes from awrams.utils.metatypes import ObjectDict # output_path = './' mapping = {} mapping['qtot'] = nodes.write_to_annual_ncfile('./', 'qtot') output_map = ObjectDict( mapping=ObjectDict(mapping)) #,output_path=output_path) runner = OnDemandSimulator(awral, input_map.mapping, omapping=output_map.mapping) period = dt.dates('2010-2011') extent = extents.from_cell_offset(200, 200) r = runner.run(period, extent)
def test_output_graph_processing_splitfm_B(): from awrams.utils import extents from awrams.utils import datetools as dt import awrams.models.awral.description awrams.models.awral.description.CLIMATE_DATA = os.path.join( os.path.dirname(__file__), '..', '..', 'test_data', 'simulation') from awrams.utils.nodegraph import nodes, graph from awrams.simulation.ondemand import OnDemandSimulator from awrams.models import awral input_map = awral.get_default_mapping() output_map = { 's0_save': nodes.write_to_annual_ncfile(os.path.dirname(__file__), 's0', mode='w') } # outputs = graph.OutputGraph(output_map) runner = OnDemandSimulator(awral, input_map.mapping, omapping=output_map) print("RUNNER NEW (FILES EXISTING): multiple cells, multiple years") period = dt.dates('2010-2011') extent = extents.from_boundary_offset(200, 200, 201, 201) r = runner.run(period, extent) print("RUNNER OLD (FILES EXISTING): single cell, single year") period = dt.dates('2015') extent = extents.from_cell_offset(202, 202) r = runner.run(period, extent)
def build_output_mapping(model,outpath,save_vars=None,mode='a',dtype=np.float32,save_states_freq=None): ''' Convenience function to save all models outputs to outpath as annual netCDF files ''' ### populate output map with all model outputs io_settings = config_manager.get_system_profile().get_settings()['IO_SETTINGS'] output_mapping = model.get_output_mapping() output_map_ncwrite = output_mapping.copy() if save_vars is None: save_vars = list(output_mapping) for k in save_vars: if k not in output_mapping: raise Exception("Variable %s not activated in model output settings" %k) output_map_ncwrite[k+'_ncsave'] = nodes.write_to_annual_ncfile(outpath,k,mode=mode,dtype=dtype) if save_states_freq is not None: state_keys = model.get_state_keys() state_path = os.path.join(outpath,'states') spatial_chunk = io_settings['CHUNKSIZES']['SPATIAL'] for k in state_keys: if k not in output_mapping: raise Exception("State %s not activated in model output settings" %k) output_map_ncwrite[k+'_statesave'] = nodes.write_to_ncfile_snapshot(state_path,k,mode=mode, \ freq=save_states_freq,dtype=np.float64, \ chunksizes = (1,spatial_chunk,spatial_chunk)) return output_map_ncwrite
def test_output_graph_processing_splitfm_B(): from awrams.utils import extents from awrams.utils import datetools as dt e_all = extents.get_default_extent() from awrams.utils.nodegraph import nodes, graph from awrams.simulation.ondemand import OnDemandSimulator input_map = awral.get_default_mapping() climate_mod(input_map) output_map = awral.get_output_mapping() output_map['s0_save'] = nodes.write_to_annual_ncfile( os.path.dirname(__file__), 's0', mode='w') runner = OnDemandSimulator(awral, input_map, omapping=output_map) print("RUNNER NEW (FILES EXISTING): multiple cells, multiple years") period = dt.dates('2010-2011') extent = e_all.ioffset[200:202, 200:202] r = runner.run(period, extent) clear_files() print("RUNNER OLD (FILES EXISTING): single cell, single year") period = dt.dates('2015') extent = e_all.ioffset[202, 202] r = runner.run(period, extent)
def setup(): from os.path import join, dirname from awrams.utils import datetools as dt from awrams.utils.nodegraph import nodes, graph from awrams.models.awral.model import AWRALModel from awrams.utils.mapping_types import period_to_tc global awral awral = AWRALModel() global period period = dt.dates('dec 2010 - jan 2011') global input_map input_map = awral.get_default_mapping() change_path_to_forcing(input_map) global output_map output_map = awral.get_output_mapping() global outpath outpath = join(dirname(__file__), '..', '..', 'test_data', 'simulation', 'outputs') output_map['s0_ncsave'] = nodes.write_to_annual_ncfile(outpath, 's0')
def build_output_graph(): from awrams.utils.nodegraph import nodes, graph from awrams.models import awral from awrams.models.awral import ffi_wrapper as fw from awrams.models.awral.template import DEFAULT_TEMPLATE output_map = awral.get_output_nodes(DEFAULT_TEMPLATE) print(output_map) output_map.mapping.update({ 's0_avg': nodes.transform(nodes.average, ['s0_dr', 's0_sr']), 's0_avg_save': nodes.write_to_annual_ncfile('./', 's0_avg') }) outputs = graph.OutputGraph(output_map.mapping) print(outputs.get_dataspecs()) print(outputs.get_dataspecs(flat=True)) return outputs
def test_output_graph_processing_splitfm_G(): from awrams.utils import extents from awrams.utils import datetools as dt e_all = extents.get_default_extent() from awrams.utils.nodegraph import nodes,graph from awrams.simulation.ondemand import OnDemandSimulator print("RUNNER NEW: single cell ncf, multiple years") period = dt.dates('2010-2011') extent = e_all.ioffset[202,202] #input_map = awral.get_default_mapping() output_map = awral.get_output_mapping() output_map['s0_save'] = nodes.write_to_annual_ncfile(os.path.dirname(__file__),'s0') # outputs = graph.OutputGraph(output_map) runner = OnDemandSimulator(awral,input_map,omapping=output_map) r = runner.run(period,extent)
def test_SplitFileWriterNode(): from awrams.utils import extents from awrams.utils import datetools as dt extent = extents.get_default_extent() from awrams.utils.nodegraph import nodes from awrams.simulation.ondemand import OnDemandSimulator input_map = awral.get_default_mapping() climate_mod(input_map) from awrams.utils.nodegraph import nodes from awrams.utils.metatypes import ObjectDict # output_path = './' output_map = awral.get_output_mapping() output_map['qtot_save'] = nodes.write_to_annual_ncfile('./', 'qtot') runner = OnDemandSimulator(awral, input_map, omapping=output_map) period = dt.dates('2010-2011') extent = extent.ioffset[200, 200:202] r = runner.run(period, extent)