def step_down(self, bundle_goals):
        if self.step_counter < self.step_multiplier:
            if 'self.hub_bundle_goals' not in locals():
                self.hub_bundle_goals = np.zeros((self.max_cables, 1))
            return self.hub_bundle_goals
        else:
            self.step_counter = 0

        bundle_goals = tools.pad(bundle_goals, (self.max_bundles, 1))
        cable_goals = np.zeros((self.max_cables, 1))
        self.surprise = np.zeros((self.max_cables, 1))
        # Process the downward pass of each of the cogs in the level
        cog_index = 0
        for cog in self.cogs:
            # Gather the goal inputs for each cog
            cog_bundle_goals = bundle_goals[
                    cog_index * self.max_bundles_per_cog:
                    cog_index + 1 * self.max_bundles_per_cog,:]
            # Update the downward outputs for the level 
            cable_goals_by_cog = cog.step_down(cog_bundle_goals)
            cog_cable_indices = self.ziptie.get_index_projection(
                    cog_index).astype(bool)
            cable_goals[cog_cable_indices] = np.maximum(
                    cable_goals_by_cog, cable_goals[cog_cable_indices]) 
            #self.reaction[cog_cable_indices] = np.maximum(
            #        tools.pad(cog.reaction, (cog_cable_indices[0].size, 0)),
            #        self.reaction[cog_cable_indices]) 
            self.surprise[cog_cable_indices] = np.maximum(
                    cog.surprise, self.surprise[cog_cable_indices]) 
            cog_index += 1
        #self.hub_cable_goals = tools.bounded_sum([self.hub_cable_goals, 
        #                                          cable_goals])
        return self.hub_cable_goals
Returns beginning and an end for a year period.
dataset/ETHPy150Open matt2000/becca/core/gearbox.py/Gearbox.step_down--crossover with--dataset/ETHPy150Open maxtepkeev/architect/architect/databases/utilities.py/DateTime._get_year_period