示例#1
0
    def __init__(self, experiment, label=None):
        """Initialize the SetNormalResourceProperties Action"""

        super(SetNormalResourceProperties, self).__init__(experiment,
                                                name="SetNormalResourceProperties",
                                                label=label)

        self.threshold = self.experiment.config.getint(self.config_section, 'threshold', 0)
        self.epoch_start = self.experiment.config.getint(self.config_section, 'epoch_start', 0)
        self.epoch_end = self.experiment.config.getint(self.config_section, 'epoch_end',
                                                  default=self.experiment.config.getint('Experiment', 'epochs', default=-1))
        self.frequency = self.experiment.config.getint(self.config_section, 'frequency', 1)
        self.priority = self.experiment.config.getint(self.config_section, 'priority', 0)

        self.resource = self.experiment.config.get(self.config_section, 'resource')

        try:
            self.res = self.experiment.resources[self.resource]
        except KeyError:
            raise ConfigurationError("SetNormalResourceProperties: Resource '%s' is undefined" % (self.resource))

        if self.res.type != 'NormalResource':
            raise ConfigurationError("SetNormalResourceProperties: Resource '%s' is not a NormalResource" % (self.resource))
            

        self.inflow = self.experiment.config.getfloat(self.config_section, 'inflow')
        if self.inflow and self.inflow < 0:
            raise ConfigurationError("SetNormalResourceProperties: Invalid value for inflow '%f'.  Must be nonnegative." % (self.inflow))

        self.decay = self.experiment.config.getfloat(self.config_section, 'decay')
        if self.decay and self.decay < 0:
            raise ConfigurationError("SetNormalResourceProperties: Invalid value for decay '%f'.  Must be nonnegative." % (self.decay))
        elif self.decay and self.decay > 1:
            raise ConfigurationError("SetNormalResourceProperties: Invalid value for decay '%f'.  Must not be greater than 1." % (self.decay))

        self.diffusion = self.experiment.config.getfloat(self.config_section, 'diffusion')
        if self.diffusion and self.diffusion < 0:
            raise ConfigurationError("SetNormalResourceProperties: Invalid value for diffusion '%f'.  Must be nonnegative." % (self.diffusion))
        elif self.diffusion and self.diffusion > 1:
            raise ConfigurationError("SetNormalResourceProperties: Invalid value for diffusion '%f'.  Must not be greater than 1." % (self.diffusion))

        self.level = self.experiment.config.getfloat(self.config_section, 'level')
        if self.level and self.level < 0:
            raise ConfigurationError("SetNormalResourceProperties: Invalid value for level '%f'.  Must be nonnegative." % (self.level))

        if not self.inflow and self.inflow != 0 and not self.decay and self.decay != 0 and not self.diffusion and self.diffusion != 0 and not self.level and self.level != 0:
            raise ConfigurationError("SetNormalResourceProperties: Must specify value for inflow, decay, diffusion, or level")

        self.cells_str = self.experiment.config.get(self.config_section, 'cells')

        if not self.cells_str:
            self.cells = self.res.topology.graph.nodes()
        else:
            self.cells = parse_int_rangelist(self.cells_str, sorted=True)
            nids = self.res.topology.graph.nodes()
            for c in self.cells:
                if c not in nids:
                    raise ConfigurationError("SetNormalResourceProperties: Cell %d does not exist in Resource '%s'" % (c, self.resource))
示例#2
0
    def __init__(self, experiment, label=None):
        """Initialize the SetSquareResourceProperties Action"""

        super(SetSquareResourceProperties, self).__init__(experiment,
                                                name="SetSquareResourceProperties",
                                                label=label)

        self.threshold = self.experiment.config.getint(self.config_section, 'threshold', 0)
        self.epoch_start = self.experiment.config.getint(self.config_section, 'epoch_start', 0)
        self.epoch_end = self.experiment.config.getint(self.config_section, 'epoch_end',
                                                  default=self.experiment.config.getint('Experiment', 'epochs', default=-1))
        self.frequency = self.experiment.config.getint(self.config_section, 'frequency', 1)
        self.priority = self.experiment.config.getint(self.config_section, 'priority', 0)

        self.resource = self.experiment.config.get(self.config_section, 'resource')

        try:
            self.res = self.experiment.resources[self.resource]
        except KeyError:
            raise ConfigurationError("SetSquareResourceProperties: Resource '%s' is undefined" % (self.resource))

        if self.res.type != 'SquareResource':
            raise ConfigurationError("SetSquareResourceProperties: Resource '%s' is not a SquareResource" % (self.resource))
            

        self.period = self.experiment.config.getfloat(self.config_section, 'period')
        if self.period and self.period < 0:
            raise ConfigurationError("SetSquareResourceProperties: Invalid value for period '%f'.  Must be nonnegative." % (self.period))


        self.high = self.experiment.config.getfloat(self.config_section, 'high')
        self.low = self.experiment.config.getfloat(self.config_section, 'low')


        if self.high and self.low and self.high < self.low:
            raise ConfigurationError("SetSquareResourceProperties: High value must not be greater than low value." % (self.period))

        # NOTE: should also make sure that new high or low values (if one is not specified) is valid with the current configuration

        self.duty_cycle = self.experiment.config.getfloat(self.config_section, 'duty_cycle')
        if self.duty_cycle and self.duty_cycle < 0:
            raise ConfigurationError("SetSquareResourceProperties: Invalid value for duty_cycle '%f'.  Must be nonnegative." % (self.duty_cycle))

        if not self.period and not self.high and not self.low and not self.duty_cycle:
            raise ConfigurationError("SetSquareResourceProperties: Must specify value for period, high, low, or duty_cycle")

        self.cells_str = self.experiment.config.get(self.config_section, 'cells')

        if not self.cells_str:
            self.cells = self.res.topology.graph.nodes()
        else:
            self.cells = parse_int_rangelist(self.cells_str, sorted=True)
            nids = self.res.topology.graph.nodes()
            for c in self.cells:
                if c not in nids:
                    raise ConfigurationError("SetSquareResourceProperties: Cell %d does not exist in Resource '%s'" % (c, self.resource))
示例#3
0
    def __init__(self, experiment, label=None):
        """Initialize the SetSineResourceProperties Action"""

        super(SetSineResourceProperties, self).__init__(experiment,
                                                name="SetSineResourceProperties",
                                                label=label)

        self.threshold = self.experiment.config.getint(self.config_section, 'threshold', 0)
        self.epoch_start = self.experiment.config.getint(self.config_section, 'epoch_start', 0)
        self.epoch_end = self.experiment.config.getint(self.config_section, 'epoch_end',
                                                  default=self.experiment.config.getint('Experiment', 'epochs', default=-1))
        self.frequency = self.experiment.config.getint(self.config_section, 'frequency', 1)
        self.priority = self.experiment.config.getint(self.config_section, 'priority', 0)

        self.resource = self.experiment.config.get(self.config_section, 'resource')

        try:
            self.res = self.experiment.resources[self.resource]
        except KeyError:
            raise ConfigurationError("SetSinSinerceProperties: Resource '%s' is undefined" % (self.resource))

        if self.res.type != 'SineResource':
            raise ConfigurationError("SetSineResourceProperties: Resource '%s' is not a SineResource" % (self.resource))
            

        self.period = self.experiment.config.getfloat(self.config_section, 'period')
        if self.period and self.period <= 0:
            raise ConfigurationError("SetSineResourceProperties: Invalid value for period '%f'.  Must be nonzero and nonnegative." % (self.period))

        self.amplitude = self.experiment.config.getfloat(self.config_section, 'amplitude')
        if self.amplitude and self.amplitude < 0:
            raise ConfigurationError("SetSineResourceProperties: Invalid value for amplitude '%f'.  Must be nonnegative." % (self.amplitude))

        self.cells_str = self.experiment.config.get(self.config_section, 'cells')

        if not self.cells_str:
            self.cells = self.res.topology.graph.nodes()
        else:
            self.cells = parse_int_rangelist(self.cells_str, sorted=True)
            nids = self.res.topology.graph.nodes()
            for c in self.cells:
                if c not in nids:
                    raise ConfigurationError("SetSineResourceProperties: Cell %d does not exist in Resource '%s'" % (c, self.resource))
示例#4
0
    def __init__(self, experiment, label=None):
        """Initialize the SetNormalResourceProperties Action"""

        super(SetNormalResourceProperties,
              self).__init__(experiment,
                             name="SetNormalResourceProperties",
                             label=label)

        self.threshold = self.experiment.config.getint(self.config_section,
                                                       'threshold', 0)
        self.epoch_start = self.experiment.config.getint(
            self.config_section, 'epoch_start', 0)
        self.epoch_end = self.experiment.config.getint(
            self.config_section,
            'epoch_end',
            default=self.experiment.config.getint('Experiment',
                                                  'epochs',
                                                  default=-1))
        self.frequency = self.experiment.config.getint(self.config_section,
                                                       'frequency', 1)
        self.priority = self.experiment.config.getint(self.config_section,
                                                      'priority', 0)

        self.resource = self.experiment.config.get(self.config_section,
                                                   'resource')

        try:
            self.res = self.experiment.resources[self.resource]
        except KeyError:
            raise ConfigurationError(
                "SetNormalResourceProperties: Resource '%s' is undefined" %
                (self.resource))

        if self.res.type != 'NormalResource':
            raise ConfigurationError(
                "SetNormalResourceProperties: Resource '%s' is not a NormalResource"
                % (self.resource))

        self.inflow = self.experiment.config.getfloat(self.config_section,
                                                      'inflow')
        if self.inflow and self.inflow < 0:
            raise ConfigurationError(
                "SetNormalResourceProperties: Invalid value for inflow '%f'.  Must be nonnegative."
                % (self.inflow))

        self.decay = self.experiment.config.getfloat(self.config_section,
                                                     'decay')
        if self.decay and self.decay < 0:
            raise ConfigurationError(
                "SetNormalResourceProperties: Invalid value for decay '%f'.  Must be nonnegative."
                % (self.decay))
        elif self.decay and self.decay > 1:
            raise ConfigurationError(
                "SetNormalResourceProperties: Invalid value for decay '%f'.  Must not be greater than 1."
                % (self.decay))

        self.diffusion = self.experiment.config.getfloat(
            self.config_section, 'diffusion')
        if self.diffusion and self.diffusion < 0:
            raise ConfigurationError(
                "SetNormalResourceProperties: Invalid value for diffusion '%f'.  Must be nonnegative."
                % (self.diffusion))
        elif self.diffusion and self.diffusion > 1:
            raise ConfigurationError(
                "SetNormalResourceProperties: Invalid value for diffusion '%f'.  Must not be greater than 1."
                % (self.diffusion))

        self.level = self.experiment.config.getfloat(self.config_section,
                                                     'level')
        if self.level and self.level < 0:
            raise ConfigurationError(
                "SetNormalResourceProperties: Invalid value for level '%f'.  Must be nonnegative."
                % (self.level))

        if not self.inflow and self.inflow != 0 and not self.decay and self.decay != 0 and not self.diffusion and self.diffusion != 0 and not self.level and self.level != 0:
            raise ConfigurationError(
                "SetNormalResourceProperties: Must specify value for inflow, decay, diffusion, or level"
            )

        self.cells_str = self.experiment.config.get(self.config_section,
                                                    'cells')

        if not self.cells_str:
            self.cells = self.res.topology.graph.nodes()
        else:
            self.cells = parse_int_rangelist(self.cells_str, sorted=True)
            nids = self.res.topology.graph.nodes()
            for c in self.cells:
                if c not in nids:
                    raise ConfigurationError(
                        "SetNormalResourceProperties: Cell %d does not exist in Resource '%s'"
                        % (c, self.resource))
示例#5
0
    def __init__(self, experiment, label=None):
        """Initialize the SetSquareResourceProperties Action"""

        super(SetSquareResourceProperties,
              self).__init__(experiment,
                             name="SetSquareResourceProperties",
                             label=label)

        self.threshold = self.experiment.config.getint(self.config_section,
                                                       'threshold', 0)
        self.epoch_start = self.experiment.config.getint(
            self.config_section, 'epoch_start', 0)
        self.epoch_end = self.experiment.config.getint(
            self.config_section,
            'epoch_end',
            default=self.experiment.config.getint('Experiment',
                                                  'epochs',
                                                  default=-1))
        self.frequency = self.experiment.config.getint(self.config_section,
                                                       'frequency', 1)
        self.priority = self.experiment.config.getint(self.config_section,
                                                      'priority', 0)

        self.resource = self.experiment.config.get(self.config_section,
                                                   'resource')

        try:
            self.res = self.experiment.resources[self.resource]
        except KeyError:
            raise ConfigurationError(
                "SetSquareResourceProperties: Resource '%s' is undefined" %
                (self.resource))

        if self.res.type != 'SquareResource':
            raise ConfigurationError(
                "SetSquareResourceProperties: Resource '%s' is not a SquareResource"
                % (self.resource))

        self.period = self.experiment.config.getfloat(self.config_section,
                                                      'period')
        if self.period and self.period < 0:
            raise ConfigurationError(
                "SetSquareResourceProperties: Invalid value for period '%f'.  Must be nonnegative."
                % (self.period))

        self.high = self.experiment.config.getfloat(self.config_section,
                                                    'high')
        self.low = self.experiment.config.getfloat(self.config_section, 'low')

        if self.high and self.low and self.high < self.low:
            raise ConfigurationError(
                "SetSquareResourceProperties: High value must not be greater than low value."
                % (self.period))

        # NOTE: should also make sure that new high or low values (if one is not specified) is valid with the current configuration

        self.duty_cycle = self.experiment.config.getfloat(
            self.config_section, 'duty_cycle')
        if self.duty_cycle and self.duty_cycle < 0:
            raise ConfigurationError(
                "SetSquareResourceProperties: Invalid value for duty_cycle '%f'.  Must be nonnegative."
                % (self.duty_cycle))

        if not self.period and not self.high and not self.low and not self.duty_cycle:
            raise ConfigurationError(
                "SetSquareResourceProperties: Must specify value for period, high, low, or duty_cycle"
            )

        self.cells_str = self.experiment.config.get(self.config_section,
                                                    'cells')

        if not self.cells_str:
            self.cells = self.res.topology.graph.nodes()
        else:
            self.cells = parse_int_rangelist(self.cells_str, sorted=True)
            nids = self.res.topology.graph.nodes()
            for c in self.cells:
                if c not in nids:
                    raise ConfigurationError(
                        "SetSquareResourceProperties: Cell %d does not exist in Resource '%s'"
                        % (c, self.resource))
示例#6
0
    def __init__(self, experiment, label=None):
        """Initialize the SetSineResourceProperties Action"""

        super(SetSineResourceProperties,
              self).__init__(experiment,
                             name="SetSineResourceProperties",
                             label=label)

        self.threshold = self.experiment.config.getint(self.config_section,
                                                       'threshold', 0)
        self.epoch_start = self.experiment.config.getint(
            self.config_section, 'epoch_start', 0)
        self.epoch_end = self.experiment.config.getint(
            self.config_section,
            'epoch_end',
            default=self.experiment.config.getint('Experiment',
                                                  'epochs',
                                                  default=-1))
        self.frequency = self.experiment.config.getint(self.config_section,
                                                       'frequency', 1)
        self.priority = self.experiment.config.getint(self.config_section,
                                                      'priority', 0)

        self.resource = self.experiment.config.get(self.config_section,
                                                   'resource')

        try:
            self.res = self.experiment.resources[self.resource]
        except KeyError:
            raise ConfigurationError(
                "SetSinSinerceProperties: Resource '%s' is undefined" %
                (self.resource))

        if self.res.type != 'SineResource':
            raise ConfigurationError(
                "SetSineResourceProperties: Resource '%s' is not a SineResource"
                % (self.resource))

        self.period = self.experiment.config.getfloat(self.config_section,
                                                      'period')
        if self.period and self.period <= 0:
            raise ConfigurationError(
                "SetSineResourceProperties: Invalid value for period '%f'.  Must be nonzero and nonnegative."
                % (self.period))

        self.amplitude = self.experiment.config.getfloat(
            self.config_section, 'amplitude')
        if self.amplitude and self.amplitude < 0:
            raise ConfigurationError(
                "SetSineResourceProperties: Invalid value for amplitude '%f'.  Must be nonnegative."
                % (self.amplitude))

        self.cells_str = self.experiment.config.get(self.config_section,
                                                    'cells')

        if not self.cells_str:
            self.cells = self.res.topology.graph.nodes()
        else:
            self.cells = parse_int_rangelist(self.cells_str, sorted=True)
            nids = self.res.topology.graph.nodes()
            for c in self.cells:
                if c not in nids:
                    raise ConfigurationError(
                        "SetSineResourceProperties: Cell %d does not exist in Resource '%s'"
                        % (c, self.resource))