Exemple #1
0
def model_output(var_name):
    return GraphNode('output_variable',
                     OutputNode,
                     out_type=None,
                     inputs=None,
                     properties={'io': 'from_model'},
                     args=odict(var_name=var_name))
Exemple #2
0
def parameter(value, min, max, fixed=False, **kwargs):
    return GraphNode('parameter',
                     ParameterNode,
                     out_type='const',
                     inputs=None,
                     properties=kwargs,
                     args=odict(value=value, min=min, max=max, fixed=fixed))
Exemple #3
0
def const(value, **kwargs):
    return GraphNode('constant',
                     ConstNode,
                     out_type='const',
                     inputs=None,
                     properties=kwargs,
                     args=odict(value=value))
Exemple #4
0
def persist(var_name):
    return GraphNode('output_variable',
                     OutputNode,
                     out_type='save',
                     inputs=[var_name],
                     properties={'io': 'from_model'},
                     args=odict(var_name=var_name))
Exemple #5
0
def write_to_flat_ncfile(path, nc_var, mode='a', freq='M'):
    return GraphNode('write_to_flat_ncfile',
                     callable_to_funcspec(FlatFileWriterNode),
                     out_type='ncfile',
                     inputs=[nc_var],
                     properties={'io': 'w'},
                     args=odict(path=path, nc_var=nc_var, mode=mode,
                                freq=freq))
Exemple #6
0
def spatial_from_multifile(pattern,
                           dimension,
                           dim_func,
                           variable=None,
                           preload=False):
    from .file_nodes import SpatialMultiFileNode
    return GraphNode('spatial_from_from_multifile',SpatialMultiFileNode,out_type='spatial',inputs=None,properties={'io': 'r'},\
             args=odict(pattern=pattern,dimension=dimension,dim_func=dim_func,variable=variable,preload=preload))
Exemple #7
0
def write_to_annual_ncfile(path,nc_var,mode='a',dtype=np.float64,chunksizes=None,ncparams=None):
    '''
    save output to annually split netCDF4 files
    :param path: save path
    :param nc_var: name of variable
    :param mode: 'w' clobber or 'a' or 'r+' append
    :return: GraphNode
    '''
    return GraphNode('write_to_annual_ncfile',callable_to_funcspec(SplitFileWriterNode),out_type='ncfile',inputs=[nc_var],
                     properties={'io': 'w'},args=odict(path=path,nc_var=nc_var,mode=mode,dtype=dtype,chunksizes=chunksizes,ncparams=ncparams))
Exemple #8
0
def write_to_ncfile(path, nc_var, mode='a'):
    '''
    save output to a netCDF4 file
    :param path: save path
    :param nc_var: name of variable
    :param mode: 'w' clobber or 'a' or 'r+' append
    :return: GraphNode
    '''
    return GraphNode('write_to_ncfile',
                     callable_to_funcspec(FileWriterNode),
                     out_type='ncfile',
                     inputs=[nc_var],
                     properties={'io': 'w'},
                     args=odict(path=path, nc_var=nc_var, mode=mode))
Exemple #9
0
def expand_dict(data_dict,mask,fill_value=np.nan,as_ma=True):
    '''
    Expand a dictionary of flattened arrays into spatial arrays
    <see get_expanded>
    '''
    out_dict = odict()
    for k,v in data_dict.items():
        try:
            if isinstance(v,np.ndarray):
                out_dict[k] = get_expanded(v,mask,fill_value,as_ma)
            elif isinstance(v,dict):
                out_dict[k] = expand_dict(v,mask,fill_value,as_ma)
        except Exception as e:
            logger.critical('Failed expansion of %s' % k)
            raise e

    return out_dict
Exemple #10
0
def transform(tfunc, inputs, func_args=None):
    if isinstance(inputs, str):
        inputs = [inputs]
    if func_args is None:
        func_args = {}
    if callable(tfunc):
        tfunc = callable_to_funcspec(tfunc)
    elif isinstance(tfunc, str):
        module, name = tfunc.rsplit('.', 1)
        tfunc = dict(module=module, name=name)
    if not (isinstance(tfunc, dict) and 'name' in tfunc and 'module' in tfunc):
        raise Exception("Invalid transformation function")
    return GraphNode('transform',
                     callable_to_funcspec(TransformNode),
                     'from_inputs',
                     inputs,
                     args=odict({
                         'tfunc': tfunc,
                         'func_args': func_args
                     }))
Exemple #11
0
def static(data,dataspec,out_type,flat=True):
    return GraphNode('static',StaticDataNode,out_type=out_type,inputs=None,args=odict(data=data,dataspec=dataspec,flat=flat))
Exemple #12
0
def spatial_from_file(filename,variable=None,preload=False,force_grid=None):
    from .file_nodes import SpatialFileNode
    return GraphNode('spatial_from_file',SpatialFileNode,out_type='spatial',inputs=None,properties={'io': 'r'},\
             args=odict(filename=filename,variable=variable,preload=preload,force_grid=force_grid))
Exemple #13
0
def init_state_from_array(data,extent):
    return GraphNode('init_state_from_array',callable_to_funcspec(InitStateFromArray),out_type='init',inputs=None,properties={'io': 'r'},\
             args=odict(data=data,extent=extent))
Exemple #14
0
def init_state_from_ncfile(path,pattern,nc_var,date=None):
    return GraphNode('init_state_from_ncfile',callable_to_funcspec(StateFileReaderNode),out_type='init',inputs=None,properties={'io': 'r'},\
             args=odict(path=path,pattern=pattern,nc_var=nc_var,date=date))
Exemple #15
0
def monthly_climatology(filename,variable,preload=True):
    return GraphNode('monthly_climatology',callable_to_funcspec(MonthlyClimatologyNode),out_type='forcing',inputs=None,properties={'io': 'r'},\
             args=odict(filename=filename,variable=variable,preload=preload))
Exemple #16
0
def forcing_gap_filler(nc_path,pattern,nc_var,climatology_file): 
    return GraphNode('forcing_with_climatology',callable_to_funcspec(ForcingGapFiller),out_type='forcing',inputs=None,properties={'io': 'r'},\
             args=odict(path=nc_path,pattern=pattern,nc_var=nc_var,filler_fn=climatology_file))
Exemple #17
0
def parameter_from_json(filename,key,value=None,min_val=None,max_val=None,fixed=None):
    return GraphNode('parameter',JSONParameterNode,out_type='const',inputs=None,properties={},args=odict(filename=filename,key=key,min_val=min_val,max_val=max_val,fixed=fixed))
Exemple #18
0
def forcing_from_ncfiles(path,pattern,nc_var,cache=False,map_func=None):
    if map_func is not None:
        map_func = callable_to_funcspec(map_func)
    return GraphNode('forcing_from_ncfiles',callable_to_funcspec(SplitFileReaderNode),out_type='forcing',inputs=None,properties={'io': 'r'},\
             args=odict(path=path,pattern=pattern,nc_var=nc_var,cache=cache,map_func=map_func))
Exemple #19
0
def forcing_from_dict(data_map,nc_var,dims):
    return GraphNode('forcing_from_dict',callable_to_funcspec(StaticForcing),out_type='forcing',inputs=None,properties={'io': 'r'},\
             args=odict(data_map=data_map,nc_var=nc_var,dims=dims))
Exemple #20
0
def const_from_hdf5(filename,variable,dims):
    return GraphNode('const_from_hdf5',ConstHDF5Node,out_type='const',inputs=None,properties={},\
         args=odict(filename=filename,variable=variable,dims=dims))
Exemple #21
0
def write_to_ncfile_snapshot(path,nc_var,mode='a',freq='M',dtype=np.float64,chunksizes=None,ncparams=None):
    return GraphNode('write_to_ncfile_snapshot',callable_to_funcspec(FlatFileWriterNode),out_type='ncfile',inputs=[nc_var],
                     properties={'io': 'w'},args=odict(path=path,nc_var=nc_var,mode=mode,freq=freq,dtype=dtype,chunksizes=chunksizes,ncparams=ncparams))
Exemple #22
0
def parameter(value,min_val,max_val,fixed=False,description='',**kwargs):
    return GraphNode('parameter',ParameterNode,out_type='const',inputs=None,properties=kwargs,args=odict(value=value,min_val=min_val,max_val=max_val,fixed=fixed,description=description))
Exemple #23
0
def _hypso_from_hdf5(filename,variable,preload=False):
    return GraphNode('hypso_from_hdf5',_HypsoHDF5Node,out_type='spatial',inputs=None,properties={'io': 'r'},\
             args=odict(filename=filename,variable=variable,preload=preload))
Exemple #24
0
def forcing_from_modis_ncfiles(path,pattern,nc_var,cache=False):
    return GraphNode('forcing_from_modis_ncfiles',callable_to_funcspec(ModisForcingNode),out_type='forcing',inputs=None,properties={'io': 'r'},\
             args=odict(path=path,pattern=pattern,nc_var=nc_var,preload=cache))
Exemple #25
0
def climatology(filename,variable,preload=False):
    return GraphNode('climatology',ClimatologyNode,out_type='from_inputs',inputs=None,properties={'io': 'r'},\
             args=odict(filename=filename,variable=variable,preload=preload))
Exemple #26
0
def parameter_from_calibration_results(filename, key):
    return GraphNode('parameter',CalibrationResultsParameterNode,out_type='const', \
                     inputs=None, properties = {}, args = odict(filename=filename, key=key))
Exemple #27
0
def const_array(value,dims):
    return GraphNode('constant',ConstArray,out_type='const',inputs=None,properties={},args=odict(value=value,dims=dims))
Exemple #28
0
def mix(lhs,rhs,ratio):
    return transform(_mix,[lhs,rhs],odict(ratio=ratio))