Пример #1
0
def mapWorkingDir(date, variety, map_key, map_type=None, test_path=False):
    if '.' in map_key: map_group = map_key.split('.')[0]
    else: map_group = map_key
    target_year = targetYearFromDate(asDatetime(date))
    variety_dir = varietyWorkingDir(target_year, 'grape', variety, test_path)
    working_dir =  os.path.join(variety_dir, 'maps', nameToDirpath(map_group))
    if not os.path.exists(working_dir): os.makedirs(working_dir)
    return working_dir
Пример #2
0
def webMapFilepath(date,
                   variety,
                   model_name,
                   map_group,
                   map_type,
                   config_key='web_maps'):
    target_year = targetYearFromDate(asDatetime(date))
    webmaps_dir = webMapsDir(target_year, variety)
    filename = \
    webMapFilename(date, variety, model_name, map_group, map_type, config_key)
    return os.path.join(webmaps_dir, filename)
Пример #3
0
def mapFilepath(date,
                variety,
                model_name,
                map_group,
                map_type,
                lo_gdd_th=None,
                hi_gdd_th=None,
                test_path=False):
    target_year = targetYearFromDate(asDatetime(date))
    map_dir = mapWorkingDir(target_year, variety, model_name, map_group,
                            map_type, lo_gdd_th, hi_gdd_th, test_path)
    filename = mapFilename(date, variety, model_name, map_group, map_type,
                           lo_gdd_th, hi_gdd_th, test_path)
    return os.path.join(map_dir, filename)
Пример #4
0
    def _loadFrostFileAttributes_(self):
        attrs = self.getFileAttributes()
        if not hasattr(self, 'target_year'):
            self.target_year = attrs.get('target_year', None)
            if self.target_year is not None:
                self.target_year = int(self.target_year)
            elif self.end_date is not None:
                self.target_year = targetYearFromDate(self.end_date)

        for attr_name, attr_value in attrs.items():
            if attr_name not in ('start_date', 'end_date', 'target_year'):
                self.__dict__[attr_name] = attr_value
        if self.hasDataset('lon'):
            self.__dict__['acis_grid'] = \
                self.getDatasetAttribute('lon', 'acis_grid')
        else:
            self.__dict__['acis_grid'] = None
    def __init__(self,
                 reporter,
                 season_start,
                 download_temps,
                 build_grids,
                 draw_plots,
                 publish_maps,
                 plot_days,
                 plot_coords,
                 debug=False,
                 test_run=False):
        self.active_script = None
        self.debug = debug
        self.plot_days = plot_days
        self.plot_location = ' -c %s' % plot_coords
        self.relative_plot_days = relativedelta(days=plot_days - 1)
        self.reporter = reporter
        self.season_start = season_start
        self.target_year = targetYearFromDate(season_start)
        self.test_run = test_run

        varieties = list(GRAPE.varieties.build)
        varieties.reverse()

        scripts = []
        for variety in varieties:
            if publish_maps:
                scripts.append(('publish_graphics', variety))
                scripts.append(('animate', (variety, 'hardiness.temp')))
                scripts.append(('animate', (variety, 'kill.potential')))
            if draw_plots:
                scripts.append(('map_hard_temp', variety))
                scripts.append(('map_kill_potential', variety))
                scripts.append(('plot_hard_temp', variety))
            if build_grids:
                scripts.append(('build_dormancy', variety))
                scripts.append(('build_hardiness', variety))
        if download_temps: scripts.append(('download_temp', None))
        self.all_scripts = tuple(scripts)
        if debug: print 'all scripts', self.all_scripts
Пример #6
0
debug = options.debug
test_file = options.test_file

# args[0] = 'chill' or variety name
model = args[1]

# get the date
if len(args) > 2:
    year = int(args[2])
    month = int(args[3])
    day = int(args[4])
    date = datetime(year, month, day)
else:
    date = datetime.now() - ONE_DAY
date_str = date.strftime('%B %d, %Y')
target_year = targetYearFromDate(date)

if args[0] == 'chill':
    # publish accumulated chill map
    src_filepath = mapFilepath(date, None, model, 'chill', 'accumulated')
    if os.path.exists(src_filepath):
        web_filepath = \
        copyMapFileToWeb(src_filepath, date, None, model, 'chill', 'accumulated')
        print PUBLISHED % ('Accumulated Chill map', date_str, web_filepath)

    # publish chill animation
    src_filepath = \
    animationFilepath(target_year, None, model, 'chill', 'accumulated')
    if os.path.exists(src_filepath):
        web_filepath = copyMapFileToWeb(src_filepath, date, None, model,
                                        'chill', 'accumulated', 'web_anim')
Пример #7
0
 def getTargetYear(self, date, crop=None, variety=None):
     return targetYearFromDate(date, crop=None, variety=None)
Пример #8
0
parser.add_option('-z', action='store_true', dest='debug', default=False)

options, args = parser.parse_args()

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

delay = options.delay
debug = options.debug
test_path = options.test_path

animate_cmd_path = fromConfig('animate_cmd_path')
_cmd_tmpl_ = '%s -delay %d %%s -loop 0 %%s' % (animate_cmd_path, delay)

# target year
if args[0] == 'year':
    target_year = targetYearFromDate(datetime.date.today())
else: target_year = int(args[0])

# chill model 
if args[1] == 'all':
    model_names = fromConfig('crops.apple.chill.models')
else: model_names = (args[1],)
model_keys = tuple( [model_name.title() for model_name in model_names] )

# apple variety
if len(args) > 3:
    map_group = 'variety'
    if args[3] == 'all':
        varieties = fromConfig('crops.apple.varieties.child_names')
    else: varieties = (args[3],)
Пример #9
0
 def _builder_preinit(self, start_date, end_date):
     self._access_authority = ('r', 'a', 'w')
     self.start_date = start_date
     self.end_date = end_date
     return targetYearFromDate(start_date)
Пример #10
0
elif len(args) > 2:  # start date specified
    year = int(args[1])
    month = int(args[2])
    day = int(args[3])
    start_date = datetime(year, month, day)
    if len(args) > 4:  # end date specified
        year = int(args[4])
        month = int(args[5])
        day = int(args[6])
        end_date = datetime(year, month, day)
    else:
        end_date = start_date
else:
    start_date = datetime.now() - relativedelta(days=options.days_ago)
    end_date = start_date
target_year = targetYearFromDate(start_date)
if target_year is None: exit()

log_filepath = options.log_filepath
if log_filepath is None:
    log_filename = '%%s-apple-variety-%s-build.log' % nameToFilepath(variety)
    log_filepath = buildLogFilepath(target_year, 'apple', log_filename,
                                    os.getpid())
reporter = Reporter(PID, log_filepath)
process_server = ProcessServer(reporter, variety, build_grids, draw_maps,
                               debug, test_run)

date = start_date
while date <= end_date:
    # do not start new date after quit time
    if quit_time is None or datetime.now() < quit_time:
    start_date = datetime.now() - relativedelta(days=options.days_ago)
elif num_date_args in (3, 6):
    year = int(args[0])
    month = int(args[1])
    day = int(args[2])
    start_date = datetime(year, month, day)
    if num_date_args == 6:
        year = int(args[3])
        month = int(args[4])
        day = int(args[5])
        end_date = datetime(year, month, day)
else:
    print sys.argv
    errmsg = 'Invalid number of date arguments (%d).' % num_date_args
    raise ValueError, errmsg
target_year = targetYearFromDate(start_date)

if end_date is None:
    end_date = start_date + relativedelta(days=num_days - 1)

log_filepath = options.log_filepath
if log_filepath is None:
    log_filepath = buildLogFilepath(targetYearFromDate(start_date), 'apple',
                                    '%s-apple-daily-build.log', os.getpid())
reporter = Reporter(PID, log_filepath)
process_server = ProcessServer(target_year, reporter, download_temps,
                               build_grids, draw_maps, False, debug, test_run)

if download_temps or build_grids or draw_maps:
    date = start_date
    while date <= end_date:
Пример #12
0
def plotWorkingDir(date, variety, plot_group, test_path=False):
    target_year = targetYearFromDate(asDatetime(date))
    variety_dir = varietyWorkingDir(target_year, 'grape', variety, test_path)
    working_dir = os.path.join(variety_dir, 'plots', plot_group)
    if not os.path.exists(working_dir): os.makedirs(working_dir)
    return working_dir
Пример #13
0
def webGraphicFilepath(date, variety, graphic_key, ext, parse_keywords=True):
    target_year = targetYearFromDate(asDatetime(date))
    graphics_dir = webGraphicsDir(target_year, variety)
    filename = \
    webGraphicFilename(date, variety, graphic_key, ext, parse_keywords)
    return os.path.join(graphics_dir, filename)
Пример #14
0
        else:
            max_run_hours = int(max_run_time)
            max_run_minutes = 0
    max_run_time = relativedelta(hours=max_run_hours, minutes=max_run_minutes)
    quit_time = datetime.now() + max_run_time
    if debug: print 'server quit time', quit_time
else:
    quit_time = None

end_date = None
target_year = None

num_date_args = len(args)
if num_date_args == 0:
    start_date = datetime.now() - relativedelta(days=options.days_ago)
    target_year = targetYearFromDate(start_date)
elif num_date_args == 1:
    target_year = int(args[0])
    start_date = datetime(target_year - 1, *GRAPE.start_day)
    end_date = datetime(target_year, *GRAPE.end_day)
    if end_date > datetime.now():
        end_date = datetime.now() - ONE_DAY
elif num_date_args in (3, 4, 5, 6):
    year = int(args[0])
    month = int(args[1])
    day = int(args[2])
    start_date = datetime(year, month, day)
    if num_date_args == 4:
        day = int(args[3])
        end_date = datetime(year, month, day)
    elif num_date_args == 5: