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
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)
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)
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
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')
def getTargetYear(self, date, crop=None, variety=None): return targetYearFromDate(date, crop=None, variety=None)
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],)
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)
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:
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
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)
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: