Source code for aospy.proj

"""Functionality for representing individual projects for use in aospy."""
import logging
import time

from . import utils


[docs]class Proj(object): """An object that describes a single project that will use aospy. This is the top-level class in the aospy hierarchy of data representations. It is meant to contain all of the `Model`, `Run`, and `Region` objects that are of relevance to a particular research project. (Any of these may be used by multiple `Proj` objects.) The `Proj` class itself provides little functionality, but it is an important means of organizing a user's work across different projects. In particular, the output of all calculations using `aospy.Calc` are saved in a directory structure whose root is that of the `Proj` object specified for that calculation. Attributes ---------- name : str The run's name description : str A description of the run direc_out, tar_direc_out : str The paths to the root directories of, respectively, the standard and .tar versions of the output of aospy calculations saved to disk. models : dict A dictionary with entries of the form ``{model_obj.name: model_obj}``, for each of this ``Proj``'s child model objects default_models : dict The default model objects on which to perform calculations via `aospy.Calc` if not otherwise specified regions : dict A dictionary with entries of the form ``{regin_obj.name: region_obj}``, for each of this ``Proj``'s child region objects """
[docs] def __init__(self, name, description=None, models=None, default_models=None, regions=None, direc_out='', tar_direc_out=''): """ Parameters ---------- name : str The project's name. This should be unique from that of any other `Proj` objects being used. description : str, optional A description of the model. This is not used internally by aospy; it is solely for the user's information. regions : {None, sequence of aospy.Region objects}, optional The desired regions over which to perform region-average calculations. models : {None, sequence of aospy.Model objects}, optional The child Model objects of this project. default_models : {None, sequence of aospy.Run objects}, optional The subset of this Model's runs over which to perform calculations by default. direc_out, tar_direc_out : str Path to the root directories of where, respectively, regular output and a .tar-version of the output will be saved to disk. Note ---- Instantiating a `Proj` object has the side-effect of setting the `proj` attribute of each of it's child `Model` objects to itself. See Also -------- aospy.Model, aospy.Region, aospy.Run """ logging.debug("Initializing Project instance: %s (%s)" % (name, time.ctime())) self.name = name self.description = '' if description is None else description self.direc_out = direc_out self.tar_direc_out = tar_direc_out if models is None: self.models = [] else: self.models = models if default_models is None: self.default_models = [] else: self.default_models = default_models if regions is None: self.regions = [] else: self.regions = regions # Set the `proj` attribute of the children models. for model in self.models: setattr(model, 'proj', self)
def __str__(self): return 'Project instance "' + self.name + '"' __repr__ = __str__