From 351c6c29dda5833436a04ae7d9c00a6d24fbb2f5 Mon Sep 17 00:00:00 2001 From: Sergio Date: Thu, 22 Aug 2024 15:28:29 -0400 Subject: [PATCH 1/9] WIP --- scheduler/scripts/fill_redis.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scheduler/scripts/fill_redis.py b/scheduler/scripts/fill_redis.py index 023631ef..c4b5265d 100644 --- a/scheduler/scripts/fill_redis.py +++ b/scheduler/scripts/fill_redis.py @@ -32,8 +32,8 @@ `program_ids` can be supply (as a file path) so the amount of programs stored can change. """ - start = Time("2018-08-01 08:00:00", format='iso', scale='utc') - end = Time("2019-01-31 08:00:00", format='iso', scale='utc') + start = Time("2018-02-01 08:00:00", format='iso', scale='utc') + end = Time("2018-07-31 08:00:00", format='iso', scale='utc') ObservatoryProperties.set_properties(GeminiProperties) From 3ebcd2bd7fc95945b7d7eca67a0750babc2d3eac Mon Sep 17 00:00:00 2001 From: Sergio Date: Mon, 2 Sep 2024 21:47:59 -0400 Subject: [PATCH 2/9] SCHED-727: Add asyncronous redis client so Visibitliy calculation can be done not in startup --- scheduler/app.py | 8 + .../programprovider/ocs/ocsprogramprovider.py | 3 + scheduler/data/program_ids.redis.txt | 276 ++++++++++++++++++ scheduler/data/program_ids.short.txt | 7 - scheduler/graphql_mid/schema.py | 25 +- scheduler/scripts/fill_redis.py | 10 +- .../services/redis_client/redis_client.py | 9 +- scheduler/services/visibility/__init__.py | 2 + scheduler/services/visibility/calculator.py | 22 +- scheduler/services/visibility/snapshot.py | 6 + 10 files changed, 324 insertions(+), 44 deletions(-) create mode 100644 scheduler/data/program_ids.redis.txt diff --git a/scheduler/app.py b/scheduler/app.py index 22b0d8ea..a1759bc3 100644 --- a/scheduler/app.py +++ b/scheduler/app.py @@ -1,9 +1,11 @@ # Copyright (c) 2016-2024 Association of Universities for Research in Astronomy, Inc. (AURA) # For license information see LICENSE or https://opensource.org/licenses/BSD-3-Clause +import asyncio from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from scheduler.graphql_mid.server import graphql_server +from scheduler.services.visibility import visibility_calculator app = FastAPI() @@ -29,5 +31,11 @@ app.add_route('/graphql', graphql_server) app.add_websocket_route('/graphql', graphql_server) + +@app.on_event("startup") +async def startup_event(): + asyncio.create_task(visibility_calculator.calculate()) + + # Import the routes after creating the FastAPI instance import routes diff --git a/scheduler/core/programprovider/ocs/ocsprogramprovider.py b/scheduler/core/programprovider/ocs/ocsprogramprovider.py index c207e538..0e72d10b 100644 --- a/scheduler/core/programprovider/ocs/ocsprogramprovider.py +++ b/scheduler/core/programprovider/ocs/ocsprogramprovider.py @@ -1,6 +1,7 @@ # Copyright (c) 2016-2024 Association of Universities for Research in Astronomy, Inc. (AURA) # For license information see LICENSE or https://opensource.org/licenses/BSD-3-Clause +import aiofiles import calendar import json import zipfile @@ -10,6 +11,7 @@ from typing import FrozenSet, Iterable, List, Mapping, Optional, Tuple, Dict import numpy as np +from fastapi import UploadFile from lucupy.helpers import dmsstr2deg from lucupy.minimodel import (AndOption, Atom, Band, CloudCover, Conditions, Constraints, ElevationType, Group, GroupID, ImageQuality, Magnitude, MagnitudeBands, NonsiderealTarget, Observation, @@ -54,6 +56,7 @@ def ocs_program_data(program_list: Optional[bytes] = None) -> Iterable[dict]: if isinstance(program_list, bytes): file = program_list.decode('utf-8') id_frozenset = frozenset(f.strip() for f in file.split('\n') if f.strip() and f.strip()[0] != '#') + else: with list_file.open('r') as file: id_frozenset = frozenset(line.strip() for line in file if line.strip() and line.strip()[0] != '#') diff --git a/scheduler/data/program_ids.redis.txt b/scheduler/data/program_ids.redis.txt new file mode 100644 index 00000000..ee382926 --- /dev/null +++ b/scheduler/data/program_ids.redis.txt @@ -0,0 +1,276 @@ +GN-2018B-DD-101 +GN-2018B-DD-102 +GN-2018B-DD-103 +GN-2018B-DD-104 +GN-2018B-DD-201 +GN-2018B-FT-101 +GN-2018B-FT-102 +GN-2018B-FT-103 +GN-2018B-FT-104 +GN-2018B-FT-105 +GN-2018B-FT-106 +GN-2018B-FT-107 +GN-2018B-FT-108 +GN-2018B-FT-109 +GN-2018B-FT-110 +GN-2018B-FT-111 +GN-2018B-FT-112 +GN-2018B-FT-113 +GN-2018B-FT-114 +GN-2018B-FT-115 +GN-2018B-FT-201 +GN-2018B-FT-202 +GN-2018B-FT-203 +GN-2018B-FT-204 +GN-2018B-FT-205 +GN-2018B-FT-206 +GN-2018B-FT-207 +GN-2018B-FT-208 +GN-2018B-FT-209 +GN-2018B-FT-210 +GN-2018B-FT-211 +GN-2018B-FT-212 +GN-2018B-FT-213 +GN-2018B-FT-214 +GN-2018B-LP-101 +GN-2018B-LP-102 +GN-2018B-LP-11 +GN-2018B-LP-15 +GN-2018B-LP-16 +GN-2018B-LP-4 +GN-2018B-LP-8 +GN-2018B-Q-101 +GN-2018B-Q-102 +GN-2018B-Q-103 +GN-2018B-Q-104 +GN-2018B-Q-105 +GN-2018B-Q-106 +GN-2018B-Q-107 +GN-2018B-Q-108 +GN-2018B-Q-109 +GN-2018B-Q-110 +GN-2018B-Q-111 +GN-2018B-Q-112 +GN-2018B-Q-113 +GN-2018B-Q-114 +GN-2018B-Q-115 +GN-2018B-Q-116 +GN-2018B-Q-117 +GN-2018B-Q-118 +GN-2018B-Q-119 +GN-2018B-Q-120 +GN-2018B-Q-121 +GN-2018B-Q-122 +GN-2018B-Q-123 +GN-2018B-Q-124 +GN-2018B-Q-125 +GN-2018B-Q-126 +GN-2018B-Q-127 +GN-2018B-Q-128 +GN-2018B-Q-129 +GN-2018B-Q-130 +GN-2018B-Q-131 +GN-2018B-Q-132 +GN-2018B-Q-133 +GN-2018B-Q-134 +GN-2018B-Q-135 +GN-2018B-Q-136 +GN-2018B-Q-137 +GN-2018B-Q-138 +GN-2018B-Q-139 +GN-2018B-Q-140 +GN-2018B-Q-141 +GN-2018B-Q-142 +GN-2018B-Q-143 +GN-2018B-Q-144 +GN-2018B-Q-145 +GN-2018B-Q-201 +GN-2018B-Q-202 +GN-2018B-Q-203 +GN-2018B-Q-204 +GN-2018B-Q-205 +GN-2018B-Q-206 +GN-2018B-Q-207 +GN-2018B-Q-208 +GN-2018B-Q-209 +GN-2018B-Q-210 +GN-2018B-Q-211 +GN-2018B-Q-212 +GN-2018B-Q-213 +GN-2018B-Q-214 +GN-2018B-Q-215 +GN-2018B-Q-216 +GN-2018B-Q-217 +GN-2018B-Q-218 +GN-2018B-Q-219 +GN-2018B-Q-220 +GN-2018B-Q-221 +GN-2018B-Q-222 +GN-2018B-Q-223 +GN-2018B-Q-224 +GN-2018B-Q-225 +GN-2018B-Q-226 +GN-2018B-Q-227 +GN-2018B-Q-228 +GN-2018B-Q-229 +GN-2018B-Q-230 +GN-2018B-Q-231 +GN-2018B-Q-232 +GN-2018B-Q-233 +GN-2018B-Q-234 +GN-2018B-Q-235 +GN-2018B-Q-236 +GN-2018B-Q-237 +GN-2018B-Q-238 +GN-2018B-Q-239 +GN-2018B-Q-240 +GN-2018B-Q-301 +GN-2018B-Q-302 +GN-2018B-Q-303 +GN-2018B-Q-304 +GN-2018B-Q-305 +GN-2018B-Q-306 +GN-2018B-Q-307 +GN-2018B-Q-308 +GN-2018B-Q-309 +GN-2018B-Q-310 +GN-2018B-Q-311 +GN-2018B-Q-312 +GN-2018B-Q-313 +GN-2018B-Q-314 +GN-2018B-Q-315 +GN-2018B-Q-316 +GN-2018B-Q-317 +GN-2018B-Q-318 +GN-2018B-Q-319 +GN-2018B-Q-320 +GN-2018B-Q-321 +GN-2018B-Q-401 +GN-2018B-Q-402 +GN-2018B-Q-403 +GN-2018B-Q-404 +GN-2018B-Q-405 +GN-2018B-Q-406 +GN-2018B-Q-407 +GN-2018B-Q-408 +GN-2018B-Q-409 +GN-2018B-Q-410 +GN-2018B-Q-901 +GN-2018B-Q-902 +GN-2018B-Q-903 +GS-2018B-DD-101 +GS-2018B-DD-102 +GS-2018B-DD-103 +GS-2018B-FT-101 +GS-2018B-FT-102 +GS-2018B-FT-103 +GS-2018B-FT-104 +GS-2018B-FT-105 +GS-2018B-FT-106 +GS-2018B-FT-107 +GS-2018B-FT-108 +GS-2018B-FT-109 +GS-2018B-FT-110 +GS-2018B-FT-111 +GS-2018B-FT-112 +GS-2018B-FT-201 +GS-2018B-FT-202 +GS-2018B-FT-203 +GS-2018B-FT-204 +GS-2018B-FT-205 +GS-2018B-FT-206 +GS-2018B-FT-207 +GS-2018B-FT-208 +GS-2018B-LP-1 +GS-2018B-LP-101 +GS-2018B-LP-11 +GS-2018B-LP-2 +GS-2018B-Q-101 +GS-2018B-Q-102 +GS-2018B-Q-103 +GS-2018B-Q-104 +GS-2018B-Q-105 +GS-2018B-Q-106 +GS-2018B-Q-107 +GS-2018B-Q-108 +GS-2018B-Q-109 +GS-2018B-Q-110 +GS-2018B-Q-111 +GS-2018B-Q-112 +GS-2018B-Q-113 +GS-2018B-Q-114 +GS-2018B-Q-115 +GS-2018B-Q-116 +GS-2018B-Q-117 +GS-2018B-Q-118 +GS-2018B-Q-119 +GS-2018B-Q-120 +GS-2018B-Q-121 +GS-2018B-Q-122 +GS-2018B-Q-123 +GS-2018B-Q-124 +GS-2018B-Q-125 +GS-2018B-Q-126 +GS-2018B-Q-127 +GS-2018B-Q-128 +GS-2018B-Q-129 +GS-2018B-Q-130 +GS-2018B-Q-131 +GS-2018B-Q-132 +GS-2018B-Q-133 +GS-2018B-Q-134 +GS-2018B-Q-135 +GS-2018B-Q-201 +GS-2018B-Q-202 +GS-2018B-Q-203 +GS-2018B-Q-204 +GS-2018B-Q-206 +GS-2018B-Q-207 +GS-2018B-Q-208 +GS-2018B-Q-209 +GS-2018B-Q-210 +GS-2018B-Q-211 +GS-2018B-Q-212 +GS-2018B-Q-213 +GS-2018B-Q-214 +GS-2018B-Q-215 +GS-2018B-Q-216 +GS-2018B-Q-217 +GS-2018B-Q-218 +GS-2018B-Q-219 +GS-2018B-Q-220 +GS-2018B-Q-221 +GS-2018B-Q-222 +GS-2018B-Q-223 +GS-2018B-Q-224 +GS-2018B-Q-226 +GS-2018B-Q-227 +GS-2018B-Q-228 +GS-2018B-Q-229 +GS-2018B-Q-230 +GS-2018B-Q-231 +GS-2018B-Q-232 +GS-2018B-Q-233 +GS-2018B-Q-301 +GS-2018B-Q-302 +GS-2018B-Q-303 +GS-2018B-Q-304 +GS-2018B-Q-305 +GS-2018B-Q-306 +GS-2018B-Q-307 +GS-2018B-Q-308 +GS-2018B-Q-309 +GS-2018B-Q-310 +GS-2018B-Q-311 +GS-2018B-Q-312 +GS-2018B-Q-313 +GS-2018B-Q-314 +GS-2018B-Q-315 +GS-2018B-Q-401 +GS-2018B-Q-402 +GS-2018B-Q-403 +GS-2018B-Q-404 +GS-2018B-Q-405 +GS-2018B-LP-12 +GS-2018B-Q-205 +GS-2018B-Q-225 \ No newline at end of file diff --git a/scheduler/data/program_ids.short.txt b/scheduler/data/program_ids.short.txt index 058ea62e..aaa33b47 100644 --- a/scheduler/data/program_ids.short.txt +++ b/scheduler/data/program_ids.short.txt @@ -1,9 +1,2 @@ GN-2018B-Q-101 -GN-2018B-Q-102 -GN-2018B-Q-103 -GN-2018B-Q-104 -GS-2018B-Q-101 -GS-2018B-Q-102 -GS-2018B-Q-103 -GS-2018B-Q-104 GS-2018B-Q-105 diff --git a/scheduler/graphql_mid/schema.py b/scheduler/graphql_mid/schema.py index 37c12aec..40e93495 100644 --- a/scheduler/graphql_mid/schema.py +++ b/scheduler/graphql_mid/schema.py @@ -22,20 +22,9 @@ _logger = create_logger(__name__) -REDIS_URL = os.environ.get("REDISCLOUD_URL") -redis = aioredis.from_url(REDIS_URL) if REDIS_URL else None -task_queue = asyncio.Queue() # TODO: All times need to be in UTC. This is done here but converted from the Optimizer plans, where it should be done. - -def synchronous_task(): - import time - print('task') - time.sleep(65) - return 'new plan' - - def sync_schedule(params: SchedulerParameters) -> NewNightPlans: engine = Engine(params) plan_summary, timelines = engine.run() @@ -59,15 +48,6 @@ def plans(self) -> List[SPlans]: def site_plans(self, site: Site) -> List[SPlans]: return [plans.for_site(site) for plans in PlanManager.get_plans()] - @strawberry.field - async def test_redis(self) -> str: - if redis: - await redis.set("time_stamp", str(datetime.now().timestamp())) - value = await redis.get("time_stamp") - return value.decode() - else: - ValueError("REDISCLOUD_URL env var is not set up correctly.") - @strawberry.field async def schedule(self, new_schedule_input: CreateNewScheduleInput) -> NewNightPlans: @@ -111,12 +91,15 @@ async def test_sub_query(self, schedule_id: str, new_schedule_input: CreateNewSc new_schedule_input.vis_power, new_schedule_input.wha_power) + file = await new_schedule_input.program_file.read() + params = SchedulerParameters(start, end, new_schedule_input.sites, new_schedule_input.mode, ranker_params, new_schedule_input.semester_visibility, - new_schedule_input.num_nights_to_schedule) + new_schedule_input.num_nights_to_schedule, + file) _logger.info(f"Run ID: {schedule_id}\n{params}") diff --git a/scheduler/scripts/fill_redis.py b/scheduler/scripts/fill_redis.py index c4b5265d..19d36fc4 100644 --- a/scheduler/scripts/fill_redis.py +++ b/scheduler/scripts/fill_redis.py @@ -13,6 +13,7 @@ from lucupy.observatory.gemini import GeminiProperties from lucupy.types import ZeroTime +from definitions import ROOT_DIR from scheduler.core.builder.blueprint import CollectorBlueprint from scheduler.core.programprovider.abstract import ProgramProvider from scheduler.core.programprovider.ocs import ocs_program_data, OcsProgramProvider @@ -32,8 +33,8 @@ `program_ids` can be supply (as a file path) so the amount of programs stored can change. """ - start = Time("2018-02-01 08:00:00", format='iso', scale='utc') - end = Time("2018-07-31 08:00:00", format='iso', scale='utc') + start = Time("2018-08-01 08:00:00", format='iso', scale='utc') + end = Time("2019-01-31 08:00:00", format='iso', scale='utc') ObservatoryProperties.set_properties(GeminiProperties) @@ -51,8 +52,7 @@ night_indices = frozenset(NightIndex(idx) for idx in range(1)) sites = ALL_SITES - programs_ids = None - program_list = None + programs_ids = Path(ROOT_DIR) / 'scheduler' / 'data' / 'program_ids.redis.txt' # check if path exist and read f_programs = None @@ -69,7 +69,7 @@ collector = Collector(start, end, 1, sites, semesters, sources, False, *collector_blueprint) program_provider_class = OcsProgramProvider - data = ocs_program_data(program_list) + data = ocs_program_data(f_programs) if not (isclass(program_provider_class) and issubclass(program_provider_class, ProgramProvider)): raise ValueError('Collector load_programs requires a ProgramProvider class as the second argument') diff --git a/scheduler/services/redis_client/redis_client.py b/scheduler/services/redis_client/redis_client.py index cb101c5a..73bb68ef 100644 --- a/scheduler/services/redis_client/redis_client.py +++ b/scheduler/services/redis_client/redis_client.py @@ -6,6 +6,7 @@ import redis import os +from redis import asyncio as aioredis from redis import RedisError from scheduler.core.meta import Singleton @@ -15,7 +16,7 @@ class RedisClient(metaclass=Singleton): def __init__(self): - self._redis_client = redis.from_url(REDIS_URL, socket_timeout=600, socket_connect_timeout=30) if REDIS_URL else None + self._redis_client = aioredis.from_url(REDIS_URL, socket_timeout=600, socket_connect_timeout=30) if REDIS_URL else None if not self._redis_client: raise ValueError("REDISCLOUD_URL env var is not set up correctly.") @@ -51,10 +52,10 @@ def get_nested_value(self, main_key: str, key: str): def set_nested_value(self, main_key: str, key: str, value) -> None: self._redis_client.hset(main_key, key, json.dumps(value)) - def get_whole_dict(self, main_key: str) -> Optional[dict]: - exists = self._redis_client.exists(main_key) + async def get_whole_dict(self, main_key: str) -> Optional[dict]: + exists = await self._redis_client.exists(main_key) if exists: - flat_dict = self._redis_client.hgetall(main_key) + flat_dict = await self._redis_client.hgetall(main_key) # Convert bytes to str for both keys and values flat_dict = {k.decode('utf-8'): v.decode('utf-8') for k, v in flat_dict.items()} return RedisClient.unflatten_dict(flat_dict) diff --git a/scheduler/services/visibility/__init__.py b/scheduler/services/visibility/__init__.py index e69de29b..aa1683cc 100644 --- a/scheduler/services/visibility/__init__.py +++ b/scheduler/services/visibility/__init__.py @@ -0,0 +1,2 @@ +from .calculator import * +from .snapshot import * diff --git a/scheduler/services/visibility/calculator.py b/scheduler/services/visibility/calculator.py index 2de7aae5..56e2fe1b 100644 --- a/scheduler/services/visibility/calculator.py +++ b/scheduler/services/visibility/calculator.py @@ -22,10 +22,18 @@ from scheduler.services.resource import NightConfiguration from .snapshot import VisibilitySnapshot, TargetSnapshot - +from scheduler.core.meta import Singleton _logger = create_logger(__name__) +__all__ = [ + 'calculate_target_snapshot', + 'visibility_calculator', + 'TargetVisibility', + 'TargetVisibilityTable' +] + + @final @immutable @dataclass(frozen=True) @@ -117,6 +125,7 @@ def calculate_target_snapshot(night_idx: NightIndex, sky_brightness=sb) +@final @dataclass class TargetVisibilityTable: vis_table: Dict[Semester, Dict[str, Dict[str, str]]] @@ -137,7 +146,7 @@ def get(self, semester: Semester, obs_id: ObservationID, day: str) -> dict: return current -class VisibilityCalculator: +class VisibilityCalculator(metaclass=Singleton): _SEMESTERS: ClassVar[FrozenSet[Semester]] = frozenset([Semester(2018, SemesterHalf('A')), Semester(2018, SemesterHalf('B')), @@ -148,13 +157,13 @@ def __init__(self, with_redis: bool = True): self.vis_table: Optional[TargetVisibilityTable] = None self.with_redis = with_redis - def calculate(self) -> 'VisibilityCalculator': + async def calculate(self) -> None: if self.with_redis: all_semesters_vis_table = {} for semester in VisibilityCalculator._SEMESTERS: main_key = f"{semester}-{config.collector.time_slot_length}min" - semester_vis_table = redis_client.get_whole_dict(main_key) + semester_vis_table = await redis_client.get_whole_dict(main_key) if semester_vis_table: all_semesters_vis_table[semester] = semester_vis_table _logger.info(f'Visibility calcs for {semester} from Redis retrieved.') @@ -164,7 +173,6 @@ def calculate(self) -> 'VisibilityCalculator': raise NotImplementedError('Manual population not yet available') self.vis_table = TargetVisibilityTable(all_semesters_vis_table) - return self def get_target_visibility(self, obs: Observation, time_period: Time, semesters: FrozenSet[Semester]): """Given a time period it calculates the target visibility for that period""" @@ -233,7 +241,7 @@ def calculate_visibility(obs: Observation, # In the case where an observation has no constraint information or an elevation constraint # type of None, we use airmass default values. if obs.constraints and obs.constraints.elevation_type != ElevationType.NONE: - targ_prop = target_snapshot.hourangle if obs.constraints.elevation_type is ElevationType.HOUR_ANGLE else target_snapshot.airmass + targ_prop = target_snapshot.hourangle.deg if obs.constraints.elevation_type is ElevationType.HOUR_ANGLE else target_snapshot.airmass elev_min = obs.constraints.elevation_min elev_max = obs.constraints.elevation_max else: @@ -295,4 +303,4 @@ def calculate_visibility(obs: Observation, return visibility_snapshots -visibility_calculator = VisibilityCalculator().calculate() +visibility_calculator = VisibilityCalculator() diff --git a/scheduler/services/visibility/snapshot.py b/scheduler/services/visibility/snapshot.py index f70c0fba..8e46e902 100644 --- a/scheduler/services/visibility/snapshot.py +++ b/scheduler/services/visibility/snapshot.py @@ -10,6 +10,12 @@ from lucupy.minimodel import SkyBackground import itertools +__all__ = [ + 'VisibilitySnapshot', + 'TargetSnapshot' +] + + def group_ranges(i): for _, b in itertools.groupby(enumerate(i), lambda pair: pair[1] - pair[0]): b = list(b) From c599816708147d40e5b375fcf6277e9d5f442fff Mon Sep 17 00:00:00 2001 From: Sergio Date: Tue, 3 Sep 2024 18:32:57 -0400 Subject: [PATCH 3/9] SCHED-727: Restore short list --- scheduler/data/program_ids.short.txt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/scheduler/data/program_ids.short.txt b/scheduler/data/program_ids.short.txt index aaa33b47..5f3b13e3 100644 --- a/scheduler/data/program_ids.short.txt +++ b/scheduler/data/program_ids.short.txt @@ -1,2 +1,9 @@ GN-2018B-Q-101 -GS-2018B-Q-105 +GN-2018B-Q-102 +GN-2018B-Q-103 +GN-2018B-Q-104 +GS-2018B-Q-101 +GS-2018B-Q-102 +GS-2018B-Q-103 +GS-2018B-Q-104 +GS-2018B-Q-105 \ No newline at end of file From f16feaab841f94f28c5a1dddb7f382ede0bba5a1 Mon Sep 17 00:00:00 2001 From: Sergio Date: Tue, 3 Sep 2024 18:44:23 -0400 Subject: [PATCH 4/9] SCHED-727: Fix useless depedency --- scheduler/core/programprovider/ocs/ocsprogramprovider.py | 1 - 1 file changed, 1 deletion(-) diff --git a/scheduler/core/programprovider/ocs/ocsprogramprovider.py b/scheduler/core/programprovider/ocs/ocsprogramprovider.py index 0e72d10b..1aa01f47 100644 --- a/scheduler/core/programprovider/ocs/ocsprogramprovider.py +++ b/scheduler/core/programprovider/ocs/ocsprogramprovider.py @@ -1,7 +1,6 @@ # Copyright (c) 2016-2024 Association of Universities for Research in Astronomy, Inc. (AURA) # For license information see LICENSE or https://opensource.org/licenses/BSD-3-Clause -import aiofiles import calendar import json import zipfile From 0b8d0d3fd5d99bb537382c9fd2927d7fe831cbfb Mon Sep 17 00:00:00 2001 From: Sergio Date: Wed, 4 Sep 2024 13:46:19 -0400 Subject: [PATCH 5/9] SCHED-727: Fix run_greeydmax --- scheduler/scripts/run_main.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scheduler/scripts/run_main.py b/scheduler/scripts/run_main.py index aac30306..2ff0c74a 100644 --- a/scheduler/scripts/run_main.py +++ b/scheduler/scripts/run_main.py @@ -1,6 +1,6 @@ # Copyright (c) 2016-2024 Association of Universities for Research in Astronomy, Inc. (AURA) # For license information see LICENSE or https://opensource.org/licenses/BSD-3-Clause - +import asyncio from datetime import datetime from pathlib import Path from typing import Dict, FrozenSet, Optional @@ -25,6 +25,7 @@ from scheduler.core.sources.sources import Sources from scheduler.core.statscalculator import StatCalculator from scheduler.services import logger_factory +from scheduler.services.visibility import visibility_calculator _logger = logger_factory.create_logger(__name__) @@ -42,6 +43,8 @@ def main(*, num_nights_to_schedule: Optional[int] = None, programs_ids: Optional[str] = None) -> None: ObservatoryProperties.set_properties(GeminiProperties) + asyncio.run(visibility_calculator.calculate()) + # Create the Collector and load the programs. collector_blueprint = CollectorBlueprint( From b2d2e2b9870f974f5701f5e26103f4ac373ec499 Mon Sep 17 00:00:00 2001 From: Sergio Date: Wed, 4 Sep 2024 14:29:01 -0400 Subject: [PATCH 6/9] SCHED-727: Remove innecesary query test that is testing old code. New test must be added in SCHED-737 --- .../graphql_mid/test_graphql_queries.py | 65 ------------------- 1 file changed, 65 deletions(-) delete mode 100644 tests/unit/scheduler/graphql_mid/test_graphql_queries.py diff --git a/tests/unit/scheduler/graphql_mid/test_graphql_queries.py b/tests/unit/scheduler/graphql_mid/test_graphql_queries.py deleted file mode 100644 index bb3d25c2..00000000 --- a/tests/unit/scheduler/graphql_mid/test_graphql_queries.py +++ /dev/null @@ -1,65 +0,0 @@ -# Copyright (c) 2016-2024 Association of Universities for Research in Astronomy, Inc. (AURA) -# For license information see LICENSE or https://opensource.org/licenses/BSD-3-Clause - -import pytest - -from lucupy.observatory.abstract import ObservatoryProperties -from lucupy.observatory.gemini import GeminiProperties - -from scheduler.graphql_mid.server import schema - - -@pytest.mark.asyncio -async def test_schedule_query(): - ObservatoryProperties.set_properties(GeminiProperties) - query = """ - query schedule { - schedule( - newScheduleInput: { - startTime: "2018-10-01 08:00:00", - sites: "GN", - mode: VALIDATION, - endTime: "2018-10-03 08:00:00"} - ) { - nightPlans{ - nightTimeline{ - nightIndex - timeEntriesBySite{ - site, - timeEntries{ - startTimeSlots, - event, - plan{ - startTime, - visits{ - obsId - }, - nightStats{ - timeLoss - } - } - } - } - } - }, - plansSummary - } - } - """ - result = await schema.execute(query) - assert result is not None - result_data = result.data - assert result_data is not None - assert 'schedule' in result_data - schedule = result_data['schedule'] - assert schedule is not None - assert 'nightPlans' in schedule - night_plans = schedule['nightPlans'] - assert night_plans is not None - assert 'nightTimeline' in night_plans - plan_per_night = night_plans['nightTimeline'] - assert plan_per_night is not None - assert len(plan_per_night) >= 0 - time_entry = plan_per_night[0] - assert time_entry is not None - assert 'timeEntriesBySite' in time_entry From ef0db770d520c70e31e4d9c2cdcc48622da577f3 Mon Sep 17 00:00:00 2001 From: Sergio Date: Wed, 4 Sep 2024 15:58:53 -0400 Subject: [PATCH 7/9] SCHED-727: Fix fixture to include visibility calculator --- .../horizons/data/GS_jupiter_20190201UT.eph | 768 ++++++++++++++++++ .../core/collector/collector_fixture.py | 8 +- 2 files changed, 774 insertions(+), 2 deletions(-) create mode 100644 scheduler/services/horizons/data/GS_jupiter_20190201UT.eph diff --git a/scheduler/services/horizons/data/GS_jupiter_20190201UT.eph b/scheduler/services/horizons/data/GS_jupiter_20190201UT.eph new file mode 100644 index 00000000..cf370ed4 --- /dev/null +++ b/scheduler/services/horizons/data/GS_jupiter_20190201UT.eph @@ -0,0 +1,768 @@ +******************************************************************************* +Ephemeris / WWW_USER Wed Sep 4 11:50:15 2024 Pasadena, USA / Horizons +******************************************************************************* +Target body name: Jupiter (599) {source: jup365_merged} +Center body name: Earth (399) {source: DE441} +Center-site name: Gemini South Obs., Cerro Pachon +******************************************************************************* +Start time : A.D. 2019-Feb-01 00:00:00.0000 UT +Stop time : A.D. 2019-Feb-01 23:59:00.0000 UT +Step-size : 1 minutes +******************************************************************************* +Target pole/equ : IAU_JUPITER {West-longitude positive} +Target radii : 71492.0, 71492.0, 66854.0 km {Equator_a, b, pole_c} +Center geodetic : 289.2634, -30.2406227, 2.71233 {E-lon(deg),Lat(deg),Alt(km)} +Center cylindric: 289.2634,5517.21435,-3194.81213 {E-lon(deg),Dxy(km),Dz(km)} +Center pole/equ : ITRF93 {East-longitude positive} +Center radii : 6378.137, 6378.137, 6356.752 km {Equator_a, b, pole_c} +Target primary : Sun +Vis. interferer : MOON (R_eq= 1737.400) km {source: DE441} +Rel. light bend : Sun {source: jup365_merged} +Rel. lght bnd GM: 1.3271E+11 km^3/s^2 +Atmos refraction: NO (AIRLESS) +RA format : HMS +Time format : CAL +Calendar mode : Mixed Julian/Gregorian +RTS-only print : NO +EOP file : eop.240903.p241127 +EOP coverage : DATA-BASED 1962-JAN-20 TO 2024-SEP-03. PREDICTS-> 2024-NOV-26 +Units conversion: 1 au= 149597870.700 km, c= 299792.458 km/s, 1 day= 86400.0 s +Table cut-offs 1: Elevation (-90.0deg=NO ),Airmass (>38.000=NO), Daylight (YES) +Table cut-offs 2: Solar elongation ( 0.0,180.0=NO ),Local Hour Angle( 0.0=NO ) +Table cut-offs 3: RA/DEC angular rate ( 0.0=NO ) +******************************************************************************* + Date__(UT)__HR:MN R.A._________(ICRF)_________DEC +****************************************************** +$$SOE + 2019-Feb-01 00:00 C 17 05 57.480820 -22 13 55.63433 + 2019-Feb-01 00:01 C 17 05 57.512188 -22 13 55.67395 + 2019-Feb-01 00:02 C 17 05 57.543556 -22 13 55.71357 + 2019-Feb-01 00:03 C 17 05 57.574924 -22 13 55.75320 + 2019-Feb-01 00:04 C 17 05 57.606293 -22 13 55.79284 + 2019-Feb-01 00:05 C 17 05 57.637662 -22 13 55.83249 + 2019-Feb-01 00:06 C 17 05 57.669031 -22 13 55.87214 + 2019-Feb-01 00:07 C 17 05 57.700400 -22 13 55.91181 + 2019-Feb-01 00:08 C 17 05 57.731770 -22 13 55.95148 + 2019-Feb-01 00:09 N 17 05 57.763140 -22 13 55.99116 + 2019-Feb-01 00:10 N 17 05 57.794510 -22 13 56.03085 + 2019-Feb-01 00:11 N 17 05 57.825880 -22 13 56.07055 + 2019-Feb-01 00:12 N 17 05 57.857251 -22 13 56.11026 + 2019-Feb-01 00:13 N 17 05 57.888622 -22 13 56.14997 + 2019-Feb-01 00:14 N 17 05 57.919993 -22 13 56.18970 + 2019-Feb-01 00:15 N 17 05 57.951364 -22 13 56.22943 + 2019-Feb-01 00:16 N 17 05 57.982736 -22 13 56.26917 + 2019-Feb-01 00:17 N 17 05 58.014107 -22 13 56.30892 + 2019-Feb-01 00:18 N 17 05 58.045479 -22 13 56.34868 + 2019-Feb-01 00:19 N 17 05 58.076851 -22 13 56.38845 + 2019-Feb-01 00:20 N 17 05 58.108223 -22 13 56.42822 + 2019-Feb-01 00:21 N 17 05 58.139596 -22 13 56.46800 + 2019-Feb-01 00:22 N 17 05 58.170968 -22 13 56.50780 + 2019-Feb-01 00:23 N 17 05 58.202341 -22 13 56.54760 + 2019-Feb-01 00:24 N 17 05 58.233714 -22 13 56.58741 + 2019-Feb-01 00:25 N 17 05 58.265087 -22 13 56.62723 + 2019-Feb-01 00:26 N 17 05 58.296460 -22 13 56.66705 + 2019-Feb-01 00:27 N 17 05 58.327833 -22 13 56.70689 + 2019-Feb-01 00:28 N 17 05 58.359207 -22 13 56.74673 + 2019-Feb-01 00:29 N 17 05 58.390580 -22 13 56.78658 + 2019-Feb-01 00:30 N 17 05 58.421954 -22 13 56.82644 + 2019-Feb-01 00:31 N 17 05 58.453327 -22 13 56.86631 + 2019-Feb-01 00:32 N 17 05 58.484701 -22 13 56.90619 + 2019-Feb-01 00:33 N 17 05 58.516075 -22 13 56.94608 + 2019-Feb-01 00:34 N 17 05 58.547448 -22 13 56.98598 + 2019-Feb-01 00:35 N 17 05 58.578822 -22 13 57.02588 + 2019-Feb-01 00:36 N 17 05 58.610196 -22 13 57.06579 + 2019-Feb-01 00:37 N 17 05 58.641570 -22 13 57.10572 + 2019-Feb-01 00:38 N 17 05 58.672944 -22 13 57.14565 + 2019-Feb-01 00:39 A 17 05 58.704318 -22 13 57.18558 + 2019-Feb-01 00:40 A 17 05 58.735692 -22 13 57.22553 + 2019-Feb-01 00:41 A 17 05 58.767066 -22 13 57.26549 + 2019-Feb-01 00:42 A 17 05 58.798440 -22 13 57.30545 + 2019-Feb-01 00:43 A 17 05 58.829815 -22 13 57.34543 + 2019-Feb-01 00:44 A 17 05 58.861189 -22 13 57.38541 + 2019-Feb-01 00:45 A 17 05 58.892563 -22 13 57.42540 + 2019-Feb-01 00:46 A 17 05 58.923937 -22 13 57.46540 + 2019-Feb-01 00:47 A 17 05 58.955311 -22 13 57.50541 + 2019-Feb-01 00:48 A 17 05 58.986684 -22 13 57.54543 + 2019-Feb-01 00:49 A 17 05 59.018058 -22 13 57.58545 + 2019-Feb-01 00:50 A 17 05 59.049432 -22 13 57.62549 + 2019-Feb-01 00:51 A 17 05 59.080806 -22 13 57.66553 + 2019-Feb-01 00:52 A 17 05 59.112179 -22 13 57.70558 + 2019-Feb-01 00:53 A 17 05 59.143553 -22 13 57.74565 + 2019-Feb-01 00:54 A 17 05 59.174927 -22 13 57.78572 + 2019-Feb-01 00:55 A 17 05 59.206300 -22 13 57.82579 + 2019-Feb-01 00:56 A 17 05 59.237673 -22 13 57.86588 + 2019-Feb-01 00:57 A 17 05 59.269046 -22 13 57.90598 + 2019-Feb-01 00:58 A 17 05 59.300419 -22 13 57.94608 + 2019-Feb-01 00:59 A 17 05 59.331792 -22 13 57.98620 + 2019-Feb-01 01:00 A 17 05 59.363165 -22 13 58.02632 + 2019-Feb-01 01:01 A 17 05 59.394538 -22 13 58.06645 + 2019-Feb-01 01:02 A 17 05 59.425910 -22 13 58.10659 + 2019-Feb-01 01:03 A 17 05 59.457282 -22 13 58.14674 + 2019-Feb-01 01:04 A 17 05 59.488655 -22 13 58.18689 + 2019-Feb-01 01:05 A 17 05 59.520027 -22 13 58.22706 + 2019-Feb-01 01:06 A 17 05 59.551398 -22 13 58.26723 + 2019-Feb-01 01:07 A 17 05 59.582770 -22 13 58.30742 + 2019-Feb-01 01:08 A 17 05 59.614141 -22 13 58.34761 + 2019-Feb-01 01:09 A 17 05 59.645512 -22 13 58.38781 + 2019-Feb-01 01:10 A 17 05 59.676883 -22 13 58.42802 + 2019-Feb-01 01:11 A 17 05 59.708254 -22 13 58.46824 + 2019-Feb-01 01:12 17 05 59.739625 -22 13 58.50847 + 2019-Feb-01 01:13 17 05 59.770995 -22 13 58.54870 + 2019-Feb-01 01:14 17 05 59.802365 -22 13 58.58895 + 2019-Feb-01 01:15 17 05 59.833735 -22 13 58.62920 + 2019-Feb-01 01:16 17 05 59.865104 -22 13 58.66946 + 2019-Feb-01 01:17 17 05 59.896473 -22 13 58.70973 + 2019-Feb-01 01:18 17 05 59.927842 -22 13 58.75001 + 2019-Feb-01 01:19 17 05 59.959211 -22 13 58.79030 + 2019-Feb-01 01:20 17 05 59.990579 -22 13 58.83060 + 2019-Feb-01 01:21 17 06 00.021947 -22 13 58.87090 + 2019-Feb-01 01:22 17 06 00.053315 -22 13 58.91122 + 2019-Feb-01 01:23 17 06 00.084682 -22 13 58.95154 + 2019-Feb-01 01:24 17 06 00.116050 -22 13 58.99187 + 2019-Feb-01 01:25 17 06 00.147416 -22 13 59.03221 + 2019-Feb-01 01:26 17 06 00.178783 -22 13 59.07256 + 2019-Feb-01 01:27 17 06 00.210149 -22 13 59.11292 + 2019-Feb-01 01:28 17 06 00.241515 -22 13 59.15329 + 2019-Feb-01 01:29 17 06 00.272880 -22 13 59.19366 + 2019-Feb-01 01:30 17 06 00.304245 -22 13 59.23405 + 2019-Feb-01 01:31 17 06 00.335609 -22 13 59.27444 + 2019-Feb-01 01:32 17 06 00.366974 -22 13 59.31484 + 2019-Feb-01 01:33 17 06 00.398337 -22 13 59.35525 + 2019-Feb-01 01:34 17 06 00.429701 -22 13 59.39567 + 2019-Feb-01 01:35 17 06 00.461064 -22 13 59.43610 + 2019-Feb-01 01:36 17 06 00.492426 -22 13 59.47653 + 2019-Feb-01 01:37 17 06 00.523789 -22 13 59.51698 + 2019-Feb-01 01:38 17 06 00.555150 -22 13 59.55743 + 2019-Feb-01 01:39 17 06 00.586512 -22 13 59.59790 + 2019-Feb-01 01:40 17 06 00.617872 -22 13 59.63837 + 2019-Feb-01 01:41 17 06 00.649233 -22 13 59.67885 + 2019-Feb-01 01:42 17 06 00.680593 -22 13 59.71933 + 2019-Feb-01 01:43 17 06 00.711952 -22 13 59.75983 + 2019-Feb-01 01:44 17 06 00.743311 -22 13 59.80034 + 2019-Feb-01 01:45 17 06 00.774669 -22 13 59.84085 + 2019-Feb-01 01:46 17 06 00.806027 -22 13 59.88137 + 2019-Feb-01 01:47 17 06 00.837385 -22 13 59.92190 + 2019-Feb-01 01:48 17 06 00.868742 -22 13 59.96244 + 2019-Feb-01 01:49 17 06 00.900098 -22 14 00.00299 + 2019-Feb-01 01:50 17 06 00.931454 -22 14 00.04355 + 2019-Feb-01 01:51 17 06 00.962809 -22 14 00.08411 + 2019-Feb-01 01:52 17 06 00.994164 -22 14 00.12469 + 2019-Feb-01 01:53 17 06 01.025518 -22 14 00.16527 + 2019-Feb-01 01:54 17 06 01.056872 -22 14 00.20586 + 2019-Feb-01 01:55 17 06 01.088225 -22 14 00.24646 + 2019-Feb-01 01:56 17 06 01.119578 -22 14 00.28707 + 2019-Feb-01 01:57 17 06 01.150930 -22 14 00.32769 + 2019-Feb-01 01:58 17 06 01.182281 -22 14 00.36831 + 2019-Feb-01 01:59 17 06 01.213632 -22 14 00.40895 + 2019-Feb-01 02:00 17 06 01.244982 -22 14 00.44959 + 2019-Feb-01 02:01 17 06 01.276332 -22 14 00.49024 + 2019-Feb-01 02:02 17 06 01.307681 -22 14 00.53090 + 2019-Feb-01 02:03 17 06 01.339029 -22 14 00.57157 + 2019-Feb-01 02:04 17 06 01.370377 -22 14 00.61224 + 2019-Feb-01 02:05 17 06 01.401724 -22 14 00.65293 + 2019-Feb-01 02:06 17 06 01.433070 -22 14 00.69362 + 2019-Feb-01 02:07 17 06 01.464416 -22 14 00.73432 + 2019-Feb-01 02:08 17 06 01.495761 -22 14 00.77503 + 2019-Feb-01 02:09 17 06 01.527105 -22 14 00.81575 + 2019-Feb-01 02:10 17 06 01.558449 -22 14 00.85647 + 2019-Feb-01 02:11 17 06 01.589792 -22 14 00.89721 + 2019-Feb-01 02:12 17 06 01.621134 -22 14 00.93795 + 2019-Feb-01 02:13 17 06 01.652476 -22 14 00.97870 + 2019-Feb-01 02:14 17 06 01.683817 -22 14 01.01946 + 2019-Feb-01 02:15 17 06 01.715157 -22 14 01.06023 + 2019-Feb-01 02:16 17 06 01.746497 -22 14 01.10101 + 2019-Feb-01 02:17 17 06 01.777835 -22 14 01.14179 + 2019-Feb-01 02:18 17 06 01.809173 -22 14 01.18259 + 2019-Feb-01 02:19 17 06 01.840511 -22 14 01.22339 + 2019-Feb-01 02:20 17 06 01.871847 -22 14 01.26420 + 2019-Feb-01 02:21 17 06 01.903183 -22 14 01.30502 + 2019-Feb-01 02:22 17 06 01.934518 -22 14 01.34584 + 2019-Feb-01 02:23 17 06 01.965852 -22 14 01.38668 + 2019-Feb-01 02:24 17 06 01.997186 -22 14 01.42752 + 2019-Feb-01 02:25 17 06 02.028518 -22 14 01.46837 + 2019-Feb-01 02:26 17 06 02.059850 -22 14 01.50923 + 2019-Feb-01 02:27 17 06 02.091181 -22 14 01.55010 + 2019-Feb-01 02:28 17 06 02.122511 -22 14 01.59097 + 2019-Feb-01 02:29 17 06 02.153841 -22 14 01.63186 + 2019-Feb-01 02:30 17 06 02.185169 -22 14 01.67275 + 2019-Feb-01 02:31 17 06 02.216497 -22 14 01.71365 + 2019-Feb-01 02:32 17 06 02.247824 -22 14 01.75456 + 2019-Feb-01 02:33 17 06 02.279150 -22 14 01.79547 + 2019-Feb-01 02:34 17 06 02.310475 -22 14 01.83640 + 2019-Feb-01 02:35 17 06 02.341799 -22 14 01.87733 + 2019-Feb-01 02:36 17 06 02.373123 -22 14 01.91827 + 2019-Feb-01 02:37 17 06 02.404445 -22 14 01.95922 + 2019-Feb-01 02:38 17 06 02.435767 -22 14 02.00017 + 2019-Feb-01 02:39 17 06 02.467088 -22 14 02.04114 + 2019-Feb-01 02:40 17 06 02.498407 -22 14 02.08211 + 2019-Feb-01 02:41 17 06 02.529726 -22 14 02.12309 + 2019-Feb-01 02:42 17 06 02.561044 -22 14 02.16408 + 2019-Feb-01 02:43 17 06 02.592361 -22 14 02.20507 + 2019-Feb-01 02:44 17 06 02.623678 -22 14 02.24607 + 2019-Feb-01 02:45 17 06 02.654993 -22 14 02.28709 + 2019-Feb-01 02:46 17 06 02.686307 -22 14 02.32811 + 2019-Feb-01 02:47 17 06 02.717621 -22 14 02.36913 + 2019-Feb-01 02:48 17 06 02.748933 -22 14 02.41017 + 2019-Feb-01 02:49 17 06 02.780244 -22 14 02.45121 + 2019-Feb-01 02:50 17 06 02.811555 -22 14 02.49226 + 2019-Feb-01 02:51 17 06 02.842864 -22 14 02.53332 + 2019-Feb-01 02:52 17 06 02.874173 -22 14 02.57439 + 2019-Feb-01 02:53 17 06 02.905480 -22 14 02.61546 + 2019-Feb-01 02:54 17 06 02.936787 -22 14 02.65654 + 2019-Feb-01 02:55 17 06 02.968092 -22 14 02.69763 + 2019-Feb-01 02:56 17 06 02.999397 -22 14 02.73873 + 2019-Feb-01 02:57 17 06 03.030700 -22 14 02.77983 + 2019-Feb-01 02:58 17 06 03.062002 -22 14 02.82095 + 2019-Feb-01 02:59 17 06 03.093304 -22 14 02.86207 + 2019-Feb-01 03:00 17 06 03.124604 -22 14 02.90319 + 2019-Feb-01 03:01 17 06 03.155903 -22 14 02.94433 + 2019-Feb-01 03:02 17 06 03.187202 -22 14 02.98547 + 2019-Feb-01 03:03 17 06 03.218499 -22 14 03.02662 + 2019-Feb-01 03:04 17 06 03.249795 -22 14 03.06778 + 2019-Feb-01 03:05 17 06 03.281090 -22 14 03.10895 + 2019-Feb-01 03:06 17 06 03.312384 -22 14 03.15012 + 2019-Feb-01 03:07 17 06 03.343677 -22 14 03.19130 + 2019-Feb-01 03:08 17 06 03.374969 -22 14 03.23249 + 2019-Feb-01 03:09 17 06 03.406259 -22 14 03.27368 + 2019-Feb-01 03:10 17 06 03.437549 -22 14 03.31489 + 2019-Feb-01 03:11 17 06 03.468837 -22 14 03.35610 + 2019-Feb-01 03:12 17 06 03.500124 -22 14 03.39731 + 2019-Feb-01 03:13 17 06 03.531411 -22 14 03.43854 + 2019-Feb-01 03:14 17 06 03.562696 -22 14 03.47977 + 2019-Feb-01 03:15 17 06 03.593979 -22 14 03.52101 + 2019-Feb-01 03:16 17 06 03.625262 -22 14 03.56226 + 2019-Feb-01 03:17 17 06 03.656544 -22 14 03.60351 + 2019-Feb-01 03:18 17 06 03.687824 -22 14 03.64477 + 2019-Feb-01 03:19 17 06 03.719103 -22 14 03.68604 + 2019-Feb-01 03:20 17 06 03.750381 -22 14 03.72732 + 2019-Feb-01 03:21 17 06 03.781658 -22 14 03.76860 + 2019-Feb-01 03:22 17 06 03.812934 -22 14 03.80989 + 2019-Feb-01 03:23 17 06 03.844208 -22 14 03.85119 + 2019-Feb-01 03:24 17 06 03.875482 -22 14 03.89249 + 2019-Feb-01 03:25 17 06 03.906754 -22 14 03.93380 + 2019-Feb-01 03:26 17 06 03.938025 -22 14 03.97512 + 2019-Feb-01 03:27 17 06 03.969294 -22 14 04.01644 + 2019-Feb-01 03:28 17 06 04.000563 -22 14 04.05778 + 2019-Feb-01 03:29 17 06 04.031830 -22 14 04.09912 + 2019-Feb-01 03:30 17 06 04.063096 -22 14 04.14046 + 2019-Feb-01 03:31 17 06 04.094361 -22 14 04.18181 + 2019-Feb-01 03:32 17 06 04.125624 -22 14 04.22317 + 2019-Feb-01 03:33 17 06 04.156886 -22 14 04.26454 + 2019-Feb-01 03:34 17 06 04.188147 -22 14 04.30592 + 2019-Feb-01 03:35 17 06 04.219407 -22 14 04.34730 + 2019-Feb-01 03:36 17 06 04.250665 -22 14 04.38868 + 2019-Feb-01 03:37 17 06 04.281922 -22 14 04.43008 + 2019-Feb-01 03:38 17 06 04.313178 -22 14 04.47148 + 2019-Feb-01 03:39 17 06 04.344432 -22 14 04.51289 + 2019-Feb-01 03:40 17 06 04.375685 -22 14 04.55430 + 2019-Feb-01 03:41 17 06 04.406937 -22 14 04.59572 + 2019-Feb-01 03:42 17 06 04.438188 -22 14 04.63715 + 2019-Feb-01 03:43 17 06 04.469437 -22 14 04.67858 + 2019-Feb-01 03:44 17 06 04.500685 -22 14 04.72002 + 2019-Feb-01 03:45 17 06 04.531932 -22 14 04.76147 + 2019-Feb-01 03:46 17 06 04.563177 -22 14 04.80293 + 2019-Feb-01 03:47 17 06 04.594421 -22 14 04.84439 + 2019-Feb-01 03:48 17 06 04.625663 -22 14 04.88585 + 2019-Feb-01 03:49 17 06 04.656904 -22 14 04.92733 + 2019-Feb-01 03:50 17 06 04.688144 -22 14 04.96881 + 2019-Feb-01 03:51 17 06 04.719382 -22 14 05.01029 + 2019-Feb-01 03:52 17 06 04.750620 -22 14 05.05179 + 2019-Feb-01 03:53 17 06 04.781855 -22 14 05.09328 + 2019-Feb-01 03:54 17 06 04.813089 -22 14 05.13479 + 2019-Feb-01 03:55 17 06 04.844322 -22 14 05.17630 + 2019-Feb-01 03:56 17 06 04.875554 -22 14 05.21782 + 2019-Feb-01 03:57 17 06 04.906784 -22 14 05.25934 + 2019-Feb-01 03:58 17 06 04.938013 -22 14 05.30087 + 2019-Feb-01 03:59 17 06 04.969240 -22 14 05.34241 + 2019-Feb-01 04:00 17 06 05.000466 -22 14 05.38395 + 2019-Feb-01 04:01 17 06 05.031690 -22 14 05.42550 + 2019-Feb-01 04:02 17 06 05.062913 -22 14 05.46706 + 2019-Feb-01 04:03 17 06 05.094134 -22 14 05.50862 + 2019-Feb-01 04:04 17 06 05.125355 -22 14 05.55019 + 2019-Feb-01 04:05 17 06 05.156573 -22 14 05.59176 + 2019-Feb-01 04:06 17 06 05.187790 -22 14 05.63334 + 2019-Feb-01 04:07 17 06 05.219006 -22 14 05.67492 + 2019-Feb-01 04:08 17 06 05.250220 -22 14 05.71651 + 2019-Feb-01 04:09 17 06 05.281433 -22 14 05.75811 + 2019-Feb-01 04:10 17 06 05.312644 -22 14 05.79971 + 2019-Feb-01 04:11 17 06 05.343854 -22 14 05.84132 + 2019-Feb-01 04:12 17 06 05.375062 -22 14 05.88294 + 2019-Feb-01 04:13 17 06 05.406269 -22 14 05.92456 + 2019-Feb-01 04:14 17 06 05.437475 -22 14 05.96618 + 2019-Feb-01 04:15 17 06 05.468678 -22 14 06.00781 + 2019-Feb-01 04:16 17 06 05.499881 -22 14 06.04945 + 2019-Feb-01 04:17 17 06 05.531081 -22 14 06.09110 + 2019-Feb-01 04:18 17 06 05.562281 -22 14 06.13274 + 2019-Feb-01 04:19 17 06 05.593478 -22 14 06.17440 + 2019-Feb-01 04:20 17 06 05.624675 -22 14 06.21606 + 2019-Feb-01 04:21 17 06 05.655869 -22 14 06.25772 + 2019-Feb-01 04:22 17 06 05.687062 -22 14 06.29939 + 2019-Feb-01 04:23 17 06 05.718254 -22 14 06.34107 + 2019-Feb-01 04:24 17 06 05.749444 -22 14 06.38275 + 2019-Feb-01 04:25 17 06 05.780632 -22 14 06.42444 + 2019-Feb-01 04:26 17 06 05.811819 -22 14 06.46613 + 2019-Feb-01 04:27 17 06 05.843005 -22 14 06.50783 + 2019-Feb-01 04:28 17 06 05.874188 -22 14 06.54953 + 2019-Feb-01 04:29 17 06 05.905371 -22 14 06.59124 + 2019-Feb-01 04:30 17 06 05.936551 -22 14 06.63296 + 2019-Feb-01 04:31 17 06 05.967730 -22 14 06.67468 + 2019-Feb-01 04:32 17 06 05.998908 -22 14 06.71640 + 2019-Feb-01 04:33 17 06 06.030083 -22 14 06.75813 + 2019-Feb-01 04:34 17 06 06.061258 -22 14 06.79986 + 2019-Feb-01 04:35 17 06 06.092430 -22 14 06.84160 + 2019-Feb-01 04:36 17 06 06.123601 -22 14 06.88335 + 2019-Feb-01 04:37 17 06 06.154771 -22 14 06.92510 + 2019-Feb-01 04:38 17 06 06.185938 -22 14 06.96685 + 2019-Feb-01 04:39 17 06 06.217105 -22 14 07.00861 + 2019-Feb-01 04:40 17 06 06.248269 -22 14 07.05038 + 2019-Feb-01 04:41 17 06 06.279432 -22 14 07.09215 + 2019-Feb-01 04:42 17 06 06.310593 -22 14 07.13392 + 2019-Feb-01 04:43 17 06 06.341753 -22 14 07.17570 + 2019-Feb-01 04:44 17 06 06.372911 -22 14 07.21749 + 2019-Feb-01 04:45 17 06 06.404067 -22 14 07.25927 + 2019-Feb-01 04:46 17 06 06.435222 -22 14 07.30107 + 2019-Feb-01 04:47 17 06 06.466375 -22 14 07.34287 + 2019-Feb-01 04:48 17 06 06.497526 -22 14 07.38467 + 2019-Feb-01 04:49 17 06 06.528675 -22 14 07.42648 + 2019-Feb-01 04:50 17 06 06.559823 -22 14 07.46829 + 2019-Feb-01 04:51 17 06 06.590970 -22 14 07.51011 + 2019-Feb-01 04:52 17 06 06.622114 -22 14 07.55193 + 2019-Feb-01 04:53 17 06 06.653257 -22 14 07.59375 + 2019-Feb-01 04:54 17 06 06.684398 -22 14 07.63558 + 2019-Feb-01 04:55 17 06 06.715538 -22 14 07.67742 + 2019-Feb-01 04:56 17 06 06.746676 -22 14 07.71926 + 2019-Feb-01 04:57 17 06 06.777812 -22 14 07.76110 + 2019-Feb-01 04:58 17 06 06.808946 -22 14 07.80295 + 2019-Feb-01 04:59 17 06 06.840079 -22 14 07.84480 + 2019-Feb-01 05:00 17 06 06.871210 -22 14 07.88666 + 2019-Feb-01 05:01 17 06 06.902339 -22 14 07.92852 + 2019-Feb-01 05:02 17 06 06.933466 -22 14 07.97038 + 2019-Feb-01 05:03 17 06 06.964592 -22 14 08.01225 + 2019-Feb-01 05:04 17 06 06.995716 -22 14 08.05412 + 2019-Feb-01 05:05 17 06 07.026838 -22 14 08.09600 + 2019-Feb-01 05:06 17 06 07.057959 -22 14 08.13788 + 2019-Feb-01 05:07 17 06 07.089078 -22 14 08.17977 + 2019-Feb-01 05:08 17 06 07.120195 -22 14 08.22165 + 2019-Feb-01 05:09 17 06 07.151310 -22 14 08.26355 + 2019-Feb-01 05:10 17 06 07.182423 -22 14 08.30544 + 2019-Feb-01 05:11 17 06 07.213535 -22 14 08.34734 + 2019-Feb-01 05:12 17 06 07.244645 -22 14 08.38925 + 2019-Feb-01 05:13 17 06 07.275753 -22 14 08.43116 + 2019-Feb-01 05:14 17 06 07.306860 -22 14 08.47307 + 2019-Feb-01 05:15 17 06 07.337964 -22 14 08.51499 + 2019-Feb-01 05:16 17 06 07.369067 -22 14 08.55690 + 2019-Feb-01 05:17 17 06 07.400168 -22 14 08.59883 + 2019-Feb-01 05:18 17 06 07.431268 -22 14 08.64075 + 2019-Feb-01 05:19 17 06 07.462365 -22 14 08.68268 + 2019-Feb-01 05:20 17 06 07.493461 -22 14 08.72462 + 2019-Feb-01 05:21 17 06 07.524555 -22 14 08.76656 + 2019-Feb-01 05:22 17 06 07.555647 -22 14 08.80850 + 2019-Feb-01 05:23 17 06 07.586737 -22 14 08.85044 + 2019-Feb-01 05:24 17 06 07.617826 -22 14 08.89239 + 2019-Feb-01 05:25 17 06 07.648913 -22 14 08.93434 + 2019-Feb-01 05:26 17 06 07.679997 -22 14 08.97629 + 2019-Feb-01 05:27 17 06 07.711081 -22 14 09.01825 + 2019-Feb-01 05:28 17 06 07.742162 -22 14 09.06021 + 2019-Feb-01 05:29 17 06 07.773241 -22 14 09.10217 + 2019-Feb-01 05:30 17 06 07.804319 -22 14 09.14414 + 2019-Feb-01 05:31 17 06 07.835394 -22 14 09.18611 + 2019-Feb-01 05:32 17 06 07.866468 -22 14 09.22808 + 2019-Feb-01 05:33 17 06 07.897540 -22 14 09.27006 + 2019-Feb-01 05:34 17 06 07.928611 -22 14 09.31204 + 2019-Feb-01 05:35 17 06 07.959679 -22 14 09.35402 + 2019-Feb-01 05:36 17 06 07.990746 -22 14 09.39601 + 2019-Feb-01 05:37 17 06 08.021810 -22 14 09.43800 + 2019-Feb-01 05:38 17 06 08.052873 -22 14 09.47999 + 2019-Feb-01 05:39 17 06 08.083934 -22 14 09.52198 + 2019-Feb-01 05:40 17 06 08.114993 -22 14 09.56398 + 2019-Feb-01 05:41 17 06 08.146050 -22 14 09.60598 + 2019-Feb-01 05:42 17 06 08.177106 -22 14 09.64798 + 2019-Feb-01 05:43 17 06 08.208159 -22 14 09.68998 + 2019-Feb-01 05:44 17 06 08.239211 -22 14 09.73199 + 2019-Feb-01 05:45 17 06 08.270261 -22 14 09.77400 + 2019-Feb-01 05:46 17 06 08.301309 -22 14 09.81601 + 2019-Feb-01 05:47 17 06 08.332355 -22 14 09.85803 + 2019-Feb-01 05:48 17 06 08.363399 -22 14 09.90004 + 2019-Feb-01 05:49 17 06 08.394441 -22 14 09.94206 + 2019-Feb-01 05:50 17 06 08.425481 -22 14 09.98409 + 2019-Feb-01 05:51 17 06 08.456520 -22 14 10.02611 + 2019-Feb-01 05:52 17 06 08.487556 -22 14 10.06814 + 2019-Feb-01 05:53 17 06 08.518591 -22 14 10.11017 + 2019-Feb-01 05:54 17 06 08.549624 -22 14 10.15220 + 2019-Feb-01 05:55 17 06 08.580655 -22 14 10.19423 + 2019-Feb-01 05:56 17 06 08.611684 -22 14 10.23627 + 2019-Feb-01 05:57 17 06 08.642711 -22 14 10.27830 + 2019-Feb-01 05:58 17 06 08.673736 -22 14 10.32034 + 2019-Feb-01 05:59 r 17 06 08.704759 -22 14 10.36239 + 2019-Feb-01 06:00 17 06 08.735781 -22 14 10.40443 + 2019-Feb-01 06:01 17 06 08.766800 -22 14 10.44648 + 2019-Feb-01 06:02 17 06 08.797818 -22 14 10.48852 + 2019-Feb-01 06:03 17 06 08.828833 -22 14 10.53057 + 2019-Feb-01 06:04 17 06 08.859847 -22 14 10.57262 + 2019-Feb-01 06:05 17 06 08.890859 -22 14 10.61468 + 2019-Feb-01 06:06 17 06 08.921868 -22 14 10.65673 + 2019-Feb-01 06:07 17 06 08.952876 -22 14 10.69879 + 2019-Feb-01 06:08 17 06 08.983882 -22 14 10.74085 + 2019-Feb-01 06:09 17 06 09.014886 -22 14 10.78291 + 2019-Feb-01 06:10 17 06 09.045889 -22 14 10.82497 + 2019-Feb-01 06:11 17 06 09.076889 -22 14 10.86703 + 2019-Feb-01 06:12 17 06 09.107887 -22 14 10.90910 + 2019-Feb-01 06:13 17 06 09.138883 -22 14 10.95116 + 2019-Feb-01 06:14 17 06 09.169878 -22 14 10.99323 + 2019-Feb-01 06:15 17 06 09.200870 -22 14 11.03530 + 2019-Feb-01 06:16 17 06 09.231861 -22 14 11.07737 + 2019-Feb-01 06:17 17 06 09.262849 -22 14 11.11944 + 2019-Feb-01 06:18 17 06 09.293836 -22 14 11.16152 + 2019-Feb-01 06:19 17 06 09.324820 -22 14 11.20359 + 2019-Feb-01 06:20 17 06 09.355803 -22 14 11.24567 + 2019-Feb-01 06:21 17 06 09.386784 -22 14 11.28774 + 2019-Feb-01 06:22 17 06 09.417763 -22 14 11.32982 + 2019-Feb-01 06:23 17 06 09.448739 -22 14 11.37190 + 2019-Feb-01 06:24 17 06 09.479714 -22 14 11.41398 + 2019-Feb-01 06:25 17 06 09.510687 -22 14 11.45606 + 2019-Feb-01 06:26 17 06 09.541658 -22 14 11.49814 + 2019-Feb-01 06:27 17 06 09.572627 -22 14 11.54022 + 2019-Feb-01 06:28 17 06 09.603594 -22 14 11.58231 + 2019-Feb-01 06:29 17 06 09.634559 -22 14 11.62439 + 2019-Feb-01 06:30 17 06 09.665522 -22 14 11.66648 + 2019-Feb-01 06:31 17 06 09.696484 -22 14 11.70856 + 2019-Feb-01 06:32 17 06 09.727443 -22 14 11.75065 + 2019-Feb-01 06:33 17 06 09.758400 -22 14 11.79274 + 2019-Feb-01 06:34 17 06 09.789355 -22 14 11.83483 + 2019-Feb-01 06:35 17 06 09.820308 -22 14 11.87692 + 2019-Feb-01 06:36 17 06 09.851260 -22 14 11.91900 + 2019-Feb-01 06:37 17 06 09.882209 -22 14 11.96109 + 2019-Feb-01 06:38 17 06 09.913156 -22 14 12.00318 + 2019-Feb-01 06:39 17 06 09.944102 -22 14 12.04528 + 2019-Feb-01 06:40 17 06 09.975045 -22 14 12.08737 + 2019-Feb-01 06:41 17 06 10.005987 -22 14 12.12946 + 2019-Feb-01 06:42 17 06 10.036926 -22 14 12.17155 + 2019-Feb-01 06:43 17 06 10.067864 -22 14 12.21364 + 2019-Feb-01 06:44 17 06 10.098799 -22 14 12.25573 + 2019-Feb-01 06:45 17 06 10.129733 -22 14 12.29783 + 2019-Feb-01 06:46 17 06 10.160664 -22 14 12.33992 + 2019-Feb-01 06:47 17 06 10.191594 -22 14 12.38201 + 2019-Feb-01 06:48 17 06 10.222521 -22 14 12.42410 + 2019-Feb-01 06:49 17 06 10.253447 -22 14 12.46620 + 2019-Feb-01 06:50 17 06 10.284371 -22 14 12.50829 + 2019-Feb-01 06:51 17 06 10.315292 -22 14 12.55038 + 2019-Feb-01 06:52 17 06 10.346212 -22 14 12.59247 + 2019-Feb-01 06:53 17 06 10.377129 -22 14 12.63457 + 2019-Feb-01 06:54 17 06 10.408045 -22 14 12.67666 + 2019-Feb-01 06:55 17 06 10.438959 -22 14 12.71875 + 2019-Feb-01 06:56 17 06 10.469871 -22 14 12.76084 + 2019-Feb-01 06:57 17 06 10.500780 -22 14 12.80293 + 2019-Feb-01 06:58 17 06 10.531688 -22 14 12.84502 + 2019-Feb-01 06:59 17 06 10.562594 -22 14 12.88712 + 2019-Feb-01 07:00 17 06 10.593498 -22 14 12.92921 + 2019-Feb-01 07:01 17 06 10.624399 -22 14 12.97130 + 2019-Feb-01 07:02 17 06 10.655299 -22 14 13.01338 + 2019-Feb-01 07:03 17 06 10.686197 -22 14 13.05547 + 2019-Feb-01 07:04 17 06 10.717093 -22 14 13.09756 + 2019-Feb-01 07:05 17 06 10.747987 -22 14 13.13965 + 2019-Feb-01 07:06 17 06 10.778878 -22 14 13.18174 + 2019-Feb-01 07:07 17 06 10.809768 -22 14 13.22382 + 2019-Feb-01 07:08 17 06 10.840656 -22 14 13.26591 + 2019-Feb-01 07:09 17 06 10.871542 -22 14 13.30799 + 2019-Feb-01 07:10 17 06 10.902426 -22 14 13.35007 + 2019-Feb-01 07:11 17 06 10.933308 -22 14 13.39216 + 2019-Feb-01 07:12 m 17 06 10.964188 -22 14 13.43424 + 2019-Feb-01 07:13 m 17 06 10.995066 -22 14 13.47632 + 2019-Feb-01 07:14 m 17 06 11.025942 -22 14 13.51840 + 2019-Feb-01 07:15 m 17 06 11.056816 -22 14 13.56048 + 2019-Feb-01 07:16 m 17 06 11.087688 -22 14 13.60256 + 2019-Feb-01 07:17 m 17 06 11.118558 -22 14 13.64463 + 2019-Feb-01 07:18 m 17 06 11.149426 -22 14 13.68671 + 2019-Feb-01 07:19 m 17 06 11.180292 -22 14 13.72878 + 2019-Feb-01 07:20 m 17 06 11.211156 -22 14 13.77085 + 2019-Feb-01 07:21 m 17 06 11.242018 -22 14 13.81293 + 2019-Feb-01 07:22 m 17 06 11.272878 -22 14 13.85500 + 2019-Feb-01 07:23 m 17 06 11.303736 -22 14 13.89707 + 2019-Feb-01 07:24 m 17 06 11.334592 -22 14 13.93913 + 2019-Feb-01 07:25 m 17 06 11.365446 -22 14 13.98120 + 2019-Feb-01 07:26 m 17 06 11.396298 -22 14 14.02326 + 2019-Feb-01 07:27 m 17 06 11.427148 -22 14 14.06533 + 2019-Feb-01 07:28 m 17 06 11.457996 -22 14 14.10739 + 2019-Feb-01 07:29 m 17 06 11.488843 -22 14 14.14945 + 2019-Feb-01 07:30 m 17 06 11.519687 -22 14 14.19151 + 2019-Feb-01 07:31 m 17 06 11.550529 -22 14 14.23356 + 2019-Feb-01 07:32 m 17 06 11.581369 -22 14 14.27562 + 2019-Feb-01 07:33 m 17 06 11.612208 -22 14 14.31767 + 2019-Feb-01 07:34 m 17 06 11.643044 -22 14 14.35972 + 2019-Feb-01 07:35 m 17 06 11.673878 -22 14 14.40177 + 2019-Feb-01 07:36 m 17 06 11.704711 -22 14 14.44382 + 2019-Feb-01 07:37 m 17 06 11.735541 -22 14 14.48586 + 2019-Feb-01 07:38 m 17 06 11.766370 -22 14 14.52791 + 2019-Feb-01 07:39 m 17 06 11.797196 -22 14 14.56995 + 2019-Feb-01 07:40 m 17 06 11.828021 -22 14 14.61199 + 2019-Feb-01 07:41 m 17 06 11.858843 -22 14 14.65402 + 2019-Feb-01 07:42 m 17 06 11.889664 -22 14 14.69606 + 2019-Feb-01 07:43 m 17 06 11.920482 -22 14 14.73809 + 2019-Feb-01 07:44 m 17 06 11.951299 -22 14 14.78012 + 2019-Feb-01 07:45 m 17 06 11.982114 -22 14 14.82215 + 2019-Feb-01 07:46 m 17 06 12.012926 -22 14 14.86417 + 2019-Feb-01 07:47 m 17 06 12.043737 -22 14 14.90620 + 2019-Feb-01 07:48 m 17 06 12.074546 -22 14 14.94822 + 2019-Feb-01 07:49 m 17 06 12.105353 -22 14 14.99024 + 2019-Feb-01 07:50 m 17 06 12.136158 -22 14 15.03225 + 2019-Feb-01 07:51 m 17 06 12.166960 -22 14 15.07427 + 2019-Feb-01 07:52 m 17 06 12.197761 -22 14 15.11628 + 2019-Feb-01 07:53 m 17 06 12.228560 -22 14 15.15829 + 2019-Feb-01 07:54 m 17 06 12.259358 -22 14 15.20029 + 2019-Feb-01 07:55 m 17 06 12.290153 -22 14 15.24230 + 2019-Feb-01 07:56 m 17 06 12.320946 -22 14 15.28430 + 2019-Feb-01 07:57 m 17 06 12.351737 -22 14 15.32629 + 2019-Feb-01 07:58 m 17 06 12.382526 -22 14 15.36829 + 2019-Feb-01 07:59 m 17 06 12.413314 -22 14 15.41028 + 2019-Feb-01 08:00 m 17 06 12.444099 -22 14 15.45227 + 2019-Feb-01 08:01 m 17 06 12.474883 -22 14 15.49426 + 2019-Feb-01 08:02 m 17 06 12.505664 -22 14 15.53624 + 2019-Feb-01 08:03 m 17 06 12.536444 -22 14 15.57822 + 2019-Feb-01 08:04 m 17 06 12.567221 -22 14 15.62020 + 2019-Feb-01 08:05 m 17 06 12.597997 -22 14 15.66217 + 2019-Feb-01 08:06 m 17 06 12.628771 -22 14 15.70414 + 2019-Feb-01 08:07 m 17 06 12.659543 -22 14 15.74611 + 2019-Feb-01 08:08 m 17 06 12.690313 -22 14 15.78808 + 2019-Feb-01 08:09 m 17 06 12.721081 -22 14 15.83004 + 2019-Feb-01 08:10 m 17 06 12.751847 -22 14 15.87200 + 2019-Feb-01 08:11 m 17 06 12.782611 -22 14 15.91395 + 2019-Feb-01 08:12 m 17 06 12.813374 -22 14 15.95590 + 2019-Feb-01 08:13 m 17 06 12.844134 -22 14 15.99785 + 2019-Feb-01 08:14 m 17 06 12.874892 -22 14 16.03979 + 2019-Feb-01 08:15 m 17 06 12.905649 -22 14 16.08174 + 2019-Feb-01 08:16 m 17 06 12.936404 -22 14 16.12367 + 2019-Feb-01 08:17 m 17 06 12.967156 -22 14 16.16561 + 2019-Feb-01 08:18 m 17 06 12.997907 -22 14 16.20754 + 2019-Feb-01 08:19 m 17 06 13.028656 -22 14 16.24946 + 2019-Feb-01 08:20 m 17 06 13.059403 -22 14 16.29139 + 2019-Feb-01 08:21 m 17 06 13.090148 -22 14 16.33331 + 2019-Feb-01 08:22 m 17 06 13.120892 -22 14 16.37522 + 2019-Feb-01 08:23 m 17 06 13.151633 -22 14 16.41714 + 2019-Feb-01 08:24 m 17 06 13.182373 -22 14 16.45904 + 2019-Feb-01 08:25 m 17 06 13.213110 -22 14 16.50095 + 2019-Feb-01 08:26 m 17 06 13.243846 -22 14 16.54285 + 2019-Feb-01 08:27 m 17 06 13.274580 -22 14 16.58474 + 2019-Feb-01 08:28 m 17 06 13.305312 -22 14 16.62664 + 2019-Feb-01 08:29 m 17 06 13.336042 -22 14 16.66853 + 2019-Feb-01 08:30 m 17 06 13.366770 -22 14 16.71041 + 2019-Feb-01 08:31 m 17 06 13.397496 -22 14 16.75229 + 2019-Feb-01 08:32 m 17 06 13.428221 -22 14 16.79417 + 2019-Feb-01 08:33 m 17 06 13.458944 -22 14 16.83604 + 2019-Feb-01 08:34 m 17 06 13.489664 -22 14 16.87791 + 2019-Feb-01 08:35 m 17 06 13.520383 -22 14 16.91977 + 2019-Feb-01 08:36 m 17 06 13.551100 -22 14 16.96163 + 2019-Feb-01 08:37 m 17 06 13.581816 -22 14 17.00348 + 2019-Feb-01 08:38 m 17 06 13.612529 -22 14 17.04533 + 2019-Feb-01 08:39 m 17 06 13.643241 -22 14 17.08718 + 2019-Feb-01 08:40 m 17 06 13.673950 -22 14 17.12902 + 2019-Feb-01 08:41 m 17 06 13.704658 -22 14 17.17086 + 2019-Feb-01 08:42 Am 17 06 13.735364 -22 14 17.21269 + 2019-Feb-01 08:43 Am 17 06 13.766068 -22 14 17.25452 + 2019-Feb-01 08:44 Am 17 06 13.796771 -22 14 17.29634 + 2019-Feb-01 08:45 Am 17 06 13.827471 -22 14 17.33816 + 2019-Feb-01 08:46 Am 17 06 13.858170 -22 14 17.37998 + 2019-Feb-01 08:47 Am 17 06 13.888867 -22 14 17.42179 + 2019-Feb-01 08:48 Am 17 06 13.919562 -22 14 17.46359 + 2019-Feb-01 08:49 Am 17 06 13.950255 -22 14 17.50539 + 2019-Feb-01 08:50 Am 17 06 13.980947 -22 14 17.54719 + 2019-Feb-01 08:51 Am 17 06 14.011636 -22 14 17.58898 + 2019-Feb-01 08:52 Am 17 06 14.042324 -22 14 17.63076 + 2019-Feb-01 08:53 Am 17 06 14.073010 -22 14 17.67254 + 2019-Feb-01 08:54 Am 17 06 14.103695 -22 14 17.71432 + 2019-Feb-01 08:55 Am 17 06 14.134377 -22 14 17.75609 + 2019-Feb-01 08:56 Am 17 06 14.165058 -22 14 17.79785 + 2019-Feb-01 08:57 Am 17 06 14.195737 -22 14 17.83961 + 2019-Feb-01 08:58 Am 17 06 14.226414 -22 14 17.88137 + 2019-Feb-01 08:59 Am 17 06 14.257089 -22 14 17.92312 + 2019-Feb-01 09:00 Am 17 06 14.287763 -22 14 17.96487 + 2019-Feb-01 09:01 Am 17 06 14.318434 -22 14 18.00661 + 2019-Feb-01 09:02 Am 17 06 14.349105 -22 14 18.04834 + 2019-Feb-01 09:03 Am 17 06 14.379773 -22 14 18.09007 + 2019-Feb-01 09:04 Am 17 06 14.410439 -22 14 18.13179 + 2019-Feb-01 09:05 Am 17 06 14.441104 -22 14 18.17351 + 2019-Feb-01 09:06 Am 17 06 14.471767 -22 14 18.21523 + 2019-Feb-01 09:07 Am 17 06 14.502428 -22 14 18.25693 + 2019-Feb-01 09:08 Am 17 06 14.533088 -22 14 18.29864 + 2019-Feb-01 09:09 Am 17 06 14.563746 -22 14 18.34033 + 2019-Feb-01 09:10 Am 17 06 14.594402 -22 14 18.38202 + 2019-Feb-01 09:11 Am 17 06 14.625056 -22 14 18.42371 + 2019-Feb-01 09:12 Am 17 06 14.655709 -22 14 18.46539 + 2019-Feb-01 09:13 Am 17 06 14.686360 -22 14 18.50706 + 2019-Feb-01 09:14 Am 17 06 14.717009 -22 14 18.54873 + 2019-Feb-01 09:15 Nm 17 06 14.747656 -22 14 18.59040 + 2019-Feb-01 09:16 Nm 17 06 14.778302 -22 14 18.63205 + 2019-Feb-01 09:17 Nm 17 06 14.808946 -22 14 18.67371 + 2019-Feb-01 09:18 Nm 17 06 14.839588 -22 14 18.71535 + 2019-Feb-01 09:19 Nm 17 06 14.870229 -22 14 18.75699 + 2019-Feb-01 09:20 Nm 17 06 14.900868 -22 14 18.79862 + 2019-Feb-01 09:21 Nm 17 06 14.931505 -22 14 18.84025 + 2019-Feb-01 09:22 Nm 17 06 14.962141 -22 14 18.88188 + 2019-Feb-01 09:23 Nm 17 06 14.992775 -22 14 18.92349 + 2019-Feb-01 09:24 Nm 17 06 15.023407 -22 14 18.96510 + 2019-Feb-01 09:25 Nm 17 06 15.054038 -22 14 19.00671 + 2019-Feb-01 09:26 Nm 17 06 15.084667 -22 14 19.04830 + 2019-Feb-01 09:27 Nm 17 06 15.115294 -22 14 19.08990 + 2019-Feb-01 09:28 Nm 17 06 15.145919 -22 14 19.13148 + 2019-Feb-01 09:29 Nm 17 06 15.176543 -22 14 19.17306 + 2019-Feb-01 09:30 Nm 17 06 15.207166 -22 14 19.21463 + 2019-Feb-01 09:31 Nm 17 06 15.237786 -22 14 19.25620 + 2019-Feb-01 09:32 Nm 17 06 15.268405 -22 14 19.29776 + 2019-Feb-01 09:33 Nm 17 06 15.299023 -22 14 19.33932 + 2019-Feb-01 09:34 Nm 17 06 15.329638 -22 14 19.38086 + 2019-Feb-01 09:35 Nm 17 06 15.360252 -22 14 19.42241 + 2019-Feb-01 09:36 Nm 17 06 15.390865 -22 14 19.46394 + 2019-Feb-01 09:37 Nm 17 06 15.421476 -22 14 19.50547 + 2019-Feb-01 09:38 Nm 17 06 15.452085 -22 14 19.54699 + 2019-Feb-01 09:39 Nm 17 06 15.482693 -22 14 19.58851 + 2019-Feb-01 09:40 Nm 17 06 15.513299 -22 14 19.63002 + 2019-Feb-01 09:41 Nm 17 06 15.543903 -22 14 19.67152 + 2019-Feb-01 09:42 Nm 17 06 15.574506 -22 14 19.71302 + 2019-Feb-01 09:43 Nm 17 06 15.605107 -22 14 19.75451 + 2019-Feb-01 09:44 Nm 17 06 15.635707 -22 14 19.79599 + 2019-Feb-01 09:45 Nm 17 06 15.666305 -22 14 19.83747 + 2019-Feb-01 09:46 Cm 17 06 15.696902 -22 14 19.87894 + 2019-Feb-01 09:47 Cm 17 06 15.727497 -22 14 19.92040 + 2019-Feb-01 09:48 Cm 17 06 15.758090 -22 14 19.96185 + 2019-Feb-01 09:49 Cm 17 06 15.788682 -22 14 20.00330 + 2019-Feb-01 09:50 Cm 17 06 15.819272 -22 14 20.04474 + 2019-Feb-01 09:51 Cm 17 06 15.849861 -22 14 20.08618 + 2019-Feb-01 09:52 Cm 17 06 15.880449 -22 14 20.12761 + 2019-Feb-01 09:53 Cm 17 06 15.911034 -22 14 20.16903 + 2019-Feb-01 09:54 Cm 17 06 15.941618 -22 14 20.21044 + 2019-Feb-01 09:55 Cm 17 06 15.972201 -22 14 20.25185 + 2019-Feb-01 09:56 Cm 17 06 16.002782 -22 14 20.29325 + 2019-Feb-01 09:57 Cm 17 06 16.033362 -22 14 20.33465 + 2019-Feb-01 09:58 Cm 17 06 16.063940 -22 14 20.37603 + 2019-Feb-01 09:59 Cm 17 06 16.094517 -22 14 20.41741 + 2019-Feb-01 10:00 Cm 17 06 16.125092 -22 14 20.45878 + 2019-Feb-01 10:01 Cm 17 06 16.155665 -22 14 20.50015 + 2019-Feb-01 10:02 Cm 17 06 16.186237 -22 14 20.54150 + +>..... Daylight Cut-off Requested .....< + + 2019-Feb-01 23:50 C 17 06 41.570834 -22 14 52.47125 + 2019-Feb-01 23:51 C 17 06 41.601914 -22 14 52.50986 + 2019-Feb-01 23:52 C 17 06 41.632995 -22 14 52.54848 + 2019-Feb-01 23:53 C 17 06 41.664076 -22 14 52.58711 + 2019-Feb-01 23:54 C 17 06 41.695158 -22 14 52.62574 + 2019-Feb-01 23:55 C 17 06 41.726239 -22 14 52.66439 + 2019-Feb-01 23:56 C 17 06 41.757322 -22 14 52.70304 + 2019-Feb-01 23:57 C 17 06 41.788404 -22 14 52.74170 + 2019-Feb-01 23:58 C 17 06 41.819487 -22 14 52.78037 + 2019-Feb-01 23:59 C 17 06 41.850570 -22 14 52.81905 +$$EOE +******************************************************************************* +Column meaning: + +TIME + + Times PRIOR to 1962 are UT1, a mean-solar time closely related to the +prior but now-deprecated GMT. Times AFTER 1962 are in UTC, the current +civil or "wall-clock" time-scale. UTC is kept within 0.9 seconds of UT1 +using integer leap-seconds for 1972 and later years. + + Conversion from the internal Barycentric Dynamical Time (TDB) of solar +system dynamics to the non-uniform civil UT time-scale requested for output +has not been determined for UTC times after the next July or January 1st. +Therefore, the last known leap-second is used as a constant over future +intervals. + + Time tags refer to the UT time-scale conversion from TDB on Earth +regardless of observer location within the solar system, although clock +rates may differ due to the local gravity field and no analog to "UT" +may be defined for that location. + + Any 'b' symbol in the 1st-column denotes a B.C. date. First-column blank +(" ") denotes an A.D. date. + +CALENDAR SYSTEM + + Mixed calendar mode was active such that calendar dates after AD 1582-Oct-15 +(if any) are in the modern Gregorian system. Dates prior to 1582-Oct-5 (if any) +are in the Julian calendar system, which is automatically extended for dates +prior to its adoption on 45-Jan-1 BC. The Julian calendar is useful for +matching historical dates. The Gregorian calendar more accurately corresponds +to the Earth's orbital motion and seasons. A "Gregorian-only" calendar mode is +available if such physical events are the primary interest. + + NOTE: "n.a." in output means quantity "not available" at the print-time. + +SOLAR PRESENCE (OBSERVING SITE) + Time tag is followed by a blank, then a solar-presence condition code: + + '*' Daylight (refracted solar upper-limb on or above apparent horizon) + 'C' Civil twilight/dawn + 'N' Nautical twilight/dawn + 'A' Astronomical twilight/dawn + ' ' Night OR geocentric ephemeris + +LUNAR PRESENCE WITH TARGET RISE/TRANSIT/SET EVENT MARKER (OBSERVING SITE) + The solar-presence code column is immediately followed by another marker: + + 'm' Refracted upper-limb of Moon on or above apparent horizon + ' ' Refracted upper-limb of Moon below apparent horizon OR geocentric + + The lunar presence marker (an ongoing state) can be over-ridden by a target + event marker if an event has occurred since the last output step: + + 'r' Rise (target body on or went above cut-off RTS elevation) + 'e' Elevation max (target body maximum elevation angle has occurred) + 't' Transit (target body at or passed through observer meridian) + 's' Set (target body on or went below cut-off RTS elevation) + +RTS MARKERS (TVH) + Rise and set are with respect to the reference ellipsoid true visual horizon +defined by the elevation cut-off angle. Horizon dip and yellow-light refraction +(Earth only) are considered. Accuracy is < or = to twice the requested search +step-size. + + 'R.A._________(ICRF)_________DEC' = + Astrometric right ascension and declination of the target center with +respect to the observing site (coordinate origin) in the reference frame of +the planetary ephemeris (ICRF). Compensated for down-leg light-time delay +aberration. + + Units: RA in hours-minutes-seconds of time, HH MM SS.ff{ffff} + DEC in degrees-minutes-seconds of arc, sDD MN SC.f{ffff} + +Computations by ... + + Solar System Dynamics Group, Horizons On-Line Ephemeris System + 4800 Oak Grove Drive, Jet Propulsion Laboratory + Pasadena, CA 91109 USA + + General site: https://ssd.jpl.nasa.gov/ + Mailing list: https://ssd.jpl.nasa.gov/email_list.html + System news : https://ssd.jpl.nasa.gov/horizons/news.html + User Guide : https://ssd.jpl.nasa.gov/horizons/manual.html + Connect : browser https://ssd.jpl.nasa.gov/horizons/app.html#/x + API https://ssd-api.jpl.nasa.gov/doc/horizons.html + command-line telnet ssd.jpl.nasa.gov 6775 + e-mail/batch https://ssd.jpl.nasa.gov/ftp/ssd/hrzn_batch.txt + scripts https://ssd.jpl.nasa.gov/ftp/ssd/SCRIPTS + Author : Jon.D.Giorgini@jpl.nasa.gov + +******************************************************************************* + +!$$SOF +COMMAND = '599' +OBJ_DATA = NO +MAKE_EPHEM = YES +TABLE_TYPE = OBSERVER +CENTER = I11@399 +START_TIME = '2019-Feb-01 00:00' +STOP_TIME = '2019-Feb-01 23:59' +STEP_SIZE = '1m' +QUANTITIES = 1 +REF_SYSTEM = J2000 +CAL_FORMAT = CAL +ANG_FORMAT = HMS +TIME_DIGITS = MINUTES +SUPPRESS_RANGE_RATE = NO +ELEV_CUT = -90 +SKIP_DAYLT = YES +SOLAR_ELONG = '0,180' +AIRMASS = 100 +EXTRA_PREC = YES +CSV_FORMAT = NO +R_T_S_ONLY = NO diff --git a/tests/unit/scheduler/core/collector/collector_fixture.py b/tests/unit/scheduler/core/collector/collector_fixture.py index 5d73e6c3..48eca637 100644 --- a/tests/unit/scheduler/core/collector/collector_fixture.py +++ b/tests/unit/scheduler/core/collector/collector_fixture.py @@ -1,5 +1,6 @@ # Copyright (c) 2016-2024 Association of Universities for Research in Astronomy, Inc. (AURA) # For license information see LICENSE or https://opensource.org/licenses/BSD-3-Clause +import asyncio import pytest @@ -10,16 +11,19 @@ from scheduler.core.builder.validationbuilder import ValidationBuilder from scheduler.core.sources.sources import Sources from scheduler.core.eventsqueue import EventQueue +from scheduler.services.visibility import visibility_calculator -@pytest.fixture +@pytest.fixture(scope="session") def scheduler_collector(): start = Time("2018-10-01 08:00:00", format='iso', scale='utc') end = Time("2018-10-03 08:00:00", format='iso', scale='utc') num_nights_to_schedule = 3 sites = ALL_SITES - semesters = frozenset([Semester(2018, SemesterHalf.B)]) + loop = asyncio.get_event_loop() + loop.run_until_complete(visibility_calculator.calculate()) + semesters = frozenset([Semester(2018, SemesterHalf.B)]) collector_blueprint = CollectorBlueprint( obs_class=['SCIENCE', 'PROGCAL', 'PARTNERCAL'], prg_type=['Q', 'LP', 'FT', 'DD'], From c746d00aa7bda2a0656360a201861602ecfc3a7c Mon Sep 17 00:00:00 2001 From: Sergio Date: Thu, 5 Sep 2024 14:48:37 -0400 Subject: [PATCH 8/9] SCHED-727: Catch missing Program file option in query --- scheduler/graphql_mid/schema.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scheduler/graphql_mid/schema.py b/scheduler/graphql_mid/schema.py index 40e93495..b5014403 100644 --- a/scheduler/graphql_mid/schema.py +++ b/scheduler/graphql_mid/schema.py @@ -90,8 +90,9 @@ async def test_sub_query(self, schedule_id: str, new_schedule_input: CreateNewSc new_schedule_input.met_power, new_schedule_input.vis_power, new_schedule_input.wha_power) - - file = await new_schedule_input.program_file.read() + file = None + if new_schedule_input.program_file: + file = await new_schedule_input.program_file.read() params = SchedulerParameters(start, end, new_schedule_input.sites, From 0c656d34818b2fbbae8f1113f0223ec257f28bcc Mon Sep 17 00:00:00 2001 From: Sergio Date: Tue, 3 Sep 2024 19:29:11 -0400 Subject: [PATCH 9/9] SCHED-741: Remove smaller case Any --- .../data/validation/gn_initial_conditions.csv | 100 +++++++++--------- 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/scheduler/services/environment/data/validation/gn_initial_conditions.csv b/scheduler/services/environment/data/validation/gn_initial_conditions.csv index 3824f03c..7f6e6503 100644 --- a/scheduler/services/environment/data/validation/gn_initial_conditions.csv +++ b/scheduler/services/environment/data/validation/gn_initial_conditions.csv @@ -1,5 +1,5 @@ HST,UT,IQ,CC,WV,Notes -2018-01-31,2018-02-01,Any,Any,,closed for winds initially +2018-01-31,2018-02-01,ANY,ANY,,closed for winds initially 2018-02-01,2018-02-02,na,na,, 2018-02-02,2018-02-03,na,na,, 2018-02-03,2018-02-04,na,na,, @@ -7,12 +7,12 @@ HST,UT,IQ,CC,WV,Notes 2018-02-05,2018-02-06,na,na,, 2018-02-06,2018-02-07,na,na,, 2018-02-07,2018-02-08,na,na,, -2018-02-08,2018-02-09,Any,50,, -2018-02-09,2018-02-10,Any,50,, +2018-02-08,2018-02-09,ANY,50,, +2018-02-09,2018-02-10,ANY,50,, 2018-02-10,2018-02-11,70,50,,WL and Eng for start of the night 2018-02-11,2018-02-12,20,50,50, 2018-02-12,2018-02-13,20,50,80, -2018-02-13,2018-02-14,Any,Any,,WL most of night +2018-02-13,2018-02-14,ANY,ANY,,WL most of night 2018-02-14,2018-02-15,na,na,, 2018-02-15,2018-02-16,na,na,, 2018-02-16,2018-02-17,85,50,, @@ -26,12 +26,12 @@ HST,UT,IQ,CC,WV,Notes 2018-02-24,2018-02-25,na,na,, 2018-02-25,2018-02-26,na,na,, 2018-02-26,2018-02-27,na,na,, -2018-02-27,2018-02-28,70,80,Any, +2018-02-27,2018-02-28,70,80,ANY, 2018-02-28,2018-03-01,na,na,, -2018-03-01,2018-03-02,85,Any,, -2018-03-02,2018-03-03,85,Any,, -2018-03-03,2018-03-04,Any,Any,,closed initially -2018-03-04,2018-03-05,85,Any,, +2018-03-01,2018-03-02,85,ANY,, +2018-03-02,2018-03-03,85,ANY,, +2018-03-03,2018-03-04,ANY,ANY,,closed initially +2018-03-04,2018-03-05,85,ANY,, 2018-03-05,2018-03-06,85,50,, 2018-03-06,2018-03-07,85,50,, 2018-03-07,2018-03-08,na,na,, @@ -45,7 +45,7 @@ HST,UT,IQ,CC,WV,Notes 2018-03-15,2018-03-16,na,na,, 2018-03-16,2018-03-17,85,50,,closed initially 2018-03-17,2018-03-18,70,50,,closed initially -2018-03-18,2018-03-19,Any,70,, +2018-03-18,2018-03-19,ANY,70,, 2018-03-19,2018-03-20,na,na,,closed initially 2018-03-20,2018-03-21,na,na,,closed initially 2018-03-21,2018-03-22,85,80,,closed initially @@ -59,7 +59,7 @@ HST,UT,IQ,CC,WV,Notes 2018-03-29,2018-03-30,70,50,50, 2018-03-30,2018-03-31,70,50,, 2018-03-31,2018-04-01,80,85,, -2018-04-01,2018-04-02,85,Any,, +2018-04-01,2018-04-02,85,ANY,, 2018-04-02,2018-04-03,na,na,, 2018-04-03,2018-04-04,na,na,, 2018-04-04,2018-04-05,na,na,, @@ -76,10 +76,10 @@ HST,UT,IQ,CC,WV,Notes 2018-04-15,2018-04-16,na,na,, 2018-04-16,2018-04-17,85,80,,closed initially 2018-04-17,2018-04-18,70,80,, -2018-04-18,2018-04-19,85,Any,,closed initally +2018-04-18,2018-04-19,85,ANY,,closed initally 2018-04-19,2018-04-20,na,na,, -2018-04-20,2018-04-21,85,Any,,closed initially -2018-04-21,2018-04-22,Any,Any,, +2018-04-20,2018-04-21,85,ANY,,closed initially +2018-04-21,2018-04-22,ANY,ANY,, 2018-04-22,2018-04-23,85,80,, 2018-04-23,2018-04-24,70,50,, 2018-04-24,2018-04-25,85,50,, @@ -95,8 +95,8 @@ HST,UT,IQ,CC,WV,Notes 2018-05-04,2018-05-05,85,70,, 2018-05-05,2018-05-06,85,80,, 2018-05-06,2018-05-07,85,80,, -2018-05-07,2018-05-08,Any,Any,,closed initially -2018-05-08,2018-05-09,Any,Any,, +2018-05-07,2018-05-08,ANY,ANY,,closed initially +2018-05-08,2018-05-09,ANY,ANY,, 2018-05-09,2018-05-10,70,70,, 2018-05-10,2018-05-11,70,70,, 2018-05-11,2018-05-12,70,80,, @@ -113,10 +113,10 @@ HST,UT,IQ,CC,WV,Notes 2018-05-22,2018-05-23,70,70,80, 2018-05-23,2018-05-24,70,80,, 2018-05-24,2018-05-25,70,80,, -2018-05-25,2018-05-26,70,70,Any, +2018-05-25,2018-05-26,70,70,ANY, 2018-05-26,2018-05-27,70,70,, -2018-05-27,2018-05-28,Any,Any,,closed initially -2018-05-28,2018-05-29,Any,Any,,weather loss +2018-05-27,2018-05-28,ANY,ANY,,closed initially +2018-05-28,2018-05-29,ANY,ANY,,weather loss 2018-05-29,2018-05-30,na,na,, 2018-05-30,2018-05-31,70,50,, 2018-05-31,2018-06-01,70,80,, @@ -129,7 +129,7 @@ HST,UT,IQ,CC,WV,Notes 2018-06-07,2018-06-08,85,50,,closed initially 2018-06-08,2018-06-09,na,na,, 2018-06-09,2018-06-10,85,50,, -2018-06-10,2018-06-11,Any,50,, +2018-06-10,2018-06-11,ANY,50,, 2018-06-11,2018-06-12,70,50,80, 2018-06-12,2018-06-13,70,50,, 2018-06-13,2018-06-14,70,70,, @@ -148,17 +148,17 @@ HST,UT,IQ,CC,WV,Notes 2018-06-26,2018-06-27,85,50,, 2018-06-27,2018-06-28,85,50,, 2018-06-28,2018-06-29,85,50,, -2018-06-29,2018-06-30,70,70,Any, +2018-06-29,2018-06-30,70,70,ANY, 2018-06-30,2018-07-01,70,70,, -2018-07-01,2018-07-02,Any,Any,,closed initially +2018-07-01,2018-07-02,ANY,ANY,,closed initially 2018-07-02,2018-07-03,na,na,, 2018-07-03,2018-07-04,70,50,, 2018-07-04,2018-07-05,70,80,, -2018-07-05,2018-07-06,20,80,Any, -2018-07-06,2018-07-07,Any,50,80,closed initially +2018-07-05,2018-07-06,20,80,ANY, +2018-07-06,2018-07-07,ANY,50,80,closed initially 2018-07-07,2018-07-08,85,50,, 2018-07-08,2018-07-09,85,50,,closed initially -2018-07-09,2018-07-10,Any,80,50, +2018-07-09,2018-07-10,ANY,80,50, 2018-07-10,2018-07-11,20,80,, 2018-07-11,2018-07-12,70,70,80, 2018-07-12,2018-07-13,20,80,, @@ -180,7 +180,7 @@ HST,UT,IQ,CC,WV,Notes 2018-07-28,2018-07-29,70,50,, 2018-07-29,2018-07-30,70,80,, 2018-07-30,2018-07-31,70,70,, -2018-07-31,2018-08-01,85,70,Any, +2018-07-31,2018-08-01,85,70,ANY, 2018-08-01,2018-08-02,70,50,, 2018-08-02,2018-08-03,70,70,, 2018-08-03,2018-08-04,85,80,, @@ -191,16 +191,16 @@ HST,UT,IQ,CC,WV,Notes 2018-08-08,2018-08-09,na,na,, 2018-08-09,2018-08-10,85,80,,closed initially 2018-08-10,2018-08-11,20,70,, -2018-08-11,2018-08-12,Any,50,, -2018-08-12,2018-08-13,85,50,Any, +2018-08-11,2018-08-12,ANY,50,, +2018-08-12,2018-08-13,85,50,ANY, 2018-08-13,2018-08-14,85,70,, 2018-08-14,2018-08-15,na,na,, 2018-08-15,2018-08-16,70,70,,closed initially 2018-08-16,2018-08-17,20,70,, 2018-08-17,2018-08-18,70,50,, 2018-08-18,2018-08-19,na,na,, -2018-08-19,2018-08-20,Any,Any,,closed initially -2018-08-20,2018-08-21,85,70,Any, +2018-08-19,2018-08-20,ANY,ANY,,closed initially +2018-08-20,2018-08-21,85,70,ANY, 2018-08-21,2018-08-22,70,70,80, 2018-08-22,2018-08-23,na,na,, 2018-08-23,2018-08-24,na,na,, @@ -245,20 +245,20 @@ HST,UT,IQ,CC,WV,Notes 2018-10-01,2018-10-02,70,70,,eng initially 2018-10-02,2018-10-03,70,50,,eng initially 2018-10-03,2018-10-04,na,na,,eng only -2018-10-04,2018-10-05,Any,Any,Any,eng initially +2018-10-04,2018-10-05,ANY,ANY,ANY,eng initially 2018-10-05,2018-10-06,na,na,,eng only 2018-10-06,2018-10-07,na,na,,weather 2018-10-07,2018-10-08,na,na,,weather 2018-10-08,2018-10-09,na,na,,weather -2018-10-09,2018-10-10,Any,Any,Any, -2018-10-10,2018-10-11,70,50,Any, -2018-10-11,2018-10-12,70,70,Any, +2018-10-09,2018-10-10,ANY,ANY,ANY, +2018-10-10,2018-10-11,70,50,ANY, +2018-10-11,2018-10-12,70,70,ANY, 2018-10-12,2018-10-13,na,na,, 2018-10-13,2018-10-14,na,na,, 2018-10-14,2018-10-15,70,70,, -2018-10-15,2018-10-16,Any,Any,, +2018-10-15,2018-10-16,ANY,ANY,, 2018-10-16,2018-10-17,85,70,, -2018-10-17,2018-10-18,70,Any,, +2018-10-17,2018-10-18,70,ANY,, 2018-10-18,2018-10-19,na,na,, 2018-10-19,2018-10-20,na,na,, 2018-10-20,2018-10-21,na,na,, @@ -268,8 +268,8 @@ HST,UT,IQ,CC,WV,Notes 2018-10-24,2018-10-25,70,50,, 2018-10-25,2018-10-26,70,50,, 2018-10-26,2018-10-27,20,70,, -2018-10-27,2018-10-28,85,Any,, -2018-10-28,2018-10-29,Any,Any,, +2018-10-27,2018-10-28,85,ANY,, +2018-10-28,2018-10-29,ANY,ANY,, 2018-10-29,2018-10-30,na,na,, 2018-10-30,2018-10-31,na,na,, 2018-10-31,2018-11-01,85,80,, @@ -278,17 +278,17 @@ HST,UT,IQ,CC,WV,Notes 2018-11-03,2018-11-04,85,70,,closed initially 2018-11-04,2018-11-05,70,50,, 2018-11-05,2018-11-06,85,50,80, -2018-11-06,2018-11-07,Any,Any,,closed initially +2018-11-06,2018-11-07,ANY,ANY,,closed initially 2018-11-07,2018-11-08,85,70,80, 2018-11-08,2018-11-09,85,70,, 2018-11-09,2018-11-10,85,70,80, -2018-11-10,2018-11-11,Any,Any,,closed intially +2018-11-10,2018-11-11,ANY,ANY,,closed intially 2018-11-11,2018-11-12,70,50,, 2018-11-12,2018-11-13,85,50,, 2018-11-13,2018-11-14,70,50,, 2018-11-14,2018-11-15,85,80,, -2018-11-15,2018-11-16,70,Any,, -2018-11-16,2018-11-17,70,Any,,closed initially +2018-11-15,2018-11-16,70,ANY,, +2018-11-16,2018-11-17,70,ANY,,closed initially 2018-11-17,2018-11-18,85,80,, 2018-11-18,2018-11-19,na,na,, 2018-11-19,2018-11-20,20,50,50, @@ -306,20 +306,20 @@ HST,UT,IQ,CC,WV,Notes 2018-12-01,2018-12-02,70,50,, 2018-12-02,2018-12-03,20,50,, 2018-12-03,2018-12-04,20,50,, -2018-12-04,2018-12-05,Any,50,, +2018-12-04,2018-12-05,ANY,50,, 2018-12-05,2018-12-06,70,50,,eng initially 2018-12-06,2018-12-07,85,50,, 2018-12-07,2018-12-08,70,50,, 2018-12-08,2018-12-09,70,50,, 2018-12-09,2018-12-10,70,50,, -2018-12-10,2018-12-11,Any,80,, -2018-12-11,2018-12-12,Any,50,,eng initially +2018-12-10,2018-12-11,ANY,80,, +2018-12-11,2018-12-12,ANY,50,,eng initially 2018-12-12,2018-12-13,85,50,,eng initially 2018-12-13,2018-12-14,70,50,, 2018-12-14,2018-12-15,85,50,80,eng initially 2018-12-15,2018-12-16,85,50,, 2018-12-16,2018-12-17,85,50,, -2018-12-17,2018-12-18,85,Any,,closed initially +2018-12-17,2018-12-18,85,ANY,,closed initially 2018-12-18,2018-12-19,85,50,,eng initially 2018-12-19,2018-12-20,85,50,, 2018-12-20,2018-12-21,85,50,20, @@ -331,9 +331,9 @@ HST,UT,IQ,CC,WV,Notes 2018-12-26,2018-12-27,na,na,, 2018-12-27,2018-12-28,na,na,, 2018-12-28,2018-12-29,na,na,, -2018-12-29,2018-12-30,Any,Any,,closed initially +2018-12-29,2018-12-30,ANY,ANY,,closed initially 2018-12-30,2018-12-31,85,50,80, -2018-12-31,2019-01-01,Any,50,, +2018-12-31,2019-01-01,ANY,50,, 2019-01-01,2019-01-02,85,50,, 2019-01-02,2019-01-03,85,50,50, 2019-01-03,2019-01-04,70,50,20, @@ -356,7 +356,7 @@ HST,UT,IQ,CC,WV,Notes 2019-01-20,2019-01-21,70,50,50, 2019-01-21,2019-01-22,70,70,80, 2019-01-22,2019-01-23,70,50,80, -2019-01-23,2019-01-24,70,50,Any, +2019-01-23,2019-01-24,70,50,ANY, 2019-01-24,2019-01-25,70,50,, 2019-01-25,2019-01-26,na,na,, 2019-01-26,2019-01-27,20,50,, @@ -364,4 +364,4 @@ HST,UT,IQ,CC,WV,Notes 2019-01-28,2019-01-29,na,na,, 2019-01-29,2019-01-30,na,na,, 2019-01-30,2019-01-31,na,na,, -2019-01-31,2019-02-01,Any,50,,closed initially \ No newline at end of file +2019-01-31,2019-02-01,ANY,50,,closed initially \ No newline at end of file