From 6f7f7dfc70276e391b3c045fd50073576ca04df6 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Wed, 13 Feb 2019 08:09:37 -0500 Subject: [PATCH 001/231] utils restructure - #124 --- pysat/utils/coords.py | 351 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 351 insertions(+) create mode 100644 pysat/utils/coords.py diff --git a/pysat/utils/coords.py b/pysat/utils/coords.py new file mode 100644 index 0000000..a3d3f7f --- /dev/null +++ b/pysat/utils/coords.py @@ -0,0 +1,351 @@ +""" +pysat.coords - coordinate transformations for pysat +========================================= + +pysat.coords contains a number of coordinate-transformation +functions used throughout the pysat package. +""" + +import numpy as np + + +def geodetic_to_geocentric(lat_in, lon_in=None, inverse=False): + """Converts position from geodetic to geocentric or vice-versa. + + Parameters + ---------- + lat_in : float + latitude in degrees. + lon_in : float or NoneType + longitude in degrees. Remains unchanged, so does not need to be + included. (default=None) + inverse : bool + False for geodetic to geocentric, True for geocentric to geodetic. + (default=False) + + Returns + ------- + lat_out : float + latitude [degree] (geocentric/detic if inverse=False/True) + lon_out : float or NoneType + longitude [degree] (geocentric/detic if inverse=False/True) + rad_earth : float + Earth radius [km] (geocentric/detic if inverse=False/True) + + Notes + ----- + Uses WGS-84 values + + References + ---------- + Based on J.M. Ruohoniemi's geopack and R.J. Barnes radar.pro + + """ + rad_eq = 6378.1370 # WGS-84 semi-major axis + flat = 1.0 / 298.257223563 # WGS-84 flattening + rad_pol = rad_eq * (1.0 - flat) # WGS-84 semi-minor axis + + # The ratio between the semi-major and minor axis is used several times + rad_ratio_sq = (rad_eq / rad_pol)**2 + + # Calculate the square of the second eccentricity (e') + eprime_sq = rad_ratio_sq - 1.0 + + # Calculate the tangent of the input latitude + tan_in = np.tan(np.radians(lat_in)) + + # If converting from geodetic to geocentric, take the inverse of the + # radius ratio + if not inverse: + rad_ratio_sq = 1.0 / rad_ratio_sq + + # Calculate the output latitude + lat_out = np.degrees(np.arctan(rad_ratio_sq * tan_in)) + + # Calculate the Earth radius at this latitude + rad_earth = rad_eq / np.sqrt(1.0 + eprime_sq * + np.sin(np.radians(lat_out))**2) + + # longitude remains unchanged + lon_out = lon_in + + return lat_out, lon_out, rad_earth + + +def geodetic_to_geocentric_horizontal(lat_in, lon_in, az_in, el_in, + inverse=False): + """Converts from local horizontal coordinates in a geodetic system to local + horizontal coordinates in a geocentric system + + Parameters + ---------- + lat_in : float + latitude in degrees of the local horizontal coordinate system center + lon_in : float + longitude in degrees of the local horizontal coordinate system center + az_in : float + azimuth in degrees within the local horizontal coordinate system + el_in : float + elevation in degrees within the local horizontal coordinate system + inverse : bool + False for geodetic to geocentric, True for inverse (default=False) + + Returns + ------- + lat_out : float + latitude in degrees of the converted horizontal coordinate system + center + lon_out : float + longitude in degrees of the converted horizontal coordinate system + center + rad_earth : float + Earth radius in km at the geocentric/detic (False/True) location + az_out : float + azimuth in degrees of the converted horizontal coordinate system + el_out : float + elevation in degrees of the converted horizontal coordinate system + + References + ---------- + Based on J.M. Ruohoniemi's geopack and R.J. Barnes radar.pro + + """ + az = np.radians(az_in) + el = np.radians(el_in) + + # Transform the location of the local horizontal coordinate system center + lat_out, lon_out, rad_earth = geodetic_to_geocentric(lat_in, lon_in, + inverse=inverse) + + # Calcualte the deviation from vertical in radians + dev_vert = np.radians(lat_in - lat_out) + + # Calculate cartesian coordinated in local system + x_local = np.cos(el) * np.sin(az) + y_local = np.cos(el) * np.cos(az) + z_local = np.sin(el) + + # Now rotate system about the x axis to align local vertical vector + # with Earth radial vector + x_out = x_local + y_out = y_local * np.cos(dev_vert) + z_local * np.sin(dev_vert) + z_out = -y_local * np.sin(dev_vert) + z_local * np.cos(dev_vert) + + # Transform the azimuth and elevation angles + az_out = np.degrees(np.arctan2(x_out, y_out)) + el_out = np.degrees(np.arctan(z_out / np.sqrt(x_out**2 + y_out**2))) + + return lat_out, lon_out, rad_earth, az_out, el_out + + +def spherical_to_cartesian(az_in, el_in, r_in, inverse=False): + """Convert a position from spherical to cartesian, or vice-versa + + Parameters + ---------- + az_in : float + azimuth/longitude in degrees or cartesian x in km (inverse=False/True) + el_in : float + elevation/latitude in degrees or cartesian y in km (inverse=False/True) + r_in : float + distance from origin in km or cartesian z in km (inverse=False/True) + inverse : boolian + False to go from spherical to cartesian and True for the inverse + + Returns + ------- + x_out : float + cartesian x in km or azimuth/longitude in degrees (inverse=False/True) + y_out : float + cartesian y in km or elevation/latitude in degrees (inverse=False/True) + z_out : float + cartesian z in km or distance from origin in km (inverse=False/True) + + Notes + ------ + This transform is the same for local or global spherical/cartesian + transformations. + + Returns elevation angle (angle from the xy plane) rather than zenith angle + (angle from the z-axis) + + """ + + if inverse: + # Cartesian to Spherical + xy_sq = az_in**2 + el_in**2 + z_out = np.sqrt(xy_sq + r_in**2) # This is r + y_out = np.degrees(np.arctan2(np.sqrt(xy_sq), r_in)) # This is zenith + y_out = 90.0 - y_out # This is the elevation + x_out = np.degrees(np.arctan2(el_in, az_in)) # This is azimuth + else: + # Spherical coordinate system uses zenith angle (degrees from the + # z-axis) and not the elevation angle (degrees from the x-y plane) + zen_in = np.radians(90.0 - el_in) + + # Spherical to Cartesian + x_out = r_in * np.sin(zen_in) * np.cos(np.radians(az_in)) + y_out = r_in * np.sin(zen_in) * np.sin(np.radians(az_in)) + z_out = r_in * np.cos(zen_in) + + return x_out, y_out, z_out + + +def global_to_local_cartesian(x_in, y_in, z_in, lat_cent, lon_cent, rad_cent, + inverse=False): + """Converts a position from global to local cartesian or vice-versa + + Parameters + ---------- + x_in : float + global or local cartesian x in km (inverse=False/True) + y_in : float + global or local cartesian y in km (inverse=False/True) + z_in : float + global or local cartesian z in km (inverse=False/True) + lat_cent : float + geocentric latitude in degrees of local cartesian system origin + lon_cent : float + geocentric longitude in degrees of local cartesian system origin + rad_cent : float + distance from center of the Earth in km of local cartesian system + origin + inverse : bool + False to convert from global to local cartesian coodiantes, and True + for the inverse (default=False) + + Returns + ------- + x_out : float + local or global cartesian x in km (inverse=False/True) + y_out : float + local or global cartesian y in km (inverse=False/True) + z_out : float + local or global cartesian z in km (inverse=False/True) + + Notes + ------- + The global cartesian coordinate system has its origin at the center of the + Earth, while the local system has its origin specified by the input + latitude, longitude, and radius. The global system has x intersecting + the equatorial plane and the prime meridian, z pointing North along the + rotational axis, and y completing the right-handed coodinate system. + The local system has z pointing up, y pointing North, and x pointing East. + + """ + + # Get the global cartesian coordinates of local origin + x_cent, y_cent, z_cent = spherical_to_cartesian(lon_cent, lat_cent, + rad_cent) + + # Get the amount of rotation needed to align the x-axis with the + # Earth's rotational axis + ax_rot = np.radians(90.0 - lat_cent) + + # Get the amount of rotation needed to align the global x-axis with the + # prime meridian + mer_rot = np.radians(lon_cent - 90.0) + + if inverse: + # Rotate about the x-axis to align the z-axis with the Earth's + # rotational axis + xrot = x_in + yrot = y_in * np.cos(ax_rot) - z_in * np.sin(ax_rot) + zrot = y_in * np.sin(ax_rot) + z_in * np.cos(ax_rot) + + # Rotate about the global z-axis to get the global x-axis aligned + # with the prime meridian and translate the local center to the + # global origin + x_out = xrot * np.cos(mer_rot) - yrot * np.sin(mer_rot) + x_cent + y_out = xrot * np.sin(mer_rot) + yrot * np.cos(mer_rot) + y_cent + z_out = zrot + z_cent + else: + # Translate global origin to the local origin + xtrans = x_in - x_cent + ytrans = y_in - y_cent + ztrans = z_in - z_cent + + # Rotate about the global z-axis to get the local x-axis pointing East + xrot = xtrans * np.cos(-mer_rot) - ytrans * np.sin(-mer_rot) + yrot = xtrans * np.sin(-mer_rot) + ytrans * np.cos(-mer_rot) + zrot = ztrans + + # Rotate about the x-axis to get the z-axis pointing up + x_out = xrot + y_out = yrot * np.cos(-ax_rot) - zrot * np.sin(-ax_rot) + z_out = yrot * np.sin(-ax_rot) + zrot * np.cos(-ax_rot) + + return x_out, y_out, z_out + + +def local_horizontal_to_global_geo(az, el, dist, lat_orig, lon_orig, alt_orig, + geodetic=True): + """ Convert from local horizontal coordinates to geodetic or geocentric + coordinates + + Parameters + ---------- + az : float + Azimuth (angle from North) of point in degrees + el : float + Elevation (angle from ground) of point in degrees + dist : float + Distance from origin to point in km + lat_orig : float + Latitude of origin in degrees + lon_orig : float + Longitude of origin in degrees + alt_orig : float + Altitude of origin in km from the surface of the Earth + geodetic : bool + True if origin coordinates are geodetic, False if they are geocentric. + Will return coordinates in the same system as the origin input. + (default=True) + + Returns + ------- + lat_pnt : float + Latitude of point in degrees + lon_pnt : float + Longitude of point in degrees + rad_pnt : float + Distance to the point from the centre of the Earth in km + + References + ---------- + Based on J.M. Ruohoniemi's geopack and R.J. Barnes radar.pro + + """ + + # If the data are in geodetic coordiantes, convert to geocentric + if geodetic: + (glat, glon, rearth, gaz, gel) = \ + geodetic_to_geocentric_horizontal(lat_orig, lon_orig, az, el, + inverse=False) + grad = rearth + alt_orig + else: + glat = lat_orig + glon = lon_orig + grad = alt_orig + 6371.0 # Add the mean earth radius in km + gaz = az + gel = el + + # Convert from local horizontal to local cartesian coordiantes + x_loc, y_loc, z_loc = spherical_to_cartesian(gaz, gel, dist, inverse=False) + + # Convert from local to global cartesian coordiantes + x_glob, y_glob, z_glob = global_to_local_cartesian(x_loc, y_loc, z_loc, + glat, glon, grad, + inverse=True) + + # Convert from global cartesian to geocentric coordinates + lon_pnt, lat_pnt, rad_pnt = spherical_to_cartesian(x_glob, y_glob, z_glob, + inverse=True) + + # Convert from geocentric to geodetic, if desired + if geodetic: + lat_pnt, lon_pnt, rearth = geodetic_to_geocentric(lat_pnt, lon_pnt, + inverse=True) + rad_pnt = rearth + rad_pnt - 6371.0 + + return lat_pnt, lon_pnt, rad_pnt From c6870edb2e5a275f643a43dfb50a33d5e48c47f1 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Wed, 13 Feb 2019 11:15:45 -0500 Subject: [PATCH 002/231] restructure --- pysat/utils/coords.py | 75 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/pysat/utils/coords.py b/pysat/utils/coords.py index a3d3f7f..d7a13ab 100644 --- a/pysat/utils/coords.py +++ b/pysat/utils/coords.py @@ -9,6 +9,81 @@ import numpy as np +def scale_units(out_unit, in_unit): + """ Determine the scaling factor between two units + + Parameters + ------------- + out_unit : str + Desired unit after scaling + in_unit : str + Unit to be scaled + + Returns + ----------- + unit_scale : float + Scaling factor that will convert from in_units to out_units + + Notes + ------- + Accepted units include degrees ('deg', 'degree', 'degrees'), + radians ('rad', 'radian', 'radians'), + hours ('h', 'hr', 'hrs', 'hour', 'hours'), and lengths ('m', 'km', 'cm'). + Can convert between degrees, radians, and hours or different lengths. + + Example + ----------- + :: + import numpy as np + two_pi = 2.0 * np.pi + scale = scale_units("deg", "RAD") + two_pi *= scale + two_pi # will show 360.0 + + + """ + + if out_unit == in_unit: + return 1.0 + + accepted_units = {'deg': ['deg', 'degree', 'degrees'], + 'rad': ['rad', 'radian', 'radians'], + 'h': ['h', 'hr', 'hrs', 'hours'], + 'm': ['m', 'km', 'cm'], + 'm/s': ['m/s', 'cm/s', 'km/s']} + + scales = {'deg': 180.0, 'rad': np.pi, 'h': 12.0, + 'm': 1.0, 'km': 0.001, 'cm': 100.0, + 'm/s': 1.0, 'cm/s': 100.0, 'km/s': 0.001} + + # Test input and determine transformation type + out_key = None + in_key = None + for kk in accepted_units.keys(): + if out_unit.lower() in accepted_units[kk]: + out_key = kk + if in_unit.lower() in accepted_units[kk]: + in_key = kk + + if out_key is None: + raise ValueError('Unknown output unit {:}'.format(out_unit)) + + if in_key is None: + raise ValueError('Unknown input unit {:}'.format(in_unit)) + + if out_key == 'm' or out_key == 'm/s' or in_key == 'm' or in_key == 'm/s': + if in_key != out_key: + raise ValueError('Cannot scale {:s} and {:s}'.format(out_unit, + in_unit)) + # Recast units as keys for the scales dictionary + out_key = out_unit + in_key = in_unit + + unit_scale = scales[out_key.lower()] / scales[in_key.lower()] + + return unit_scale + + def geodetic_to_geocentric(lat_in, lon_in=None, inverse=False): """Converts position from geodetic to geocentric or vice-versa. From 49a3894b9760922f5c7eb643ef2e065c0a740d61 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Wed, 13 Feb 2019 12:26:14 -0500 Subject: [PATCH 003/231] longitude functions to coords --- pysat/utils/coords.py | 65 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/pysat/utils/coords.py b/pysat/utils/coords.py index d7a13ab..7f7122c 100644 --- a/pysat/utils/coords.py +++ b/pysat/utils/coords.py @@ -9,6 +9,71 @@ import numpy as np +def adjust_cyclic_data(samples, high=2.0*np.pi, low=0.0): + """Adjust cyclic values such as longitude to a different scale + + Parameters + ----------- + samples : array_like + Input array + high: float or int + Upper boundary for circular standard deviation range (default=2 pi) + low : float or int + Lower boundary for circular standard deviation range (default=0) + axis : int or NoneType + Axis along which standard deviations are computed. The default is to + compute the standard deviation of the flattened array + + Returns + -------- + out_samples : float + Circular standard deviation + + """ + + out_samples = np.asarray(samples) + sample_range = high - low + out_samples[out_samples >= high] -= sample_range + out_samples[out_samples < low] += sample_range + + return out_samples + + +def update_longitude(inst, lon_name=None, high=180.0, low=-180.0): + """ Update longitude to the desired range + + Parameters + ------------ + inst : pysat.Instrument instance + instrument object to be updated + lon_name : string + name of the longtiude data + high : float + Highest allowed longitude value (default=180.0) + low : float + Lowest allowed longitude value (default=-180.0) + + Returns + --------- + updates instrument data in column 'lon_name' + + """ + from pysat.utils.coords import adjust_cyclic_data + + if lon_name not in inst.data.keys(): + raise ValueError('uknown longitude variable name') + + new_lon = adjust_cyclic_data(inst[lon_name], high=high, low=low) + + # Update based on data type + if inst.pandas_format: + inst[lon_name] = new_lon + else: + inst[lon_name].data = new_lon + + return + + def scale_units(out_unit, in_unit): """ Determine the scaling factor between two units From 2e741822404527654026b25cce791ccd261c554b Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Wed, 20 Feb 2019 16:01:16 -0500 Subject: [PATCH 004/231] rename test files and tidy --- pysat/tests/test_utils_coords.py | 318 +++++++++++++++++++++++++++++++ 1 file changed, 318 insertions(+) create mode 100644 pysat/tests/test_utils_coords.py diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py new file mode 100644 index 0000000..b6cdff0 --- /dev/null +++ b/pysat/tests/test_utils_coords.py @@ -0,0 +1,318 @@ +""" +tests the pysat coords area +""" +import numpy as np +import pandas as pds +import nose.tools +from nose.tools import assert_raises, raises +import pysat +from pysat.utils import coords + + +class TestBasics(): + def setup(self): + """Runs before every method to create a clean testing setup.""" + self.test_angles = np.array([340.0, 348.0, 358.9, 0.5, 5.0, 9.87]) + + self.testInst = pysat.Instrument(platform='pysat', + name='testing', + clean_level='clean') + # Add longitude to the test instrument + ones = np.ones(shape=len(self.test_angles)) + time = pysat.utils.time.create_datetime_index(year=ones*2001, + month=ones, + uts=np.arange(0.0, + len(ones), + 1.0)) + + self.testInst.data = \ + pds.DataFrame(np.array([time, self.test_angles]).transpose(), + index=time, columns=["time", "longitude"]) + + self.deg_units = ["deg", "degree", "degrees", "rad", "radian", + "radians", "h", "hr", "hrs", "hours"] + self.dist_units = ["m", "km", "cm"] + self.vel_units = ["m/s", "cm/s", "km/s"] + + def teardown(self): + """Runs after every method to clean up previous testing.""" + del self.test_angles, self.testInst + del self.deg_units, self.dist_units, self.vel_units + + def test_adjust_cyclic_data_default(self): + """ Test adjust_cyclic_data with default range """ + + test_in = np.radians(self.test_angles) - np.pi + test_angles = coords.adjust_cyclic_data(test_in) + + assert test_angles.max() < 2.0 * np.pi + assert test_angles.min() >= 0.0 + + def test_adjust_cyclic_data_custom(self): + """ Test adjust_cyclic_data with a custom range """ + + test_angles = coords.adjust_cyclic_data(self.test_angles, + high=180.0, low=-180.0) + + assert test_angles.max() < 180.0 + assert test_angles.min() >= -180.0 + + def test_update_longitude(self): + """Test update_longitude """ + + coords.update_longitude(self.testInst, lon_name="longitude") + + assert np.all(self.testInst.data['longitude'] < 180.0) + assert np.all(self.testInst.data['longitude'] >= -180.0) + + def test_bad_lon_name_update_longitude(self): + """Test update_longitude with a bad longitude name""" + + assert_raises(ValueError, coords.update_longitude, + self.testInst) + + def test_scale_units_same(self): + """ Test scale_units when both units are the same """ + + scale = coords.scale_units("happy", "happy") + + assert scale == 1.0 + + def test_scale_units_angles(self): + """Test scale_units for angles """ + + for out_unit in self.deg_units: + scale = coords.scale_units(out_unit, "deg") + + if out_unit.find("deg") == 0: + assert scale == 1.0 + elif out_unit.find("rad") == 0: + assert scale == np.pi / 180.0 + else: + assert scale == 1.0 / 15.0 + + def test_scale_units_dist(self): + """Test scale_units for distances """ + + for out_unit in self.dist_units: + scale = coords.scale_units(out_unit, "m") + + if out_unit == "m": + assert scale == 1.0 + elif out_unit.find("km") == 0: + assert scale == 0.001 + else: + assert scale == 100.0 + + def test_scale_units_vel(self): + """Test scale_units for velocities """ + + for out_unit in self.vel_units: + scale = coords.scale_units(out_unit, "m/s") + + if out_unit == "m/s": + assert scale == 1.0 + elif out_unit.find("km/s") == 0: + assert scale == 0.001 + else: + assert scale == 100.0 + + def test_scale_units_bad(self): + """Test scale_units for mismatched input""" + + assert_raises(ValueError, coords.scale_units, "happy", "m") + assert_raises(ValueError, coords.scale_units, "m", "happy") + assert_raises(ValueError, coords.scale_units, "m", "m/s") + assert_raises(ValueError, coords.scale_units, "m", "deg") + assert_raises(ValueError, coords.scale_units, "h", "km/s") + + def test_geodetic_to_geocentric_single(self): + """Test conversion from geodetic to geocentric coordinates""" + + lat0 = 45.0 + lon0 = 8.0 + + latx, lonx, radx = coords.geodetic_to_geocentric(lat0, + lon_in=lon0) + + assert (abs(latx - 44.807576784018046) < 1.0e-6) + assert (abs(lonx - lon0) < 1.0e-6) + assert (abs(radx - 6367.489543863465) < 1.0e-6) + + def test_geocentric_to_geodetic_single(self): + """Test conversion from geocentric to geodetic coordinates""" + + lat0 = 45.0 + lon0 = 8.0 + + latx, lonx, radx = coords.geodetic_to_geocentric(lat0, + lon_in=lon0, + inverse=True) + + assert (abs(latx - 45.192423215981954) < 1.0e-6) + assert (abs(lonx - lon0) < 1.0e-6) + assert (abs(radx - 6367.345908499981) < 1.0e-6) + + def test_geodetic_to_geocentric_mult(self): + """Test array conversion from geodetic to geocentric coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + latx, lonx, radx = coords.geodetic_to_geocentric(45.0*arr, + lon_in=8.0*arr) + + assert latx.shape == arr.shape + assert lonx.shape == arr.shape + assert radx.shape == arr.shape + assert (abs(latx - 44.807576784018046).max() < 1.0e-6) + assert (abs(lonx - 8.0).max() < 1.0e-6) + assert (abs(radx - 6367.489543863465).max() < 1.0e-6) + + def test_geocentric_to_geodetic_mult(self): + """Test array conversion from geocentric to geodetic coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + latx, lonx, radx = coords.geodetic_to_geocentric(45.0*arr, + lon_in=8.0*arr, + inverse=True) + + assert latx.shape == arr.shape + assert lonx.shape == arr.shape + assert radx.shape == arr.shape + assert (abs(latx - 45.192423215981954).max() < 1.0e-6) + assert (abs(lonx - 8.0).max() < 1.0e-6) + assert (abs(radx - 6367.345908499981).max() < 1.0e-6) + + def test_spherical_to_cartesian_single(self): + """Test conversion from spherical to cartesian coordinates""" + + x, y, z = coords.spherical_to_cartesian(45.0, 30.0, 1.0) + + assert abs(x - y) < 1.0e-6 + assert abs(z - 0.5) < 1.0e-6 + + def test_cartesian_to_spherical_single(self): + """Test conversion from cartesian to spherical coordinates""" + + x = 0.6123724356957946 + az, el, r = coords.spherical_to_cartesian(x, x, 0.5, + inverse=True) + + assert abs(az - 45.0) < 1.0e-6 + assert abs(el - 30.0) < 1.0e-6 + assert abs(r - 1.0) < 1.0e-6 + + def test_spherical_to_cartesian_mult(self): + """Test array conversion from spherical to cartesian coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + x, y, z = coords.spherical_to_cartesian(45.0*arr, 30.0*arr, arr) + + assert x.shape == arr.shape + assert y.shape == arr.shape + assert z.shape == arr.shape + assert abs(x - y).max() < 1.0e-6 + assert abs(z - 0.5).max() < 1.0e-6 + + def test_cartesian_to_spherical_mult(self): + """Test array conversion from cartesian to spherical coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + x = 0.6123724356957946 + az, el, r = coords.spherical_to_cartesian(x*arr, x*arr, 0.5*arr, + inverse=True) + + assert az.shape == arr.shape + assert el.shape == arr.shape + assert r.shape == arr.shape + assert abs(az - 45.0).max() < 1.0e-6 + assert abs(el - 30.0).max() < 1.0e-6 + assert abs(r - 1.0).max() < 1.0e-6 + + def test_geodetic_to_geocentric_inverse(self): + """Tests the reversibility of geodetic to geocentric conversions""" + + lat1 = 37.5 + lon1 = 117.3 + lat2, lon2, rad_e = coords.geodetic_to_geocentric(lat1, + lon_in=lon1, + inverse=False) + lat3, lon3, rad_e = coords.geodetic_to_geocentric(lat2, + lon_in=lon2, + inverse=True) + assert (abs(lon1-lon3) < 1.0e-6) + assert (abs(lat1-lat3) < 1.0e-6) + + def test_geodetic_to_geocentric_horizontal_inverse(self): + """Tests the reversibility of geodetic to geocentric horiz conversions + + Note: inverse of az and el angles currently non-functional""" + + lat1 = -17.5 + lon1 = 187.3 + az1 = 52.0 + el1 = 63.0 + lat2, lon2, rad_e, az2, el2 = \ + coords.geodetic_to_geocentric_horizontal(lat1, lon1, + az1, el1, + inverse=False) + lat3, lon3, rad_e, az3, el3 = \ + coords.geodetic_to_geocentric_horizontal(lat2, lon2, + az2, el2, + inverse=True) + + assert (abs(lon1-lon3) < 1.0e-6) + assert (abs(lat1-lat3) < 1.0e-6) + assert (abs(az1-az3) < 1.0e-6) + assert (abs(el1-el3) < 1.0e-6) + + def test_spherical_to_cartesian_inverse(self): + """Tests the reversibility of spherical to cartesian conversions""" + + x1 = 3000.0 + y1 = 2000.0 + z1 = 2500.0 + az, el, r = coords.spherical_to_cartesian(x1, y1, z1, + inverse=True) + x2, y2, z2 = coords.spherical_to_cartesian(az, el, r, + inverse=False) + + assert (abs(x1-x2) < 1.0e-6) + assert (abs(y1-y2) < 1.0e-6) + assert (abs(z1-z2) < 1.0e-6) + + def test_global_to_local_cartesian_inverse(self): + """Tests the reversibility of the global to loc cartesian transform""" + + x1 = 7000.0 + y1 = 8000.0 + z1 = 9500.0 + lat = 37.5 + lon = 289.0 + rad = 6380.0 + x2, y2, z2 = coords.global_to_local_cartesian(x1, y1, z1, + lat, lon, rad, + inverse=False) + x3, y3, z3 = coords.global_to_local_cartesian(x2, y2, z2, + lat, lon, rad, + inverse=True) + assert (abs(x1-x3) < 1.0e-6) + assert (abs(y1-y3) < 1.0e-6) + assert (abs(z1-z3) < 1.0e-6) + + def test_local_horizontal_to_global_geo(self): + """Tests the conversion of the local horizontal to global geo""" + + az = 30.0 + el = 45.0 + dist = 1000.0 + lat0 = 45.0 + lon0 = 0.0 + alt0 = 400.0 + + latx, lonx, radx = \ + coords.local_horizontal_to_global_geo(az, el, dist, + lat0, lon0, alt0) + + assert (abs(latx - 50.419037572472625) < 1.0e-6) + assert (abs(lonx + 7.694008395350697) < 1.0e-6) + assert (abs(radx - 7172.15486518744) < 1.0e-6) From 804623196b62f70c43b7813dbeb6006908bb667d Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Wed, 20 Feb 2019 16:25:38 -0500 Subject: [PATCH 005/231] test_utils_coords structure --- pysat/tests/test_utils_coords.py | 98 ++++++++++++++++++++------------ 1 file changed, 61 insertions(+), 37 deletions(-) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index b6cdff0..fafeb60 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -39,6 +39,9 @@ def teardown(self): del self.test_angles, self.testInst del self.deg_units, self.dist_units, self.vel_units + ##################################### + # Cyclic data conversions + def test_adjust_cyclic_data_default(self): """ Test adjust_cyclic_data with default range """ @@ -57,6 +60,9 @@ def test_adjust_cyclic_data_custom(self): assert test_angles.max() < 180.0 assert test_angles.min() >= -180.0 + ##################################### + # Update Longitude + def test_update_longitude(self): """Test update_longitude """ @@ -71,6 +77,9 @@ def test_bad_lon_name_update_longitude(self): assert_raises(ValueError, coords.update_longitude, self.testInst) + ##################################### + # Scale units + def test_scale_units_same(self): """ Test scale_units when both units are the same """ @@ -126,6 +135,9 @@ def test_scale_units_bad(self): assert_raises(ValueError, coords.scale_units, "m", "deg") assert_raises(ValueError, coords.scale_units, "h", "km/s") + ##################################### + # Geodetic / Geocentric conversions + def test_geodetic_to_geocentric_single(self): """Test conversion from geodetic to geocentric coordinates""" @@ -182,6 +194,49 @@ def test_geocentric_to_geodetic_mult(self): assert (abs(lonx - 8.0).max() < 1.0e-6) assert (abs(radx - 6367.345908499981).max() < 1.0e-6) + def test_geodetic_to_geocentric_inverse(self): + """Tests the reversibility of geodetic to geocentric conversions""" + + lat1 = 37.5 + lon1 = 117.3 + lat2, lon2, rad_e = coords.geodetic_to_geocentric(lat1, + lon_in=lon1, + inverse=False) + lat3, lon3, rad_e = coords.geodetic_to_geocentric(lat2, + lon_in=lon2, + inverse=True) + assert (abs(lon1-lon3) < 1.0e-6) + assert (abs(lat1-lat3) < 1.0e-6) + + ############################################### + # Geodetic / Geocentric Horizontal conversions + + def test_geodetic_to_geocentric_horizontal_inverse(self): + """Tests the reversibility of geodetic to geocentric horiz conversions + + Note: inverse of az and el angles currently non-functional""" + + lat1 = -17.5 + lon1 = 187.3 + az1 = 52.0 + el1 = 63.0 + lat2, lon2, rad_e, az2, el2 = \ + coords.geodetic_to_geocentric_horizontal(lat1, lon1, + az1, el1, + inverse=False) + lat3, lon3, rad_e, az3, el3 = \ + coords.geodetic_to_geocentric_horizontal(lat2, lon2, + az2, el2, + inverse=True) + + assert (abs(lon1-lon3) < 1.0e-6) + assert (abs(lat1-lat3) < 1.0e-6) + assert (abs(az1-az3) < 1.0e-6) + assert (abs(el1-el3) < 1.0e-6) + + #################################### + # Spherical / Cartesian conversions + def test_spherical_to_cartesian_single(self): """Test conversion from spherical to cartesian coordinates""" @@ -228,43 +283,6 @@ def test_cartesian_to_spherical_mult(self): assert abs(el - 30.0).max() < 1.0e-6 assert abs(r - 1.0).max() < 1.0e-6 - def test_geodetic_to_geocentric_inverse(self): - """Tests the reversibility of geodetic to geocentric conversions""" - - lat1 = 37.5 - lon1 = 117.3 - lat2, lon2, rad_e = coords.geodetic_to_geocentric(lat1, - lon_in=lon1, - inverse=False) - lat3, lon3, rad_e = coords.geodetic_to_geocentric(lat2, - lon_in=lon2, - inverse=True) - assert (abs(lon1-lon3) < 1.0e-6) - assert (abs(lat1-lat3) < 1.0e-6) - - def test_geodetic_to_geocentric_horizontal_inverse(self): - """Tests the reversibility of geodetic to geocentric horiz conversions - - Note: inverse of az and el angles currently non-functional""" - - lat1 = -17.5 - lon1 = 187.3 - az1 = 52.0 - el1 = 63.0 - lat2, lon2, rad_e, az2, el2 = \ - coords.geodetic_to_geocentric_horizontal(lat1, lon1, - az1, el1, - inverse=False) - lat3, lon3, rad_e, az3, el3 = \ - coords.geodetic_to_geocentric_horizontal(lat2, lon2, - az2, el2, - inverse=True) - - assert (abs(lon1-lon3) < 1.0e-6) - assert (abs(lat1-lat3) < 1.0e-6) - assert (abs(az1-az3) < 1.0e-6) - assert (abs(el1-el3) < 1.0e-6) - def test_spherical_to_cartesian_inverse(self): """Tests the reversibility of spherical to cartesian conversions""" @@ -280,6 +298,9 @@ def test_spherical_to_cartesian_inverse(self): assert (abs(y1-y2) < 1.0e-6) assert (abs(z1-z2) < 1.0e-6) + ######################################## + # Global / Local Cartesian conversions + def test_global_to_local_cartesian_inverse(self): """Tests the reversibility of the global to loc cartesian transform""" @@ -299,6 +320,9 @@ def test_global_to_local_cartesian_inverse(self): assert (abs(y1-y3) < 1.0e-6) assert (abs(z1-z3) < 1.0e-6) + ######################################## + # Local Horizontal / Global conversions + def test_local_horizontal_to_global_geo(self): """Tests the conversion of the local horizontal to global geo""" From 9129d13cdba25e8893defd3e7a54c42164365449 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Wed, 20 Feb 2019 17:47:10 -0500 Subject: [PATCH 006/231] move local time to coords --- pysat/tests/test_utils_coords.py | 9 +++++ pysat/utils/coords.py | 60 ++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index fafeb60..75f991c 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -340,3 +340,12 @@ def test_local_horizontal_to_global_geo(self): assert (abs(latx - 50.419037572472625) < 1.0e-6) assert (abs(lonx + 7.694008395350697) < 1.0e-6) assert (abs(radx - 7172.15486518744) < 1.0e-6) + + ######################### + # calc_solar_local_time + + def test_calc_solar_local_time(self): + + pytime.calc_solar_local_time(inst, lon_name=None, slt_name='slt') + + assert True diff --git a/pysat/utils/coords.py b/pysat/utils/coords.py index 7f7122c..6cb44f0 100644 --- a/pysat/utils/coords.py +++ b/pysat/utils/coords.py @@ -489,3 +489,63 @@ def local_horizontal_to_global_geo(az, el, dist, lat_orig, lon_orig, alt_orig, rad_pnt = rearth + rad_pnt - 6371.0 return lat_pnt, lon_pnt, rad_pnt + + +def calc_solar_local_time(inst, lon_name=None, slt_name='slt'): + """ Append solar local time to an instrument object + + Parameters + ------------ + inst : pysat.Instrument instance + instrument object to be updated + lon_name : string + name of the longtiude data key (assumes data are in degrees) + slt_name : string + name of the output solar local time data key (default='slt') + + Returns + --------- + updates instrument data in column specified by slt_name + + """ + import datetime as dt + + if lon_name not in inst.data.keys(): + raise ValueError('uknown longitude variable name') + + # Convert from numpy epoch nanoseconds to UT seconds of day + utsec = list() + for nptime in inst.index.values.astype(int): + # Numpy times come out in nanoseconds and timestamp converts + # from seconds + dtime = dt.datetime.fromtimestamp(nptime * 1.0e-9) + utsec.append((dtime.hour * 3600.0 + dtime.minute * 60.0 + + dtime.second + dtime.microsecond * 1.0e-6) / 3600.0) + + # Calculate solar local time + slt = np.array([t + inst[lon_name][i] / 15.0 for i, t in enumerate(utsec)]) + + # Ensure that solar local time falls between 0 and 24 hours + slt[slt >= 24.0] -= 24.0 + slt[slt < 0.0] += 24.0 + + # Add the solar local time to the instrument + if inst.pandas_format: + inst[slt_name] = pds.Series(slt, index=inst.data.index) + else: + data = inst.data.assign(pysat_slt=(inst.data.coords.keys(), slt)) + data.rename({"pysat_slt": slt_name}, inplace=True) + inst.data = data + + # Add units to the metadata + inst.meta.__setitem__(slt_name, {inst.meta.units_label: 'h', + inst.meta.name_label: "Solar Local Time", + inst.meta.desc_label: "Solar local time", + inst.meta.plot_label: "SLT", + inst.meta.axis_label: "SLT", + inst.meta.scale_label: "linear", + inst.meta.min_label: 0.0, + inst.meta.max_label: 24.0, + inst.meta.fill_label: np.nan}) + + return From c7da44ee39bef699c6b64060e6c656a73ea9c2c5 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Wed, 20 Feb 2019 18:02:42 -0500 Subject: [PATCH 007/231] unit tests for solar local time --- pysat/tests/test_utils_coords.py | 32 +++++++++++++++++++++----------- pysat/utils/coords.py | 1 + 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index 75f991c..20da4ef 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -71,11 +71,30 @@ def test_update_longitude(self): assert np.all(self.testInst.data['longitude'] < 180.0) assert np.all(self.testInst.data['longitude'] >= -180.0) + @raises(ValueError) def test_bad_lon_name_update_longitude(self): """Test update_longitude with a bad longitude name""" - assert_raises(ValueError, coords.update_longitude, - self.testInst) + coords.update_longitude(self.testInst, lon_name="not longitude") + + ######################### + # calc_solar_local_time + + def test_calc_solar_local_time(self): + + coords.calc_solar_local_time(self.testInst, lon_name="longitude", + slt_name='slt') + target = [17.666667, 18.200278, 18.927222, + 19.034167, 19.334444, 19.659389] + + assert (np.abs(self.testInst['slt'] - target)).max() < 1.0e-6 + + @raises(ValueError) + def test_bad_lon_name_calc_solar_local_time(self): + """Test calc_solar_local_time with a bad longitude name""" + + coords.calc_solar_local_time(self.testInst, lon_name="not longitude", + slt_name='slt') ##################################### # Scale units @@ -340,12 +359,3 @@ def test_local_horizontal_to_global_geo(self): assert (abs(latx - 50.419037572472625) < 1.0e-6) assert (abs(lonx + 7.694008395350697) < 1.0e-6) assert (abs(radx - 7172.15486518744) < 1.0e-6) - - ######################### - # calc_solar_local_time - - def test_calc_solar_local_time(self): - - pytime.calc_solar_local_time(inst, lon_name=None, slt_name='slt') - - assert True diff --git a/pysat/utils/coords.py b/pysat/utils/coords.py index 6cb44f0..610d8d4 100644 --- a/pysat/utils/coords.py +++ b/pysat/utils/coords.py @@ -7,6 +7,7 @@ """ import numpy as np +import pandas as pds def adjust_cyclic_data(samples, high=2.0*np.pi, low=0.0): From e292e42cd0fb2f635fa8f6ba15e251d8ed5e37aa Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Wed, 20 Feb 2019 18:39:09 -0500 Subject: [PATCH 008/231] more coord tests + style --- pysat/tests/test_utils_coords.py | 234 ++++++++++++++++++++++--------- pysat/utils/coords.py | 120 ++++++++-------- 2 files changed, 227 insertions(+), 127 deletions(-) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index 20da4ef..5b40ba7 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -6,7 +6,7 @@ import nose.tools from nose.tools import assert_raises, raises import pysat -from pysat.utils import coords +from pysat.utils import coords, time class TestBasics(): @@ -19,15 +19,13 @@ def setup(self): clean_level='clean') # Add longitude to the test instrument ones = np.ones(shape=len(self.test_angles)) - time = pysat.utils.time.create_datetime_index(year=ones*2001, - month=ones, - uts=np.arange(0.0, - len(ones), - 1.0)) + tind = time.create_datetime_index(year=ones*2001, + month=ones, + uts=np.arange(0.0, len(ones), 1.0)) self.testInst.data = \ - pds.DataFrame(np.array([time, self.test_angles]).transpose(), - index=time, columns=["time", "longitude"]) + pds.DataFrame(np.array([tind, self.test_angles]).transpose(), + index=tind, columns=["time", "longitude"]) self.deg_units = ["deg", "degree", "degrees", "rad", "radian", "radians", "h", "hr", "hrs", "hours"] @@ -87,7 +85,7 @@ def test_calc_solar_local_time(self): target = [17.666667, 18.200278, 18.927222, 19.034167, 19.334444, 19.659389] - assert (np.abs(self.testInst['slt'] - target)).max() < 1.0e-6 + assert (abs(self.testInst['slt'] - target)).max() < 1.0e-6 @raises(ValueError) def test_bad_lon_name_calc_solar_local_time(self): @@ -160,76 +158,128 @@ def test_scale_units_bad(self): def test_geodetic_to_geocentric_single(self): """Test conversion from geodetic to geocentric coordinates""" - lat0 = 45.0 - lon0 = 8.0 - - latx, lonx, radx = coords.geodetic_to_geocentric(lat0, - lon_in=lon0) + lat, lon, rad = coords.geodetic_to_geocentric(45.0, lon_in=8.0) - assert (abs(latx - 44.807576784018046) < 1.0e-6) - assert (abs(lonx - lon0) < 1.0e-6) - assert (abs(radx - 6367.489543863465) < 1.0e-6) + assert abs(lat - 44.807576784018046) < 1.0e-6 + assert abs(lon - 8.0) < 1.0e-6 + assert abs(rad - 6367.489543863465) < 1.0e-6 def test_geocentric_to_geodetic_single(self): """Test conversion from geocentric to geodetic coordinates""" - lat0 = 45.0 - lon0 = 8.0 - - latx, lonx, radx = coords.geodetic_to_geocentric(lat0, - lon_in=lon0, - inverse=True) + lat, lon, rad = coords.geodetic_to_geocentric(45.0, lon_in=8.0, + inverse=True) - assert (abs(latx - 45.192423215981954) < 1.0e-6) - assert (abs(lonx - lon0) < 1.0e-6) - assert (abs(radx - 6367.345908499981) < 1.0e-6) + assert abs(lat - 45.192423215981954) < 1.0e-6 + assert abs(lon - 8.0) < 1.0e-6 + assert abs(rad - 6367.345908499981) < 1.0e-6 def test_geodetic_to_geocentric_mult(self): """Test array conversion from geodetic to geocentric coordinates""" arr = np.ones(shape=(10,), dtype=float) - latx, lonx, radx = coords.geodetic_to_geocentric(45.0*arr, - lon_in=8.0*arr) + lat, lon, rad = coords.geodetic_to_geocentric(45.0*arr, lon_in=8.0*arr) - assert latx.shape == arr.shape - assert lonx.shape == arr.shape - assert radx.shape == arr.shape - assert (abs(latx - 44.807576784018046).max() < 1.0e-6) - assert (abs(lonx - 8.0).max() < 1.0e-6) - assert (abs(radx - 6367.489543863465).max() < 1.0e-6) + assert lat.shape == arr.shape + assert lon.shape == arr.shape + assert rad.shape == arr.shape + assert abs(lat - 44.807576784018046).max() < 1.0e-6 + assert abs(lon - 8.0).max() < 1.0e-6 + assert abs(rad - 6367.489543863465).max() < 1.0e-6 def test_geocentric_to_geodetic_mult(self): """Test array conversion from geocentric to geodetic coordinates""" arr = np.ones(shape=(10,), dtype=float) - latx, lonx, radx = coords.geodetic_to_geocentric(45.0*arr, - lon_in=8.0*arr, - inverse=True) + lat, lon, rad = coords.geodetic_to_geocentric(45.0*arr, lon_in=8.0*arr, + inverse=True) - assert latx.shape == arr.shape - assert lonx.shape == arr.shape - assert radx.shape == arr.shape - assert (abs(latx - 45.192423215981954).max() < 1.0e-6) - assert (abs(lonx - 8.0).max() < 1.0e-6) - assert (abs(radx - 6367.345908499981).max() < 1.0e-6) + assert lat.shape == arr.shape + assert lon.shape == arr.shape + assert rad.shape == arr.shape + assert abs(lat - 45.192423215981954).max() < 1.0e-6 + assert abs(lon - 8.0).max() < 1.0e-6 + assert abs(rad - 6367.345908499981).max() < 1.0e-6 def test_geodetic_to_geocentric_inverse(self): """Tests the reversibility of geodetic to geocentric conversions""" lat1 = 37.5 lon1 = 117.3 - lat2, lon2, rad_e = coords.geodetic_to_geocentric(lat1, - lon_in=lon1, + lat2, lon2, rad_e = coords.geodetic_to_geocentric(lat1, lon_in=lon1, inverse=False) - lat3, lon3, rad_e = coords.geodetic_to_geocentric(lat2, - lon_in=lon2, + lat3, lon3, rad_e = coords.geodetic_to_geocentric(lat2, lon_in=lon2, inverse=True) - assert (abs(lon1-lon3) < 1.0e-6) - assert (abs(lat1-lat3) < 1.0e-6) + assert abs(lon1-lon3) < 1.0e-6 + assert abs(lat1-lat3) < 1.0e-6 ############################################### # Geodetic / Geocentric Horizontal conversions + def test_geodetic_to_geocentric_horz_single(self): + """Test conversion from geodetic to geocentric coordinates""" + + lat, lon, rad, az, el = \ + coords.geodetic_to_geocentric_horizontal(45.0, 8.0, 52.0, 63.0) + + assert abs(lat - 44.807576784018046) < 1.0e-6 + assert abs(lon - 8.0) < 1.0e-6 + assert abs(rad - 6367.489543863465) < 1.0e-6 + assert abs(az - 51.70376774257361) < 1.0e-6 + assert abs(el - 62.8811403841008) < 1.0e-6 + + def test_geocentric_to_geodetic_horz_single(self): + """Test conversion from geocentric to geodetic coordinates""" + + lat, lon, rad, az, el = \ + coords.geodetic_to_geocentric_horizontal(45.0, 8.0, 52.0, 63.0, + inverse=True) + + assert abs(lat - 45.192423215981954) < 1.0e-6 + assert abs(lon - 8.0) < 1.0e-6 + assert abs(rad - 6367.345908499981) < 1.0e-6 + assert abs(az - 52.29896101551479) < 1.0e-6 + assert abs(el - 63.118072033649916) < 1.0e-6 + + def test_geodetic_to_geocentric_horz_mult(self): + """Test array conversion from geodetic to geocentric coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + lat, lon, rad, az, el = \ + coords.geodetic_to_geocentric_horizontal(45.0*arr, 8.0*arr, + 52.0*arr, 63.0*arr) + + assert lat.shape == arr.shape + assert lon.shape == arr.shape + assert rad.shape == arr.shape + assert az.shape == arr.shape + assert el.shape == arr.shape + assert abs(lat - 44.807576784018046).max() < 1.0e-6 + assert abs(lon - 8.0).max() < 1.0e-6 + assert abs(rad - 6367.489543863465).max() < 1.0e-6 + assert abs(az - 51.70376774257361).max() < 1.0e-6 + assert abs(el - 62.8811403841008).max() < 1.0e-6 + + def test_geocentric_to_geodetic_horz_mult(self): + """Test array conversion from geocentric to geodetic coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + lat, lon, rad, az, el = \ + coords.geodetic_to_geocentric_horizontal(45.0*arr, 8.0*arr, + 52.0*arr, 63.0*arr, + inverse=True) + + assert lat.shape == arr.shape + assert lon.shape == arr.shape + assert rad.shape == arr.shape + assert az.shape == arr.shape + assert el.shape == arr.shape + assert abs(lat - 45.192423215981954).max() < 1.0e-6 + assert abs(lon - 8.0).max() < 1.0e-6 + assert abs(rad - 6367.345908499981).max() < 1.0e-6 + assert abs(az - 52.29896101551479).max() < 1.0e-6 + assert abs(el - 63.118072033649916).max() < 1.0e-6 + def test_geodetic_to_geocentric_horizontal_inverse(self): """Tests the reversibility of geodetic to geocentric horiz conversions @@ -240,18 +290,16 @@ def test_geodetic_to_geocentric_horizontal_inverse(self): az1 = 52.0 el1 = 63.0 lat2, lon2, rad_e, az2, el2 = \ - coords.geodetic_to_geocentric_horizontal(lat1, lon1, - az1, el1, + coords.geodetic_to_geocentric_horizontal(lat1, lon1, az1, el1, inverse=False) lat3, lon3, rad_e, az3, el3 = \ - coords.geodetic_to_geocentric_horizontal(lat2, lon2, - az2, el2, + coords.geodetic_to_geocentric_horizontal(lat2, lon2, az2, el2, inverse=True) - assert (abs(lon1-lon3) < 1.0e-6) - assert (abs(lat1-lat3) < 1.0e-6) - assert (abs(az1-az3) < 1.0e-6) - assert (abs(el1-el3) < 1.0e-6) + assert abs(lon1-lon3) < 1.0e-6 + assert abs(lat1-lat3) < 1.0e-6 + assert abs(az1-az3) < 1.0e-6 + assert abs(el1-el3) < 1.0e-6 #################################### # Spherical / Cartesian conversions @@ -313,13 +361,65 @@ def test_spherical_to_cartesian_inverse(self): x2, y2, z2 = coords.spherical_to_cartesian(az, el, r, inverse=False) - assert (abs(x1-x2) < 1.0e-6) - assert (abs(y1-y2) < 1.0e-6) - assert (abs(z1-z2) < 1.0e-6) + assert abs(x1-x2) < 1.0e-6 + assert abs(y1-y2) < 1.0e-6 + assert abs(z1-z2) < 1.0e-6 ######################################## # Global / Local Cartesian conversions + def test_global_to_local_cartesian_single(self): + """Test conversion from global to local cartesian coordinates""" + + x, y, z = coords.global_to_local_cartesian(7000.0, 8000.0, 9000.0, + 37.5, 289.0, 6380.0) + + assert abs(x + 9223.175264852474) < 1.0e-6 + assert abs(y + 2239.835278362686) < 1.0e-6 + assert abs(z - 11323.126851088331) < 1.0e-6 + + def test_local_cartesian_to_global_single(self): + """Test conversion from local cartesian to global coordinates""" + + x, y, z = coords.global_to_local_cartesian(7000.0, 8000.0, 9000.0, + 37.5, 289.0, 6380.0, + inverse=True) + + assert abs(x + 5709.804676635975) < 1.0e-6 + assert abs(y + 4918.397556010223) < 1.0e-6 + assert abs(z - 15709.577500484005) < 1.0e-6 + + def test_global_to_local_cartesian_mult(self): + """Test array conversion from global to local cartesian coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + x, y, z = coords.global_to_local_cartesian(7000.0*arr, 8000.0*arr, + 9000.0*arr, 37.5*arr, + 289.0*arr, 6380.0*arr) + + assert x.shape == arr.shape + assert y.shape == arr.shape + assert z.shape == arr.shape + assert abs(x + 9223.175264852474).max() < 1.0e-6 + assert abs(y + 2239.835278362686).max() < 1.0e-6 + assert abs(z - 11323.126851088331).max() < 1.0e-6 + + def test_local_cartesian_to_global_mult(self): + """Test array conversion from local cartesian to global coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + x, y, z = coords.global_to_local_cartesian(7000.0*arr, 8000.0*arr, + 9000.0*arr, 37.5*arr, + 289.0*arr, 6380.0*arr, + inverse=True) + + assert x.shape == arr.shape + assert y.shape == arr.shape + assert z.shape == arr.shape + assert abs(x + 5709.804676635975).max() < 1.0e-6 + assert abs(y + 4918.397556010223).max() < 1.0e-6 + assert abs(z - 15709.577500484005).max() < 1.0e-6 + def test_global_to_local_cartesian_inverse(self): """Tests the reversibility of the global to loc cartesian transform""" @@ -335,9 +435,9 @@ def test_global_to_local_cartesian_inverse(self): x3, y3, z3 = coords.global_to_local_cartesian(x2, y2, z2, lat, lon, rad, inverse=True) - assert (abs(x1-x3) < 1.0e-6) - assert (abs(y1-y3) < 1.0e-6) - assert (abs(z1-z3) < 1.0e-6) + assert abs(x1-x3) < 1.0e-6 + assert abs(y1-y3) < 1.0e-6 + assert abs(z1-z3) < 1.0e-6 ######################################## # Local Horizontal / Global conversions @@ -352,10 +452,10 @@ def test_local_horizontal_to_global_geo(self): lon0 = 0.0 alt0 = 400.0 - latx, lonx, radx = \ + lat, lon, rad = \ coords.local_horizontal_to_global_geo(az, el, dist, lat0, lon0, alt0) - assert (abs(latx - 50.419037572472625) < 1.0e-6) - assert (abs(lonx + 7.694008395350697) < 1.0e-6) - assert (abs(radx - 7172.15486518744) < 1.0e-6) + assert abs(lat - 50.419037572472625) < 1.0e-6 + assert abs(lon + 7.694008395350697) < 1.0e-6 + assert abs(rad - 7172.15486518744) < 1.0e-6 diff --git a/pysat/utils/coords.py b/pysat/utils/coords.py index 610d8d4..59106c0 100644 --- a/pysat/utils/coords.py +++ b/pysat/utils/coords.py @@ -75,6 +75,66 @@ def update_longitude(inst, lon_name=None, high=180.0, low=-180.0): return +def calc_solar_local_time(inst, lon_name=None, slt_name='slt'): + """ Append solar local time to an instrument object + + Parameters + ------------ + inst : pysat.Instrument instance + instrument object to be updated + lon_name : string + name of the longtiude data key (assumes data are in degrees) + slt_name : string + name of the output solar local time data key (default='slt') + + Returns + --------- + updates instrument data in column specified by slt_name + + """ + import datetime as dt + + if lon_name not in inst.data.keys(): + raise ValueError('uknown longitude variable name') + + # Convert from numpy epoch nanoseconds to UT seconds of day + utsec = list() + for nptime in inst.index.values.astype(int): + # Numpy times come out in nanoseconds and timestamp converts + # from seconds + dtime = dt.datetime.fromtimestamp(nptime * 1.0e-9) + utsec.append((dtime.hour * 3600.0 + dtime.minute * 60.0 + + dtime.second + dtime.microsecond * 1.0e-6) / 3600.0) + + # Calculate solar local time + slt = np.array([t + inst[lon_name][i] / 15.0 for i, t in enumerate(utsec)]) + + # Ensure that solar local time falls between 0 and 24 hours + slt[slt >= 24.0] -= 24.0 + slt[slt < 0.0] += 24.0 + + # Add the solar local time to the instrument + if inst.pandas_format: + inst[slt_name] = pds.Series(slt, index=inst.data.index) + else: + data = inst.data.assign(pysat_slt=(inst.data.coords.keys(), slt)) + data.rename({"pysat_slt": slt_name}, inplace=True) + inst.data = data + + # Add units to the metadata + inst.meta.__setitem__(slt_name, {inst.meta.units_label: 'h', + inst.meta.name_label: "Solar Local Time", + inst.meta.desc_label: "Solar local time", + inst.meta.plot_label: "SLT", + inst.meta.axis_label: "SLT", + inst.meta.scale_label: "linear", + inst.meta.min_label: 0.0, + inst.meta.max_label: 24.0, + inst.meta.fill_label: np.nan}) + + return + + def scale_units(out_unit, in_unit): """ Determine the scaling factor between two units @@ -490,63 +550,3 @@ def local_horizontal_to_global_geo(az, el, dist, lat_orig, lon_orig, alt_orig, rad_pnt = rearth + rad_pnt - 6371.0 return lat_pnt, lon_pnt, rad_pnt - - -def calc_solar_local_time(inst, lon_name=None, slt_name='slt'): - """ Append solar local time to an instrument object - - Parameters - ------------ - inst : pysat.Instrument instance - instrument object to be updated - lon_name : string - name of the longtiude data key (assumes data are in degrees) - slt_name : string - name of the output solar local time data key (default='slt') - - Returns - --------- - updates instrument data in column specified by slt_name - - """ - import datetime as dt - - if lon_name not in inst.data.keys(): - raise ValueError('uknown longitude variable name') - - # Convert from numpy epoch nanoseconds to UT seconds of day - utsec = list() - for nptime in inst.index.values.astype(int): - # Numpy times come out in nanoseconds and timestamp converts - # from seconds - dtime = dt.datetime.fromtimestamp(nptime * 1.0e-9) - utsec.append((dtime.hour * 3600.0 + dtime.minute * 60.0 + - dtime.second + dtime.microsecond * 1.0e-6) / 3600.0) - - # Calculate solar local time - slt = np.array([t + inst[lon_name][i] / 15.0 for i, t in enumerate(utsec)]) - - # Ensure that solar local time falls between 0 and 24 hours - slt[slt >= 24.0] -= 24.0 - slt[slt < 0.0] += 24.0 - - # Add the solar local time to the instrument - if inst.pandas_format: - inst[slt_name] = pds.Series(slt, index=inst.data.index) - else: - data = inst.data.assign(pysat_slt=(inst.data.coords.keys(), slt)) - data.rename({"pysat_slt": slt_name}, inplace=True) - inst.data = data - - # Add units to the metadata - inst.meta.__setitem__(slt_name, {inst.meta.units_label: 'h', - inst.meta.name_label: "Solar Local Time", - inst.meta.desc_label: "Solar local time", - inst.meta.plot_label: "SLT", - inst.meta.axis_label: "SLT", - inst.meta.scale_label: "linear", - inst.meta.min_label: 0.0, - inst.meta.max_label: 24.0, - inst.meta.fill_label: np.nan}) - - return From 99e196f92c54fb805c33b24707fa27d68b28dc93 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Thu, 21 Feb 2019 06:06:49 -0500 Subject: [PATCH 009/231] test_calc_solar_local_time --- pysat/tests/test_utils_coords.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index 5b40ba7..eff67fe 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -79,11 +79,12 @@ def test_bad_lon_name_update_longitude(self): # calc_solar_local_time def test_calc_solar_local_time(self): + """Test calc_solar_local_time""" coords.calc_solar_local_time(self.testInst, lon_name="longitude", slt_name='slt') - target = [17.666667, 18.200278, 18.927222, - 19.034167, 19.334444, 19.659389] + target = np.array([17.666667, 18.200278, 18.927222, + 19.034167, 19.334444, 19.659389]) assert (abs(self.testInst['slt'] - target)).max() < 1.0e-6 From 1ec067c8e194c3ce7e3c9db1989e1b69a6023bef Mon Sep 17 00:00:00 2001 From: jklenzing Date: Thu, 21 Feb 2019 13:21:21 -0500 Subject: [PATCH 010/231] loosen tolerance on test_calc_solar_local_time --- pysat/tests/test_utils_coords.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index eff67fe..771550b 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -86,7 +86,7 @@ def test_calc_solar_local_time(self): target = np.array([17.666667, 18.200278, 18.927222, 19.034167, 19.334444, 19.659389]) - assert (abs(self.testInst['slt'] - target)).max() < 1.0e-6 + assert (abs(self.testInst['slt'] - target)).max() < 1.0e-5 @raises(ValueError) def test_bad_lon_name_calc_solar_local_time(self): From d27d4a70eeb0fdfbad8858038cd92bb8a0ae0833 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Thu, 21 Feb 2019 20:25:37 -0500 Subject: [PATCH 011/231] updated targets --- pysat/tests/test_utils_coords.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index 771550b..2704949 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -83,10 +83,10 @@ def test_calc_solar_local_time(self): coords.calc_solar_local_time(self.testInst, lon_name="longitude", slt_name='slt') - target = np.array([17.666667, 18.200278, 18.927222, - 19.034167, 19.334444, 19.659389]) + target = np.array([17.66666667, 18.20027778, 18.92722222, + 19.03416667, 19.33444444, 19.65938889]) - assert (abs(self.testInst['slt'] - target)).max() < 1.0e-5 + assert (abs(self.testInst['slt'] - target)).max() < 1.0e-6 @raises(ValueError) def test_bad_lon_name_calc_solar_local_time(self): From a6f27eafdf38c371712267bd64eb229a0a93b78e Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Fri, 22 Feb 2019 02:10:56 -0500 Subject: [PATCH 012/231] test --- pysat/tests/test_utils_coords.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index 2704949..78668f4 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -86,7 +86,7 @@ def test_calc_solar_local_time(self): target = np.array([17.66666667, 18.20027778, 18.92722222, 19.03416667, 19.33444444, 19.65938889]) - assert (abs(self.testInst['slt'] - target)).max() < 1.0e-6 + assert (abs(self.testInst['slt'] - target)).max() < 1.0 @raises(ValueError) def test_bad_lon_name_calc_solar_local_time(self): From 62ddd17c0c1894dd1f1c3dd939c115a4659ba69f Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Fri, 22 Feb 2019 08:32:53 -0500 Subject: [PATCH 013/231] opposite test --- pysat/tests/test_utils_coords.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index 78668f4..2d7d739 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -86,7 +86,7 @@ def test_calc_solar_local_time(self): target = np.array([17.66666667, 18.20027778, 18.92722222, 19.03416667, 19.33444444, 19.65938889]) - assert (abs(self.testInst['slt'] - target)).max() < 1.0 + assert (abs(self.testInst['slt'] - target)).max() > 1.0 @raises(ValueError) def test_bad_lon_name_calc_solar_local_time(self): From 76a68d8a689b992ff666ec640978a86e7304df25 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Fri, 22 Feb 2019 09:40:24 -0500 Subject: [PATCH 014/231] review round 1 --- pysat/tests/test_utils_coords.py | 1 - pysat/utils/coords.py | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index 2d7d739..7d8381c 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -3,7 +3,6 @@ """ import numpy as np import pandas as pds -import nose.tools from nose.tools import assert_raises, raises import pysat from pysat.utils import coords, time diff --git a/pysat/utils/coords.py b/pysat/utils/coords.py index 59106c0..7b946e4 100644 --- a/pysat/utils/coords.py +++ b/pysat/utils/coords.py @@ -59,6 +59,7 @@ def update_longitude(inst, lon_name=None, high=180.0, low=-180.0): updates instrument data in column 'lon_name' """ + from pysat.utils.coords import adjust_cyclic_data if lon_name not in inst.data.keys(): @@ -92,6 +93,7 @@ def calc_solar_local_time(inst, lon_name=None, slt_name='slt'): updates instrument data in column specified by slt_name """ + import datetime as dt if lon_name not in inst.data.keys(): @@ -311,6 +313,7 @@ def geodetic_to_geocentric_horizontal(lat_in, lon_in, az_in, el_in, Based on J.M. Ruohoniemi's geopack and R.J. Barnes radar.pro """ + az = np.radians(az_in) el = np.radians(el_in) From 086a2007f48fd2b6ae31333d6c2af0794a182d5b Mon Sep 17 00:00:00 2001 From: jklenzing Date: Fri, 22 Feb 2019 10:38:50 -0500 Subject: [PATCH 015/231] setitem fix --- pysat/tests/test_utils_coords.py | 2 +- pysat/utils/coords.py | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index 7d8381c..cc427e0 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -85,7 +85,7 @@ def test_calc_solar_local_time(self): target = np.array([17.66666667, 18.20027778, 18.92722222, 19.03416667, 19.33444444, 19.65938889]) - assert (abs(self.testInst['slt'] - target)).max() > 1.0 + assert (abs(self.testInst['slt'][0] - target[0])).max() < 1.0e-6 @raises(ValueError) def test_bad_lon_name_calc_solar_local_time(self): diff --git a/pysat/utils/coords.py b/pysat/utils/coords.py index 7b946e4..6ff01c4 100644 --- a/pysat/utils/coords.py +++ b/pysat/utils/coords.py @@ -124,15 +124,15 @@ def calc_solar_local_time(inst, lon_name=None, slt_name='slt'): inst.data = data # Add units to the metadata - inst.meta.__setitem__(slt_name, {inst.meta.units_label: 'h', - inst.meta.name_label: "Solar Local Time", - inst.meta.desc_label: "Solar local time", - inst.meta.plot_label: "SLT", - inst.meta.axis_label: "SLT", - inst.meta.scale_label: "linear", - inst.meta.min_label: 0.0, - inst.meta.max_label: 24.0, - inst.meta.fill_label: np.nan}) + inst.meta[slt_name] = {inst.meta.units_label: 'h', + inst.meta.name_label: "Solar Local Time", + inst.meta.desc_label: "Solar local time", + inst.meta.plot_label: "SLT", + inst.meta.axis_label: "SLT", + inst.meta.scale_label: "linear", + inst.meta.min_label: 0.0, + inst.meta.max_label: 24.0, + inst.meta.fill_label: np.nan}) return @@ -313,7 +313,7 @@ def geodetic_to_geocentric_horizontal(lat_in, lon_in, az_in, el_in, Based on J.M. Ruohoniemi's geopack and R.J. Barnes radar.pro """ - + az = np.radians(az_in) el = np.radians(el_in) From 0e33e06c69407906913427bde042d276ca3a2b2e Mon Sep 17 00:00:00 2001 From: jklenzing Date: Fri, 22 Feb 2019 10:51:27 -0500 Subject: [PATCH 016/231] test --- pysat/tests/test_utils_coords.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index cc427e0..929dc42 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -85,7 +85,7 @@ def test_calc_solar_local_time(self): target = np.array([17.66666667, 18.20027778, 18.92722222, 19.03416667, 19.33444444, 19.65938889]) - assert (abs(self.testInst['slt'][0] - target[0])).max() < 1.0e-6 + assert (abs(self.testInst['slt'][-1] - target[-1])).max() < 1.0e-6 @raises(ValueError) def test_bad_lon_name_calc_solar_local_time(self): From dadd14a6212e07c5dab768c74f2b64792c58491f Mon Sep 17 00:00:00 2001 From: jklenzing Date: Fri, 22 Feb 2019 10:58:35 -0500 Subject: [PATCH 017/231] typo --- pysat/utils/coords.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysat/utils/coords.py b/pysat/utils/coords.py index 6ff01c4..f127498 100644 --- a/pysat/utils/coords.py +++ b/pysat/utils/coords.py @@ -132,7 +132,7 @@ def calc_solar_local_time(inst, lon_name=None, slt_name='slt'): inst.meta.scale_label: "linear", inst.meta.min_label: 0.0, inst.meta.max_label: 24.0, - inst.meta.fill_label: np.nan}) + inst.meta.fill_label: np.nan} return From 5bf8a8b1c755c9716f6361a97832a19d4490da65 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Fri, 22 Feb 2019 12:37:00 -0500 Subject: [PATCH 018/231] switch to mod --- pysat/utils/coords.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pysat/utils/coords.py b/pysat/utils/coords.py index f127498..dc60720 100644 --- a/pysat/utils/coords.py +++ b/pysat/utils/coords.py @@ -112,8 +112,9 @@ def calc_solar_local_time(inst, lon_name=None, slt_name='slt'): slt = np.array([t + inst[lon_name][i] / 15.0 for i, t in enumerate(utsec)]) # Ensure that solar local time falls between 0 and 24 hours - slt[slt >= 24.0] -= 24.0 - slt[slt < 0.0] += 24.0 + # slt[slt >= 24.0] -= 24.0 + # slt[slt < 0.0] += 24.0 + slt = np.mod(slt, 24.0) # Add the solar local time to the instrument if inst.pandas_format: From 862af2f59c787ff38e7ec8bf3058df09b0bf36ca Mon Sep 17 00:00:00 2001 From: jklenzing Date: Fri, 22 Feb 2019 12:45:50 -0500 Subject: [PATCH 019/231] restore travis tests --- pysat/tests/test_utils_coords.py | 20 +++++++++++--------- pysat/utils/coords.py | 2 -- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index 929dc42..3b61f5f 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -77,15 +77,17 @@ def test_bad_lon_name_update_longitude(self): ######################### # calc_solar_local_time - def test_calc_solar_local_time(self): - """Test calc_solar_local_time""" - - coords.calc_solar_local_time(self.testInst, lon_name="longitude", - slt_name='slt') - target = np.array([17.66666667, 18.20027778, 18.92722222, - 19.03416667, 19.33444444, 19.65938889]) - - assert (abs(self.testInst['slt'][-1] - target[-1])).max() < 1.0e-6 + # NOTE: TURNING OFF THIS TEST FOR NOW WHILE WE DEBUG TRAVIS IMPLEMENTATION + + # def test_calc_solar_local_time(self): + # """Test calc_solar_local_time""" + # + # coords.calc_solar_local_time(self.testInst, lon_name="longitude", + # slt_name='slt') + # target = np.array([17.66666667, 18.20027778, 18.92722222, + # 19.03416667, 19.33444444, 19.65938889]) + # + # assert (abs(self.testInst['slt'] - target)).max() < 1.0e-6 @raises(ValueError) def test_bad_lon_name_calc_solar_local_time(self): diff --git a/pysat/utils/coords.py b/pysat/utils/coords.py index dc60720..0b33e00 100644 --- a/pysat/utils/coords.py +++ b/pysat/utils/coords.py @@ -112,8 +112,6 @@ def calc_solar_local_time(inst, lon_name=None, slt_name='slt'): slt = np.array([t + inst[lon_name][i] / 15.0 for i, t in enumerate(utsec)]) # Ensure that solar local time falls between 0 and 24 hours - # slt[slt >= 24.0] -= 24.0 - # slt[slt < 0.0] += 24.0 slt = np.mod(slt, 24.0) # Add the solar local time to the instrument From 44f068c07891f944fee54920f3c53ccdd0129c4a Mon Sep 17 00:00:00 2001 From: jklenzing Date: Fri, 22 Feb 2019 14:51:44 -0500 Subject: [PATCH 020/231] added unit test --- pysat/tests/test_utils_coords.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index 3b61f5f..510cd20 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -444,7 +444,7 @@ def test_global_to_local_cartesian_inverse(self): ######################################## # Local Horizontal / Global conversions - def test_local_horizontal_to_global_geo(self): + def test_local_horizontal_to_global_geo_geodetic(self): """Tests the conversion of the local horizontal to global geo""" az = 30.0 @@ -461,3 +461,22 @@ def test_local_horizontal_to_global_geo(self): assert abs(lat - 50.419037572472625) < 1.0e-6 assert abs(lon + 7.694008395350697) < 1.0e-6 assert abs(rad - 7172.15486518744) < 1.0e-6 + + def test_local_horizontal_to_global_geo(self): + """Tests the conversion of the local horizontal to global geo""" + + az = 30.0 + el = 45.0 + dist = 1000.0 + lat0 = 45.0 + lon0 = 0.0 + alt0 = 400.0 + + lat, lon, rad = \ + coords.local_horizontal_to_global_geo(az, el, dist, + lat0, lon0, alt0, + geodetic=False) + + assert abs(lat - 50.414315865044202) < 1.0e-6 + assert abs(lon + 7.6855551809119502) < 1.0e-6 + assert abs(rad - 7185.6983665760772) < 1.0e-6 From c4bbba7a8b3d9e4da5064d5f123489617993241a Mon Sep 17 00:00:00 2001 From: jklenzing Date: Fri, 22 Feb 2019 15:00:56 -0500 Subject: [PATCH 021/231] add unit testing --- pysat/tests/test_utils_coords.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index 510cd20..a2bff74 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -89,6 +89,18 @@ def test_bad_lon_name_update_longitude(self): # # assert (abs(self.testInst['slt'] - target)).max() < 1.0e-6 + def test_calc_solar_local_time_w_update_longitude(self): + """Test calc_solar_local_time with update_longitude""" + + coords.calc_solar_local_time(self.testInst, lon_name="longitude", + slt_name='slt') + coords.update_longitude(self.testInst, lon_name="longitude") + coords.calc_solar_local_time(self.testInst, lon_name="longitude", + slt_name='slt2') + + assert (abs(self.testInst['slt'] + - self.testInst['slt2'])).max() < 1.0e-6 + @raises(ValueError) def test_bad_lon_name_calc_solar_local_time(self): """Test calc_solar_local_time with a bad longitude name""" From 9573c5fc1c47b4d92ef6631ea0d29a34314883f6 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Fri, 22 Feb 2019 15:21:09 -0500 Subject: [PATCH 022/231] fix for #171 --- pysat/tests/test_utils_coords.py | 20 +++++++++----------- pysat/utils/coords.py | 9 ++++----- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index a2bff74..4c5a4f0 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -77,17 +77,15 @@ def test_bad_lon_name_update_longitude(self): ######################### # calc_solar_local_time - # NOTE: TURNING OFF THIS TEST FOR NOW WHILE WE DEBUG TRAVIS IMPLEMENTATION - - # def test_calc_solar_local_time(self): - # """Test calc_solar_local_time""" - # - # coords.calc_solar_local_time(self.testInst, lon_name="longitude", - # slt_name='slt') - # target = np.array([17.66666667, 18.20027778, 18.92722222, - # 19.03416667, 19.33444444, 19.65938889]) - # - # assert (abs(self.testInst['slt'] - target)).max() < 1.0e-6 + def test_calc_solar_local_time(self): + """Test calc_solar_local_time""" + + coords.calc_solar_local_time(self.testInst, lon_name="longitude", + slt_name='slt') + target = np.array([22.66666667, 23.20027778, 23.92722222, + 0.03416667, 0.33444444, 0.65938889]) + + assert (abs(self.testInst['slt'] - target)).max() < 1.0e-6 def test_calc_solar_local_time_w_update_longitude(self): """Test calc_solar_local_time with update_longitude""" diff --git a/pysat/utils/coords.py b/pysat/utils/coords.py index 0b33e00..8e60fad 100644 --- a/pysat/utils/coords.py +++ b/pysat/utils/coords.py @@ -100,16 +100,15 @@ def calc_solar_local_time(inst, lon_name=None, slt_name='slt'): raise ValueError('uknown longitude variable name') # Convert from numpy epoch nanoseconds to UT seconds of day - utsec = list() + ut_hr = list() for nptime in inst.index.values.astype(int): # Numpy times come out in nanoseconds and timestamp converts # from seconds - dtime = dt.datetime.fromtimestamp(nptime * 1.0e-9) - utsec.append((dtime.hour * 3600.0 + dtime.minute * 60.0 + + dtime = dt.datetime.utcfromtimestamp(nptime * 1.0e-9) + ut_hr.append((dtime.hour * 3600.0 + dtime.minute * 60.0 + dtime.second + dtime.microsecond * 1.0e-6) / 3600.0) - # Calculate solar local time - slt = np.array([t + inst[lon_name][i] / 15.0 for i, t in enumerate(utsec)]) + slt = np.array([t + inst[lon_name][i] / 15.0 for i, t in enumerate(ut_hr)]) # Ensure that solar local time falls between 0 and 24 hours slt = np.mod(slt, 24.0) From 173fa321ec1f29be0d5eee127f0b6d29941e1046 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Fri, 1 Mar 2019 17:21:45 -0500 Subject: [PATCH 023/231] Merge branch 'develop' into documentation --- pysat/tests/test_utils_coords.py | 492 +++++++++++++++++++++++++++ pysat/utils/coords.py | 553 +++++++++++++++++++++++++++++++ 2 files changed, 1045 insertions(+) create mode 100644 pysat/tests/test_utils_coords.py create mode 100644 pysat/utils/coords.py diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py new file mode 100644 index 0000000..4c5a4f0 --- /dev/null +++ b/pysat/tests/test_utils_coords.py @@ -0,0 +1,492 @@ +""" +tests the pysat coords area +""" +import numpy as np +import pandas as pds +from nose.tools import assert_raises, raises +import pysat +from pysat.utils import coords, time + + +class TestBasics(): + def setup(self): + """Runs before every method to create a clean testing setup.""" + self.test_angles = np.array([340.0, 348.0, 358.9, 0.5, 5.0, 9.87]) + + self.testInst = pysat.Instrument(platform='pysat', + name='testing', + clean_level='clean') + # Add longitude to the test instrument + ones = np.ones(shape=len(self.test_angles)) + tind = time.create_datetime_index(year=ones*2001, + month=ones, + uts=np.arange(0.0, len(ones), 1.0)) + + self.testInst.data = \ + pds.DataFrame(np.array([tind, self.test_angles]).transpose(), + index=tind, columns=["time", "longitude"]) + + self.deg_units = ["deg", "degree", "degrees", "rad", "radian", + "radians", "h", "hr", "hrs", "hours"] + self.dist_units = ["m", "km", "cm"] + self.vel_units = ["m/s", "cm/s", "km/s"] + + def teardown(self): + """Runs after every method to clean up previous testing.""" + del self.test_angles, self.testInst + del self.deg_units, self.dist_units, self.vel_units + + ##################################### + # Cyclic data conversions + + def test_adjust_cyclic_data_default(self): + """ Test adjust_cyclic_data with default range """ + + test_in = np.radians(self.test_angles) - np.pi + test_angles = coords.adjust_cyclic_data(test_in) + + assert test_angles.max() < 2.0 * np.pi + assert test_angles.min() >= 0.0 + + def test_adjust_cyclic_data_custom(self): + """ Test adjust_cyclic_data with a custom range """ + + test_angles = coords.adjust_cyclic_data(self.test_angles, + high=180.0, low=-180.0) + + assert test_angles.max() < 180.0 + assert test_angles.min() >= -180.0 + + ##################################### + # Update Longitude + + def test_update_longitude(self): + """Test update_longitude """ + + coords.update_longitude(self.testInst, lon_name="longitude") + + assert np.all(self.testInst.data['longitude'] < 180.0) + assert np.all(self.testInst.data['longitude'] >= -180.0) + + @raises(ValueError) + def test_bad_lon_name_update_longitude(self): + """Test update_longitude with a bad longitude name""" + + coords.update_longitude(self.testInst, lon_name="not longitude") + + ######################### + # calc_solar_local_time + + def test_calc_solar_local_time(self): + """Test calc_solar_local_time""" + + coords.calc_solar_local_time(self.testInst, lon_name="longitude", + slt_name='slt') + target = np.array([22.66666667, 23.20027778, 23.92722222, + 0.03416667, 0.33444444, 0.65938889]) + + assert (abs(self.testInst['slt'] - target)).max() < 1.0e-6 + + def test_calc_solar_local_time_w_update_longitude(self): + """Test calc_solar_local_time with update_longitude""" + + coords.calc_solar_local_time(self.testInst, lon_name="longitude", + slt_name='slt') + coords.update_longitude(self.testInst, lon_name="longitude") + coords.calc_solar_local_time(self.testInst, lon_name="longitude", + slt_name='slt2') + + assert (abs(self.testInst['slt'] + - self.testInst['slt2'])).max() < 1.0e-6 + + @raises(ValueError) + def test_bad_lon_name_calc_solar_local_time(self): + """Test calc_solar_local_time with a bad longitude name""" + + coords.calc_solar_local_time(self.testInst, lon_name="not longitude", + slt_name='slt') + + ##################################### + # Scale units + + def test_scale_units_same(self): + """ Test scale_units when both units are the same """ + + scale = coords.scale_units("happy", "happy") + + assert scale == 1.0 + + def test_scale_units_angles(self): + """Test scale_units for angles """ + + for out_unit in self.deg_units: + scale = coords.scale_units(out_unit, "deg") + + if out_unit.find("deg") == 0: + assert scale == 1.0 + elif out_unit.find("rad") == 0: + assert scale == np.pi / 180.0 + else: + assert scale == 1.0 / 15.0 + + def test_scale_units_dist(self): + """Test scale_units for distances """ + + for out_unit in self.dist_units: + scale = coords.scale_units(out_unit, "m") + + if out_unit == "m": + assert scale == 1.0 + elif out_unit.find("km") == 0: + assert scale == 0.001 + else: + assert scale == 100.0 + + def test_scale_units_vel(self): + """Test scale_units for velocities """ + + for out_unit in self.vel_units: + scale = coords.scale_units(out_unit, "m/s") + + if out_unit == "m/s": + assert scale == 1.0 + elif out_unit.find("km/s") == 0: + assert scale == 0.001 + else: + assert scale == 100.0 + + def test_scale_units_bad(self): + """Test scale_units for mismatched input""" + + assert_raises(ValueError, coords.scale_units, "happy", "m") + assert_raises(ValueError, coords.scale_units, "m", "happy") + assert_raises(ValueError, coords.scale_units, "m", "m/s") + assert_raises(ValueError, coords.scale_units, "m", "deg") + assert_raises(ValueError, coords.scale_units, "h", "km/s") + + ##################################### + # Geodetic / Geocentric conversions + + def test_geodetic_to_geocentric_single(self): + """Test conversion from geodetic to geocentric coordinates""" + + lat, lon, rad = coords.geodetic_to_geocentric(45.0, lon_in=8.0) + + assert abs(lat - 44.807576784018046) < 1.0e-6 + assert abs(lon - 8.0) < 1.0e-6 + assert abs(rad - 6367.489543863465) < 1.0e-6 + + def test_geocentric_to_geodetic_single(self): + """Test conversion from geocentric to geodetic coordinates""" + + lat, lon, rad = coords.geodetic_to_geocentric(45.0, lon_in=8.0, + inverse=True) + + assert abs(lat - 45.192423215981954) < 1.0e-6 + assert abs(lon - 8.0) < 1.0e-6 + assert abs(rad - 6367.345908499981) < 1.0e-6 + + def test_geodetic_to_geocentric_mult(self): + """Test array conversion from geodetic to geocentric coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + lat, lon, rad = coords.geodetic_to_geocentric(45.0*arr, lon_in=8.0*arr) + + assert lat.shape == arr.shape + assert lon.shape == arr.shape + assert rad.shape == arr.shape + assert abs(lat - 44.807576784018046).max() < 1.0e-6 + assert abs(lon - 8.0).max() < 1.0e-6 + assert abs(rad - 6367.489543863465).max() < 1.0e-6 + + def test_geocentric_to_geodetic_mult(self): + """Test array conversion from geocentric to geodetic coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + lat, lon, rad = coords.geodetic_to_geocentric(45.0*arr, lon_in=8.0*arr, + inverse=True) + + assert lat.shape == arr.shape + assert lon.shape == arr.shape + assert rad.shape == arr.shape + assert abs(lat - 45.192423215981954).max() < 1.0e-6 + assert abs(lon - 8.0).max() < 1.0e-6 + assert abs(rad - 6367.345908499981).max() < 1.0e-6 + + def test_geodetic_to_geocentric_inverse(self): + """Tests the reversibility of geodetic to geocentric conversions""" + + lat1 = 37.5 + lon1 = 117.3 + lat2, lon2, rad_e = coords.geodetic_to_geocentric(lat1, lon_in=lon1, + inverse=False) + lat3, lon3, rad_e = coords.geodetic_to_geocentric(lat2, lon_in=lon2, + inverse=True) + assert abs(lon1-lon3) < 1.0e-6 + assert abs(lat1-lat3) < 1.0e-6 + + ############################################### + # Geodetic / Geocentric Horizontal conversions + + def test_geodetic_to_geocentric_horz_single(self): + """Test conversion from geodetic to geocentric coordinates""" + + lat, lon, rad, az, el = \ + coords.geodetic_to_geocentric_horizontal(45.0, 8.0, 52.0, 63.0) + + assert abs(lat - 44.807576784018046) < 1.0e-6 + assert abs(lon - 8.0) < 1.0e-6 + assert abs(rad - 6367.489543863465) < 1.0e-6 + assert abs(az - 51.70376774257361) < 1.0e-6 + assert abs(el - 62.8811403841008) < 1.0e-6 + + def test_geocentric_to_geodetic_horz_single(self): + """Test conversion from geocentric to geodetic coordinates""" + + lat, lon, rad, az, el = \ + coords.geodetic_to_geocentric_horizontal(45.0, 8.0, 52.0, 63.0, + inverse=True) + + assert abs(lat - 45.192423215981954) < 1.0e-6 + assert abs(lon - 8.0) < 1.0e-6 + assert abs(rad - 6367.345908499981) < 1.0e-6 + assert abs(az - 52.29896101551479) < 1.0e-6 + assert abs(el - 63.118072033649916) < 1.0e-6 + + def test_geodetic_to_geocentric_horz_mult(self): + """Test array conversion from geodetic to geocentric coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + lat, lon, rad, az, el = \ + coords.geodetic_to_geocentric_horizontal(45.0*arr, 8.0*arr, + 52.0*arr, 63.0*arr) + + assert lat.shape == arr.shape + assert lon.shape == arr.shape + assert rad.shape == arr.shape + assert az.shape == arr.shape + assert el.shape == arr.shape + assert abs(lat - 44.807576784018046).max() < 1.0e-6 + assert abs(lon - 8.0).max() < 1.0e-6 + assert abs(rad - 6367.489543863465).max() < 1.0e-6 + assert abs(az - 51.70376774257361).max() < 1.0e-6 + assert abs(el - 62.8811403841008).max() < 1.0e-6 + + def test_geocentric_to_geodetic_horz_mult(self): + """Test array conversion from geocentric to geodetic coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + lat, lon, rad, az, el = \ + coords.geodetic_to_geocentric_horizontal(45.0*arr, 8.0*arr, + 52.0*arr, 63.0*arr, + inverse=True) + + assert lat.shape == arr.shape + assert lon.shape == arr.shape + assert rad.shape == arr.shape + assert az.shape == arr.shape + assert el.shape == arr.shape + assert abs(lat - 45.192423215981954).max() < 1.0e-6 + assert abs(lon - 8.0).max() < 1.0e-6 + assert abs(rad - 6367.345908499981).max() < 1.0e-6 + assert abs(az - 52.29896101551479).max() < 1.0e-6 + assert abs(el - 63.118072033649916).max() < 1.0e-6 + + def test_geodetic_to_geocentric_horizontal_inverse(self): + """Tests the reversibility of geodetic to geocentric horiz conversions + + Note: inverse of az and el angles currently non-functional""" + + lat1 = -17.5 + lon1 = 187.3 + az1 = 52.0 + el1 = 63.0 + lat2, lon2, rad_e, az2, el2 = \ + coords.geodetic_to_geocentric_horizontal(lat1, lon1, az1, el1, + inverse=False) + lat3, lon3, rad_e, az3, el3 = \ + coords.geodetic_to_geocentric_horizontal(lat2, lon2, az2, el2, + inverse=True) + + assert abs(lon1-lon3) < 1.0e-6 + assert abs(lat1-lat3) < 1.0e-6 + assert abs(az1-az3) < 1.0e-6 + assert abs(el1-el3) < 1.0e-6 + + #################################### + # Spherical / Cartesian conversions + + def test_spherical_to_cartesian_single(self): + """Test conversion from spherical to cartesian coordinates""" + + x, y, z = coords.spherical_to_cartesian(45.0, 30.0, 1.0) + + assert abs(x - y) < 1.0e-6 + assert abs(z - 0.5) < 1.0e-6 + + def test_cartesian_to_spherical_single(self): + """Test conversion from cartesian to spherical coordinates""" + + x = 0.6123724356957946 + az, el, r = coords.spherical_to_cartesian(x, x, 0.5, + inverse=True) + + assert abs(az - 45.0) < 1.0e-6 + assert abs(el - 30.0) < 1.0e-6 + assert abs(r - 1.0) < 1.0e-6 + + def test_spherical_to_cartesian_mult(self): + """Test array conversion from spherical to cartesian coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + x, y, z = coords.spherical_to_cartesian(45.0*arr, 30.0*arr, arr) + + assert x.shape == arr.shape + assert y.shape == arr.shape + assert z.shape == arr.shape + assert abs(x - y).max() < 1.0e-6 + assert abs(z - 0.5).max() < 1.0e-6 + + def test_cartesian_to_spherical_mult(self): + """Test array conversion from cartesian to spherical coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + x = 0.6123724356957946 + az, el, r = coords.spherical_to_cartesian(x*arr, x*arr, 0.5*arr, + inverse=True) + + assert az.shape == arr.shape + assert el.shape == arr.shape + assert r.shape == arr.shape + assert abs(az - 45.0).max() < 1.0e-6 + assert abs(el - 30.0).max() < 1.0e-6 + assert abs(r - 1.0).max() < 1.0e-6 + + def test_spherical_to_cartesian_inverse(self): + """Tests the reversibility of spherical to cartesian conversions""" + + x1 = 3000.0 + y1 = 2000.0 + z1 = 2500.0 + az, el, r = coords.spherical_to_cartesian(x1, y1, z1, + inverse=True) + x2, y2, z2 = coords.spherical_to_cartesian(az, el, r, + inverse=False) + + assert abs(x1-x2) < 1.0e-6 + assert abs(y1-y2) < 1.0e-6 + assert abs(z1-z2) < 1.0e-6 + + ######################################## + # Global / Local Cartesian conversions + + def test_global_to_local_cartesian_single(self): + """Test conversion from global to local cartesian coordinates""" + + x, y, z = coords.global_to_local_cartesian(7000.0, 8000.0, 9000.0, + 37.5, 289.0, 6380.0) + + assert abs(x + 9223.175264852474) < 1.0e-6 + assert abs(y + 2239.835278362686) < 1.0e-6 + assert abs(z - 11323.126851088331) < 1.0e-6 + + def test_local_cartesian_to_global_single(self): + """Test conversion from local cartesian to global coordinates""" + + x, y, z = coords.global_to_local_cartesian(7000.0, 8000.0, 9000.0, + 37.5, 289.0, 6380.0, + inverse=True) + + assert abs(x + 5709.804676635975) < 1.0e-6 + assert abs(y + 4918.397556010223) < 1.0e-6 + assert abs(z - 15709.577500484005) < 1.0e-6 + + def test_global_to_local_cartesian_mult(self): + """Test array conversion from global to local cartesian coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + x, y, z = coords.global_to_local_cartesian(7000.0*arr, 8000.0*arr, + 9000.0*arr, 37.5*arr, + 289.0*arr, 6380.0*arr) + + assert x.shape == arr.shape + assert y.shape == arr.shape + assert z.shape == arr.shape + assert abs(x + 9223.175264852474).max() < 1.0e-6 + assert abs(y + 2239.835278362686).max() < 1.0e-6 + assert abs(z - 11323.126851088331).max() < 1.0e-6 + + def test_local_cartesian_to_global_mult(self): + """Test array conversion from local cartesian to global coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + x, y, z = coords.global_to_local_cartesian(7000.0*arr, 8000.0*arr, + 9000.0*arr, 37.5*arr, + 289.0*arr, 6380.0*arr, + inverse=True) + + assert x.shape == arr.shape + assert y.shape == arr.shape + assert z.shape == arr.shape + assert abs(x + 5709.804676635975).max() < 1.0e-6 + assert abs(y + 4918.397556010223).max() < 1.0e-6 + assert abs(z - 15709.577500484005).max() < 1.0e-6 + + def test_global_to_local_cartesian_inverse(self): + """Tests the reversibility of the global to loc cartesian transform""" + + x1 = 7000.0 + y1 = 8000.0 + z1 = 9500.0 + lat = 37.5 + lon = 289.0 + rad = 6380.0 + x2, y2, z2 = coords.global_to_local_cartesian(x1, y1, z1, + lat, lon, rad, + inverse=False) + x3, y3, z3 = coords.global_to_local_cartesian(x2, y2, z2, + lat, lon, rad, + inverse=True) + assert abs(x1-x3) < 1.0e-6 + assert abs(y1-y3) < 1.0e-6 + assert abs(z1-z3) < 1.0e-6 + + ######################################## + # Local Horizontal / Global conversions + + def test_local_horizontal_to_global_geo_geodetic(self): + """Tests the conversion of the local horizontal to global geo""" + + az = 30.0 + el = 45.0 + dist = 1000.0 + lat0 = 45.0 + lon0 = 0.0 + alt0 = 400.0 + + lat, lon, rad = \ + coords.local_horizontal_to_global_geo(az, el, dist, + lat0, lon0, alt0) + + assert abs(lat - 50.419037572472625) < 1.0e-6 + assert abs(lon + 7.694008395350697) < 1.0e-6 + assert abs(rad - 7172.15486518744) < 1.0e-6 + + def test_local_horizontal_to_global_geo(self): + """Tests the conversion of the local horizontal to global geo""" + + az = 30.0 + el = 45.0 + dist = 1000.0 + lat0 = 45.0 + lon0 = 0.0 + alt0 = 400.0 + + lat, lon, rad = \ + coords.local_horizontal_to_global_geo(az, el, dist, + lat0, lon0, alt0, + geodetic=False) + + assert abs(lat - 50.414315865044202) < 1.0e-6 + assert abs(lon + 7.6855551809119502) < 1.0e-6 + assert abs(rad - 7185.6983665760772) < 1.0e-6 diff --git a/pysat/utils/coords.py b/pysat/utils/coords.py new file mode 100644 index 0000000..8e60fad --- /dev/null +++ b/pysat/utils/coords.py @@ -0,0 +1,553 @@ +""" +pysat.coords - coordinate transformations for pysat +========================================= + +pysat.coords contains a number of coordinate-transformation +functions used throughout the pysat package. +""" + +import numpy as np +import pandas as pds + + +def adjust_cyclic_data(samples, high=2.0*np.pi, low=0.0): + """Adjust cyclic values such as longitude to a different scale + + Parameters + ----------- + samples : array_like + Input array + high: float or int + Upper boundary for circular standard deviation range (default=2 pi) + low : float or int + Lower boundary for circular standard deviation range (default=0) + axis : int or NoneType + Axis along which standard deviations are computed. The default is to + compute the standard deviation of the flattened array + + Returns + -------- + out_samples : float + Circular standard deviation + + """ + + out_samples = np.asarray(samples) + sample_range = high - low + out_samples[out_samples >= high] -= sample_range + out_samples[out_samples < low] += sample_range + + return out_samples + + +def update_longitude(inst, lon_name=None, high=180.0, low=-180.0): + """ Update longitude to the desired range + + Parameters + ------------ + inst : pysat.Instrument instance + instrument object to be updated + lon_name : string + name of the longtiude data + high : float + Highest allowed longitude value (default=180.0) + low : float + Lowest allowed longitude value (default=-180.0) + + Returns + --------- + updates instrument data in column 'lon_name' + + """ + + from pysat.utils.coords import adjust_cyclic_data + + if lon_name not in inst.data.keys(): + raise ValueError('uknown longitude variable name') + + new_lon = adjust_cyclic_data(inst[lon_name], high=high, low=low) + + # Update based on data type + if inst.pandas_format: + inst[lon_name] = new_lon + else: + inst[lon_name].data = new_lon + + return + + +def calc_solar_local_time(inst, lon_name=None, slt_name='slt'): + """ Append solar local time to an instrument object + + Parameters + ------------ + inst : pysat.Instrument instance + instrument object to be updated + lon_name : string + name of the longtiude data key (assumes data are in degrees) + slt_name : string + name of the output solar local time data key (default='slt') + + Returns + --------- + updates instrument data in column specified by slt_name + + """ + + import datetime as dt + + if lon_name not in inst.data.keys(): + raise ValueError('uknown longitude variable name') + + # Convert from numpy epoch nanoseconds to UT seconds of day + ut_hr = list() + for nptime in inst.index.values.astype(int): + # Numpy times come out in nanoseconds and timestamp converts + # from seconds + dtime = dt.datetime.utcfromtimestamp(nptime * 1.0e-9) + ut_hr.append((dtime.hour * 3600.0 + dtime.minute * 60.0 + + dtime.second + dtime.microsecond * 1.0e-6) / 3600.0) + # Calculate solar local time + slt = np.array([t + inst[lon_name][i] / 15.0 for i, t in enumerate(ut_hr)]) + + # Ensure that solar local time falls between 0 and 24 hours + slt = np.mod(slt, 24.0) + + # Add the solar local time to the instrument + if inst.pandas_format: + inst[slt_name] = pds.Series(slt, index=inst.data.index) + else: + data = inst.data.assign(pysat_slt=(inst.data.coords.keys(), slt)) + data.rename({"pysat_slt": slt_name}, inplace=True) + inst.data = data + + # Add units to the metadata + inst.meta[slt_name] = {inst.meta.units_label: 'h', + inst.meta.name_label: "Solar Local Time", + inst.meta.desc_label: "Solar local time", + inst.meta.plot_label: "SLT", + inst.meta.axis_label: "SLT", + inst.meta.scale_label: "linear", + inst.meta.min_label: 0.0, + inst.meta.max_label: 24.0, + inst.meta.fill_label: np.nan} + + return + + +def scale_units(out_unit, in_unit): + """ Determine the scaling factor between two units + + Parameters + ------------- + out_unit : str + Desired unit after scaling + in_unit : str + Unit to be scaled + + Returns + ----------- + unit_scale : float + Scaling factor that will convert from in_units to out_units + + Notes + ------- + Accepted units include degrees ('deg', 'degree', 'degrees'), + radians ('rad', 'radian', 'radians'), + hours ('h', 'hr', 'hrs', 'hour', 'hours'), and lengths ('m', 'km', 'cm'). + Can convert between degrees, radians, and hours or different lengths. + + Example + ----------- + :: + import numpy as np + two_pi = 2.0 * np.pi + scale = scale_units("deg", "RAD") + two_pi *= scale + two_pi # will show 360.0 + + + """ + + if out_unit == in_unit: + return 1.0 + + accepted_units = {'deg': ['deg', 'degree', 'degrees'], + 'rad': ['rad', 'radian', 'radians'], + 'h': ['h', 'hr', 'hrs', 'hours'], + 'm': ['m', 'km', 'cm'], + 'm/s': ['m/s', 'cm/s', 'km/s']} + + scales = {'deg': 180.0, 'rad': np.pi, 'h': 12.0, + 'm': 1.0, 'km': 0.001, 'cm': 100.0, + 'm/s': 1.0, 'cm/s': 100.0, 'km/s': 0.001} + + # Test input and determine transformation type + out_key = None + in_key = None + for kk in accepted_units.keys(): + if out_unit.lower() in accepted_units[kk]: + out_key = kk + if in_unit.lower() in accepted_units[kk]: + in_key = kk + + if out_key is None: + raise ValueError('Unknown output unit {:}'.format(out_unit)) + + if in_key is None: + raise ValueError('Unknown input unit {:}'.format(in_unit)) + + if out_key == 'm' or out_key == 'm/s' or in_key == 'm' or in_key == 'm/s': + if in_key != out_key: + raise ValueError('Cannot scale {:s} and {:s}'.format(out_unit, + in_unit)) + # Recast units as keys for the scales dictionary + out_key = out_unit + in_key = in_unit + + unit_scale = scales[out_key.lower()] / scales[in_key.lower()] + + return unit_scale + + +def geodetic_to_geocentric(lat_in, lon_in=None, inverse=False): + """Converts position from geodetic to geocentric or vice-versa. + + Parameters + ---------- + lat_in : float + latitude in degrees. + lon_in : float or NoneType + longitude in degrees. Remains unchanged, so does not need to be + included. (default=None) + inverse : bool + False for geodetic to geocentric, True for geocentric to geodetic. + (default=False) + + Returns + ------- + lat_out : float + latitude [degree] (geocentric/detic if inverse=False/True) + lon_out : float or NoneType + longitude [degree] (geocentric/detic if inverse=False/True) + rad_earth : float + Earth radius [km] (geocentric/detic if inverse=False/True) + + Notes + ----- + Uses WGS-84 values + + References + ---------- + Based on J.M. Ruohoniemi's geopack and R.J. Barnes radar.pro + + """ + rad_eq = 6378.1370 # WGS-84 semi-major axis + flat = 1.0 / 298.257223563 # WGS-84 flattening + rad_pol = rad_eq * (1.0 - flat) # WGS-84 semi-minor axis + + # The ratio between the semi-major and minor axis is used several times + rad_ratio_sq = (rad_eq / rad_pol)**2 + + # Calculate the square of the second eccentricity (e') + eprime_sq = rad_ratio_sq - 1.0 + + # Calculate the tangent of the input latitude + tan_in = np.tan(np.radians(lat_in)) + + # If converting from geodetic to geocentric, take the inverse of the + # radius ratio + if not inverse: + rad_ratio_sq = 1.0 / rad_ratio_sq + + # Calculate the output latitude + lat_out = np.degrees(np.arctan(rad_ratio_sq * tan_in)) + + # Calculate the Earth radius at this latitude + rad_earth = rad_eq / np.sqrt(1.0 + eprime_sq * + np.sin(np.radians(lat_out))**2) + + # longitude remains unchanged + lon_out = lon_in + + return lat_out, lon_out, rad_earth + + +def geodetic_to_geocentric_horizontal(lat_in, lon_in, az_in, el_in, + inverse=False): + """Converts from local horizontal coordinates in a geodetic system to local + horizontal coordinates in a geocentric system + + Parameters + ---------- + lat_in : float + latitude in degrees of the local horizontal coordinate system center + lon_in : float + longitude in degrees of the local horizontal coordinate system center + az_in : float + azimuth in degrees within the local horizontal coordinate system + el_in : float + elevation in degrees within the local horizontal coordinate system + inverse : bool + False for geodetic to geocentric, True for inverse (default=False) + + Returns + ------- + lat_out : float + latitude in degrees of the converted horizontal coordinate system + center + lon_out : float + longitude in degrees of the converted horizontal coordinate system + center + rad_earth : float + Earth radius in km at the geocentric/detic (False/True) location + az_out : float + azimuth in degrees of the converted horizontal coordinate system + el_out : float + elevation in degrees of the converted horizontal coordinate system + + References + ---------- + Based on J.M. Ruohoniemi's geopack and R.J. Barnes radar.pro + + """ + + az = np.radians(az_in) + el = np.radians(el_in) + + # Transform the location of the local horizontal coordinate system center + lat_out, lon_out, rad_earth = geodetic_to_geocentric(lat_in, lon_in, + inverse=inverse) + + # Calcualte the deviation from vertical in radians + dev_vert = np.radians(lat_in - lat_out) + + # Calculate cartesian coordinated in local system + x_local = np.cos(el) * np.sin(az) + y_local = np.cos(el) * np.cos(az) + z_local = np.sin(el) + + # Now rotate system about the x axis to align local vertical vector + # with Earth radial vector + x_out = x_local + y_out = y_local * np.cos(dev_vert) + z_local * np.sin(dev_vert) + z_out = -y_local * np.sin(dev_vert) + z_local * np.cos(dev_vert) + + # Transform the azimuth and elevation angles + az_out = np.degrees(np.arctan2(x_out, y_out)) + el_out = np.degrees(np.arctan(z_out / np.sqrt(x_out**2 + y_out**2))) + + return lat_out, lon_out, rad_earth, az_out, el_out + + +def spherical_to_cartesian(az_in, el_in, r_in, inverse=False): + """Convert a position from spherical to cartesian, or vice-versa + + Parameters + ---------- + az_in : float + azimuth/longitude in degrees or cartesian x in km (inverse=False/True) + el_in : float + elevation/latitude in degrees or cartesian y in km (inverse=False/True) + r_in : float + distance from origin in km or cartesian z in km (inverse=False/True) + inverse : boolian + False to go from spherical to cartesian and True for the inverse + + Returns + ------- + x_out : float + cartesian x in km or azimuth/longitude in degrees (inverse=False/True) + y_out : float + cartesian y in km or elevation/latitude in degrees (inverse=False/True) + z_out : float + cartesian z in km or distance from origin in km (inverse=False/True) + + Notes + ------ + This transform is the same for local or global spherical/cartesian + transformations. + + Returns elevation angle (angle from the xy plane) rather than zenith angle + (angle from the z-axis) + + """ + + if inverse: + # Cartesian to Spherical + xy_sq = az_in**2 + el_in**2 + z_out = np.sqrt(xy_sq + r_in**2) # This is r + y_out = np.degrees(np.arctan2(np.sqrt(xy_sq), r_in)) # This is zenith + y_out = 90.0 - y_out # This is the elevation + x_out = np.degrees(np.arctan2(el_in, az_in)) # This is azimuth + else: + # Spherical coordinate system uses zenith angle (degrees from the + # z-axis) and not the elevation angle (degrees from the x-y plane) + zen_in = np.radians(90.0 - el_in) + + # Spherical to Cartesian + x_out = r_in * np.sin(zen_in) * np.cos(np.radians(az_in)) + y_out = r_in * np.sin(zen_in) * np.sin(np.radians(az_in)) + z_out = r_in * np.cos(zen_in) + + return x_out, y_out, z_out + + +def global_to_local_cartesian(x_in, y_in, z_in, lat_cent, lon_cent, rad_cent, + inverse=False): + """Converts a position from global to local cartesian or vice-versa + + Parameters + ---------- + x_in : float + global or local cartesian x in km (inverse=False/True) + y_in : float + global or local cartesian y in km (inverse=False/True) + z_in : float + global or local cartesian z in km (inverse=False/True) + lat_cent : float + geocentric latitude in degrees of local cartesian system origin + lon_cent : float + geocentric longitude in degrees of local cartesian system origin + rad_cent : float + distance from center of the Earth in km of local cartesian system + origin + inverse : bool + False to convert from global to local cartesian coodiantes, and True + for the inverse (default=False) + + Returns + ------- + x_out : float + local or global cartesian x in km (inverse=False/True) + y_out : float + local or global cartesian y in km (inverse=False/True) + z_out : float + local or global cartesian z in km (inverse=False/True) + + Notes + ------- + The global cartesian coordinate system has its origin at the center of the + Earth, while the local system has its origin specified by the input + latitude, longitude, and radius. The global system has x intersecting + the equatorial plane and the prime meridian, z pointing North along the + rotational axis, and y completing the right-handed coodinate system. + The local system has z pointing up, y pointing North, and x pointing East. + + """ + + # Get the global cartesian coordinates of local origin + x_cent, y_cent, z_cent = spherical_to_cartesian(lon_cent, lat_cent, + rad_cent) + + # Get the amount of rotation needed to align the x-axis with the + # Earth's rotational axis + ax_rot = np.radians(90.0 - lat_cent) + + # Get the amount of rotation needed to align the global x-axis with the + # prime meridian + mer_rot = np.radians(lon_cent - 90.0) + + if inverse: + # Rotate about the x-axis to align the z-axis with the Earth's + # rotational axis + xrot = x_in + yrot = y_in * np.cos(ax_rot) - z_in * np.sin(ax_rot) + zrot = y_in * np.sin(ax_rot) + z_in * np.cos(ax_rot) + + # Rotate about the global z-axis to get the global x-axis aligned + # with the prime meridian and translate the local center to the + # global origin + x_out = xrot * np.cos(mer_rot) - yrot * np.sin(mer_rot) + x_cent + y_out = xrot * np.sin(mer_rot) + yrot * np.cos(mer_rot) + y_cent + z_out = zrot + z_cent + else: + # Translate global origin to the local origin + xtrans = x_in - x_cent + ytrans = y_in - y_cent + ztrans = z_in - z_cent + + # Rotate about the global z-axis to get the local x-axis pointing East + xrot = xtrans * np.cos(-mer_rot) - ytrans * np.sin(-mer_rot) + yrot = xtrans * np.sin(-mer_rot) + ytrans * np.cos(-mer_rot) + zrot = ztrans + + # Rotate about the x-axis to get the z-axis pointing up + x_out = xrot + y_out = yrot * np.cos(-ax_rot) - zrot * np.sin(-ax_rot) + z_out = yrot * np.sin(-ax_rot) + zrot * np.cos(-ax_rot) + + return x_out, y_out, z_out + + +def local_horizontal_to_global_geo(az, el, dist, lat_orig, lon_orig, alt_orig, + geodetic=True): + """ Convert from local horizontal coordinates to geodetic or geocentric + coordinates + + Parameters + ---------- + az : float + Azimuth (angle from North) of point in degrees + el : float + Elevation (angle from ground) of point in degrees + dist : float + Distance from origin to point in km + lat_orig : float + Latitude of origin in degrees + lon_orig : float + Longitude of origin in degrees + alt_orig : float + Altitude of origin in km from the surface of the Earth + geodetic : bool + True if origin coordinates are geodetic, False if they are geocentric. + Will return coordinates in the same system as the origin input. + (default=True) + + Returns + ------- + lat_pnt : float + Latitude of point in degrees + lon_pnt : float + Longitude of point in degrees + rad_pnt : float + Distance to the point from the centre of the Earth in km + + References + ---------- + Based on J.M. Ruohoniemi's geopack and R.J. Barnes radar.pro + + """ + + # If the data are in geodetic coordiantes, convert to geocentric + if geodetic: + (glat, glon, rearth, gaz, gel) = \ + geodetic_to_geocentric_horizontal(lat_orig, lon_orig, az, el, + inverse=False) + grad = rearth + alt_orig + else: + glat = lat_orig + glon = lon_orig + grad = alt_orig + 6371.0 # Add the mean earth radius in km + gaz = az + gel = el + + # Convert from local horizontal to local cartesian coordiantes + x_loc, y_loc, z_loc = spherical_to_cartesian(gaz, gel, dist, inverse=False) + + # Convert from local to global cartesian coordiantes + x_glob, y_glob, z_glob = global_to_local_cartesian(x_loc, y_loc, z_loc, + glat, glon, grad, + inverse=True) + + # Convert from global cartesian to geocentric coordinates + lon_pnt, lat_pnt, rad_pnt = spherical_to_cartesian(x_glob, y_glob, z_glob, + inverse=True) + + # Convert from geocentric to geodetic, if desired + if geodetic: + lat_pnt, lon_pnt, rearth = geodetic_to_geocentric(lat_pnt, lon_pnt, + inverse=True) + rad_pnt = rearth + rad_pnt - 6371.0 + + return lat_pnt, lon_pnt, rad_pnt From fad618a7cf4500329b4d6576b762cab6972fcb0f Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Wed, 6 Mar 2019 09:46:06 -0500 Subject: [PATCH 024/231] tidy up imports --- pysat/tests/test_utils_coords.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index 4c5a4f0..2e21faf 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -2,8 +2,10 @@ tests the pysat coords area """ import numpy as np -import pandas as pds + from nose.tools import assert_raises, raises +import pandas as pds + import pysat from pysat.utils import coords, time From 706241e8a744950af7f251e13d86c1869fdfc438 Mon Sep 17 00:00:00 2001 From: "Angeline G. Burrell" Date: Wed, 17 Jul 2019 11:52:55 -0400 Subject: [PATCH 025/231] Update coords.py Updated failures to be more informative, allowing more intellegent error catches. --- pysat/utils/coords.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pysat/utils/coords.py b/pysat/utils/coords.py index 8e60fad..add56c7 100644 --- a/pysat/utils/coords.py +++ b/pysat/utils/coords.py @@ -191,6 +191,10 @@ def scale_units(out_unit, in_unit): if in_unit.lower() in accepted_units[kk]: in_key = kk + if out_key is None and in_key is None: + raise ValueError(''.join(['Cannot scale {:s} and '.format(in_unit) + '{:s}, unknown units'.format(out_unit)])) + if out_key is None: raise ValueError('Unknown output unit {:}'.format(out_unit)) From bf17f580c39c02b80bf7f89dd438bf590e6b3b8b Mon Sep 17 00:00:00 2001 From: "Angeline G. Burrell" Date: Wed, 17 Jul 2019 12:42:25 -0400 Subject: [PATCH 026/231] Update coords.py - Added new unit possibilities for velocity - Reduced the amount of time spent in initial for-loop --- pysat/utils/coords.py | 48 ++++++++++++++++++++++++++++++------------- 1 file changed, 34 insertions(+), 14 deletions(-) diff --git a/pysat/utils/coords.py b/pysat/utils/coords.py index add56c7..4f3f4d6 100644 --- a/pysat/utils/coords.py +++ b/pysat/utils/coords.py @@ -176,40 +176,60 @@ def scale_units(out_unit, in_unit): 'rad': ['rad', 'radian', 'radians'], 'h': ['h', 'hr', 'hrs', 'hours'], 'm': ['m', 'km', 'cm'], - 'm/s': ['m/s', 'cm/s', 'km/s']} + 'm/s': ['m/s', 'cm/s', 'km/s', 'm s$^{-1}$', + 'cm s$^{-1}$', 'km s$^{-1}$', 'm s-1', 'cm s-1', + 'km s-1']} + replace_str = {'/s': [' s$^{-1}$', ' s-1']} scales = {'deg': 180.0, 'rad': np.pi, 'h': 12.0, 'm': 1.0, 'km': 0.001, 'cm': 100.0, 'm/s': 1.0, 'cm/s': 100.0, 'km/s': 0.001} # Test input and determine transformation type - out_key = None - in_key = None + out_key = out_unit.lower() + in_key = in_unit.lower() for kk in accepted_units.keys(): - if out_unit.lower() in accepted_units[kk]: + if out_key in accepted_units.keys() and in_key in accepted_units.keys(): + break + + if(out_key not in accepted_units.keys() and + out_unit.lower() in accepted_units[kk]): out_key = kk - if in_unit.lower() in accepted_units[kk]: + if(in_key not in accepted_units.keys() and + in_unit.lower() in accepted_units[kk]): in_key = kk - if out_key is None and in_key is None: - raise ValueError(''.join(['Cannot scale {:s} and '.format(in_unit) + if(out_key not in accepted_units.keys() and + in_key not in accepted_units.keys()): + raise ValueError(''.join(['Cannot scale {:s} and '.format(in_unit), '{:s}, unknown units'.format(out_unit)])) - if out_key is None: + if out_key not in accepted_units.keys(): raise ValueError('Unknown output unit {:}'.format(out_unit)) - if in_key is None: + if in_key not in accepted_units.keys(): raise ValueError('Unknown input unit {:}'.format(in_unit)) if out_key == 'm' or out_key == 'm/s' or in_key == 'm' or in_key == 'm/s': if in_key != out_key: raise ValueError('Cannot scale {:s} and {:s}'.format(out_unit, in_unit)) - # Recast units as keys for the scales dictionary - out_key = out_unit - in_key = in_unit - - unit_scale = scales[out_key.lower()] / scales[in_key.lower()] + # Recast units as keys for the scales dictionary and ensure that + # the format is consistent + rkey = '' + for rr in replace_str.keys(): + if out_key.find(rr): + rkey = rr + + out_key = out_unit.lower() + in_key = in_unit.lower() + + if rkey in replace_str.keys(): + for rval in replace_str[rkey]: + out_key = out_key.replace(rval, rkey) + in_key = in_key.replace(rval, rkey) + + unit_scale = scales[out_key] / scales[in_key] return unit_scale From 5bfded52cabb3345fb9c7807c07ed8bf66e722e2 Mon Sep 17 00:00:00 2001 From: "Angeline G. Burrell" Date: Wed, 17 Jul 2019 12:42:50 -0400 Subject: [PATCH 027/231] Update test_utils_coords.py - Added tests for new functionality --- pysat/tests/test_utils_coords.py | 51 ++++++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 5 deletions(-) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index 2e21faf..3c4c4ed 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -31,7 +31,8 @@ def setup(self): self.deg_units = ["deg", "degree", "degrees", "rad", "radian", "radians", "h", "hr", "hrs", "hours"] self.dist_units = ["m", "km", "cm"] - self.vel_units = ["m/s", "cm/s", "km/s"] + self.vel_units = ["m/s", "cm/s", "km/s", 'm s$^{-1}$', 'cm s$^{-1}$', + 'km s$^{-1}$', 'm s-1', 'cm s-1', 'km s-1'] def teardown(self): """Runs after every method to clean up previous testing.""" @@ -150,22 +151,62 @@ def test_scale_units_vel(self): for out_unit in self.vel_units: scale = coords.scale_units(out_unit, "m/s") - if out_unit == "m/s": + if out_unit.find("m") == 0: assert scale == 1.0 - elif out_unit.find("km/s") == 0: + elif out_unit.find("km") == 0: assert scale == 0.001 else: assert scale == 100.0 - def test_scale_units_bad(self): - """Test scale_units for mismatched input""" + def test_scale_units_bad_output(self): + """Test scale_units for unknown output unit""" assert_raises(ValueError, coords.scale_units, "happy", "m") + try: + coords.scale_units('happy', 'm') + verr = None + except ValueError as verr: + assert str(verr).find('output unit') > 0 + + def test_scale_units_bad_input(self): + """Test scale_units for unknown input unit""" + assert_raises(ValueError, coords.scale_units, "m", "happy") + try: + coords.scale_units('m', 'happy') + verr = None + except ValueError as verr: + assert str(verr).find('input unit') > 0 + + def test_scale_units_bad_match_pairs(self): + """Test scale_units for mismatched input for all pairings""" + assert_raises(ValueError, coords.scale_units, "m", "m/s") assert_raises(ValueError, coords.scale_units, "m", "deg") assert_raises(ValueError, coords.scale_units, "h", "km/s") + def test_scale_units_bad_match_message(self): + """Test scale_units error message for mismatched input""" + + assert_raises(ValueError, coords.scale_units, "m", "m/s") + try: + coords.scale_units('m', 'm/s') + verr = None + except ValueError as verr: + assert str(verr).find('Cannot scale') >= 0 + assert str(verr).find('unknown units') < 0 + + def test_scale_units_both_bad(self): + """Test scale_units for bad input and output""" + + assert_raises(ValueError, coords.scale_units, "happy", "sad") + try: + coords.scale_units('happy', 'sad') + verr = None + except ValueError as verr: + assert str(verr).find('unknown units') > 0 + + ##################################### # Geodetic / Geocentric conversions From 14e449529eabca67e741c44a12f94827950c2831 Mon Sep 17 00:00:00 2001 From: "Angeline G. Burrell" Date: Thu, 25 Jul 2019 12:41:50 -0400 Subject: [PATCH 028/231] Update test_utils_coords.py Updated tests for Jeff --- pysat/tests/test_utils_coords.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index 3c4c4ed..8720cb6 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -164,7 +164,6 @@ def test_scale_units_bad_output(self): assert_raises(ValueError, coords.scale_units, "happy", "m") try: coords.scale_units('happy', 'm') - verr = None except ValueError as verr: assert str(verr).find('output unit') > 0 @@ -174,7 +173,6 @@ def test_scale_units_bad_input(self): assert_raises(ValueError, coords.scale_units, "m", "happy") try: coords.scale_units('m', 'happy') - verr = None except ValueError as verr: assert str(verr).find('input unit') > 0 @@ -191,7 +189,6 @@ def test_scale_units_bad_match_message(self): assert_raises(ValueError, coords.scale_units, "m", "m/s") try: coords.scale_units('m', 'm/s') - verr = None except ValueError as verr: assert str(verr).find('Cannot scale') >= 0 assert str(verr).find('unknown units') < 0 @@ -202,7 +199,6 @@ def test_scale_units_both_bad(self): assert_raises(ValueError, coords.scale_units, "happy", "sad") try: coords.scale_units('happy', 'sad') - verr = None except ValueError as verr: assert str(verr).find('unknown units') > 0 From b73f2d22139bab1c43277d04f617718a31a2dfca Mon Sep 17 00:00:00 2001 From: jklenzing Date: Wed, 28 Aug 2019 13:47:29 -0400 Subject: [PATCH 029/231] move scale_units to utils._core --- pysat/tests/test_utils_coords.py | 97 +------------------------------ pysat/utils/coords.py | 99 -------------------------------- 2 files changed, 1 insertion(+), 195 deletions(-) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index 8720cb6..dd828cf 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -3,7 +3,6 @@ """ import numpy as np -from nose.tools import assert_raises, raises import pandas as pds import pysat @@ -109,101 +108,7 @@ def test_bad_lon_name_calc_solar_local_time(self): coords.calc_solar_local_time(self.testInst, lon_name="not longitude", slt_name='slt') - ##################################### - # Scale units - - def test_scale_units_same(self): - """ Test scale_units when both units are the same """ - - scale = coords.scale_units("happy", "happy") - - assert scale == 1.0 - - def test_scale_units_angles(self): - """Test scale_units for angles """ - - for out_unit in self.deg_units: - scale = coords.scale_units(out_unit, "deg") - - if out_unit.find("deg") == 0: - assert scale == 1.0 - elif out_unit.find("rad") == 0: - assert scale == np.pi / 180.0 - else: - assert scale == 1.0 / 15.0 - - def test_scale_units_dist(self): - """Test scale_units for distances """ - - for out_unit in self.dist_units: - scale = coords.scale_units(out_unit, "m") - - if out_unit == "m": - assert scale == 1.0 - elif out_unit.find("km") == 0: - assert scale == 0.001 - else: - assert scale == 100.0 - - def test_scale_units_vel(self): - """Test scale_units for velocities """ - - for out_unit in self.vel_units: - scale = coords.scale_units(out_unit, "m/s") - - if out_unit.find("m") == 0: - assert scale == 1.0 - elif out_unit.find("km") == 0: - assert scale == 0.001 - else: - assert scale == 100.0 - - def test_scale_units_bad_output(self): - """Test scale_units for unknown output unit""" - - assert_raises(ValueError, coords.scale_units, "happy", "m") - try: - coords.scale_units('happy', 'm') - except ValueError as verr: - assert str(verr).find('output unit') > 0 - - def test_scale_units_bad_input(self): - """Test scale_units for unknown input unit""" - - assert_raises(ValueError, coords.scale_units, "m", "happy") - try: - coords.scale_units('m', 'happy') - except ValueError as verr: - assert str(verr).find('input unit') > 0 - - def test_scale_units_bad_match_pairs(self): - """Test scale_units for mismatched input for all pairings""" - - assert_raises(ValueError, coords.scale_units, "m", "m/s") - assert_raises(ValueError, coords.scale_units, "m", "deg") - assert_raises(ValueError, coords.scale_units, "h", "km/s") - - def test_scale_units_bad_match_message(self): - """Test scale_units error message for mismatched input""" - - assert_raises(ValueError, coords.scale_units, "m", "m/s") - try: - coords.scale_units('m', 'm/s') - except ValueError as verr: - assert str(verr).find('Cannot scale') >= 0 - assert str(verr).find('unknown units') < 0 - - def test_scale_units_both_bad(self): - """Test scale_units for bad input and output""" - - assert_raises(ValueError, coords.scale_units, "happy", "sad") - try: - coords.scale_units('happy', 'sad') - except ValueError as verr: - assert str(verr).find('unknown units') > 0 - - - ##################################### + ################################### # Geodetic / Geocentric conversions def test_geodetic_to_geocentric_single(self): diff --git a/pysat/utils/coords.py b/pysat/utils/coords.py index 4f3f4d6..6c77045 100644 --- a/pysat/utils/coords.py +++ b/pysat/utils/coords.py @@ -135,105 +135,6 @@ def calc_solar_local_time(inst, lon_name=None, slt_name='slt'): return -def scale_units(out_unit, in_unit): - """ Determine the scaling factor between two units - - Parameters - ------------- - out_unit : str - Desired unit after scaling - in_unit : str - Unit to be scaled - - Returns - ----------- - unit_scale : float - Scaling factor that will convert from in_units to out_units - - Notes - ------- - Accepted units include degrees ('deg', 'degree', 'degrees'), - radians ('rad', 'radian', 'radians'), - hours ('h', 'hr', 'hrs', 'hour', 'hours'), and lengths ('m', 'km', 'cm'). - Can convert between degrees, radians, and hours or different lengths. - - Example - ----------- - :: - import numpy as np - two_pi = 2.0 * np.pi - scale = scale_units("deg", "RAD") - two_pi *= scale - two_pi # will show 360.0 - - - """ - - if out_unit == in_unit: - return 1.0 - - accepted_units = {'deg': ['deg', 'degree', 'degrees'], - 'rad': ['rad', 'radian', 'radians'], - 'h': ['h', 'hr', 'hrs', 'hours'], - 'm': ['m', 'km', 'cm'], - 'm/s': ['m/s', 'cm/s', 'km/s', 'm s$^{-1}$', - 'cm s$^{-1}$', 'km s$^{-1}$', 'm s-1', 'cm s-1', - 'km s-1']} - replace_str = {'/s': [' s$^{-1}$', ' s-1']} - - scales = {'deg': 180.0, 'rad': np.pi, 'h': 12.0, - 'm': 1.0, 'km': 0.001, 'cm': 100.0, - 'm/s': 1.0, 'cm/s': 100.0, 'km/s': 0.001} - - # Test input and determine transformation type - out_key = out_unit.lower() - in_key = in_unit.lower() - for kk in accepted_units.keys(): - if out_key in accepted_units.keys() and in_key in accepted_units.keys(): - break - - if(out_key not in accepted_units.keys() and - out_unit.lower() in accepted_units[kk]): - out_key = kk - if(in_key not in accepted_units.keys() and - in_unit.lower() in accepted_units[kk]): - in_key = kk - - if(out_key not in accepted_units.keys() and - in_key not in accepted_units.keys()): - raise ValueError(''.join(['Cannot scale {:s} and '.format(in_unit), - '{:s}, unknown units'.format(out_unit)])) - - if out_key not in accepted_units.keys(): - raise ValueError('Unknown output unit {:}'.format(out_unit)) - - if in_key not in accepted_units.keys(): - raise ValueError('Unknown input unit {:}'.format(in_unit)) - - if out_key == 'm' or out_key == 'm/s' or in_key == 'm' or in_key == 'm/s': - if in_key != out_key: - raise ValueError('Cannot scale {:s} and {:s}'.format(out_unit, - in_unit)) - # Recast units as keys for the scales dictionary and ensure that - # the format is consistent - rkey = '' - for rr in replace_str.keys(): - if out_key.find(rr): - rkey = rr - - out_key = out_unit.lower() - in_key = in_unit.lower() - - if rkey in replace_str.keys(): - for rval in replace_str[rkey]: - out_key = out_key.replace(rval, rkey) - in_key = in_key.replace(rval, rkey) - - unit_scale = scales[out_key] / scales[in_key] - - return unit_scale - - def geodetic_to_geocentric(lat_in, lon_in=None, inverse=False): """Converts position from geodetic to geocentric or vice-versa. From fa4e18e8146aab179d2b6cbeaa7d37d8cdd2ff63 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Wed, 28 Aug 2019 14:26:38 -0400 Subject: [PATCH 030/231] bugfix --- pysat/tests/test_utils_coords.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index dd828cf..492f9a9 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -5,6 +5,7 @@ import pandas as pds +from nose.tools import raises import pysat from pysat.utils import coords, time From 6dcfd1f2515a97b5b1a453de1c9ad690385e3b5e Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Sat, 28 Sep 2019 16:18:10 -0400 Subject: [PATCH 031/231] BUG: restore functions and add deprecationwarnings --- pysat/utils/coords.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pysat/utils/coords.py b/pysat/utils/coords.py index 6c77045..c3fc778 100644 --- a/pysat/utils/coords.py +++ b/pysat/utils/coords.py @@ -135,6 +135,20 @@ def calc_solar_local_time(inst, lon_name=None, slt_name='slt'): return +def scale_units(out_unit, in_unit): + """Deprecated function, moved to pysat.utils._core""" + + import warnings + from pysat import utils + + warnings.warn(' '.join(["utils.computational_form is deprecated, use", + "pysat.ssnl.computational_form instead"]), + DeprecationWarning) + unit_scale = utils.scale_units(out_unit, in_unit) + + return unit_scale + + def geodetic_to_geocentric(lat_in, lon_in=None, inverse=False): """Converts position from geodetic to geocentric or vice-versa. From 306abc3d06a5347d6fae069f38992adfd84a212c Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Sat, 28 Sep 2019 16:28:50 -0400 Subject: [PATCH 032/231] TST: add test for deprecation --- pysat/tests/test_utils_coords.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index 492f9a9..99b7a95 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -109,6 +109,20 @@ def test_bad_lon_name_calc_solar_local_time(self): coords.calc_solar_local_time(self.testInst, lon_name="not longitude", slt_name='slt') + def test_deprecation_warning_scale_units(self): + """Test deprecation warning for this function""" + + import warnings + + warnings.simplefilter("always") + scale1 = pysat.utils.scale_units("happy", "happy") + with warnings.catch_warnings(record=True) as w: + scale2 = coords.scale_units("happy", "happy") + + assert scale1 == scale2 + assert len(w) == 1 + assert w[0].category == DeprecationWarning + ################################### # Geodetic / Geocentric conversions From 67fab4e031646e67cbb1299601b4628ec48de07d Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 21 Oct 2019 19:26:49 -0400 Subject: [PATCH 033/231] BUG: stacklevel for all DeprecationWarnings --- pysat/utils/coords.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysat/utils/coords.py b/pysat/utils/coords.py index c3fc778..39e90a5 100644 --- a/pysat/utils/coords.py +++ b/pysat/utils/coords.py @@ -143,7 +143,7 @@ def scale_units(out_unit, in_unit): warnings.warn(' '.join(["utils.computational_form is deprecated, use", "pysat.ssnl.computational_form instead"]), - DeprecationWarning) + DeprecationWarning, stacklevel=2) unit_scale = utils.scale_units(out_unit, in_unit) return unit_scale From a0290d6884d5f0740231d6075e7de444c28c96e6 Mon Sep 17 00:00:00 2001 From: rstoneback Date: Sun, 27 Oct 2019 17:28:11 -0500 Subject: [PATCH 034/231] Merged --- pysat/utils/coords.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysat/utils/coords.py b/pysat/utils/coords.py index c3fc778..39e90a5 100644 --- a/pysat/utils/coords.py +++ b/pysat/utils/coords.py @@ -143,7 +143,7 @@ def scale_units(out_unit, in_unit): warnings.warn(' '.join(["utils.computational_form is deprecated, use", "pysat.ssnl.computational_form instead"]), - DeprecationWarning) + DeprecationWarning, stacklevel=2) unit_scale = utils.scale_units(out_unit, in_unit) return unit_scale From 2ba02afe45a0bbdcfbe22b9277f1f01023094955 Mon Sep 17 00:00:00 2001 From: rstoneback Date: Thu, 7 Nov 2019 18:24:54 -0600 Subject: [PATCH 035/231] STY: Updated variable name and imports. --- pysat/tests/test_utils_coords.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py index 99b7a95..8682a7a 100644 --- a/pysat/tests/test_utils_coords.py +++ b/pysat/tests/test_utils_coords.py @@ -116,12 +116,12 @@ def test_deprecation_warning_scale_units(self): warnings.simplefilter("always") scale1 = pysat.utils.scale_units("happy", "happy") - with warnings.catch_warnings(record=True) as w: + with warnings.catch_warnings(record=True) as war: scale2 = coords.scale_units("happy", "happy") assert scale1 == scale2 - assert len(w) == 1 - assert w[0].category == DeprecationWarning + assert len(war) == 1 + assert war[0].category == DeprecationWarning ################################### # Geodetic / Geocentric conversions From 4838b2da6d3e72a3e2c6c597805da954f4b7eb73 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Wed, 13 May 2020 12:57:56 -0400 Subject: [PATCH 036/231] DOC: migrate badge to travis-ci.org --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0f788f7..c6c03dc 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ -[![Build Status](https://travis-ci.com/pysat/pysatMadrigal.svg?branch=master)](https://travis-ci.com/pysat/pysatMadrigal) +[![Build Status](https://travis-ci.org/pysat/pysatMadrigal.svg?branch=master)](https://travis-ci.com/pysat/pysatMadrigal) [![Coverage Status](https://coveralls.io/repos/github/pysat/pysatMadrigal/badge.svg?branch=master)](https://coveralls.io/github/pysat/pysatMadrigal?branch=master) [![DOI](https://zenodo.org/badge/258384773.svg)](https://zenodo.org/badge/latestdoi/258384773) From 3b7684fce0a9244e655c66c7abd0ffe25ace0544 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Fri, 3 Jul 2020 13:09:14 -0400 Subject: [PATCH 037/231] ENH: Add coord transformations for JRO --- pysat/tests/test_utils_coords.py | 451 ----------------------- pysatMadrigal/__init__.py | 1 + {pysat/utils => pysatMadrigal}/coords.py | 142 +------ pysatMadrigal/tests/test_coords.py | 352 ++++++++++++++++++ 4 files changed, 354 insertions(+), 592 deletions(-) delete mode 100644 pysat/tests/test_utils_coords.py rename {pysat/utils => pysatMadrigal}/coords.py (73%) create mode 100644 pysatMadrigal/tests/test_coords.py diff --git a/pysat/tests/test_utils_coords.py b/pysat/tests/test_utils_coords.py deleted file mode 100644 index 8682a7a..0000000 --- a/pysat/tests/test_utils_coords.py +++ /dev/null @@ -1,451 +0,0 @@ -""" -tests the pysat coords area -""" -import numpy as np - -import pandas as pds - -from nose.tools import raises -import pysat -from pysat.utils import coords, time - - -class TestBasics(): - def setup(self): - """Runs before every method to create a clean testing setup.""" - self.test_angles = np.array([340.0, 348.0, 358.9, 0.5, 5.0, 9.87]) - - self.testInst = pysat.Instrument(platform='pysat', - name='testing', - clean_level='clean') - # Add longitude to the test instrument - ones = np.ones(shape=len(self.test_angles)) - tind = time.create_datetime_index(year=ones*2001, - month=ones, - uts=np.arange(0.0, len(ones), 1.0)) - - self.testInst.data = \ - pds.DataFrame(np.array([tind, self.test_angles]).transpose(), - index=tind, columns=["time", "longitude"]) - - self.deg_units = ["deg", "degree", "degrees", "rad", "radian", - "radians", "h", "hr", "hrs", "hours"] - self.dist_units = ["m", "km", "cm"] - self.vel_units = ["m/s", "cm/s", "km/s", 'm s$^{-1}$', 'cm s$^{-1}$', - 'km s$^{-1}$', 'm s-1', 'cm s-1', 'km s-1'] - - def teardown(self): - """Runs after every method to clean up previous testing.""" - del self.test_angles, self.testInst - del self.deg_units, self.dist_units, self.vel_units - - ##################################### - # Cyclic data conversions - - def test_adjust_cyclic_data_default(self): - """ Test adjust_cyclic_data with default range """ - - test_in = np.radians(self.test_angles) - np.pi - test_angles = coords.adjust_cyclic_data(test_in) - - assert test_angles.max() < 2.0 * np.pi - assert test_angles.min() >= 0.0 - - def test_adjust_cyclic_data_custom(self): - """ Test adjust_cyclic_data with a custom range """ - - test_angles = coords.adjust_cyclic_data(self.test_angles, - high=180.0, low=-180.0) - - assert test_angles.max() < 180.0 - assert test_angles.min() >= -180.0 - - ##################################### - # Update Longitude - - def test_update_longitude(self): - """Test update_longitude """ - - coords.update_longitude(self.testInst, lon_name="longitude") - - assert np.all(self.testInst.data['longitude'] < 180.0) - assert np.all(self.testInst.data['longitude'] >= -180.0) - - @raises(ValueError) - def test_bad_lon_name_update_longitude(self): - """Test update_longitude with a bad longitude name""" - - coords.update_longitude(self.testInst, lon_name="not longitude") - - ######################### - # calc_solar_local_time - - def test_calc_solar_local_time(self): - """Test calc_solar_local_time""" - - coords.calc_solar_local_time(self.testInst, lon_name="longitude", - slt_name='slt') - target = np.array([22.66666667, 23.20027778, 23.92722222, - 0.03416667, 0.33444444, 0.65938889]) - - assert (abs(self.testInst['slt'] - target)).max() < 1.0e-6 - - def test_calc_solar_local_time_w_update_longitude(self): - """Test calc_solar_local_time with update_longitude""" - - coords.calc_solar_local_time(self.testInst, lon_name="longitude", - slt_name='slt') - coords.update_longitude(self.testInst, lon_name="longitude") - coords.calc_solar_local_time(self.testInst, lon_name="longitude", - slt_name='slt2') - - assert (abs(self.testInst['slt'] - - self.testInst['slt2'])).max() < 1.0e-6 - - @raises(ValueError) - def test_bad_lon_name_calc_solar_local_time(self): - """Test calc_solar_local_time with a bad longitude name""" - - coords.calc_solar_local_time(self.testInst, lon_name="not longitude", - slt_name='slt') - - def test_deprecation_warning_scale_units(self): - """Test deprecation warning for this function""" - - import warnings - - warnings.simplefilter("always") - scale1 = pysat.utils.scale_units("happy", "happy") - with warnings.catch_warnings(record=True) as war: - scale2 = coords.scale_units("happy", "happy") - - assert scale1 == scale2 - assert len(war) == 1 - assert war[0].category == DeprecationWarning - - ################################### - # Geodetic / Geocentric conversions - - def test_geodetic_to_geocentric_single(self): - """Test conversion from geodetic to geocentric coordinates""" - - lat, lon, rad = coords.geodetic_to_geocentric(45.0, lon_in=8.0) - - assert abs(lat - 44.807576784018046) < 1.0e-6 - assert abs(lon - 8.0) < 1.0e-6 - assert abs(rad - 6367.489543863465) < 1.0e-6 - - def test_geocentric_to_geodetic_single(self): - """Test conversion from geocentric to geodetic coordinates""" - - lat, lon, rad = coords.geodetic_to_geocentric(45.0, lon_in=8.0, - inverse=True) - - assert abs(lat - 45.192423215981954) < 1.0e-6 - assert abs(lon - 8.0) < 1.0e-6 - assert abs(rad - 6367.345908499981) < 1.0e-6 - - def test_geodetic_to_geocentric_mult(self): - """Test array conversion from geodetic to geocentric coordinates""" - - arr = np.ones(shape=(10,), dtype=float) - lat, lon, rad = coords.geodetic_to_geocentric(45.0*arr, lon_in=8.0*arr) - - assert lat.shape == arr.shape - assert lon.shape == arr.shape - assert rad.shape == arr.shape - assert abs(lat - 44.807576784018046).max() < 1.0e-6 - assert abs(lon - 8.0).max() < 1.0e-6 - assert abs(rad - 6367.489543863465).max() < 1.0e-6 - - def test_geocentric_to_geodetic_mult(self): - """Test array conversion from geocentric to geodetic coordinates""" - - arr = np.ones(shape=(10,), dtype=float) - lat, lon, rad = coords.geodetic_to_geocentric(45.0*arr, lon_in=8.0*arr, - inverse=True) - - assert lat.shape == arr.shape - assert lon.shape == arr.shape - assert rad.shape == arr.shape - assert abs(lat - 45.192423215981954).max() < 1.0e-6 - assert abs(lon - 8.0).max() < 1.0e-6 - assert abs(rad - 6367.345908499981).max() < 1.0e-6 - - def test_geodetic_to_geocentric_inverse(self): - """Tests the reversibility of geodetic to geocentric conversions""" - - lat1 = 37.5 - lon1 = 117.3 - lat2, lon2, rad_e = coords.geodetic_to_geocentric(lat1, lon_in=lon1, - inverse=False) - lat3, lon3, rad_e = coords.geodetic_to_geocentric(lat2, lon_in=lon2, - inverse=True) - assert abs(lon1-lon3) < 1.0e-6 - assert abs(lat1-lat3) < 1.0e-6 - - ############################################### - # Geodetic / Geocentric Horizontal conversions - - def test_geodetic_to_geocentric_horz_single(self): - """Test conversion from geodetic to geocentric coordinates""" - - lat, lon, rad, az, el = \ - coords.geodetic_to_geocentric_horizontal(45.0, 8.0, 52.0, 63.0) - - assert abs(lat - 44.807576784018046) < 1.0e-6 - assert abs(lon - 8.0) < 1.0e-6 - assert abs(rad - 6367.489543863465) < 1.0e-6 - assert abs(az - 51.70376774257361) < 1.0e-6 - assert abs(el - 62.8811403841008) < 1.0e-6 - - def test_geocentric_to_geodetic_horz_single(self): - """Test conversion from geocentric to geodetic coordinates""" - - lat, lon, rad, az, el = \ - coords.geodetic_to_geocentric_horizontal(45.0, 8.0, 52.0, 63.0, - inverse=True) - - assert abs(lat - 45.192423215981954) < 1.0e-6 - assert abs(lon - 8.0) < 1.0e-6 - assert abs(rad - 6367.345908499981) < 1.0e-6 - assert abs(az - 52.29896101551479) < 1.0e-6 - assert abs(el - 63.118072033649916) < 1.0e-6 - - def test_geodetic_to_geocentric_horz_mult(self): - """Test array conversion from geodetic to geocentric coordinates""" - - arr = np.ones(shape=(10,), dtype=float) - lat, lon, rad, az, el = \ - coords.geodetic_to_geocentric_horizontal(45.0*arr, 8.0*arr, - 52.0*arr, 63.0*arr) - - assert lat.shape == arr.shape - assert lon.shape == arr.shape - assert rad.shape == arr.shape - assert az.shape == arr.shape - assert el.shape == arr.shape - assert abs(lat - 44.807576784018046).max() < 1.0e-6 - assert abs(lon - 8.0).max() < 1.0e-6 - assert abs(rad - 6367.489543863465).max() < 1.0e-6 - assert abs(az - 51.70376774257361).max() < 1.0e-6 - assert abs(el - 62.8811403841008).max() < 1.0e-6 - - def test_geocentric_to_geodetic_horz_mult(self): - """Test array conversion from geocentric to geodetic coordinates""" - - arr = np.ones(shape=(10,), dtype=float) - lat, lon, rad, az, el = \ - coords.geodetic_to_geocentric_horizontal(45.0*arr, 8.0*arr, - 52.0*arr, 63.0*arr, - inverse=True) - - assert lat.shape == arr.shape - assert lon.shape == arr.shape - assert rad.shape == arr.shape - assert az.shape == arr.shape - assert el.shape == arr.shape - assert abs(lat - 45.192423215981954).max() < 1.0e-6 - assert abs(lon - 8.0).max() < 1.0e-6 - assert abs(rad - 6367.345908499981).max() < 1.0e-6 - assert abs(az - 52.29896101551479).max() < 1.0e-6 - assert abs(el - 63.118072033649916).max() < 1.0e-6 - - def test_geodetic_to_geocentric_horizontal_inverse(self): - """Tests the reversibility of geodetic to geocentric horiz conversions - - Note: inverse of az and el angles currently non-functional""" - - lat1 = -17.5 - lon1 = 187.3 - az1 = 52.0 - el1 = 63.0 - lat2, lon2, rad_e, az2, el2 = \ - coords.geodetic_to_geocentric_horizontal(lat1, lon1, az1, el1, - inverse=False) - lat3, lon3, rad_e, az3, el3 = \ - coords.geodetic_to_geocentric_horizontal(lat2, lon2, az2, el2, - inverse=True) - - assert abs(lon1-lon3) < 1.0e-6 - assert abs(lat1-lat3) < 1.0e-6 - assert abs(az1-az3) < 1.0e-6 - assert abs(el1-el3) < 1.0e-6 - - #################################### - # Spherical / Cartesian conversions - - def test_spherical_to_cartesian_single(self): - """Test conversion from spherical to cartesian coordinates""" - - x, y, z = coords.spherical_to_cartesian(45.0, 30.0, 1.0) - - assert abs(x - y) < 1.0e-6 - assert abs(z - 0.5) < 1.0e-6 - - def test_cartesian_to_spherical_single(self): - """Test conversion from cartesian to spherical coordinates""" - - x = 0.6123724356957946 - az, el, r = coords.spherical_to_cartesian(x, x, 0.5, - inverse=True) - - assert abs(az - 45.0) < 1.0e-6 - assert abs(el - 30.0) < 1.0e-6 - assert abs(r - 1.0) < 1.0e-6 - - def test_spherical_to_cartesian_mult(self): - """Test array conversion from spherical to cartesian coordinates""" - - arr = np.ones(shape=(10,), dtype=float) - x, y, z = coords.spherical_to_cartesian(45.0*arr, 30.0*arr, arr) - - assert x.shape == arr.shape - assert y.shape == arr.shape - assert z.shape == arr.shape - assert abs(x - y).max() < 1.0e-6 - assert abs(z - 0.5).max() < 1.0e-6 - - def test_cartesian_to_spherical_mult(self): - """Test array conversion from cartesian to spherical coordinates""" - - arr = np.ones(shape=(10,), dtype=float) - x = 0.6123724356957946 - az, el, r = coords.spherical_to_cartesian(x*arr, x*arr, 0.5*arr, - inverse=True) - - assert az.shape == arr.shape - assert el.shape == arr.shape - assert r.shape == arr.shape - assert abs(az - 45.0).max() < 1.0e-6 - assert abs(el - 30.0).max() < 1.0e-6 - assert abs(r - 1.0).max() < 1.0e-6 - - def test_spherical_to_cartesian_inverse(self): - """Tests the reversibility of spherical to cartesian conversions""" - - x1 = 3000.0 - y1 = 2000.0 - z1 = 2500.0 - az, el, r = coords.spherical_to_cartesian(x1, y1, z1, - inverse=True) - x2, y2, z2 = coords.spherical_to_cartesian(az, el, r, - inverse=False) - - assert abs(x1-x2) < 1.0e-6 - assert abs(y1-y2) < 1.0e-6 - assert abs(z1-z2) < 1.0e-6 - - ######################################## - # Global / Local Cartesian conversions - - def test_global_to_local_cartesian_single(self): - """Test conversion from global to local cartesian coordinates""" - - x, y, z = coords.global_to_local_cartesian(7000.0, 8000.0, 9000.0, - 37.5, 289.0, 6380.0) - - assert abs(x + 9223.175264852474) < 1.0e-6 - assert abs(y + 2239.835278362686) < 1.0e-6 - assert abs(z - 11323.126851088331) < 1.0e-6 - - def test_local_cartesian_to_global_single(self): - """Test conversion from local cartesian to global coordinates""" - - x, y, z = coords.global_to_local_cartesian(7000.0, 8000.0, 9000.0, - 37.5, 289.0, 6380.0, - inverse=True) - - assert abs(x + 5709.804676635975) < 1.0e-6 - assert abs(y + 4918.397556010223) < 1.0e-6 - assert abs(z - 15709.577500484005) < 1.0e-6 - - def test_global_to_local_cartesian_mult(self): - """Test array conversion from global to local cartesian coordinates""" - - arr = np.ones(shape=(10,), dtype=float) - x, y, z = coords.global_to_local_cartesian(7000.0*arr, 8000.0*arr, - 9000.0*arr, 37.5*arr, - 289.0*arr, 6380.0*arr) - - assert x.shape == arr.shape - assert y.shape == arr.shape - assert z.shape == arr.shape - assert abs(x + 9223.175264852474).max() < 1.0e-6 - assert abs(y + 2239.835278362686).max() < 1.0e-6 - assert abs(z - 11323.126851088331).max() < 1.0e-6 - - def test_local_cartesian_to_global_mult(self): - """Test array conversion from local cartesian to global coordinates""" - - arr = np.ones(shape=(10,), dtype=float) - x, y, z = coords.global_to_local_cartesian(7000.0*arr, 8000.0*arr, - 9000.0*arr, 37.5*arr, - 289.0*arr, 6380.0*arr, - inverse=True) - - assert x.shape == arr.shape - assert y.shape == arr.shape - assert z.shape == arr.shape - assert abs(x + 5709.804676635975).max() < 1.0e-6 - assert abs(y + 4918.397556010223).max() < 1.0e-6 - assert abs(z - 15709.577500484005).max() < 1.0e-6 - - def test_global_to_local_cartesian_inverse(self): - """Tests the reversibility of the global to loc cartesian transform""" - - x1 = 7000.0 - y1 = 8000.0 - z1 = 9500.0 - lat = 37.5 - lon = 289.0 - rad = 6380.0 - x2, y2, z2 = coords.global_to_local_cartesian(x1, y1, z1, - lat, lon, rad, - inverse=False) - x3, y3, z3 = coords.global_to_local_cartesian(x2, y2, z2, - lat, lon, rad, - inverse=True) - assert abs(x1-x3) < 1.0e-6 - assert abs(y1-y3) < 1.0e-6 - assert abs(z1-z3) < 1.0e-6 - - ######################################## - # Local Horizontal / Global conversions - - def test_local_horizontal_to_global_geo_geodetic(self): - """Tests the conversion of the local horizontal to global geo""" - - az = 30.0 - el = 45.0 - dist = 1000.0 - lat0 = 45.0 - lon0 = 0.0 - alt0 = 400.0 - - lat, lon, rad = \ - coords.local_horizontal_to_global_geo(az, el, dist, - lat0, lon0, alt0) - - assert abs(lat - 50.419037572472625) < 1.0e-6 - assert abs(lon + 7.694008395350697) < 1.0e-6 - assert abs(rad - 7172.15486518744) < 1.0e-6 - - def test_local_horizontal_to_global_geo(self): - """Tests the conversion of the local horizontal to global geo""" - - az = 30.0 - el = 45.0 - dist = 1000.0 - lat0 = 45.0 - lon0 = 0.0 - alt0 = 400.0 - - lat, lon, rad = \ - coords.local_horizontal_to_global_geo(az, el, dist, - lat0, lon0, alt0, - geodetic=False) - - assert abs(lat - 50.414315865044202) < 1.0e-6 - assert abs(lon + 7.6855551809119502) < 1.0e-6 - assert abs(rad - 7185.6983665760772) < 1.0e-6 diff --git a/pysatMadrigal/__init__.py b/pysatMadrigal/__init__.py index 0b73a26..9346093 100644 --- a/pysatMadrigal/__init__.py +++ b/pysatMadrigal/__init__.py @@ -1 +1,2 @@ +from pysatMadrigal import coords # noqa F401 from pysatMadrigal import instruments # noqa F401 diff --git a/pysat/utils/coords.py b/pysatMadrigal/coords.py similarity index 73% rename from pysat/utils/coords.py rename to pysatMadrigal/coords.py index 39e90a5..a8e07e0 100644 --- a/pysat/utils/coords.py +++ b/pysatMadrigal/coords.py @@ -1,5 +1,5 @@ """ -pysat.coords - coordinate transformations for pysat +pysatMadrigal.coords - coordinate transformations for radar instruments ========================================= pysat.coords contains a number of coordinate-transformation @@ -7,146 +7,6 @@ """ import numpy as np -import pandas as pds - - -def adjust_cyclic_data(samples, high=2.0*np.pi, low=0.0): - """Adjust cyclic values such as longitude to a different scale - - Parameters - ----------- - samples : array_like - Input array - high: float or int - Upper boundary for circular standard deviation range (default=2 pi) - low : float or int - Lower boundary for circular standard deviation range (default=0) - axis : int or NoneType - Axis along which standard deviations are computed. The default is to - compute the standard deviation of the flattened array - - Returns - -------- - out_samples : float - Circular standard deviation - - """ - - out_samples = np.asarray(samples) - sample_range = high - low - out_samples[out_samples >= high] -= sample_range - out_samples[out_samples < low] += sample_range - - return out_samples - - -def update_longitude(inst, lon_name=None, high=180.0, low=-180.0): - """ Update longitude to the desired range - - Parameters - ------------ - inst : pysat.Instrument instance - instrument object to be updated - lon_name : string - name of the longtiude data - high : float - Highest allowed longitude value (default=180.0) - low : float - Lowest allowed longitude value (default=-180.0) - - Returns - --------- - updates instrument data in column 'lon_name' - - """ - - from pysat.utils.coords import adjust_cyclic_data - - if lon_name not in inst.data.keys(): - raise ValueError('uknown longitude variable name') - - new_lon = adjust_cyclic_data(inst[lon_name], high=high, low=low) - - # Update based on data type - if inst.pandas_format: - inst[lon_name] = new_lon - else: - inst[lon_name].data = new_lon - - return - - -def calc_solar_local_time(inst, lon_name=None, slt_name='slt'): - """ Append solar local time to an instrument object - - Parameters - ------------ - inst : pysat.Instrument instance - instrument object to be updated - lon_name : string - name of the longtiude data key (assumes data are in degrees) - slt_name : string - name of the output solar local time data key (default='slt') - - Returns - --------- - updates instrument data in column specified by slt_name - - """ - - import datetime as dt - - if lon_name not in inst.data.keys(): - raise ValueError('uknown longitude variable name') - - # Convert from numpy epoch nanoseconds to UT seconds of day - ut_hr = list() - for nptime in inst.index.values.astype(int): - # Numpy times come out in nanoseconds and timestamp converts - # from seconds - dtime = dt.datetime.utcfromtimestamp(nptime * 1.0e-9) - ut_hr.append((dtime.hour * 3600.0 + dtime.minute * 60.0 + - dtime.second + dtime.microsecond * 1.0e-6) / 3600.0) - # Calculate solar local time - slt = np.array([t + inst[lon_name][i] / 15.0 for i, t in enumerate(ut_hr)]) - - # Ensure that solar local time falls between 0 and 24 hours - slt = np.mod(slt, 24.0) - - # Add the solar local time to the instrument - if inst.pandas_format: - inst[slt_name] = pds.Series(slt, index=inst.data.index) - else: - data = inst.data.assign(pysat_slt=(inst.data.coords.keys(), slt)) - data.rename({"pysat_slt": slt_name}, inplace=True) - inst.data = data - - # Add units to the metadata - inst.meta[slt_name] = {inst.meta.units_label: 'h', - inst.meta.name_label: "Solar Local Time", - inst.meta.desc_label: "Solar local time", - inst.meta.plot_label: "SLT", - inst.meta.axis_label: "SLT", - inst.meta.scale_label: "linear", - inst.meta.min_label: 0.0, - inst.meta.max_label: 24.0, - inst.meta.fill_label: np.nan} - - return - - -def scale_units(out_unit, in_unit): - """Deprecated function, moved to pysat.utils._core""" - - import warnings - from pysat import utils - - warnings.warn(' '.join(["utils.computational_form is deprecated, use", - "pysat.ssnl.computational_form instead"]), - DeprecationWarning, stacklevel=2) - unit_scale = utils.scale_units(out_unit, in_unit) - - return unit_scale def geodetic_to_geocentric(lat_in, lon_in=None, inverse=False): diff --git a/pysatMadrigal/tests/test_coords.py b/pysatMadrigal/tests/test_coords.py new file mode 100644 index 0000000..b9aa91a --- /dev/null +++ b/pysatMadrigal/tests/test_coords.py @@ -0,0 +1,352 @@ +""" +tests the pysat coords area +""" +import numpy as np + +from pysatMadrigal import coords + + +def test_geodetic_to_geocentric_single(): + """Test conversion from geodetic to geocentric coordinates""" + + lat, lon, rad = coords.geodetic_to_geocentric(45.0, lon_in=8.0) + + assert abs(lat - 44.807576784018046) < 1.0e-6 + assert abs(lon - 8.0) < 1.0e-6 + assert abs(rad - 6367.489543863465) < 1.0e-6 + + +def test_geocentric_to_geodetic_single(): + """Test conversion from geocentric to geodetic coordinates""" + + lat, lon, rad = coords.geodetic_to_geocentric(45.0, lon_in=8.0, + inverse=True) + + assert abs(lat - 45.192423215981954) < 1.0e-6 + assert abs(lon - 8.0) < 1.0e-6 + assert abs(rad - 6367.345908499981) < 1.0e-6 + + +def test_geodetic_to_geocentric_mult(): + """Test array conversion from geodetic to geocentric coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + lat, lon, rad = coords.geodetic_to_geocentric(45.0*arr, lon_in=8.0*arr) + + assert lat.shape == arr.shape + assert lon.shape == arr.shape + assert rad.shape == arr.shape + assert abs(lat - 44.807576784018046).max() < 1.0e-6 + assert abs(lon - 8.0).max() < 1.0e-6 + assert abs(rad - 6367.489543863465).max() < 1.0e-6 + + +def test_geocentric_to_geodetic_mult(): + """Test array conversion from geocentric to geodetic coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + lat, lon, rad = coords.geodetic_to_geocentric(45.0*arr, lon_in=8.0*arr, + inverse=True) + + assert lat.shape == arr.shape + assert lon.shape == arr.shape + assert rad.shape == arr.shape + assert abs(lat - 45.192423215981954).max() < 1.0e-6 + assert abs(lon - 8.0).max() < 1.0e-6 + assert abs(rad - 6367.345908499981).max() < 1.0e-6 + + +def test_geodetic_to_geocentric_inverse(): + """Tests the reversibility of geodetic to geocentric conversions""" + + lat1 = 37.5 + lon1 = 117.3 + lat2, lon2, rad_e = coords.geodetic_to_geocentric(lat1, lon_in=lon1, + inverse=False) + lat3, lon3, rad_e = coords.geodetic_to_geocentric(lat2, lon_in=lon2, + inverse=True) + assert abs(lon1-lon3) < 1.0e-6 + assert abs(lat1-lat3) < 1.0e-6 + + +############################################### +# Geodetic / Geocentric Horizontal conversions + +def test_geodetic_to_geocentric_horz_single(): + """Test conversion from geodetic to geocentric coordinates""" + + lat, lon, rad, az, el = \ + coords.geodetic_to_geocentric_horizontal(45.0, 8.0, 52.0, 63.0) + + assert abs(lat - 44.807576784018046) < 1.0e-6 + assert abs(lon - 8.0) < 1.0e-6 + assert abs(rad - 6367.489543863465) < 1.0e-6 + assert abs(az - 51.70376774257361) < 1.0e-6 + assert abs(el - 62.8811403841008) < 1.0e-6 + + +def test_geocentric_to_geodetic_horz_single(): + """Test conversion from geocentric to geodetic coordinates""" + + lat, lon, rad, az, el = \ + coords.geodetic_to_geocentric_horizontal(45.0, 8.0, 52.0, 63.0, + inverse=True) + + assert abs(lat - 45.192423215981954) < 1.0e-6 + assert abs(lon - 8.0) < 1.0e-6 + assert abs(rad - 6367.345908499981) < 1.0e-6 + assert abs(az - 52.29896101551479) < 1.0e-6 + assert abs(el - 63.118072033649916) < 1.0e-6 + + +def test_geodetic_to_geocentric_horz_mult(): + """Test array conversion from geodetic to geocentric coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + lat, lon, rad, az, el = \ + coords.geodetic_to_geocentric_horizontal(45.0*arr, 8.0*arr, + 52.0*arr, 63.0*arr) + + assert lat.shape == arr.shape + assert lon.shape == arr.shape + assert rad.shape == arr.shape + assert az.shape == arr.shape + assert el.shape == arr.shape + assert abs(lat - 44.807576784018046).max() < 1.0e-6 + assert abs(lon - 8.0).max() < 1.0e-6 + assert abs(rad - 6367.489543863465).max() < 1.0e-6 + assert abs(az - 51.70376774257361).max() < 1.0e-6 + assert abs(el - 62.8811403841008).max() < 1.0e-6 + + +def test_geocentric_to_geodetic_horz_mult(): + """Test array conversion from geocentric to geodetic coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + lat, lon, rad, az, el = \ + coords.geodetic_to_geocentric_horizontal(45.0*arr, 8.0*arr, + 52.0*arr, 63.0*arr, + inverse=True) + + assert lat.shape == arr.shape + assert lon.shape == arr.shape + assert rad.shape == arr.shape + assert az.shape == arr.shape + assert el.shape == arr.shape + assert abs(lat - 45.192423215981954).max() < 1.0e-6 + assert abs(lon - 8.0).max() < 1.0e-6 + assert abs(rad - 6367.345908499981).max() < 1.0e-6 + assert abs(az - 52.29896101551479).max() < 1.0e-6 + assert abs(el - 63.118072033649916).max() < 1.0e-6 + + +def test_geodetic_to_geocentric_horizontal_inverse(): + """Tests the reversibility of geodetic to geocentric horiz conversions + + Note: inverse of az and el angles currently non-functional""" + + lat1 = -17.5 + lon1 = 187.3 + az1 = 52.0 + el1 = 63.0 + lat2, lon2, rad_e, az2, el2 = \ + coords.geodetic_to_geocentric_horizontal(lat1, lon1, az1, el1, + inverse=False) + lat3, lon3, rad_e, az3, el3 = \ + coords.geodetic_to_geocentric_horizontal(lat2, lon2, az2, el2, + inverse=True) + + assert abs(lon1-lon3) < 1.0e-6 + assert abs(lat1-lat3) < 1.0e-6 + assert abs(az1-az3) < 1.0e-6 + assert abs(el1-el3) < 1.0e-6 + + +#################################### +# Spherical / Cartesian conversions + +def test_spherical_to_cartesian_single(): + """Test conversion from spherical to cartesian coordinates""" + + x, y, z = coords.spherical_to_cartesian(45.0, 30.0, 1.0) + + assert abs(x - y) < 1.0e-6 + assert abs(z - 0.5) < 1.0e-6 + + +def test_cartesian_to_spherical_single(): + """Test conversion from cartesian to spherical coordinates""" + + x = 0.6123724356957946 + az, el, r = coords.spherical_to_cartesian(x, x, 0.5, + inverse=True) + + assert abs(az - 45.0) < 1.0e-6 + assert abs(el - 30.0) < 1.0e-6 + assert abs(r - 1.0) < 1.0e-6 + + +def test_spherical_to_cartesian_mult(): + """Test array conversion from spherical to cartesian coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + x, y, z = coords.spherical_to_cartesian(45.0*arr, 30.0*arr, arr) + + assert x.shape == arr.shape + assert y.shape == arr.shape + assert z.shape == arr.shape + assert abs(x - y).max() < 1.0e-6 + assert abs(z - 0.5).max() < 1.0e-6 + + +def test_cartesian_to_spherical_mult(): + """Test array conversion from cartesian to spherical coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + x = 0.6123724356957946 + az, el, r = coords.spherical_to_cartesian(x*arr, x*arr, 0.5*arr, + inverse=True) + + assert az.shape == arr.shape + assert el.shape == arr.shape + assert r.shape == arr.shape + assert abs(az - 45.0).max() < 1.0e-6 + assert abs(el - 30.0).max() < 1.0e-6 + assert abs(r - 1.0).max() < 1.0e-6 + + +def test_spherical_to_cartesian_inverse(): + """Tests the reversibility of spherical to cartesian conversions""" + + x1 = 3000.0 + y1 = 2000.0 + z1 = 2500.0 + az, el, r = coords.spherical_to_cartesian(x1, y1, z1, + inverse=True) + x2, y2, z2 = coords.spherical_to_cartesian(az, el, r, + inverse=False) + + assert abs(x1-x2) < 1.0e-6 + assert abs(y1-y2) < 1.0e-6 + assert abs(z1-z2) < 1.0e-6 + + +######################################## +# Global / Local Cartesian conversions + +def test_global_to_local_cartesian_single(): + """Test conversion from global to local cartesian coordinates""" + + x, y, z = coords.global_to_local_cartesian(7000.0, 8000.0, 9000.0, + 37.5, 289.0, 6380.0) + + assert abs(x + 9223.175264852474) < 1.0e-6 + assert abs(y + 2239.835278362686) < 1.0e-6 + assert abs(z - 11323.126851088331) < 1.0e-6 + + +def test_local_cartesian_to_global_single(): + """Test conversion from local cartesian to global coordinates""" + + x, y, z = coords.global_to_local_cartesian(7000.0, 8000.0, 9000.0, + 37.5, 289.0, 6380.0, + inverse=True) + + assert abs(x + 5709.804676635975) < 1.0e-6 + assert abs(y + 4918.397556010223) < 1.0e-6 + assert abs(z - 15709.577500484005) < 1.0e-6 + + +def test_global_to_local_cartesian_mult(): + """Test array conversion from global to local cartesian coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + x, y, z = coords.global_to_local_cartesian(7000.0*arr, 8000.0*arr, + 9000.0*arr, 37.5*arr, + 289.0*arr, 6380.0*arr) + + assert x.shape == arr.shape + assert y.shape == arr.shape + assert z.shape == arr.shape + assert abs(x + 9223.175264852474).max() < 1.0e-6 + assert abs(y + 2239.835278362686).max() < 1.0e-6 + assert abs(z - 11323.126851088331).max() < 1.0e-6 + + +def test_local_cartesian_to_global_mult(): + """Test array conversion from local cartesian to global coordinates""" + + arr = np.ones(shape=(10,), dtype=float) + x, y, z = coords.global_to_local_cartesian(7000.0*arr, 8000.0*arr, + 9000.0*arr, 37.5*arr, + 289.0*arr, 6380.0*arr, + inverse=True) + + assert x.shape == arr.shape + assert y.shape == arr.shape + assert z.shape == arr.shape + assert abs(x + 5709.804676635975).max() < 1.0e-6 + assert abs(y + 4918.397556010223).max() < 1.0e-6 + assert abs(z - 15709.577500484005).max() < 1.0e-6 + + +def test_global_to_local_cartesian_inverse(): + """Tests the reversibility of the global to loc cartesian transform""" + + x1 = 7000.0 + y1 = 8000.0 + z1 = 9500.0 + lat = 37.5 + lon = 289.0 + rad = 6380.0 + x2, y2, z2 = coords.global_to_local_cartesian(x1, y1, z1, + lat, lon, rad, + inverse=False) + x3, y3, z3 = coords.global_to_local_cartesian(x2, y2, z2, + lat, lon, rad, + inverse=True) + assert abs(x1-x3) < 1.0e-6 + assert abs(y1-y3) < 1.0e-6 + assert abs(z1-z3) < 1.0e-6 + + +######################################## +# Local Horizontal / Global conversions + +def test_local_horizontal_to_global_geo_geodetic(): + """Tests the conversion of the local horizontal to global geo""" + + az = 30.0 + el = 45.0 + dist = 1000.0 + lat0 = 45.0 + lon0 = 0.0 + alt0 = 400.0 + + lat, lon, rad = \ + coords.local_horizontal_to_global_geo(az, el, dist, + lat0, lon0, alt0) + + assert abs(lat - 50.419037572472625) < 1.0e-6 + assert abs(lon + 7.694008395350697) < 1.0e-6 + assert abs(rad - 7172.15486518744) < 1.0e-6 + + +def test_local_horizontal_to_global_geo(): + """Tests the conversion of the local horizontal to global geo""" + + az = 30.0 + el = 45.0 + dist = 1000.0 + lat0 = 45.0 + lon0 = 0.0 + alt0 = 400.0 + + lat, lon, rad = \ + coords.local_horizontal_to_global_geo(az, el, dist, + lat0, lon0, alt0, + geodetic=False) + + assert abs(lat - 50.414315865044202) < 1.0e-6 + assert abs(lon + 7.6855551809119502) < 1.0e-6 + assert abs(rad - 7185.6983665760772) < 1.0e-6 From 38003ab87e6d2183ff143ad80de163207da749fe Mon Sep 17 00:00:00 2001 From: jklenzing Date: Fri, 3 Jul 2020 13:14:01 -0400 Subject: [PATCH 038/231] DOC: add changelog --- CHANGELOG.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..0535e07 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,15 @@ +# Change Log +All notable changes to this project will be documented in this file. +This project adheres to [Semantic Versioning](http://semver.org/). + +## [0.?.?] - 2020-07-03 +- Added coords from pysat.utils + +## [0.0.3] - 2020-06-15 +- pypi compatibility + +## [0.0.2] - 2020-05-13 +- zenodo link + +## [0.0.1] - 2020-05-13 +- Alpha release From 74f71496f57af900fbd273483d379b799195065a Mon Sep 17 00:00:00 2001 From: jklenzing Date: Fri, 3 Jul 2020 16:04:33 -0400 Subject: [PATCH 039/231] STY: flake8 updates --- pysatMadrigal/coords.py | 4 +-- pysatMadrigal/tests/test_coords.py | 52 +++++++++++++++--------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/pysatMadrigal/coords.py b/pysatMadrigal/coords.py index a8e07e0..ff2a0db 100644 --- a/pysatMadrigal/coords.py +++ b/pysatMadrigal/coords.py @@ -63,8 +63,8 @@ def geodetic_to_geocentric(lat_in, lon_in=None, inverse=False): lat_out = np.degrees(np.arctan(rad_ratio_sq * tan_in)) # Calculate the Earth radius at this latitude - rad_earth = rad_eq / np.sqrt(1.0 + eprime_sq * - np.sin(np.radians(lat_out))**2) + rad_earth = rad_eq / np.sqrt(1.0 + eprime_sq + * np.sin(np.radians(lat_out))**2) # longitude remains unchanged lon_out = lon_in diff --git a/pysatMadrigal/tests/test_coords.py b/pysatMadrigal/tests/test_coords.py index b9aa91a..0fe29c5 100644 --- a/pysatMadrigal/tests/test_coords.py +++ b/pysatMadrigal/tests/test_coords.py @@ -31,7 +31,7 @@ def test_geodetic_to_geocentric_mult(): """Test array conversion from geodetic to geocentric coordinates""" arr = np.ones(shape=(10,), dtype=float) - lat, lon, rad = coords.geodetic_to_geocentric(45.0*arr, lon_in=8.0*arr) + lat, lon, rad = coords.geodetic_to_geocentric(45.0 * arr, lon_in=8.0 * arr) assert lat.shape == arr.shape assert lon.shape == arr.shape @@ -45,7 +45,7 @@ def test_geocentric_to_geodetic_mult(): """Test array conversion from geocentric to geodetic coordinates""" arr = np.ones(shape=(10,), dtype=float) - lat, lon, rad = coords.geodetic_to_geocentric(45.0*arr, lon_in=8.0*arr, + lat, lon, rad = coords.geodetic_to_geocentric(45.0 * arr, lon_in=8.0 * arr, inverse=True) assert lat.shape == arr.shape @@ -65,8 +65,8 @@ def test_geodetic_to_geocentric_inverse(): inverse=False) lat3, lon3, rad_e = coords.geodetic_to_geocentric(lat2, lon_in=lon2, inverse=True) - assert abs(lon1-lon3) < 1.0e-6 - assert abs(lat1-lat3) < 1.0e-6 + assert abs(lon1 - lon3) < 1.0e-6 + assert abs(lat1 - lat3) < 1.0e-6 ############################################### @@ -104,8 +104,8 @@ def test_geodetic_to_geocentric_horz_mult(): arr = np.ones(shape=(10,), dtype=float) lat, lon, rad, az, el = \ - coords.geodetic_to_geocentric_horizontal(45.0*arr, 8.0*arr, - 52.0*arr, 63.0*arr) + coords.geodetic_to_geocentric_horizontal(45.0 * arr, 8.0 * arr, + 52.0 * arr, 63.0 * arr) assert lat.shape == arr.shape assert lon.shape == arr.shape @@ -124,8 +124,8 @@ def test_geocentric_to_geodetic_horz_mult(): arr = np.ones(shape=(10,), dtype=float) lat, lon, rad, az, el = \ - coords.geodetic_to_geocentric_horizontal(45.0*arr, 8.0*arr, - 52.0*arr, 63.0*arr, + coords.geodetic_to_geocentric_horizontal(45.0 * arr, 8.0 * arr, + 52.0 * arr, 63.0 * arr, inverse=True) assert lat.shape == arr.shape @@ -156,10 +156,10 @@ def test_geodetic_to_geocentric_horizontal_inverse(): coords.geodetic_to_geocentric_horizontal(lat2, lon2, az2, el2, inverse=True) - assert abs(lon1-lon3) < 1.0e-6 - assert abs(lat1-lat3) < 1.0e-6 - assert abs(az1-az3) < 1.0e-6 - assert abs(el1-el3) < 1.0e-6 + assert abs(lon1 - lon3) < 1.0e-6 + assert abs(lat1 - lat3) < 1.0e-6 + assert abs(az1 - az3) < 1.0e-6 + assert abs(el1 - el3) < 1.0e-6 #################################### @@ -190,7 +190,7 @@ def test_spherical_to_cartesian_mult(): """Test array conversion from spherical to cartesian coordinates""" arr = np.ones(shape=(10,), dtype=float) - x, y, z = coords.spherical_to_cartesian(45.0*arr, 30.0*arr, arr) + x, y, z = coords.spherical_to_cartesian(45.0 * arr, 30.0 * arr, arr) assert x.shape == arr.shape assert y.shape == arr.shape @@ -204,7 +204,7 @@ def test_cartesian_to_spherical_mult(): arr = np.ones(shape=(10,), dtype=float) x = 0.6123724356957946 - az, el, r = coords.spherical_to_cartesian(x*arr, x*arr, 0.5*arr, + az, el, r = coords.spherical_to_cartesian(x * arr, x * arr, 0.5 * arr, inverse=True) assert az.shape == arr.shape @@ -226,9 +226,9 @@ def test_spherical_to_cartesian_inverse(): x2, y2, z2 = coords.spherical_to_cartesian(az, el, r, inverse=False) - assert abs(x1-x2) < 1.0e-6 - assert abs(y1-y2) < 1.0e-6 - assert abs(z1-z2) < 1.0e-6 + assert abs(x1 - x2) < 1.0e-6 + assert abs(y1 - y2) < 1.0e-6 + assert abs(z1 - z2) < 1.0e-6 ######################################## @@ -261,9 +261,9 @@ def test_global_to_local_cartesian_mult(): """Test array conversion from global to local cartesian coordinates""" arr = np.ones(shape=(10,), dtype=float) - x, y, z = coords.global_to_local_cartesian(7000.0*arr, 8000.0*arr, - 9000.0*arr, 37.5*arr, - 289.0*arr, 6380.0*arr) + x, y, z = coords.global_to_local_cartesian(7000.0 * arr, 8000.0 * arr, + 9000.0 * arr, 37.5 * arr, + 289.0 * arr, 6380.0 * arr) assert x.shape == arr.shape assert y.shape == arr.shape @@ -277,9 +277,9 @@ def test_local_cartesian_to_global_mult(): """Test array conversion from local cartesian to global coordinates""" arr = np.ones(shape=(10,), dtype=float) - x, y, z = coords.global_to_local_cartesian(7000.0*arr, 8000.0*arr, - 9000.0*arr, 37.5*arr, - 289.0*arr, 6380.0*arr, + x, y, z = coords.global_to_local_cartesian(7000.0 * arr, 8000.0 * arr, + 9000.0 * arr, 37.5 * arr, + 289.0 * arr, 6380.0 * arr, inverse=True) assert x.shape == arr.shape @@ -305,9 +305,9 @@ def test_global_to_local_cartesian_inverse(): x3, y3, z3 = coords.global_to_local_cartesian(x2, y2, z2, lat, lon, rad, inverse=True) - assert abs(x1-x3) < 1.0e-6 - assert abs(y1-y3) < 1.0e-6 - assert abs(z1-z3) < 1.0e-6 + assert abs(x1 - x3) < 1.0e-6 + assert abs(y1 - y3) < 1.0e-6 + assert abs(z1 - z3) < 1.0e-6 ######################################## From e442808924cdfca0d8dc95d732a180c7ff5fe873 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Mon, 6 Jul 2020 11:26:50 -0400 Subject: [PATCH 040/231] STY: put coords under utils --- pysatMadrigal/__init__.py | 2 +- pysatMadrigal/tests/{test_coords.py => test_utils_coords.py} | 2 +- pysatMadrigal/utils/__init__.py | 1 + pysatMadrigal/{ => utils}/coords.py | 0 4 files changed, 3 insertions(+), 2 deletions(-) rename pysatMadrigal/tests/{test_coords.py => test_utils_coords.py} (99%) create mode 100644 pysatMadrigal/utils/__init__.py rename pysatMadrigal/{ => utils}/coords.py (100%) diff --git a/pysatMadrigal/__init__.py b/pysatMadrigal/__init__.py index 9346093..c1a628f 100644 --- a/pysatMadrigal/__init__.py +++ b/pysatMadrigal/__init__.py @@ -1,2 +1,2 @@ -from pysatMadrigal import coords # noqa F401 from pysatMadrigal import instruments # noqa F401 +from pysatMadrigal import utils # noqa F401 diff --git a/pysatMadrigal/tests/test_coords.py b/pysatMadrigal/tests/test_utils_coords.py similarity index 99% rename from pysatMadrigal/tests/test_coords.py rename to pysatMadrigal/tests/test_utils_coords.py index 0fe29c5..61b4934 100644 --- a/pysatMadrigal/tests/test_coords.py +++ b/pysatMadrigal/tests/test_utils_coords.py @@ -3,7 +3,7 @@ """ import numpy as np -from pysatMadrigal import coords +from pysatMadrigal.utils import coords def test_geodetic_to_geocentric_single(): diff --git a/pysatMadrigal/utils/__init__.py b/pysatMadrigal/utils/__init__.py new file mode 100644 index 0000000..0854b8d --- /dev/null +++ b/pysatMadrigal/utils/__init__.py @@ -0,0 +1 @@ +from pysatMadrigal.utils import coords # noqa F401 diff --git a/pysatMadrigal/coords.py b/pysatMadrigal/utils/coords.py similarity index 100% rename from pysatMadrigal/coords.py rename to pysatMadrigal/utils/coords.py From 25ad97b7c599b7fd9f796c8435b39ffa0a270f54 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Mon, 6 Jul 2020 19:35:27 -0400 Subject: [PATCH 041/231] TST: update max-line-length --- setup.cfg | 3 +++ 1 file changed, 3 insertions(+) diff --git a/setup.cfg b/setup.cfg index 22d9e74..3e786fa 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,3 +1,6 @@ +[flake8] +max-line-length = 80 + [tool:pytest] markers = all_inst: tests all instruments From 49e460abc3585da1b1804e37d31fb9aede686e72 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Mon, 6 Jul 2020 19:35:38 -0400 Subject: [PATCH 042/231] TST: restructure coords tests --- pysatMadrigal/tests/test_utils_coords.py | 731 +++++++++++++---------- 1 file changed, 411 insertions(+), 320 deletions(-) diff --git a/pysatMadrigal/tests/test_utils_coords.py b/pysatMadrigal/tests/test_utils_coords.py index 61b4934..3be51f5 100644 --- a/pysatMadrigal/tests/test_utils_coords.py +++ b/pysatMadrigal/tests/test_utils_coords.py @@ -6,347 +6,438 @@ from pysatMadrigal.utils import coords -def test_geodetic_to_geocentric_single(): - """Test conversion from geodetic to geocentric coordinates""" +class TestGeodeticGeocentric(): - lat, lon, rad = coords.geodetic_to_geocentric(45.0, lon_in=8.0) + def setup(self): + """Runs before every method to create a clean testing setup.""" + arr = np.ones(shape=(10,), dtype=float) + self.val = {'lat': 45.0, 'lon': 8.0, 'az': 52.0, 'el': 63.0} + self.arr = {} + for key in self.val.keys(): + self.arr[key] = self.val[key] * arr - assert abs(lat - 44.807576784018046) < 1.0e-6 - assert abs(lon - 8.0) < 1.0e-6 - assert abs(rad - 6367.489543863465) < 1.0e-6 + def teardown(self): + """Runs after every method to clean up previous testing.""" + del self.val, self.arr, + def test_geodetic_to_geocentric_single(self): + """Test conversion from geodetic to geocentric coordinates""" -def test_geocentric_to_geodetic_single(): - """Test conversion from geocentric to geodetic coordinates""" + lat, lon, rad = coords.geodetic_to_geocentric(self.val['lat'], + lon_in=self.val['lon']) - lat, lon, rad = coords.geodetic_to_geocentric(45.0, lon_in=8.0, - inverse=True) - - assert abs(lat - 45.192423215981954) < 1.0e-6 - assert abs(lon - 8.0) < 1.0e-6 - assert abs(rad - 6367.345908499981) < 1.0e-6 - - -def test_geodetic_to_geocentric_mult(): - """Test array conversion from geodetic to geocentric coordinates""" - - arr = np.ones(shape=(10,), dtype=float) - lat, lon, rad = coords.geodetic_to_geocentric(45.0 * arr, lon_in=8.0 * arr) - - assert lat.shape == arr.shape - assert lon.shape == arr.shape - assert rad.shape == arr.shape - assert abs(lat - 44.807576784018046).max() < 1.0e-6 - assert abs(lon - 8.0).max() < 1.0e-6 - assert abs(rad - 6367.489543863465).max() < 1.0e-6 - - -def test_geocentric_to_geodetic_mult(): - """Test array conversion from geocentric to geodetic coordinates""" - - arr = np.ones(shape=(10,), dtype=float) - lat, lon, rad = coords.geodetic_to_geocentric(45.0 * arr, lon_in=8.0 * arr, - inverse=True) + assert abs(lat - 44.807576784018046) < 1.0e-6 + assert abs(lon - 8.0) < 1.0e-6 + assert abs(rad - 6367.489543863465) < 1.0e-6 - assert lat.shape == arr.shape - assert lon.shape == arr.shape - assert rad.shape == arr.shape - assert abs(lat - 45.192423215981954).max() < 1.0e-6 - assert abs(lon - 8.0).max() < 1.0e-6 - assert abs(rad - 6367.345908499981).max() < 1.0e-6 + def test_geocentric_to_geodetic_single(self): + """Test conversion from geocentric to geodetic coordinates""" - -def test_geodetic_to_geocentric_inverse(): - """Tests the reversibility of geodetic to geocentric conversions""" - - lat1 = 37.5 - lon1 = 117.3 - lat2, lon2, rad_e = coords.geodetic_to_geocentric(lat1, lon_in=lon1, - inverse=False) - lat3, lon3, rad_e = coords.geodetic_to_geocentric(lat2, lon_in=lon2, + lat, lon, rad = coords.geodetic_to_geocentric(self.val['lat'], + lon_in=self.val['lon'], inverse=True) - assert abs(lon1 - lon3) < 1.0e-6 - assert abs(lat1 - lat3) < 1.0e-6 - - -############################################### -# Geodetic / Geocentric Horizontal conversions - -def test_geodetic_to_geocentric_horz_single(): - """Test conversion from geodetic to geocentric coordinates""" - - lat, lon, rad, az, el = \ - coords.geodetic_to_geocentric_horizontal(45.0, 8.0, 52.0, 63.0) - - assert abs(lat - 44.807576784018046) < 1.0e-6 - assert abs(lon - 8.0) < 1.0e-6 - assert abs(rad - 6367.489543863465) < 1.0e-6 - assert abs(az - 51.70376774257361) < 1.0e-6 - assert abs(el - 62.8811403841008) < 1.0e-6 - - -def test_geocentric_to_geodetic_horz_single(): - """Test conversion from geocentric to geodetic coordinates""" - - lat, lon, rad, az, el = \ - coords.geodetic_to_geocentric_horizontal(45.0, 8.0, 52.0, 63.0, - inverse=True) - - assert abs(lat - 45.192423215981954) < 1.0e-6 - assert abs(lon - 8.0) < 1.0e-6 - assert abs(rad - 6367.345908499981) < 1.0e-6 - assert abs(az - 52.29896101551479) < 1.0e-6 - assert abs(el - 63.118072033649916) < 1.0e-6 - - -def test_geodetic_to_geocentric_horz_mult(): - """Test array conversion from geodetic to geocentric coordinates""" - - arr = np.ones(shape=(10,), dtype=float) - lat, lon, rad, az, el = \ - coords.geodetic_to_geocentric_horizontal(45.0 * arr, 8.0 * arr, - 52.0 * arr, 63.0 * arr) - - assert lat.shape == arr.shape - assert lon.shape == arr.shape - assert rad.shape == arr.shape - assert az.shape == arr.shape - assert el.shape == arr.shape - assert abs(lat - 44.807576784018046).max() < 1.0e-6 - assert abs(lon - 8.0).max() < 1.0e-6 - assert abs(rad - 6367.489543863465).max() < 1.0e-6 - assert abs(az - 51.70376774257361).max() < 1.0e-6 - assert abs(el - 62.8811403841008).max() < 1.0e-6 - - -def test_geocentric_to_geodetic_horz_mult(): - """Test array conversion from geocentric to geodetic coordinates""" - - arr = np.ones(shape=(10,), dtype=float) - lat, lon, rad, az, el = \ - coords.geodetic_to_geocentric_horizontal(45.0 * arr, 8.0 * arr, - 52.0 * arr, 63.0 * arr, - inverse=True) - - assert lat.shape == arr.shape - assert lon.shape == arr.shape - assert rad.shape == arr.shape - assert az.shape == arr.shape - assert el.shape == arr.shape - assert abs(lat - 45.192423215981954).max() < 1.0e-6 - assert abs(lon - 8.0).max() < 1.0e-6 - assert abs(rad - 6367.345908499981).max() < 1.0e-6 - assert abs(az - 52.29896101551479).max() < 1.0e-6 - assert abs(el - 63.118072033649916).max() < 1.0e-6 - - -def test_geodetic_to_geocentric_horizontal_inverse(): - """Tests the reversibility of geodetic to geocentric horiz conversions - - Note: inverse of az and el angles currently non-functional""" - - lat1 = -17.5 - lon1 = 187.3 - az1 = 52.0 - el1 = 63.0 - lat2, lon2, rad_e, az2, el2 = \ - coords.geodetic_to_geocentric_horizontal(lat1, lon1, az1, el1, - inverse=False) - lat3, lon3, rad_e, az3, el3 = \ - coords.geodetic_to_geocentric_horizontal(lat2, lon2, az2, el2, - inverse=True) - - assert abs(lon1 - lon3) < 1.0e-6 - assert abs(lat1 - lat3) < 1.0e-6 - assert abs(az1 - az3) < 1.0e-6 - assert abs(el1 - el3) < 1.0e-6 - - -#################################### -# Spherical / Cartesian conversions - -def test_spherical_to_cartesian_single(): - """Test conversion from spherical to cartesian coordinates""" - - x, y, z = coords.spherical_to_cartesian(45.0, 30.0, 1.0) - - assert abs(x - y) < 1.0e-6 - assert abs(z - 0.5) < 1.0e-6 + assert abs(lat - 45.192423215981954) < 1.0e-6 + assert abs(lon - 8.0) < 1.0e-6 + assert abs(rad - 6367.345908499981) < 1.0e-6 -def test_cartesian_to_spherical_single(): - """Test conversion from cartesian to spherical coordinates""" + def test_geodetic_to_geocentric_mult(self): + """Test array conversion from geodetic to geocentric coordinates""" - x = 0.6123724356957946 - az, el, r = coords.spherical_to_cartesian(x, x, 0.5, - inverse=True) + lat, lon, rad = coords.geodetic_to_geocentric(self.arr['lat'], + lon_in=self.arr['lon']) - assert abs(az - 45.0) < 1.0e-6 - assert abs(el - 30.0) < 1.0e-6 - assert abs(r - 1.0) < 1.0e-6 + assert lat.shape == self.arr['lat'].shape + assert lon.shape == self.arr['lat'].shape + assert rad.shape == self.arr['lat'].shape + assert abs(lat - 44.807576784018046).max() < 1.0e-6 + assert abs(lon - 8.0).max() < 1.0e-6 + assert abs(rad - 6367.489543863465).max() < 1.0e-6 + def test_geocentric_to_geodetic_mult(self): + """Test array conversion from geocentric to geodetic coordinates""" -def test_spherical_to_cartesian_mult(): - """Test array conversion from spherical to cartesian coordinates""" - - arr = np.ones(shape=(10,), dtype=float) - x, y, z = coords.spherical_to_cartesian(45.0 * arr, 30.0 * arr, arr) - - assert x.shape == arr.shape - assert y.shape == arr.shape - assert z.shape == arr.shape - assert abs(x - y).max() < 1.0e-6 - assert abs(z - 0.5).max() < 1.0e-6 - - -def test_cartesian_to_spherical_mult(): - """Test array conversion from cartesian to spherical coordinates""" - - arr = np.ones(shape=(10,), dtype=float) - x = 0.6123724356957946 - az, el, r = coords.spherical_to_cartesian(x * arr, x * arr, 0.5 * arr, - inverse=True) + lat, lon, rad = coords.geodetic_to_geocentric(self.arr['lat'], + lon_in=self.arr['lon'], + inverse=True) - assert az.shape == arr.shape - assert el.shape == arr.shape - assert r.shape == arr.shape - assert abs(az - 45.0).max() < 1.0e-6 - assert abs(el - 30.0).max() < 1.0e-6 - assert abs(r - 1.0).max() < 1.0e-6 + assert lat.shape == self.arr['lat'].shape + assert lon.shape == self.arr['lat'].shape + assert rad.shape == self.arr['lat'].shape + assert abs(lat - 45.192423215981954).max() < 1.0e-6 + assert abs(lon - 8.0).max() < 1.0e-6 + assert abs(rad - 6367.345908499981).max() < 1.0e-6 + + def test_geodetic_to_geocentric_inverse(self): + """Tests the reversibility of geodetic to geocentric conversions""" + + lat1 = 37.5 + lon1 = 117.3 + lat2, lon2, rad_e = coords.geodetic_to_geocentric(lat1, lon_in=lon1, + inverse=False) + lat3, lon3, rad_e = coords.geodetic_to_geocentric(lat2, lon_in=lon2, + inverse=True) + assert abs(lon1 - lon3) < 1.0e-6 + assert abs(lat1 - lat3) < 1.0e-6 + + ############################################### + # Geodetic / Geocentric Horizontal conversions + + def test_geodetic_to_geocentric_horz_single(self): + """Test conversion from geodetic to geocentric coordinates""" + + lat, lon, rad, az, el = \ + coords.geodetic_to_geocentric_horizontal(self.val['lat'], + self.val['lon'], + self.val['az'], + self.val['el']) + + assert abs(lat - 44.807576784018046) < 1.0e-6 + assert abs(lon - 8.0) < 1.0e-6 + assert abs(rad - 6367.489543863465) < 1.0e-6 + assert abs(az - 51.70376774257361) < 1.0e-6 + assert abs(el - 62.8811403841008) < 1.0e-6 + + def test_geocentric_to_geodetic_horz_single(self): + """Test conversion from geocentric to geodetic coordinates""" + + lat, lon, rad, az, el = \ + coords.geodetic_to_geocentric_horizontal(self.val['lat'], + self.val['lon'], + self.val['az'], + self.val['el'], + inverse=True) + + assert abs(lat - 45.192423215981954) < 1.0e-6 + assert abs(lon - 8.0) < 1.0e-6 + assert abs(rad - 6367.345908499981) < 1.0e-6 + assert abs(az - 52.29896101551479) < 1.0e-6 + assert abs(el - 63.118072033649916) < 1.0e-6 + + def test_geodetic_to_geocentric_horz_mult(self): + """Test array conversion from geodetic to geocentric coordinates""" + + lat, lon, rad, az, el = \ + coords.geodetic_to_geocentric_horizontal(self.arr['lat'], + self.arr['lon'], + self.arr['az'], + self.arr['el']) + + assert lat.shape == self.arr['lat'].shape + assert lon.shape == self.arr['lat'].shape + assert rad.shape == self.arr['lat'].shape + assert az.shape == self.arr['lat'].shape + assert el.shape == self.arr['lat'].shape + assert abs(lat - 44.807576784018046).max() < 1.0e-6 + assert abs(lon - 8.0).max() < 1.0e-6 + assert abs(rad - 6367.489543863465).max() < 1.0e-6 + assert abs(az - 51.70376774257361).max() < 1.0e-6 + assert abs(el - 62.8811403841008).max() < 1.0e-6 + + def test_geocentric_to_geodetic_horz_mult(self): + """Test array conversion from geocentric to geodetic coordinates""" + + lat, lon, rad, az, el = \ + coords.geodetic_to_geocentric_horizontal(self.arr['lat'], + self.arr['lon'], + self.arr['az'], + self.arr['el'], + inverse=True) + + assert lat.shape == self.arr['lat'].shape + assert lon.shape == self.arr['lat'].shape + assert rad.shape == self.arr['lat'].shape + assert az.shape == self.arr['lat'].shape + assert el.shape == self.arr['lat'].shape + assert abs(lat - 45.192423215981954).max() < 1.0e-6 + assert abs(lon - 8.0).max() < 1.0e-6 + assert abs(rad - 6367.345908499981).max() < 1.0e-6 + assert abs(az - 52.29896101551479).max() < 1.0e-6 + assert abs(el - 63.118072033649916).max() < 1.0e-6 + + def test_geodetic_to_geocentric_horizontal_inverse(self): + """Tests the reversibility of geodetic to geocentric horiz conversions + + Note: inverse of az and el angles currently non-functional""" + + lat1 = -17.5 + lon1 = 187.3 + az1 = 52.0 + el1 = 63.0 + lat2, lon2, rad_e, az2, el2 = \ + coords.geodetic_to_geocentric_horizontal(lat1, lon1, az1, el1, + inverse=False) + lat3, lon3, rad_e, az3, el3 = \ + coords.geodetic_to_geocentric_horizontal(lat2, lon2, az2, el2, + inverse=True) + + assert abs(lon1 - lon3) < 1.0e-6 + assert abs(lat1 - lat3) < 1.0e-6 + assert abs(az1 - az3) < 1.0e-6 + assert abs(el1 - el3) < 1.0e-6 + + +class TestSphereCart(): + + def setup(self): + """Runs before every method to create a clean testing setup.""" + arr = np.ones(shape=(10,), dtype=float) + self.val = {'az': 45.0, 'el': 30.0, 'r': 1.0, + 'x': 0.6123724356957946, 'z': 0.5} + self.arr = {} + for key in self.val.keys(): + self.arr[key] = self.val[key] * arr + + def teardown(self): + """Runs after every method to clean up previous testing.""" + del self.val, self.arr, + + def test_spherical_to_cartesian_single(self): + """Test conversion from spherical to cartesian coordinates""" + + x, y, z = coords.spherical_to_cartesian(self.val['az'], + self.val['el'], + self.val['r']) + + assert abs(x - y) < 1.0e-6 + assert abs(z - 0.5) < 1.0e-6 + + def test_cartesian_to_spherical_single(self): + """Test conversion from cartesian to spherical coordinates""" + + az, el, r = coords.spherical_to_cartesian(self.val['x'], self.val['x'], + self.val['z'], inverse=True) + + assert abs(az - 45.0) < 1.0e-6 + assert abs(el - 30.0) < 1.0e-6 + assert abs(r - 1.0) < 1.0e-6 + + def test_spherical_to_cartesian_mult(self): + """Test array conversion from spherical to cartesian coordinates""" + + x, y, z = coords.spherical_to_cartesian(self.arr['az'], + self.arr['el'], + self.arr['r']) + + assert x.shape == self.arr['x'].shape + assert y.shape == self.arr['x'].shape + assert z.shape == self.arr['x'].shape + assert abs(x - y).max() < 1.0e-6 + assert abs(z - 0.5).max() < 1.0e-6 + + def test_cartesian_to_spherical_mult(self): + """Test array conversion from cartesian to spherical coordinates""" + + az, el, r = coords.spherical_to_cartesian(self.arr['x'], + self.arr['x'], + self.arr['z'], + inverse=True) + assert az.shape == self.arr['x'].shape + assert el.shape == self.arr['x'].shape + assert r.shape == self.arr['x'].shape + assert abs(az - 45.0).max() < 1.0e-6 + assert abs(el - 30.0).max() < 1.0e-6 + assert abs(r - 1.0).max() < 1.0e-6 -def test_spherical_to_cartesian_inverse(): - """Tests the reversibility of spherical to cartesian conversions""" + def test_spherical_to_cartesian_inverse(self): + """Tests the reversibility of spherical to cartesian conversions""" - x1 = 3000.0 - y1 = 2000.0 - z1 = 2500.0 - az, el, r = coords.spherical_to_cartesian(x1, y1, z1, - inverse=True) - x2, y2, z2 = coords.spherical_to_cartesian(az, el, r, - inverse=False) + x1 = 3000.0 + y1 = 2000.0 + z1 = 2500.0 + az, el, r = coords.spherical_to_cartesian(x1, y1, z1, + inverse=True) + x2, y2, z2 = coords.spherical_to_cartesian(az, el, r, + inverse=False) - assert abs(x1 - x2) < 1.0e-6 - assert abs(y1 - y2) < 1.0e-6 - assert abs(z1 - z2) < 1.0e-6 + assert abs(x1 - x2) < 1.0e-6 + assert abs(y1 - y2) < 1.0e-6 + assert abs(z1 - z2) < 1.0e-6 ######################################## # Global / Local Cartesian conversions -def test_global_to_local_cartesian_single(): - """Test conversion from global to local cartesian coordinates""" - - x, y, z = coords.global_to_local_cartesian(7000.0, 8000.0, 9000.0, - 37.5, 289.0, 6380.0) - - assert abs(x + 9223.175264852474) < 1.0e-6 - assert abs(y + 2239.835278362686) < 1.0e-6 - assert abs(z - 11323.126851088331) < 1.0e-6 - - -def test_local_cartesian_to_global_single(): - """Test conversion from local cartesian to global coordinates""" - - x, y, z = coords.global_to_local_cartesian(7000.0, 8000.0, 9000.0, - 37.5, 289.0, 6380.0, - inverse=True) - - assert abs(x + 5709.804676635975) < 1.0e-6 - assert abs(y + 4918.397556010223) < 1.0e-6 - assert abs(z - 15709.577500484005) < 1.0e-6 - - -def test_global_to_local_cartesian_mult(): - """Test array conversion from global to local cartesian coordinates""" - - arr = np.ones(shape=(10,), dtype=float) - x, y, z = coords.global_to_local_cartesian(7000.0 * arr, 8000.0 * arr, - 9000.0 * arr, 37.5 * arr, - 289.0 * arr, 6380.0 * arr) - - assert x.shape == arr.shape - assert y.shape == arr.shape - assert z.shape == arr.shape - assert abs(x + 9223.175264852474).max() < 1.0e-6 - assert abs(y + 2239.835278362686).max() < 1.0e-6 - assert abs(z - 11323.126851088331).max() < 1.0e-6 - - -def test_local_cartesian_to_global_mult(): - """Test array conversion from local cartesian to global coordinates""" - - arr = np.ones(shape=(10,), dtype=float) - x, y, z = coords.global_to_local_cartesian(7000.0 * arr, 8000.0 * arr, - 9000.0 * arr, 37.5 * arr, - 289.0 * arr, 6380.0 * arr, - inverse=True) - - assert x.shape == arr.shape - assert y.shape == arr.shape - assert z.shape == arr.shape - assert abs(x + 5709.804676635975).max() < 1.0e-6 - assert abs(y + 4918.397556010223).max() < 1.0e-6 - assert abs(z - 15709.577500484005).max() < 1.0e-6 - - -def test_global_to_local_cartesian_inverse(): - """Tests the reversibility of the global to loc cartesian transform""" - - x1 = 7000.0 - y1 = 8000.0 - z1 = 9500.0 - lat = 37.5 - lon = 289.0 - rad = 6380.0 - x2, y2, z2 = coords.global_to_local_cartesian(x1, y1, z1, - lat, lon, rad, - inverse=False) - x3, y3, z3 = coords.global_to_local_cartesian(x2, y2, z2, - lat, lon, rad, - inverse=True) - assert abs(x1 - x3) < 1.0e-6 - assert abs(y1 - y3) < 1.0e-6 - assert abs(z1 - z3) < 1.0e-6 - - -######################################## -# Local Horizontal / Global conversions - -def test_local_horizontal_to_global_geo_geodetic(): - """Tests the conversion of the local horizontal to global geo""" - - az = 30.0 - el = 45.0 - dist = 1000.0 - lat0 = 45.0 - lon0 = 0.0 - alt0 = 400.0 - - lat, lon, rad = \ - coords.local_horizontal_to_global_geo(az, el, dist, - lat0, lon0, alt0) - - assert abs(lat - 50.419037572472625) < 1.0e-6 - assert abs(lon + 7.694008395350697) < 1.0e-6 - assert abs(rad - 7172.15486518744) < 1.0e-6 - - -def test_local_horizontal_to_global_geo(): - """Tests the conversion of the local horizontal to global geo""" - - az = 30.0 - el = 45.0 - dist = 1000.0 - lat0 = 45.0 - lon0 = 0.0 - alt0 = 400.0 - - lat, lon, rad = \ - coords.local_horizontal_to_global_geo(az, el, dist, - lat0, lon0, alt0, - geodetic=False) - - assert abs(lat - 50.414315865044202) < 1.0e-6 - assert abs(lon + 7.6855551809119502) < 1.0e-6 - assert abs(rad - 7185.6983665760772) < 1.0e-6 +class TestGlobalLocal(): + + def setup(self): + """Runs before every method to create a clean testing setup.""" + arr = np.ones(shape=(10,), dtype=float) + self.val = {'x': 7000.0, 'y': 8000.0, 'z': 9000.0, + 'lat': 37.5, 'lon': 289.0, 'rad': 6380.0} + self.arr = {} + for key in self.val.keys(): + self.arr[key] = self.val[key] * arr + + def teardown(self): + """Runs after every method to clean up previous testing.""" + del self.val, self.arr, + + def test_global_to_local_cartesian_single(self): + """Test conversion from global to local cartesian coordinates""" + + x, y, z = coords.global_to_local_cartesian(self.val['x'], + self.val['y'], + self.val['z'], + self.val['lat'], + self.val['lon'], + self.val['rad']) + + assert abs(x + 9223.175264852474) < 1.0e-6 + assert abs(y + 2239.835278362686) < 1.0e-6 + assert abs(z - 11323.126851088331) < 1.0e-6 + + def test_local_cartesian_to_global_single(self): + """Test conversion from local cartesian to global coordinates""" + + x, y, z = coords.global_to_local_cartesian(self.val['x'], + self.val['y'], + self.val['z'], + self.val['lat'], + self.val['lon'], + self.val['rad'], + inverse=True) + + assert abs(x + 5709.804676635975) < 1.0e-6 + assert abs(y + 4918.397556010223) < 1.0e-6 + assert abs(z - 15709.577500484005) < 1.0e-6 + + def test_global_to_local_cartesian_mult(self): + """Test array conversion from global to local cartesian coordinates""" + + x, y, z = coords.global_to_local_cartesian(self.arr['x'], + self.arr['y'], + self.arr['z'], + self.arr['lat'], + self.arr['lon'], + self.arr['rad']) + + assert x.shape == self.arr['x'].shape + assert y.shape == self.arr['x'].shape + assert z.shape == self.arr['x'].shape + assert abs(x + 9223.175264852474).max() < 1.0e-6 + assert abs(y + 2239.835278362686).max() < 1.0e-6 + assert abs(z - 11323.126851088331).max() < 1.0e-6 + + def test_local_cartesian_to_global_mult(self): + """Test array conversion from local cartesian to global coordinates""" + + x, y, z = coords.global_to_local_cartesian(self.arr['x'], + self.arr['y'], + self.arr['z'], + self.arr['lat'], + self.arr['lon'], + self.arr['rad'], + inverse=True) + + assert x.shape == self.arr['x'].shape + assert y.shape == self.arr['x'].shape + assert z.shape == self.arr['x'].shape + assert abs(x + 5709.804676635975).max() < 1.0e-6 + assert abs(y + 4918.397556010223).max() < 1.0e-6 + assert abs(z - 15709.577500484005).max() < 1.0e-6 + + def test_global_to_local_cartesian_inverse(self): + """Tests the reversibility of the global to loc cartesian transform""" + + x2, y2, z2 = coords.global_to_local_cartesian(self.val['x'], + self.val['y'], + self.val['z'], + self.val['lat'], + self.val['lon'], + self.val['rad'], + inverse=False) + x3, y3, z3 = coords.global_to_local_cartesian(x2, y2, z2, + self.val['lat'], + self.val['lon'], + self.val['rad'], + inverse=True) + assert abs(self.val['x'] - x3) < 1.0e-6 + assert abs(self.val['y'] - y3) < 1.0e-6 + assert abs(self.val['z'] - z3) < 1.0e-6 + + +class TestLocalHorzGlobal(): + """Tests for local horizontal to global geo and back """ + + def setup(self): + """Runs before every method to create a clean testing setup.""" + arr = np.ones(shape=(10,), dtype=float) + self.val = {'az': 30.0, 'el': 45.0, 'dist': 1000.0, + 'lat': 45.0, 'lon': 0.0, 'alt': 400.0} + self.arr = {} + for key in self.val.keys(): + self.arr[key] = self.val[key] * arr + + def teardown(self): + """Runs after every method to clean up previous testing.""" + del self.val, self.arr, + + def test_local_horizontal_to_global_geo_geodetic(self): + """Tests the conversion of the local horizontal to global geo""" + + lat, lon, rad = \ + coords.local_horizontal_to_global_geo(self.val['az'], + self.val['el'], + self.val['dist'], + self.val['lat'], + self.val['lon'], + self.val['alt']) + + assert abs(lat - 50.419037572472625) < 1.0e-6 + assert abs(lon + 7.694008395350697) < 1.0e-6 + assert abs(rad - 7172.15486518744) < 1.0e-6 + + def test_local_horizontal_to_global_geo(self): + """Tests the conversion of the local horizontal to global geo""" + + lat, lon, rad = \ + coords.local_horizontal_to_global_geo(self.val['az'], + self.val['el'], + self.val['dist'], + self.val['lat'], + self.val['lon'], + self.val['alt'], + geodetic=False) + + assert abs(lat - 50.414315865044202) < 1.0e-6 + assert abs(lon + 7.6855551809119502) < 1.0e-6 + assert abs(rad - 7185.6983665760772) < 1.0e-6 + + def test_local_horizontal_to_global_geo_geodetic_mult(self): + """Tests the conversion of the local horizontal to global geo""" + + lat, lon, rad = \ + coords.local_horizontal_to_global_geo(self.arr['az'], + self.arr['el'], + self.arr['dist'], + self.arr['lat'], + self.arr['lon'], + self.arr['alt']) + + assert lat.shape == self.arr['lat'].shape + assert lon.shape == self.arr['lat'].shape + assert rad.shape == self.arr['lat'].shape + assert abs(lat - 50.419037572472625).max() < 1.0e-6 + assert abs(lon + 7.694008395350697).max() < 1.0e-6 + assert abs(rad - 7172.15486518744).max() < 1.0e-6 + + def test_local_horizontal_to_global_geo_mult(self): + """Tests the conversion of the local horizontal to global geo""" + + lat, lon, rad = \ + coords.local_horizontal_to_global_geo(self.arr['az'], + self.arr['el'], + self.arr['dist'], + self.arr['lat'], + self.arr['lon'], + self.arr['alt'], + geodetic=False) + + assert lat.shape == self.arr['lat'].shape + assert lon.shape == self.arr['lat'].shape + assert rad.shape == self.arr['lat'].shape + assert abs(lat - 50.414315865044202).max() < 1.0e-6 + assert abs(lon + 7.6855551809119502).max() < 1.0e-6 + assert abs(rad - 7185.6983665760772).max() < 1.0e-6 From b12b90dc8a47780505e74dee08b7449e11025001 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Mon, 13 Jul 2020 10:54:09 -0400 Subject: [PATCH 043/231] BUG: downstream changes Fixed downstream use of `coords` to use local coordinate routine. Also fixed import order. --- pysatMadrigal/instruments/jro_isr.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index b92d13a..dd0ca6d 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -35,13 +35,14 @@ from __future__ import absolute_import import datetime as dt import functools +import logging import numpy as np -from pysatMadrigal.instruments.methods import madrigal as mad_meth from pysat.instruments.methods import general as mm_gen -from pysat.utils import coords -import logging +from pysatMadrigal.instruments.methods import madrigal as mad_meth +from pysatMadrigal.utils import coords + logger = logging.getLogger(__name__) From 40fce9511c48c9d8efba9334653af1a9b78d1439 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Mon, 13 Jul 2020 15:52:14 -0400 Subject: [PATCH 044/231] TST: modernize geod to geoc tests --- pysatMadrigal/tests/test_utils_coords.py | 95 +++++++++--------------- 1 file changed, 35 insertions(+), 60 deletions(-) diff --git a/pysatMadrigal/tests/test_utils_coords.py b/pysatMadrigal/tests/test_utils_coords.py index 3be51f5..6855246 100644 --- a/pysatMadrigal/tests/test_utils_coords.py +++ b/pysatMadrigal/tests/test_utils_coords.py @@ -3,9 +3,44 @@ """ import numpy as np +import pytest + from pysatMadrigal.utils import coords +@pytest.mark.parametrize("Nvals", [1, 10]) +@pytest.mark.parametrize("inverse,input,target", + [(False, [45.0, 8.0], + [44.8075768, 8.0, 6367.48954386]), + (True, [45.0, 8.0], + [45.1924232, 8.0, 6367.3459085])]) +def test_geodetic_to_geocentric_multi(Nvals, input, inverse, target): + """Test array conversion from geodetic to geocentric coordinates""" + + lat_in = input[0] * np.ones(shape=(Nvals,), dtype=float) + lon_in = input[1] * np.ones(shape=(Nvals,), dtype=float) + + output = coords.geodetic_to_geocentric(lat_in, lon_in=lon_in, + inverse=inverse) + + for i in range(3): + assert output[i].shape == lat_in.shape + assert abs(output[i] - target[i]).max() < 1.0e-6 + + +def test_geodetic_to_geocentric_and_back(): + """Tests the reversibility of geodetic to geocentric conversions""" + + input = [35.0, 17.0] + temp_vals = coords.geodetic_to_geocentric(input[0], lon_in=input[1], + inverse=False) + output = coords.geodetic_to_geocentric(temp_vals[0], + lon_in=temp_vals[1], + inverse=True) + for i in range(2): + assert abs(input[i] - output[i]) < 1.0e-6 + + class TestGeodeticGeocentric(): def setup(self): @@ -20,66 +55,6 @@ def teardown(self): """Runs after every method to clean up previous testing.""" del self.val, self.arr, - def test_geodetic_to_geocentric_single(self): - """Test conversion from geodetic to geocentric coordinates""" - - lat, lon, rad = coords.geodetic_to_geocentric(self.val['lat'], - lon_in=self.val['lon']) - - assert abs(lat - 44.807576784018046) < 1.0e-6 - assert abs(lon - 8.0) < 1.0e-6 - assert abs(rad - 6367.489543863465) < 1.0e-6 - - def test_geocentric_to_geodetic_single(self): - """Test conversion from geocentric to geodetic coordinates""" - - lat, lon, rad = coords.geodetic_to_geocentric(self.val['lat'], - lon_in=self.val['lon'], - inverse=True) - - assert abs(lat - 45.192423215981954) < 1.0e-6 - assert abs(lon - 8.0) < 1.0e-6 - assert abs(rad - 6367.345908499981) < 1.0e-6 - - def test_geodetic_to_geocentric_mult(self): - """Test array conversion from geodetic to geocentric coordinates""" - - lat, lon, rad = coords.geodetic_to_geocentric(self.arr['lat'], - lon_in=self.arr['lon']) - - assert lat.shape == self.arr['lat'].shape - assert lon.shape == self.arr['lat'].shape - assert rad.shape == self.arr['lat'].shape - assert abs(lat - 44.807576784018046).max() < 1.0e-6 - assert abs(lon - 8.0).max() < 1.0e-6 - assert abs(rad - 6367.489543863465).max() < 1.0e-6 - - def test_geocentric_to_geodetic_mult(self): - """Test array conversion from geocentric to geodetic coordinates""" - - lat, lon, rad = coords.geodetic_to_geocentric(self.arr['lat'], - lon_in=self.arr['lon'], - inverse=True) - - assert lat.shape == self.arr['lat'].shape - assert lon.shape == self.arr['lat'].shape - assert rad.shape == self.arr['lat'].shape - assert abs(lat - 45.192423215981954).max() < 1.0e-6 - assert abs(lon - 8.0).max() < 1.0e-6 - assert abs(rad - 6367.345908499981).max() < 1.0e-6 - - def test_geodetic_to_geocentric_inverse(self): - """Tests the reversibility of geodetic to geocentric conversions""" - - lat1 = 37.5 - lon1 = 117.3 - lat2, lon2, rad_e = coords.geodetic_to_geocentric(lat1, lon_in=lon1, - inverse=False) - lat3, lon3, rad_e = coords.geodetic_to_geocentric(lat2, lon_in=lon2, - inverse=True) - assert abs(lon1 - lon3) < 1.0e-6 - assert abs(lat1 - lat3) < 1.0e-6 - ############################################### # Geodetic / Geocentric Horizontal conversions From 07709ec1e3dabe7930924c9089afc15bbae8f260 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Wed, 22 Jul 2020 13:20:41 -0400 Subject: [PATCH 045/231] TST: skip remote_file_list tests for now --- pysatMadrigal/tests/test_instruments.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pysatMadrigal/tests/test_instruments.py b/pysatMadrigal/tests/test_instruments.py index 428a645..f9048df 100644 --- a/pysatMadrigal/tests/test_instruments.py +++ b/pysatMadrigal/tests/test_instruments.py @@ -26,6 +26,11 @@ mark = pytest.mark.parametrize("inst", instruments['no_download']) getattr(InstTestClass, method).pytestmark.append(mark) +# remote_file_list not functional in current code. Disabling for now +if 'test_remote_file_list' in method_list: + mark = pytest.mark.skip(reason="not currently implemented") + getattr(InstTestClass, 'test_remote_file_list').pytestmark.append(mark) + class TestInstruments(InstTestClass): From cb5cd3eb0ef93101202b3473569ec4cfec9c2b9a Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Wed, 22 Jul 2020 13:21:06 -0400 Subject: [PATCH 046/231] STY: consolidate settings in setup.cfg --- .coveragerc | 3 --- .travis.yml | 2 +- setup.cfg | 4 ++++ 3 files changed, 5 insertions(+), 4 deletions(-) delete mode 100644 .coveragerc diff --git a/.coveragerc b/.coveragerc deleted file mode 100644 index 83d685b..0000000 --- a/.coveragerc +++ /dev/null @@ -1,3 +0,0 @@ -[report] -omit = - */instruments/templates/ diff --git a/.travis.yml b/.travis.yml index aaebe06..2b205a8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -53,4 +53,4 @@ script: - pytest -vs --cov=pysatMadrigal/ --flake8 after_success: - - coveralls + - coveralls --rcfile=setup.cfg diff --git a/setup.cfg b/setup.cfg index 22d9e74..d1c319b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,3 +1,7 @@ +[coverage:report] +omit = + */instruments/templates/ + [tool:pytest] markers = all_inst: tests all instruments From 4bbb9c44d64dcd1375b193429f3025e31eb4252a Mon Sep 17 00:00:00 2001 From: jklenzing Date: Thu, 23 Jul 2020 12:01:44 -0400 Subject: [PATCH 047/231] TST: make sure both ndarray and float are tested --- pysatMadrigal/tests/test_utils_coords.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/pysatMadrigal/tests/test_utils_coords.py b/pysatMadrigal/tests/test_utils_coords.py index 6855246..8021c21 100644 --- a/pysatMadrigal/tests/test_utils_coords.py +++ b/pysatMadrigal/tests/test_utils_coords.py @@ -14,18 +14,25 @@ [44.8075768, 8.0, 6367.48954386]), (True, [45.0, 8.0], [45.1924232, 8.0, 6367.3459085])]) -def test_geodetic_to_geocentric_multi(Nvals, input, inverse, target): +def test_geodetic_to_geocentric(Nvals, input, inverse, target): """Test array conversion from geodetic to geocentric coordinates""" - lat_in = input[0] * np.ones(shape=(Nvals,), dtype=float) - lon_in = input[1] * np.ones(shape=(Nvals,), dtype=float) + if Nvals > 1: + # inputs as an ndarray + lat_in = input[0] * np.ones(shape=(Nvals,), dtype=float) + lon_in = input[1] * np.ones(shape=(Nvals,), dtype=float) + else: + # inputs as a float + lat_in = input[0] + lon_in = input[1] output = coords.geodetic_to_geocentric(lat_in, lon_in=lon_in, inverse=inverse) - for i in range(3): - assert output[i].shape == lat_in.shape + for i in range(len(target)): assert abs(output[i] - target[i]).max() < 1.0e-6 + if Nvals > 1: + assert output[i].shape == lat_in.shape def test_geodetic_to_geocentric_and_back(): From fae4012421cd7c59ae2c9ca5102e7761008e48f1 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Thu, 23 Jul 2020 12:20:10 -0400 Subject: [PATCH 048/231] BUG: test for float --- pysatMadrigal/tests/test_utils_coords.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pysatMadrigal/tests/test_utils_coords.py b/pysatMadrigal/tests/test_utils_coords.py index 8021c21..9d1d658 100644 --- a/pysatMadrigal/tests/test_utils_coords.py +++ b/pysatMadrigal/tests/test_utils_coords.py @@ -30,9 +30,11 @@ def test_geodetic_to_geocentric(Nvals, input, inverse, target): inverse=inverse) for i in range(len(target)): - assert abs(output[i] - target[i]).max() < 1.0e-6 if Nvals > 1: + assert abs(output[i] - target[i]).max() < 1.0e-6 assert output[i].shape == lat_in.shape + else: + assert abs(output[i] - target[i]) < 1.0e-6 def test_geodetic_to_geocentric_and_back(): From c90bb2be2fe31e3c40c9c82811212f612f7e7509 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Fri, 24 Jul 2020 20:41:02 -0400 Subject: [PATCH 049/231] DOC: update docstrings --- pysatMadrigal/instruments/dmsp_ivm.py | 72 ++++++++++++--------------- pysatMadrigal/instruments/jro_isr.py | 62 +++++++++-------------- 2 files changed, 57 insertions(+), 77 deletions(-) diff --git a/pysatMadrigal/instruments/dmsp_ivm.py b/pysatMadrigal/instruments/dmsp_ivm.py index 2d7581e..9e27ab2 100644 --- a/pysatMadrigal/instruments/dmsp_ivm.py +++ b/pysatMadrigal/instruments/dmsp_ivm.py @@ -16,24 +16,26 @@ performance flags generated at the Center for Space Sciences at the University of Texas at Dallas. -Parameters +Properties ---------- -platform : string +platform 'dmsp' -name : string +name 'ivm' -tag : string +tag 'utd', None -sat_id : string +sat_id ['f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18'] Example ------- +:: + import pysat dmsp = pysat.Instrument('dmsp', 'ivm', 'utd', 'f15', clean_level='clean') dmsp.download(dt.datetime(2017, 12, 30), dt.datetime(2017, 12, 31), user='Firstname+Lastname', password='email@address.com') - dmsp.load(2017,363) + dmsp.load(2017, 363) Note ---- @@ -41,20 +43,28 @@ Code development supported by NSF grant 1259508 -""" +Custom Functions +---------------- +add_drift_unit_vectors + Add unit vectors for the satellite velocity +add_drifts_polar_cap_x_y + Add polar cap drifts in cartesian coordinates +smooth_ram_drifts + Smooth the ram drifts using a rolling mean +update_DMSP_ephemeris + Updates DMSP instrument data with DMSP ephemeris -from __future__ import print_function -from __future__ import absolute_import +""" import datetime as dt import functools +import logging import numpy as np import pandas as pds from pysatMadrigal.instruments.methods import madrigal as mad_meth from pysat.instruments.methods import general as mm_gen -import logging logger = logging.getLogger(__name__) platform = 'dmsp' @@ -110,12 +120,6 @@ def init(self): self : pysat.Instrument This object - Returns - -------- - Void : (NoneType) - Object modified in place. - - """ logger.info(mad_meth.cedar_rules()) @@ -131,26 +135,20 @@ def download(date_array, tag='', sat_id='', data_path=None, user=None, date_array : array-like list of datetimes to download data for. The sequence of dates need not be contiguous. - tag : string ('') + tag : string Tag identifier used for particular dataset. This input is provided by - pysat. - sat_id : string ('') + pysat. (default='') + sat_id : string Satellite ID string identifier used for particular dataset. This input - is provided by pysat. - data_path : string (None) - Path to directory to download data to. - user : string (None) + is provided by pysat. (default='') + data_path : string + Path to directory to download data to. (default=None) + user : string User string input used for download. Provided by user and passed via - pysat. If an account - is required for dowloads this routine here must error if user not - supplied. - password : string (None) - Password for data download. - - Returns - -------- - Void : (NoneType) - Downloads data to disk. + pysat. If an account is required for dowloads this routine here must + error if user not supplied. (default=None) + password : string + Password for data download. (default=None) Notes ----- @@ -185,15 +183,10 @@ def clean(inst): Parameters ----------- - inst : (pysat.Instrument) + inst : pysat.Instrument Instrument class object, whose attribute clean_level is used to return the desired level of data selectivity. - Returns - -------- - Void : (NoneType) - data in inst is modified in-place. - Notes -------- Supports 'clean', 'dusty', 'dirty' @@ -365,6 +358,7 @@ def add_drifts_polar_cap_x_y(inst, rpa_flag_key=None, ------- Polar cap drifts assume there is no vertical component to the X-Y velocities + """ # Get the good RPA data, if available diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index b92d13a..c8377d7 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -8,22 +8,25 @@ Downloads data from the JRO Madrigal Database. -Parameters +Properties ---------- -platform : string +platform 'jro' -name : string +name 'isr' -tag : string +tag 'drifts', 'drifts_ave', 'oblique_stan', 'oblique_rand', 'oblique_long' -Example -------- +Examples +-------- +:: + import pysat - dmsp = pysat.Instrument('jro', 'isr', 'drifts', clean_level='clean') - dmsp.download(dt.datetime(2017, 12, 30), dt.datetime(2017, 12, 31), - user='Firstname+Lastname', password='email@address.com') - dmsp.load(2017,363) + jro = pysat.Instrument('jro', 'isr', 'drifts', clean_level='clean') + jro.download(pysat.datetime(2017, 12, 30), pysat.datetime(2017, 12, 31), + user='Firstname+Lastname', password='email@address.com') + jro.load(2017, 363) + Note ---- @@ -104,12 +107,6 @@ def init(self): self : pysat.Instrument This object - Returns - -------- - Void : (NoneType) - Object modified in place. - - """ logger.info(' '.join(["The Jicamarca Radio Observatory is operated by", @@ -129,26 +126,20 @@ def download(date_array, tag='', sat_id='', data_path=None, user=None, date_array : array-like list of datetimes to download data for. The sequence of dates need not be contiguous. - tag : string ('') + tag : string Tag identifier used for particular dataset. This input is provided by - pysat. - sat_id : string ('') + pysat. (default='') + sat_id : string Satellite ID string identifier used for particular dataset. This input - is provided by pysat. - data_path : string (None) - Path to directory to download data to. - user : string (None) + is provided by pysat. (default='') + data_path : string + Path to directory to download data to. (default=None) + user : string User string input used for download. Provided by user and passed via - pysat. If an account - is required for dowloads this routine here must error if user not - supplied. - password : string (None) - Password for data download. - - Returns - -------- - Void : (NoneType) - Downloads data to disk. + pysat. If an account is required for dowloads this routine here must + error if user not supplied. (default=None) + password : string + Password for data download. (default=None) Notes ----- @@ -170,11 +161,6 @@ def download(date_array, tag='', sat_id='', data_path=None, user=None, def clean(self): """Routine to return JRO ISR data cleaned to the specified level - Returns - -------- - Void : (NoneType) - data in inst is modified in-place. - Notes -------- Supports 'clean', 'dusty', 'dirty' From 1f1edfa77e4984b32bb43050dfd0da1a1cad0038 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Fri, 24 Jul 2020 20:41:26 -0400 Subject: [PATCH 050/231] STY: tweaks to line breaks --- pysatMadrigal/instruments/dmsp_ivm.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pysatMadrigal/instruments/dmsp_ivm.py b/pysatMadrigal/instruments/dmsp_ivm.py index 9e27ab2..4d96b45 100644 --- a/pysatMadrigal/instruments/dmsp_ivm.py +++ b/pysatMadrigal/instruments/dmsp_ivm.py @@ -322,15 +322,15 @@ def add_drift_unit_vectors(inst): inst.data.loc[inst.index[idx], 'unit_cross_x'] *= -1.0 inst.data.loc[inst.index[idx], 'unit_cross_y'] *= -1.0 - inst['unit_ram_r'] = inst['unit_ram_x'] * np.cos(theta) + \ - inst['unit_ram_y'] * np.sin(theta) - inst['unit_ram_theta'] = -inst['unit_ram_x'] * np.sin(theta) + \ - inst['unit_ram_y'] * np.cos(theta) - - inst['unit_cross_r'] = inst['unit_cross_x'] * np.cos(theta) + \ - inst['unit_cross_y'] * np.sin(theta) - inst['unit_cross_theta'] = -inst['unit_cross_x'] * np.sin(theta) + \ - inst['unit_cross_y'] * np.cos(theta) + inst['unit_ram_r'] = (inst['unit_ram_x'] * np.cos(theta) + + inst['unit_ram_y'] * np.sin(theta)) + inst['unit_ram_theta'] = (-inst['unit_ram_x'] * np.sin(theta) + + inst['unit_ram_y'] * np.cos(theta)) + + inst['unit_cross_r'] = (inst['unit_cross_x'] * np.cos(theta) + + inst['unit_cross_y'] * np.sin(theta)) + inst['unit_cross_theta'] = (-inst['unit_cross_x'] * np.sin(theta) + + inst['unit_cross_y'] * np.cos(theta)) return From 14254a18f5f8280b9034844718c73de53a5d5e03 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Fri, 24 Jul 2020 22:58:35 -0400 Subject: [PATCH 051/231] STY: tweaks to line breaks --- pysatMadrigal/instruments/dmsp_ivm.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pysatMadrigal/instruments/dmsp_ivm.py b/pysatMadrigal/instruments/dmsp_ivm.py index 4d96b45..c195cd0 100644 --- a/pysatMadrigal/instruments/dmsp_ivm.py +++ b/pysatMadrigal/instruments/dmsp_ivm.py @@ -376,10 +376,10 @@ def add_drifts_polar_cap_x_y(inst, rpa_flag_key=None, add_drift_unit_vectors(inst) # Calculate the velocities - inst['ion_vel_pc_x'] = iv_x * inst['unit_ram_x'] + \ - inst[cross_vel_key] * inst['unit_cross_x'] - inst['ion_vel_pc_y'] = iv_x * inst['unit_ram_y'] + \ - inst[cross_vel_key] * inst['unit_cross_y'] + inst['ion_vel_pc_x'] = (iv_x * inst['unit_ram_x'] + + inst[cross_vel_key] * inst['unit_cross_x']) + inst['ion_vel_pc_y'] = (iv_x * inst['unit_ram_y'] + + inst[cross_vel_key] * inst['unit_cross_y']) # Flag the velocities as full (False) or partial (True) inst['partial'] = False From 64d266a7f80b7449e236396c424b7b9f27a7679c Mon Sep 17 00:00:00 2001 From: jklenzing Date: Fri, 24 Jul 2020 22:58:49 -0400 Subject: [PATCH 052/231] DOC: clean up docstrings, comments --- pysatMadrigal/instruments/methods/madrigal.py | 139 +++++++++--------- .../instruments/templates/madrigal_pandas.py | 76 ++++------ 2 files changed, 92 insertions(+), 123 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index f812d75..cbd6317 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -48,14 +48,14 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): fnames : array-like iterable of filename strings, full path, to data files to be loaded. This input is nominally provided by pysat itself. - tag : string ('') + tag : string tag name used to identify particular data set to be loaded. This input is nominally provided by pysat itself. While tag defaults to None here, pysat provides '' as the default - tag unless specified by user at Instrument instantiation. - sat_id : string ('') + tag unless specified by user at Instrument instantiation. (default='') + sat_id : string Satellite ID used to identify particular data set to be loaded. - This input is nominally provided by pysat itself. + This input is nominally provided by pysat itself. (default='') xarray_coords : list List of keywords to use as coordinates if xarray output is desired instead of a Pandas DataFrame (default=[]) @@ -71,8 +71,9 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): Examples -------- :: + inst = pysat.Instrument('jro', 'isr', 'drifts') - inst.load(2010,18) + inst.load(2010, 18) """ @@ -172,34 +173,29 @@ def download(date_array, inst_code=None, kindat=None, data_path=None, date_array : array-like list of datetimes to download data for. The sequence of dates need not be contiguous. - inst_code : string (None) + inst_code : string Madrigal instrument code(s), cast as a string. If multiple are used, - separate them with commas. - kindat : string (None) + separate them with commas. (default=None) + kindat : string Experiment instrument code(s), cast as a string. If multiple are used, - separate them with commas. - data_path : string (None) - Path to directory to download data to. - user : string (None) + separate them with commas. (default=None) + data_path : string + Path to directory to download data to. (default=None) + user : string User string input used for download. Provided by user and passed via - pysat. If an account - is required for dowloads this routine here must error if user not - supplied. - password : string (None) - Password for data download. - url : string ('http://cedar.openmadrigal.org') - URL for Madrigal site - file_format : string ('hdf5') + pysat. If an account is required for dowloads this routine here must + error if user not supplied. (default=None) + password : string + Password for data download. (default=None) + url : string + URL for Madrigal site (default='http://cedar.openmadrigal.org') + file_format : string File format for Madrigal data. Load routines currently only accept 'hdf5', but any of the Madrigal options may be used here. + (default='hdf5') - Returns - -------- - Void : (NoneType) - Downloads data to disk. - - Notes - ----- + Note + ---- The user's names should be provided in field user. Ruby Payne-Scott should be entered as Ruby+Payne-Scott @@ -258,40 +254,37 @@ def get_remote_filenames(inst_code=None, kindat=None, user=None, Parameters ---------- - inst_code : string (None) + inst_code : string Madrigal instrument code(s), cast as a string. If multiple are used, - separate them with commas. - kindat : string (None) + separate them with commas. (default=None) + kindat : string Madrigal experiment code(s), cast as a string. If multiple are used, separate them with commas. If not supplied, all will be returned. - data_path : string (None) - Path to directory to download data to. - user : string (None) + (default=None) + data_path : string + Path to directory to download data to. (default=None) + user : string User string input used for download. Provided by user and passed via - pysat. If an account - is required for dowloads this routine here must error if user not - supplied. - password : string (None) - Password for data download. - web_data : MadrigalData (None) + pysat. If an account is required for dowloads this routine here must + error if user not supplied. (default=None) + password : string + Password for data download. (default=None) + web_data : MadrigalData Open connection to Madrigal database or None (will initiate using url) - url : string ('http://cedar.openmadrigal.org') - URL for Madrigal site + (default=None) + url : string + URL for Madrigal site (default='http://cedar.openmadrigal.org') start : dt.datetime Starting time for file list (defaults to 01-01-1900) stop : dt.datetime Ending time for the file list (defaults to time of run) - date_array : dt.datetime (None) + date_array : dt.datetime Array of datetimes to download data for. The sequence of dates need not be contiguous and will be used instead of start and stop if supplied. + (default=None) - Returns - ------- - Void : (NoneType) - Downloads data to disk. - - Notes - ----- + Note + ---- The user's names should be provided in field user. Ruby Payne-Scott should be entered as Ruby+Payne-Scott @@ -408,46 +401,41 @@ def list_remote_files(tag, sat_id, inst_code=None, kindat=None, user=None, Parameters ---------- - tag : (string or NoneType) + tag : string or NoneType Denotes type of file to load. Accepted types are . (default=None) - sat_id : (string or NoneType) + sat_id : string or NoneType Specifies the satellite ID for a constellation. Not used. (default=None) - inst_code : string (None) + inst_code : string Madrigal instrument code(s), cast as a string. If multiple are used, - separate them with commas. - kindat : string (None) + separate them with commas. (default=None) + kindat : string Madrigal experiment code(s), cast as a string. If multiple are used, separate them with commas. If not supplied, all will be returned. - data_path : string (None) - Path to directory to download data to. - user : string (None) + (default=None) + data_path : string + Path to directory to download data to. (default=None) + user : string User string input used for download. Provided by user and passed via - pysat. If an account - is required for dowloads this routine here must error if user not - supplied. - password : string (None) - Password for data download. - supported_tags : (dict or NoneType) + pysat. If an account is required for dowloads this routine here must + error if user not supplied. (default=None) + password : string + Password for data download. (default=None) + supported_tags : dict or NoneType keys are sat_id, each containing a dict keyed by tag where the values file format template strings. (default=None) - url : string ('http://cedar.openmadrigal.org') - URL for Madrigal site + url : string + URL for Madrigal site (default='http://cedar.openmadrigal.org') two_digit_year_break : int If filenames only store two digits for the year, then '1900' will be added for years >= two_digit_year_break and '2000' will be added for years < two_digit_year_break. - start : (dt.datetime) + start : dt.datetime Starting time for file list (defaults to 01-01-1900) - stop : (dt.datetime) + stop : dt.datetime Ending time for the file list (defaults to time of run) - Returns - ------- - Void : (NoneType) - Downloads data to disk. - Notes ----- The user's names should be provided in field user. Ruby Payne-Scott should @@ -464,6 +452,7 @@ def list_remote_files(tag, sat_id, inst_code=None, kindat=None, user=None, This method is intended to be set in an instrument support file at the top level using functools.partial :: + list_remote_files = functools.partial(mad_meth.list_remote_files, supported_tags=supported_tags, inst_code=madrigal_inst_code) @@ -523,8 +512,11 @@ def filter_data_single_date(self): This routine is intended to be added to the Instrument nanokernel processing queue via + :: + inst = pysat.Instrument() inst.custom.attach(filter_data_single_date, 'modify') + This function will then be automatically applied to the Instrument object data on every load by the pysat nanokernel. @@ -535,7 +527,10 @@ def filter_data_single_date(self): pysat instrument file to this one. within platform_name.py set + :: + default = pysat.instruments.methods.madrigal.filter_data_single_date + at the top level """ diff --git a/pysatMadrigal/instruments/templates/madrigal_pandas.py b/pysatMadrigal/instruments/templates/madrigal_pandas.py index 7fb8141..cca211f 100644 --- a/pysatMadrigal/instruments/templates/madrigal_pandas.py +++ b/pysatMadrigal/instruments/templates/madrigal_pandas.py @@ -20,18 +20,19 @@ Files can be safely downloaded without knowing the file_format keyword, or equivalently, how Madrigal names the files. See `Examples` for more. -Parameters +Properties ---------- -platform : string +platform 'madrigal' -name : string +name 'pandas' -tag : string +tag '' Examples -------- :: + # for isolated use of a madrigal data set import pysat # download DMSP data from Madrigal @@ -40,7 +41,7 @@ madrigal_tag=10241) dmsp.download(dt.datetime(2017, 12, 30), dt.datetime(2017, 12, 31), user='Firstname+Lastname', password='email@address.com') - dmsp.load(2017,363) + dmsp.load(2017, 363) # for users that plan on using multiple Madrigal datasets # using this general interface then an additional parameter @@ -75,16 +76,13 @@ """ -from __future__ import print_function -from __future__ import absolute_import - import datetime as dt import functools +import logging from pysat.instruments.methods import madrigal as mad_meth from pysat.instruments.methods import nasa_cdaweb as cdw -import logging logger = logging.getLogger(__name__) platform = 'madrigal' @@ -94,27 +92,18 @@ # need to sort out test day setting for unit testing _test_dates = {'': {'': dt.datetime(2010, 1, 19)}} -# support list files routine -# use the default CDAWeb method -######### # need a way to get the filename strings for a particular instrument # I've put in wildcards for now.... ######### jro_fname1 = '*{year:4d}{month:02d}{day:02d}' jro_fname2 = '.{version:03d}.hdf5' -supported_tags = {ss: {'': jro_fname1 + "*" + jro_fname2} +supported_tags = {ss: {'': '*'.join((jro_fname1, jro_fname2))} for ss in sat_ids.keys()} list_files = functools.partial(cdw.list_files, supported_tags=supported_tags) -# let pysat know that data is spread across more than one file -# multi_file_day=True - -# Set to False to specify using xarray (not using pandas) -# Set to True if data will be returned via a pandas DataFrame pandas_format = True -# support load routine load = mad_meth.load # support download routine @@ -133,12 +122,6 @@ def init(self): self : pysat.Instrument This object - Returns - -------- - Void : (NoneType) - Object modified in place. - - """ logger.info(mad_meth.cedar_rules()) @@ -166,30 +149,24 @@ def _general_download(date_array, tag='', sat_id='', data_path=None, user=None, date_array : array-like list of datetimes to download data for. The sequence of dates need not be contiguous. - tag : string ('') + tag : string Tag identifier used for particular dataset. This input is provided by - pysat. - sat_id : string ('') + pysat. (default='') + sat_id : string Satellite ID string identifier used for particular dataset. This input - is provided by pysat. - data_path : string (None) - Path to directory to download data to. - user : string (None) + is provided by pysat. (default='') + data_path : string + Path to directory to download data to. (default=None) + user : string User string input used for download. Provided by user and passed via - pysat. If an account - is required for dowloads this routine here must error if user not - supplied. - password : string (None) - Password for data download. + pysat. If an account is required for dowloads this routine here must + error if user not supplied. (default=None) + password : string + Password for data download. (default=None) inst_code : int - Madrigal integer code used to identify platform + Madrigal integer code used to identify platform (default=None) kindat : int - Madrigal integer code used to identify data set - - Returns - -------- - Void : (NoneType) - Downloads data to disk. + Madrigal integer code used to identify data set (default=None) Notes ----- @@ -203,6 +180,7 @@ def _general_download(date_array, tag='', sat_id='', data_path=None, user=None, downloads. """ + mad_meth.download(date_array, inst_code=inst_code, kindat=kindat, data_path=data_path, user=user, password=password) @@ -210,13 +188,8 @@ def _general_download(date_array, tag='', sat_id='', data_path=None, user=None, def clean(self): """Placeholder routine that would normally return cleaned data - Returns - -------- - Void : (NoneType) - data in inst is modified in-place. - - Notes - -------- + Note + ---- Supports 'clean', 'dusty', 'dirty' in the sense that it prints a message noting there is no cleaning. 'None' is also supported as it signifies no cleaning. @@ -224,6 +197,7 @@ def clean(self): Routine is called by pysat, and not by the end user directly. """ + if self.clean_level in ['clean', 'dusty', 'dirty']: logger.warning('Generalized Madrigal data support has no cleaning.') From dc02e37f815e67c86d468b430aff404428ae7c84 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Sat, 25 Jul 2020 10:58:20 -0400 Subject: [PATCH 053/231] DOC: add dmsp refs and ackn --- pysatMadrigal/instruments/dmsp_ivm.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pysatMadrigal/instruments/dmsp_ivm.py b/pysatMadrigal/instruments/dmsp_ivm.py index c195cd0..012de9d 100644 --- a/pysatMadrigal/instruments/dmsp_ivm.py +++ b/pysatMadrigal/instruments/dmsp_ivm.py @@ -9,7 +9,9 @@ composition, plasma temperature, and plasma motion may be determined. The DM directly measures the arrival angle of plasma. Using the reported motion of the satellite the angle is converted into ion motion along -two orthogonal directions, perpendicular to the satellite track. +two orthogonal directions, perpendicular to the satellite track. The IVM is +part of the Special Sensor for Ions, Electrons, and Scintillations (SSIES) +instrument suite on DMSP. Downloads data from the National Science Foundation Madrigal Database. The routine is configured to utilize data files with instrument @@ -123,6 +125,13 @@ def init(self): """ logger.info(mad_meth.cedar_rules()) + self.meta.acknowledgements = mad_meth.cedar_rules() + self.meta.references = ' '.join(('F. J. Rich, Users Guide for the Topside', + 'Ionospheric Plasma Monitor (SSIES,', + 'SSIES-2 and SSIES-3) on Spacecraft of', + 'the Defense Meteorological Satellite', + 'Program (Air Force Phillips Laboratory,', + 'Hanscom AFB, MA, 1994), Vol. 1, p. 25.')) return From b2d4025e9eaf8ca59cd081ed4d116b178037d114 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Sat, 25 Jul 2020 10:58:38 -0400 Subject: [PATCH 054/231] DOC: add JRO "refs" and ackn --- pysatMadrigal/instruments/jro_isr.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index c8377d7..a7f1afc 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -109,11 +109,16 @@ def init(self): """ - logger.info(' '.join(["The Jicamarca Radio Observatory is operated by", - "the Instituto Geofisico del Peru, Ministry of", - "Education, with support from the National Science", - "Foundation as contracted through Cornell", - "University. ", mad_meth.cedar_rules()])) + ackn_str = ' '.join(["The Jicamarca Radio Observatory is operated by", + "the Instituto Geofisico del Peru, Ministry of", + "Education, with support from the National Science", + "Foundation as contracted through Cornell", + "University. \n", mad_meth.cedar_rules()]) + + logger.info(ackn_str) + self.meta.acknowledgements = ackn_str + self.meta.references = "?" + return From f7c5475e0dc6506241a67b0df2aa5be3131c2b2d Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 10 Aug 2020 14:28:24 -0400 Subject: [PATCH 055/231] DOC: Update jro acknowledgement --- pysatMadrigal/instruments/jro_isr.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index a7f1afc..639fb38 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -109,11 +109,11 @@ def init(self): """ - ackn_str = ' '.join(["The Jicamarca Radio Observatory is operated by", - "the Instituto Geofisico del Peru, Ministry of", - "Education, with support from the National Science", - "Foundation as contracted through Cornell", - "University. \n", mad_meth.cedar_rules()]) + ackn_str = ' '.join(["The Jicamarca Radio Observatory is a facility of", + "the Instituto Geofisico del Peru operated", + "with support from the NSF AGS-1433968", + "through Cornell University.\n", + mad_meth.cedar_rules()]) logger.info(ackn_str) self.meta.acknowledgements = ackn_str From 42d487fd69946239f8ffe310e52b4a1ad7b43415 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Tue, 11 Aug 2020 12:52:31 -0400 Subject: [PATCH 056/231] ENH: rename import nickname Renamed import nickname so that the source of two routines would not be confused. --- pysatMadrigal/instruments/dmsp_ivm.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pysatMadrigal/instruments/dmsp_ivm.py b/pysatMadrigal/instruments/dmsp_ivm.py index 012de9d..8a548ff 100644 --- a/pysatMadrigal/instruments/dmsp_ivm.py +++ b/pysatMadrigal/instruments/dmsp_ivm.py @@ -64,8 +64,9 @@ import numpy as np import pandas as pds +from pysat.instruments.methods import general as ps_gen + from pysatMadrigal.instruments.methods import madrigal as mad_meth -from pysat.instruments.methods import general as mm_gen logger = logging.getLogger(__name__) @@ -89,7 +90,7 @@ dmsp_fname2 = {'utd': '.{version:03d}.hdf5', '': 's?.{version:03d}.hdf5'} supported_tags = {ss: {kk: dmsp_fname1[kk] + ss[1:] + dmsp_fname2[kk] for kk in sat_ids[ss]} for ss in sat_ids.keys()} -list_files = functools.partial(mm_gen.list_files, +list_files = functools.partial(ps_gen.list_files, supported_tags=supported_tags) # madrigal tags From 5cdeffe4ab2365c9dcff5c8902942a6f8d148b17 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Tue, 11 Aug 2020 12:52:57 -0400 Subject: [PATCH 057/231] ENH: added GNSS TEC instrument Added a GNSS TEC instrument. --- pysatMadrigal/instruments/__init__.py | 8 +- pysatMadrigal/instruments/gnss_tec.py | 216 ++++++++++++++++++++++++++ 2 files changed, 222 insertions(+), 2 deletions(-) create mode 100644 pysatMadrigal/instruments/gnss_tec.py diff --git a/pysatMadrigal/instruments/__init__.py b/pysatMadrigal/instruments/__init__.py index 2eb5b01..0ad832e 100644 --- a/pysatMadrigal/instruments/__init__.py +++ b/pysatMadrigal/instruments/__init__.py @@ -1,4 +1,8 @@ -from pysatMadrigal.instruments import dmsp_ivm, jro_isr +# Import Madrigal instruments +from pysatMadrigal.instruments import dmsp_ivm, gnss_tec, jro_isr + +# Import Madrigal methods from pysatMadrigal.instruments import methods # noqa F401 -__all__ = ['dmsp_ivm', 'jro_isr'] +# Define variable name with all available instruments +__all__ = ['dmsp_ivm', 'gnss_tec', 'jro_isr'] diff --git a/pysatMadrigal/instruments/gnss_tec.py b/pysatMadrigal/instruments/gnss_tec.py new file mode 100644 index 0000000..0db569b --- /dev/null +++ b/pysatMadrigal/instruments/gnss_tec.py @@ -0,0 +1,216 @@ +# -*- coding: utf-8 -*-. +"""Supports the MIT Haystack GNSS TEC data products + +The Global Navigation Satellite System (GNSS) is used in conjunction with a +world-winde receiver network to produce total electron content (TEC) data +products, including vertical and line-of-sight TEC. + +Downloads data from the MIT Haystack Madrigal Database. + +Properties +---------- +platform + 'gnss' +name + 'tec' +tag + 'vtec', 'los' + +Examples +-------- +:: + + import datetime + import pysat + import pysatMadrigal as pymad + + vtec = pysat.Instrument(inst_module=pymad.instruments.gnss_tec, tag='vtec') + vtec.download(dt.datetime(2017, 11, 19), dt.datetime(2017, 11, 20), + user='Firstname+Lastname', password='email@address.com') + vtec.load(date=dt.datetime(2017, 11, 19)) + + +Note +---- + Please provide name and email when downloading data with this routine. + +""" + +import datetime as dt +import functools +import numpy as np + +from pysat.instruments.methods import general as ps_gen + +from pysatMadrigal.instruments.methods import madrigal as mad_meth + +import logging +logger = logging.getLogger(__name__) + + +platform = 'gnss' +name = 'tec' +tags = {'vtec': 'vertical TEC', 'los': 'slant TEC'} +sat_ids = {'': list(tags.keys())} +_test_dates = {'': {'vtec': dt.datetime(2017, 11, 19), + 'los': dt.datetime(2017, 11, 19)}} +pandas_format = False + +# support list files routine +# use the default pysat method +dname = '{year:4d}{month:02d}{day:02d}' +vname = '.{version:03d}' +supported_tags = {ss: {'vtec': "gps{:s}g{:s}.hdf5".format(dname, vname), + 'los': "los_{:s}{:s}.h5".format(dname, vname)} + for ss in sat_ids.keys()} +list_files = functools.partial(ps_gen.list_files, + supported_tags=supported_tags) + +# madrigal tags +madrigal_inst_code = 8000 +madrigal_tag = {'': {'vtec': 3500, 'los': 3505}} + +# support listing files currently available on remote server (Madrigal) +list_remote_files = functools.partial(mad_meth.list_remote_files, + supported_tags=supported_tags, + inst_code=madrigal_inst_code) + + +def init(self): + """Initializes the Instrument object with values specific to JRO ISR + + Runs once upon instantiation. + + Parameters + ---------- + self : pysat.Instrument + This object + + """ + + ackn_str = ' '.join(["GPS TEC data products and access through the ", + "Madrigal distributed data system are provided to ", + "the community by the Massachusetts Institute of ", + "Technology under support from U.S. National Science", + " Foundation grant AGS-1242204. Data for the TEC ", + "processing is provided by the following ", + "organizations: UNAVCO, Scripps Orbit and Permanent", + " Array Center, Institut Geographique National, ", + "France, International GNSS Service, The Crustal ", + "Dynamics Data Information System (CDDIS), National", + " Geodetic Survey, Instituto Brasileiro de Geografia", + " e Estatística, RAMSAC CORS of Instituto Geográfico", + " Nacional del la República Agentina, Arecibo ", + "Observatory, Low-Latitude Ionospheric Sensor ", + "Network (LISN), Topcon Positioning Systems, Inc., ", + "Canadian High Arctic Ionospheric Network, ", + "Institute of Geology and Geophysics, Chinese ", + "Academy of Sciences, China Meterorology ", + "Administration, Centro di Ricerche Sismogiche, ", + "Système d’Observation du Niveau des Eaux Littorales", + " (SONEL), RENAG : REseau NAtional GPS permanent, ", + "and GeoNet—the official source of geological ", + "hazard information for New Zealand.\n", + mad_meth.cedar_rules()]) + + logger.info(ackn_str) + self.meta.acknowledgements = ackn_str + self.meta.references = "".join(["Rideout and Coster (2006) ", + "doi:10.1007/s10291-006-0029-5"]) + + return + + +def download(date_array, tag='', sat_id='', data_path=None, user=None, + password=None): + """Downloads data from Madrigal. + + Parameters + ---------- + date_array : array-like + list of datetimes to download data for. The sequence of dates need not + be contiguous. + tag : string + Tag identifier used for particular dataset. This input is provided by + pysat. (default='') + sat_id : string + Satellite ID string identifier used for particular dataset. This input + is provided by pysat. (default='') + data_path : string + Path to directory to download data to. (default=None) + user : string + User string input used for download. Provided by user and passed via + pysat. If an account is required for dowloads this routine here must + error if user not supplied. (default=None) + password : string + Password for data download. (default=None) + + Notes + ----- + The user's names should be provided in field user. Anthea Coster should + be entered as Anthea+Coster + + The password field should be the user's email address. These parameters + are passed to Madrigal when downloading. + + The affiliation field is set to pysat to enable tracking of pysat + downloads. + + """ + mad_meth.download(date_array, inst_code=str(madrigal_inst_code), + kindat=str(madrigal_tag[sat_id][tag]), + data_path=data_path, user=user, password=password) + + +def load(fnames, tag=None, sat_id=None): + """ Routine to load the GNSS TEC data + + Parameters + ----------- + fnames : list + List of filenames + tag : string or NoneType + tag name used to identify particular data set to be loaded. + This input is nominally provided by pysat itself. (default=None) + sat_id : string or NoneType + Satellite ID used to identify particular data set to be loaded. + This input is nominally provided by pysat itself. (default=None) + + Returns + -------- + data : xarray.Dataset + Object containing satellite data + meta : pysat.Meta + Object containing metadata such as column names and units + + """ + # Define the xarray coordinate dimensions (apart from time) + xcoords = {'vtec': ['gdlat', 'glon', 'gdalt'], + 'los': []} + + # Load the specified data + data, meta = mad_meth.load(fnames, tag, sat_id, xarray_coords=xcoords[tag]) + + return data, meta + + +def clean(self): + """Routine to return GNSS TEC data at a specific level + + Notes + -------- + Supports 'clean', 'dusty', 'dirty' + 'Clean' is unknown for oblique modes, over 200 km for drifts + 'Dusty' is unknown for oblique modes, over 200 km for drifts + 'Dirty' is unknown for oblique modes, over 200 km for drifts + 'None' None + + Routine is called by pysat, and not by the end user directly. + + """ + if self.tag == "vtec": + logging.info("".join(["Data provided at a clean level, further ", + "cleaning may be performed using the ", + "measurement error 'dtec'"])) + + return From e35d5ce748b14e4dac7a2ce2f76a70dbec9d2fdd Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Wed, 12 Aug 2020 15:28:42 -0400 Subject: [PATCH 058/231] BUG: code review feedback Applied code review feedback and new style standards, which include: - spelling, - fixing filename to use 2-digit year, split between 1900s and 2000s, - init and clean docstrings, - correct join string for acknowledgements, and - attaching acknowledgements and references. --- pysatMadrigal/instruments/gnss_tec.py | 83 ++++++++++++--------------- 1 file changed, 37 insertions(+), 46 deletions(-) diff --git a/pysatMadrigal/instruments/gnss_tec.py b/pysatMadrigal/instruments/gnss_tec.py index 0db569b..a383e0e 100644 --- a/pysatMadrigal/instruments/gnss_tec.py +++ b/pysatMadrigal/instruments/gnss_tec.py @@ -2,7 +2,7 @@ """Supports the MIT Haystack GNSS TEC data products The Global Navigation Satellite System (GNSS) is used in conjunction with a -world-winde receiver network to produce total electron content (TEC) data +world-wide receiver network to produce total electron content (TEC) data products, including vertical and line-of-sight TEC. Downloads data from the MIT Haystack Madrigal Database. @@ -58,13 +58,14 @@ # support list files routine # use the default pysat method -dname = '{year:4d}{month:02d}{day:02d}' +dname = '{year:02d}{month:02d}{day:02d}' vname = '.{version:03d}' supported_tags = {ss: {'vtec': "gps{:s}g{:s}.hdf5".format(dname, vname), 'los': "los_{:s}{:s}.h5".format(dname, vname)} for ss in sat_ids.keys()} list_files = functools.partial(ps_gen.list_files, - supported_tags=supported_tags) + supported_tags=supported_tags, + two_digit_year_break=99) # madrigal tags madrigal_inst_code = 8000 @@ -77,46 +78,40 @@ def init(self): - """Initializes the Instrument object with values specific to JRO ISR + """Initializes the Instrument object with values specific to GNSS TEC Runs once upon instantiation. - Parameters - ---------- - self : pysat.Instrument - This object - """ - ackn_str = ' '.join(["GPS TEC data products and access through the ", - "Madrigal distributed data system are provided to ", - "the community by the Massachusetts Institute of ", - "Technology under support from U.S. National Science", - " Foundation grant AGS-1242204. Data for the TEC ", - "processing is provided by the following ", - "organizations: UNAVCO, Scripps Orbit and Permanent", - " Array Center, Institut Geographique National, ", - "France, International GNSS Service, The Crustal ", - "Dynamics Data Information System (CDDIS), National", - " Geodetic Survey, Instituto Brasileiro de Geografia", - " e Estatística, RAMSAC CORS of Instituto Geográfico", - " Nacional del la República Agentina, Arecibo ", - "Observatory, Low-Latitude Ionospheric Sensor ", - "Network (LISN), Topcon Positioning Systems, Inc., ", - "Canadian High Arctic Ionospheric Network, ", - "Institute of Geology and Geophysics, Chinese ", - "Academy of Sciences, China Meterorology ", - "Administration, Centro di Ricerche Sismogiche, ", - "Système d’Observation du Niveau des Eaux Littorales", - " (SONEL), RENAG : REseau NAtional GPS permanent, ", - "and GeoNet—the official source of geological ", - "hazard information for New Zealand.\n", - mad_meth.cedar_rules()]) + ackn_str = ''.join(["GPS TEC data products and access through the ", + "Madrigal distributed data system are provided to ", + "the community by the Massachusetts Institute of ", + "Technology under support from U.S. National Science", + " Foundation grant AGS-1242204. Data for the TEC ", + "processing is provided by the following ", + "organizations: UNAVCO, Scripps Orbit and Permanent", + " Array Center, Institut Geographique National, ", + "France, International GNSS Service, The Crustal ", + "Dynamics Data Information System (CDDIS), National", + " Geodetic Survey, Instituto Brasileiro de Geografia", + " e Estatística, RAMSAC CORS of Instituto Geográfico", + " Nacional del la República Agentina, Arecibo ", + "Observatory, Low-Latitude Ionospheric Sensor ", + "Network (LISN), Topcon Positioning Systems, Inc., ", + "Canadian High Arctic Ionospheric Network, ", + "Institute of Geology and Geophysics, Chinese ", + "Academy of Sciences, China Meterorology ", + "Administration, Centro di Ricerche Sismogiche, ", + "Système d’Observation du Niveau des Eaux Littorales", + " (SONEL), RENAG : REseau NAtional GPS permanent, ", + "and GeoNet—the official source of geological ", + "hazard information for New Zealand.\n", + mad_meth.cedar_rules()]) logger.info(ackn_str) - self.meta.acknowledgements = ackn_str - self.meta.references = "".join(["Rideout and Coster (2006) ", - "doi:10.1007/s10291-006-0029-5"]) + self.acknowledgements = ackn_str + self.references = "Rideout and Coster (2006) doi:10.1007/s10291-006-0029-5" return @@ -145,8 +140,8 @@ def download(date_array, tag='', sat_id='', data_path=None, user=None, password : string Password for data download. (default=None) - Notes - ----- + Note + ---- The user's names should be provided in field user. Anthea Coster should be entered as Anthea+Coster @@ -160,6 +155,7 @@ def download(date_array, tag='', sat_id='', data_path=None, user=None, mad_meth.download(date_array, inst_code=str(madrigal_inst_code), kindat=str(madrigal_tag[sat_id][tag]), data_path=data_path, user=user, password=password) + return def load(fnames, tag=None, sat_id=None): @@ -197,14 +193,9 @@ def load(fnames, tag=None, sat_id=None): def clean(self): """Routine to return GNSS TEC data at a specific level - Notes - -------- - Supports 'clean', 'dusty', 'dirty' - 'Clean' is unknown for oblique modes, over 200 km for drifts - 'Dusty' is unknown for oblique modes, over 200 km for drifts - 'Dirty' is unknown for oblique modes, over 200 km for drifts - 'None' None - + Note + ---- + Supports 'clean', 'dusty', 'dirty', or 'None'. Routine is called by pysat, and not by the end user directly. """ From aeab2f7db4ae6f1729c44dfbd31e93fa63edab5a Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Wed, 12 Aug 2020 16:07:46 -0400 Subject: [PATCH 059/231] MAINT: new standards Updated to: - remove python 2.7 support, - improve docstrings, - remove unnecessary comments, and - apply new standards for acknowledgements and references. --- pysatMadrigal/instruments/methods/madrigal.py | 23 +++++++------------ 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index cbd6317..ee2e190 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -12,7 +12,6 @@ import numpy as np import os import pandas as pds -import sys import h5py from madrigalWeb import madrigalWeb @@ -36,9 +35,8 @@ def cedar_rules(): return ackn -# support load routine def load(fnames, tag=None, sat_id=None, xarray_coords=[]): - """Loads data from Madrigal into Pandas. + """Loads data from Madrigal into Pandas or XArray This routine is called as needed by pysat. It is not intended for direct user interaction. @@ -89,20 +87,11 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): file_meta = filed['Metadata']['Data Parameters'] # load up what is offered into pysat.Meta meta = pysat.Meta() - meta.info = {'acknowledgements': - ' '.join(["See 'meta.Experiment_Notes' for instrument", - "specific acknowledgements\n", cedar_rules()]), - 'references': "See 'meta.Experiment_Notes' for references"} labels = [] for item in file_meta: - # handle difference in string output between python 2 and 3 - name_string = item[0] - unit_string = item[3] - desc_string = item[1] - if sys.version_info[0] >= 3: - name_string = name_string.decode('UTF-8') - unit_string = unit_string.decode('UTF-8') - desc_string = desc_string.decode('UTF-8') + name_string = item[0].decode('UTF-8') + unit_string = item[3].decode('UTF-8') + desc_string = item[1].decode('UTF-8') labels.append(name_string) meta[name_string.lower()] = {'long_name': name_string, 'units': unit_string, @@ -115,10 +104,13 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): for key in filed['Metadata']: if key != 'Data Parameters': setattr(meta, key.replace(' ', '_'), filed['Metadata'][key][:]) + # data into frame, with labels from metadata data = pds.DataFrame.from_records(file_data, columns=labels) + # lowercase variable names data.columns = [item.lower() for item in data.columns] + # datetime index from times time_keys = np.array(['year', 'month', 'day', 'hour', 'min', 'sec']) if not np.all([key in data.columns for key in time_keys]): @@ -132,6 +124,7 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): month=data.loc[:, 'month'], day=data.loc[:, 'day'], uts=uts) + # Declare index or recast as xarray if len(xarray_coords) > 0: if not np.all([xkey.lower() in data.columns From 1fb3fc4dbdf80aeac88143b41359bbb6d9be9ab9 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Wed, 12 Aug 2020 16:08:28 -0400 Subject: [PATCH 060/231] BUG: list from keys and logging Fixed logging call and extraction of list of keys. --- pysatMadrigal/instruments/gnss_tec.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pysatMadrigal/instruments/gnss_tec.py b/pysatMadrigal/instruments/gnss_tec.py index a383e0e..ca3fdee 100644 --- a/pysatMadrigal/instruments/gnss_tec.py +++ b/pysatMadrigal/instruments/gnss_tec.py @@ -51,7 +51,7 @@ platform = 'gnss' name = 'tec' tags = {'vtec': 'vertical TEC', 'los': 'slant TEC'} -sat_ids = {'': list(tags.keys())} +sat_ids = {'': [tag for tag in tags.keys()]} _test_dates = {'': {'vtec': dt.datetime(2017, 11, 19), 'los': dt.datetime(2017, 11, 19)}} pandas_format = False @@ -185,7 +185,7 @@ def load(fnames, tag=None, sat_id=None): 'los': []} # Load the specified data - data, meta = mad_meth.load(fnames, tag, sat_id, xarray_coords=xcoords[tag]) + data, meta = mad_meth.load(fnames, tag, sat_id)#, xarray_coords=xcoords[tag]) return data, meta @@ -200,8 +200,8 @@ def clean(self): """ if self.tag == "vtec": - logging.info("".join(["Data provided at a clean level, further ", - "cleaning may be performed using the ", - "measurement error 'dtec'"])) + logger.info("".join(["Data provided at a clean level, further ", + "cleaning may be performed using the ", + "measurement error 'dtec'"])) return From 895b0e408f753772cbf157e3a0f3f9110d0c1d73 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 13 Aug 2020 14:35:57 -0400 Subject: [PATCH 061/231] ENH: smarter xarray creation Adapted the general load routine for loading data from an HDF file to allow different data variables to depend on different coordinates. This will make the loaded data set smaller, since less padding will be needed and non-unique values will not need to be maintained. --- pysatMadrigal/instruments/methods/madrigal.py | 93 +++++++++++++------ 1 file changed, 67 insertions(+), 26 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index ee2e190..c7447bf 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -56,7 +56,13 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): This input is nominally provided by pysat itself. (default='') xarray_coords : list List of keywords to use as coordinates if xarray output is desired - instead of a Pandas DataFrame (default=[]) + instead of a Pandas DataFrame. Can build an xarray Dataset with + that that have different coordinate dimensions by providing a dict + inside the list instead of coordinate variable name strings. Each dict + will have a tuple of coordinates as the key and a list of variable + strings as the value. For example, + xarray_coords=[{('time'): ['year', 'doy'], ('time', 'gdalt'): + ['data1', 'data2']}]. (default=[]) Returns ------- @@ -66,19 +72,8 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): metadata : pysat.Meta Metadata from the HDF5 file, as well as default values from pysat - Examples - -------- - :: - - inst = pysat.Instrument('jro', 'isr', 'drifts') - inst.load(2010, 18) - """ - # Ensure 'time' wasn't included as a coordinate, since it is the default - if 'time' in xarray_coords: - xarray_coords.pop(xarray_coords.index('time')) - # Open the specified file filed = h5py.File(fnames[0], 'r') # data @@ -125,23 +120,69 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): day=data.loc[:, 'day'], uts=uts) + # Ensure we don't try to create an xarray object with only time as the + # coordinate + coord_len = len(xarray_coords) + if 'time' in xarray_coords: + coord_len -= 1 + # Declare index or recast as xarray - if len(xarray_coords) > 0: - if not np.all([xkey.lower() in data.columns - for xkey in xarray_coords]): - estr = 'unknown coordinate key in {:}, '.format(xarray_coords) - estr += 'use only {:}'.format(data.columns) - raise ValueError(estr) - - # Append time to the data frame and add as the first coordinate + if coord_len > 0: + # If a list was provided, recast as a dict and grab the data columns + if not isinstance(xarray_coords, dict): + xarray_coords = {tuple(xarray_coords): + [col for col in data.columns + if col not in xarray_coords]} + + # Determine the order in which the keys should be processed: + # Greatest to least number of dimensions + len_dict = {len(xcoords): xcoords + for xcoords in xarray_coords.keys()} + coord_order = [len_dict[xkey] for xkey in sorted( + [lkey for lkey in len_dict.keys()], reverse=True)] + + # Append time to the data frame data = data.assign(time=pds.Series(time, index=data.index)) - xarray_coords.insert(0, 'time') - # Set the indices - data = data.set_index(xarray_coords) + # Cycle through each of the coordinate dimensions + xdatasets = list() + for xcoords in coord_order: + if not np.all([xkey.lower() in data.columns for xkey in xcoords]): + raise ValueError(''.join(['unknown coordinate key in ', + '{:}, use only '.format(xcoords), + '{:}'.format(data.columns)])) + if not np.all([xkey.lower() in data.columns + for xkey in xarray_coords[xcoords]]): + raise ValueError(''.join(['unknown coordinate key in ', + '{:}'.format(xarray_coords[xcoords]), + ', use only {:}'.format( + data.columns)])) + + + # Select the desired data values + sel_data = data[list(xcoords) + xarray_coords[xcoords]] + + # Set the indices + sel_data = sel_data.set_index(list(xcoords)) + + # Remove duplicates + sel_data = sel_data.drop_duplicates() + + # Recast as an xarray, if more than one coordinate + if len(xcoords) == 1: + xdatasets.append(sel_data) + else: + xdatasets.append(sel_data.to_xarray()) + + # Merge all of the datasets + for i in np.arange(1, len(xdatasets)): + xdatasets[0].merge(xdatasets[i]) + + # Test to see that all data was retrieved + if len(xdatasets[0].variables) != len(data.columns): + raise ValueError('coordinates not supplied for all data columns') - # Recast the data as an xarray - data = data.to_xarray() + data = xdatasets[0] else: # Set the index to time, and put up a warning if there are duplicate # times. This could mean the data should be stored as an xarray @@ -151,7 +192,7 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): if np.any(time.duplicated()): logger.warning(' '.join(["duplicated time indices, consider", "specifing additional coordinates and", - "storing the data as an xarray DataSet"])) + "storing the data as an xarray Dataset"])) return data, meta From d599f62c0056d0e5f0fba8a11bbcd3708903e2e9 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 13 Aug 2020 14:37:05 -0400 Subject: [PATCH 062/231] MAINT: removed 'los' and updated 'vtec' load Removed the initial support for 'los' data and updated 'vtec' load to use new xarray loading capabilities. --- pysatMadrigal/instruments/gnss_tec.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pysatMadrigal/instruments/gnss_tec.py b/pysatMadrigal/instruments/gnss_tec.py index ca3fdee..d03c4cc 100644 --- a/pysatMadrigal/instruments/gnss_tec.py +++ b/pysatMadrigal/instruments/gnss_tec.py @@ -14,7 +14,7 @@ name 'tec' tag - 'vtec', 'los' + 'vtec' Examples -------- @@ -50,18 +50,16 @@ platform = 'gnss' name = 'tec' -tags = {'vtec': 'vertical TEC', 'los': 'slant TEC'} +tags = {'vtec': 'vertical TEC'} sat_ids = {'': [tag for tag in tags.keys()]} -_test_dates = {'': {'vtec': dt.datetime(2017, 11, 19), - 'los': dt.datetime(2017, 11, 19)}} +_test_dates = {'': {'vtec': dt.datetime(2017, 11, 19)}} pandas_format = False # support list files routine # use the default pysat method dname = '{year:02d}{month:02d}{day:02d}' vname = '.{version:03d}' -supported_tags = {ss: {'vtec': "gps{:s}g{:s}.hdf5".format(dname, vname), - 'los': "los_{:s}{:s}.h5".format(dname, vname)} +supported_tags = {ss: {'vtec': "gps{:s}g{:s}.hdf5".format(dname, vname)} for ss in sat_ids.keys()} list_files = functools.partial(ps_gen.list_files, supported_tags=supported_tags, @@ -69,7 +67,7 @@ # madrigal tags madrigal_inst_code = 8000 -madrigal_tag = {'': {'vtec': 3500, 'los': 3505}} +madrigal_tag = {'': {'vtec': 3500}} #, 'los': 3505}} # support listing files currently available on remote server (Madrigal) list_remote_files = functools.partial(mad_meth.list_remote_files, @@ -181,11 +179,13 @@ def load(fnames, tag=None, sat_id=None): """ # Define the xarray coordinate dimensions (apart from time) - xcoords = {'vtec': ['gdlat', 'glon', 'gdalt'], - 'los': []} + xcoords = {'vtec': {('time', 'gdlat', 'glon', 'gdalt', 'kindat', 'kinst'): + ['tec', 'dtec'], + ('time'): ['year', 'month', 'day', 'hour', 'min', + 'sec', 'ut1_unix', 'ut2_unix', 'recno']},} # Load the specified data - data, meta = mad_meth.load(fnames, tag, sat_id)#, xarray_coords=xcoords[tag]) + data, meta = mad_meth.load(fnames, tag, sat_id, xarray_coords=xcoords[tag]) return data, meta From 12afe51f1359d31e01fa71a4915c747b565ebd4c Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 13 Aug 2020 16:59:39 -0400 Subject: [PATCH 063/231] BUG: tuple with length attribute To have a tuple with a length attribute, a comma needs to be included after the variable. --- pysatMadrigal/instruments/gnss_tec.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pysatMadrigal/instruments/gnss_tec.py b/pysatMadrigal/instruments/gnss_tec.py index d03c4cc..981f497 100644 --- a/pysatMadrigal/instruments/gnss_tec.py +++ b/pysatMadrigal/instruments/gnss_tec.py @@ -181,8 +181,8 @@ def load(fnames, tag=None, sat_id=None): # Define the xarray coordinate dimensions (apart from time) xcoords = {'vtec': {('time', 'gdlat', 'glon', 'gdalt', 'kindat', 'kinst'): ['tec', 'dtec'], - ('time'): ['year', 'month', 'day', 'hour', 'min', - 'sec', 'ut1_unix', 'ut2_unix', 'recno']},} + ('time',): ['year', 'month', 'day', 'hour', 'min', + 'sec', 'ut1_unix', 'ut2_unix', 'recno']},} # Load the specified data data, meta = mad_meth.load(fnames, tag, sat_id, xarray_coords=xcoords[tag]) From 0e0f347d03cf31707ab50f011b4cf675484fd47d Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 13 Aug 2020 17:00:35 -0400 Subject: [PATCH 064/231] BUG: final xarray check Updated example in docstring and fixed bug where variable name retrieval from xarray wasn't correctly obtaining a list of keys. --- pysatMadrigal/instruments/methods/madrigal.py | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index c7447bf..6535511 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -61,7 +61,7 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): inside the list instead of coordinate variable name strings. Each dict will have a tuple of coordinates as the key and a list of variable strings as the value. For example, - xarray_coords=[{('time'): ['year', 'doy'], ('time', 'gdalt'): + xarray_coords=[{('time',): ['year', 'doy'], ('time', 'gdalt'): ['data1', 'data2']}]. (default=[]) Returns @@ -148,14 +148,14 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): xdatasets = list() for xcoords in coord_order: if not np.all([xkey.lower() in data.columns for xkey in xcoords]): - raise ValueError(''.join(['unknown coordinate key in ', - '{:}, use only '.format(xcoords), + raise ValueError(''.join(['unknown coordinate key in [', + '{:}], use only: '.format(xcoords), '{:}'.format(data.columns)])) if not np.all([xkey.lower() in data.columns for xkey in xarray_coords[xcoords]]): - raise ValueError(''.join(['unknown coordinate key in ', + raise ValueError(''.join(['unknown data variable in [', '{:}'.format(xarray_coords[xcoords]), - ', use only {:}'.format( + '], use only: {:}'.format( data.columns)])) @@ -179,20 +179,22 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): xdatasets[0].merge(xdatasets[i]) # Test to see that all data was retrieved - if len(xdatasets[0].variables) != len(data.columns): - raise ValueError('coordinates not supplied for all data columns') + test_variables = [xkey for xkey in xdatasets[0].variables.keys()] + if len(test_variables) != len(data.columns): + raise ValueError(''.join(['coordinates not supplied for all data ', + 'columns: [{:}] != [{:}]'.format( + test_variables, data.columns)])) data = xdatasets[0] else: # Set the index to time, and put up a warning if there are duplicate - # times. This could mean the data should be stored as an xarray - # DataSet + # times. This could mean the data should be stored as an xarray Dataset data.index = time if np.any(time.duplicated()): - logger.warning(' '.join(["duplicated time indices, consider", - "specifing additional coordinates and", - "storing the data as an xarray Dataset"])) + logger.warning(''.join(["duplicated time indices, consider ", + "specifing additional coordinates and ", + "storing the data as an xarray Dataset"])) return data, meta From 3cfa630ae551ef5463e3e814eb9e633e9318f392 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 14 Aug 2020 08:31:04 -0400 Subject: [PATCH 065/231] BUG: merge not done in place Fixed bug introduced by assuming merge was done in place. --- pysatMadrigal/instruments/methods/madrigal.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 6535511..fe5ad1d 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -176,7 +176,7 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): # Merge all of the datasets for i in np.arange(1, len(xdatasets)): - xdatasets[0].merge(xdatasets[i]) + xdatasets[0] = xdatasets[0].merge(xdatasets[i]) # Test to see that all data was retrieved test_variables = [xkey for xkey in xdatasets[0].variables.keys()] From d32b71c98f2778ea0ef9df1f0367b354e99926df Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 14 Aug 2020 08:37:33 -0400 Subject: [PATCH 066/231] ENH: Squeeze out the madrigal keywords Remove the madrigal keywords as cooridinates for data variables, but keep them as float coordinates. --- pysatMadrigal/instruments/gnss_tec.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pysatMadrigal/instruments/gnss_tec.py b/pysatMadrigal/instruments/gnss_tec.py index 981f497..b85d665 100644 --- a/pysatMadrigal/instruments/gnss_tec.py +++ b/pysatMadrigal/instruments/gnss_tec.py @@ -187,6 +187,9 @@ def load(fnames, tag=None, sat_id=None): # Load the specified data data, meta = mad_meth.load(fnames, tag, sat_id, xarray_coords=xcoords[tag]) + # Squeeze the kindat and kinst 'coordinates', but keep them as floats + data = data.squeeze(dim=['kindat', 'kinst']) + return data, meta From e8a714a5754f629dd64ac582bd7a3e1b0ff92850 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 14 Aug 2020 09:01:32 -0400 Subject: [PATCH 067/231] DOC: VTEC example figure for docs Created docs directory and added VTEC figure for future examples. --- docs/figures/gnss_tec_vtec_example.png | Bin 0 -> 361749 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/figures/gnss_tec_vtec_example.png diff --git a/docs/figures/gnss_tec_vtec_example.png b/docs/figures/gnss_tec_vtec_example.png new file mode 100644 index 0000000000000000000000000000000000000000..29db5a8f6b864ddb47b9ad2d56d44efeb9967c30 GIT binary patch literal 361749 zcmeFZhdUr{jsqFl$@|3rHZ`ZDJCbc8BfD_+ zw7PTT_|IF;2Zk3!{E~t_-1pn& z!uEsAJM227CYd~XTN`UqYExJjh70CLHR^_>%$>~5&7A6_1Le0fpE~=$e~FaUHU6__ z@BjK0)Z0dO{(t|tiTD5ciNPxyiE8h33yPHd>LvH?mGOQ$c(dau3kyrE|NBi(AN{Xi zmE_{u1!VZ|EV5GWi+dtOtb_f-xpnq=tjr4=%S~_Iym`-_JxAzl8)E+%ZB4f=x%WRm zf#ds?Ek|(H+n>2FO<(OQayftgd?o+yp&_43Q4*h;o11GwO|7N}NMc^=MJ7cK!*ymU zKL7I*1orc8Qo^f=u$>EF%)IDeXJ^-z@9>W9c<_ABr!DP6rCb_Guj~h_%u@d6-+Lsm zUxaMm-n~J!bW+amt=uPmWSb?OjZTvwr=&NDK9hOpv^V+bxCRqvy)3gQ@zqCJG9SHq zb%f**m!6)Ef6cVG_);jyePip^t=a`rEG%&sqa-x!H$-lYsw;+{JA3xvN8>Gcub>Iz zf8Q_CtoG&Wo4ucd?Yz9a?%%)vJR^2P;qv7QA4&$+{(yjhk&fJSy5qz;{y)EBYkVm0 z5WD6eL{CXhL3@PmGXBQ$+*qx4gV!M$PyL)783u*7E2AWH|9}5#NEgo%S6O2RLM@wXUIrNFZ9%31{*kBA0uikw{c8FH@CQp5h7T< zCf55;i}nV&{PFlN4eM-@*}wwsRgwQU1&b)Qa=V7T{O4vzjy1ONssF-62hHx?yZ`sf zAN_CTM;qd{=^GfZ_3PzWowm2nq&vRc@lx2*q+fqM{D1D&vybGb@XVPyHa0dRKeCfe zq`0_tuFOve8q0nB{_e8f^6U+gbGAjZa-u4mpe7OO|F2&!sQ-P_w>ljHAIDl!z4x3E zsB7Q&pWkqv(~680UlGyr=ED91Ji6)vo+ICw@B8??j6cY{wIx;W7@d>7{h1hPj~dlo z|Fb%odj9uU-!@$5zw(ic0^o%w$~7=HUA z#yfu35qz&e^Q+U|{2t4Wq{)%M7hiQX8+o%qwREh-!1&O&#v(`n5d%G?C z?)~-s-S%C(WY3)0tg5Q|^rYKuXJ_YE=Yv={G?EUCHYYzEs*R|wdv^VT(_~j!@0W*m z6F-Edod1yV8I_#X*Js?fe}C`q-vLD~GqKK7eQjChf$@sj3XdN@7IXT|SQjG`$RKKS zgo9&yeT>XG{CHn~fA7f1BSvxik3WANTACR?mv29)oMWZal%TRD+p^Wi+uN0C2j1c4 z`l?H3p%c}@WOv2d%EI2mhXbBJr~Uf%>k&4#e|UL$Z#p>0uCFesmS6EumU+EAUeG7wAdl`V&$VT<#4jy)YVvKn z89yRT-CUWs##uVT&Q6|~n0WKnEss*8WP?Hx-5jgOh$Gzs6F=9vQEFln@JW52yti$q zpunPU#Tx~Mg^_D%X${o8*k4jo!l9SLjdj~5BO|l8xTu{n^x=aLj&@IF(9yix6ZD5q zy56s>JkQF?S|qcZ2Ipn4I{aLgS?#wZjpKRw`8p|vvc>L8`;dV?VR@#Ic((rY4>QgX zve8XDyVGg<`N~DkcB`}BFXNk1J}s%Ks@`0hHtj6&U?3K&*lpp@czf1D#Y3kGJ{lSt zXPmk#pYCyJr7ViAJGi7QIzl2N{fT#}c_EnRxhAoB%a*CWvRz-x%9uGhceH1k zdPhVs?4;(p-&f`rrRE_7>O^+`tE9;&8^+moEAE z`R(fb`IFeoXB;YX zJo?DUb*%oW?NjTkC!KzG68lvZ#^Z;dh*OD^7r7;+qJTq3#IA8gK=1rShx6heW`yJ( z8k&dL%Yn+EEf025pFw@%xBej%SFvN~&NHV@k<~??^m|Cf#KOE_Yn$9KKGzpV7@W0O@% zJv~0yb{}?`84|Yi;N;{a&MmQMI70oue-=LS^>y`He;F3$gP=O^;%(b<+f zJLBTRh0?;wy*;12W0CPb0}G5)jP&+07dZZ6X-PNYLlV1~#wjkYGu~ZljJNt5#-4s)Z;bnCUv$y#!Ohfm%wE-pUZ;f7Q36#*xwtNXHH zZh2)T!nAw)sl}BQ27_Tq5{Yzeuqreb!6-j*e0+TTEHc~IfJ2gJU0n-Eb0f#u+2xf0 z5s+PIi!L*qxOU%pb|WyA+c%`|--Zk^1t$f~q+o$lvY^l%k>lB=q@?_lzO=S# z5nqR7DIerIduynMt|7--@2a`ExpJ|vWy^t%T-*9T#nPr#2S}w60;aw?OfikSnWVW3 zZjG_)>+AcwMiEbTkXN6hudnYwdaY``+s&Krp9|dx=Frc3uTuZ`-Me?R((ZZAe|qj( z2v_Cb8Vg$-&#I@8_F0`78W>=GDRhHns6K}8^XJcw0h~_U%F~)}&hL%N-bzkRzq-K8 z%-mPaS9$<-q%nE7hs>8XHI#qt68HQBgTfq@z>_#jv1;!w^H;9i$Q~80hFY z&1#-A7Zn#%x^e>uT&sD0q7RukN$Q~DV+4|*dEEh|U(v-ST2Y(G?K^gm_|rSPlgfV7 zzozuKq^hP?_9NR;4kwPnl@WRG?-wBH`^xxG8I-u|xX-tnf3B{s9`G`_NY+ zXw}u9H3+{bn9!MSyu~t26aylAG!07>kXMQ{KT#?FVqwNI5Jj zDtf}{w|mMHy@e#jD?aj-{Kkh$v>5)Zq66dnCPPRp8?32So zo?WuCvSm-1W&PKgn;wcvN=lw^98u0P=qW{{UH@5--M4b!*s)^`ap$O}{`AU{GOV*V z@e2!UxNod2kc)n#|3Q{#*DoI@9ii|OTYL=3(M*}Lfc6L3Vg-}ebN7-yWRfLs8a>p~ z!y)yO1_lOY^(c=qYYCm*9JQKtuPI$Fp=z@vsV81*G=86zwZFe2P;2mETDoDe>cFbp z=+MXrhv#DNwm1vHTOC;g8NGm6nK2QUqor;%Ib3@LT(1z&jaO~1IEFH$y6Z0lZC%f8ZA%|xgx&AD;RoxT$`t|ErtXY!BUeW8{j>wsL>_1al{!gmr@fAfQ zgIuRfi!D9Kx*9(ZOS>1(nx?%yx^3IG6K?ZXaxrSmDY=`Jw=?@t(6PLDclC>peCs=6 zvD`SDRi8>n~x&G=Yaf6w)S&LS7J#pPu#O-odiGN87u;d&*?J3vNBhEHv= zlaKuU)!%43NKYbi)h5odV@0TeQo>{B*40okhz~trssF5iBy7=sZOauClQ-8}QeLRs z8d;&^<>FHKVA*;pbole9Pp6e4L@s8$)$?E=Q&Ur;mN9yPY{e4zXV zM!?Oa%M0eOaFN35Ue9@40z_hCJamZKjgg2|$MTM!g-#47zh^S%zLtGRuMv~j5gi{$ zX}_|FYRoVfIWmTSW(sfHx-~&U8Z|NK92P(W0v;HmfT`57e~&xd9JoA*pk z^3fq)B)HTQt|-@4hx5e&jxNsB%UtBS+z5dB?ZXYVB99f#>=Rvk&s_QT>a_OzD|bhY zP37NRj*$=L(op|-IK=?4ret~axcfBe*q$@m1&mpXi~WIY#_ujgeFnzXU~of5IIpBs z!#~v9dlx`8K_rJK-(y7tWZoOxfg?;1RLQy{rz}-3_dxXx%H4+~?$Zlf^n8A>D`|k{ zOwU6m&r`#7Q9;4MvD#gLN{(YKl#1cJ8r;Xo7*Dz$sErUkcjnB!SQpA{_a*z;-#-~H zT)1#B^@}=^(K*Nmz^#Ic;jwvt{@fI@Y@wJLs`b`P)-d(QN4%DQLXVhv8|%VnSo8>> z=qLxr`HV;v6_x9d13>WOwJ%xz86fR%N;6=vY)#X!_Qw;)-k$j3yuO-mVa#zMx%nD6 z1}*;;ve?*Ib-JTMLd5eBr1?Po+Vr3zfgJITvZ%;?OM=M&VnP;8+mBs}RJQiV8pdLK z+e*Dkxt6{+Hu9s^IZk#NG&t-tFuwh(QEqA`G~Z$PTDd=+?~u^L*;z*lMzK9J!}VH1 zlW#9Ze9N}fdh_nx@t0ZwsnN34FHX9N;Beh*YEmz=N9~UTKJ|?}Zrz^w51_`0Y9~{j z&`zgAD68ij9Y0tYgK6mtXeOz13fXjOXJ>$DKWZxf%VDd8pfIp9XpP?Lyj5mZ%f$cK4neYfYArH@o$x=ky1w_I>F_r8$nAnpb}{ z#y>~tj<4qTLomf6wt}aqk82_TI>YLZ?ZQ#YrLhCv_|O1&%xLSy|d@GvH5C zq+>DKCRV~yuCv>b!cSXSrNk?$C|$qKfr5W6%q$o2FJ#-rxbXX@8f!OFX2aWy4Bia6 zvo4dsl&`U9MBT_3)Comsz5-ava~KX7H3r+;4hE33JX3`T1m)OPx;pKrQ%)~-^T_&Q zKUJAMIXQVOk=8`VM`ole{Tmw_zhxMo1Ao%XK0)vUEL|^(LDG|{I)JWk#cob=5s?Bc z_dkBTyCuW6TUulKGT>0NkCL!IlZ;{ZBoipY!^iuNB?Yg@=D6?X8C>Z0su&=JXplT+ zM^r)>G=XOy-`%o}zIot<#=_6?k*37`)4&>6xlf!>2`zUgJAdIq(3%ZcMsJe8B65HU z@9r?(JJ{y)oKNV5&w!Op;o~U!AyUYys~@l*s!1Hlvo|^{E-wBWpxSj9Nb8{V^2kwe zH&RzUiL@hCH~S3EvP!z)$pak9WQK-@1YgGA{ru&N9mpc`%68(@l$88U(r~=4{^|MD zR&Xo1>lQuBkt1YCw{`pk$U;KgjkE5Pp3XNtRJ#kB5y4JaS+};P8&#Beth~ojTktZr zwWV@%Tk#saaQSk$)hkpu!BM|9s*3mbfxC!}0>^7{>DJG;e+@=;z46TsF3prjEONd_ zz;emfqj`=YtpLa6xi1Ou;&|h4F>`Y(H7_eZZ*EbH@!cj_`aj^{+0YWwOjv6&X-eqZX?4cmH1aiM#eqhzDP)Y!0=Efk)Xt;VvL)CO4O}~LLs8vcHwH!mslj%$v`U8s%LlKy&GOJK5JpYg(Qj2 z$zAMkFP^8Z*e$n?=^U8swiwUl#7{J9hZq^xXFQ*}O+N4MWC8j2^z_VgTS%*0X-U?i zLIIQ`!Vfxyvy00oJP9^yI~7$0a`H_`VR-a&x5K_ZdbHhfylpS!gZrQWUD=)-Cr<1= zB;oimLe$n|@?FFAZ$&N+L=6Ek;xJ&h7t$S^ zo%2l6h%Ary{j;#3waR#g6EE<6Eb9U(n5_ZQjL`LOWGJKe!oz8bii%z}TkORun%777 zf>vM~We9-x;@HWPhwzH>V8hCB@{}PKR1nsn?aaPh5&#WZ9El4gUWw4U%6zG1k*5hU z47%1?d3hFYZVH0h14ZAQAJ_3VKO{1n6(S#ZH!7;vfm}@Nx#x?kEh#!s?o50#a3Eeo zuEh(}O%K;o+1lEg)JGpWapDA_kMQc}-9eEi{f^kbZ{IgiwXNH>jitn2EAt)s{*DT~ z*dIa)5gxyO{USDHq9fOCpmMKO+xyezf)fbu6E>Y<8WB2Pt5fH!eth^Pv+=v9=MG}z zHTL!Tw^y5pRA6g6xiA?BoN{$zeXT9i)X&OW2Xc$_(!hQ~iGmEBbaHomicS_eIC+bU z3?6ZItd)vLOnCL6W0w!NwYM`%NYE3S6_V$BWMqnN2b|5b*pg^gWqH&+zYl8EG)DL8~Q`QIn+`htV*Q!?rz1vTJ*P zRie~uYJQ$L)eV41gkB-%ckn@Bp=73ceE=#1K+{1i+;&RJGT;Hk1CM^OD>Y(Lz4()= zQJA!dn1sZ&%BReW>noFj{;0)_h$R7MDFa{&wxuo7U=Aqu%2OwZx?EGGYDu*p)iLoZ z@Zsh=0~4)AUK)-?NT^i-t*LsV#SU_3&u)is((VrE-Zz$BdJw2ifMaqv#)~&HGSb8W z-_ZH|-Kp)&XMaUDt=ZvB`XdZVdQ2SG6(wORaqo#fYuKsMs~TAyARYzCMu? z`kfr2&}3%I9;lGlnv*nG*x1Tmt=_nCgW$f`uoejTevcApZ{E|;8a9%neW{Q8LjU!{ zKGHoKjzYyf0Z9wMoO>k?X@@H~B;*Nwe@v6}nr6Bo&kF|}GV(!R@D6eNfu}XOrqu`I z#-0g)O_8Q7TGLV&ofVY(Z$0ZsH~COM^XJbVnbkkuz>`hKH=vBjy$~=pv2?n1iy8v7 zyo?VXqrKu)4zQme_(PR+xs=QFBSN46*C?KmcAHnCI3%GC6{futW#UA^Jam@qMvA7H1rvu`=j1kkjj5PN+8Bo-3)30s~u*d!fi-Yn~R@ z%XA;d;U_k;4+KqU@j2Vq?uyhXNvBcw?&r%tO20!YBCW2kud@$_heSv7N;r-jS)moC ze=^dV9s`NApvwhf>sRDg76=EX4rofWzFC%8n^lWSSAo`9290N~Y5^iD;6otA47w?o zUkH@Fsd$}(r&Y-^yVyQVYG_a)BDxQvyzB6j|D=ZBzkg@umo5!4#977whFR3FfG{OE ztR#Y$x8>T#bj7gU-_u9vS7<+Fx}YvH@7uS}KkXzNn_N?(+Bx&Jw6wHqfa!gRVe&w` z{&LExxmKeM%MQ`mnSht+F^u^$`yf#x-7LmgS{-(==B2P=`b;ihaK?@AZz%#J3Q7u3Jm86utsbl$5mbj(|24z7 zVzw$OIGAOqE-HDZFjd-PnO0*3sL*s~sOE(lw_Z-o$Rr`Ueg(EU3z_7;x3@Rh5ue?M zEYx|0b51%iG2FX%?|xKN)WCBZUVUZv8gNL(fYvPY%ViZrk5NGMZ(~U1?LJ0E?iJIw zjkU**o(p)k)@O};OHXg1Zj(>`k;)dSYF|c1 zhP+IGzex`HN4!k~+Bs46gAnrPY?_|#KXi!4tS*w%ez?xsamy7bGL!{k@2Y`*9Sz^C zP2_ef9X|J@^)iY46!QQBCm@M`n&44nn$NYh7wwAxt~n&4RUs12u#E;)Et zpck_r|M6MvNx*?PCT}(dvTWT{LZBHpwuGX3nsS2a2cQ~y0YNoJAFituN6bjGI@xVs zT)DRb;7d^#5f;WSA9y%*A?Kfj?_`U;wXLnKZyYE%p_T4M?xP0Y6JE| z_h3*VDnSa}zbei5hFcBmVEVrPA6>5Wx~xarXjvbHn>$ufGfbgKNIqjvPdDo_`pxS?{ zDc20;>U;`iiauRM~zh7<~NYlCTOO<91z2Q5amiwW8$YcEYHU z*2ejXm5bszMKjBDmPCt)WLI!|!b06p_~llVLpdB%))@(L@yAHH^r0)V_A-4{(I*R? z*Os$CiBEPFA76R7c@Lx*tpUNGGV$-;F?4<~+eLW?s7%$W6Nj2;Gqq2>6tT8w9Bx8Q z3KF$7Y(G&RaL7{K2J(-AzP^&QbT&E=w<(N0SFiAH+O#P%yRfj(4fvu^M!Lzw%oc1FY6@+UOz$(PIi;f_p(JN$ZA%m0OsY$oS7fEqf)1 znQ~rIsCp)(3||_)H0>|qgbu{kei!k>5kjQqzg_}gqDy!9?74G_zsw=!f*QzC+75K{ejDFPrQXH0unn4NuZbqFD(UBUvCvI8i%;g~*y$ zmA2nSSCvbo1ss;m*kgJ2ZgO(+HDgn9)Yi5fYX+ieP>1%=aW@L0-x)3AW#j0nh%Wv| zka4zt0^b9FzHYd#bT}ETo#0X??)b*@moJNQywjH^L$B-~g)r_L%5_vY=i4=sHHA4J zB8@Y?x9$)*fcObr1-yNLg20szwTYld=gR@E-c{vUM2I`EU%Pfqz#oZY7rJrspYHv0 z@o)v`A|a;$a0~hy<=g**c8)N|FwWCoM@c$fEsWQ|0$=E{I#mIU=*|W4luv+ePd{%NliO^MU#Y(i$f|@K0_wBiTI~5rhh_?to1M^CWghB$FPVN zrLKxU?CH}xNI49VGZD5WLGBkfy+VC%`*0(KCFa-qg}4Ty8`uyT))KEsO0s0 zT89NWN>?Aw$CP8+ZPPfc4#-G+?|kPF)P-}Xy$!}AnO8n-7P`^+^$nw9824SIEfaT8 zN%ldl?3LuzV!<^Con$GStob2mC7Ur=AE>5lR6P!cT(e<}tMrJx0BB3|P& z{+f9NqCi1efYgGgpfMevmV28ff5za+qe*=8E)X<`iUR}pDH%jKemH*5cQAKE?)st) z*8$uOZ`!msJ~;kTMKd!oSW*z&jnc5ho%65Y3H{8h+?P8UQ9&ztJH@2)CEpp&U;TkH zVg9Lx#k%wNvPy{lFceY6@^k*QSEp%T)FQrAUY*($GUJZz%)F=yW+&o8;hb|THN*cT1N^X1SN9;2Dgy7VlKOcc>Q?6e! zpp1g*@_@+E{m?a)b54tcS(k3C7n1r--hjnr#?Z`afSnVaRRPb@CeDxw?a71t#?2gqK#to4Kk;a&) zs6)_G+3CV1`9!{=5KJLqP#D9vLknG!rJt~3>d^mJ7oi9Q6`z^~=4tm^Sw^}R4qy~# zp-b1vVh6c@r^TDkCsTneJk2dj7Zjm#718V)*qWenw0+l(S+9YdZRgINOVP{atu~N) zR`~oDI-r7@*Tj+N&w&I9_!qm*DdYs5GO{;H(@NH)1RD}`@vnIU4QiyTxR50uMzEuj z$qmS42k0vF2Y7AjpP!Ho@*8Jb9*VGKHTGd_b*vSb`hHpFSCnEn$Wt__Pe{(cF0#L3$5WdZ{C>DCTk>zaS3)K*p)Kdtx$yilAy~7 z_S=(PJam(78AqYAnkhZr_*-ojin2o_TgUKRBtd7>0f_qHkw2B5IC#lMopjTj-lhV2 zu-N;M=>Ss}Nc?r2ai0um9P~{ikZ=Xs7m3J&nntT`q$zxRTpN91jxatkG41(mVuA3K z@7kPELVQrQO!QORZ@g1_5v!dB$bG&%WiHYYUW+|vOlZGf7xIlR^;nt6^%c3X5dyeA zW;x!L;ajWw0}QLJ-PHZDptSU1s>4#>B(+pkgH4p43`eckgSfMn_M?-&&!#gEr_a9o zmgC5`)7c9`L~_XgFFCMfhi@`0^(-Dw*|S`?PEaHgIXgOW&7KB`ePI%v7h#`hYtxpi zU=T2Q6uTsl3~YD7aCPgt;cmt5^2VAs5c*-&u=2@(qli{W)-Tom_U&?l1^2&Q7m!AL zn(8Xil>s6qi(!8eInJH46Ky(?}Gw z@U8?;)l09`BrLz7V3O8vHl=M2Mje(}Uz8PCN3uv3NDB<4`hi4$l^dwGuYxY$x)j!s z%5c6IuKubC@42WYu9GJXZj;Y#{%7aNT04I-u?I3*#L2dz*s>nI=_1L)5`fW!VFZ3nJ&q2Hg@Iey1Pf{BTV*eC&;QKv%?U&S0po|;5<-@+kPG5h>)d*K;; zmVA;9U06ZjMsr8cd_Q&Ii0^JLFVNsrvls6pIx!%I^3Ct465Hj_7q^@0lPfDHMW2)e zaeJ#>Qey?am1!5x7u^x85Xxn`IEkJQ{0bQ_k~91fxZ2a32hkta2MH zx;FZd1O&R!EsYxsX@uD3S1ZQcs&1t?&?QOm5o5NuF0&(h(e`|PwWhgQ!~U%RTV<`- zyUBe6_JR<$BD6BvH@ZkK1m9h(c;o1PzR< zEK45)`$XUFzKJ`0K{__`Hpaqe8v*!f2n|C8U^6C^5^ISQnpg(Yek3$CN2z%8{csnR z4%GDDnTrbddHAp&+D@>Y@I14HyGZ7s!*!3Pr6p$bx=7!_EzedcLLrus+G4!cAH!zi zJ<9T>GIjYqI?~1FZ|W*xD_|{k;!%CGUH8NFtBy9HzATns{@uP017=hN?m~a!NtN4R z6*ctRa{^sxb`+O3J&Vve^TcoOhC0HA^jv?-{ntra>ARs3luetO+0%F{g!A%9GRT?@ zPfYO8?b^K?D;K7gX>vgb0@0V}n#qI<$G?teA$b|qlT`QUDRn5Pn*99dgcI0iHo9HA zcBwgX3%5_(O+Y^mrg=zqYcw}E_Z(vTKz*_wz{>cHsiHvj)al>F{ctS-u_TM+>>Ivs zuV{si+CM0`Q#tfZRE1*poXH8wLKVDu`?jW|QqLsQ(dFf3g>p(AL*4GFXJ(4S@jwM( z9_d^^kL(}=&pnM67Hw;iqSWQZ#q*veevck~e15`sR)YPh9r(L)?AgZ@#&AXe z=qxYCyonA+ z5-xIIQXTF#f{{f)6I)IgjSTcO<7S7;p|-*;biRD7Ir-g)^YW0U{f;YuCvxGr9u;AA zii6RY0aTmKbTy}GO~!`5EoTnZE5izK`)wyGZ7jM!+js61cqP#oE*}@P*7d2)^bSEM z#rMA{E|wV$t22=ksdkw1Ok~QkuQNMA4Bcy>#!}AtB*dZQh3|? zz;R8A=;&yODbU#u5naj-f~8cz_9oDOG&2RAWoE1cT{%pLgh=k~Q04K$5YFHTtM|$g z^wn7aV6p;X&z`+mbhgMts~jm%&|h3ql5qSb1=x<-U9?!zAWP8C&r}iqC0pC6n$p`A z2@ZxHS1;@%U!kour057fgHIL83(R#7a5M}nw&hP$g#}RA3yvpvTuNxT-ZMBDdQ~ZA zp$>gew(gZXt{u(<%3O$Qk>7q7h3|a1V0C`!YwrAsEpKJ`?9&rdqf7OC8!OoJbyk{b zCu0U)u58(|g<9{D5L_j|aO$kBGVP5nzkrw6jC1VQ&HirIe7$mkXH6k`oX_C9hmqt9 z+LlivBdwG@gGHVHTp=-WL`i!PlD(+dJG7`#DK$(Z2&;1@>o!Fi!oTq5EtpdONJAW5 z`TafGrJg6(7fLsNMcE?#;cURj4KL9oTOCo(82Ho^o_5{hnjxf0Q(h$aN<-lFkq5mRBA|gum#>u z3QYPCvY3B-d_1RgH2pw;C5jEv^t8Pl~lEo5_G|ldStu zhR_)bHt75Q5+3iWI{CLls<{OmF28L#@{KFNk~8cF6*MZsBTnkH&crrb5IP?zk0+{B zZ%cgOMf>z8hrXdv+R#N@IG}$HQ!hnu10kREfQU%^%|qD zQOi1A68b+NE)qoJDZ&AT1seah&dyH40t#E@EAYDn@Y?VY;nU!f4X_}fm&5sG5zjLP z_B0wb37SSUAph^8|MlNP*CgTen}Ujp3i^S_mqpmzC@sj;?U#)5ckR0~`#{@4dHP-v zPi@V$3-(#3H-}koZ`L}0e*0Uc7xw^7Uff!#wJ0rOI&p2QS$%X=?>}SE-I%ezlksVU zMF2d|gcfrZr-5NFCJARv&(3~u+@VQo3ADU=^=j~mY~J@a#B)fDvLGq)Lp&0L(=*x1>tM98XmvLoSy*I=Nr`t^`KrzB9_uXBdw{`=A4 zL9}!;=h{Cn6=qk4@kI2k?9BHFLGLayDvJ8hWDN2O2ZI+xJ{HP5VPX%TS{}^Wn%}BZ z+g|)kYTYEX-#b57%Q&YQZ}b`&z?FxI5#C>%6=UdhWMq)h2%8BQq%6_lg@YE|x1T-q znVAHj$=q}kCx^i6v(lRI!Rlu2_&`|l)@}yl1XODN8Rj5-K8Zw<0Hz6^f&|)wMDIGd z6U{i3dGKC17f%arB?;4OzYG=}Lc^OQ?6{zxzyC9T$a%@OZ_uI=t_tT11Z9s{+x#Hg z;J&IJ(Jm@Yxr7V}ZZTWOmdknx9qG0a_S4-j472F>4=wC|wX#Nt+jJq8jOzEYW0=-LgiGtfB6+@t#n9x>INgz< z<-bo~!Ip2@)7<4WQpK0sEwr`%0*@1gsy##I;Myx@tE+B2@S79TMN`gx^sABhiG~q^!E00sYfgk&Kqo3J^w*8oDtQ(LeFhymh}FE{-?o<&>V%HwvhG@A%I9lw7^uA3tVnWS8VpC` zcw|@_e9V-P1A;S9iAI}er(s`%E&qHuR3aOt8_yoJFWX(T$q`c&-N{j_Uoiv+=qv1f zreb2ytx_klpOZ}a?RNz_+$s*VtV-x*>a@I!p)u$vNh_xnAsfB?q(7J~aIAoy-ulL4 zS4;Cm9S$6As`~GqDobS;~p%#FXXcHX$Vsd;8oH4$F2f724_I?9|`S; z@PNE?!RG|H5e1#V*MuL4nMWy6bB1!nLa3g{ZYjT2q9ZK=GR`e;HcV6b*4|DBwkwdp z>-p>Q2CLKEs@mFG|4>>pbc+dbjU^vGbT(U5;h+-&eh_qGF*`(8PDp#D>&uGf0r=+g zhJX05VZ>OK>XT=4ZOeAGnr41k)Q~Puqp@LXex)%S6lna!=a%+mw{yR@30TzI{2Coi zvhZYUUmi<2sOM?u$RlV|JN!rIG>mp8N)sLrAq$QV)8zlC;)2_r z&}*>aWBQGHOmLi|d%O#S1$W_{sNyw2s3pUXZf2Z-bh90`ZDK7G&0y01*r01QP&%zvGM|EHL z>E!w|7j+p4T?U5YK*SnhZrHwix4el7E1VHW?w^7*KX9?zE^{Zb0pRZfybBLRU%4e- zsaro+{(i3iWmZ;}2{#70Iqc=Lg9Xs2(v_Lg7WLl z0f$c}oeF&s2*5Z%m2!(`V%LZv*Yp3#-O!a^n~9aIdF{2az6iMkZU#YrszR(5f4JA1KYRvQ6DETB#x=pgCLhA|=ZEn)8EoZj-A3mvj`@#`ezzHuQEiCBc z+>y(bzKT@81gzTlm13k1q3yi!c%m(13!zPhhimzG5x4>c(u@{T4g+S;UR_UpCR{mD zp_^^-K=$G87a8IjO3u8nZLE5csIriB{bTEs^H5Ebj3$NTzN#JyVq87ZSpe?~eMI{{tQ zs%fCl7sG?v}C7x>8YIo+Ocz9mPZna*Nu(fBzIZF@l=LC#{y+n4Q*lo0O~-rUrG0 zCKgYA6W)^cI(geuA;m-9&pLgqkO7;;;8G)Weu-OL#8MIz9X>#G&G!RnSbZBF0seCQ z-ARWDF|CYi9qMS4tHZbUr7c-2{btX{O{7wTjB5`}tYA@N_nIf>+cM4m4#~xG%i4rV zV}=G&j|r_L^os!{osZpFyXXZ4^>_s_1Xx>d6Ynhg(kcUEKAu7V;T$nD5+ zEaA=#+?uj+OA{F7+C=?h1P76r`&(|WM>pf7vm8Ad1Rn9D4G!0*PpYFFo?aa=G|!*e ztH$ZFnla}vl2Y^O(H@#3%smC!j%hInNXK{k*>iLI2#u9c4u#*H#uj7LJ#ES$}3`WMOv_@c#*K7&PIP`ckx0&e)S` zRO1z1qtW5pa$e_Q=ZdtrI338CS#lXI98O{WKlAKlv+V}W)UxH!j0yE`#<&37oba(9f}m`Kmk9SAtovL4yi(NS%) z(c-usO-(8mK~O{I(X<|iEPkOJ)2?t0zWULo^Q3buW$45il7lSH`P&V676YM-8e^2n zd48Nu#HKT0rZ5P2s-uaDz9#;1jC638@nH!^jxX#h-Ci380!HXFIeJdY<0PAm{X3t}N#FXz7h z2(%=;0sdJ0Bdn}vL+u3hw)CKsvKen7r+8|8N1z;wd!W{w(|(f4(rc1naUf2?cG>jT zLI12Rc3eTqZm*|oS(iwbv+0m=`W-o1eLg}V&C^oCtKJuol8-@aX7PA)yuH=@Z<{R$dm2^(4m%(~ z-WP%Y)*a1%=WeT12f{XyuS<4xGkLAv1%Hd1A!TG`$pTHY^?R)^y=%xPiJ;t|dLmy< zM@zY|&?Q6B2W~uY2vWM6^UTnbSaHD+@JwP(j;=Bb~IzQXwUn^N|mmD6`JKIrnG{r<|?P%&6i9*UOw)D#?^sm_-a6CmB2 zj3d`;p8WngF77B=sz>Rxl6Q>akCFy7LORFX7yn#E#zq1>G!PvEMWtQmUFvC=4B3o< zxBF5q9aM*Nmed|cW+JARqdH)(g<-O6yDXOcVL=SSVlX4gKY8FpB^25V(eR+1bsUjbNaISyE+cnJC>Ul>dRCM4ha+<4R=c zMax@QjIL~i>#er}4S6EvPYJivVzjkfg30B|8JfNL9GVn=&q5YjtbrUz7tq%#>6#~B6# zEaBd&Kxb8hPHP8b6qt0AOx)46_YHIzZ#&V5~mHFzfi93)VJk%=gohWDh$brFj`D<)+mwpSAACWxzJOg+$ZE@cq z`dAkW2BGlUi%62;(7&KdCOsEE%s`lt(cv+r#dKqPsoAAxD{00si)LnN5KcbRga75r zb2dK7So#IQsm@X_qub@dP{pg)?`bg+4TUFOuotrr)^oivli6})Y1b7?Fht4rMHnY6 z-YN``YJC%D?KRJAU!AVz^Bt=3AMm8x`0e)xU7V^qA@ z0}}-!&)4;04AVDYp|?@v#a*l>JS@c6V61reiG`JSm}Jhp*yb=)lQG)f`%=`Fmu?p& zrG~p%1nMk&k;)B`L*MWu7@s^}ZeIJ+wA>=a8~$uyE;hOi6g?C3gV`TI7zuxH@DwuL z&(W^J7lTl_!+StSe*hIjB7VtB2$W{*ua*{_sC)YPEgN4#~%_KcgoXOg2oy@7Q; za|+HM4v`kv4l`gbD4W*V<#6aIn1H(V9?^yT2L$J-;m5IVY*)W_0e0%3ac&!hQcVa@ zTBbw1*@GDQ1_ufEUs+k{$6gB<%e9>Ty-gS3_qn*kTe{>E{t!AnCZ)aB^@oQQ9Eh-; zZ9w-Mwnow-QVR7UK0?$e??JUBi6jTv5hJN|I1-VuS^ofcU4xY1JLpzHB#T@$FE5l2 zc%CxmZE>|i8&eWFQNVxVXCV!eN@muE@Quc;YzohmlW~az3rq5UO&ogw_$;tT4qbNT_ejn9i9x5d}Z1d5Ays z*OR|>bm7P~jkpTM!5^sfg;W4q2ni~2NAB~Bhi3;#$^#T$$gm@HB)FhC!zN|J#Bvug z|x~lChVeJ{Gc!`sGx3sjB#rT1bkM1qm=ez~;cVSHDyk=}%tN!HH z_13gQ?j9a&{ea6GtpZ*xW?vue&7Ay+&DJiP4wy7~TYss5@PeaN5bTc;ERKS+;~25n zOQ;@9Q17o9H*5s0Y|qA6n1PoOoEmJ;ZU%#$Pl0}cnU!68Zzy{jlK1f_A9wa8^qkVe{+H@8qb+iFf-@}c~oJ=fGD^~ zNZIY}k79!%3s$dJ&S1aVU{EFXBONn=PK1zL-VnP(3Rz)3i(sqOzEGaB)OKV+wjIa& zDDI5-q7AY18%|$#6>&f^CH~9oiO95>)wYByYkqPtEK%TDNXUNRn`3S<@a^=&wR0Mi z)YtkwIWXHV>qGGg;h@eS%R|kj{?z{`z8(HX0b}8}cJ}t4{pkcvCIyYlDTo-ZQ%%-PC8h~T&JZs!GIftIr0Iv?SYdnA zy~e{>MZNpbGqd~MDIPLSxSo(p)aD|$KlPe~`x{)~OsE|^A#Nly8?rpi(SVL|OMZEl z2>%puc?h@ehssx_$!hNc#+A^E{~26-Cpi%I-o(t=*nA%C_owD7&f*+?!eH%F@D^Q4 zB%$a0SMOO=Y?j3xFobU_)c>5E+-v-X7|pT}25N$yei)Y*h%VZi*F4`u=rehxr83J4 zlj+V|9_;ztvvwM;lb)WQr&pn|kYjFI^_9R_L!#QTc8_H&)VFt+nL_A=Fc3-1)U_Lb zhZV)toW%B>kohvFkeG-!mLCrE^*saAu)2X~7c!@H`-dCf|G*F34`Q4&;Ds3pU`BXN zfM2=#=|8^=q=dYF2Gm{9pXAYc0_VsCHs;jKzff!Ue^ATb-agoXUH%fZHf0Rs$&LN$ z%ohZ1U~`Khh7K_Aqq%x-2Hv`F7$hc;H~4D~iH-?YHqJtQ5}s6}SUK&(rY+>J0KYO9 z=uWx{VW{H4*RN+oD*PTl{zN6SN(S~-9Io~(;%YDUpJ+U&)Y3ubq{Yu7HD3GE9lXld zAAgfQxaQ*TYlO3bIwEL7*0|gs)>%r{{>iY9hmbIECkZu!R&q08bN`A)$$ea0bOkwF z9~IVpcmZ*xA_)KeNh-g10%-wxoUM_iTVouYclD8@j_zC1!H1bj^jA%SK*rC zP*2!HRS5> zqu5QdzjgyTg*w2H222PL&CzLTH0vaCsRS+}Xb8QCas{siV*CZn zPKi^64=Bkx83R>aUdII77jMRSjvO7tPmDCi`wff@f=|Ie$R!e;k+RlyrN-${xzH>D zJlh5Sb+Ct-jt7TZ@Py{WAQx5biK}zAB7TS|WVq0mpYGX=K>zI2?eP$anizv5y3^z7 zX4a=M;KybRN-m46GF7^@Q$6Z>pKgdCoS5G#EnB2b)~ZaeV)ToJMIAs&L3ElWAXL0GM-XkafC61xUmMr zAHDfJ`@x-_>r3Xu05R6M0;zu^#2hRi=kH-dwr&J*hZiC}cnT3kTx&xZF}u=LZr&z+F4@MklfZs0cZ?@y%lscQk#7RvJ25PjC&*Q7I|?44u330gRl5ksN=Vj;e#Y z5|;;rgoSwGiW!_Re<%xa=*4U2-F$sPkr>-jGdEsBmI#1iJ8H0iv)54QWb3~C>)l4X z%+m5Qy$ozz$!xHhjpj(O?<^9ZrH(F!~x_ILy)+%;|6Bb(Q#~SCu3k@ z3IrJ^8WqIVOARZ_xLOEW;$FloQFI8+6xRpQg^opGYDM+7i+Rsv{CQl*VLod|aA~5p z5Us{pT(1QQ-lkf{9u%&);6D(1e(f9A}Y14|7-Y{J$*4xm(q7T06+lh|&; zFPR>R`~=Ff*P86;D&FjxSt+^ukvkes!(X@PPA@d{&eTXr*VC5CX-Q+25U z^VYPKQu_l_V`MuDh(@k<#%8>_JRC+RFkl^L9?%30r0_Nmj48Yw%57L;46}Z03#K-$ zt?)taI||O?+Fc5ddggI0!dz&oK->w(u?uF=Sh80OwPj^;e`n%d2^9h6o@6Z^$RV-F zm4pX?8p_H+yfrln7jTEho40R$VWgiLX*f!_m@;rh0TGErdp-yb+V&!xAM#cMg50~` zy?fVJ<}#f)?vgv5&PImIP>w;&6D-1gC`##egVPbC=;*OPo^U-G1}No+FeYTmM`$uX zLjJ>zQS2XdQwb@9@IqnakOs5o`$5|eK)7Zvg{5Y$aZLR8x7Xg<`S$Td`Gk$(AdV*s zS`V0*KF^3b2&G6d6%4c~2oTM1R-{%II%0aLp+18?y&J|hHU}J!ZzDy^xWwv3*W_I~ zL9+zIK=Fhr3H-UT05Jp;dVHO!=|>E7^{Sq=xTcbZt}a86?~#-9Kt2!9!7(&0$jjRf zCE>z=mb>IuwRsc`J6=tWUGIG>zt01to)WN8xws8b&|0EjucxrC#c90 zTSMSUVyc`d7?@ap45l?TRLg)_?)}6JHeP1;RIO)_LV|B4tq)5cXcn2gTEePajEgJFSV@N0RwFHA4Qu%aE>WEt>*6IY=SBOpX1zQ}^^ zD&Kne@L^t@;~k2^KSOu(=KpKq=lP_ zxG?5gdN0rx>q4siq)y_R9=z?h0_bRI6Mn4gGVR#0BNhnW^<)d09=_1n9z!7h8`Kz? zgBbV~q>I?8ulP1j3@)Z?r6D^;sON&PadjjyDn`pbw}3C*wV0QVcT+Yyv7% z^GbakW&?@I=DwB5((s=$Oyc%uMM@K`<`{Krhgpv*c+4M$2i$4`lz;}^jylVS+(qO$<)LoQgEC2MLB6mvrsJ+*gw&6K<)qY059rtPjt?q6u|yPvj>L3xs3P`Fr34Zk2v3oj|}kP~;bzybJesq;rihac8H`QHO*_LiKm zdHi4Gy@y}V`}@bAy^lSTz4wSjRK~IQNP`rWRWdWu;2;iVWJ_fxZIVjMPN`hjD#@*lZ^OdtK;=kA+cxi?BXMR}A=uRl1)_gzWcp_BS zsE#4E&6&{~FFkT;z0k?SMZ%|5c1oFrWLqF4``|Ii%gN z*X2YAF`H#%GD@ZzXjTo@x4R@=VM#$>T8&?@_u#W)bee78i+0iD8&FC-J;a;uaO-)K zS`0^i#S}B9JYZdN!rD_Edss-jVWHcs8*fSgnBxB@kp57-;UHAyX6fOb;ihj~+JRq< zbc*ghdQ?vV_qV<~(#?`?_E)U#Cm>X>6a8~o8_ z+yR2(5@V~Hfn%n2RJTXXw2oPV{N#pd;*j`Lwxd+h-=0^qXv_rJ4IDToU4Cgu2S*13 zHHLWx=^wtwTR2GHQM@=9H#_$wue$I-bIl7}y_Jg3^x6zqB<3W;O3pt#lX!&)D>K*= z(p8U2;@t}-=uok(EHsAW5J_lu=>NP+NR0219kkmiOI@U9Sh>^>dX`y1_nY_-u@Qbf`NlajB&g}FR(fdA*A@l^qYTa@1-672j^;( z{`tk)4h@Fgj3;{1qZgdFwpqxXMeg%z$w2&pmObfOg!}eDvR@D$6{91w7>rl?G2(Yz z$q|xin3UTHuJO3oS)C^W;_p=*9X=Zr`}gL}%XB`G%58NTFK;<~4#m{1OFOR0_a~$G z)4S!a`?wqr$|OHn21cclzILtC;Q_riqKs<)sZ`A^TeR54XCAny?NN@bAaHW|qCwYG zFcP@SoWqUPFMIfhe}OH0|Lxnl+drDprR#TI(>5)~q2UZO|2&OYh^D7rk?NC}aCu+y zBV%=1XfWa?PfpJVzA=*iumPo5DoEWeH>Hn~&IpRDol-6f12u9zW}$x8B0SMt1U=nM_ZZtsIu4N9^P zTChDxKkky}Pj19pPUK<&&H>`1(#L5tPb%G6xn#r(j^PU0XS>LHMtls9k=^Ck5p*XZ zN^e?~EZ!ONE*HAlM_JH@lW`(xnICM^f5oP7FAt^_+~E(5Ltz}nXbWpu(_w2~^}@%g zH6P3GNj-HSBD0B2VY{aAmue|R(h!4CzYph4)@kx+WlJ0h#tI-Mx+_}lPiOWW zzh6SdSgoQokIIX*qg)XJ&`K_RKA~RYHg{oYYFeK8@!m_?Gn+bc?c%Nr7cmGzFX0~J z=7YAHfqvSH2nGV{UTUg-z((l<@XCduJGk_WOp%CC1t@m*yeEH%9K6ZRv})&6ZYn5e zJ1X)i_8l%}<+#!oxyOzAfq>W3bqA-&1BfvInBca0MCN`gE309^NO46#ow2ajDmiJ! zQLWC8-S!8;XI`%_n!zCB%$Z)|NLYmZFc!8{r_h`!x-o_(AjZkg~{fbDWE-$Ttt*tG^ zTs=6;`y{~c03y&?H)y|CS37#qcKw><-_skuv_npToG`I_?bD|RWEn+h1L)qv1VIsK z@{~?~oOK=K;+SD#mw~is#HpbMhvj@@rFECb)oj@SZ|WN+-v-ec$al4C+@L{&s0_(~ z4nF0RU@ahWTcP*d3-Ry{O0>pemfOOG>Y=RM3I&9R%Mt{HhQw>RFgLKmK?TC)9e{;Y08}JeTtW6Z|hUv$VSsM`hkPgm4pk#JsAm$t$X#V$^bKd>yn0+_QN;|!M3$Cw2U{_E;ec6`g z=|dvYMhr@r%yl{uBK9hf`S|q=Ob%M<;PvCpQ3k%p>{Pp3V-MZWH15FjpVysh>Qgb4 zm3b$QaR%5}1Zdm0kH&?R>c<|e^8jyT*ay@ZeP>{S#F4!~?h;`aQyJ?r_m6K3a&9JG z#Q(Gh<@n-KBwoahjK>M}{(7PPyIt~RYHAl3Ea$N>2dc+#3tf4M_PUMNzm<=HnBd_tBT) ze%+6X%BdG#K1!ZOSZFloitJfcO+EK>uLYfwnY15{Hym`PNw zFT<^OQcOSfD$>1t^ytxI-vR^$Ejo3w$Cywe6but(RGxtmy?TIVVP*ExaH}0Bh8m=; zJ$+GSF|&R0Mma^IjF2~qDw=i___m?Ll!B@;I|B8?cFqx_VGg>7nv>gk0u7m{K9BAZ zA-!dX4kcCA-(wTwqNBeVSZH5gP>=um<>t)+jT<-q3zA&EJ*Q60wBfm!>)FM`0)DT@ z7!MNUOE+RXB(N~FRo$Ydz-C}n(0VlBti0=nKPOM_jsgcbB;H5lhWQsK)+;G3y%!rB zo27YqB|}G>TTGO!ninWe9`B&x2>4UUt(dkROtwtn2k_JGd1mJ zeM)V9NEsW<-4b;Ob1Qu$hdfdHZS&vncxICSHRHH>lw%_48lnB?p9`4AJIMDj>EMJi zOvvreHHimt!(8Gs3=H$s($ljk{nTE*0Nstca^hS~aaTBS;ARl+QRuOjD97~Pc))8a zqEoX;=A4!1I?V*V0$=ao7ie72^=_V;e8KPC9w+|x(hF#ewomaf2}*k7HJ?V}-HR75 zYPx2kYdQOmf&NVmvBjv7Cjt0}8w{5ZviLwvUyom%-AliP3Z+*D;Ymi)#XY}2jMy1X z+i>GhDltGQ&hqkANC5lN)F5x2us_mi%q#nN;jDD~*3i8C%A^&1(LET(5%x*R$(yHl z>M<~%u8;7hjz2*3XKr+qwpEWF*@cXV_UzNA&x12eHBuj#{Cad=&1;HSepuz*v~K|^ zla$j4Z*Zw^?Ax|X3gtjO|*CnPOm_zce7Xtb{2~zpC@O2{p`21 zpfzMd#BMlkAKGM(pUe38|M>Znf*75wLsfRn9EX>&Q8KfTh4&ARFGLc=6YfO zZMwk)K1Cus+2=9Le!rdRgkb42JU%731svS}xsz&h^5O~m=JcabVAGzL-$!>Xi`Ekaq_%;RJSwav&p16z zsK;=lKOiKD%H#9H$?1YE!QF=8wQH(6W2@y8$4RbSCq6;&luVfvRInKpqO z&n<6=YV^|fTng7?(Y7_;{zN85(3f%LuP#%a6rK&`q3l$%si122@8i2T=IGFS)z`=G zu6;&zz03Xh7RNd=q<#qYM(e8)6(V6t>svK}$aR6~n5CWq(H@Ebc54ZR~t9g#yBt(f)^&(o9 zQ$zMWaXUFgzvI@eSymP+R;}6(nJ5AnvnmlU_UQ5I9wD0;KS6xu^~H$tSp3U|-S=KS zB+5|!Spy`_D-XcZoDtO#0Ie&VwEoncM0S(`6q-F5lnDnM98~%nP`e0kFEqSVffKbv zolE28Fq-Nx&E{j&)Gkp>mVlOmpVpGUsqXKqsvB(IQGqjp-r@bHPy2W{7fD24sVG2q z=DQpJeX~AyfvQ}}Bgyud6-h3^U`ujI_wKc5n!#)C#S)M&-bV-K;-7!F!Vje*M{Ymq zcS+gue;(e6MRhI^>E$7D*e+84iwB!!ac(n$ag#;Ud78#!e_zp>7ytYJ8Slv%q_0r( zGyU)Xr+E1H0r>q#YyLgz->~-o$N&7~-apHt=6@z4Y=rs~n89Q;!|~fSY0Nh5IPyv8 zqfB7k0ZgXfag1bb0&n&^g`dDqZnK~^!T4hEd$u>nhAQUTqA zjqOgf>z6KHMswl-fT4sFdjZO+Nl2IJZq<`&6u#vPWpNC%51A#C^8t}t! z_x~9u#`BfpPbE+m@Oo-Ux#r#$a`GgMkfr?q$ zRtUseO0`C2ppUN-;WB&14B3xxxU1%2=;jQ)JOAwZ* zv?`7WlnW##bL~PkPYXGR=HeaG!@RzlmfHNw^=0@3E!L8zA;eji7lZBN{mCn zuDG=xPs(c4u;KXe<98WbAy@fcRHU**{nr&a<<@dRy34P)p-873J*3nldF$!6qf+=Q zCSqMm(2bmZoi?lO{5eQkgABxFYL#m;#|8XaP89J7=1@oRTfRg58y^-?S@E}km+L&?=_30BTS48rZ@AW|jc<~E4VsQuHcFIUf_t54rs zfp&G^_B#4_c}m9(HAh3h{qV2r{Y{?PQI#6P)rekmM%yfEXMfwyW99puIn%+}R+|9hD$k9boy5tS2GVLp^b1WkyT5MCNX9-}@4)*kA8fKQUG&Wn6@D zYP@J|=ySgaWf~kUAX5h@cEtjiUaZk=OSd`B2f=33A79mIT>%pyeB8m4*FC9sC`W>> zKKqqS2L2j}WB_eCyQIpeIBcu7R;_dJqSwV*-$7-v8em2H#qd4*7~4~%_qV8*Ywxeg z3Jn!xyg_7DdV|pzO+pcOFFn00`QQ;TD(=V!5e0;Vp5yrx zWHlzzSW?5;we=Wc#Drw^+Mgll!05j@JT-}_Ki5Gv{5Wefm7BJsASR(1RaaH^ z`Ql*^p5q%Er~c0VobyZ0_Z>3h7kL3d^4S67w-IU+@uWrb6P%mcem%x=YuBTV=T z|k1}AGS&&BQLn`g|L^(O(NWv5PF zS);dZ-HLp8V7oy&hCip=;)oR^yEo#H(PvZ5ran_QVEg`Gu$9v=YJ&F<0J*x`4 zFL;LA=(~)JJrHjo!L}YFt80x%8YSac!u8U8(KfNSZ`fVjyU~2V{`fg!TPf#Z54ZgK z&(RVO#gmuE~Rg4TSZCU;YRCP>MclzRT;qFOZi3a1gx?Ls{C^v$}20@vV7` z2l|=*lH0ayso0xZkzU`aA(LA29mM^W&voVNzK`1wz{|%ZKPlcaJ~LP*Pm#VHsB%`f38a71oQ{!i)lRP8q^(mltAhdmT=rn^Q0Di+ar`RnW4J^@~yA8QKQuKsbAxs;1on zIarSid--h#S$V~&m2vO*$HPw37QM_su}EOnHH8Jm088s+*9~W$5dmNLEuX|bq^G#B zpX@)=BaeYT#4nR+Wd7B*(v=JJ3)^1u+V>A|J8{(-)M^?1;W+cp_~v!MSL41A7N7|+ zwY912D2gc}Ed+mqv13b*=#sLZ7q%}a&wsBhPG17P4ECHXOE_*! z0@|i)PjjpkBt=L^|EC7jA&0bqd^VtZufBZ+dU4Q2tfEn#GXlQz$!FnUKuhcHTpvt6 zm&y_JVUl;64i4js9pSVlQxwoSK)r~!`*IC~AL*tO@yn<)>n|C^NF5Q{vvJR5yoh`;(HkyI z@KsR|qhAsC`1WR)XzNlA<)g@6$?>=XHVtgeBobcHgKVlRx5>cYo=ttwFvutr&gj`z zU4fpmj&5?-I12E+v|Mw7AoJQI*?e_&AmReKL{M_mN8wRi1WTfIrHUJ)bZh91z`*vj zFT@euF?230Wt;2K=R|u0`}b5sl}~+p%UR369UR(XV|?>SZ%C03*IaE{L8_<~bRNB7 zJa!~cJ{RQYx8e=VE8Hj>jK2KTV+wy`b(OWVID+&91zZ}Du5Dm_^{dgaYvkN4D=T^h ztvS?cn=wz*e(k+PdlV)lEn(C~USG*i9#uh`b4B6Tmmip^>oIt6^o3A9N;?Y1L{nE) z`gzB@>Uj-oJ+vK)&c)ymNr{%~STNS9!9d*lKo- z#H1=(?}$(ArO#!v4A;f}TKQ+9fBv5(m~B?UlEW9s(21DLZG3;f9>?qhRUnS-N3K4r z^S$`_Na?WWSW|F{4T%sNA}biUo+BXL$>Bzir=^MgIQ06TRM`_$k{u~F*xMBU%A`f* zOfZye4$2^>h`dvkBsr1Hm)9xdk~^jTD~equv0D!%FemloMm z@GOGkEuT4e55X-PK0Iv15tyEq2YAG-! zUYUN}zQ5`u?zs#t8|P6Kbw$XWt+Mkh&JO6}{zexWm9`$SUl2}S69V-1aE({My4)-- z<%hpP0}om2!d2lSDS+#rhzU&ZyqHkayY$^?7mAyyuz)d&jWicgkVtHR zNTOUnlw)lR83p&7biy(EDXb2;;Vzk?1se)M3{zd(v4d=Oxc5m)A)_w4a=gn^6W+PFui@P_+jFL!TK%bT)LmM zJT8M%>wiI|B)U7%_(heY32WG--JoHk0|$$JqV(f3l@Gl8_RWC+k-`57AsKUZebIXm z5^p@)tTwuNO{zoV{OxzsXC83Xv|V=F4R?b3*h5^XX)*#+OimBOddF7?w|UF-8APz> zD{7ika6~QO3yFCv0Cl3pWD=(#tl{LyTW#-j96}&q@@ZB9X5~^cIBtY-hp$zlSvtJm zdiuv3m=H^+AHpe!@mS<>_6$S{qMnCR2Pz5t?kEM`8f5i<^}=Pm1xwBjCqKw{a(k)Gtca;UzP z2b{@gpIc2dM3LX;hzWGt5OE-&aU=UJ9u;74*MXRGOn*u#4IWCJh$thIQm2(btRL#Ts1jmk@8lP~`!Wou!?xNS>n&lc3R|{nCGIZMAJg3PV^nL;s(m|G z@%Y@eeO-(z2qvRcdZv(#zsvfp?F3o}4b=@BHrxehnJ7g|EI{ObIlqqdCuF$+sqpT* zDMPJ=T966!uvoZEDIH4Q-1dNPS95ZK0bY?m`s{Msf2eca_Wy9(Px=8GMHV=~-`ag0 z`0C~eU4r1ut&I$<$Ixo#*N*M$huJ?4Q^p^9&%jd+q z8S~JdyQnYusUf1F#hxl_&Qmi#8&Z$PyEeu7*^!T>Li!l%YM>lW0#Ew1zepr@eCo$* zPwfeuLMQa3e#}kEI_M9HW#HRLzPNXW2;s4hUH7Vktl$tIc}2|)?-X*=!c1Rv5NaW3 zt0q2bdrr5i?#sOxv@BF-tDWrcQglvF`M5R!T|2Wx#;cU#A3=ADJGL>j#nM%mPo9A8 zf6vq=1(46N_{>!h2sdYLZ_-`FAzG$>D)eg|*WFa#_+jt#(h<+9{%NV)9P$ryIscSD zvcsejI0KWR50x$f&~9R`oJPrtBh|^JA9Nco&#$+zhY`DF&YGOZl0(+a)lBMq;3w|?6u0P|`z^d%(f7K(~%@<*=?fmvfFVL**nCVMc=@<+Q` z<^OHg`i4*C)i#?uk3el};i6Q^=ESS*mY}+EAOz2N{NVn5sje>I47TGOQmhH|tUJ*-cKqa zOxeeDZriqZNG~(M)_g3$E*DhCarRA|I?43-lhG$`2p_>ocKiWJ8#U^lPV3-xk0A9J z8Jcf=9w2s^ddu+#6S+Or)l=P5h@Fg+|FRA|sN&$j;z{LGjEMpL`zs$lx8+;c6KC`l z70x?5n5QR0j68C@iuV-Z0wDbH8(D4TkuWFQTRnQFAs9qUo*R;FKfnHAak5+D|Om{%c z1<@l#2}S;xO6fB%c#{bTwH|VPVZ)-Hxj7b@;)G~cLExJ5C5??NNEdr$0D@K2iuX%Y zLp2eV&?B&U@3^n$f@fXt(|lvld3%- zKKC3sa>O`=opPUCe5p+@k@F5ZTs4hY^=;-?b_BGpnZAnH{^PImx6QxmtsOgLNQ`^v zS(ASQ#;={!v?yi~qXHX{G@>7G_8B zlbdZ92qNqE{eT5sP7mW|Xp^378u8|dO0EJMXl}g>h7TK{i0!8ckzWRnfIDm-C9cR$ ztrx+^^iBR~0ywNyr~a86Ju;%!`76ly+T_T%lXJDz7r;C8Q5?uxSqKc1MQQeIREY{d z&EM@nxPA0^;ai|W%QkI#$tAj+bEJDyEuvS_=7B~An>Ra-HE-CxMeEi^340!) zr#U(}DIbpmtM)d6-~9{UNO?5q@RO!=9@W>~h_ichgigSkxGAeHUk^BHdLHGB?AdA4 znX_bdGZKm~iM#Twi&JGqMbnt;Gf5M@Wlo8f+=&lH119IHGXd`_I-{lA3`O1%pNgXjiu|S=zp1%9{*;KOQxmcKuKDU! z<0z{2SS3*C0TSK`d)A`0g=bpHj&aJWKPjfABGbyBif0blMOuvWZPTH0aosWQfF-;* zlg{oxw{P&27;LBAM;&)l!S?Bf**N58Q$EGV-(A3v3EL1Bgjrfdy`e^7B68r)@9%0+ z&ft#DJ}mL8d3?|w7nlBHlYM&MP6EUr*h;)$b!vOwj-5N7b(w^*kz2``8OL^p3w#A? z4%BcjJmw_wSF1+8Rlt&9a~kY1X_IO+bZ(H%hb|C>V)%`2%| z)bC`ZTRupoOe}~`^k3L30|}RCQi&k%>BIg7a#jl6a^Yg~;TE-F?C;b6Y+5$$&<)|P%-yIY%?4BN= z7?|*-i2`jVStK5{oh4fKYga$>l4ZO*mx<&2<@}ZZV%wJgK&*ZTbdJM5b*NwX;j3< z`ob)uf)nXBY7naVrUwLTe zo~i~B42JH#`ZOpZhm2KYO&N-f+s)YnHc9bp#Ajc;?(b>(MJzY;P&Qv&$SnB>_!dW~ zo9xT8&MI>$M{Y_UbYW+*@+rg$HC_s;#!k|kTfN#HTkyyW1Gg~=pcNCo=6d2%ZFAGK zxxCO>qtXbwBeYheiu?#pT&5B7HCXIa2Uz0p)K&4{E28lG^c?Ch12s#{8;xDaRn#8k zgXJZgJ+&U+-b)U?2!M6`0qrVrb*0y|K+4rjtIEE!&((#65qAmS^ZYcAAw+IKHA-(J z-v+bzl8?vdHuXqEgNDt_arFe)}rNc2}-l$C>K_?achSt1TvWP&s_v>_^xtZ{Jct>z0_Wrj101MJVo_ zF=x)4uPMR)iUV(IfUF|>x?24Ox_nx7zzva)W#x;B2LsGQ5=t~=8!!K4{|9Yt860fE zxb>q*tMZ@T%N+J?@^6-e9$^oq*)ruWvsHX z3wlNO`N8{Ih)&o3ixv-w-~p$Ancmw`zIaKcP5lsWxn07_g9PB@cO|y)+{NwxcPC`b0I;Y zRk3u!IJ^aTOg4^Q1U)lG)E|qN-qp7ei@sq%e|pA$z{B>s*QQd2?0Y5;JEceom4T7}$*{THxcSU^T+YYlz8%dJWuMQR zp7DOR?wA;GYG&+O^r?N57Bx|z-(wZ=Fv$C8@~GElZnZw9x8~T~$@Toab1oOdD(^?> ztMv5|m3HLgnUCRBhw&CiEWV;aW)!29G;Y`5MCMD>%u;*H^4{c<2GWs@WLiLM*^jS% z_Mhy!>o=+Yhzebzgd?jQHsoOH{&INDHk{nkNgWkxJ&DOb4OIhEqPStd+u4$ckrO;Y3?=dWLx%e!dn};LT@+vZrfn zpIQ1_zO{x^bckUwdd1m|wkC}>m3O)O^Hg=ckAcl*n)}1$t2rG^yYcZqKY1*?o{Zo= zOhzyjJ;sB;A55tqFIib+mq3^MS&zkZaLO~p1oAQ zit2VLTN}BjpFi4j>K{=$EF|(UT2+rm)N%bT;lxa#Hxvgh;18Kbty|piVu5IY)nk6e{6S z&gvqIRVWi*hMb*e-bioBD26SOGgSOo$PhouFqO@dtNW;CTxM`uHhX>D4z(qQ<-IfL z`zX8DihuU33D4}f{lFVd{ZJ%wb$Vs!uKO7Q3N~U4;AZi4P(@VoZJ#8is~t5@_6WSP zd1b1>**G4Ju}BwH7WRJXm~1{cIJ$P(`oL3GdHstzu=4h3nBqWx4TBjS@gIUK0W<#w%)NgY<^z(s)Q!iki!4+HFx&)SP&w;&v}&@Idm@&Nt$4#-a$Zl@HvE8($=S<6arGmTs0eGVK$%PG^%-y~1?!!KG;nvxc8(?K*S^ zM2Dm$le{>Fw+nNU;%2o?VxXB(_FY7do|GPP+eHoZDF6S8d6#5e+}I|DD^~R2T-y=3 z6wfbdxEog*Lt=XUO0*gt_l%NilnJ9IHR>*w6;8pIBG|*%8fww;$1iZ?V>f0}UVVmf3H?C$K<@_>e44R+-i2C>g%w(J~BX)0L_u$Wa zpNB>$?*~*wjXHLl7|MfHF`E4J*nb^>=YPkZzQy4XQRU5I3cIG#3>u+j93pcP)Ik?$ zg6qhPyZ_?wW;7e zmf)DDeznUUx+72D(8!W)&q!%=~z+t4W?X0Lz1;OU$fo2bi%vNQThz*2lhpBptM)ppV!W zh|wwVZ7MX2T`>IDps}Z@ac?w#)W?ca`)2zfcr3HWYpb@>c8xmYW+2ObkYAc4`JPxj3G`diL7d&;O4!xR3cIu`XfDYhX-yI70#SUSuFv z^yZ||~Vt!*Q;bc|3R>#VTuxp5Z%xnk5ZKi)(M$={BtlCCIwt_6DKbTS}xf zn4o|%X^0{VmHJc5SnxegA3}Hq9%#+Bd$}uh?g8~)|= zTGslv1oh$8mCz!d=RU7{{NsL0gN8u_xoz%$1BT}M;ynQ+bm@(|ehEys@ho#Rtu7=U zMd|FWU2jq65L8i)HyCJ$TDf4%CVz!0&7ZmBe6rNiGfK)8e0DWyIHdpDgH2W^TGz2( zptR0E#mQ|}XaDQ{NBEyTchw>*!CiNoUgTiUsMoWaEO|X>-;8^An{DpN!h==|TTCAF zB}KE-z>Er;Rhs+v_lw@)>3YGu;z5pu((^>G zM=R!ISU9twZh>iRlKD!lAErklvsY0GyyUPs*Dp2L@u{st7j?Dq`ulwFtjWUTWD!+( z(@2#6GpfrHBgUPJPzyDvrNBSkS}N3)e_OB$huok|2^9MUAiiID#0Ut$ft|-~f3d|Y zX{f5_AqtnwSlcT9<Vs+8MlEA!zP z0>AYx6&X~J=Nx>rC&k771&$cV{oU2M)FsKZ=NaE5PEJUu|B7J|KhH<&w~hF@Jv3$v#;iEyToGfn z!!%UwY*viX>C**B7<*+3010ygcP{f)YFt$ksd+Bfrua$EBkrN0&_U^)mPPsQitWKsYbh^@1KdcE{;Gbk;U|xs`_H|Bd5x!uJ1l6{X^Y-b=7CQ2jXhU1?B8be*ecc6+p3R0H&Ak^yCr4$sEDz?x~q&T zO9Q^-4EH!_uyfq91#8w^mqtHj>Y2kk3tvukuK#SlE@5I;^{$Ul3znZwYNxma{@0t{ z<%-ipX3W^UMa!38q-MDa5fk{u9moAXv(8)~CuU||bHxTGz{aC(yLKIy@iZJ<|N1Ll zpZj0LE{jyZ@NId^!Z32Im5Ke|2s;(qu3?|eZ2Z%npQ%>>hWMO+c$BWL?tp&%Ht6{4 z47&5_)RJ*oL)#282wxhQvguIfu_)%D<0&dXBxXDq-0l#1m!{bS)1S$2$$arJ;mxw) z4Q-Z$+!-)nz=A1L?3RattvZg`WUMeYzq$YT9JEHW_FPR<9-ENroap60&sQ_z=kwe> zi&P?hdSqpM%29u<%^=-XQ{S+~N~6q%buPYJr}-J1>N=b8vxvwvPjacNz#-7OaHev? zU%le;6f5o}6-VVCYqY{H4`7uzq}K7n4M7RDDAQN2(1 zWACNZlsq;>B3`ieUwOTWh#-m(7nzdR*axkDbw~8peQOeZoDm7Wj}6hfDjnSSMqAP} zt9~>;dFoVISabi#3SO0sesWR;$FOj98q1(OP|f^dYGPud$HLK>1%q__?)sf_aq;2d zTE1F#GLRM&*ITb`+qQN_JiWrGzOL>(Q=7bNREBmct0r_`KiVmT+$7IXF6!($t0XGy6vb{hat_swsw+Be&3by~T60py}RC{p`NhxNKJZR8x6d`6JY$!yNal zA$A$Iy}#`4xXO3%+|HUdDTUK!Z(HUs&H7Zu=LW_1l2Y0ox;n$ocTdszu};b9c?)^^ zaJDDJj!2EoZyU=Zs>?Ztn{EVsK4&^Bn;T#rt=&1zxAr653o+^Gs?~4d^JiyQ{ZU<; z=Q3XFpL15b+t{(mTc+N?QK-J3lZWg=$V%{bT5kQ=Ua^cF8WnH%yqvScvD)_7nxBWB z@hB!wp1flm(2ZST7H>ng`DPX&s8Y=t%7H}IP#hHKA@TloK;km2>*gpP{`>IZ1nhCH zpj)WxyCfsnzxX5NqX~7+nJ{xw~>SPlBU1O4V{XF zXOAA56|bH?CnBOWAS>UdZ9_7}2=&Fqh}UZ6JTA3dnVwNc9)`uAzb;*ELw+c?qQb($ zyCWCu(;3uGz4YU8yCP&IU$0+t$v17zDOd55l;mrQnE9?>0zov+;HFv}?k^7v9FxCo z4P%$JTcT6v>aoZ!eeeIRHQ(IahbXziGG`0ZafJv78jQR0X^`3Kt+#?ypMPG5fo`1s z@eSQqg;dWzGpze~=Mn=gtLPaq<(pPnO`ra^NE8A;Z$6n++0eM;O=l5cLpn9huCk1g zedTe*>ulARZ4J?<+E7jHuk9#1_UL@;FJE5KFirdU*3TzWnqSm9UFx<%a*w;kMoobowZKvYDD;>6a_K^`@=8@IrH~?wu zTb#^1Y|qDj1vR||m%s*o{+pj~jXDvtuYKiv*l1-htw)9vwH7a4>_(F6n813|>*Mdm@{XqX}F=)H_rZ9o6i>C-o}41EjyT$5kN+W$oXUC z&+{{@c82DL7R-r@ou8Rftje67a;jp>T$UO7tO>hv<)L?}$1@`D$n|L{ep_jp$Bp;# zJ^QUn5t~SEQ(dq2@)X<~H&l>IvdfiMJx@Y7lYOIdE@^a(F*_ZRpT9{x|4C1qCCNGM zy(m81B9;~=Q1CZ34KI0=H#jh5MaiAF46%h*q6Ah_#$P!>MU`Wqj$T~@qUD~C<6 zbf88yb3;2YiBI@SOIyF~-58sMI~JyKosR%~tiwM8$Sxp}dh3^l%F5MO*Lkq+&4-24 zeq{TE%z=&N=~O>o){~nrhRab)tEKy(o1`zM?ai>dq(@Wm|fokvB$7q37suR*T9 zYkqELdiued199TI@{$W`rq%}|BZL?}%#~*r6b;?V#dfn;Rcpdj56Ml4>dq!q1{i(t z1t@JBFl5Lmud&&!<>`3zti4PA{caUqy%DL?bKRWG8yl)>5&5h~ZuvUzK^ck9jXmKd zChJy>9oli<$It*yPF&Aj);D@y@%M9inLBx9NXN7L8c&)H1dv4(1P-Och&K|k`n*nv z*VyH(wH5TxF@dpAFX3#jWqa%TKQ2@^1+Zx7``!sTbGTZ4{oP%)>{Ohh-N;-eTf+D* zrhq&DtxXi!$S;La}M+ z=MA+jJ;V_+QFEitw8TuB^w8PW$6@nx4gaf~r@jvH1jp2ST3r!aeI|iYu+FRf{ubwp z8p)H0Z}|(!eZS1?d=?Ua6)(ijYW*S)E>@`quC;0Rxy03-C}mrjZBThLSH6imkiyQw z-)L;u55#om60Fhu@fu8f*}r;^*S%_~B*l%H6LR&SihjD?ij? zo8k;_gh*bzv+%m_q(#`qTye3=pB^_{1e%y7xI_B!xLg^xd3nnw^Xln4>Z>evL^R%u zQ!QE z$~L!LA9wV&D$&pzPSmCm|re$Av!;KZ$pE=k$Xm*7Y8X2gY(?7 z#%?^R)$i`^9x!Oo$j-&+yR^^V&4AlkZ`tXcZB;>6S8pwzSEj{}nTh(_oEaziS&nR`9qOjt$I3@zjSz^y%!A+RKJ}Z9}oo#V(A}Ll+id!818`cujhE*ka#h>pI&1RSXZg+A?SJqD3dx z9F3i2v7OV0;6Z=qw*b2$qIR^aX1cGsTmZMJ6Ruso`XitQabNl;`B!}8awPx=*X!7R zJT`T7pWODyM@>53(PIq+TKkLw3!Hk~@M?HaMmuBOokN$$QXq_^_YgNc{ExS1ql>{y zRkt3z=hZed@Rghg(6D~1ec|MZ6RY9F=Iq%tSH0*&+?ReGsC5kW@DGa&TXxyYYnJ$L zdZ|(d!a@JAbUyTmK?yU<=Ub?Tk>R$!d$@KsQDRi;;C$EWiffEseJfInSyrC5cM$TQ zi%ZOdANkpQebGJIMLjvAG&UJaO=V@}rrB_ZT9i+r%OcZd8!Qm4Ljqzpeb>DwrAF^O zX46Bz+?>i+TI<70-ExC6{)ih6vHcQqv`yEpdB;_jvwL8TTb^P>Y4rLwEnB{SnG*lL za=<+EkZ+^n%0|SFyZq|af(Wm50eVGWFCRH~xY54In%bpew?a2Ln|FUY=Q0nIJsxs3DmT*5O2|>pLVrDX1 z15edCfd_44>3j}YMTSvX{o?L5>v{`xb^8&BP>6mE5r6WpVRfG7ps#KmW%lr`h~|AV>ZE8EWz!E)fkF_Urhl{W7jva;535> zabGI@V>Oy=Jv2m@{zzQUK<9dK&ld@3li?!d`(FhR0;N_~{IC8>=I}(vX8M2*s;L_c?K-T7C0pd-KpAQ{s9SU)k(i%YWW< zKYrS4k%s92KDUq+XK5chxY(4fd0@%FQJk~icYpHr1RAd4%fpEMh>~>_#x_3Opv(5V zBS)4Uv8|XyRaCS(mp_rV=G_;`yHht;FW@Z~g``);_*LDVa9eR}6^0lbxdf^rWGps;4q~mEFrHetq*;<<(j8$MMhVisLPUqWzW;LXEc)_>{peX zUbUE_vytJ{dm;%<-5jfKXW<#|0V^BrJ4!9Z4FAqra97hOPo1hH zY2HXSLKmv19fPpAS2+3^E+OjWIsWF+ie^5A6Ab_st@)oPPMqLH68{s({{cvRPk&}2z+Flal<~75=048bcnMfXJhhFSf$;Yd@89s^N-2s;@QcP zdfu+f)y*Mm5NXcTUb=A~T*UIxJ{+)f*ho%QH}FDDZmQ>-%Yf-CZj%?q$AdDe|M&=7 zTlMOSf+6(|h;<_meYTX|Mu-6~AiUW5+P9}rV@yVxt9=F^CAQUGdJ#@@jI(c0kPcPw z>#o%$Q{y&LLd=I8Ny!Qr5cKn{sl|h4svQ!(Z4Hqak7M)nG8`M6V*+^!SFZuw1Jjf{ z7u!}Bi!%PUQ)<;9RaNc8Wjnp$H=9PX&6o*&tt?VRWcDIebjz82eyPL{izBRw!;J(BsyYxmx!g8(|Rj50F2a)BiJx`!TJ0Git6R5yP5=;hx4qKT_qttm%@G(wb>MUFDpFNXhQ zEq!W+1-lf**5W#K>z1XATMF5V8QFE-^jh5f;AuQjJWFPK`s`U8aKLw*$ZR zmvmy)bCcWphL?Fj2!H%(A!mo)dgY5_wzz_8QwwcU8#3?xW7w-TWL%B2rU*9Zg`A7q zh)^PtLiQ43K2XdIF?JU!g5+#X_Bn^+8=gqBzR2>Q{QUf-mV@*I5K^%>@~*e3Rb|rf zZMjS1oQH=UJAT~A(m31Xw7whd;&PL39&4egv(h6X;+!ua;#Fa3oBobZCkZBdkjN2t z`db4u%h=q&j+EMQ8Jl8vQhd&?v)aWk`CCWyHJLAC9L1czSyzpvfciyz?s&$g_U+qu zofAsEl)$X4FYj@5vv9bcnWPT4-3HqvKi?T@JBy6zMgMRu)rMOJgP2=5oLO&8edDDf z>&NH|#6lSi%}HlxZxmvtv<&A=G9*FxCWiDrtfV>z!HH^TqZ>M*X=`G%!neE5m^)Wh z{dR&=p40Qs<~$A2oyno#@G+3R2-44{%on%w0f1mysw|KizAimnf5(m;Pott85Wxt2FjPWrnhE$^AjFUEhp znPjG+nfolYwBm>AZ24})-;1i`gTIoY#v`+tE}h0eNVDMY27YW*T4GCML%p%rj>|wx zJ+O*T*iXHar%x*#_D?d?VN!MtoCKjJ!1VWtfJU=V-dvy1?`I3JH2rRbNYe2*+Y-O@IEZfP>+ zM(#4Fz~J-s2X|D{7rLHybi72Nkp3loiS~X_TJU>2CHYKQv^BPrSypm{ia-)V1%$oZ zy568kbM?Y`FYepQGoN>IL)~HWi=ZcQ26HIbmf^}akDBGkSdX;FN4i3hKHTLymg-C7 ze~=UA`d@Ohdkz{jtGeQgrUj8O#KQR+;l`Joe8(c1vbXYev(V)?bRf0HIpAxx-c&?b zIHA3USo##G;&GX?bGFMuJA^ozCl+WIJWP({(-G@RtO|ld445s z7Y(leK`E<@(`Y4-TzG%=J85x=6QOO9U|bjI(M7+8aEx#E4|Q@Jgpal1H~1 zpzAASg0+FkHyYR35LSgtp7cbW#3^sCQ<67sTWxFfi+3{JoGRWl3vJn@i;uLpKvMao zDL{|}YM3q11Z7saS-H;J(q5AOn$^@pW@cszV?FekzW3@q^Hj;W76x3WFnYEcN%dmR zGBIV!6}toKv(_NahMi;#?8Ntwh$~mFtmZe?Cg1js{o=x!73ze{jo%wy{Ngxs$V-s5 zH&Mr(wvUbeFQ$mnFJNQF6bl5w-Lge0PkT8IWLo=X7kT@8YyV==hOCvgOX+#37Gc`1 zfpW07ny=wny+WCxS2#|Uex}%vnDUZp03aok>vP3+?cAvPCZh%lkSpj4FW~8OX9nrp zVoeUm&YM|$&24qpORtTjyUD+H!hy9?R4 zG_%yBXuoE~y}kv(m%u2(sT94MIrKW2XIZQ^teEJ{$H7Np%z$hxgt zZ-ZJqp|Q$L9D;&I&vw<&XI@;JP+fVme$5jbkZ1crXjz5sX1o{yycD?zH3l%0d^aPQ zXnKtql{NH2*5dinJS22GabFnxj>^W<<|X(t%-O}daDFO}*;43iQj9gdV)Iy5s$NDa zyoQN7VT`(}SPlHEk%~L!lNzY*@u1nS=@rELGYafcKuCJy=}5?tz}|A zfx^*Kv*LYoOXgLJD14>%Fpn01NhLZJJhCb=Vt^t0oI2v%4pO{`tVKHJZ!xDu814aO zX{l~Y?I!3#y7f{5P2c{ybxo;{;p0eNpNvKkrd|lMi%Q1>M3OOvB0+4r(_k{jZc}+_cPB@$2u%KV&%EZnc^m{-$n_Gq!dG2}c9=ppgGO@Z+z9u> z2M;o6Q1lua9Q&|k5^i?Ys`HwY*=^gA@lT?o<9WrBn&pll6qlq5Y}I06?c^y_JgCLx z5lae|p1q37Nuvubhaurj;7MONf4-AsUgjbe0cH3AZCN}^w35apeTBs^Ez-dUq}2;q zxAdV+$@>P@PzqqwR}4vL>FBtFf8C*K1Pt*hPaHjZfeVGpiw(!?0IO%ZvwW&DjAg zh$8&21p~nGy8|oMp!d9!bMx6>siT&P4JWsbc(jgA_X~NN_wP?^+rGUg%}xAnG_7N0 zlP`(~1H$2A?sq(MbhIl3J|20N~vvNBMu9!neX-t z4P8onT14+X9;JYsyS2#NhJ@rO6WH{5l?6$2Qshp~bN)xjA^)T1pKf*c)eDgV>wo<7 zPUBb9`_F&c+wK3O|K-8~L)HKMnEa~Sc9B{lNznuTy$#-ct#Okk7EJN;s%JQ|8lw&4 zCX_wbIgmBy7{ZRWzB?gpLgo%$a~UkcNhc>yxbE#`-Qn*#;pfX-vLfbKgjnp-ij|E(>;YH^Ibl<+q_?0w|_rp``r)(GqyU&lUNo8~6>y*~^}<{KbJ zwh)v=FapCB-jw{s90nP-C4r3Ko16v%WB`S&;LFl<5db?OlqD0qYrNfDK+FyKNS^ltNK2+$xxxveczmAf2q)n?HZ~=#@N|jyS3; zsjPi($}b-D_mAg3CBaAE6ZU4oD5vNe8IODm#v|$^pK0Q<{X?V5Z|iMGcrkaUOC#bc zE5K7-cA^D72f$md-oO8J`H`o0Yt^vLfBzKomo4*=`0wZUVtE+vkXFG-B)+v%&Ti(~ zP^rB@#o0MQ=y@(Q^g~pJ3Ut|J&SA1&I8_KGY)VGy?(sc+Y8c$#pLkJgu))Zt)ze== zy=nJ;VCy(?RZOP`-(7nN7q@I*b+0v)=^pg6msg%$^#O}7_sYSqy0zrTfhecCrX zlYtzs(Oy`uPD8%gbc41}HVe;S({fO#FCL7(b}llfWxks!v9qCpPcOFyqB3`UJTY5g z_uW5s{r-OP@9`?%sc$;kRSO`1_fy#R@lHjB6`yNM?$>1od#kS?+c~!bIAwkFj}{I8 z>jt*ihJRF?{x|ZB8!T%Bzn;ao#yq@b!=EoV^F|Z`AbI8&&dN7e?|LOlziNWte}A`! z))aYaRwaJRQgq9cjC~pC1Sq5UdQ*>P=0|ft@D=KOj{)+>$z|;}(%nUZY`=;7=i3 zu%lW=pSvenMR(Rg%LrXZyuEPq zrtUqqoLuye+$3p_9ybFr49b*G|UT4d)2k-5Z(~=^-+dFilEe#?5geGeA{aM<5Byv z)I6JOxMhAt5?36QS0F3KMQV_M&1F_mN0%6VPE24xErb6)G43GDGYQ=N!PDR3KZ3-z z==H+6nWVF2zDwrKyMRPt86D2eW2cqOlmWO@b5-HwA7%tQZ)~S9ZqvsD=?V3%_WkOD z{r>PRF7Z)}_13?8UZB2Z=2iA9HeE3F_qT<_9N&MyfLHWNZSJiTQS_lh<(btq{5)e5 zvKgc6MSE?|!NZ4tCWS_P9Hh{J(ve|MTraI{bPXKYsyUL=Z?bYFJ(8#1rYJ$z>J=wu z^qCGF_x}+0o>5U{UDs%V2{R@Tkl&;+`0-)r*>6_b z1gl$12}&+Lle*~ZSwCfV*$>>{ZVy52s5{_DqX12aCA1e)Z>FgQ0#X7v#Sm(`Lk@ZX zcs7Vl1t=X*W82e#SCFKZb`G&!S`F3 z8j$cWt9@s4+2_wSP+LXA60GlEEiW&ZB|@%i@600)1$c3)Bb-_Iv^yy zo!ZnL*(k0%Uz;G<(JLnb8K5Kjhd0vHM0CbN&5~;YrGPVjM=^|?tEh#9BpGtdH&cS` zz15}}xt*_sD<~hVcDYlJZ_wa1jb@L$bq;-QU<4Jr0I?XRC`E%X=S)Po zI;qN$YWi90@~B9rMCv+t_Tx5Eztq|phmc+v!X>8u4tg}Xz>vC93T)qwn4It#EIh>E zrOA7(C-56Fd)9efKYkhWM_G`8Bio>#@aXtpE^KH;$f9?mg8oV6O*yXcnx6d|iy%AjbhGekYn3TK`1H6nF$PJg=z-1ze6^PK4gNI@L04LcYf!%38Ep1rS zR?Lz8)EF{f{>O`)3*>rV2({sY;RuwDVNKu;KW6U-=uiD3F!4HvzA(Vielkgzxbxpf zc08p0a;4xJxByJ8DWUBxQVKv(ymJ0gaz!tPkzL+o%fAvTs%vONLH&EBln=V_yk^2- zz%Z+baYj@LH7?*>zhap?6BdSHK1cCe6u-xI^k`@kln~2rEkRsh0$xTPG0qi>ygWQA zHa2OR?m4CqH@q@{hZhSRbq{sgakgKxF1TUC0_yJbxJt|I^X}h)rfO0EX96$rSzzGv zCNtpe)QQ00%@avht#3;jpLOU9Sb+x);BjClbxO09Okh zu%WqLQCaDb!4}+VF3{iKPuB!B#n2Q#1(x~u--Z(=q{##QCL2c<+)V@!1;=inSya9 z2_S{`ngL&jD=G<%NnPQ9VaZ=1LN{S@(8Uw~`wHl=@|dD8Zi6h@0SY@@N=QV6g~k}< zdgXQ@n?_OXguE(ws{0>;)8(NifbNpu*lT!0q*y)oYr0Hj1HE-PN^jf%Ivqr1)UNTG z0W>b_oIM&|ltcnJ*T$L02(qnoa1AM51X_Z7CQXmkulvHf_H8*&*lyCha>l@=6QBr# z$)ydcs}Ka1>A@>zuC3@}bG1;Yxj8F)C~ z;lid|82(jjHWmSFrVONk;zclNM4hOV<^{-#;{jADb^#RzDvh%U5l|NZqrq4WJDNj) z(`{E4VI>BFnJ#ps`4Z*B1S%6yO8@IxQQ81|rcT?b(@?ED!z>s|C!W@kNG8R6{gQ2{ z>tJ62z3lyrjH9z1&}9q-I}^PXNHq{C0pO>ONX-Bp*Af1LnI=uI8Ni}k)9wEF*Fj|Z z)e5^5#*_1HZ}B3qKKP)s1}&m2f)3cBLDqdVtn%iW*Kp9oobrHnJKSk7zXH$6gH7NM zlL+xSbo49XGip468*=@LYSFoH$@dqTpZ}H&H(r2!i$p5*Cs4eCMhsd6Yn^WBF-F79 zC&Gn$^?^S!fWRV%a+(y0jf3OK1#FIGOA`V7fU`qEPR_4>0Y2MwFn;+WWMs{djqWUk z-h~2UHFS*9QVIOJRel_meG3!0g(ramBn!rh_7!kkHbT~ln6)nGfq+vGgP5BdFmyn$ z)C`qI1{7MIw&mQp({(baBNI9b9VvN{iF=T-6P~VC`kj0h4TTUQXP}aH8c0_0QBe}G z^Pw>Yq*tKi63G_{$8jSl4o%uzp+-Wl1X^k89qVnhA7?Sf(`sdmw3-5R%2%MBrT0r~ zA6W$2!8Gs!p}0kuF09FFooc%-xJ@(AVK;;4?_~h=O-QQ(pFDxq8T9%c^N4>`02pZu zXo)E_6;F>)o-O{p90OaN7to?4deK{sFKHlBFF1XDuNOpUG$1VU5D%eoBsUNKaxROY zJ!$~2k<)n_;&=UeV3|BdL89L5<&>05L zyvu+-&AAi;H$*n%xzz~hyT9YG4`AK^c0kkd z4IF2npH?ZfYAAwpC+}+c+*c8K2Ou9L%}I!kz5t0R$Ul(iEC^tF=ouku zFZmT9Q;nM0HNXAW(AjgO9-7<;gNJ--rz00*4pf2mt%kvy@^&(Rhg9&#Lm>axlX{)d z`1eo$yPxdeGrallUx9Btucv+C2^$uR*o~pQ&+tp;iosBw{q;%xw?FxP$57FP4ZkfL ztzW<}U;Pcn!2EZY{oj1p|M1bI-hTOCc-JpH37!87Z@V%lu3NPQbNj=urwDW*|L@TE ze_`7jePkWg4d({kFx1C}e~o?^398>Rum9_xJfw2m@be0lNNpJoXdG?-|9$cNPv6gf zKZXBvhiTLeC;k`iFkyA7|9|qi{)eY{;I$Mrk< z;s~}+$9?s^;{gUCoj982^g@MXIR#t)XJ^0f0Nl)a@|`1>os{3hSz6)5(u@b!+8#to z%gOGrHd^0P))QnLtmn?MuPeV<+e!5#0q>bR%je4$?1Nul!C#Z=+(+5L09f$#Z$=|c z6%%$hlB}0SpRgYIHlkRyMU&5=Ya?3>HRW1)s*IEUd%Yf}fcNjYQ!UF9_BbMe#q1op4v>*Gw z`nM_w!@Tj|4ana+G0bX-+nzRhyBaUp@?fmJoZxkT{yInfYup8X@7hmjKk_Gy)gzYR zi(|{J}|=Tc;+Zv0lZjTbl^vf6CyF9FIpyYUdJOn6e&>z%o?rf0EN9<=g4rAr)i00 zu(_j;JYj>UMDMR?>fax6?PbV+{vU6{&;RD?Pnnb?tSk=l$~pimi|ykv_}px7GPheB ztv(?wSQ-{i1wEW4xnawt(}?{FfQytA^grppKNJIik_1(!f`9 zhE}I(!i;>l!k1bFDVjzfUxf%4+GHjibwc`+g23>mF5=7@i1t%2IX-+jQ9D%7G82|j z@rg~&u0ikg-@UHF#iD!UNN`=ijWtztS0}h(xoH4elu{VWU^>KW^DY0JRC|inZ%2GMTElwj z>uZ?7({Gt;Dk9}dG4>{0jv>!NS>6n-QQq_|`eeNET~*>*2rD}EcLJp(c&T*NML08l zu|EyZs7;D+Y9>v#bYIsZGo&z>|7xlKw~K!?Pc%JoxO5Y<=dIFpF!E~uN4AgihUUr# znm^<%Q8#zw5&QP(-*pjP`+#d}9DOel^i<&Gn-47Er1_H~N3N_$&Tf;CTn!S)ckN#? z%PP0b5-t#cpPR7cx@N6@*5MKD@*?^VjWjNV&4oR= z*#jq}>1(y6+}mBUJTzQowU0}M_y~OeT=+`7Q^)aZptRpJ>9?^u=7B>EdDbiQ_tav1 zhmyWEIO-(*>$YBHV~b%`@v+7w1T1DKD~ONXaqGG)XCe7`?O!r~{PnCUx>(NRW4>*Q z9E%HG=YAXpYo8KBv97FM|0^WY{~;m&k&zZLWg5b=Z*LWPJLWB&F@NupG<~N`L|xmK z7pLINOj=ItEYk{j^>U>o$kc{gKM?MJfa1QpH6doO=OTz$-TqZJ4xZj+cVoi*BJb=m zVnmA4bj16aN`pY5{Jemrj2ZRn?CgFcY(n*^%=qs`{_rxvd{@gdB7!;+l#716teJLR*6o}C)+XSDo9I!T`xyzpvp&L}H-G+9<27B8K*6SKnEinY9iQ|TB- z%+P(z)H_F$f$UbV6&Z!IT{``VEs1ec>?*mt7j%bf-|ZuW>EccBwqkAZOE%r;|wpk-j~#;vWDSdWw4RRSw9*{teZ<{DYn z=gDECFd&DuG^2WZ9-{qU;xknQA=BZue zYnrF|Kg5T>AN7BEoc?@xl7AP<(A`fP(cUx{3*U|jM}b)RipOl$qKHAl!(GeYQyHD4 zHpFPPtA8ob*p$u-?<3`Qj^)6&Q3n$UVzgm!{*l*-d&w@M%~rHC6u-ocKsVa#tH#Gz zW-FXbU;NALdj}7E6C{cCFSkf%@%vwU|9T}^yF1@hY%>)%S{3gz@ACMr?aQFvlGQo*!dLctT(&H zlEeKobM4*R9*pYDY`d(0*6TYL@4@N>fR+MXv^ANcUv$w=+BaqyjQNyms(; zmv94fT#z5m9NC)O5<$*3U1!?jY?>28;%|+DhP4C!Ij!35X+N#9xC-X){<6|GRM?uu zVfRIqbFr#t@$d6!G2KZkJis-hE|74EljvT`uJTd4P9m<^VSu1SzUYlxVI9SudjzSC z-VsxTg%2okAfO{5=(Wgc1=#z_wYQld!sJEYR!AWxMn@)5wrR%B!{>WLAuaV* z!=kLLWsNsdbdgOkBLXE3uq2eztFIH@-a9zM)ap~S_c}8qIQ7&?Yv<4z?-VxjoAs!| zK@#;)YN++0HIDYj69xYfS}BgdHU?mL55lQ3qK5wMdjrMiiR)1#zmNRefB*5H9?HKT z)4zXmgv?Yb+z*dv+vM&X5gPI<7BN7mPYR{vNFvASUp8*9#uN-h5BI+cQK|Y z`IxEbax~j3*jA&$;u0j5iH_YPFAU#lx(U!?&YwyI_xl!2C?6)@d80$4wZ7kZO1wKMWZ!^LWV7vPuy;&p8E4Qo0VpiIp|GgB z#kRuvF_=`sC@O4IXp*uiY?h1gDk;}$)_XyT80#gyOj@oV^XLJ)eb#r z_dLJ_)g!n3G0d1K4XM#q1;v}Y6ji+X@bLjvD~8H&Rr8W-S7ohfYx)wcBL^QlrS$IW zss-fT|0ZCEW4|5iRD|#AUhz{++rpZ-Th%x)&u6MsEU}w%&$-O*1I6lky;#3n>P1C@+*Jj9CdKHk?5pUo5Ez+S zUZgn@WCcs>j_eZG?p@oTnl?Qy(O(#RJz0N%v&B{-KqaBZsnOfUNv9I8fyuz|#Na>%aQRu^*Ho zPanzE;7w&Nr{ynpqv8&-h9O_=ppGnAPvNP8W!`OpGnUB@3xx+DOys{%uo`~-&Eo}D z_jWud&mWgyo96KCvX=B1kTc||YI@=hggB@yf&|_M2h_K@;+tq)17RZ#;3A6ixN>yc z?F@nk;*Ig|TWC&5Gc?JfW%vHs2DxUxyyzFI1#5{3=|^*o@(8J%Qq;AS_*SK5N9lg^ zRXIT>t9tj8j+fD5FX$hYlU_j(o-h=j3I#=5{E>8F=OXBCo1I- zpLg0=f8F%=37G3m!n!&6O`#-nYv+nzyCu1<{tB}oKmQdULS8AE^I$v{>eiNL;2v}ILmrc z;_3MSod=cOIU)jqCHz*gcPf{(8Mk8!Q@QQlK;jQeMqDYrgq=^J?YquUV3QbCgfj2M z)-=w~oy18sr*D5F21)_;-->L4Q+!RYs`eWiX&s_(K5_}tgg|m;@{p@}-+JlPo|7*| zzG$i+jWA|rShext{#jo%^iDC*GVXbuuBW}BAqX4Y)l%uZ)W$8LO%YoKRa(O%O`Q{N z-5meaMfY;^17R({JtdGc%P1b7RX#Of1ph28Mdyr_+Vem8&C2xC&S(?Mx@Vi})DyIZ z5-#R_LMX)qki!jVPRiTV8HiD_q7{JPP);z8!y;)3*?RkX$I!-!NybWvbZdi zHKp5@nk+q3f3&D`LB$qN{{KNae5x0_8SDTQay}oklL*z-3wK=#rJW&GM#4Ki)@r5= z6cW5_Z!(%2Ha!i@F)o%Do>|dwJC|5@X~vP5R;4xEBbeTLL)`Atw%x%WKCnvF?qq4q zc6f#J`UsmH5^!lae3AlquMG(6#=+(!nEM=z**TW%V3p!DGV}HfP(8?3uY4GiTJ%MI zT*|%eo?CXcG9<6mqZ_D?uN|ZnXiGUit~+++SeUG1d$nFc_D$L8<}6Z=b!-AobZmKQ zL$Hgjy$D$xhl$nrHQ@EUG=!~nf5Bc1L$x1fSdf=D`Tfuzo}Rx^`2J&$;cw(Qn^W8@ z_#~|%@pGZR_ssmggMbahKoU+dx&zbW_oJ55&Bp}?g{w$SNJ%N!UkMy)N^pPA|4$LV zq0KDSLNiM-#HWe)x$D&~;sm!rkU+fu*L{cLn4MDU7vP(P+!EY3Y?`F{m|M)tvBOw7 z@&P(NDm~h)0-%%%L^0l5JD2(3urw)lJti3ABGQ~J?w!UX=AEW9w;v+&9T9?A3ERh8 z1#79@IPco-^L+dmmmzcN)2b%qB)!j3jim!MmTuT($cEx$*Ws|cb9O#A(k=%``v)oK zCPNkYqiT-}-B=vnnrZpwX2)c}f|2fMR+)#mJj<$m#M@JoS4zDkA=!T3wQ8*Vqk^By zU8~^r=62NypAtKHSTl7HUp>>YReGqoiFal5L(S@5T#BOOr=xGG_1cb&;fmAuh$0kj zs=55Lj!w#2wYKcDwpf^1Z}5}}tgy{E!_~uc*oWB&bqyrgCiB&g$OV}lPblX4z{?pP zEHEBcBSx`(yOK1s&q~g&Ts64@l`j;U?N&H{xUc=TDP~>Eb%SbV_hpICzTI=f)Fcs( zlZ5{Pgv#R8fbhw*T6$f-Kd2Js_YpOaA)r`l$bOO(nj6u5OE|xCnSrN{gPT7_6IDE*x+* zp2Funns^L(zFd29mv9uVCl;4bFPZVb= z*A)S#(HDkB;yf6N^-e1F-mm*m_0Zf8V0(8tyd9kZi5rqT>ni~67^VQYlOk(>P{7Bo zZ>8f&HVtjHt6P!~zc!<$O;dbG-%Wb4)4w9H(lg5y5uqn$mHUWxbDY8kPhayq|2FSz zLCyrVhxl{#w1aSeItlS4A99N<&3dGKb~KB}e{IEB(>^gkH%j92W%@>$-aS<$I(l?O zUn`)j*@Mw?gT)i(MXGwI(h`_+tX+>AD#k5i1jjFyPC`~|p!=Y7LgV>c+2!Z`N!E3P zb_PkQCY}1F)iMM6glcdca=2TpF*H8PgO$^Dw$puMu$C5l7jHIswV1t}J#98MKo?uzc<1NV$h=i8^ECs1RzL32%Nf2F{<$Cm3RTn z;hV|$>#*=v%-I{$tHi37e^zo~Pi))UfO<|2F%GGCTKX8F+6>-op0zH)p!Hnt(9kel z!k_%6pDi;EZD9oj{6n#_$6}(4osbZtT0pS@wv#Rx0Qk``_pp<}o#=2QrLUBy&@ge)f3$d_3_UAM5z9u* zZ44M7rovd=H^BD-3sUXZ1|YOn1_3^}_nH8&jJ5$0(Lfb5h$yEZ^xIEIH<%S!URK73 zU3Ei54y2Ll%?8TDAn-lVZ3l~4CZv9V`&C;!#lQcw$-KWU_Q@!8A%J zNPoR};M9ArCE}qT;H@QUtB=D~`y(0Oa;Sf_eCG8`8SM6w`5`<@K5h zy@qFs+6ayMh@RMT_1@vUjXg(zt2h1%Y^)Fu1P{6uBo*46#}FJ86f_v0kX(l+tytlz z3xEZK_^_?5tzx*J2*J?3cn-(f@;9KjA>$0Bg{qyQk+EJq(gS3qTu`v5gNFk?$>tX| z)6XAC!hsf=R-Qvh1qob4Ta)0t|BqUx{$>{YH*mXvv=ic&ruHYg5Rawy?sy!@ihAP^E=*VeT>%!3L3d!Ne9=rEXAkL>W#q;TwqgKExxs~=jeyd|&s@vR0 zr<_PRr3>R(;@NH%O2xUH;_9RJTH)`f_CnX`PDg=Uiog7W6|0mWyy`J7(WHQ{C%+tl z7FL|4eZ=-=%RNv%cLs$Ae7A?*DEi9w!Z7z3fZZREDQyp}<^fq}8r+({12b9i!o5D; z5+LNogJ=bLc!0D3o9hnjCl_!toBl*^HE&N_0Q`Qm{=u0Wbe|v(04E%sAX5-xfZYT# z$X*4C`_NzPku_jL#+}zWYMp%N4ke5gl(H(Ac_xpHO+2ljMO#;4^Ug3SmCldjb9+Mg zfiQlD)eCGBGH#gIXPHUuadcVv_PvDLB}eYx&$G8ZdrslhSkq$Aoery@6^}>=xVxcS z=kZ4obRa?nJ*qbOzhA(`ox$dh3uUMmO+ZpsBCPu>8=GOi(c?#Y)TP3{zIGNQn`M%|lU_!a=y5uO>lKbf;fff-h{Cu5P5O@!Xd*thh3JYt(Rs-7e z&u=37L&6FQNn#eiACq`8IBl50(d(hPVVoVkNj|t@fXLoP4U|~*FlCLh;|UR*BQu<* zZWb@XRw0`NW&rV)v3?Ouj|QJQ{PYGz_dzO%Sk1wp8C>3X7C8&SwHXS5NsBQE*^w`J zhU=Uq;%>uP2@}okih<=NTD~gqfvynFfUzy&VuH`jhv1P76njwcxr&s8;G#-8i7a`q zfRW}d_~h!~Q*N>X8NzI<1_+a1YZ7>L@>}fLFT(X~y!4}4(R6v0kQcO2b?Lwem*Xw% zwsA&jIjQMvdB`0~*0N68F5@g28XvP}_Kz-E&%U%k-dd&=p2V``C!}@S;s&asot#(V znIX4=_J{VZS0%QiC!Egae=&NSBDk#c-naRZ*7ni@%kqx6imZ1IH@bI2Rk+nRP#`y0 z=zfdccDS6Vp?9stH!_xZif&HzY84`JC$b!SZ&_>zGQ%~R^t!GVPW=MTM&yAExgfX% zuFRxh8~4eJya2xd4ad7!Gur+8k=+(j+Pc+=lY5%Hze*)a0AY1xQiD5yCocclZ4C!AlTR(G zzTyV9Ka&1v$XR*jsLi1?;UwJUrtRXT-QY=Jv?|4YS?w8j-IUiELw%i`wST`hIBNlH zjJ{{8SMa1Wa~%VNtEWe);t1p_xTg>lZG&JX_-gPu()J?lH{{**3!vXcLcKW1<`8=x zN!R=|VRxg+0uV!78i2D66&NqKR(4Hl6O8`=Z6uOq!ZtMpHm(;qf7{>p_Fl5DL=#_| zz#}ULoLxHKn4uR#}u9OIb{dWA~~)SkhRO zcl6g8T^V?}^N$02W#nWV8l3l~TiO6yi?qC;348{*<*P?pV_ed%#qZNzxuqiwxGXv1wEm?Sr;PjgUf2|y{-FplwJXaKUvP6_Q^8^!fpOlkUK+KQoINw zqbXZ_mtf+u@pIGQZ^7gG;713kdmIuyCBkBhL?u2T*MR}X2S@GhU$d?O;*@8R@Y@u% zXQ{`fs<17c*$(-ug%wkZ)XOsvIZ>n>k%hzG{zlaCU2l*A zd2JewL=!Nv@tOg7ka6#a`pCbLU(b~D0dHJ8FoEhyjRfBis1%$F*5uQ?Zs3*fl>rj-LzbsC zA;tmO9ob7kp&5!a|6o)S2esnEzy7)gYF2wtLZkoN09^HC(7PSRdfvN*p^S&V-0V;Kh05h}%>Q*t~TgY66#ozNh>m zA$g#p=VSe;_`$^Ez?|uM6BxwY#3dn?JjfW3eS#jEG2}87_r@)gv4Z->aU2+D+`HhZBFR*-3p}`j(C$a?kmh(L zQ{WCewolA`wHBC^KN{eh**S6~&v^<1wzEo&a5>o}twUQd0fD58x8HVED%U!dayEVq zJ*_n4+ZotVjm0Kq)F4a%0Sk~rE8Y00xXV0 z;Z)-ZvilMbsL&EboZg=OCr%~vk+B?v4YJkt>-dIi61WbG;H@Lx?la_Ec%k&R{Qv_! zYUL`axIk;yFyP`tKVOB;??SY*jYj}e%;N$k6&VOWrYU)N8awLo>6nEQ1hP!K6x}UT z&mzvm1iWGkh(_m%V#+LUlMTt)!F$lG=sme-Eir@qm3|l7Z^mpVtLUD9#<+XnN|fV(N-(zgw=RVkBLB^yoe42U0m8loUe8Ta|;@ zRd0k+K8U0k-X@_O1dk!Iz~FYT>!tStD`g9}!bV;DRoG_OHXc02EhNwwTt3BCUlc-^h$Ei9qgpG7yNy;w6(SWt;=@C}5qU)IC1xJa++=o2I zlr<(Rw$)eH{{zu}pX`fR18Mh35x+qzp(1U^yVUP$g!FwaZN z$Yda?oeLCxKz?!09RRH43K6s>b+Cs<>-i~kp(S?fI~cOQo&nWtEC~Ez8dqCZ^+FZ< zDDrQCEj9i0g#eU$ zi$N0WW|FqNf7Pz3nLPzNnogQBI7Mriw|vWpr_Awq$`qlg6Yi6r&IUXUuIBPe>GW(l znO*4F)1Gbf3fcS;krG(<9YimPYYpH_!qC*5qAQP~R%WD-C^}z7=?Qal4jsSlsrvy- z0PASuB2S94iVBb(25L5gLa-s7k%3`E*6cMnVY~u`Qt@s}qk@GtIEeEjK@!O*_C0#> z2NgNWRA#98nI{t__zbYd!feKUS(d6uOC1?CxQUr$DLD(Lv#G>1`kQgn&ui0)Xq1KM zv+EX1-d@Pgh|-gXlf!Yje2e5GKdMc%qG_AwQq{7aig`Prqt&k>O zu#>?jx`I-PZZl?TY6|JyktmRNO~pT61J(prhyYdXvKj*`|5ZqEwSSgvuLK*iRS)+js%%Cj^ioDk|P|oFw1hZF&9j*=+>}$>- zW43FTmfeCZ^dZ_q(n|~k3nj33K(48r+}uH(ma0&JC;_PS!`v#@e()ud@p5y^f(~@T z75lRlhKG8Vg=XJVbL6}P^G-wkDDLh-?b4+_k}i z-!q^7M=BVIo5z>+?y>fTd)RKqiUIZ?Tnco#o>qY5e6gQ;5fHE!3|z?Wu2oe{UrT)0 zkR?Mccsj-a;A{#d6g=)J8SLMt86N8OLF=X&(o@x{tk!$Z0JN;xSL#du22iBD!>da% z0IHZk;C{{Y5>j6mFmu(8eE0I@hxAb?-01P`nB1k7pV?w|H-Yp5nzTBYE9d}Y72=WW zXa23UQad_9_r-LuI5$_bf(0huY-cnIcqu+<=R76!b{TEinE~<@E*Sr?{jJ)cj44i) z{LRK-uZLVgdY{7p#_wPetO{z<`i1b3aia{4&e2-%Hn@Nt6Pq`y7MXekSP*p$|Lu4l zvZUc`;XlkHRd%i%$#Q0U*d6&n(71>0I22m7h&v0o-f#>+yFg2lh<(>SQpf8tizgA! zyG$<{u}S?X#3ok1(mUqy+)8D0&zg!_73nbvV&rA&w^}%iwvd=&mn-L37IUbyU#X{yldHDLp2avzc-(Zjo--Pi8N1FCPC0QP)g3O!{U*k@6Ic=y=Y<%gx;g^EmkcV|rsJNbGLib-U|iSa(Ee6D@r7 zC|G|R?JIp`wcagqwv4v%(tZtXoU=P^eH3m-WiCnkZ)t}5I~m2-yA>7u?~%0t`A^oU z44h{7-xJ(MbqtNn>rmS_yp5-*vsa%6I2zjo#+*zJQ?iTwp|UB*l{dQ*XxqyhN_D+S ztZ~aX7UY|8uGla2D^?x7lS@9YW;*xas97%FO8{Qa8-u>R`XV}#0Z?F^(J9qmuu>bN z9iFwz%3~Hfs?g6~&ZSEtZqZb5Zlz;b9Pq|P;vftvAJTLg{+7dG9ywM=jiV+`WT2aQ zRayPO(S+T*Yp46QlpA4EW+TW`xxqUIc_B7WfsI{QlYzm?+}JfEJFqUG${Zs3ZJ7Tn z;g1ZI2Xb>)vYP>Hp@~eq2cLt~Hjgj(-74Dmwz`qWg$GX8P)N+{mi4gS_ZB97hQTt5 zLyw~|_8U*(u#c_QB`CzZ78FB}a?VSG=m7DA$*o8Ws;iPkf^nxE6>r^Jz|(zT`4A|O zsOc$mhZWYA@`7_3{bAZ~=OQaK^y+i(C*$#Fv`B=bSIBguwpbl$`mW-bW)&bFX^)ma z0a%zJrSI5xBd0FXLgD6)fUnne?wWDy?fMXM$$()Kb%gicYSH9^2tU*>^t`J2+^Hjh zv}=TO=d3o>1DNW8ym!G5e##~Jl_VEVZBiyV{NDFCz(b!$Dt%8p&D;Wl$??YtOgv5< zHs12h41jZykzq)|cdeUPD5^bQ*qsHQ3s;CxqA<>V-}Y`{W#PSV&*jl4Q5@Afl$*TU z85lXZBH9;t9WDn19)*E|H?Kw6j?E%di*>o!BM_MG*RLWvn_Ivb|BZo$j!7oY8-!#J)&)O1oCS zHp>g|lmlP^8n=Mr_v4%VkqiJj#{d(vI}r#vihKEi{gJX47 z6*vh2@=5^_bOJ0xco2ceCK350fRi4YS4XyNs^5wo1nW}-K%fzlNSw|%cWd&SRDCYq zZX+7#?U*=O9TRQ$<^-iO9g5z`mb|VrjjBuboiM@$hM;LesB%z4_BUwqUo`8Kc7wit zg@5LR5oR1h;%i9^?1>i~ajulT;99$9qu|47tuh)k)_ExNb7?9!JS0w8fCG=$e9k8s>=;VFdMQZR8t?T%Ew% z3V9OvFLLubjh9;Dd&Zt_1WPnMwW+zS4?VMh!8rbyi=qf{!8q_a6w`&d&Qq^cGA-;p z{(ST9afEnQDmPE^GVL7xSC#J^OeIo4qg23iRk&bbAPgPL(6f6`qF;;L;~_sngDjxf z;AhZPQbI;Dx7sr6A4jzADJZ-yAWk8nP8yDoHOt$#@vqUv%Lte6wPpH(bu3Px321M^zAQHDaJ(2{F{SShMe zJiPy`)VAHb=Ztk!LpEW+*n|iviIvU9<2^5+Y7%DHM@vfxhWUZSKd-Zst(HJ!zw@rg zKh7&Z-VmsY+a1+!yd&j%H;Ix42OHhI9fM3KSae<6Re}P-!xK^Z21%2U$8vUWHky|K zLE6F9!$^3U>;Pf!t&XYf&f87d_4UBETQFSb5}Nt|Vs^bVuc7_c>&y@T(mB{EbODU_4-=;goqk zDyw3^sfnK29Dbjd_2^OXN`M(}k{2&77b%4zQDpTZOQ#q8t+`YgP1>ZosZuL{a;__X$0}S@dv}fT*T>V2g*yegf z;X<*00lneus7~-FigDaOvKf#={4JYVdH0{0h{Cb_wuA29*d6m&m*h!fy;gqTYl$~k zMgHy-a;30IwKt6@0U<@`ZF7_=do%qPlD_}jt_5jeXL;=U8d`eH;g%EI9Kh!@hU{{K zA8QpNL=|5g;%5P-HL9?AX7&YNU!Drq#p~?C66ez%YX_9X^lQ;Hf0z@eC8u2XGLg|W zn9(c4kc-~u;90jQg1H4~H%$KvCfgTXYeYy~O_Jv6ddzjONYZWM<~Tv>wE%}4HyZYzJ+*1%2a+>}8hRXN>%a*O!(G}7sBMrq4K0!y2U z*DG;_ELJwzMIyPL)MJ1A zaToJe;RjWiqr;EyWwzx;9ZAU4&`c<8YjQD-ikx*auZ~l$&U&Nqenl<8Skp{f;)2AU zi!w*I?RdOt^M%9Ims?&ZZq+NVSXp9WWest?IcolNWX4V8<+nnyIS2QfC+)iDD%=Kg zC+EthR&Q3WOpVyeZR4ioYwte(X#3pl=u_;~@zciYz81YLeSLg}nG1CaH~nc@4&MC2 z!g8!Q^^3}i6?2#=X=l|I9Phy$x+jeN{p$k-cWO>p>LONe^=kPAJ` z&lwb&p|iLXW9+bZ=Ycqq@l!sEN?%HeC<-)x41kkA%$J~n7kZ<^c*PO$O9gQ_UHw`L z!4>opFJ{N)yI^R%y&e1vyJGt&VuhPqD9Sv{Uw3e2KCfybd~a6_QIu?myUgo!|Fr&u zZj1!;vAKub`!ST5nhRR$#r$KuPFw_Ehu5dDGeg)XZ!JTq6~;G2O?=Dm|4Xe#h2tt? zL+EKyUmeWzsR5VrK0ad;p-IFdV#B?scRCAOK{me9~%8Ig!H*h)(UV#vrSvs%% zJ3gnDMBuj8yxtWd6uYeDd{OhV-=z%o4HgHScZ%Rt@i$~cP9@hek!|!nGkcMz94vI? zi`Z5OCkJGWTx@J5wzygqcJngIB4`p^)S}GhP?6hsXx}DJi4A~i3+m@}k68uS>}C+! zpH=`P;+`$iLHvRWxj6DO^1=fvP$2@Xl#Y(h$B;c>l-Po9C=;P&)mP<z~Ps7ifPy zbL|Xu&fR9JdGvvMsl7%m0sdpgKU))tz1Ui=QLB3ye^h4KOLMk)Xtnn__mXDtnS>?P zIR0{-vD>>=1}bqHvd-PZi8)h+<$PvDK4eXSHFxj(*q!JV65-xcOqMl2#zQkS_=hD=e7 zCpzaZ5M5!yqpW~H&B0@sjfcJi9PzNF(7g5SB?i=Bh9t|P#nHR?+M6S}0A@>?!#E0( zWloB*n-~tlDs84a7(Mw4tZ^mR-p%;XE^iinS3rd#mJXk>zTP5$t5zkfCO&LBy~)#f zko+!SeUr&kIR7{ouF#yIc}r@l1)7YGoYgzt96;mlS~7v4fM6%t zlRPzQU&DkcqB5Xb%>@&l8Sr=x%d~=-xDZZ}58ok?CcsFh!9?iNqY!>Gm53$e)#Cs| z+(I&ut0p-afw4OcIo(6Rlzan7_X+bQM2>=y&zpTIqWW#8M>udmVDIoN6b(Cr7(r1B zXBOGYgR@F)%?*f+q$3LgBbkSZ4r5oVG#MA>RPx_@7|->7lKOb_sku!+(%0tmuKq)+ zs>?d;tIC{TuKN4r5y z{tng%e8GX!vo&2TF7pEqc^?TavT@lB80Q?_o%DI;6t2UHp#9mw|H~G7fv_6~drSYy zv&L_xd_OKo=cSYsb~kU?#ki?n+1ap?kzIA*xO4NU(r6v!f)Dur6byglh&ZFgN$0gU z0H&>+dlN4pY5Ml0QFJ-K$>kCYjR4xWr28$bhH@znHevV}tg0OQ^K*2(XYWOBah<_m zR=4|99>kwdcM=w5QX?F!M>1jG=Ty1Bj)@tB?V;H+3uuOWAANVM9lmxy4ULzDolpew zSbpWdmG9^_%c+H z21r#LFw3q=`iJ88kO$I%>tGFFSQ>;vu9dH}_!@vJi!;Hud1YplUZOnsL?c`E5bqJ} zJnI)rf5m}@JtxXg^mtH^*xL6^{aUPqbD&w@{26p4PL$$K=@5haH4ou&r
C-i+= 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/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%0Dg*o0 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

s|TA~r6iYcU1WGt3Q?koqAt;lf%R=YEx3<* z3unb0is(8?T@$rpN?DEZywEJhhu8{`oT!_bg%RpbU2M8d1?=nds3|VK=eMcCVO?pd}V1qYnY~F!~i|C0R;Vw z1|EM!aa~K&jvyysug|=GJ9fZvwc^;k)92B3K)7aF#S}xIc+&#oaTcjR?KZvmTjctC z!FAd(1C%CVR3MYKyy}3$s?d-i%~c7{9c8AeT&U<^jgxGWi^~BBS=C>;Fqsz_(T#*7 zwhpx0zGmtGw)adiv|%`s&j$K+%ZeA5D!VAYmizbx>En z9C#BwexD8E$gvje=sN@-hvo4w0HTfcz_ipwSn9!buD7LFhBHno&u@g(3W?c+*KFQ@&~H`!&seerb{WNBbLd zT($Yy*?U@EVq~|8VPm^>fP?Uln!`+Ri?|--Bh- z)kp1tS^<+*=}=r)<1_-V8XJOPJyqhi)1PL?(IQJbt9_$Vz=M@8eo z6;SYP8%?x0`sY7v`lLCZ<#xP32!_qUQB9Q`8?%>Fb8A-}4Y?XNTBGsWkq)4?83!rI z$y;J0ljrN)O9C%SZ^+|>GUQR)LAtbij=Uu~3noBiDnGw0TjWzY5e z13+oh3#U(2lvf@6*oa608dIO4@-lqS$N+OUx3RXFuaGh*sMc(JGqn+bqiN+LaNpGf z-y#QIZk*Tw%peLKy zRjd6V$Q@T)k2$55ACr$RC;pTV)o0m8_O|EY<9TlLyQMSabb{F!VO-#7RV=qy0(~6L z5Rn2r{2+wVs-cM1&SY}1Xoc1eodh&47O1#%?62A@KuzJBbB<0peYU!QV|!6nEE{mv zQ^|eIV|=jX-Z$H2E3@UxEfwa)=rpoG7~aaa$|3}CZZoH&O*8iL_C8OqeFwx{*WOR3 zORJB(S6OhHMbGudCNF*-EpMinQ?DMvXhT7wqJDLzB9qjKF5<}ah86eKP7K%>7;}1U zp$e%G^ieLdEN=C?@+}CP_rZ|C!ca(GfnVV+KbcDZ{ECxP-%Hpv4*1{0QU&9Q2j%9=a_PEp|MeuN6Ll?Z_wts!63Ht zXKGVLWebNYHFcJ!&oT)tQok8IJonBlf;;Ai-PP2*JYYPu?&HUNyVk8Q7l=WD@Lm0x z^d={>O{QyrJf*{-`98h#0~MCbQB(74j4OS8S-bBG^m5ta@+T&KB?_&08c%yh<%L=K zfQVe<&9xk;kBGAP;5!j@!9W`Zpt`K(yceV|fDeF%r}w~9kCt^0Fz7%Rg2J-~`#wji zjcOhTi`hA|U`U|A5E8!xwWvi;Ki$#YA)0(wjQAo5B}{;sdhF9$#~(5P}R12SR z@}rHi+UHj(a!io9I&Ik|&$+kYs!Qs#cVaMVG$Nl>`)8uMh1akoFbaSKL_koPxwD7# zwh{7v7QZaCPETG=w|i-op>Z`@MlmtxlQpK;EQnS_L%r;-y8feA?boj|!>PGaYYh5N7es-+6KPbi4j&W-JxEFA~6&R`kLUZ~)| zfPMcYzd#OICb8pDw4uNgE|}t<70&;eS0e?3B7zP?r+?kHfE9kq6AsJ{dY_Ii6rZ-U=5A{*^Z5~8Q&L_Ft3Ny%*LT&k=AZx@~jL4rA^8L{AYnys?Aq08`&%%Q^CR+R6;v9a^{RL3<|JnWM8&y#` zfG6QesK@m9?mxF{Ftf?~J4q5$T1IBm=;K*nH>xB*OpbNWr)R(nydW*|MN#Qz2~em3 z+e1d`Z$g|VSPo5Ut+LzxS42{v+fQ6(7$U8W{lownB*3_m@2`egvVoJe&Mc>onKa2&c)efMUu}rjRJZ%ho zjE>*a;b(5^B&yklb{6{Ji7&$raVbQ<2F1%p-pZ`2s5~f=ZM#Y_t0nX09$O2|#*{Gg zD~7vTwsiD{Y@IsfxbR*pPCZB$Xrl{#0U&Xv19(NY{lHT6)=r3|Pj*{!D`Kcev@X%& zgPTN6$C(N##CN;stb8wwqBq`anL44lgM8`A`Si@_uyetWQYC;3y?f(*BVncoE^Hw48+Nsz%Yz~Jd*EU zdaVs`v%A}GcktPuyFN!oo~!=;V^ZnCT4=NRD(&L#52JmB?$l?r&A19zh$pxIW_Nd3 zM&>*7?b{vR?1>vfZ_d%3^Qo4u%6}4MNsTmt1GjSl5>%_BIZ(viV*)N0?+qbYK_Qf^ zieXBdN8k#G(fvEpkRJdPPP?clt{u_J!MCi@05T33%->~ul~0IJ83NGGQR428f{0E+ zds`@N;slU7LM94fzCQc@GJp>>cgP1KO!nHXmUtOHr-|x>zKQqjklprmt9E*^?VYgc%{PvU(&z{eR3fyplE+clE z0`u&`>*B*}W^lcssqy`yc>!phqiFMjY!Yb=v>|34ktN=V_fB?sdb5(QSrI{_#@`^; zr=2btGTZZKctHdc)zHqOCT47j9#2#RO;W(1ql_r2%g)t)bv^$k7{#oeeW%ZX>a2Eg z51z)VmS$VNtaFx>5IFR(5=$I<<)Grkq|hk#w&mN7oCJ#Ep`O6jdKOgf;EbdB_;@C zG^a+*-fvl9?tetvj+aKFJF;BP)b;@^YVr&q62o464ZM#RXn3wC@zsPcUtJC7_61y% z^K+Ef(o%%Oh1%+s1K9I!_nG!#gQ?650_Ez6z3AUYi!W1iZ$eogAltBe1j`&G1H^7knL0)Mip!20t7Ud?T4Z8ROS{AtfTtmH{!EK+(CGHnHa+h zsSeOUbx>uPQVwkN>rO#UN?6GX7#yy{#r06u#qqnYkb0g>rCfPfIJ4%*zlL($QY&$e zJRP;mxc&q+YYmK5!0#*ba; zCoB_zs~Hd^eraT@5#245ZPvk>#z97IhHpi&xCu&O{Dr@h$GQ-9XVSwkAaoSy0oBqXG_o30d*RzDuS%-iXJXR=QH>wgBMGwl4piJRh zI$dH}#0``URq6qM11uiMF-9$I-O1^U^cpfhw+IB!6kpxl>sMx^yZo2Mojc#oh z0nwRo@w=B>QF+_NB3&u5S)M}c%eYMTpZ-sN^#S!Uw$e;LYKUfxT5zB7TRJ|AU%=Dr zjZVEb(rlL0d!-SssuD~2S__&smZwG_78545`7xAUFL+76*auRrQx|gQFTp@am5{ zgnb@);Ivi$wIErtY+;QrEs3{FxyOmY>*r@qfmQ6a)d~rN!WF;QY={lSVHT*{x7+F{ ze(CCS;K{VIag7ggWFQCXZ}KBg%N>)^cC{d?J!|d`v!b*UBHat6jxHa+9DDK2kQ!2= zR{*z+ET7yq$9cF_<7Ss;wa~W3t2x@b+#*?UTX~N$I2E*>fK$W7z?K9$SR^jO*y8aS zn3M{Xnu`^3>%RGH3*VNxc`TNO9U&s9O`Ti+rjr8*11=!#UgvoOy29-IMxr*Tvle^1 zCItMnKoZTrYnI&tXw6y+9n+yu2LZe)tj*f_Xm(G|VGVgd2i2E#0=XHs-xhObVZLZ9 zudg${PGgJr*Q6=YnSNb|N&REPCu zUroUy{(|fGwE2KGqcoX{o8>NBWA~)ua4zf1NZ{HHXRL9Yvug4iZ9Y0Xu#1X?iLJyn z*mqFAVIb}BEbq-*so-zGWT%~Rd~rU%;(D)AN$aUd zKdNnKt_zZClReZwlhO~uA!9)3$l=(JJQrF9Wjp^95y6p{#?h}rkN;=qok?jm1=E^k zKu&&!tus2>1H0Urvc6rX0!;OlO|-exgIr{L)7k6H6ZJ9iH&JV9%~<(Hc<5P7bzH2# zW`HCCbayn6xz=YJ3A`nJzaww8iyuRTeKFRy)C%?2tcFx33;Db-+2GRE4Pc zyk+%xjl6S_G*4b9jBYs%>$7am{4wV-5*+0K+JQ9e;3F3;mTiPA*Kq zI`L47#C-inLvZQ)Fwe~`J*%Hi0MpO*N#SD99tHBFT|2`5 z)&1RKJlHlHeXd2GnnsPBs;KC-Qzn6r zg4*+linTm#{m-L&mifNA-J7L>uaI=)cn-n#H>knpd< zYzc$(H^hv%>TLOX&z)M0efDpM6H;GakZ&9w>;}{5w<-m_(}b8@Rl_?}>_TaBM*iL> z=Rq0;X8OV?C*)pGr2|dLnZ2Nt*7sz|gs|cRkukE`xX+wZn9|Lb%O>P8x%YvUaQ2E` zN^V5`bd2$bagItG`o@v!2jxSY(c&{;MJSAPYyml=e$wfv)=)>g3%SLL)zo{fKRav! z9|D_-?ArX~n~g%C8cE}}<-f}9(2|c~_Xcy#rM8bHO(4KM`3pU$q?+FclI!(htm?O;F@P!tkstYA@4Y0GInbsZ^YDK((rr zPeYR4oy3(ro6Y;fw0cNsdA+)twMzIH)c6^U+{W?zIX5s8P;U1nw+nw>KrMQy*({a~ z1D5qj``NDav~zhyy@#Z0^%KQzIt#$|WyLD7nYhLUB6Ys!h&JZf4Es&=vgqu0s*%L= zpLi5dQPmraK0}1XC^$o$e435MBZS?GMxS7Mg4cof&H9>tbBmQ#J%Ou^&PyMx4@h5J zIQ6hwy)ckbjUfv-e)&tgzoqXJAI$H33dSE9UhJ2c)U&pr*}2&Duh05U5)?$)_VW#Q zq<8Af2>JX1u?$oQZ)5$MlP}gR-3Or|Mt?h`VE=!#DWllGqwt_#alt-rQA1V^|B>Fz zwJg;qeqjDl^ErUfE;NCTaN$YY#g>k&HxPB|ht^k;eaIi66$@xR7*tGrlIrw^Y6b6i z;e5%qCFjxwZPs3SMa5@|inGD>GH!BexPZJ1#ZmON%i*17O>@4rot_I{5)Qg#{ieao zF{L4^o~B!{fz=KwzwASLnC`Qq%nsn|*a0>R06e?sEYNoOe0R%f28kaoSKtQlW6bVjof2wx z`Ql0t0GQ1%#*_Me#D^qRD+>DIoxK0Tj%sRZ1;vijr(}{BkRBhld#D023m@HrToz1+ zNK4VQ1c@{zDv4m>v$=Z3>;?m%(}y&}gC~Ae?;C==;7ZCqM1uku7Wu%4O9e!H>Hx$i zbwKKWw79bgzu{b+H<>$FFbTTYCX3#B`DzjED4;zROCV{4)1uJ2hg*%EZUMpfv5uJE zGK#Gy-?v<3NkiD1e7?^fZoIffhE8c-Mmr+i$Pb28N3((3RD1(k&)VShU~*va+T%jP0!#=i7j>UWCrlfcN-dmF0^8w4N`avj_d=`Nj93rtHvyDi^q|#rv2*UWICH%7+$IC+I^#U@uG^OpT1R zswRhasLl~!UA}h+XH#?4-+-nw^0^jlh`^agD|X0xcNsujZL;dXzA6R`uAuG`2H^6&tERcE-na>U?^bp-)m2{14>1umNv1-C6KjQxy0ab^e_WwFt)g;$c8touWlS8 z=Go)m(11T*kHp;ssh1Y8#=gQDx4b;r$~kxdNr=mxbG;!04p)yMMS11H_qa!z9x+-D z`T*@7r4-EL0s4w;B++iggtu>mHQf@*j-`Ie$_TVjfE4_mmXGqU`a92hKxGPT`!4N&p&;+d8-c)*p%<6np-K>e<7lq@?hPc`)8tqB zMf|3c`AbIs?Ymd4HH@rZ3%!;I;dsq(jjMA?w)59Tu4|Vrm2+6WLuWkvVL)`@iukjd z&=<#38oFliwdN|WrbA0?V;cfNPR^qOn9Ak{ZkU$gQst*Nf+Jst$^Mx4y~w^?pl6So z^e=w<_V&c25*J&x!-!1mv`c1+hr$CPX6n}J^@zK_ikpeW38DG)!?lgUi_us^bp>Mj ziw-wu&Ru2ou@JeKu&2F-@#W-GM%$_Mr-Op4D~Ke zpS+AsD@yLy*QZWwzCKpLQE|o9Hso&EezW(Z@MUFteiowc8ElVLj@005Va9zA=yhNK za$5T`sT=wJ9gA!M)Ax(+FW;P;Z8{fR{VC@e-xmbi?w*YoVfjKMrY&1t$zj*{mTAih z5iYG_J|I}imLr_!oAU_K<;$0=D9`IH#c>iU`PMSG`;GmBeoap1?~2|%|8?nu(ES;A z5Bz3SQMEh8_#^ezPB)T{5|d8p7aSLOzFN<$d|CDkU3VC%z7*WkbLE5o>StcB&3(}b zmk4JLGdsgZvy)FmYR&2q_k9DS5Ep2#g@sjbiWw=GD@i*Ow$=Ai8SyWzyv;(Kw6x>0 z^JJHtysGj#j;ZA8>P?o(wRY7hVI2x?z+SBmdxUQp)vP>BD(z%JS z%8ILKtzD=Q7k_a2Yz2#l=(@_ImoGYAG<)_=qf>=jTCZ3($HXyre3K<<-EdV)R3G|e z?0Hbz?T{EsBiC?*LmIq7hb&P z{v_EU{@(H9#KZ@oSI~O8`m4q{l!?*hDw*j_*bHMJVJ$sit`KK2Q7@D!$Ot znyOeG6Bn0cM5?pzH)nG5N36Ho)yt=Nul~aD-MS^l>$8cN@~2=remvlm(Dk>z2UQu$ zp|4&&zAi$U{9vm+i86kOK?_CH3(kGg#l)mtqsGVnw59aE$ugw!TVddZDWlCS4=$)O zJc5bW2`eQ|Zn&hP0rrck{;;6;`Kh^cs6M0RNPcN4m4R)VXAW+7N(75FcU7Pt8++24 zkKCaUauxOwFQ{5o9WtvZ=kC}mdtMwUVID46;aQR?v~nV0j|Pr&{=i0mxrrbqZcML3 z^uFO#o_=*`O^xU$ewWi=`ub1oB5G~y2Z^znS?$lC#OKbP%XpeZe2v>W_>O$+XDd|R z>iYVt)YR0>I6d*lkBQG+=Y6rdYX7UQZlW(&yP=`sg;J(}Wu;J4Bj=Sku^(2=%FEQN;6YTbaujq@X z-Qlk4QVDz`FoMj|pSr+fOqo?zx%=@$OVYT*i>mrFDuN|E`GFQ^Ja3Cnbn4T1QztoW zs2lwzy@&oqi_f;xymhPVQ&xSfC2}7v`PAIq_UZIiyU>XG2NX6umfp8*LbNyfS@|+n z#FQ!bAzI|)fQP8wO@lnxSKmIo-=@1JgO^DrE5Q;2?+OuI72XcVAZcTB%WSp!sml zlwf#GrHPBzp1i*Q0S)smdTdGS>WC1!V|!E*-R%oTTa95bVV^(W(5Z00pq{Vy#M6`i z0Vk)Sjm_DUCr_$mtDUvAwKYeVaqaExJxy1jQRayYRv9}cdW!^11N$-48u!h#^_sZ2 zcyMHMd%L89!Z{^nWrz7LhNXdmlltD+E6`={OqQJ7$Bjzv?_xvx*T1ZuU~>SPF>^4*7|Y>XOZ>I%tc|PTglj%K9W^CP~>2nq_nj3Uh~xK>}_V| zGj5oXC*tDAz>rsea^Y=Qt`_nq7$L`D-OsL}Vc&G&nZplFnD~QB$B4kJM#<$tV_10o?I6l8L>t*vLlsJSO#++W4n-i~iZ^&J%+PVcU9$vCbjQl=`s22;F}OqwGp z1zcIc^gy#0Y8Nm3;|P!L=}~z{#d!jHXE3r&oRJ{?IyktdA^dhH_)Gr&{*<31#8b{F zz~~Xr933BcZY{kA?=k`Y*!L-xyLX`z*_ors8P9lW;qm!nUI#m~bHk;aY(UlObR$WcmIA!QP9w!6ciNvYFHb{7)FIsmXjm%^72~!O`+d_2n*h<1H+U92y3~E*~FNr6=~M-%0YGNbKrr%?l!uj$}!4 zm3%##h&CERS|7ytVz58%@czDW-8TKMo zHtIQ8=$6f3vaKQbMqqb*+#1XEEKQC|&~x(?#eF?-QBfH9NnNYmhu_HD_S{AUUmDV$cgACug_J#8xy9xZEf z(%sGC6wXu?o5u*U2LBVfk7OJ>Jz+Je2$Bi`l;kDy{l#0Yr6s&$mKCP>PYcT-<-Si6 zt3x_!n5CpWQogW;uCDy7zUhfADdD{(%%(cKOmp4(b4z1S<$=s~=4&5h8Cr$yqGUpM zQK{n`Vh((I!LKV`PX-xmlO}GNS>SQFe(?6&vfOi1I;lBxi)AyHbDLFNbQ$8EOiosc)K1*H zvjENr8wFojOnm&?canfY9BN`?s9m=(igMI*XJuw2pVusHV7~hzHI?r=jg6s|8I~pN z?OP#!mzv-<`rZ4rKb~z&dYFYza?6WI!X>Hi(#=|EL|KSv%ZJ4=Fu}}M$2e@- zGBfynCv-G7syg0Rqvo6dgE*UaR;zKX(F0DEcfq_j?Tp*`i(bbwnQo2lvz?opQ>K%T zReR*TN#lRL{LSU??`+_Q{nB2EAFOL-Jqik(*5>AgG3I^`Omg)4XEb%?k=buwfM99} z*0?1jp|q^*`BMKkFzxeX>_ZD;Mn=ZF5i-LS9+$u!`wJ`{hwW9v#_QnqPYO(1R}b)* z=AEm-QevNAQYj}Noo6>~p&Tx85c{qJ_N8y;owq91>ZtEcA}xC#gUzG^j4AfQFBgM> zimWqj@o#%ndP(M6TI9&CJvD1`|oezsrI3zdB@Bodo9IK6wsy ztS4Z)c4w70+-tp&QRCb5~BnI-W+yM1&rft}K7}3nb)EpWg63 zW@MZ9!VMKDVR_}kSa%Ywf`krg&aMC+bz<8{{iCs_lhbjpiiJjWi_-0xVH=i%_4jia zc44;T=>+MT!gkLey8nx>H;?CPZNGq3np1`(5+XxXA|i!`Z-~sKjFp*?DKnK6nWBu5 zh|FWjOerKq<_N`?%u~jU@7kU7Jiq6h_w&B}(MQMewfDa7>$=vp*1GN;cwYSv>~59b zFPS>emn`bWPSe;wee1-I0RI<{9CV_@+|oZ7bNr}wI(*>g&n;o8J**00*u_lC#jGxNVEb-iymzNn=1Y$0^!5AfEmsM4D|N8S}h zDKniijCD^`OLeYj%LD1D&`5A#f~Yx3H< zu1iMueigLR*Xi;JsXqJCzSL%ZykPx@56+YAcpGlAsQnO=QSHRJM_d`_QtAy>kBEqz zWsr2pT_!i?>^0#!RAcN=;Kt`hfMzGiy#$H$9zlRoO*NInz%noVE0e ze)3MZsHG)+Ap51poYbZr>fafde$6qtDR|muT-_Wl(dyW*{hYt!?c8@+J;i)yPI^46 z9{;O{vh}6o?b?XT;H5cgv|x5}^O1$}y{>r!Nd{e?E*J*2K5d@y`Dst1bm@|J?AiP5 zhYrcV@{5RIH2NIr1%u?X3lW0+@2^`})IU4DPRQg7#d9hD^6E$20*C|cQrF8u-=_x~ z>+wq*9UVW+9Q!*^?tgwFLLM($4LwL69rbrxoQ=JH`SY06(W6J-%}Q+&e}Dx zYrGE)*?;k zKpxeLy*;!V@N}8VdM#VYnMg;qis|FxG_Y4had>H^!e%t4h$y3DOc#s`9e zW_v~7zpdV7_*Coo=YkxLVwZgJJ&kU!k|YCI3%#38tfsGxj!q^?Y0j2?3v;qw&MXR2xa@G;PUy(%b7~rL?e0+_P z*($};H0puQPAY#bwX^99wY-v^#)f<+p6Sm?#koCi>Yx8Ln>!@NG5vvaFhtAutudc{ z$C9X=kKZ)&DGKJA_NBZB&mY*bDy{_BQf$KCHO2D|9obrEg)A@93lCo;C3)1-bHvyr z_f8m`)1v1aD9B5?hd%x2;JErD+qp`KekR(q-!qh}&%=buW^at7R6hE3CP1fo(CC}7 z{d#j;cins3-yV9DWGtl;ud&^e!7^Q{jMnwU;0VPq< z-7Ay)42QLOezgNjeMwR0Ya7A_)I4~&g{CAe`3YZSq3N;YBvXA2g^5PbuasAGYJ4pD zZGN5AY4i5pG(Frp?ls?4;$k?ub+bv&m|2sLYoW@_S3S3nG$A`9r@h8l)ThNZr;g7W zXjd*3%YGE_OsQHKQVn>(8nE@e<(Pcx4I5VaeaD>6!1T)}?-u)Y|3-B|&@A#Vi(mY{ zE+c~FY;-vzM-CM>h`D0y9hIO?{@Ls&G1&6OE%sQyfI5wkrtaAHLY4Qdds7Ej_Ei}_ zGu?iC_OiafkhSg06khH*(~nJM8tNhpL#hhfuZavM#hKAd2wV%?)RLFB@3lurd}5;h zSVuvyA@Q!`$=@9wF#D~Xh+-?Zv^9J*{o zuJljRF33^%?dIktpkKMI-qFmA*L~%;akLHHKf!c8U8+WACEziMY*jL|OUj=qLDka5 z#pU|9*YbAT*HPr!?(mjzC-4V{JzY!b%7S@QQtWEy^}pMub7Z`-`IL%Eu&({c_cFa{ z<#!ZEOun$$4Y$Z=is1_H^Qyle-=c{_PkPDs|J5jLdrnPluylJUk<6%RX?Zx5U+*we zUS3`mUId+}u@`MrMf~|kBr>+l8`OsB6i@G0M2jMp@3weMAzF-+iC-gwxzdl3L(2^f znHPGzkKuS0Xg6m*t`29G$yQ1(jvOudweD7Q^j?XTdHwqN(QkPK!YUcw$NrB$&h&dv zIx5+$iN)_`$jHcWZar$=a`4jS%RZIOpHH)~I}ri0eQ9}l-=;ezu1!hGJgP7JuFt5W zi$F-x_*>y^>ir!%SS21uxqVMoyU4fl< zIqvy5Tklu(_;`bzK4>1E=_fjyG?12Pdh6>QZXE38RZ$U)DGB`xZ3l&EP{_&Iii&+j z30@t$rV`egkh2cFYt!q_gdERy!QgKiHm8X{F^6yN2hwtv>(Lf;05x}o4c-NSsBTkGXy!N!IQ|q)w+p=QTKPSwwSK{fpmFJe~Z`J<;A&HvBbv+TOGT#S8m=sR$g9C z0Qt+q`{Nq;#1^)fYT4~vzdl8ARl6h-j5V!*{)^0y)y`P7tbr4&40)>#UK$l;tLi^{ zIgXx9R@WUrOl7?gLs@@w&8>ohwJ75$PWKzoHdYPN`2^3LOixAKcWyqH5atlJAnJBz z`8(h0J#RlgEZM=|BW$S6dfSSp#Y2Ac^n2Y{N&o>}Nhb3ze+j3%FQeEzbYk6UYqJ`4 zs~^|ywmiPTJ7*}oDDcKD!dsRBjo>E9r%HC(Q_MiJcGDIH?=OZZbagVNEbFXObpNii z%tWs9?`8_=Gd^3PexX>NWPgn>o3;g(4S7}`dZ5tb zi^eozYP)x<{owb})z&H#a$fk$y#3#%({w7XXb*O(&-_;D{(d^U$E$VcIbGGAJI@@^ zpm@-)r+)6#XQsYsOa7qJKX;zhV_%#5T+uB`BDrnmu4Soz7I3LiD~nijV=-0qPg3# zb&n~ldq%z&o=kdxZij9Ek?jYnQ+8x%^B#Xj;5aMZ(k<*I?O=UpTz@${R++Z6W?-n| z_BhM3w1-{r#h2${B>tYH#izVHJfwjjxhNr$bCEUQ-t~rQ&psTwb%tkQj)&(H+ocHd z!e=3}NXA|2Z(+iFtZekS;u_wTI0;|S`m$#q@5N&qo~9jct3k4?+)YRR3kVlrj)~s;t5Psv26_eb)r=e8h%&9hOe^~qI zzhZbTNo)RU^4lcG&^OARfz}BwQz_xIPW*Ql^xV5o8Z~$xG%)yiDoAfrMOmWhdfW9B z>y>y;7CA{N{it4DrAppUK~33_Kl|p^_+6Q!e?ipMr?&DJt!s0GC+iB1nQE>-YGhxP z{ew?NeUilaqnh`2wCm8j5>xu76rI!4gL1cw6tAeX-BWa>p|?|h!pMYkl>-Suh<_gqj{hj_}3JFLnA95-n$PK~PTO>j0y z$$sQ`Q_g(HtDu+sT1}oUkvpHCjz+vb-$_`3{b+FI=ag9Mqo3Vdm$Z}O8|~8K%_ z7BX+SFe{e8MZv|%*$16_%ez zJY~S75#!wSbQ5pP3(eQp4>0*YcpxYf{m)8CN(f@x6x`Yl?6cjgT{_uZaj0FAB1+ul z;;fiY5)Ww7hTBco-Ojq2n#p$FEe%V4a=pL1J677dfeJdLBqI}Sj;yqEf4uVpY4LvU-^M$uR z*SwXa4+!^oDXvAjv(TQC?BnCJA^8vQ{eMhq(yO4t*&Rt`Qkj8b_Cwy4j-xRjME_zn zlOVX{+Yg6+yaZSWUikh4dcKdE{T03p&7t+PHL7ORKZb@<)DK%E)qFlpL1X%{qGF9k z<_j}5g_+@5CW}l9U3T8mxVrCBG86RiFAPq)96G_rz&LpPLk-{GeA*Q-ZI?U#LpTPe z1UsEwm&wN2ryLXx0k*g(scog>FJ?05!6@HxiR7|~`B{N}OAa9-Gx3*X{>|9wIV#q5 zX&^&|eMn8_p3#%~*tspl8f@sqScB55!)|%}{(maHN)F4n6Cb}a32sPsr~Hz}AN1sp z&MU-dJ~=MG4Tyl9-5Qh&4bzR^UgX_B1_jz}s|0Ue{7|dHepGxTHKpj|+;fa4QjPnb zveYck71H8nC@AhDo~Jsp9|Ar&I+$;o``Nr=@$L|EjMPwPoPJhVjmjihyNzZtd#Flt zHsF|&L~WyJ;>T8O8RZ-b?QG_Ps@ZJ;6?~+x0czCEKISjyERVk#figzXJi$kqT|1i7uX_Rp= zdq|k~gT#TUyvgM}Y2A)~FK$W2IVVE}3BjX}`L8p05VXsFh;1x4tTfLVc2(%@-8Je9 z&}O|rf;c@0ahm>HOyiZsEXoTpsm_bxwt3m}9v*VDUi@W=+)n?|weJ?O&^@?T+gaJe zzvFxhD{I)D#?}2-Ky5r|N*JF_2+6bJxO<=L*|TR^G8a1M9z&umE)o&E^i9TnXo2RG zo8GleT{=T#=;kx}>4&NO8lDErT-R&4UR({B;4PaOo&@gBYucJ(Vm#Y#BHpj(cdPEN zkxL4W0(w86M=`9hdK_QhT}5}q;xzxJwOIx$`$F``!fK9LR-V6A5v1WD0!7@{{ob2L z0_tHB@>%A~2dZrpYnA#VZ@`J>hBRo7Z77@Vb=286O;(OPxUmrKQg`U?WN=^$f4ogcHJz$(v#Y3k&*cgAF z{!{p%FN%Cnu!>zX4+FzSyAib=@{viUGF`+sqq=?d_h~!~4*oqdGcv-RY9y{j^{Km} zsG_-#Gp^^r{(0GYU%3Z``DE10{lyAPAqIarzts!8_EhJMniZ=^c@`s2Bu_@2pk<~^Vv{(nZ_|Ey z`vS4@qM|3tRaRq%Qn~>ushxX+rx$rE$+Fo~Mf_=$L-V~I*KgiD%p&gmi*n;u^dF(> z*0n8(5_N5~^?Y)j!Z*+Au7-V#j)@5bXZ^N5+c85*PEGR$(VL0g9N}U7o^Q=Tw5VU( z+dry&PuI%J@>q4x?Q3Xg0KvEk1YoXVv-~c*8%IWH2cdVz(NW|^d`L=-j25$( z9WVB0qOU9J_tvGiXb)YZBxQJzyMH@7`GwX}5#?an`M^_G3IwO(1q zkDpRprv7?T|Cn$%Idb=G$PX9gKbl!B1O}Ugy^jdPdhfH zoZoX;`vdCLWqGYrTwijuoGAL#D|5C6)6fK^z3!+nJU2X~x&74fpiz0-gDp9!bn%su zk*{i+++v%4>sUPQwS7%8&~DAtBQAAlR_5AnQqtBQfd8q=+Gg^xfWT4 z&7TkDd#p;Jf-;7mq4p~t<551K{9K9(s)njisq>6k@m!ZnPSZ>^cg&UgxN}S)Zqoxn zQjg|pVYp>F}D(^JP`eVj} zUH=d4FTvde>lv7un(h|3cK4%nt=Z69&yDz+68g7LmsBIaqJ7`NgWDGG-bh}$$4t?b zuGM;_;9t~-pZpM0(Sgk6bs$y@wh`>g^P%R{RJZrzgr1zL!Eaz-U=qDr8+~HnYc|I< zef`{ag~sYTzkmM@wzjpkO&@9wZDKq1WOLxZ;7F!m^6=`5;@KS&3z9(syKhGFm(Z@v zlXqY(8k;_UiSYNQ>hf51i+&v~=^=4*tivZhet*3n8XS}Qxb>xrV<)yTiz->vmY1Jd zn*C-Ke!}4})X`kaM=xsTQWj|s^YDBrw6u_+I^yyE(L$mGd|;mqew zQ$Kefxk6FsFdl#(dRI}g9^aNZfBy8fYwX}7@9GrY?EVHNt{kqXzE&Or@3;=bfaXvhEiC$1-5ugpDoa(49Fo@CBn4+|?TKbo)Jx|+EP zOA4`YiNIg_xG*MpcE1M?&Zw#F{8<;1sj7oMP+CgrUN7Y-EiEm7o8-md&!0axr&zQH zYyJ#dNAbVE17ClZ(a{&_0~&2z_3?ZAsfmh>mx@dAsUHjnXJeIirv-q;Bccb9R%*gX zv>IAk=8x;Tx^xAf1_i~cFTR=?sOP8;_w@8UJ&d&SzkhfS#b>NO`PDA@W_XoU`G!#W zBLoe%%#L;XqJVvP>Vnzr`I%O|SS6kt{k41RZ9@1oT11U;Pn_g?ER-^R8m-6v_w(?z z^O+$g7hPSJ$Fd1;hc1fb5tqF!kkIy<5*1ms^KYzyf8ep9@EceOuCA^uU&_C+@6)HJ zBN-sF=njnooLXCQb0-=fR}a!ORnoh|_M`jV{W$CG6#t4pq32^vMX1b@juWSZj4Um; zqtWnemM19^IscQkj!w2US&AertzUk3^9>uD1~J00k!?^-OSoR#-QDYS>)>XAec@al zXwIjV_B=bch@Lp%TlwhGBLa${oOAH=D+-PE^jym-{8y05K9UXLJzq)Xv@D6^kcd|Q zU`@|?(*DooO;pc<`9(#)Hp%mZGKpCF#kenQ=DV17N=9ZAb~!6aN{W5ozBLYG9j7l| z++|~Hd)3(ZJ|6Wmq(zhF6nda{FVI2B+R^-CVobzNwl6FyGH4*&GMfQKCU7DV!CGVB*ONUNqsq+y`0W!f3C-0jKsQ^uU?Vxfa`P3HA-v|;ktqV z8+7Tvnp4!bCMra$Fv`ixS3H*v+?K;^SELDzqDnvsX}5RIGM1Fo$(%RnG*hrPLk;3L5|NFtW z*fw1%b1yL|Mzu5fURt71kZ^JPNry3JWR65tU4h%TZwEWsLA@zTUR!1#adS9 zmz9;J&Ghy6lOgEDS?exx3$mc?1Dd!Fx1@{pyI+=)+JL0U%{2Zkk3TIv-7q!qpTRqze#P9}7X*oK zCH#dqmKW^Xh8{)AT`@HDDs@}@c#(nTJel%T+%=5qrbDKFY~ngSP=CW3Z&dW~+Cu;3 zrLkhYqmmLei0)^$EB)y@MZ4PC+Ttejx}4=go&Wi(ymf_DT07RCeuLJ^Ah{pU^=qkH zkx55g-3|o>g`B2yq@e?pr>QS=ZemwC1nUx^Er57cuN)m6r2#nC(9kFuYI|wCW5c%H zY)q^t9kY7F^0;zdz9e+#j#4)*!(!}){F|eZy=Hg+`5Z~{kt)d~7=ePKqS6G%e*CzF z^?#<4AnV*bHCe@~5AH8+62I$RU7cd4n70gG&h{`V+<9qU0Ky!<*zX+_uvw(f^-BJz z*1rWUg@@@oM7y=?)&XmItS-h3^h#2Mi`nyXul{pu&4b?aDY)UsfowOts5%8HEKDsKN(OW-==R1esVr-2PFjx?qhyE7WLGN=ivSN z(cQgd&Y%Sn1oINaeYbG5}BW$ zf79OHzTbkAy%W~+A3YVmn|AD|!h=0m*M_1Y_p9AE`+ZfFG>h;}1iX%JY#_EYLTUqiiRw6Ot(nvy*scsvMgD|UL>OTJTK zU}zYN3&m20ii^+;1|X47zjB$ggxp9)Ag0ud>C?3g^z>f91LTGTxj4g*j}Lf$_#jga zh{L&QZTo8rU$~I#1zA{FCg$euzkK-gWMOwkE{`~>^SA< zIR7#R;&Jup)0E3ExiWN$URXcbb^xA0WlN|?B(xpV2ea+e@G5=#7VcWzN2`Fv#kxdN#%D~0V&2i)iH8$_2ZQDrK zuEo_B0B7DuLqHzQ`!4n5n1#Xh1k0}sv?XFFf?0+&yOw}gMO|joYMp>y>WM}8{hM%L z0lfrg2J!ax^TBg$?u9yMSF2id(*gyi99s)d-zz#g+ArNz z8ER8Yrd}X0CK(jAriD576P}?yRxL@dtn{{~45`rB`Q7SN|48jqao>@V>$%@<4mF*( z$=-Oj010Jl|8Q_{uw8B6(9i>7y`mkuZa;bQ#4o*xs_Hd~6nVM8hV#XR2zI8toSbs> zGWB^@dj7UXMn-Xf)QAMyLyfSTElt%)D)H>pM3hYLrw-D+Ir4QM1vSMcU0vPsK*<%J zjsjch;giTQ^jsIh*)CnWbh0LKs0tzQHP<|BO_vYb-TU{q!t4+{qmg=19>#^Nc5Qex z%dvabqj*)jVviD#ixa?4F7(kt^5vH=PP?3W7EnZvtO!cWeH=bpyoFp*+@{>1fDJLkMTG>jXFb`@gl_e(8D^s*hRXy zkDOUIMUTRpqrAARJu`0N6{Qacnu8)D4!BNMFx&w?A6X7Zetj4cVwm+BF}W2U+m@o} zEna7KA2srO7#V4n^_n)wG(J9l6QEkCVe!wgvBS(KZhmUA^6{1}aG4w1%<4WLi!#c& z`1MnBbMuwa6+A&NG(I(g?s!3O;lqdsQ{pq65dzdJOH+zhXGhx3;4&$Zh@+qE9-hASXZiWQ=P-W@?$R3h;jLW6Ld)b9;d;_l6xTOXcQRWs}AiR7AYOl^bW; z_~ORRn^Nd0t^yQ5VHj@JOUYy8YLZS zg~7{@`8e%fF}qW^oGbeJo~REPL||uQqbOUR-Geres-?C+!g>80R9Z4R^mh>YsV+)G z1D_-uj=JKzfZSS4BTz#bk-%w8y;pLg_Q z5ofx3^(vE_)nLu1Puoyw*X%m1y@`*H&$D%77XN%gGt zvEu6byDuzfwgQC<8j+`Qgj^qTDDh0}o2B1V0#;ooyQ&pQIg7Yu z0n>*4aLY69C(zH0@h1eo|bVkUlPFpkXI0 z>dw;xYfx2DpHC;N5tALFPQUiMuP!^FhRBQ-d_d=Y75TuXbUk|mHKCH6Z>BtT0J}BO z*A8oZ2_ep<5S29Zx}BPG4K{2g_?K;(fl(KZubHUfFMDqs<7V`@aAag8%e?h4e0QB} zzlEK&UrN9q?gxc6d?cunR8dXb%gvEXmu;C+`L}J~F4bQfO{H5`qnT&vPhh8tii&45 z#4{J(bmtaunm#(=4Kbe%&QZR(b7!sJZh^JPnU4?S*VWfx6cRBm4#t` zB*hEE(s8Ck>3Ln{5T>r;vL7yyrp;iE*e&UP@|b0Z$rtC|rxfAQ(f-(#1jx?mbJcCj zF|_XeK!ZF`iO)((`aRXJ52IktPoYZ6Q)i>hn@Dh85Wme+LU->EqT=b@-@f+@vO`c< znDLhnx-C^Wxk~Ch>9m?NTq>US!!3-jwzJb#1#Jro8nn4xUtdoH6e2WFU_Z(VeA`qw zc~X4_o%kM$U#t{FsU-3w6;+71184=LFvG0P{1ntXciuhixq;F3#(7eLs-vT5aY;$g zt|Jaym_>B;_SU`ry)(h9b#jDCuY;@ zeVYH_+Bg5_nvc_{!V(hDJDPhn!t8qJlPA7w)@|5*9hU>R@*LD${*CTC#E-AF8<*R` za&nWNo}Ph`(Z`Os)f?C4NbzO5CC=T5T#`K^I3wG4JQ% zx`uqFk=qod4&6-Dzy zU0oHtU=JTYyam5^+NJEZaFQLJe{O61Df~9JhHR)Z&(4A7R0d*t293^-NpcnL?G4c% zV_RN+X+)s>;Nt{_Csuh{N|@c*UM)kL(W>+}7pmlgTem3o@88dM^ypOEr3pmirp=q* zhUvNcwCcLZKab*8h8{SIr*ne7fnLDK8Fqp-B)&Xi2m zp7=9J^0Ux!GVTkYOSLut8rK%fF>_UaEI&Vglj@5LGy$xVhfzk& zLqx>HGPC!7IXaNk+KCbmp3JPu2!OgA`}1yb@yYaI zbPn{01s)-bb~Oq%wIrp}p|8>BD_RtFc68iDFeHBt0i^j9DJ%!b6Z{*Y&L#H^MG3el zqxtv=IXStvjg6{=OU@*Mz#GM#D*a5brvCX6w0BJl&W%2F+;>ruO{R=J`mVvgvOwX-0^0^}bRKd)2&VUEd&HD8$owabV>4|jseE2Nc=3!n9R)leUQjpAhK^_Gc`U1E<>sn?+j#H({hA5O zr&si3rp*xU{_UlPXo+)1vDiW7`PO8iLh4urI6J>&=$xpY6)|lf$tWna@Qx$Y)}x!O zE-qX8<=ZvN%}&0QYZlVGa^2MQz(`k#R%#U7MYMzt7SUQ$Q*&w@YU@iB%T)11B<(Y8 zmQtIxZ{I~AUWccE^08o}f-S}y5`0@kZjWHtIx8#d;U|~r0p*f!ill~kE((c~(++X=zfty$J|; z*4Nvcy32J+K39Y}b-}bg&I=9IhJ7L;txZ;*-cO%XQ^KB5%_S+x+Fut_1!q6ao;|+k z$+U}ZQq7Hjmj-&hAlI8oDW`}_N!1Hk`jeWpH(e819?c3HEZiGAKZP=4YJiSGb24d^f|o{7_VhrX?QaPYvwCToDw z>tD0hpbhLu%sBv92`*M4wt zFiABL56_WJ(+EGmTiEPzO97NpV%7lcvBZsm?GByNyYFNSjr$PB`+(6MYoc@T11tk-H7k z$;dF3cQ@1RuK_E$8Nv0u%ibEu!{8)#e>w8T4M;}s-@pHXwUSX(Bz6!$Ay}weV7baM zyJ^w>>NJ3xa;C2Me`j6=Q@(z^1b`5S%R!sc;#kykWNhp7Rh0#VUp%W|_ zMyx*SU6c0mSS2J8IB@!w~6WLoh7HAqbU>hSShak?K99EtH#?6{^|XDQiwGw1hcsF zPK*IaSw=VmGr-HW0r(?Txd+pmD$My7v>wEqw|LToBR z<^V}3)K%L=M#gV$4g@51o;f|_I$bXf`Xa)l1NOO@S<2wP5BkR?ZnU>ti+7?aSDPv05wkIZ){*NAkNi`Zo}JK zMg%lHDSo{@-5B~OZY>==hkme_0zfaEa@JRp!Rce`c!^*o72fJEF99QOS}AXf7Ko4M(Q9jbO>)mzPoZT z&CSfHFFKxA4Ib)8I11SQyihWnbTOR?2#}je5@WV;&!5j^+=q`?KRVO)#*H@^$>yvX za48M=Yg=?e@S_RZ6~F!Dnh);xZK?wHa+1MlG#nU5_p+Z%@ZbtgdPblIP$qpV0hv7E zmakS}pb3!x2Yd&Ni^&pDk8__fvEmk(ZkQIh@a7S{nxB0viGgtLYui6V-kF$~c$koZ zF#rvlTt<60E}Dpdrj_LXAD_PRAed!d==Dh$T#L9m*;6598T1nvet+QU`+!9SyrIXM z_WIgrOOam0Th^~V`!tjM*YaVeiSJ4T7V-8P6;eeE@Sk@ z4s=^$aY`|~{bG4u-ntfm@@KKlNaQ@L@Ap)an~qDO7BpB@2Xn?{LmG@lJV{;mpC!cI zjt=em{KC?6djbLi1{xCs4YZ~QZGAo*0Z1VRPwE}f4k?2ege)`UfNDvoIa)d-wL)V0 z8NVlP63P%Uhar5;_to>UaQRy6%MgL;U&!yNpGPe)NcHuW(Zcu7fjuLUH*el7*8lUb zTXXnpXC|vFSr=UVEwn$m^mMG!Gmq7koR>slJtf2sFEPahbcJ z|Acj$j4cp1iT2~8CV+M4j~_qSnEJ!-dB0~q=}3*!4dNzyB#u2A`c52SfO7UhGo~s3 zpo9bq>Np{j#rp&B_*R0iwX3bkJ_O(xGzJ^Lx6D>3BGmqj*N!{dZ>&)nr6G@x^D~aO zq(5mn-aOczn`$!h-iJ;s(?Eulp!Y{SFU*hv%1@dGIq}3K4YQ2F4C=nV=z!|O@87?F zJut#01)DVZQH;~1XVSdDY&d@DACIyB%NRCx0Tun1&=JeOef#E}Uaw$e#Pw(BWo~lv zHb!02>}B^#t{t)R`S2>fwsr8O%}IiCC6NlDsj;&kYJx&56dDr3x!CIuvA8<_a7||n zcss$dzP@1U(w1^RVS$|Vd!8gd2RBaes2$siCKT=QJ zq)33m zA3mh64-W~UM=^VDuaLZ%i$H4?59lGtDqy6BldKZh&k?8bjhNWi2LUW5=^pL2PkHbr zt^%rsZzX)!mhW2zq&nlTKp*yO;%nBxPGXE#U~lk;rFhYB>gQ)pjhQC;Dj`yQIvR6! zA{KQ!s*GOj4nr^#gnOLzY%a+Flc8+;_MH|Q8yQKn)eW#9oC0M0|Tv@;x^j5-HBb`O)f@qdXI8OrNU2R$`5dW@)~EYI!#A`%T`mn zaU;v*6V7h|J9~?n6g~)QQtSnj)6@H*Sm(Q#v%_qmOro6Ip1Ch4? zuW??6bTRs9%&4dL@_H_)v~oA4YSgjKq}0@uK1iBZ%9CU=yFiB3qF~F>#m(%_5lvq| zef}&zEtL$$f22KkE0W)xygU)0xeYLb!08tU?gkfm7)F3Q7}~uG15&{^m?* zc-s-RM`TJ=$T_IoUE!xmT(Ooklsa{-1ZpIa;#s$@R^BY@ls+?Lp~KOS&&)&s0B7E-t1tII9bQ>NyyR z&Pu_lje$1A9ZX*wj#G)Gce<_wJq{J?9=ryOu#oZQsq%&ZCBDP@(l9YSK$kdkxfJW7 zk3#~`E{2SX%gm^Q6mR-XGcc4iysk}yhMx5Wb0f;5^t83f2)FluA@T$e3WL)qAn&DO zM*$F;-e~YbzV-F?622N48JSZM(l2J}QhA-Zjs2rms-h!ol&EJ_8=9Oh3 zUcI&4vX5OQ;n}kvZP{7j!H$0yUtTJx$TUHr+S=M#Hhr@7up>xH1+w^q#UFkwiNuM$ zPqMMe`IwJjg`l+K=+V)l8}=LPL4j-bH$7GxLk7Yz2ZV8lQxX0>f)x3q3B9?!&i>

Hv}bp0ze&WNFnUgGXU;SN9PBnXPf9}ns*HKk6Z_FXkS z!xZ-|KPq;_^~C1~n0{5HuAhQ9X}vgWQ9nPWe-x8gijvDa$HvCy!GhqF6(1VPHDL4! zs~(fE*H^^hX5R~p&x}(U zX#H1#7m1^DPy=6B*MeJ2(=A~-r1^^4Z8{UoK9csASEj1z-?p9lb(eFZm!eY%>303; zQ)XrfGj#S)OkfHD!r)b;KAg1l zrKk(Kli%JGyRh{L2bgX_)6B+uBZ<5h(|8Jk?PX;j;B(nWceV;pRUIWw7sKl$TNxAZ z*|Mv6Go)`<^qLqEY%c18t^sa*2U^=^XZG$X6&02JRuf0m^|sysJgE$M^vDyBOfBaV zDC2eL=c9kw{v9L|Ys0-|q`$jPQNaW>fz~zYB+YI*x^-y632_`<>3afYZ=hm&rd?nI z-e()J6ss$4B$V#I23w!>zKt&^I1Z5F1vA?~hmm^VA$MJ{adx%o0filaii8Nh?V==2 z2s1I03O3*z8IYDBX={HIfn<69{Q2NX>~b>VasWeB=$E-&mI>A!CAJ&q9l<~~_?Y8w zd$#r2S=GO-*(J}?GInsXlMiI*M*`mx2ezPeZAgvrmfbF2X@uyWn4EkICC(tz0}#jC z$LB40HhdG``VM)+f8LK#IY znc*l)v)xOS0}*?Mh`r3rgdx=P!iozoVh#K9J)Vqmf-HS{o`|93j8NHE%2Ttdq>B4Z zD<-C^Hm6sI-(xuMvq?$v7<&1$09;gpzsHk7kl2m3)5pffVzjZ?hwlX_`Dnas24f#w+%8%GJ-*cm)hTP*<-!L$aO+Xq!p7Pn7Bx zV`m1?A9zCg_pQ`=WpaD{)?Gi48{dMpCJ0d^V+ssMzeipq9;vCFG8w6Epf!^f&cl}R zw~v>1vUO@?$FTEC#4l`7ou#8#+`_&PSeV^b#p>ZlG_wL;X9)L)>s+S;aheYi5l9R; zfr&6FmaVRwAjYkgWB#@r$Vt>{(5nX4#Q%Dk$;qxy_?ii7vq07jyF$Qi!LDSe`!9qm zNg&+)IOgT!4|1R++8B`uw3g3tw32h*a97C*;XN`762!?(8KDJ9Oh95Iw!FEgh;lIZrFXnno)3Rb1GEu!UlKiY_AGH*1o;IT+!F~LIfXa??g|uyc~A+UiUKiRz6Ve} zhbaE~u(xRD#*hWsokQq%?Yf3RSAy>|VZ=U5(<{>*r(X~SZ;vC^b`b4NwEG0QuZC->z_ zM&`s&eAS??_poDp0{_ky*mfL8b6bUY@tQe5LL7nCXvXbB9C`!CaDD!vKb7D*)@>fm zIcE*=4W_wPmH)k~!9ldYCSAqH7iLF&K?V;^hl{8a7Ku8E#cfDp<@Z_Ly)pSU5Peiq zQcn;ktz|guz1Fms)Zf>~NUVC-AC!bW zhmZhun?%5w^eOs;Mr!ekkwl8Y(g%O;uUP{(``7)w8r=bw#FrpGngUCpd=m2Wr%&(s zT_Di)K-_N;<*qWs;JGHw2OSz4H%$Jc_p`Gv@170a%+A|GltJyoCHXJ2 zv)|$&SPdEN+#1L#S@|jAXf_alXUiiJo5GJt3tXL z_ey;OA27^%O*cgxH9q1vaRmZ}cW5>i3`zT{l@-5S^vKph^-*z-VvqIWx{` z$_RrAK(A}Sp>c*p8w)y^Ks(Q)BBxdF?Qi}&+GnNz8|}yRU!v~(K*Xyp^5`8vjhr8N z9!SU|^@3$93w)(ZzvRFaCw;E6W~3>3Ktv{_2ieeMm4q#Xg{G}G_CHuK;F34S`iGhc zB`Enx>`Q=Gn})5oFun&iY7ex6;J%$())Pn*Qb~DD%~s@f5@BjULBMHuCtc^MiG#pQ zOn8Xj0y|#4Hu`iabfJVE=(k5iA@OFa%Qjhe_tI*vk|gszA%{n{Zl(aa_{a2bWb_~u z*@1APZiXn|HiYgsGgu?Ltl3BsXDA$i*(=`S5fc4fFRx_3t#@vLwKOdjyu-Ep zc;ERxW65)Bt}>&6FGjd2X6Z@OtQHHN*yiOJZX6d|ohw_tifSNp;er}t9X1Eh;3PQ0 z)Xx>fvoRyw%iAD%<*XjidVP?%2LS(?i~Rq=K^(WxI>f8-;-n9ddPj&H3WXLG`WQrL zV(8=Rw{P&P6BvM?l@UaqURxR1;c_O5G?tcRyXDR;;*bU8#-`-aq3vpb8TKDjH`~|r zPO(J}G}}!5l*j22R3P}`41qPWOdGji8_;Pf{DS}@$E4L$)ZQZe43kx3m6F^Z|AzP@ zRBQaveapkK)US$w$101@4=irJ<+h$?S-NrM83>Ar+1bzp1z6TDJUw|i$M1#yQIxs? zby|A*^^%g3kW76;vvYGRApR34@LeAMo5lE(5Rr_+3R3esh@}&V2lJ9^>QEiQ zIo#VJxuo>!0@^<4DuJkgW+8iSwO1J%5#t-Gs-UEU{mg%TrALVe)*?K2xq+NI(0D=X z^13Ylsqyl2&xtdHTB_y=q91oh^M^tNQNh$F`2Uf>O+5(Zuv&8*D#lfPeGaA_u%AIQ zYCrjcB@BB&PmW|$==xg_67cQmX}fws#h51IoTRql{{Jao@m>(kHiCkn_t&~~i8!@| z7-^}shuC-xqBH@#Oc+ruv9Ph|`BFQOnZx|{{5qwnV`*=}5!cX-?gD!9IW&$21xUYy z157|>&!0qwkp7Ys6%!MaHlumz(wo*+jU1#8W1)|RAKhhj-2X-_;V>p9sF-FI9)Gcq zUEWme*l=f2UfK*MdRV~G(fh+<)D0sSQ(w@v57uoUcQ{$)s!Kz?du`w+CiV&Rb?lSR zpR?hu!(2!Wn+0LT06F^C;(5WfA=kCH7zAq@i~8?o4ZT=Yj<`wqWv@WX*X&bsc;*b4 z3L`rKDubFk?+f-a%mWCtM5>7#K3}(59iN_WeXby?1ZA zG7D@~;SoNp8GCYK;D$xJz7qrvAjyN_a2)c*{0C`1@s`~Mq>18iCP6mDAX6(K`|{tw zQicV%mS~r8)&QrbRICzF&WYnds9FMg+P~ZUf#96$|FDHT2qi>Z+$1zDB1PsjCo1tw zpiaL7+xN<^$?R@Q(us(aLH$8HctZ9w!SoJ6pyTqsKBuUvjP}kuhw<=L#_<5xUD=cTzT_wxd~+-mKJU%2Wx8qd{TULkJtX*B zi9LdUs^ypn9-Eq;7Lw_-@%!B5?{=ZNbuEf$&$n?nUC?VWN5_2L(JRcBNwl)!)zooPFI1EyIz()3CBg}Xf`kG(|q9rd^zX)#0% zojSI81$H=R4f?!I;2;DYUH%sln96j%r$;XFZ2E@t#i|`~uu^3K3Vv!)qav$HffKd7 znllXigp?%;-;F^5=De-}T}zqL5&W%U=L&q#1`l!U@#osw7SS*@Jwn8QFVr+jZqLxd zsabUZ`~y`&AX(!Ch^s7yc`e1w?wU30lk+oqFT~s_zka6;8iUuDuR;HUlK^Vmuugxn+T*pOvPnvx4TcpX%gk;~_)NV>h*S75F~b6T z3_*5jbH?zO};}FWtnW9AS;)C`buCu(0`-J`+1{ zN_^nw2ju)T^eS198sVFz2=J5UV4a(YS# zCwQFzpd?0zA}XVf+h$#F6RZ}5<&=Q!aFClvNhQA_mIGFzGq^hv84Ms?U^%U+mVFc! z{LFTP4d;X~etEp3$U!mHb%=7q2HA`xj0^A)8iu5Ppee|5V)n6K6db5Z0%*=hSg3z#rVdtYy{quy=^e}7v-Y9B_}rML zL!78KgFv@+>sHOwvrPk6&q0nMvamVDq#?^`Z9YL@u=ofWoF!0@XRxnwga7P@D5CpI z+|`4~c3YUiGp|OEaN(JTu1lrIyDJ`4pnvh{$&t2CdvtV#ASj)!DFqa9w|Kg}lBKmf zVPEGlP(!$4YYBQ+v9TuT=~hlOW8q6kUq&0NGYI!1m8G#R)e9lzDCfdcGpRU3b7f)f zO=tg7R)@ihR)38VFEOiZ+CVggk&C|Fo!w|D(H4EW^Q9ygWOf_1dc%cTk zlGJ|*&+J}mYJ2zK;vt+VXTDCS3%}@YvpGdko4yTq5mK-oh(87n95~*_dr93sfK}egy?5{4 ziIFq+p!&PKc-La0{e-gt#XY48^)1sIG-5<2>V)?0rhzl{i}$>NxI)2N7v`#75I+NEeK=o3)%uDv+P{=cz(8;J;hj^G|6jy!2@$PZ*P9;y2V$Mp z?y)~UTz9DYe(A**02C#_UjI^1ms=?Eieu!tzHz)JU zMl_AX3%cQCPCC?A`S+GBC5VR3`T*c6ymcuS)XEX}Ogixy=Z_L`GatS-;7!tb3PGsa z3bfFyxqEeJ=@Rr7j;};t*FksVl{fQiiwIBSOYVAONie-&LX-Y~G>fR1;I7;|>QR6f zgC6SmKnqTdZ4{w;qs@WBsmM6j%uE7jkz&br4Yid8C?BoDwrb_HNDN-6PZ-xwfjs06 zaYsK7g$PK) zY+y!#@mXj^7m@2HCfeURm}p0?lIdts&+=D&wyBOHuzfmK)EXzCXcL=?oIW*G_~}e) z@}ol(&uHQIPp^h&SpraF8OjZYG$lQ{(6YDaq_ANmJ5f>-ag+2@f@8)RIdvZ8(wT0= zI3TxW9hH=n5NS-Fc0sk}zuR*(yK7t?MDp=0w6$~X-qN$D_6mNZqDFO_zzw~US{)-5 zFQ`f#)g=x=BxuCkeBITr8^SQB<5FyD?rc23bbEJyB|ynndj{RyKVS$s5L-h|4C?ba6Gv_aQsk@{YGqPNp^UsbGM+&$mC*J$(~k1XZGzgu+76@3zBySJo9_?HKdQ*4INs*>`VTw z&CcomOlhwC>`}ja9NI}JLUZ~s|Dfmiy|?f@-X&oYu{xVXZV=MI9z(+ zv8Xuxe4Q5d={bpV-rJ==#~18Rz1_|Ks>Iip9pRSK67GSbYV8^;54=NDrZj} zR=226DbvgG^ikSWFtN^ORa^nz7uN|-E4)92_=2b_IOP!NC!o;62PemP1{*4N9m#h5 z{2=-Uni5HjB*#olOs7N|zi?r9l2h9|K83${OeOsqIzLYD+vCw~3cw6KgKt(vA1X7y ze#pvo`JpHQ(B{~ATw)u*S0KO!s|C;K_W*EJkPg%V0f-or4h{0)Q+21wB`q^%IDp|_ zTA8aiPkd>#V=CSr+Zd|xJ%$9~B*g}VVz40>6sa^mJgopd@892R@3%{@x}v;pD?xs~u zq3nvC6#A#o6v0v(!@2a~#f?2=kCqgSlK+kO$njOT*!oy?r$GhHQ?aCt$cL)D6T+s* z(*uly+mj0-q}>8rqG7{^FX=g;%8gmv5^x2LS$iq_1HX)0+=2=i`l8VYov8m$3MR{8 z_~!Ph7&fIxkHK`A641EzP9__KSk<&a;})awMZhbq895ed+Di}%xYG3r_}h>)7`({% zlp*aYbPb7*YJ@siGHyH#B?^5Bdm;(ubCK)q0{j&rGDXE~G?!3edX;06+=;G@2s_V~ zjO%4bq1j>RisL5P_ncD)qFlpp=+QMNHgN0Cod?VjbA@GXv#;32{;EbaW$P|p3sv-8 zPE`1$?28gJIu03MP=cEN!HrEDLc10Gxg*jpTXGPNxdUok!I@|67QUg5*h2_>cVo?; zhSu^J#XAHf#m#zu%g-h7tfjh5e=|08p5U_}&XPD-?Z6wX!pjw$YrMJelOWlU*fZkeT5C7`4(&G5OAPEeEtLPN-o zbqzqR@8+_RJj#ZR8l8eEJU4Rx&b1Mo4K%eMpRt1wy%o|+e7>`jlkj)rv?fk|7HQt> zX9|DxmB7wxrS7F94w7&86d4AmaAQBGvRz{as*j>e(Lx3e zv63Jt_nDl^+58IeB=a=34XD_8?=#8#DoSZ#y!$xOhn1jv^ZV=O+rHV4`&^`s>%Wq@ z(-!!@4jVTn`D}Q3YYXc0cpNiinZxYnUJtd+z1fA&mOjFdJ1a;9;LJVk)Sf+56o2N* zp7C|#S{pMhpCpHMJPphO2&*C#m3j=)gB+V?c7 z6Pcc-wg##hM-C_{5^#L@#m)p=Ji+{~EX5Yz}o1&5{|($Dg}$ zC4DZr)INP0PxcwG1vPWMxsyPEe*%oXreTl0uxNa%*52BPj!-V@^CnPX_cLDy4iNIz zKl}D=g2tLvyfrjb4Mq{ccek)c;G)Y!9r!i7Q|2!fs2a)=(|0dr{NwVWF8ME z_>8DER-_n6jM_r()u_C?5~+zK8h}pj2oJboQDMw{Y=Nf=R^v+Y%Nwh%G+#xor;( zf8Od9DZA+JxXe|*Tpf73U##|)Skr9pnZjcs|Fz{>$J1SoUr^R)`MKr&aqd+?`N3~6h(7xp|-7t$kI zsvb!1MBB9N(V3Q9jKV2yO1+>@vR)2jzr|p%W#!3bn zb*xzV%f$PD&C)X@KJh1d^G z*jvej*D>%%I3zknO`1|2IAD^OmHgQQ`Zlw7_Ir65z4<~4cbcNR&oaZrmkcqW!jeIO z8()0^O@ch%2-+IeVIP|=b(iR^`ERtjJKn`bPqb;0$|A43i_R%?#X*?Yz!OmYCgyMN ztAL@2o>=k}6i7?*HUhN|=kSH@sE@L~{eaosmEqOb(L6PFb8=fy^XV_R3KfG&-)d|7 zcF0J#BW!y~OocW(4$hnCe?@;7ZGD(_jFjYv7E88gNvG2GMNCHw@HD5!)!oj3J9V$j ziL4PtS+EFko!OK`fM!g;4%CIsc5OXP?7?p$TjH z<_ihcDU!rK%O1K4ZSd(*zgM`k{XH|#=}!P6@z#1xU*m6#Sa!|*ex?g#sRWXp-FF~| z?E+}<9U4}5{|=0IIEy-yuPM0L)Xj8cSlt#%@{H~WYZrWleJ7(wsBAYMJJty-_)rg} zzvb5h)|PV$%3^KXxwCE2+t%$iu_}SUCmzVc;!w0bZLho=HDdky%{z89iCpnKsBHEi zq}P&XO7Y1fK5}wCimgGXDCR-(Wz^>1h}_YbRuPATmKN@$JHn6p|+$G#n7=LKl}s%7fgwb3s!k zULmMgu@nk7xz}EN9K`l*P)OA`0gn;HIi8xrx)w3ApfA9s+6~8yX2a=KylG3J-r;(p z!e&89AR~z1$R44&y8W*AeRO`qF+Z>5yfkX%Yi|$yu9%l1*oUS{E*Oqj!wQ=dP-D=X zNIt$WhmZUElAx82eUFW{SUvnQFr8KKwQcJI8%4XzBboZVMGqCLCs$jw>n30xrEk&` zYCQLxqqR`Y(KDAnt!>h>^X$cCx#dEOgYO^=v4#rt+Fn!H2F#5Jx}6=A#DXf#KV;rM zs=pczU4m**TTFd4u_|AMu`f0ca-HzcmNm;>w#OzvGAc#jCEWX5g=v7WE(FQ4YcvXA!MaYuh zNI}QbCo+x~raq*YH|^^-g5jipeq~{cS79k|8}zJKvQTvBaSX$(1?H92%56Ya81L-G zWk%Sdq^g&*#{68>bMK;tB}rAW1cBi9q7ImS_QPICspey0Vc_~>>`DKz+nc4;xY7xH zntj$?#Bce<^kJV|w%T*R?C0Q`-c5hydUV+bmSwPE}f-NLfrOc|bFc5YL zrI=G~^*0ErgB^Yauim~-id<=IJ5bf~fRvhUJ-MMJZRo!yugzi>C&1KSR<>MCyj_dB zEB5a9Z)k6P@c415tsv_$o0uTngT-u`6^P@oNT%@v|-G8QR9k>96zH*e7K0c2(AMArVDjqfd`B}^%1;`)yBQ`87 zEYVbO(k0Yu`Pnhjv|`Bh>woUVn=Ev8z_8 zqg~rBbsQOl!{>LcMb!^k9Z9KCkWo`0n=PCbtYjgn0V~EYwrgJ}*1*n7otwO>qRdJx zN`Tf;#cbcUtpVU)BPfz$I!FKP?&}Sq?f}|SRN<~RK#FX*so0FPrId8z_hA%>55OXL zd&Bc%;S$L91#1K~Z7LrTgJKEO6m+-~C`Cp_!jPZ9F)yNTQ8)l5Z(&tU8s*v_#)%Ys zExYOMC6RgwmCSFszws7Elacd)=I!z%wt(zrXx$!Vl;Ss~z~P4C{jcOyhx zBs20RFmdEai~0I&xwH+W;ZxM7(;Z^{Dwq^YUBlqz#qnSdkb)qoUiu^E^y!`uEfmp6 zBgF1NKb;f$Sm3eRB$ZvcYDHdN&Sl2m_w`EG;YOey{~R)X+SIA~d_E9XNvzoLVut{p z47p|-yvD#|1A=;aw-9@iEe|pn6oNsZ4()&?MrdNt;`4&Ytd-)o3 zf?XIW269sUbUo_3+1O?T9-V&&;6nIlN{+h3Q+NcoaeSEaK&5V{s61|1_h*kI&oKvQ z7NwHH&KlxXT1JXy5DBUUL13(~&s+yB8pUgh$8OY_u#&1ioJ3zvCzN~MrUgHYBBFdU|Wh%`-{UipE zGy|Mg!qwws>85lq+R9%)<_?tI-vqkz68i3CtCziw=wGG=-XXuv3KmCKK&`T3T-QZkbwu($*d+7Y^ z@W)qyo+DijWrKtLS*gc7wPi(bZ!F|AnCoidrhNKc5r?3^T?x#~z+*p8t-Gzd)tgcm z6E2&<7Ki>dE>GZ(^70{z_Dt!^gF}%)gDPMP1lU$fQ;$FFKOH-0?xKhE0SI(RXbwc3 z)fb5Xfk2WJ$g^%BoxWwz(H9ZpL_sA0G%AfFW^;`|?IhddRQ#>9v~;eW*^C*RaTjO+ z&UQy~Utizqu~n?Wdr3(%D|&v}Fz7sc;xu63_m|s#Z>6Nvce2=)%jwQRtWRJ0Ax_j) zGK-u>5-n?;l_XIBUX5_9a&UAcj*j*DS|pKMN)<|g%{;~B5hXlgnXHR|wi}d#Av2n5 zwFT{?zgtHwq*who8wBeVMS=*)0Et>W7#oM*N*rOHPopU6M)2%M%e%#3Tm@BVkK7Ru zKdjQu?hQSA-k@y59xu-;(|x{voT%YT2$Bhapidj zJlA%Q`1f3UYWE^$j)tCN*<$)2JtN}RvM0rgij~|%gz#!B$!>7L*}?&G&!^mqQe-Uj zZ84Y(?K^3b&Z?IRFwnM|yHw~$9v}1r0l}-{;^1$K_n$v#Bq%mW-;ufJ{iJH+h!$xW z8PnpFE^XQfYkm>O#O0bBdLJS4jp6QJ!kcE>n?ty(z*XEra??Xg%Q$SFI0uk#tJ`Gs zLyn%5F*b!b_Z#F(q>TGtL_yWrD$W=>I&<87I!*@z#ZX#Z1UjRp8(&y(BdF}*rZaw? zRnL2z?NxH{Y{dxADaEK7#O$S2*RB^#yFxu-Gyx0Y$eWeH1V2Ss8;!^mR4k$E(ooP` zvnQjIp3^WWXEFfZ9}a~6YfiZYyhm0QKI)AwC8MF5*AiOOe2##9uSTv>Ok1J?dq z?s;bNFM69EyhOzTpV$3Kk94ewbOo{ICAPguW7#z6=Cql5pfFc9NO zdCtheE>#Xrctu>k>MZ#+0w4xi^fOBh2nbj-c#J`-hGIxcmND3R#Ak1s=wv7sfa#ZA zYi5ei|I@x}Ik%ch88U6!z7WT=WLb^SJ$kR(evzZ=B*k){`F4{!kuKTj z=41Q*y{-KQq~so0JXfZP(kz~{Sbw53QZ_Di?P%nNwmO;pWl0XlZFAYC8!<5u_*T4W zZ+(u+U&u%YAg@w*<_R{s=FM+1>cPwF5261BEVvOJc&vX?Lc#>i^#GZ9T6IO`PJ@R3 zF3&l_Hqa0+6)3LCfm-J-IaREoPt@Mv?4y_KLXleHNORM+Lfl!T4L0aa@n!!!@p82L zLGHe8PP@9M{_F zp?E7=c{Q(~IKM-!+@h>Q3ZFhXdX#b!=!ERUgCQ{!qg4}g)n*zz(wp-vwrAp60nbTI zZFDbPxmIoG{igK#scH^B|G|NiZ0<6RQs=0)T{D6WzN=z?d3XJz*X93KLRae4f&|!J z!89fk9XKo8Guos}@9^9--=N5OaHr&u!%Cwui;`JS?Gc3Sg_B94EB3Eq5G#_A2qj!J z=5FuiT4ne#5}aCWrcWpMMnF5@93^#cD8o-?%us;FPvs>2Sm~H!eGsgjM#o>Omcr*> zNj4S<&pp{217oqq6u}*V8B+4eix*pQmPlJvIwhh}AV%p&>QZ`0o8?A!&>qrf89c6H zDKbZ@uuF_xA(QQ?rPWU8x#*i=fQgcW3aX(f^|Q>e-(d^=LEBqR5-AP_CUi6x)4c%$ z?r`FYU$}5NSlqXv9=4>1AK{4e)no`A#W@3~l143LZUJv;lOZfUv7duMjh~rxwh>Pd zga6^@lD|c)gP+uZCX#o~RM#<>U`mIc-&EQq%`K=ue~NpQq>qsD;A#FEFuJ|A`lBle z!3?tmD9_TD{7cikJ^Yb>SY}!(SS099@zd)f#5Y^p_u;X|++$+jJS?dAnGi!|eM&Za z(cN{s_rLq9B=^8kfy|a)N!xd~SJvkO<29wP^?Y-_VJ8*4bt?{W=M0j|ioX7O+Bc&SgT zx{@j}fF)jE;h`S}1G9!cT!_lEA-6Q~n>nUS7PKkGu3sM+?>J~dOh5XYqcy?+yjrzw zd)hu5IkxnOCO@t>T9PBk23ko+@TI$dLf4E8?$CW}s5Yyo8RLeuT{!8Xd4LA3$)(R2 zrUE~lVnU{V8EpRFu;JCZm%9P*OTT=$j!rwrP_eUvjkKMU!dLjQl*g$=nYiD~E9bz5PW2ktw6#$^MjsY=<=)2B~g4bCZ|q36fEh^z(a#k$zN&ei-z8o4(0 zI?h%&j0BXNCQ$#4T}NoSWQ_Rov=h&EaUlNTt2BY^Ky`3#c<+kq`mGES^ybXH*;Dc1 zRd@x7y?z|X&;xi}wk^YY=QkXzR3#@XsnG=^`;$=;r;o!rXal*$z4EHDXTryLpqgG4 zUEvu{d46YRC>m1#*dMTXk48JzZFBv7-!(w-VZxi!>*JwYE&dbnbOMbdZ1&c2=k|@99%a_%00ZY`7LC(VcX2*n6x~m;-xI4+ ztTU%e!Ng&ClpjZjt@bapCqq5O?yT?~LG>WRorwqLFUp+WzAfHx{;<}Oip$6E6&aDp549|H_QbcNS)S`-NI)h+ooj98eElU!QJW~Id zT%BBpJjL|PE!^`kvX{mgv+bW+9V&Dm`a<0~mB1Ll-i$4~`T5ag6*V=jz1+?6q8B%= zo9noKgh`sobtunh8O(r~vG#B8U$U~g%#09@z=vfqo_}=e6igoc7g(%htPO(?oab9&io8)}F> zDaUnYL0M7T&~jytOZ5jYf}L_aW*2!2duJYeYLG+oVAaJoas$1)C~lTN2b9CwI~wo& zye8R><#dM6?A>vB`Z@Onj`{796P9CXa^wyqwa{EYlR8x%rz4TImSNaudLar=@@u15U9!?uHLIDi$tDB<1I#PZ`olCkH#D|n z#qdt*3pW#->!%*{^js9J@{q2;jTMe_7m$ZlCXA|imHznd3+N}0)YoIH)kSxs=F7n$ zpK|Qej;yF2LH#lxfkR7^hUV8CSCme$((4|P6GSr#N9ZEN=Nw6%Y8Al!}{KlWRG?u7VPn<~; zrE}079drmA0bUjJ!eYvHbG{GgGK5u1Jsn`-1jesdFc();saNxO^jFVV7sU|!k7^qT z2G4&4zIo+tR+#1O!4Y2_ls1w4QHwKd@)~bbGX53UUb!_3{d30eBR_4ncux*})h-7h z$%gyxlYdOp+S59G&-`o!@yn%r_jwbIc1YZg;=W41rDzo zHBsFf_Fqc{>zI|%Mc-yk*FB4JdUAa9E4NOzQD0a8_;URq#2ZD+B`MYy-L6{Neyx!e z5wKtxu%?2-!Xupd=?)OzCu*Nyl5F2~q_)m*sob#B~uz>!l}x%jO)651h)L`D5k%oJ}8Z_`EI80>x5U z>!iw1$eH}+>LZs}vO#Cg-0@kx@_LE(WYa*&zY2X0ksfM1UmrdarOFi38J|tZjr+Ui zM{I4j`b{`u$?+;-AcKJc0r%8v?)CHtpj?ub5yi?dwi?wpIJMMZdqCJRqeo7@rF41;WP0N6y7I=ZFXFOYi}erVN@i?*;_qWbq7aSFE5TQF~42#L?*;$n`;&s04f<4dCJ zZA|F0p`V7vBlVkb5yN!Aufl*#;;zk4sEN#85#Bp&D3AGqhUzjHRu9ydBuu?e6Z^}D z=hoV)tb5nyT-slM~7(7#bb``dQxLV{U9LSZ&Ed z{ZHP<3fj9Gy|up_opNB+G}7(D3g@i(8|LUO;fY}+vD|vvQ1jRkg`76$N`uze&3$@g z{>Q_i4`ipG+<2;9D|zBpF`=K9MtYy_)Mcc@3}|@+hO}?fX3@3GKx6W##U0A6f^U(r z924ua4;!Z5gjHvRSE6DbExfX$aUoxcy>Xew^{q^k2nUG*L41In$^T*ogpb!j+ZpL!l6d;zNyEO7+c#}o?-caJj18(d`EWmu&4qM zx@t8~)l_kv>|AUymMe$hw*8m4(aI$WI)etK-8SG-6pWUfYByiL*&Gy?J+=Ev)rQe2 zv{_nMvXkjK$>)k z^;%OM>Fx)aRN$HTtzY^Gf>6Fup!UD&jb#nm_(fw)yBc zZ%K*?kEOh_lEVF=`eWWOJ#=mZtH%%4vwpx#RRFg?>5QuWe9+>4s<#>1lMCcx#UON% z?uI_pOe2QBaI7=G1vgfkckRLQzkJ%gUp74adc6ntpvtLrNw&?uQ>O7F_3MTaYlFG` z4)GAwU|pyd?A~JjUtyQ9u(-qIY11O@a!88$1D3Ok>J>=fIk-$Ar1SlK;a9)OA{_l? zOkLPfNIo38>`&vH$L4O)SiWZe;>4**Wl3pi-zqzYmzWSyY^-#Y#1+uueqQN2*tXj9 z_1}UpyA2+3RKrDe`0!_?ZySdjpL#EIKis>GS|D)FX+O&mCQTzOy)TsCS03Vlu@=z? zak!a=$=bD7dOJF`duOwcw>zo%qh|D7`~O^bgGa=c9A63F(J0o%8JqJSFXyd@bqSlI zQaSfjwEBotGL)7k@=Q)@gugXEB?su}7soUZ>ey5qhTgD0A+NN!ua;J(=cSYt7fm(I zO=b?sUXl61ZOF=s>Au6Ql!q=K81U{{$qY`jgm}(8AL!kbC<78!Zp~iZ^XY}qfxXMq z#!i~FOZLdq*|>!Ghk{4D0VLg>9`OtrinsP>pO zah}w4&a-PK58pe*#^hhH9a{GM4q2bV>?qEcK$W1n!$qq{RDO8=*WwL*9hVP0UGG81 zB?(W>4))=uY%bc?cr<@1_<&ZqTUXI~KNmba%00VN(`L<^D_XA4ol@qL8=}2SE#dtq zDm9z3H;F!Pnl)`YxN7yrV2u%`w>vkz{ztoZ9pm3G z*mXbXy${)%j}K5^ejFQA8#eahy&Qs?&{Mg@|{w6LTIjoeqF z=IY>Z%{qn}#O)H)qBWUsRIitt{w-{b!1E`{3ZqEaXzA=V}m%ZiB-umqy;`uX5s8flts@oi^)bDJ__j_UmH?5*dla zR~D_cTC)CmT+ltaIjPM<-^pT9Fj5l&KYL9v47-`S>{(#=|TGBOD%oR z^1-}2);?F{&&_8qL>H-~f9L3D0lCmBce{iaNE6lm-NM`Te1CJ-4`@P%<8Op6d5GRF zZZ;mRjs|6OjF;=pz3CKnv*K;1I0xYJE4YbIJ)+V3<=at-HQx%py`SeB|9&L5+K}tF z?Q}f|>%PHzjU((Y2CXj7nQ5#(;q^BI1A_sHmg`$Sy`g;Em~t`JWy4Hhe`7Xi+;=1& zokPxTtRxkmlJ_%O4)gf6@}djR9h;IzijjqVLzkfV1xvEKTz}Pg5xpu!%NHxO8zsGW zv!DTBZReRm(2RoyF*mBXOo}Vx6+a%L(8yIcVV`n@7ywmYw2fgKCaVMtk;W2ct)siKQ$G#P{DCze5#_zaPTf2;$ zOO`ts zAu%0Q(6SEM*EfXOZ#SB?Bsh}YeD+uTzI^&;sK}=wqn92!=o=S{e(=ui-S34rfX8#k zc+@^`7i!fES>9^@8R~#XKC8>i%crh<1IKMs%0t+QcjM!g<40A#J6-1WHq*2BWZOhD z!}}(N%q8Adgxy7<1He^MQqpD3^Fv8DW?-t5?+6A;LKHU}eY3RZJIK6_ZJD>atvF#8 z)a>oOq)-qjw@Wm{?v|B?9B*>NH+Q|(QtF({%W@QLcxH8I{*n&i_L&o^lHPYXc4H{d zK_RHyFJ#~XDy`^zAG0ZbLl}Y7u3bAFqXW8NeQPs~O}U-{bNoF$+cZ%vqouL8&|n~i zZ-iA2qbvH6NvW?`KP8RzI+O5Y;got@2S7m0)OkEygW~T+>((cyrfToivVL@@tn_|l zr^v}bwOH${aD2h4>Q4o%{vo-bL%cjlcsOz2spzM~PMEQp{J^N){R21I<%9P=b##9w z0Yb8u0o_)z6@Bu{*1NdUg79%)w_x?^OEgax&e4;|o)VJy9{j(O7EqUvbCrXaE4;@B zb(^MZVCw{yi`8p*njhdDcwL?6Pwx{Sp z%pHEhJH_5J14EU#Cy>W%E41Um`!3ox&nuVka0Vt%KN3LoRF%zNVOxY0+B^^W87Qv) zd#&^&Fc!)EtOH{xi{#;W|9gEX_&o|0-vDHq6d8|`)L$9BV$j(<#;YFD?lR9lMJouY z!1SmUvDND{0}SKTYYxR$=`#h(C2O`1F+ABr-)iCd5U4FH3TKN@MoqO-#Uebwr5|Ti zK}L55y{vNl$7^{l(;F}Q{+11+UG3tlVI`t~f}h2R9C?qfQ_o1~--kRcK3=6ypZK~` zC^;U6;jy!-3I;QwV6?ELKb21Msn#WJU+u`3WDn<$g!U_n^d9wmF?p<8a73S8y#lCg zTbfEmeo`aP{In!8Pu_x98lhNG%p<2{d-;)J<}WmUY{L+<57ET~6Q9TssW0Cl(5RZbU)7-Xe-mj zxuqV7G%NY&UkqXYJgT;Ql+PO#54MUmogbh4P9xTb6c!NgzHhU#G+xS)E1$)}3AWwF z_m>hnhx~SP&Cj!I1>ANfqSU9R)5-3F^(O+;{fUM+du0zeR+-;&`=OiX-wTRQVo zSYAhZN4X@I0NIFdmBsy%+9SalLq>5N$r_ZT|>VAD9!yXO__ILKs0*(14DJl0&TGIb|NC7;c<5KkJ&p?NJMC3Ns3K=^e6GIb=)xfE+3-D2TA=Tnz-u|&%A>bd49eDWm`7_VX+zOTx#jl8 z^3904IIf-X@4t$qCO?ZL+jVKW-`-7ktvpz0PwzXBRxuBFYFCehQ%ND|&_t^%(p8oWLsqxpYws05eoORI-QY6so#*6%gXiB!$tw-O?4;h%!QQ<`jL0rKp1JF1 zD)~sb;4Liat3M`@vFr51$85#mz3u+^qhZeXNT3EY(-&RzoUUOVy}W}fMCi}7GQ3B` z^1vBh7)&?TXT*-7b!ihpAG<-|ETa8ax2HvP{_lNy#)S8+wYHLnzO4WAUS52jTU)aM zkapdE6mQU6K(Qi+TD?d zUCYV-HgNXE(P+pXK^aRnJ7Eg;lx|*IX_{Ujz@HR*xlx?{Ux0ZH0n_`hbkwsi|8hNj z1)yKtY{z3eEo{L_-3nH*r`vVxShz}GHvPY-|C525nno}QvIuR3U!u$+Z6CHXop*}Q zSjcmpMaDha(hmy<`4u3kP;#Pi*zTI(2RB+Lc_yvdlp{kX&{WrSe!;PtN%|ri1Ee=! zIT%MiNNicu5gAMxdTyVlTM6=#>|GoKiKYm#td?^sQ(w+j$^iT97=l|M4c`2q@XOF+4->*#yfct?iBd?{4$8_wwB{Nct(;SrCddfI1$jd5 zf4V5BUbyA(RWC;uG?N4JrSh1rLqCKy;@ex^bTBg!fI@h?UywzIG!XnP8Z?bh-}i1p zLNIya?tS}AXrQ<2+&P4GQpAxw+_~}!?|+VDiicwjSCpZdzUEV9Q1`j1dM^fW>o?@A z-Z6cu8x^3zq)CQst_(!F)Sv?9ngXw|H(}uRr=Byw$>Ul0QjeQ8mCK#E^?*)?3U_Pf zR}cBf_Jrqs5Y6@LFH!hmM8k7icekA>)IO6SjN^9i*+Y+MFpqh%EKAyk&e7J@tVpxV zQ=dbc`s`Z!&9z>^;74#GoEc{mjYF+sr@f%0!CqcoYw{u2n!+nRA~h;kdq_1*JcGk1 zaE|Kr<%r>_hRd#7SMto5O<)XEOul=XSl@rhkXiDU6S_H{5pvU!)5s#_#wq5WhcLJt z`wEw=mFwRNq51jhgf3RvcG6*{S1Bj4x0lx$nwOIw#im6GwX++eWL&CBCxmHDIX>)R zvCYISRbAIRHHJQFd2RbV)-&JbZAfL0DX;i33>ZieCfLX01=Ps;9wW>fRP8UsMnU$9!bbUBvD&w$}^Ji0&|wveY-dw`LX(_p{kU&tCLjm5&q z3y5m=Y59+zFk#d4KA8fg4C|X_|D&^Y)`n!Zz>O6pHJg?cJVDVOqdo70sgcnc8tyzhzpk zF?8sd3tqD!&OBe2HDBU4kaS<7&=h1DNdysuS`i!sY`I#Ed6PaMWy%76va9IQYlEOW zA&GiC5fGSF*ZhN2|NQgR{n$yx8G)zCs4v&=&Qjmp+>!rRxHX1p94Ckzj)aSmp7m=k zsd)67&I;D0i7@q6Y#s~&UDzu=nfV{5cgHTRFp#X+@?#uHQ3Jgfv05-6%=TG>QH*5g zesdVvbvlpdRk=1~ix1E8UcYWpe(wBvv$cOGt^f4$_L>_XYpQ79JhI21B#qUq=r_cr z>ie3^k0nneoqU`d%J9V#(4{u#HaR~^6b{;*2We?V%+uM?qT`~&_B{7`S+-v*O26iP z{APr7`PP?b7W^>MqsUKYQ)klXMK<)biZxtY@YfNT7eCO@O@6}bDZcN(|7K;;!w=O+x2$@2S#Ho zzN|whY#n}^ASE093JzlWq+pSnVX;E?V*|`NYR?KKqxUdk z*G(?}CkNKZ70%zyX{(1Nm(;0Xs)$Y2^Gqek8BvInc zIWV?rjamGD7rTue=(w|}0wMKJUZYLu=%j7?fH2aoZClGp(y0TaAvV@$YrqwOvWmwZ@6ar+#uIM_d-2bV;yv9?#oSyOtws8DU>}luL}- zRDIfek#@!qKK{MQAUW3jX9&(Sx8I*bU2Y)!-S5o}R9qs!qtQ{`BCl-@TtME-7`;M9SMNAi!o06Y4-XlK1LnwF{! z=K~Tv!}E|}7lJ9&$K32Uje5}Xh8dm#6J3sCXC6>A@SfWIyXqXEM$J<7J!C2XQp0DUZ=x@1+P2R-y0VY-mFAy8)Y5 zTzlP2k&%aTSTfD!0;hBkC$Z8SoS3!dJ@2QY67-Kr_!UYCPvUkUB$go3BbQh`4UL)1 zSI)xSC%FHtbMr3xFC_oK{yeFw>6OykN)nm?al-^5`e;9xqs&A1>tTGzPjcQqo7LUP zg#9rUk1WJTkAbg4CJ(xydD4kfcH_HKJ0Q|)+vVPz59Rzyz|1P2e}fB0R|ee-?*j); zk^C)(NiA&xx_9Rw#z<}mg(}j06a|T_LELR5pD_=UW;Orp3#8s+mQO_BSQ&+No(n1D zN2Y{L^DxDhElog3u29a4<-SX|2EkEZDxa_56Y-!n91&4yAm_lV-9bKF^!57*mX?-L z10`H9Q~~*QP>Gh-nnJ&1E>KV zb>w0+Aq)|?8A)|}<}0aW=$!EJfDVtb#bVBHAj}hA-AyKB!BB>Mgt3PyKZnT})A{SX zabHxep6Y5Yp^$#|{3DlyKu5*V(sXecEi3NVRA}U2uf<-x7Em@hkZQkv6Jc-8q`Z}s zT?(J9dG_wSmfG|B50pq=-Ga}e%~jRYyLo>$7$fA6F!TsmG|mT$_Je+~ma)~uykLT} z4U`gaj}i0D}2z z5_?A%1qG|57&F=CA)O^kTj0&$C2a0fa0G7g&_UbF!TNWOo#G(Pc@h>lnsk_Gs}^C6Ey_8RtiT z#`MS~lKVo=mJN|7RbI2`D8{39@7_Idr*6fYgVHNeJ*gt=WW}!*tb(2}(oSqF3e>QK zRmGUv@Xi;0n_1Bbw%KEgeGP*=SIP}PI%-)%&$K#Z(tsWgA>0Xir;(x<`)-kAvnBTrS(D5Ysh<1_n+Vy5ColkY4iHL(o2J%@QA|8ySX)Ahw`tMx|Ir9 zWi~A`?$_dL;by*I!?Ri|@Z@V9?2=oKs9y2CKRRG2LOzd;UWvDWuA;HE^fd z=DPP+d39hy*N1ZaV-1+RW*QZUFrF+dxAju&sPT7vV};RY<2yIK)skqWO#R!)15#=6 zuD&M%Ht){K$1ZeGctsdpQst2js~Q;za(gTE=ZU0X)Rb;YCCVzV|)_kwUzW;*1j0-(Z~2P) zeZ;$+v8vH>Q3?tnk&wA1m_SdS0p~aq|2yKFA*tCcX5M0} zXiO0E1vVk9(W!X^q%BrrQdAmDpZ?AIIQ{ED@-XdMZHSjUblPn8Ca*Znrx%`+k_;?4 z&&Kz!9~4w2I0pyoyiYRgCXB=1cyt|tlQZByg0n*XFSi=}{*H=jt!)g%v5CU4v&_3a z`~Tt5)?G$G^ppA>>b@JLi$v|Hh85X+J)THhXLc1|F9-b0v=lxW3P}u;)8)wF=;sE# zTSK=*^Kef&CD=QSf1;$DRZdZA(?h(fRtv>5h~s5B(|01>>nUvR^6xJPUFhzSkQex_ zZW}3F{D&5pKfR)5aNcO*Y{M3yex1kjm%{W30@_Mn&(Qng-2a;^X|rgbED1i!(SH}k zB)Tftn%w16x@x%Wg{iM>h-c`3BNnNLo Qlk1 Date: Fri, 14 Aug 2020 11:01:00 -0400 Subject: [PATCH 068/231] ENH: fixed metadata units Fixed incorrectly specified units in the VTEC meta data. --- pysatMadrigal/instruments/gnss_tec.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pysatMadrigal/instruments/gnss_tec.py b/pysatMadrigal/instruments/gnss_tec.py index b85d665..31a64e5 100644 --- a/pysatMadrigal/instruments/gnss_tec.py +++ b/pysatMadrigal/instruments/gnss_tec.py @@ -189,6 +189,11 @@ def load(fnames, tag=None, sat_id=None): # Squeeze the kindat and kinst 'coordinates', but keep them as floats data = data.squeeze(dim=['kindat', 'kinst']) + + # Fix the units for tec and dtec + if tag == 'vtec': + meta['tec'] = {'units': 'TECU'} + meta['dtec'] = {'units': 'TECU'} return data, meta From d7f42f10f11a6ffaafbeb8b08f9d1b84262de37f Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 14 Aug 2020 14:49:50 -0400 Subject: [PATCH 069/231] STY: flake8 changes Ran flake8 locally on files and made PEP8 corrections. --- pysatMadrigal/instruments/gnss_tec.py | 13 ++++++------- pysatMadrigal/instruments/methods/madrigal.py | 1 - 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/pysatMadrigal/instruments/gnss_tec.py b/pysatMadrigal/instruments/gnss_tec.py index 31a64e5..5514262 100644 --- a/pysatMadrigal/instruments/gnss_tec.py +++ b/pysatMadrigal/instruments/gnss_tec.py @@ -38,7 +38,6 @@ import datetime as dt import functools -import numpy as np from pysat.instruments.methods import general as ps_gen @@ -67,7 +66,7 @@ # madrigal tags madrigal_inst_code = 8000 -madrigal_tag = {'': {'vtec': 3500}} #, 'los': 3505}} +madrigal_tag = {'': {'vtec': 3500}} # , 'los': 3505}} # support listing files currently available on remote server (Madrigal) list_remote_files = functools.partial(mad_meth.list_remote_files, @@ -91,9 +90,9 @@ def init(self): "organizations: UNAVCO, Scripps Orbit and Permanent", " Array Center, Institut Geographique National, ", "France, International GNSS Service, The Crustal ", - "Dynamics Data Information System (CDDIS), National", + "Dynamics Data Information System (CDDIS), National ", " Geodetic Survey, Instituto Brasileiro de Geografia", - " e Estatística, RAMSAC CORS of Instituto Geográfico", + "e Estatística, RAMSAC CORS of Instituto Geográfico", " Nacional del la República Agentina, Arecibo ", "Observatory, Low-Latitude Ionospheric Sensor ", "Network (LISN), Topcon Positioning Systems, Inc., ", @@ -181,8 +180,8 @@ def load(fnames, tag=None, sat_id=None): # Define the xarray coordinate dimensions (apart from time) xcoords = {'vtec': {('time', 'gdlat', 'glon', 'gdalt', 'kindat', 'kinst'): ['tec', 'dtec'], - ('time',): ['year', 'month', 'day', 'hour', 'min', - 'sec', 'ut1_unix', 'ut2_unix', 'recno']},} + ('time', ): ['year', 'month', 'day', 'hour', 'min', + 'sec', 'ut1_unix', 'ut2_unix', 'recno']}} # Load the specified data data, meta = mad_meth.load(fnames, tag, sat_id, xarray_coords=xcoords[tag]) @@ -194,7 +193,7 @@ def load(fnames, tag=None, sat_id=None): if tag == 'vtec': meta['tec'] = {'units': 'TECU'} meta['dtec'] = {'units': 'TECU'} - + return data, meta diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index fe5ad1d..007bf7e 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -157,7 +157,6 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): '{:}'.format(xarray_coords[xcoords]), '], use only: {:}'.format( data.columns)])) - # Select the desired data values sel_data = data[list(xcoords) + xarray_coords[xcoords]] From c3f39653a14219528b041ba2c9b4e6182aebbd83 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 14 Aug 2020 15:56:03 -0400 Subject: [PATCH 070/231] DOC: docstring typo Fix word repetition in the methods/madrigal docstrings. Co-authored-by: Russell Stoneback --- pysatMadrigal/instruments/methods/madrigal.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 007bf7e..19a22f4 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -57,7 +57,7 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): xarray_coords : list List of keywords to use as coordinates if xarray output is desired instead of a Pandas DataFrame. Can build an xarray Dataset with - that that have different coordinate dimensions by providing a dict + that have different coordinate dimensions by providing a dict inside the list instead of coordinate variable name strings. Each dict will have a tuple of coordinates as the key and a list of variable strings as the value. For example, From b3311974168fed295ddd9112dc59817477b1bb60 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 14 Aug 2020 15:56:54 -0400 Subject: [PATCH 071/231] STY: meta generalization Use the metadata units_label to fix the TEC units. Co-authored-by: Russell Stoneback --- pysatMadrigal/instruments/gnss_tec.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysatMadrigal/instruments/gnss_tec.py b/pysatMadrigal/instruments/gnss_tec.py index 5514262..31e8a38 100644 --- a/pysatMadrigal/instruments/gnss_tec.py +++ b/pysatMadrigal/instruments/gnss_tec.py @@ -191,7 +191,7 @@ def load(fnames, tag=None, sat_id=None): # Fix the units for tec and dtec if tag == 'vtec': - meta['tec'] = {'units': 'TECU'} + meta['tec'] = {meta.units_label: 'TECU'} meta['dtec'] = {'units': 'TECU'} return data, meta From 626c87dc15cc17f10894d407f4954e81b64e1517 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 14 Aug 2020 15:59:25 -0400 Subject: [PATCH 072/231] DOC: docstring grammar check Fixed grammar in docstring. Co-authored-by: Russell Stoneback --- pysatMadrigal/instruments/methods/madrigal.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 19a22f4..a16a0bf 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -56,7 +56,7 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): This input is nominally provided by pysat itself. (default='') xarray_coords : list List of keywords to use as coordinates if xarray output is desired - instead of a Pandas DataFrame. Can build an xarray Dataset with + instead of a Pandas DataFrame. Can build an xarray Dataset that have different coordinate dimensions by providing a dict inside the list instead of coordinate variable name strings. Each dict will have a tuple of coordinates as the key and a list of variable From ce2cc0b28022959bd19746fbd378b48a6251a74d Mon Sep 17 00:00:00 2001 From: jklenzing Date: Sat, 15 Aug 2020 14:47:16 -0400 Subject: [PATCH 073/231] TST: rewrite using hydrid style --- pysatMadrigal/tests/test_utils_coords.py | 492 +++++++++-------------- 1 file changed, 185 insertions(+), 307 deletions(-) diff --git a/pysatMadrigal/tests/test_utils_coords.py b/pysatMadrigal/tests/test_utils_coords.py index 9d1d658..95d8ab9 100644 --- a/pysatMadrigal/tests/test_utils_coords.py +++ b/pysatMadrigal/tests/test_utils_coords.py @@ -8,257 +8,199 @@ from pysatMadrigal.utils import coords -@pytest.mark.parametrize("Nvals", [1, 10]) -@pytest.mark.parametrize("inverse,input,target", - [(False, [45.0, 8.0], - [44.8075768, 8.0, 6367.48954386]), - (True, [45.0, 8.0], - [45.1924232, 8.0, 6367.3459085])]) -def test_geodetic_to_geocentric(Nvals, input, inverse, target): - """Test array conversion from geodetic to geocentric coordinates""" - - if Nvals > 1: - # inputs as an ndarray - lat_in = input[0] * np.ones(shape=(Nvals,), dtype=float) - lon_in = input[1] * np.ones(shape=(Nvals,), dtype=float) - else: - # inputs as a float - lat_in = input[0] - lon_in = input[1] - - output = coords.geodetic_to_geocentric(lat_in, lon_in=lon_in, - inverse=inverse) - - for i in range(len(target)): - if Nvals > 1: - assert abs(output[i] - target[i]).max() < 1.0e-6 - assert output[i].shape == lat_in.shape - else: - assert abs(output[i] - target[i]) < 1.0e-6 - - -def test_geodetic_to_geocentric_and_back(): - """Tests the reversibility of geodetic to geocentric conversions""" - - input = [35.0, 17.0] - temp_vals = coords.geodetic_to_geocentric(input[0], lon_in=input[1], - inverse=False) - output = coords.geodetic_to_geocentric(temp_vals[0], - lon_in=temp_vals[1], - inverse=True) - for i in range(2): - assert abs(input[i] - output[i]) < 1.0e-6 - - class TestGeodeticGeocentric(): def setup(self): """Runs before every method to create a clean testing setup.""" - arr = np.ones(shape=(10,), dtype=float) self.val = {'lat': 45.0, 'lon': 8.0, 'az': 52.0, 'el': 63.0} - self.arr = {} - for key in self.val.keys(): - self.arr[key] = self.val[key] * arr def teardown(self): """Runs after every method to clean up previous testing.""" - del self.val, self.arr, - - ############################################### - # Geodetic / Geocentric Horizontal conversions + del self.val + + @pytest.mark.parametrize("kwargs,target", + [({}, [44.8075768, 8.0, 6367.48954386]), + ({'inverse': False}, + [44.8075768, 8.0, 6367.48954386]), + ({'inverse': True}, + [45.1924232, 8.0, 6367.3459085])]) + def test_geodetic_to_geocentric(self, kwargs, target): + """Test conversion from geodetic to geocentric coordinates""" - def test_geodetic_to_geocentric_horz_single(self): + lat, lon, rad = coords.geodetic_to_geocentric(self.val['lat'], + lon_in=self.val['lon'], + **kwargs) + + assert np.all(abs(lat - target[0]) < 1.0e-6) + assert np.all(abs(lon - target[1]) < 1.0e-6) + assert np.all(abs(rad - target[2]) < 1.0e-6) + if isinstance(lat, np.ndarray): + assert lat.shape == self.val['lat'].shape + assert lon.shape == self.val['lat'].shape + assert rad.shape == self.val['lat'].shape + + def test_geodetic_to_geocentric_and_back(self): + """Tests the reversibility of geodetic to geocentric conversions""" + + lat2, lon2, rad = coords.geodetic_to_geocentric(self.val['lat'], + lon_in=self.val['lon'], + inverse=False) + lat3, lon3, rad = coords.geodetic_to_geocentric(lat2, + lon_in=lon2, + inverse=True) + assert np.all(abs(self.val['lat'] - lat3) < 1.0e-6) + assert np.all(abs(self.val['lon'] - lon3) < 1.0e-6) + + @pytest.mark.parametrize("kwargs,target", + [({}, [44.8075768, 8.0, 6367.48954386, + 51.7037677, 62.8811403]), + ({'inverse': False}, + [44.8075768, 8.0, 6367.48954386, + 51.7037677, 62.8811403]), + ({'inverse': True}, + [45.1924232, 8.0, 6367.3459085, + 52.2989610, 63.1180720])]) + def test_geodetic_to_geocentric_horizontal(self, kwargs, target): """Test conversion from geodetic to geocentric coordinates""" lat, lon, rad, az, el = \ coords.geodetic_to_geocentric_horizontal(self.val['lat'], self.val['lon'], self.val['az'], - self.val['el']) + self.val['el'], + **kwargs) + + assert np.all(abs(lat - target[0]) < 1.0e-6) + assert np.all(abs(lon - target[1]) < 1.0e-6) + assert np.all(abs(rad - target[2]) < 1.0e-6) + assert np.all(abs(az - target[3]) < 1.0e-6) + assert np.all(abs(el - target[4]) < 1.0e-6) + if isinstance(lat, np.ndarray): + assert lat.shape == self.val['lat'].shape + assert lon.shape == self.val['lat'].shape + assert rad.shape == self.val['lat'].shape + assert az.shape == self.val['lat'].shape + assert el.shape == self.val['lat'].shape + + def test_geodetic_to_geocentric_horizontal_and_back(self): + """Tests the reversibility of geodetic to geocentric horiz conversions - assert abs(lat - 44.807576784018046) < 1.0e-6 - assert abs(lon - 8.0) < 1.0e-6 - assert abs(rad - 6367.489543863465) < 1.0e-6 - assert abs(az - 51.70376774257361) < 1.0e-6 - assert abs(el - 62.8811403841008) < 1.0e-6 + Note: inverse of az and el angles currently non-functional - def test_geocentric_to_geodetic_horz_single(self): - """Test conversion from geocentric to geodetic coordinates""" + """ - lat, lon, rad, az, el = \ + lat2, lon2, rad_e, az2, el2 = \ coords.geodetic_to_geocentric_horizontal(self.val['lat'], self.val['lon'], self.val['az'], self.val['el'], - inverse=True) - - assert abs(lat - 45.192423215981954) < 1.0e-6 - assert abs(lon - 8.0) < 1.0e-6 - assert abs(rad - 6367.345908499981) < 1.0e-6 - assert abs(az - 52.29896101551479) < 1.0e-6 - assert abs(el - 63.118072033649916) < 1.0e-6 - - def test_geodetic_to_geocentric_horz_mult(self): - """Test array conversion from geodetic to geocentric coordinates""" - - lat, lon, rad, az, el = \ - coords.geodetic_to_geocentric_horizontal(self.arr['lat'], - self.arr['lon'], - self.arr['az'], - self.arr['el']) - - assert lat.shape == self.arr['lat'].shape - assert lon.shape == self.arr['lat'].shape - assert rad.shape == self.arr['lat'].shape - assert az.shape == self.arr['lat'].shape - assert el.shape == self.arr['lat'].shape - assert abs(lat - 44.807576784018046).max() < 1.0e-6 - assert abs(lon - 8.0).max() < 1.0e-6 - assert abs(rad - 6367.489543863465).max() < 1.0e-6 - assert abs(az - 51.70376774257361).max() < 1.0e-6 - assert abs(el - 62.8811403841008).max() < 1.0e-6 - - def test_geocentric_to_geodetic_horz_mult(self): - """Test array conversion from geocentric to geodetic coordinates""" - - lat, lon, rad, az, el = \ - coords.geodetic_to_geocentric_horizontal(self.arr['lat'], - self.arr['lon'], - self.arr['az'], - self.arr['el'], - inverse=True) - - assert lat.shape == self.arr['lat'].shape - assert lon.shape == self.arr['lat'].shape - assert rad.shape == self.arr['lat'].shape - assert az.shape == self.arr['lat'].shape - assert el.shape == self.arr['lat'].shape - assert abs(lat - 45.192423215981954).max() < 1.0e-6 - assert abs(lon - 8.0).max() < 1.0e-6 - assert abs(rad - 6367.345908499981).max() < 1.0e-6 - assert abs(az - 52.29896101551479).max() < 1.0e-6 - assert abs(el - 63.118072033649916).max() < 1.0e-6 - - def test_geodetic_to_geocentric_horizontal_inverse(self): - """Tests the reversibility of geodetic to geocentric horiz conversions - - Note: inverse of az and el angles currently non-functional""" - - lat1 = -17.5 - lon1 = 187.3 - az1 = 52.0 - el1 = 63.0 - lat2, lon2, rad_e, az2, el2 = \ - coords.geodetic_to_geocentric_horizontal(lat1, lon1, az1, el1, inverse=False) lat3, lon3, rad_e, az3, el3 = \ coords.geodetic_to_geocentric_horizontal(lat2, lon2, az2, el2, inverse=True) - assert abs(lon1 - lon3) < 1.0e-6 - assert abs(lat1 - lat3) < 1.0e-6 - assert abs(az1 - az3) < 1.0e-6 - assert abs(el1 - el3) < 1.0e-6 + assert np.all(abs(self.val['lon'] - lon3) < 1.0e-6) + assert np.all(abs(self.val['lat'] - lat3) < 1.0e-6) + assert np.all(abs(self.val['az'] - az3) < 1.0e-6) + assert np.all(abs(self.val['el'] - el3) < 1.0e-6) -class TestSphereCart(): +class TestGeodeticGeocentricArray(TestGeodeticGeocentric): def setup(self): """Runs before every method to create a clean testing setup.""" arr = np.ones(shape=(10,), dtype=float) - self.val = {'az': 45.0, 'el': 30.0, 'r': 1.0, - 'x': 0.6123724356957946, 'z': 0.5} - self.arr = {} - for key in self.val.keys(): - self.arr[key] = self.val[key] * arr + self.val = {'lat': 45.0 * arr, + 'lon': 8.0 * arr, + 'az': 52.0 * arr, + 'el': 63.0 * arr} def teardown(self): """Runs after every method to clean up previous testing.""" - del self.val, self.arr, - - def test_spherical_to_cartesian_single(self): - """Test conversion from spherical to cartesian coordinates""" - - x, y, z = coords.spherical_to_cartesian(self.val['az'], - self.val['el'], - self.val['r']) - - assert abs(x - y) < 1.0e-6 - assert abs(z - 0.5) < 1.0e-6 + del self.val - def test_cartesian_to_spherical_single(self): - """Test conversion from cartesian to spherical coordinates""" - az, el, r = coords.spherical_to_cartesian(self.val['x'], self.val['x'], - self.val['z'], inverse=True) +class TestSphereCartesian(): - assert abs(az - 45.0) < 1.0e-6 - assert abs(el - 30.0) < 1.0e-6 - assert abs(r - 1.0) < 1.0e-6 - - def test_spherical_to_cartesian_mult(self): - """Test array conversion from spherical to cartesian coordinates""" - - x, y, z = coords.spherical_to_cartesian(self.arr['az'], - self.arr['el'], - self.arr['r']) - - assert x.shape == self.arr['x'].shape - assert y.shape == self.arr['x'].shape - assert z.shape == self.arr['x'].shape - assert abs(x - y).max() < 1.0e-6 - assert abs(z - 0.5).max() < 1.0e-6 + def setup(self): + """Runs before every method to create a clean testing setup.""" + self.val = {'az': 45.0, 'el': 30.0, 'r': 1.0, + 'x': 0.6123724356957946, 'z': 0.5} - def test_cartesian_to_spherical_mult(self): - """Test array conversion from cartesian to spherical coordinates""" + def teardown(self): + """Runs after every method to clean up previous testing.""" + del self.val + + @pytest.mark.parametrize("kwargs,input,target", + [({}, ['az', 'el', 'r'], + ['x', 'x', 'z']), + ({'inverse': False}, ['az', 'el', 'r'], + ['x', 'x', 'z']), + ({'inverse': True}, ['x', 'x', 'z'], + ['az', 'el', 'r'])]) + def test_spherical_to_cartesian(self, kwargs, input, target): + """Test conversion from spherical to cartesian coordinates""" - az, el, r = coords.spherical_to_cartesian(self.arr['x'], - self.arr['x'], - self.arr['z'], - inverse=True) + a, b, c = coords.spherical_to_cartesian(self.val[input[0]], + self.val[input[1]], + self.val[input[2]], + **kwargs) - assert az.shape == self.arr['x'].shape - assert el.shape == self.arr['x'].shape - assert r.shape == self.arr['x'].shape - assert abs(az - 45.0).max() < 1.0e-6 - assert abs(el - 30.0).max() < 1.0e-6 - assert abs(r - 1.0).max() < 1.0e-6 + assert np.all(abs(a - self.val[target[0]]) < 1.0e-6) + assert np.all(abs(b - self.val[target[1]]) < 1.0e-6) + assert np.all(abs(c - self.val[target[2]]) < 1.0e-6) + if isinstance(self.val['az'], np.ndarray): + assert a.shape == self.val['x'].shape + assert b.shape == self.val['x'].shape + assert c.shape == self.val['x'].shape - def test_spherical_to_cartesian_inverse(self): + def test_spherical_to_cartesian_and_back(self): """Tests the reversibility of spherical to cartesian conversions""" - x1 = 3000.0 - y1 = 2000.0 - z1 = 2500.0 - az, el, r = coords.spherical_to_cartesian(x1, y1, z1, + az, el, r = coords.spherical_to_cartesian(self.val['x'], + self.val['x'], + self.val['z'], inverse=True) x2, y2, z2 = coords.spherical_to_cartesian(az, el, r, inverse=False) - assert abs(x1 - x2) < 1.0e-6 - assert abs(y1 - y2) < 1.0e-6 - assert abs(z1 - z2) < 1.0e-6 + assert np.all(abs(self.val['x'] - x2) < 1.0e-6) + assert np.all(abs(self.val['x'] - y2) < 1.0e-6) + assert np.all(abs(self.val['z'] - z2) < 1.0e-6) + +class TestSphereCartesianArray(TestSphereCartesian): + + def setup(self): + """Runs before every method to create a clean testing setup.""" + arr = np.ones(shape=(10,), dtype=float) + self.val = {'az': 45.0 * arr, 'el': 30.0 * arr, 'r': 1.0 * arr, + 'x': 0.6123724356957946 * arr, 'z': 0.5 * arr} + + def teardown(self): + """Runs after every method to clean up previous testing.""" + del self.val -######################################## -# Global / Local Cartesian conversions class TestGlobalLocal(): def setup(self): """Runs before every method to create a clean testing setup.""" - arr = np.ones(shape=(10,), dtype=float) self.val = {'x': 7000.0, 'y': 8000.0, 'z': 9000.0, 'lat': 37.5, 'lon': 289.0, 'rad': 6380.0} - self.arr = {} - for key in self.val.keys(): - self.arr[key] = self.val[key] * arr def teardown(self): """Runs after every method to clean up previous testing.""" - del self.val, self.arr, - - def test_global_to_local_cartesian_single(self): + del self.val + + @pytest.mark.parametrize("kwargs,target", + [({}, + [-9223.1752649, -2239.8352784, 11323.1268511]), + ({'inverse': False}, + [-9223.1752649, -2239.8352784, 11323.1268511]), + ({'inverse': True}, + [-5709.804677, -4918.397556, 15709.5775005])]) + def test_global_to_local_cartesian(self, kwargs, target): """Test conversion from global to local cartesian coordinates""" x, y, z = coords.global_to_local_cartesian(self.val['x'], @@ -266,63 +208,18 @@ def test_global_to_local_cartesian_single(self): self.val['z'], self.val['lat'], self.val['lon'], - self.val['rad']) - - assert abs(x + 9223.175264852474) < 1.0e-6 - assert abs(y + 2239.835278362686) < 1.0e-6 - assert abs(z - 11323.126851088331) < 1.0e-6 + self.val['rad'], + **kwargs) - def test_local_cartesian_to_global_single(self): - """Test conversion from local cartesian to global coordinates""" + assert np.all(abs(x - target[0]) < 1.0e-6) + assert np.all(abs(y - target[1]) < 1.0e-6) + assert np.all(abs(z - target[2]) < 1.0e-6) + if isinstance(self.val['x'], np.ndarray): + assert x.shape == self.val['x'].shape + assert y.shape == self.val['x'].shape + assert z.shape == self.val['x'].shape - x, y, z = coords.global_to_local_cartesian(self.val['x'], - self.val['y'], - self.val['z'], - self.val['lat'], - self.val['lon'], - self.val['rad'], - inverse=True) - - assert abs(x + 5709.804676635975) < 1.0e-6 - assert abs(y + 4918.397556010223) < 1.0e-6 - assert abs(z - 15709.577500484005) < 1.0e-6 - - def test_global_to_local_cartesian_mult(self): - """Test array conversion from global to local cartesian coordinates""" - - x, y, z = coords.global_to_local_cartesian(self.arr['x'], - self.arr['y'], - self.arr['z'], - self.arr['lat'], - self.arr['lon'], - self.arr['rad']) - - assert x.shape == self.arr['x'].shape - assert y.shape == self.arr['x'].shape - assert z.shape == self.arr['x'].shape - assert abs(x + 9223.175264852474).max() < 1.0e-6 - assert abs(y + 2239.835278362686).max() < 1.0e-6 - assert abs(z - 11323.126851088331).max() < 1.0e-6 - - def test_local_cartesian_to_global_mult(self): - """Test array conversion from local cartesian to global coordinates""" - - x, y, z = coords.global_to_local_cartesian(self.arr['x'], - self.arr['y'], - self.arr['z'], - self.arr['lat'], - self.arr['lon'], - self.arr['rad'], - inverse=True) - - assert x.shape == self.arr['x'].shape - assert y.shape == self.arr['x'].shape - assert z.shape == self.arr['x'].shape - assert abs(x + 5709.804676635975).max() < 1.0e-6 - assert abs(y + 4918.397556010223).max() < 1.0e-6 - assert abs(z - 15709.577500484005).max() < 1.0e-6 - - def test_global_to_local_cartesian_inverse(self): + def test_global_to_local_cartesian_and_back(self): """Tests the reversibility of the global to loc cartesian transform""" x2, y2, z2 = coords.global_to_local_cartesian(self.val['x'], @@ -337,43 +234,43 @@ def test_global_to_local_cartesian_inverse(self): self.val['lon'], self.val['rad'], inverse=True) - assert abs(self.val['x'] - x3) < 1.0e-6 - assert abs(self.val['y'] - y3) < 1.0e-6 - assert abs(self.val['z'] - z3) < 1.0e-6 + assert np.all(abs(self.val['x'] - x3) < 1.0e-6) + assert np.all(abs(self.val['y'] - y3) < 1.0e-6) + assert np.all(abs(self.val['z'] - z3) < 1.0e-6) -class TestLocalHorzGlobal(): - """Tests for local horizontal to global geo and back """ +class TestGlobalLocalArray(TestGlobalLocal): def setup(self): """Runs before every method to create a clean testing setup.""" arr = np.ones(shape=(10,), dtype=float) - self.val = {'az': 30.0, 'el': 45.0, 'dist': 1000.0, - 'lat': 45.0, 'lon': 0.0, 'alt': 400.0} - self.arr = {} - for key in self.val.keys(): - self.arr[key] = self.val[key] * arr + self.val = {'x': 7000.0 * arr, 'y': 8000.0 * arr, 'z': 9000.0 * arr, + 'lat': 37.5 * arr, 'lon': 289.0 * arr, 'rad': 6380.0 * arr} def teardown(self): """Runs after every method to clean up previous testing.""" - del self.val, self.arr, + del self.val - def test_local_horizontal_to_global_geo_geodetic(self): - """Tests the conversion of the local horizontal to global geo""" - lat, lon, rad = \ - coords.local_horizontal_to_global_geo(self.val['az'], - self.val['el'], - self.val['dist'], - self.val['lat'], - self.val['lon'], - self.val['alt']) +class TestLocalHorizontalGlobal(): + """Tests for local horizontal to global geo and back """ - assert abs(lat - 50.419037572472625) < 1.0e-6 - assert abs(lon + 7.694008395350697) < 1.0e-6 - assert abs(rad - 7172.15486518744) < 1.0e-6 + def setup(self): + """Runs before every method to create a clean testing setup.""" + self.val = {'az': 30.0, 'el': 45.0, 'dist': 1000.0, + 'lat': 45.0, 'lon': 0.0, 'alt': 400.0} - def test_local_horizontal_to_global_geo(self): + def teardown(self): + """Runs after every method to clean up previous testing.""" + del self.val + + @pytest.mark.parametrize("kwargs,target", + [({}, [50.4190376, -7.6940084, 7172.1548652]), + ({'geodetic': True}, + [50.4190376, -7.6940084, 7172.1548652]), + ({'geodetic': False}, + [50.4143159, -7.6855552, 7185.6983666])]) + def test_local_horizontal_to_global_geo(self, kwargs, target): """Tests the conversion of the local horizontal to global geo""" lat, lon, rad = \ @@ -383,45 +280,26 @@ def test_local_horizontal_to_global_geo(self): self.val['lat'], self.val['lon'], self.val['alt'], - geodetic=False) + **kwargs) - assert abs(lat - 50.414315865044202) < 1.0e-6 - assert abs(lon + 7.6855551809119502) < 1.0e-6 - assert abs(rad - 7185.6983665760772) < 1.0e-6 + assert np.all(abs(lat - target[0]) < 1.0e-6) + assert np.all(abs(lon - target[1]) < 1.0e-6) + assert np.all(abs(rad - target[2]) < 1.0e-6) + if isinstance(self.val['lat'], np.ndarray): + assert lat.shape == self.val['lat'].shape + assert lon.shape == self.val['lat'].shape + assert rad.shape == self.val['lat'].shape - def test_local_horizontal_to_global_geo_geodetic_mult(self): - """Tests the conversion of the local horizontal to global geo""" - lat, lon, rad = \ - coords.local_horizontal_to_global_geo(self.arr['az'], - self.arr['el'], - self.arr['dist'], - self.arr['lat'], - self.arr['lon'], - self.arr['alt']) - - assert lat.shape == self.arr['lat'].shape - assert lon.shape == self.arr['lat'].shape - assert rad.shape == self.arr['lat'].shape - assert abs(lat - 50.419037572472625).max() < 1.0e-6 - assert abs(lon + 7.694008395350697).max() < 1.0e-6 - assert abs(rad - 7172.15486518744).max() < 1.0e-6 - - def test_local_horizontal_to_global_geo_mult(self): - """Tests the conversion of the local horizontal to global geo""" +class TestLocalHorizontalGlobalArray(TestLocalHorizontalGlobal): + """Tests for local horizontal to global geo and back """ - lat, lon, rad = \ - coords.local_horizontal_to_global_geo(self.arr['az'], - self.arr['el'], - self.arr['dist'], - self.arr['lat'], - self.arr['lon'], - self.arr['alt'], - geodetic=False) - - assert lat.shape == self.arr['lat'].shape - assert lon.shape == self.arr['lat'].shape - assert rad.shape == self.arr['lat'].shape - assert abs(lat - 50.414315865044202).max() < 1.0e-6 - assert abs(lon + 7.6855551809119502).max() < 1.0e-6 - assert abs(rad - 7185.6983665760772).max() < 1.0e-6 + def setup(self): + """Runs before every method to create a clean testing setup.""" + arr = np.ones(shape=(10,), dtype=float) + self.val = {'az': 30.0 * arr, 'el': 45.0 * arr, 'dist': 1000.0 * arr, + 'lat': 45.0 * arr, 'lon': 0.0 * arr, 'alt': 400.0 * arr} + + def teardown(self): + """Runs after every method to clean up previous testing.""" + del self.val From 3281bf36ca90eefa2a72ba9e861d411dbd4d28c5 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Sat, 15 Aug 2020 14:50:41 -0400 Subject: [PATCH 074/231] STY: use x and y --- pysatMadrigal/tests/test_utils_coords.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/pysatMadrigal/tests/test_utils_coords.py b/pysatMadrigal/tests/test_utils_coords.py index 95d8ab9..7a8c8a3 100644 --- a/pysatMadrigal/tests/test_utils_coords.py +++ b/pysatMadrigal/tests/test_utils_coords.py @@ -125,7 +125,9 @@ class TestSphereCartesian(): def setup(self): """Runs before every method to create a clean testing setup.""" self.val = {'az': 45.0, 'el': 30.0, 'r': 1.0, - 'x': 0.6123724356957946, 'z': 0.5} + 'x': 0.6123724356957946, + 'y': 0.6123724356957946, + 'z': 0.5} def teardown(self): """Runs after every method to clean up previous testing.""" @@ -133,10 +135,10 @@ def teardown(self): @pytest.mark.parametrize("kwargs,input,target", [({}, ['az', 'el', 'r'], - ['x', 'x', 'z']), + ['x', 'y', 'z']), ({'inverse': False}, ['az', 'el', 'r'], - ['x', 'x', 'z']), - ({'inverse': True}, ['x', 'x', 'z'], + ['x', 'y', 'z']), + ({'inverse': True}, ['x', 'y', 'z'], ['az', 'el', 'r'])]) def test_spherical_to_cartesian(self, kwargs, input, target): """Test conversion from spherical to cartesian coordinates""" @@ -158,14 +160,14 @@ def test_spherical_to_cartesian_and_back(self): """Tests the reversibility of spherical to cartesian conversions""" az, el, r = coords.spherical_to_cartesian(self.val['x'], - self.val['x'], + self.val['y'], self.val['z'], inverse=True) x2, y2, z2 = coords.spherical_to_cartesian(az, el, r, inverse=False) assert np.all(abs(self.val['x'] - x2) < 1.0e-6) - assert np.all(abs(self.val['x'] - y2) < 1.0e-6) + assert np.all(abs(self.val['y'] - y2) < 1.0e-6) assert np.all(abs(self.val['z'] - z2) < 1.0e-6) @@ -175,7 +177,9 @@ def setup(self): """Runs before every method to create a clean testing setup.""" arr = np.ones(shape=(10,), dtype=float) self.val = {'az': 45.0 * arr, 'el': 30.0 * arr, 'r': 1.0 * arr, - 'x': 0.6123724356957946 * arr, 'z': 0.5 * arr} + 'x': 0.6123724356957946 * arr, + 'y': 0.6123724356957946 * arr, + 'z': 0.5 * arr} def teardown(self): """Runs after every method to clean up previous testing.""" From 8cf12dffb69c1682c39c736093ecbc77faa52d59 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Sat, 15 Aug 2020 18:51:49 -0400 Subject: [PATCH 075/231] STY: whitespace --- pysatMadrigal/tests/test_utils_coords.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysatMadrigal/tests/test_utils_coords.py b/pysatMadrigal/tests/test_utils_coords.py index 7a8c8a3..f88a842 100644 --- a/pysatMadrigal/tests/test_utils_coords.py +++ b/pysatMadrigal/tests/test_utils_coords.py @@ -136,7 +136,7 @@ def teardown(self): @pytest.mark.parametrize("kwargs,input,target", [({}, ['az', 'el', 'r'], ['x', 'y', 'z']), - ({'inverse': False}, ['az', 'el', 'r'], + ({'inverse': False}, ['az', 'el', 'r'], ['x', 'y', 'z']), ({'inverse': True}, ['x', 'y', 'z'], ['az', 'el', 'r'])]) From 06ababedc265da163482bd78a6465c45f19a9c40 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Sat, 15 Aug 2020 18:58:49 -0400 Subject: [PATCH 076/231] MAINT: update standards for refs and ackn --- pysatMadrigal/instruments/dmsp_ivm.py | 14 +++++++------- pysatMadrigal/instruments/jro_isr.py | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/pysatMadrigal/instruments/dmsp_ivm.py b/pysatMadrigal/instruments/dmsp_ivm.py index 012de9d..21df6ed 100644 --- a/pysatMadrigal/instruments/dmsp_ivm.py +++ b/pysatMadrigal/instruments/dmsp_ivm.py @@ -125,13 +125,13 @@ def init(self): """ logger.info(mad_meth.cedar_rules()) - self.meta.acknowledgements = mad_meth.cedar_rules() - self.meta.references = ' '.join(('F. J. Rich, Users Guide for the Topside', - 'Ionospheric Plasma Monitor (SSIES,', - 'SSIES-2 and SSIES-3) on Spacecraft of', - 'the Defense Meteorological Satellite', - 'Program (Air Force Phillips Laboratory,', - 'Hanscom AFB, MA, 1994), Vol. 1, p. 25.')) + self.acknowledgements = mad_meth.cedar_rules() + self.references = ' '.join(('F. J. Rich, Users Guide for the Topside', + 'Ionospheric Plasma Monitor (SSIES,', + 'SSIES-2 and SSIES-3) on Spacecraft of', + 'the Defense Meteorological Satellite', + 'Program (Air Force Phillips Laboratory,', + 'Hanscom AFB, MA, 1994), Vol. 1, p. 25.')) return diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index 639fb38..149be12 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -116,8 +116,8 @@ def init(self): mad_meth.cedar_rules()]) logger.info(ackn_str) - self.meta.acknowledgements = ackn_str - self.meta.references = "?" + self.acknowledgements = ackn_str + self.references = "?" return From 7d43205643d94069518b21c0aa59ef3fdc30dc06 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Mon, 17 Aug 2020 08:18:59 -0400 Subject: [PATCH 077/231] STY: more meta units label Generalized second instance of units label in metadata. Co-authored-by: Russell Stoneback --- pysatMadrigal/instruments/gnss_tec.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysatMadrigal/instruments/gnss_tec.py b/pysatMadrigal/instruments/gnss_tec.py index 31e8a38..b3820ba 100644 --- a/pysatMadrigal/instruments/gnss_tec.py +++ b/pysatMadrigal/instruments/gnss_tec.py @@ -192,7 +192,7 @@ def load(fnames, tag=None, sat_id=None): # Fix the units for tec and dtec if tag == 'vtec': meta['tec'] = {meta.units_label: 'TECU'} - meta['dtec'] = {'units': 'TECU'} + meta['dtec'] = {meta.units_label: 'TECU'} return data, meta From 9e6cff920ed5eb047b939c27bc8bd1273cb0e001 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 17 Aug 2020 09:30:22 -0400 Subject: [PATCH 078/231] STY: minimize local variables in tests Co-authored-by: Angeline Burrell --- pysatMadrigal/tests/test_utils_coords.py | 56 ++++++++++-------------- 1 file changed, 24 insertions(+), 32 deletions(-) diff --git a/pysatMadrigal/tests/test_utils_coords.py b/pysatMadrigal/tests/test_utils_coords.py index f88a842..6b1ef40 100644 --- a/pysatMadrigal/tests/test_utils_coords.py +++ b/pysatMadrigal/tests/test_utils_coords.py @@ -13,10 +13,12 @@ class TestGeodeticGeocentric(): def setup(self): """Runs before every method to create a clean testing setup.""" self.val = {'lat': 45.0, 'lon': 8.0, 'az': 52.0, 'el': 63.0} + self.out = None + self.loc = None def teardown(self): """Runs after every method to clean up previous testing.""" - del self.val + del self.val, self.out, self.loc @pytest.mark.parametrize("kwargs,target", [({}, [44.8075768, 8.0, 6367.48954386]), @@ -31,25 +33,22 @@ def test_geodetic_to_geocentric(self, kwargs, target): lon_in=self.val['lon'], **kwargs) - assert np.all(abs(lat - target[0]) < 1.0e-6) - assert np.all(abs(lon - target[1]) < 1.0e-6) - assert np.all(abs(rad - target[2]) < 1.0e-6) - if isinstance(lat, np.ndarray): - assert lat.shape == self.val['lat'].shape - assert lon.shape == self.val['lat'].shape - assert rad.shape == self.val['lat'].shape + for i, self.loc in enumerate(self.out): + assert np.all(abs(self.loc - target[i]) < 1.0e-6) + if isinstance(self.loc, np.ndarray): + assert self.loc.shape == self.val['lat'].shape def test_geodetic_to_geocentric_and_back(self): """Tests the reversibility of geodetic to geocentric conversions""" - lat2, lon2, rad = coords.geodetic_to_geocentric(self.val['lat'], + self.out = coords.geodetic_to_geocentric(self.val['lat'], lon_in=self.val['lon'], inverse=False) - lat3, lon3, rad = coords.geodetic_to_geocentric(lat2, - lon_in=lon2, + self.loc = coords.geodetic_to_geocentric(self.out[0], + lon_in=self.out[1], inverse=True) - assert np.all(abs(self.val['lat'] - lat3) < 1.0e-6) - assert np.all(abs(self.val['lon'] - lon3) < 1.0e-6) + assert np.all(abs(self.val['lat'] - self.loc[0]) < 1.0e-6) + assert np.all(abs(self.val['lon'] - self.loc[1]) < 1.0e-6) @pytest.mark.parametrize("kwargs,target", [({}, [44.8075768, 8.0, 6367.48954386, @@ -63,24 +62,17 @@ def test_geodetic_to_geocentric_and_back(self): def test_geodetic_to_geocentric_horizontal(self, kwargs, target): """Test conversion from geodetic to geocentric coordinates""" - lat, lon, rad, az, el = \ + self.out = \ coords.geodetic_to_geocentric_horizontal(self.val['lat'], self.val['lon'], self.val['az'], self.val['el'], **kwargs) - assert np.all(abs(lat - target[0]) < 1.0e-6) - assert np.all(abs(lon - target[1]) < 1.0e-6) - assert np.all(abs(rad - target[2]) < 1.0e-6) - assert np.all(abs(az - target[3]) < 1.0e-6) - assert np.all(abs(el - target[4]) < 1.0e-6) - if isinstance(lat, np.ndarray): - assert lat.shape == self.val['lat'].shape - assert lon.shape == self.val['lat'].shape - assert rad.shape == self.val['lat'].shape - assert az.shape == self.val['lat'].shape - assert el.shape == self.val['lat'].shape + for i, self.loc in enumerate(self.out): + assert np.all(abs(self.loc - target[i]) < 1.0e-6) + if isinstance(self.loc, np.ndarray): + assert self.loc.shape == self.val['lat'].shape def test_geodetic_to_geocentric_horizontal_and_back(self): """Tests the reversibility of geodetic to geocentric horiz conversions @@ -89,20 +81,20 @@ def test_geodetic_to_geocentric_horizontal_and_back(self): """ - lat2, lon2, rad_e, az2, el2 = \ + self.out = \ coords.geodetic_to_geocentric_horizontal(self.val['lat'], self.val['lon'], self.val['az'], self.val['el'], inverse=False) - lat3, lon3, rad_e, az3, el3 = \ - coords.geodetic_to_geocentric_horizontal(lat2, lon2, az2, el2, + self.loc = \ + coords.geodetic_to_geocentric_horizontal(self.out[0], self.out[1], self.out[3], self.out[4], inverse=True) - assert np.all(abs(self.val['lon'] - lon3) < 1.0e-6) - assert np.all(abs(self.val['lat'] - lat3) < 1.0e-6) - assert np.all(abs(self.val['az'] - az3) < 1.0e-6) - assert np.all(abs(self.val['el'] - el3) < 1.0e-6) + assert np.all(abs(self.val['lon'] - self.loc[1]) < 1.0e-6) + assert np.all(abs(self.val['lat'] - self.loc[0]) < 1.0e-6) + assert np.all(abs(self.val['az'] - self.loc[3]) < 1.0e-6) + assert np.all(abs(self.val['el'] - self.loc[4]) < 1.0e-6) class TestGeodeticGeocentricArray(TestGeodeticGeocentric): From 91a8cd236f1da35051e1cdd2338c27953584feb8 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Mon, 17 Aug 2020 10:00:31 -0400 Subject: [PATCH 079/231] STY: compact tests --- pysatMadrigal/tests/test_utils_coords.py | 193 ++++++++++++----------- 1 file changed, 98 insertions(+), 95 deletions(-) diff --git a/pysatMadrigal/tests/test_utils_coords.py b/pysatMadrigal/tests/test_utils_coords.py index 6b1ef40..4b2549e 100644 --- a/pysatMadrigal/tests/test_utils_coords.py +++ b/pysatMadrigal/tests/test_utils_coords.py @@ -29,9 +29,9 @@ def teardown(self): def test_geodetic_to_geocentric(self, kwargs, target): """Test conversion from geodetic to geocentric coordinates""" - lat, lon, rad = coords.geodetic_to_geocentric(self.val['lat'], - lon_in=self.val['lon'], - **kwargs) + self.out = coords.geodetic_to_geocentric(self.val['lat'], + lon_in=self.val['lon'], + **kwargs) for i, self.loc in enumerate(self.out): assert np.all(abs(self.loc - target[i]) < 1.0e-6) @@ -42,11 +42,11 @@ def test_geodetic_to_geocentric_and_back(self): """Tests the reversibility of geodetic to geocentric conversions""" self.out = coords.geodetic_to_geocentric(self.val['lat'], - lon_in=self.val['lon'], - inverse=False) + lon_in=self.val['lon'], + inverse=False) self.loc = coords.geodetic_to_geocentric(self.out[0], - lon_in=self.out[1], - inverse=True) + lon_in=self.out[1], + inverse=True) assert np.all(abs(self.val['lat'] - self.loc[0]) < 1.0e-6) assert np.all(abs(self.val['lon'] - self.loc[1]) < 1.0e-6) @@ -62,12 +62,11 @@ def test_geodetic_to_geocentric_and_back(self): def test_geodetic_to_geocentric_horizontal(self, kwargs, target): """Test conversion from geodetic to geocentric coordinates""" - self.out = \ - coords.geodetic_to_geocentric_horizontal(self.val['lat'], - self.val['lon'], - self.val['az'], - self.val['el'], - **kwargs) + self.out = coords.geodetic_to_geocentric_horizontal(self.val['lat'], + self.val['lon'], + self.val['az'], + self.val['el'], + **kwargs) for i, self.loc in enumerate(self.out): assert np.all(abs(self.loc - target[i]) < 1.0e-6) @@ -81,18 +80,19 @@ def test_geodetic_to_geocentric_horizontal_and_back(self): """ - self.out = \ - coords.geodetic_to_geocentric_horizontal(self.val['lat'], - self.val['lon'], - self.val['az'], - self.val['el'], - inverse=False) - self.loc = \ - coords.geodetic_to_geocentric_horizontal(self.out[0], self.out[1], self.out[3], self.out[4], - inverse=True) + self.out = coords.geodetic_to_geocentric_horizontal(self.val['lat'], + self.val['lon'], + self.val['az'], + self.val['el'], + inverse=False) + self.loc = coords.geodetic_to_geocentric_horizontal(self.out[0], + self.out[1], + self.out[3], + self.out[4], + inverse=True) - assert np.all(abs(self.val['lon'] - self.loc[1]) < 1.0e-6) assert np.all(abs(self.val['lat'] - self.loc[0]) < 1.0e-6) + assert np.all(abs(self.val['lon'] - self.loc[1]) < 1.0e-6) assert np.all(abs(self.val['az'] - self.loc[3]) < 1.0e-6) assert np.all(abs(self.val['el'] - self.loc[4]) < 1.0e-6) @@ -106,10 +106,12 @@ def setup(self): 'lon': 8.0 * arr, 'az': 52.0 * arr, 'el': 63.0 * arr} + self.out = None + self.loc = None def teardown(self): """Runs after every method to clean up previous testing.""" - del self.val + del self.val, self.out, self.loc class TestSphereCartesian(): @@ -120,10 +122,12 @@ def setup(self): 'x': 0.6123724356957946, 'y': 0.6123724356957946, 'z': 0.5} + self.out = None + self.loc = None def teardown(self): """Runs after every method to clean up previous testing.""" - del self.val + del self.val, self.out, self.loc @pytest.mark.parametrize("kwargs,input,target", [({}, ['az', 'el', 'r'], @@ -135,32 +139,27 @@ def teardown(self): def test_spherical_to_cartesian(self, kwargs, input, target): """Test conversion from spherical to cartesian coordinates""" - a, b, c = coords.spherical_to_cartesian(self.val[input[0]], - self.val[input[1]], - self.val[input[2]], - **kwargs) + self.out = coords.spherical_to_cartesian(self.val[input[0]], + self.val[input[1]], + self.val[input[2]], + **kwargs) - assert np.all(abs(a - self.val[target[0]]) < 1.0e-6) - assert np.all(abs(b - self.val[target[1]]) < 1.0e-6) - assert np.all(abs(c - self.val[target[2]]) < 1.0e-6) - if isinstance(self.val['az'], np.ndarray): - assert a.shape == self.val['x'].shape - assert b.shape == self.val['x'].shape - assert c.shape == self.val['x'].shape + for i, self.loc in enumerate(self.out): + assert np.all(abs(self.loc - self.val[target[i]]) < 1.0e-6) + if isinstance(self.loc, np.ndarray): + assert self.loc.shape == self.val[input[0]].shape def test_spherical_to_cartesian_and_back(self): """Tests the reversibility of spherical to cartesian conversions""" - az, el, r = coords.spherical_to_cartesian(self.val['x'], - self.val['y'], - self.val['z'], - inverse=True) - x2, y2, z2 = coords.spherical_to_cartesian(az, el, r, - inverse=False) + self.out = coords.spherical_to_cartesian(self.val['x'], self.val['y'], + self.val['z'], inverse=True) + self.out = coords.spherical_to_cartesian(self.out[0], self.out[1], + self.out[2], inverse=False) - assert np.all(abs(self.val['x'] - x2) < 1.0e-6) - assert np.all(abs(self.val['y'] - y2) < 1.0e-6) - assert np.all(abs(self.val['z'] - z2) < 1.0e-6) + assert np.all(abs(self.val['x'] - self.out[0]) < 1.0e-6) + assert np.all(abs(self.val['y'] - self.out[1]) < 1.0e-6) + assert np.all(abs(self.val['z'] - self.out[2]) < 1.0e-6) class TestSphereCartesianArray(TestSphereCartesian): @@ -172,10 +171,12 @@ def setup(self): 'x': 0.6123724356957946 * arr, 'y': 0.6123724356957946 * arr, 'z': 0.5 * arr} + self.out = None + self.loc = None def teardown(self): """Runs after every method to clean up previous testing.""" - del self.val + del self.val, self.out, self.loc class TestGlobalLocal(): @@ -184,10 +185,12 @@ def setup(self): """Runs before every method to create a clean testing setup.""" self.val = {'x': 7000.0, 'y': 8000.0, 'z': 9000.0, 'lat': 37.5, 'lon': 289.0, 'rad': 6380.0} + self.out = None + self.loc = None def teardown(self): """Runs after every method to clean up previous testing.""" - del self.val + del self.val, self.out, self.loc @pytest.mark.parametrize("kwargs,target", [({}, @@ -199,40 +202,38 @@ def teardown(self): def test_global_to_local_cartesian(self, kwargs, target): """Test conversion from global to local cartesian coordinates""" - x, y, z = coords.global_to_local_cartesian(self.val['x'], - self.val['y'], - self.val['z'], - self.val['lat'], - self.val['lon'], - self.val['rad'], - **kwargs) - - assert np.all(abs(x - target[0]) < 1.0e-6) - assert np.all(abs(y - target[1]) < 1.0e-6) - assert np.all(abs(z - target[2]) < 1.0e-6) - if isinstance(self.val['x'], np.ndarray): - assert x.shape == self.val['x'].shape - assert y.shape == self.val['x'].shape - assert z.shape == self.val['x'].shape + self.out = coords.global_to_local_cartesian(self.val['x'], + self.val['y'], + self.val['z'], + self.val['lat'], + self.val['lon'], + self.val['rad'], + **kwargs) + + for i, self.loc in enumerate(self.out): + assert np.all(abs(self.loc - target[i]) < 1.0e-6) + if isinstance(self.loc, np.ndarray): + assert self.loc.shape == self.val['x'].shape def test_global_to_local_cartesian_and_back(self): """Tests the reversibility of the global to loc cartesian transform""" - x2, y2, z2 = coords.global_to_local_cartesian(self.val['x'], - self.val['y'], - self.val['z'], - self.val['lat'], - self.val['lon'], - self.val['rad'], - inverse=False) - x3, y3, z3 = coords.global_to_local_cartesian(x2, y2, z2, - self.val['lat'], - self.val['lon'], - self.val['rad'], - inverse=True) - assert np.all(abs(self.val['x'] - x3) < 1.0e-6) - assert np.all(abs(self.val['y'] - y3) < 1.0e-6) - assert np.all(abs(self.val['z'] - z3) < 1.0e-6) + self.out = coords.global_to_local_cartesian(self.val['x'], + self.val['y'], + self.val['z'], + self.val['lat'], + self.val['lon'], + self.val['rad'], + inverse=False) + self.out = coords.global_to_local_cartesian(self.out[0], self.out[1], + self.out[2], + self.val['lat'], + self.val['lon'], + self.val['rad'], + inverse=True) + assert np.all(abs(self.val['x'] - self.out[0]) < 1.0e-6) + assert np.all(abs(self.val['y'] - self.out[1]) < 1.0e-6) + assert np.all(abs(self.val['z'] - self.out[2]) < 1.0e-6) class TestGlobalLocalArray(TestGlobalLocal): @@ -242,10 +243,12 @@ def setup(self): arr = np.ones(shape=(10,), dtype=float) self.val = {'x': 7000.0 * arr, 'y': 8000.0 * arr, 'z': 9000.0 * arr, 'lat': 37.5 * arr, 'lon': 289.0 * arr, 'rad': 6380.0 * arr} + self.out = None + self.loc = None def teardown(self): """Runs after every method to clean up previous testing.""" - del self.val + del self.val, self.out, self.loc class TestLocalHorizontalGlobal(): @@ -255,10 +258,12 @@ def setup(self): """Runs before every method to create a clean testing setup.""" self.val = {'az': 30.0, 'el': 45.0, 'dist': 1000.0, 'lat': 45.0, 'lon': 0.0, 'alt': 400.0} + self.out = None + self.loc = None def teardown(self): """Runs after every method to clean up previous testing.""" - del self.val + del self.val, self.out, self.loc @pytest.mark.parametrize("kwargs,target", [({}, [50.4190376, -7.6940084, 7172.1548652]), @@ -269,22 +274,18 @@ def teardown(self): def test_local_horizontal_to_global_geo(self, kwargs, target): """Tests the conversion of the local horizontal to global geo""" - lat, lon, rad = \ - coords.local_horizontal_to_global_geo(self.val['az'], - self.val['el'], - self.val['dist'], - self.val['lat'], - self.val['lon'], - self.val['alt'], - **kwargs) + self.out = coords.local_horizontal_to_global_geo(self.val['az'], + self.val['el'], + self.val['dist'], + self.val['lat'], + self.val['lon'], + self.val['alt'], + **kwargs) - assert np.all(abs(lat - target[0]) < 1.0e-6) - assert np.all(abs(lon - target[1]) < 1.0e-6) - assert np.all(abs(rad - target[2]) < 1.0e-6) - if isinstance(self.val['lat'], np.ndarray): - assert lat.shape == self.val['lat'].shape - assert lon.shape == self.val['lat'].shape - assert rad.shape == self.val['lat'].shape + for i, self.loc in enumerate(self.out): + assert np.all(abs(self.loc - target[i]) < 1.0e-6) + if isinstance(self.loc, np.ndarray): + assert self.loc.shape == self.val['lat'].shape class TestLocalHorizontalGlobalArray(TestLocalHorizontalGlobal): @@ -295,7 +296,9 @@ def setup(self): arr = np.ones(shape=(10,), dtype=float) self.val = {'az': 30.0 * arr, 'el': 45.0 * arr, 'dist': 1000.0 * arr, 'lat': 45.0 * arr, 'lon': 0.0 * arr, 'alt': 400.0 * arr} + self.out = None + self.loc = None def teardown(self): """Runs after every method to clean up previous testing.""" - del self.val + del self.val, self.out, self.loc From 9782e4d9105c0eea454390308dbd8f5c9f57238f Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Tue, 18 Aug 2020 09:26:49 -0400 Subject: [PATCH 080/231] BUG: dropped duplicates too early Fixed bug where dropped duplicates didn't consider coordinates, and so removed unique data values. --- pysatMadrigal/instruments/methods/madrigal.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 007bf7e..22e2e33 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -161,12 +161,13 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): # Select the desired data values sel_data = data[list(xcoords) + xarray_coords[xcoords]] + # Remove duplicates before indexing, to ensure data with the same + # values at different locations are kept + sel_data = sel_data.drop_duplicates() + # Set the indices sel_data = sel_data.set_index(list(xcoords)) - # Remove duplicates - sel_data = sel_data.drop_duplicates() - # Recast as an xarray, if more than one coordinate if len(xcoords) == 1: xdatasets.append(sel_data) @@ -186,10 +187,11 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): data = xdatasets[0] else: - # Set the index to time, and put up a warning if there are duplicate - # times. This could mean the data should be stored as an xarray Dataset + # Set the index to time data.index = time + # Raise a logging warning if there are duplicate times. This means the + # data should be stored as an xarray Dataset if np.any(time.duplicated()): logger.warning(''.join(["duplicated time indices, consider ", "specifing additional coordinates and ", From ab600b0e373702fa85c79958d9db24d403f1167b Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Tue, 18 Aug 2020 09:47:24 -0400 Subject: [PATCH 081/231] DOC: updated reference figure Updated reference figure to hold all of the data. --- docs/figures/gnss_tec_vtec_example.png | Bin 361749 -> 351974 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/figures/gnss_tec_vtec_example.png b/docs/figures/gnss_tec_vtec_example.png index 29db5a8f6b864ddb47b9ad2d56d44efeb9967c30..8edb00f20d0e6ec4b79b4c1d2725dce5ee5d1694 100644 GIT binary patch literal 351974 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

r91wR-cz2U`Bq{JFFB3?m%V)-IG6#RyX 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 literal 361749 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

C-i+= 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/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%0Dg*o0 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

s|TA~r6iYcU1WGt3Q?koqAt;lf%R=YEx3<* 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

!8uz6s$5SX4YJZ8A%#KQKvctm5?8$ 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�@|B-zjLW2K%PgK;=?SjcinZA{Z+zQFCS znvTx&6F3}t_~rrfENB2j3(qL{pjg~SW6$z&VsrGe%amX9*8IU)<#mTNqQhkYG`Dl= zix)(y!L+t&#?r8~jq6#5P}^nf;^-=ye7K62f|Gke4YDUBd>XD^!?R9%Ujp zx5!r9jUF!iU1qGZIHhZ9wK(p!{--K3SGahNYJ9_(wz>92nTrMRTgH7%6>E+?-1Q*& zC$iK{T=F8Q*UOx?oh_J$`!yd}0 zak=y01$RZC@v5HWHo!cgupxRE=Q1DpEq8tV6vM9LN=l5sTC!P~=(=NATIwi+42xkR zPP1x_iepQ0R5M>Gd?S%30>{rJ%^4i<&M}rP(QN;3?Pqhd*;)^c zJ4)KOrJ}tvXkEKU$=b@Sb=3LR2|3)I+%2?d&(LC(?y8YCE$AwOTff8nm---gCKRxs@?q<>X~k%{!GHq5-CDYH-*Z;Mw>QM_2NF3zWMceTGJGE%>kg z4MJliqo&$skBu3N9kZy9NAkPlsOm_t59>lti;DvBZ*EhYP7lqjvFy2e3akw=#SQJ? z(n#oIj_#OTvvX=>ojI7zN`INS(G*z8d)Dtr;gGXTpK@90S3jR%{8d1;FAoWs?5e4Jvvp4P@N~HO>*Id* zgOhZ0$K%?a30Uo>y?|v!eU?FFsr-m}#Jv zl|qtAYaL^T?==kGAR^c78z9G{5CkO}ONkDTMbei6dtL3G(#qs>-Twp|w)wg21Or5# ztk%t}&J;q;cP-wyNshC4zhoKpx?YERKxE7?Tga)`NM8-@B=FxZZm3cq{^poTsytaL z-N#{xht-+aJqFT+;y(ZxTCu+mUT#2+<_6;8)Daru`_t8}Z^Clo!kkv@ha}XLg5O5= z$ZkESe3hPVu$oSEA99wmvIk6WrH$D!PSCOZ z?$cZSa+AES-D;(-HMjgPwLaW9u?}y^KjbDRZaT$pphSwhul2UAY!XKOGYt~abt$|c z^2W6ZzN7=p`fT7O2|lqlnVJ+DFxfoxFTeUe#EmnUv~_mC&3^K_K`2-wJI_|hApI8W z>#|GQn-|7}a`W60ZAKQ;2^peSc)YkTb5QQDp2z>bwiY@J1q*!Ooo<-^1Unx-c;j0C zo3ZrQv+D&5Qq1ahe@j9VjRSRW;x%SJ$Bmad*`Lo8FnKsI8xnHyZHuBc@reZJW|yJr zPkRpiEp5dS07|Xvd`j{8_X`;iF{K&f!;(!e|nDnhnB|(-Hh+}dMzH>KU z#cC1QnlzuPt6#q}Eb*D@^GRuSO35Qn0Sq`NmxHt9p0O>w%RLf)%B(zhIrZ6(!@re> z{ODT+24-pc^t=b?dluAgO+UisMz4)RJXf%frW<*-!-2%M&=u&9bIb7wSpa@MP#_JV zoc&XbRy8$*7&u_W6Gs5fGL-=PB+kGQ4o1441k!Yk;eU9srr$Q?R2uJjuULyv@}X&p za!)%8{yIfF+ty~D!cwZ011QOobJvTaqu%TJ^R;t36MN00^ywHL=btSeuMjvCau58! z$mG(VZ&T%zQ8434Y_^4e#Vxa>a~U4M!SSO|)AUl5@ppm*@{1sLuD6J5^>-}%-Byr_ z)?rjoUF4xK11H?K7fWx4z#l3$4nl)Hzg>p8K1C8jg#9W1Hy;}Aw-)Ar75LLfdF>#& z;8J8Pg;;AH_hm|jR42qE>;j+D7PlwW=hu@M9DOFsP}3~RpGd>43Seb0@}KcX%B?4A zP2B@nYgjL)4out`<(gFT@haRBXju85>i$zJ@3HjhaDl5zq_z#?8%(MQ;z!2PMz|rL zU28X{VJ`;}dNEdW$5ODZ{@c4h^C*QPomCCvn%$qU49moR$w2hLiD8+lJ( zkfuzhjz1Keq;0hY7<)d4p}3)X`pOk*$AI&-aqb-P!;KzDujkHQSt-0C^KD9g6lC70d3tu83l(H-14IQ({ls6!}x0*i)RI zRPXvi|LRB~C>kJ9bl?qX{E(u(Kg|%++GYv zP_bpJ7^8A5p|t$2QT~!s?83bxdZ(|y)ZA_?kg3{j=d1qCT};0ZqcpRvpZ~ruUg&~m zGMy`o>iA%Kk9A;L_Owf4SE(&Jw_t|DfLwo=g|E1x5cN_JBOqWxiah9{BkV$QJx_1ri5HBxe5(T z@Yk`%7S|gs>z$8>>;n((*-x^g zxQFgQcm7GyUpMubG$&55*{@~-$8$`N8&J25v76U;4}P-{`J1RIubzYtL~A(Cj-av= zS42`O>%EeE@*7a4MnZKnde-k*C~|zPmOl1Qce_QdTM2TQVW#a+fL!B-g8!qyJYBsD zGp_MH^!+I97ww^^3WfO6!&uH1z=Gc;26qz6nJLikt2>Xc)~zjtY^lMZ0k3`G_AY@F zr|xY_IR=*Rp{s^w>#FFTMu6soiLH;&RZ#k;q|dB$+Bt}SuGbU_FxlCgqQ}c?g};mA z=wCEQQwoI?R2uB};Z*(GK#-v}uO&s9U>a zz1fOIdz(xHb;aQQ&x*5E0Kqti1=FwOS#!124CNdAAGRB6?Du|u>C7LT@E@{u34G8V zNJ&Q~K|Un>>CAwPXsj2hXMKuoi7M$M7{nma+Qo*#KsDEkY<40K)ZJ*wb_)889BmFT#85(cZm!Al@8KlWSU;ldW<^n&$!<;2;I3JuWuE8_PmzM2y6;(;O*yaoR+0C%9r|U& z0DDonp_rtFE@2>TOx_?+$)$M`3T=IvGVFU2R3%aprTyz;NGpJfCRU%WF}BoxbY zzB7I-8tT&OztbTV`Vy+9^pMR~R?6g~dKhbToV@!3ybDKD`l9Y9-Z|d=-x2EWdpTY! ztRM9BH_x*z{8e33s|v?H+Ohe=rVkNJnh{~4FaMX1Twvo^ga6Zpe(=kQu}~0Fsb4kV zkwdxcx(P3e|B@7Q<>PE2kTQFuGb8WQz9d9nKeU?Ol?_Q?twl#)$gKpuoFjZ^U44`g zu2GcI(Uq{+6}k5ZmA7Tmk6os=*3VXtT$C1#G3IzT}|uz)`8)!$l?(MCHfs>jm1nQTP7v)i&f*W84@sMS}4Q9%1|qzKVfm+ zlQJ6Jhk+SXRrPvZKF|uHqJ;A0>C4MKFNFuvvva&wIUNuUzzA~m+*+=WR&kGeUpm#Q z&!Vs8aHe)W;hIosNjI2$i5 zz-ryztq#upDshP}+%3tN4GhM}$#^+qL@KF=MimOaY>)`)xs{vQKMSh zP-p#WQ5;628+4$}u7XpU{x14atCrsVAtukcxdLi`CsL9hN{a+#Qbl&}`+dQb+8 zj!M?_h|<9(ENr~@c8chWxT3DL5GO%K5rw1ng2jl7j|;*Rz^0#Apur;OBTcRr)eQ-< zj@0Jqa7g^35)i&3BFvvQw2pN5zd9LRQT>(+Z^}|@WuDc%_7l>ysSYE!&p{L_jdI?` z-Z4CqcJtRq5(Eb({fJv#<-X==yY7L+SEyp8Vz*gM!%wpc`+^M^`-87gLQ;MVG1Lwg z3KMAVS#}tUmyVU^5s;=~e6cdSyxFmQ8O6+e$X_JwbVFflz3nkOC*9W` zs{USHt{vYoei<;o;GCr{v6F6)l~%j)*LVp6`%g%z4+xL&B1-Oxsq%gnHlw6hdQHf8 z!bgNGFjfG8z>f+QHEfc{KJ(U{(c{r4X(DcDMK|VL*_toK8nG4|`KOuGrzzo+{}+{j zsz{Z#!k)0@a@h;vl4~xM`GJR%KxWpzi;Y>2#ZQ?W_dG@5gHlUxTKs>CCI0+YkybzhP5DueNV zTEJE0wzSk|AeRXGRTWRX{yLS3hm$CKsH;pMPFD^07Ehyx)IFo-|6%`iV$Q{*Y&TOJ zPl6G5nS7m!k=4YTgI+5yGW$240%r#GT7Q3xc@4$`7+q?LQG$UE0_o4JVEU^@UzxVL zwkugC8^Q};HyWW2`xp5;6S72R%U|FY%kfdd)S;#xJn-pSaCgH)xq>A~K9FtG+2o9Z$i zn5M5BLiGx*)}Ou0bFjOdJ3U&qAq<|Vo^d19zciWNFffu?%G;Y&mqGxPMqj^*Q&JcT<6X(3zingEx59 zBXn!-`|+!A>AIfT3dBkr$p9+(@Bkue_G)jL(jQgsG_e5gOFvxv#F0HDl5H>#)JTw~ zqRTeALp&BS>%-VUPAw_8ZTbUPWl!Ycb)hJ`rUo9P7BY8f3_b*V)qqv7s?-}LlT?D} z$*IrF`rEkQ*;uxk@0{^;lmCdN*dQ({m=vW;OROq(M)5D=Cu`T^|Mg~o&imUvDXf^I z2&(cgivYSa(x)Os$K3q+kKSl+MC)qoH4aXY_~)NAvSNqVe@c}1Wt$qjs`WLSmHA*M zG-$u`*=>$r=LxiUSoVo}Q=Gx)57fh=IZe9%Y@+=hf$2icOTWV(zOmn z*}EUzlw}1>gWRksj&P^lw7~6auYHfXTJquTv_wy<|A7EDSc%=tmgcOrGGD#t_SS9R zpeRn_xSJ*6p?R8j2!3>Ik+7)YJ}z>}%Q6CW{B9cr)1Pr4N+oNkm*pB@&XUm#SuMus zUKV#&<}wQQ?!!VZ@&wj$`1|+2-zv&Mke&_BV#GmLoooc#g4}Po$=afOCd`_u(9e|m* zl!^Wex^pq3;?MA4`4_s5!z(7{=>ZU18ar+MmrirVOI>(fS9sD{!qu1( zY61Z%p+NmBA5KU+z@oP*p7yx3h=gaiYNmh+K(BGm>~UpYMaQMDm(oi9zYD+$)LssK z*WdZRz3)@CuT|zmr`Xy5owHHE7P86WvR3;>HN8_NT&Vtz=MWRZ-u9>BqtX*{z0&pB zjd6!nbH1G!=91NF-dDBcMYZieXm`|$mN7=pYyVY3*H7=zkGA@Qh3Y87jfbE%t+r_C2PVX(Q^-lMtn-gU%Y5Vn1}Ggdg5R*0nGa)nPen(`&k z4z~3K^k%dHaTsQfZOzX>cR|%?JcYg^D7Eppf$?(|$HPUO;fJ_4a6}2{yM^S>4t*gD zigyI?x6~#2-DZQdjm}QJ08+T-%t>Ad@M#76rTw3iwcPhv(s2BpMf<>%p_HMPB>Z`4 zkkyR-LlLZHJDtFt8CUBo%5b8>1c$NZr&%8^t21~t5yf(a6hF0_UjLt` zVS4o0fgZqE1gzD%S~$096_)?rJ;!~+7`=_>hFmpC6QDm%ssGS*PE*)qKaj8wpeC{{ z2z~!HsORMZ&|Cb3f1ALdgc$yO%GBhZF+u}FD zWvd9jW4M&FJ(VP$f#FNt%t0=Gk{}CwD!gEn%nWh&8eL73RnX>cs)2V1-==!CyeO}+ zoRYs`RO#qgS;3>~_IlTCU2LHdd$1c0ScTPrNg=|46h;${@)7=Z$C4-#fcW_wZt0>e zMqEwMqVKZ2h>m21rI(UF>1b>jW1rvlTRw7Smwn7AJkids4mjGKl2psX8(im{zL7r6 zZ(h0EGy-xPVb=V^IX-Ni8<*e`q_52T$oiAV{{Hz>XB#aAR4{%{P*~}v!1SDYoAG_F z)bWE&Y|=xcY5A@Ws5MS|9CxpI>XSMy#)?VBr#cS*Q_G2Ti|?iS&9?Sun-&?GT7jQj zv&C{ISTi!$!JFLujlvy?4N`w_v zQ{a*-!*bxKEM;nrKaB4D!~uTdza!{ZKFvQjl`0tDx_JDuF&YX!#*S_psd{tDq70;>_it*D>oNUZaMBL7 z+1_PKpa={z+y0;M{L+$mj`Y00=BXeaT?5i%3t7mBi|tE7e93^&2rz*yj30{qiJ&wH zR!U2P1T208p`gj{BVh=VPI&z=^<`ZWSx9F!oUz&Lz5dqH#u|RplWS0UON*CqqP^4e z(<1xBUVvb9noS53GpfnINR=8s$uF&U5?^DX%HvB?+5bIA2bZ&H7TA&{Eq6xVd;tbWZhZ%6N{3s zP;iVA!Z-e%CtH}OB-cIFIzPyQpQ`&Jd5EqL|7WDdqqe&Anro|8*lVw_*-}{9>tP$O z&e{#|+KK%a$wzyI7oXP;AD%6aX7v&ea>=Up2V;w*d%4 zb?UktUp(XzU_NYSb_wr!6{Yuzwl|Gczu8ZGNF3?<>ULEqNce%R7P3jFRP@H6n0u&; z=?uk~*~513hQ#$j3MpLCvd7lN59deH1jg8TTb1eQZd9U)27_zXDW6*4`px7>pLd-T zSw~qS+|6^sb)&f5_LD9X1l3b0MgU$%U{*uK z4xA7$R`$O$tJ_pq;wJf@|BMVm4d|cs$yeGw2f4eyXPTV$TI*N3cXX?Jra;B-?1T&( z{Yc;bkbD*ug=cyozQmURpkbPXJfQ9-!DwPER{iF(sPUO!3AK8#ZdgRw^5dE26`;7= zwq`vI+ZRaFIU=iF5}hJquq2+vkcpOlzxd%w*XvL57-w! zADCURxu@5|dhpX;|^6Z*XXGY>M=(Tf(&ywCr zxM`vSMN< zciQik3=22fTUfakw3QTjD3#N89&rRRKro!$ohHU-Ye)%dtN0jDtU_44Lo#NlLJ*bp zdOwN{-gA3GJ$k*q2nN#Zl+t)qpQenFbfkQ{9DfGcZUz2;Do@4)UGcD4x_!X>?^{E6 zWyy*8u@kxEwXa9zGf&xj5pSHhEVt7*{OrE;ztQW_lHUHi%3AjHu%{j%F;Kw$VEC8x z_?|*YobSmWa1C3@Of6wmmL>nLYB1YQqt$wjh5PV_aON2y$uC7SX7_wuiP$rcIq^9RyfAlNK6Nh3?5uY}KBz?lv-IM+!2XS}crAOfr@t5q5sN zE|Lk|n&-|m(CqUIW9^2oYR<}jL3_f2M6L|wygP-j`hKKsR%t0xaNU7QQ8oW7K+RbM z=!N_zq&&RS&nc?9g!?Ap3-v!3ZZACDh!r~9!3}nFy^R(DsZVhVfQ2@wGx4XmefJB3 zpjP66SZFmrS3Na=YzF<+J17=NUX(dl{@>j8b+ah<(d(I!NZhp=5;0}5FF3)IbjjKN zcHz?j@M>pgUHW!>L!Um^k!$hk*(l=BoHv>EDlO>d($>$eRt%J}pQ42Xq`_a$Yn*p$ zsmu&KF~crbW`7|R{KH6Pt^BdF9-nn(olI@V3Rs-y{(&DYwK7o zMCbp|SM5DVDMF4%E;mM6UJCf|8LZlH>jX(JJXHXVPO%q*Ogk(P9{>#mm~im3M&gR$ z&Fx7(>Jo2@k}aW0_eY+s&y$2f8gpcA+I(xsURV}z&9y8te^`Chr=?VPC5d8`{JybB zudSLhOii!)Wv97H?KhTjd?cOF+NCN#S2u`6tMP{8z=)1!V zPGUH*QIHUkQvj+ zN294Ls@{SPmaRf#mZ2It_PAnBGVXAAI^b&*@jsPzp#Ig25jV+qs_n0Nj^CX3T@2*D zmWko46RTT}%qjOeBS#MNj+#Ckz!koHubH(*sLPA^qHra|7^O0zMW9oPaQgaDb7$J_1Ff-V~#oBYhXLsMH2`ZH2YQR z)ucxLZG6--PE1}z$=HHqagw}33z7;bY@q#v&#DZFT*BzHUsF@;^U-M|3s|c_k9Yh? zV#nNtfOIcYQg^zaVUESCRkO5Y=?vV7=0aj*(~_gR&9SN9ncVxItq3&T1_~$rrOlhg zh^bAA4b(Y14L1MV#b?rfrVRqBrdmEp{}tMx>gyDm<)d!@CF$#kfDl zK96(iCc4ZKKe8Ey!3IYQ=I*OGnY+`-+qqQHlIwkqnJjka3>Y7k%f?G9P{A5DuXBxk zm<@v`WXMaRmkYqlc9DF+y?>Pp+$p;=eziG1OQAzPdIu6M`x1bbli3#amMdE4k0sUD z@>eM{jGID4Qukl%aWghOT-2)gm?(Toj2jhL-5a=GW^Dc&^yVlzG(^XtJNU}^NYCNg znhSo_gNql0u={K27*!(1hQUi`+hLOV5Ag~9A6p_ASl?;<@8{pabI`ZoEFql&+FFtNK1oWnV0TV)OJ zOz8#R$0WePC(|U!0i}ZsalMMpz5Zdtw96 zsPQ;$YQ-M6jwS@xeA08R$*$ZBg*04M@5;B6$lkw=O&@So*1|*8eFfiY(M+{kR|l)Q z<%n@t)yy=cT}Zg6i>Bc?HCpZIE*8Od{^n;RyyzwOFIufJ)to2?uQYSIj)Hgk675$XrYy$VJV2zzdY4M{h>{8B#a&*rK}axD)m6g*=lD(-{l_u zme7L%p8ve3VmNq2oP;ZOa$INzP2~U+QR-F#anO2!Z?G<6Cj1JBs-c7M8KC5}Pn3u} z%bqD@{OX?pxNfjz*{)yaZ`|1Pw-sOryqi#~RO!Hjf%E{?x*^J1!B)c!U@b?qZ$Lng4j=zEK*#`;dLpG!l@emq`&ee@Y zuI>q24Tx*!&EUt+Zri|~y+F!3ggPh;J~R|gZ%Aho>XAC_LUQqUh@{Vr`5v43W~k|f zB5LLtOB2Df`WfqCSCZG*v7}G`mfXWF{{Yu%e%yAAyZrOeIlkK|m zx>IA(;%-I9asEWkiGFjyB{kibXNzcMa*YkYdwHEp-PZpJaWxv9tpucU!(REcX$gH# z3!1N0K_#{+=*?vX+xklidZ}#vPX%8p^moXrmDw5itL@hD;;KmFMB-7?db3x1UwQ|U z-icJh>TE~Lg9=&_S+uSS5^Y<^X|-Tzuei#BGH6(B>_?+P6b0uB&|Co^HZ%^ZO~LAm zZ@Fi4R&%cVgErJ25x;d@1PVs$Y|24rBzjYVh1TlIk9H`F=~#N<1|6ejl4I;*?4KWO zFW=bMlM$I_n^L_h$R$Wm|5`NP;5kvsZh;745lmW~!FuA0k*co6FND*&e#GdLZAJLu z$E{tj@KutoZ_O4qgbP9^C8Lzhb8h!IXmg`f8O)N7zn;9~#(qv^aKlJMR(oS9l52bJYQp|Z4ckP|0VmX@=!G;@_&Y7X2JFtsvM z#F2ZDnOQl=y>a7Snc~JRZrq3nuiqcuf8spPIp@Ca%NTI$V1k|hh$Rh>YuM+pUwh`e z+5TnK8Y~j3rGqL4M?W)s%ToN&$+6XAjB4RPuK=*_W=tV`%~Y-wZ4iEI37qsVB!xaH zO=pc|%&yy-t(1?n$swqjCXRx;-zYokM~(|SRo@CG zG?3{hpQ;QG+L@tb4_Pm*fly^R-3MxG$$`BARAkGSZSrm! z2T3WM+bM8lLMJ@E(41bRJvOk(GNG*-#Jio5tt)J`xc+91H3UaFQQ{IeFvVoTW4|H! z#%m2)0~I?Xy=WiUK@14;{Ttci;2S@!@MMPF_PkSw1DYr*%znrzReSP#A z65zGxPv440NyYLqX)<0G&|k%=K(@V+)D3FqB~{G8NAz6EfjgZ9)04d9>AJxnmEj_J z&S-ju!5Tl-*wz{MuqRo-9|rc`h>axlyW5-@n#d^CdleaDa7Dqgq@i$va_exffSVqP zpWt+1upJu&^-5ng``^UyiO=4~z?@~wq`t>HdQT%t#;hl8vdN&8>k}s?H-F7SGP`fzrqKa~;uQ}kZlWUEEMqb{a z%#_xcM(l8uv|seAC6{y!qMa>iGnhNUV@529u?5k55R`b7>!eo^TU1ht5x+bcW;9Cw zkEDjC|7R?$>1QsaW|FW18vrJB<|-!aZ#^R)l*s+CJfgL)ixEut2qJlIp}O(v0O~srA-n|reFBXA%FswIt}y!ib>6A8 ztzThy)hWivk>$y|(;T+e;sG>Ou71zsm(z`&o=IJ}e!1a1*&-Rw)3g{wjvkC4!PWbvSCr}#zKwpzMRpM7Pq-T0($imv(Y(3Dr4XpMH&|d!?z9(w!2GJIK`P0t zaQftaw3BD3Ab5L9SmW@aBi14&lb|dMg<%4NhyC`iOLyWRd7eGWPnLd%O<-JKyL35) zx_EH%QR@NHsjmrYE3++U=#req$~~OmtgG^WZm8gVcq=OtB-^GwXm9-bvp=li>9+om zooG8KG*WZ=UoGkAB=b&cj~!G3Q*&cK5<#~ts9(*B=dK}5q`fVAv|Inp&_mXqtGxu?AX2Mm5D?s%~OA^AN zVja2TRL6t|eZItAf*g9BY*G9WbVDxXVQd+5>T-o5%q+EtX~66cZv@~ zJ@?XE-z0fzO+qr7s507s5$TknIlXK^!@mZ%7?a!LLYHq=MfeL!x@B#gF28!j5wWgv zCA-})I0nL)KGXL1l=*r79Y?)vmo)zRa_e8#U{t-8;FVy+UFQ?{jF-OWJ=c$ddt|?j zNNX;2u?xTc9u;|LB5Xc8_|(6H_2O@3aF(LBGSX7?bNxK3uDy_^2gZ-0yaQ4o!pn!* zQp(Dpj`FR(MCRx$OFGFdpy?63ItnZwXf{3z1cg-ps$+V}w63sZxHTTR>T z%RlT>6q%_>A1mdTvzqqu&{VyMJb|w8;D4lqfCESWXNk5$7@3`3k*Q1ON#ViwtzS6p zgqs$9h4_esNqmpkiB7$`Zs-13xW&*r-8;m&|8fw~e&Gk##lS4?mg;nBL!x!x&m%FP z{KqiOt>j*Y_4cpmL~ArxhnDFQZ_a)liwgv!7h*LTe(3s*L&645lVR+NK06o^#aiZH zA>!x0WXB-hk}aVo6H}e>xym}`oRX8AIn2`&g<#mGFXR;MIsBqFFNd10r>xoXXrXih zTsVbti*fR+buAZb`GM8mKe)S~(DpwA9@JcP>BN^^lV{+RubE_nqwwlagQY--Uq_+i zG9|~hIW(~N8J(7)wd%_-1NWi@g#+6PTxD7fMKWJmg&xn%rlwZ_@*%tDp1Ju_&}OzE z36Z=H`h?U}W0D|D(imX>ui3iRIr=lGh86lCyV8H3ri0Va@MqY;E>EqDqiJD5wCOO9 zS#xAn`vM!+NShuE@U`#GM!J9f%$l-w`aHk-RBh?%^k?PN?T3pu4i?AHzF^5fJ6W=V z{=2+EQyWxm!e~8qY30ckafCHC2{N09CmY)+<<@&XU2Ir+{=m96YIw8XWP3h z1&sPx)fI=1yO)##i|3zJVjj}s7ccr8q$|O0kxGzVf39j6>mQwnSGJ1X+mY$qIc0j( zc7jvdVP&Y;ZvZ?-wKTF_y{k>YB_(O1;A~T`!no|gw0bVkWMY+32CX^zD(9OFkcG!) zwNXgz*5`X+=^sR(;Hbfl!;n2_D;IA)8`Q3n0`k}@Mit}u(hBoj_E_=z zZ9<|xT5JZp=4t_NR|KJ!+q(@njO2y1QjI#Y1oepRSF9x8*n+8k^m|{p8r{0M16}HE z!xf)QE~OVc+kmHNJmkIdr!``j4t9!>L=(&z85oe;K2*EGU~1sI;_k49Meu~ zqZDD!`fB9x+?VV_;OrtiRQ`1+0F0an*|<|`v|K6trnZ$#U%MXyKvP4ZM)4-u!$%<8+SHo|u__`E{ZhnLYU;urTqSDfd%9i2bFuq`yyE%us z750KW4Uzh<&!2MZ5hLn|EGoldw8D6_)Msh@W8GH^`xVtVs$pU(J0U^cb3dKkN`YXj zCrLs)T&M;Acam9fs96}Oi>eD!I(=%VB=e8nfg1mmR#-OUDj9ng8wY=g+ou~aZv4*d|a6}$&{Y#LwO#bI7Pq92bjIUY# zPpTUdX{9B)VHgv%=K&!nr8u5L7Bm=~w}68Y`Vuxt_UVsivagn_D&27Lnh!Rp{`JSj zRQrhb)fh;LE5ZBx3yQCvr2}-^0W2v@$3H?@nCaa82uu79{*Nx^ zNJCZrVvd@jdcA`B4R?ngQB~dGU+a{Fj{!?R^~9W5^dN8)q`60q9_gjCFLl&7;V_p% z|MA$as35wSwp^U}nr9+odcy&xg>g8(0ss_G$vl*|U^RcOEbYry0NkY_#5hrOR zq3(&=gRr)yQ5z_7&7ZB^nooB>j-Hg+CK5J}H9ZGU%eRjLJ%{%C2#{N5z8Hi7Y`EuEM>VVXy#H$K>Bkr-Qp70os-;kho}@YRx#w> z2oBQF8XG*8cUYCYgEdYUf`W1B~FJHy+CVZ#z)m!@E5K9op|1l)TC*kZ}(j@U_|=`vF?! zUZ!Yf0X+9ZjMVRTrS$Hd^7X;@oxTR2~A4 z#;m-9ZLc2rg_2ccRXTE#N+(it3$*eAcqUpdvuGF4^v&}?&$aUh|N1Yrww=EYyB9>i zaw@F=`eCi&$w?jH#fLYsm*WQc9_+Tczx+5KuB+shj zKXqG_X%ZQ7Fov_Q*b(j>dl7rPt2SJ}QRNEvK6mejpYI|cxsG!`$XvoHM)vZ)RqOiD zcJ6wyKau015TFMBrK2lzUQOnc0P0BT#YJnBkDLw;`SR_j8Oq`bs%VFhlONX?N}J<> zN(S};fYm0)_3evWzrsWPmwu`yE@xW}n^7yf3J+Tga-kDCtf}hE+15>v=GLHbuG3QN z*w|~)Pf$x$H)rthwBT1up`xGjHWx5aE99vv@OU3Vf|@-bx3*_0p<;J?teGuW8a~@% z<}do>KutB^!Bl_rX0(9)>)VGTkw)%)A|+oNNpLj@*~3D(qEu=XmoOp-hR71jXo4aG zetN%xGjaE0tpqCC^ab3LF5&fQGTjpn{jp2$v=Q$Ceg2B@hSU(fj)XcxX90Grg~U6j=J ztHpLY@5ZLy>3<-HUe0s1Z`d{W@M)p^w6Qk~3ON zPhI=!e32Y{F6gEKETOwQi8|=YX?*y1+XQ~gj*Fe(UE~B$jf84jo_*-n*`y*y8>d5H z8hNy_x}(%E{Ly|;B+ME`TOjSvd=jljueQ3md%n77jT3RdbT$Z1kHKCgZaN6zi}u2@L8Q&MavRf21a@EEHtPNH~UwU+}C*QG!`*a`oPTL z_xiAPSx7fqvRuW>f|9ZgrmwpRA1r34U&{m^gh{?RY7CdpZQ?L0i&}vk0Vf+ctkG3@ zwYI$!j+`Yc@-De$Fw*K}{g!8*vhtkmA-N5{(^jK4y~O{(6}J5=?Dbq}&%wV3h;=LP z{r2;JCf_qgNdy>tRaT%SX729v2kQQ<0nDFVCQ&Dh@?ehH=6u)^h7#_gd%NUz%Z`=5 zMx=d%gx(k@Wc!u_=>{*;jL$vQi4$9==@~J0?@m_u#3^T(YIvn(>k#ejZsHs?yr#?? z8gSRE;$OC7dzM>FfW9=NNU$OYayE7Nj%l&W4oD zL|B{$W#b_;-D-1mV#>$$?_UTDPg1zIhes?FbfZr2A<(a+?9-EV!X0b&PkNA&NfT4p zOLh%7Sp0KW4JUFRwyWcGk^HrUqo`ED1Wp!}joq1*hiTa$ zYSVbaX_r<8#7X9vk_R1J^pv2X^BxZv@{0CiV^wGkyxiAgVsb4;+;mFY^@OA&)aUa6 zp`kn>BWbksp{Tin4UqK>z#zW+^qk=SDAs9R!i!zAo9OC)qva0j71HJ=I=bZe)7oHg zWu)lOR9~>TpdqVG>xbQ$V{n3S+@yH4OmE2KFtogh-FvnmW&MY!{zEqGU!QGV;o6e@ zikSGu)?>onXvdR)EYgTNbu6*wuIHQm4sGJ-6=zU}dRaaX(FvD8{BEx|`@~!4nCU2T z!UuRG&Jf1~22|(ol4ut{q6*GrxGS1|8_Yh6XXmRZlR9oAPta6KoO{8P}PbRz0-B8){s(GQfqjCGivD4^-V*$l1a(6lIqYtG!07dy?%^7C&`5~gp)vXDoM#bdk zRW_(!f>x@W;6@VS@UKdsv!8lbHyv*4`Y3q!s9)M~A4xlmoOkvu0Qdb~FSQ;c{vJ3T z$o!Mdl-UrsD^pg@T_w4$o3Yi-ymQS%Lq_QoTdWr@L1sw#j>guM*3b;e)b9&+bEtuL zVwPL}tE#f0nc4>hSsC(1#{Llgr^=zHW8beuK4i9-v3cEF)BUh6E-%^-2t}wjR?)r= zYJD*%nG}3y<3r8YnE{|2UkH@!ng0}+Bd?hE@aT>=t@{cm*6CZhyW*SG;qS`qlba3P z$TdV%4|@SmG*3??$HOzGLq^I8?gj2;S)G)$LZ|lq)u-k+uF3z52=v}*(B3M1jrz~W zt6}>pb&w6>Xs2s7>1OBV_Z8nG(UGxcKYjr9(ryi9H@zvgX&}oqG4ZK0n(XL&6Q7)~i**SznKKT_v_8^L z7*WB3DUV;+<}5)+l&?>GC+u&W?7w8;f8)=e-J_0b_p^G$b=g~ZR>(P6UPyvalH`w= zxZXA>p|b)*C~ScP*_~KCSWNsX9BLI}Wc4Rb{e*-(-1}bbjeFLAfjE9r_xQClqjp(XSzq%(G+^I<5xLdb_{%-7=i!{G#67RJt0u*7B?cqA= z8#Q-XPLvhW1i*|ig{U+Mw45xqF8|t3F|$F8BbHAsmJ?Pq+silO=o}+wz4jykvdEUA zMCZ1q%`{mrsl)(0zL{}U@tg6+HLof)#e9zeu2OqTc zWdLLNUKOe%uaUnwMUCtuW8bg7tcDatzKh=7VG|ZA zsUL!Ws7$#2LgBjVzj#N0(J`Q)rvtX4lpEd1G>~+6NUyW1um44uDi~4wW*OiRJQ&n6 z5HuUF*)S5(>+%TnB>+S- zdOIF&ebiwJV#?t_GkQ+4$0n77Ru;^C?#`%b9ewcE{twv~pq_BduGze1RkkXE{6T=Z zlWX}~eJrx(OG*t47?5Mcc!x-n$+xUqIxTQreWK$j)mG15JmAwvuuW&&zrOofKA~Ar z$NA6Q8zt&>IkSt=X(y4k_rf$?DC3Ok!*yzRlAXm5e2I@E*>XYnyHgL49e41Mq^hUw zsvM?Xmwt{cot_O1yzfV44KtB~H1w4oa|9abXgkytSDO6n7+q_F0?s`l(0_B;1@=(P zas!U_D=|*4Prvs7isUi`s)+$6VNQhZ1Lc6i*_8u>b8^JG-R|a7mIF?xfj4?=CqC+L z3)sC}(AK6zMKuV)PhChGDbXM(tcWmoqVtM9E#v46tA|$FO`+@J_A~AD+k&&Sr+gY$ zssE#9LCg(gx6RT`&8r6#9k?2xu3LwYCV1is)Pi)C5@YZUZY@;(hIv)%^+~v@N|OlaJl@=>~LJ9Q!aFnI68+p7uGX+cjK?E`Hn9}MezW#Qw7RP4}avJ zARz=9+6))Gu=KMxt$ZCo zX3CUe`N0nBqYB&6n&Zn#Q2yY1Wj*G8Q%`uTM*%X7zYjV8RQKfZj-0a&=tdUgbu_eI zDNLrB7_L%`5={0=+0{JeafOc>5c6KxSNPU6gEm#qOYYSkYob59JejTP!U)G@b789) zeulBFBc-XlXxRF&I>k~i5G1Zp6;aHn0$pFhjSA=G)u~w@WZCiw$F&XXb1$w&VPXcj za#lEjfoiHqPXJfXTO6~V7wzy<4^w#DqjscSmc_~&4zph~MIk&+VbRp)Xl6fu?M`7l zVRK-qy5mXJOInitlf%JjU9W6*Mn>?exSQis_@CMXIi&m>QBbM<#(#X3%dO!GUbgwc z23-ktKD%t0Yt9pi$Z1X*}a_QY)cmI1kOom z(~0nBWZW|Z2#QtssIire%DNv_(ix`jRoG);Ou|G{?(C0m%9y`PcQpsd!eUUBO&-6CH^`hnZ2e4eHz=52Che!4FPDxuIhdSYwSU#(k` zkWmVgZ`xH4{X3JddH4-;Fo%{4;OANu_(4r`v{3iqy#)5B0225D@qxXl!;8<%v}^?T ztSjBERH-jL1Cx}5VPfAm^>pP&J;it1&LuQCk-VaXRaa8|A7+G4>};6UtfRXNhR{nt zeBT{7?)B|tEk#xaj4xiRY!z75eslNxcif`?feEF<-kkuaso;}<&!tsziATY$)2)q%%lUf z-Lu|D4qGIm{>{)ZfZ4)yjwd(x7;w#E&68P&Msg?Y-P5#~<_f{mF9e9lQ?ElD!S~J% zVSqg=Cm|{|mZ`!OspA%xwCle_PVi)~kBOZwdDFVHdZYP|Oho#@$nkDA5M2i-$D9DGz4LK}^ylGx)Hq%KS7gfd* zqw@H8T39}4z1vgydHq-UtQPycAgja8nOFmAYP-PL6C9SH8Jvn;TwL2UyQk0>@ro<{ z?0Bl*4TFr}aF|2#xHHz|a5J^#QwHJ6m4ohaiy*n3z_Wrhx8X2n%7ap_qrTx--VMNi zoYeZ?1EyALG0-#VsjOM(+vre;6m)c+-I~>wSOrbA?%}Nx?A_No{4KN79w|G#5I#tE ztiYa9C?E#8wWtbra5LM)lA9+-ukvhJAC;-R|EPky?-&vuBt7K?5d7Trw6AE4X zf^7Ua^%}@Yu0ALr6sg`@?0$P|7B?||?|h{-I*_of#gBNAj@?t9g`L^v#+SSxe8L~j~ z8Mmf0ygsk={If=acXL-eG!gw&grKgtd>Sd1g`y<`*ZL5%DZ6# z!26KoDMn!u%@Rswig!l z!fgQ$+t%H3cR0(+k+6eyqn>Uwyrg!s)F)@Vqryk5b}4Ws%+EkQjPhp%q9NR~Ok6+w zk@uwTy@2RL=`vIc^hdYR%gi1%*^f3GBMf4mjo@kmwfXhDkm#oSlVbpWEnQFwi1xg5 zo)(__h4E%Xes6OBSZ!`Lv!XqvdaF2@>q;z;W9O;@(w5xS^d5hV1s#n3u1hEDPjREO z58?BHGbr8^Zz9JT&11=};FSaS9U4GPcoo&thgdv@Cs1wQt(e4?g`O;p>k-lzr9tpWwCKZ>sc$mLW6T@j4{^E9lqN7*2OG07Jp6oG3S32%;IJR64CPLk zpk*Abu_y*T&p+|vYj6D9eO322&Ur4{N6a$NaYad4Fl;37X5!JP)_IsW+klaOuy=#u z8xMyu^4e7_uLjmfa=A(aL5C8wo?g|L_8Fss z_6DB?_C)QU{Gc%9oJ_BaZu4{t12h+(R1Hm*8qKGnuDgwTDOm{*;*-0GpSi87mUDP> z2n8Ec76aZjo|!dmzYW)KRksgr{=M^rX#1M1G(Ot;X67@wwia697!RqnPQ%AZiUQQfa-_0uC2u7jgRo!Nx&YWa`D>w1$0(3E`qPP3 zz=~0EnkFg;mE8pz*b6$P>2o?sGd%_L0+a3;Y6KWI0hxJ^_pW+q3qfwb^S5_>ur}FN zQ7srE=4aVTS-l~VKIT4zlcziF>~y#>_2v$%llfkBXb=ei>m;T4C9DBz-b*D*xcNi$n$ZH^4d?RTAj* zB}rw}TPWR=a7}$05VieoFK>4m5>s0yb|`w7r9|RQ#?#w9J{X5ZBzT}iD^Ra}{6yHH z0E6Z;-F=H#yKR2iYFbR-pP_Tx-`!?D8Tq(yTg+{!5f&rXUsb~c%^pQoO9)s8%7}s- zdjn!sV&3jA_j|khyJ&>-pXp8J=n#kFVwXPR&^r^SQvBU*%8*oCv2cw7xKDXfgK3-U z7T3LKsXo+8+`M{rVn{-gGlVT8?f7*2bq~>bJJ0z>OJf>99Iq6~Gmw~st1vp$#o?%> zR zx3$!fSp0z6W+$fDntj}YK&gqT^_VlXRHemmO=@N+8?JKn)DiZEgjYHbc<-tdyc()I zjBZJu7;$D?RQumWf@`R>yEpmUZfe_{=l#ozMD zC~S6In8=G4wh{bQmQBV$n3>!kdBTUshId|z?)Gbz7VbM%v;Lys5Bd>cTKMA37Ms;V zFzn{_c}?{={VRu){C{AdB=^Ib@A)@nhW_8sy@UDq(xismS}=Yx9AqSu-^T741y?|9+l+-ema-ku(P*7eX1futs{ zh>@O%FNP~@1>SxFd~rxoI9#N-kpXJ^eHpb^W>;F}D%YpOBm;;a(Nn`(6E&ly?u&rb zr1AlyAKb3{);m+3q^nk4OC2u_Y+w6qRPsh8#op|s_|kr2v9r~?3(n-O+_C z4x7{eP7r4Gqg`*U8DG73+II8y)03>dQ@}=xyAR#?^3zW}(=}Iy{nz@ON^)>Iapc)= zYs0f@m4`nGyvL*F)d-MP@yq*4Zhpi^POhkCQ+u?3@|Q=Fn^z1D_Eh=LIzJe|9e?5q z04;7BQW(YPF_UgsKVK4&hv_ASb@@(nV4VjwZ|3p#MY=lQ=$1&Ap@Zx_iOxdoIS(0nU=u7-gLu@Vgg`^pyYe5n|Pd?u<%lm^`dozyton1|9xdu(e z@&t$47M4H%WiAAI?QV|?7ev} z_3gyPSho@vA>$mMEVqqTU8>n#TvN&FVQ(Qts_zRXprEe8LQ=oG@(@Kn)$TzQMttBA z%4DyE^hPJ4KC4>*A@+QyErctu2+#Yd+8w;j3#xVCBJ+C5aP_xLJl^)>JDa)jsyzpO zv=qit!d=?jRe&8#%}nx2q+U@$1TkkI%$cS-TC?OEPavF=^zm=A;qKUuyKAh{%WJw? zLnGm3g6^Mcg`QGxPYZkwMLxWJGYmesM%)9qFDm0U$wwp zd(eBuxIo(YA}kSTK~4*M0n(>#I-FBocy)*GQmodyxyGQO(NmwF-z8tJEc#n{Y)OeX z1i8hw0`jpI{VNgH3>%o-R!0+^`4w;gi<4Elsgeh7QkiQRP*qif@4R)vqPD+yZ0sgf~Q&Ii@M1A`Wr+w5e-rGZn$|IDs>1Kys7% ztvzbTw|fyTDEjM#+b{bPuA$Pg&d{S9KqoIp3%SlLQUHb--b&lQZ%u8cX^PLfwbg;FU%Z@pQB9+VE*f96F|H%`yI(fqat|&G<6r%c z8R4%!iM*PHA28mVPWC%@NEsezvq8>1z%hv)r1OP^f*CPNv$X8HT{osX#>Sa{^Uw-H z8i!M>*$!7TCH36;WC0a()tgoI!0OQpgfeCa{Hc`WyYGKx$y<~C)sWp(sVpbXx<&ITg3-N7f$O2n8LaZJrNW_8T!@6pj0v{7*z5R(J`+ zdmgCCKbm@tM*J?*ZA=&|4USxaqEA~4^RY$;EB)=R>Gkjw_NKx67bIm3%AgV5W~@d8 z3FwXpGBcxl^#0E94;flb?76RJG=`D(SxUjwm3j13%+95=?4UzR#_3<@9(_Az>6c$x z+A~^Nv^uPe#n|S47@RSU{5&VQczH0_->maa2mIk`RWO$!VB`R3u(v9rsNCs?P;~Ap z-duId6r99+t@Na1t+Rb3@EPLQY zncN9fPuH9Q`+Bp-sya!sO)|^2zyNv5a6hki=dq+IUby4d{P2}3U2#u0K{Vn=rtkK- zq&cq-1X>jy3>`n77Ug;T(C$lV|7vFm+NXXuWi>5pPI2{uise5jYvw`Ot{W*YO=cP; zv^`+PK##SSIf{I5kugPbC#*z9jn(NttQpcqvtHI#ortSxgn9oQTjZ;Rsb=>fjl2Ry z%;&fzJS1!E(Kq8FHTs+h0@>gquYAMpC7xk!YBet!AS8(~C@O#VtD9P|aobE`_hCfo zwX}kfg|`QV5YcNj6M|{Bo}32Gi9PiLmO5=Zp_y!u=f27P4|R|rTfYrdRaj)BP)B{2|npIt|<_Q(93a}&3YoA?-c!i7l6M*bgMVUDBkZ; zh~V?Zn|FV@hagMF`Ev%9EaQ zEtBlM&uLpKr4EGw7sW%FQ{f=$9@ze(#>BA6=>A86(RQFC|9OQsVz&y?wwuyEm^5Xg zh_6-;Y(gCOPHz6a2k@euoGf;v^MP$gUrLQlJx)sc&Qsg|>rh5;I~lw)eeHwA6PG_L zp9pJYmDhMSaaNxCF8OcL<_X1*ZTBVGBiysLr!#~6A+pciEkxY@GZyK&Z8xb}Oqu~9 zn?kW@1tb9Rwln4$R?EKb3_@}7PTTIc4gfD!gi<}SXvRRi9)-3Y+Ap0b@v!gipt;LIpC;#a` zxgRC_CL4b5Oz|gUnhO6zTF_a$br?My!hgB z%`WXjntQ+3gNLeoAagusX^+Aoz8`VXYx8kYDt(JwFKIvj^T<55R^D{75M@W^a7K0X z7?_HByFGD?)ne7S-}y2;(~VSOr_&qOczX|9&i{0MG__!?aVv|PhRHtcj_tTr1p>`3 zrjmW`fL>%4n_L7U`3b@1RZdWOJ$n5mRY8|x$vj97tIe31%_fME60>~_b@YA|%Jn0_ z|Ge|ITcg?8SXVY|&g)Inlsq(2_KFM0OJ$d@%lVO8Xv9)I;#Y1MebEO?V zKwWa5O$>rR;W-FJpTC{dRk|7c^ZiTUKa}Dl!#t=3i#X_dluFTc= zm2DdEI0ojzY`^d>kn%aojeP^Z2B1iwl&!bR_`#rTp@zC&jM875u$_Sdw3VuDKVoIrzLOZHm) zo7ztGAHY0mu~HlPiAIAFhB}#wjM3YMuH=r~0&8DOt1Vx1K8f-~O)o+TZI4a9rqYnB zl7sxS4N)AlVx5dj_xQQr%?T(#E_Z;dcZ(nM0SinW(9Blo1G`UHt1rWKgl+XYTabpo zUvCBiRdJbZRSAUlAI_m#GBI_^Ab@|vGObwS0u!-qkO*%xI)7lh;I-M>WCM3s!U;qa zR33!O624a7_-0(=+&sp}kMUgq>@9DzcZ(Dv-ZsT-q`jMs+x*Q!N`aBy4L4{P4hWf5 zx;g_tn#!Mdd6sEj5?rw$-3=`!qzXb^-;rm;du5NDC$l~Gfd_XvzYa?7>Lt}!XvF^# zlOLScumMZSVCuebD^fAe&k8DMvMeW<x?oLMa02~pOe>g_xB6-xr3W|+-tir?tScp@=#S+en6QYh zI}~5p-|5AclH!_BVdjav;uq1L@K>;8-#w{7Q~V)=jiP|dy1PECyx>LH-HS4hj_CwZ z7bL&g?hmhXh+{JvxfU7eOk-%m`<{+WC7l&LM!UaNYK>jVxX8+t1dX9($`^9-AEY%EY?>X8lrVLtv8TZ?k~nqK5)l|nxylC zN87=gphvX=gz(~aRUgTm=|a;BH0i!})98shicKr>7k*h7LW=Gz*rT?}W`tR1A#mQ2 zYXjhs+1q1MwrJ-lqHJqLz-LriaXP@Sy>P;Rv%yK-lnCGv%)=;fh1AWaAn%)Mzx$h6 zxQ&_l1yZ6|WZ4dhzyZ8s;88tPw;b@ZcNodrhq->+&F@0>trX=6Vnb=3k2$+xts_wsGG_NTELAE`QuN{8w}Jy{ca1g2HT*J^XM) z)t)tqKN_{*S{3(O^4yyV^-SE#Jr3G=_EKlz%vn$6LojQ$u2=IMkS1}Qk5ijUG4~JW zpM|BIylGyiXH4E4In>dy>*Db0y+}<8QtTD_{>F1Jd}@05EOc_Y)%e}O2Ccs7V&v>0 zc&!$gp$b^oSep9P)pgGElFjNMpA1r~4mHK?Kxn5X6HfPTtM#g-2r`w>HQl^or6ix% zBJ65EyUY43`|Y*MGh)Q(^mb;SI1+o!5}-a(-24vVA(k>4x>hLmY}t`tqfeCbO(}=E zuM%HCEM`LBxVFZNy@{jWocteb9M_m8Pey6sxc>#E%?*c)8C+#@A@Cm+AQKzi^-bI4 zi^{v~GseA??!nLm&a}!*P~3#qGdsVR6kEC&qs4Yk;>+?}>#=l3^b03n}dpfSj$jPn2P(?J^g>_I@NbBNBmOt%3Aw#!-o#4L@IcS2Z=tnV8}}jr>8zwJ&j&8 zTb%LK60<%-I05T#`6z0{n#)$i4N+zIs@NEvHsf#_9i9D0f_kAuJuyYFVj*&S8|u+z z?y31M=or&9Ocu455pssk%61?nRyc$oT*a2bd2|cNw}lY}7o2&7$<267Im{t0 zZ>zWDNQ*Dhd5B2S=TQ)BfUw74Kw_}Z&_Q2DkS zBog$5aTvtfus%v0iqR31_UBBB z=UNo@Ttk>Pn9=qfuxvl;w<n8xHV*QMnALdnmm1^xsFQRIW~;B? z=eWQe4&EwMm<56W?my24t-VNe4#;Fl9^8-#TAV_#*1!?}CLd9^tGDwbAPgd+h8_xM zK=70Fd!P!t{NCV@qF^haC2%s8>yWiaW~L^44q3zVuMkmf;SxsXD)U8Z^Jfe1dkT^(P}s zvZw`I7?xfgv{*qH#C5>^z72$yy}4lZ3ZGrcO2T-FfRVeVh}T)p%^J|q;wgKCp^TNs zJBzVUm5RSs3wchw>64=_bwjq*=5iu>DRF_vJ`JM@^8ZHSR)83H zZT=60O7(%uVWSWQsgj13AqtQ+N3Tq5kWFOhY@EfZg@7+k03n=lwM0y{=U?Rv^&z@i zk$n$_+3)9^zBk7zS^Ak#`w

@aZ-2v#4rV3hE7YAK~5#G_-rz5&AXt_n3c3h`m5y)?^*v6QP_kpsLZdz%q?ob zSZIXCm@1(1K%4sFUL&>P+yv6j|9MY%^u${SP0rAW6PH77G^!~nyz}h!7<&7T_N?=~ zj?%~^f>mw!`!j-4c77CzGoSA2pr-J%)3HF;iDZSl!F1+KyWg+TghFD#j~BuXo-{XI zQc^<;=SW*5YT~aeXN?wo<;x|@eiE3!Z?l;Xg8z1>VM;dv_1tQw|8%79{t)PV33=Bk z&#C6iw!4!1Z(re$Y_Mz2;k@DP2H`%XmPawz^KwyrUoYS~1_(22_cBv`(yer>5fhHc zg=cXb)~XGmDRwmk0XuUb6Q{xRFi;a+bL98*kYv1(ASzCfcb~(SQ~JakY(!S3hNgIg zxnK>uXfmU)jcKJ{B7kD(!G_@*lhmJsvY(gtc;Q9 zY^1Kz4%#rSx3m@6vRehyX`2>tI@KDHFKI11bVK2&)q~*UyvjL0H7|!wDui4R7$3Us>z( zufsAc#yzJuzj<=+cuyHqmA6(9%{vuJEKNd;J~FjylGpL)jH-!ZDz52YsY-3gSm5qg z`+NIThH)hm1=fvl{4B?o)dG?Uyt_i2@v~J0LR!4#K{@y1>N(^8MoG2X+4>1k3BF0L z#O+-FyH$(AY9kZt zp2HPp{T~-s8b7IlgsZ7m_@u71xB!?9YkI9QgSr(zHTy}`gBlNX-@Wum>k@28yQXY_ z6!$t(WfdBt)kD`XG+XbKmi~viqZWKvH(7IOjVuGtyhW>!5Blj6IuFowS6Qz7_|#vt zy82Gf{C*_qQWu*M#H{7ct|BiI0V1-s!0$B&@kEwHM28gMTTsbitIzh{=5O-Lstskm z;g^<1E}X&lfZC>j&v$D|!PEadBr7FMqN<-`_OVH+PTUIAB=yNg_0;N7@+_<3pwR;Z zPW4CCu$=LYsJSlJg*tHSugu!HN;KOQS2Jxaud`rJg`$_6k0Vy>L!C`z%w;z0R^dF$ z)kK0m;Ek=g@_`Do+;P>2*v#YZeaxuN9uVtENw8Prp%1rr69)GB?s!FB{7DnV@6WNq zX%GD5_HP#6rLTS6RngqYfzvC=l@_TWFX5=74Z=4F_tIoJY%w5eO4%6$)p>pZ!cd4p z`e#pgYj@lm&}ex)?=Nm*^t|So{|tMPHT=}odO;_;;X%S!B?gO9JF|DRrS3IEc27j# zo)o;yS*YS!XB_<1fqy|t`+j?LVj_O3NMrFo+T2MEve|)q#kS3t8u$J=$rwTd{w`uf znZE6{nK^jZ_f_gYdmOlH#8Uik(Av^2=ZT#Au=lLGm)VR#lHYvsg$p~eIjK1J5Y=$) z*>A*Ug#PdMEAc^FKb;USH|=>Wqq3nfO#K5wOnRKj>ocQ|&^_qR9TEpI%MSC!_Ds%q zbv_}V;X3YMD~Q**GaVEe>0vQ$n<3^AD=pJH-9N(J2>?ar?R-FKuEs6DTQ#W^%uB_2 zL)>^61YhBsQr-Nnxa6sV4f@fShee>Q(^_eThtD5%3K<|!cwH#QoH2AZVlNbKT-M1S zFD71nT2b0rUDu^EInk`&)hqu1xoVp|1X!?*jW(z)M@KruD?h@KZWR2hM%h{nVjxmi zmfypu$#2#xW9Jj1BY7re;9382LFdqT)^kBpzh{G)y`Fqf#MM&AX#CqADZ4eWZfH)u z;s-99p$F=KBy^?rx!(AdGurSOqOlZr+PTX4((<9k@ssEfUrfcw18YhSHGRT{hW_&4 z5mcK3Gk*T;(&+ehHS;=lXRM|O$b|J#&!KPG4Ncg?2G%SgQA&IL(*jedSOa->4+ z1Uuav=lIP6|H}e3cdjzXu|*~PIe^sZ^RC9ZAkVv={s3~r{QU%KVT#u(m^ecSd5WLA ztw~73x5_e+HlqdC%ZP5hV!P#$YP0KY>+~R?j^(OW;Fou~82Fu=pvEmDA}R)&cL*M6$IAUjiwXnDxhInphO!Y(?gR(#bPXOx=- zVDop1>|K-CeH(w{fP(lXA-q&wuyY_*#L8c-^#PJ5mSG-b2Oj74H?^Nm? z!kIv}a|r|gV~hGNrbf)-Tf5?98J)lPH;ziOtwh}4psTZMBf|js0P#8kmIKx9o>A{Z zuRaEX55Yl~qwTeR%~?9c87^nC#?@W4*9jp?yZN?S4C^8QJX%F^n%%7WOGACe6T?O5$s?hgUYj&6!31P|Eal1GfO(AV$kOxzsOX zQk~$~I>QwC(ok(y>PZyHhi&7)l;I*eHN~R%XAcE^#F@>ZxpqTO0m;lF+N;$%2yj06 z9qSKVeJiFE@$`~(Lk^&Pdyto*JJr6lljl|7SnI7rhSkQY#OYXF{VDcd!5oCd2@y; zvO-NaQuqD_y*|0@S8twP5t55h;#KSo|9-Tp$PhG*YwAOV#mcuvm^V%J_S|^%kMoV8 z29u60nk|a$k9y%=KsAaV575tlV&kG1wVD@_qw~njI@Uy^ z^n;Fibs-wJYl*CMMxT+HoY!eDb3{dAxQio0C}hbea-6v$jo}7tTg7d#R%|?yZK+$2 zDj=a`asMH|rtNfFN$8vnTytm8=MH+xx(&KP7-fA=a`wur0z|F*+=rWVx2{)a#QEJ9 zwzgYBx@t|o*iu6W#5Xt-a6!6UgXwPPk!@wh@sppt+>y?Gb)}3acdTj+1^kMJZQ=tc zaRhg~PvMNU8qJT?IlkP=K4vj_>OgPw*R6zH5g7fz-*=ab`VS}%akU3(el>2w_DmoRc>|baMoY3 ziYhunX$uXm`Gl7*{dN!kn$tar@2n6v-u~phNtW#XLG`Cq-ImNZvJKQAc%pCeB7#!_ zK+AhtXebQM{4eS)?jk%5(E2+J@cTtzUb~5YoKN@7f2dgvIV|HrnN!v?)c_w$tJi>= z+n)cMkj}f$F zpSBqNY1K;_vJF4?7n;om0adT0Uq%K)VMC`R;GY9JZTUd$pyy|Drve}P8|rYYmzG`Q zPbF$v<%FyXuViMP(yg5eydh8y1gTSw=k9O~|5M1s=>) zX+yQr^>WbBx1;j|K74ewy@8a9Gm}VIeTKGf?2&H&J8Yl|vqNKM z*$EN0Rc2c)BDx(t{nq9-))1_mVEB^XDXn|v|0g=VW+zVxQT68I?byJ0wraf(5WXu` zg2WYv_GD;dwr4&H4i$qP4SIN&gx=%7ToHyyQ z=}Z!YwsdNObmEv>!jT&@7JC4zv?>#N%Cg~Uz5ytaW{+SfTIjbUInC`2vHpW zSW(a`*__Q+kK7!#s@Tx%|Q&zpGl#yzbVp?|N`p)|?RUv?DOE7|4uLXNEe;$%zJFXV`CWYyR~S zSI}I?qBRpjEwZ)zq%E=&pcQFyJwk+Q8OfPk?Fd^4TFTc|Rh$IDJ(gNEGQ8 zG0k(mMt&Y!__xb!LP-r1AcEbW9)DPC)-w608t;rVHQK>?>W2pkIpgDxQ@;9U+#*}B z^*p>Yw~w1tvGg8nDJO-2Hcen663P|C3w!6+%lYZn&ELzco{83@OFj{%f`4#LGZHu? zLz}}fxqf8uiG!TR(N${drC&>VKxN66u4EW7D`>kJxv(O5**PWtd8mi92goO3#8M7w zA;>Gf_Tc2MEK%*CNnrX%<1}^oO#<@eQ*A)_z1=>r8Kz3(6WpDhY`1tZpmR;FE0crc2aKN9%)}jX`xe zORbUz3#D2|8f$Frh0@XxD}2GTgf$=)fNn~$Rq%)hCau8{kcpVTT8XnhDPN2${0ep| zv3&ogR-pziEhiLsqtrP(Ga!Erw{`9#LAb3u*HTk}9#}>aQo%81{MD*#GzKRj7ro`~ za}5HzSXNkvoop4HiPsn%?OMq6l;xC<@mE5+<|8k!S(MK+$<~XLPeH6RfU6LF zL)V^c@$9=0uK990OC=l$8|rxexq04*nscNjdIUFw>mR*SscdS#4r%lK_fKn=jDd8oTJwcw74 zB)1U5cSZolBpv#KQ1VJ(v4E2l6C$)$59uB z4uVu`8LjaD{#+va^9PMg@s&rMH)i2o_AT5%7N~^UjFN?CAjiajqh?7~SAl66$E1bd zO$T+X@x@C5vE}g@b}lfQk!dX#Q>Rumr%WWWnv~uK32U#)fRVgHg7hG?mpp%2mLJ`7 zZnaPfEsq7Gm&v1#C!{av}e|PfLOTCpyfJ{y@IwQaaukaRNh$FupctqftKi5$r&$$}WJnZY5v5 zGGl1Z|JQv^3!1BgR6%balYcZ%>Ds1n zw`R`0*CSbN{B!Azm}ib$SDJtA==k zXG(nl)9pC-w@+@DM{R$Ns~Iknzh?R9T&DX>ym`U4)?${x4fRP>g41cuB(^liMLdLa z8{WDE>3zH8q8(eOTjz7npi$+!4Yu~n-@D(llq-P}*dQ3tAx|#7^=L=yIM~h*(p~!t z7I0@k-K&j$<}bE9uK8t*%jQRU^pg4-B%#OzT-SO33n#4%pW}e4CvodBW!m_eP|NY| zg_uDoV*39160EGECEKsQS14?+{em*8&uXwfGp;z98WJjlt+{VeAtdug+}nCqSGsY3 z9aUFfN{?uqJ2;YlXP03pr_wUbk=FvtdgTK*SE#4nk|Q$3Bz!W?x|U(-Fd_*r*?sw; zb6HJk;XA-2UdkuKV`l?4Xd1hmXDaG35=v59&>x#CaW)xceW2(Ao9VHaOAOa1HLK95 zE*C#l9dOZ2!uxWoaaXW8%p&xt%RZS!I=|UzrJtx-1 zhsTdvn*wm%l+;HWe~ZCymXch z?S=AJh#KBMw!%2O|A@u$qdoU$*DV6Q`|gH{>&u4hm0Fp%MJd0>n^0m&TxkWDpYN*M z$05`p5+y3ND~^=CI^eH=L}rAq{7Y=P$f%Ja_&v)Wm@8eimpz7+r}oa?d8id6%9!tM z+W)@WnaeNNA}T$@iO+tJ`@#k=^#-lnw})6ERcIstU;wpB)x^iWgYt(k$QY@%D*QBB zid8|HUejdPCv7N8@}V(EYS%j4iU@MJ%M<1vLNfW21D}rGA~Yg=t9ge6Qj!dO^3PpZ zpc}j-tm6LE_5*ztrp22@4%BJrs$84Y;`C0Qs5g_CKh^LVy9Nt#1|Th0apL(gwZ%RpU+lA;X|o)1GltOM#KG70{I_YHNfvhBXQmhpKj)ZW8=t_nA{V zrJ8)`+$tNy5hxG%$pMMCUgfO76k@f#;%slnGLk!snWutdMQ3v4m)@q1k@P*0Q1VHjq4#BVqFTnUl#H ztN#$h8m9M85ibJiQ?Awoh*@8C^^h~cvM~q~ZXP?EueKFZ(iZVwoN6&N$h^X$7F5VD zPikPzak+j918~c6swl!F8 zoV(3y`O@f2_SLr>_;YGOADEmk&guzXP(!a+0Hq3^Wtn#Ccx{m%uE%PlDig#Zdk2gFK7AR@q5%Kffwy<^f-Hcxqbs-;NFX&@q zR{wAii0-di65faIL;Qo|^V6|#sOpOALFK*MSP>Q*oIwzYs+NvsbJZ^id^`D3A{p}& zJ`vwUqu6W9^P0&Z>%z8(ISehGGCBV{5EZ#XY>End>N;M{hbx5?g^4Spdz)R;6x)52R~^1TsT2TY<@ zS15;XS&84zevQc9c^T=uqZM!fb!4^IzLt=lss`(H+UXkK|CfmULeE0-l` z!znbqg??jIRzLA>alV;tsTW3kDhY$GAK0K3Ta_ng%JHY1EG@qE9BG#~%b9rF{aRW7HWfU zEjso&1@*9t9Ja0O_GABbCh3|4uc#GDMR-8;cDePL|FSEW_wIozWLpF&JUw(hEf^g-y&6c}JW zA5e^C-e>{N7em&Z$^lLAq}&W~pfhhKhb$B7zcY9pH$M%~Zq?aH-&(3MSD}gRD{Ifm zW(AN1R}aJ{fATvVFCW_RvNBy4%$&ZY^=4KFU+3epV!xP{)!ekE)~Js9+-=pojEjl~ zT6F^5qnXn?d#)O}s)Fk`-=^$^`e-K)uG%EnW99ZkWcR6+$wC?LdhXg<#~)S;)#AIy z9#s1LL$73{DdyAmpwmXvx8RX1zxuJj0~KO$Z2x2Mv)-!-{5@r{KKvcEb&%XTLOgik z43Zw$XJFkCumC!^)ttlI{C-_gz0Rj(a@_1cLC=vb02Dc5NC-SY<(DZ*AW^lS3$HMg z=k62;{wS24@`$wz9h_@*yb*)BhTFZR$|WYeMBtQ1OFQ@ykxk zj?VTHV}y*xG=nkC((0KUi8GOyGd4LU49$XxwFLEAOXu+IZJRAmjtiJR*uMqOD zR26W5QS(m%7u`IhRx2QZR6;sR-n83FdcMB2o}WKaGFU6rncJ1}l-C{-i_;}Pr>Ye0 zFO0rrWvY!11%@C;(1J7OOY54T|90DZ>MwUirg(R%AOp5_1)b9Ud>_rWe^idsq?d*&Tp~2KTGUf+w2dwwtBT4vx7KI z+?+c}8$YCPDHp)&J6Sg|D4jaQHG(}6e9-`5Ehs_$i4^~mkE=16Bniu4ed>o$;>FX(uV^jTPsECidEarIix zbX9ea97!&)hJToAj#75-}~RIoTCtjO9*nac9P#5CQU5u$FeY{Of-gV{CpMFoZ~3;F8$ zx4Ig@=09l!!=j}P((h`HI0Lmw=B|I*&?X`5+Xp)PR4#ry4ski?Q{)`r%z7L{WaH18 zf8u93$zdav>DO@K%@l(XL-PqPaiL*j?rr{bG=96rIG-4ahgdGQIbS&kQwyC{3q<jen=y5HN&8IBr(xRF)T?8B0n-EiZ?W-1o^h8<}*ae#68vSI8j|3 z=d&&VH;P)#vRNaZfKF%xRg}w$u&q6QyzxhcKWTaO z1>BZKxZL5Z$eg0HF>(?(`(4eSI`#Bh&+Qxl<>apg=_K>$SOy^7lLg-0q|n^0JEEE# zWOsW8Sp!+ywFE(2492PuDto*9dxD>{Er!J?_xDsCA(u%xR+~XHD>0m%^ZaA96?xqs z{&P?N0{fNKRry7cfy=#s62#{Mk=z6yq5m}-pQBpIMIQOgxuCxG@-E%hb@MG7^5nr6 z`U<lRDusvTcVOxv4Bv+K9z5|k!+z5nsde>DRucWC&lg5-c`D2LEXpyl`oxY$~_F5X=j-2QWPpd}FRCEpjb#y5u1=VVjbzR`|ZX!C+wg%K; zCtFx13_EQl#(C^>QW4en$^7B)^P8lLn zMbz9G4``)dei{o@$PfEI5+u~6sYh-2kaQ_o0VfMvna(yufBRDysZck=`e!k6)DsC>;&C zsu{KYG7Q4efSZ2JzYgPMTW|aPQm6Fb#2!`BF=t6gSk2w;v-H)GjlE1xdOa#Aq9NjB zOY2=MrgZKd0Ssy>Cht1L_;n;32(}Id8cgZULR(AZ)x#_^2FeG2P54H!-11Q|mTR-O z?vGvrxhxL8_5tdI#aKd+OML}@oZ!s8D_QU6**1WqgWLuSj>#+T)+kXk^}gy)MVr-W zdNg%&Fzfj#psuChg-q4&@>>7L<0`V=oJ|bU&rvhTf=5@|Ikhj`q~H9Uf3|kw5I*kv zEA--K&E8)oA0b=V0iR-Y#A)j_y`H1UuUTN}Eh(=y#_84=xt{H7ZeGMFfgnMfBch$% z3lfrX5h!*mL>>SSt}U$`{4@&)3#*H>ZjK%MKOOS@+Z`!^(frR>|MdD(K+h;akm`lb zo?Vhs&FDIx<5eb8sdn0Txp3eU+Kw{!a9^Shf|lx78_|qh^{@tPYtk0lLOz;Xs}|al zEi=)JfX4}Nl&%aLhluIW+#joZP5kOB5V=sr^sX-F&iktos$TKa@W2N}$w~L-XN%9;=)~FDCs=Z;HUn;`H|0a9+|9 zx36gLb|jzpw*D3s1E{|B`E* zUw&hKwS5Mii3*_S*|g8{KLqQ7eLrkQEUd15Tgbub&7yl>DFUu~S~d=1DGBgOEc1tz zgVRAG?ORLhb))7n_rByO;kvhXS#bt!>ek{oxukl_$JvN=OwfAO^kXTFw1j2vUa&bv zwp9dMrgGDKF7p*eqrsE&h-s}tkmd8EslC?s?Bu;9mB3&I8vDCE~!sGG5UBR=AO zJz}ZE8j!Mq#C;$jeX{k`k0RQi{u3=qin?+fZgZ8c?(mCj8_p^~OcXAD-?&o@x9lWl z({M=KE?ni2&GuKhYYnY$qxe0#$&s&|g(W!Mr2}McQo;P%30Is#;&w_`=mipuwr;oS z9BVMrlr!&|+>lO_F9cNeEZBHl3X)~6ebmad4eHVtZ?oHLhCMS{$KOu5etCdk+|jk# z{>q4cE58>>{88C#^KMGNKmsvX)m-SL#7x#@@XV!b8D8xY-7HiH*_>Fx+Gji|@c zd`@$9_-CN~Zb;?2Us)4HeH6XH&xasgy7gKBw25oaxls$#O|zd?izUqUg|&WJ{TwNx z?+y^Te%x0}L={-()f!mDtv4!D@S*HwUjVGrl#s49;S*6L&ymY)E~Z{e4%>oF%eR}h zEwR?L$AU$$?T^k~4=mR>t=kI$d(|Y7;(kLML%qmHv*eldA8-D8BJLU_*O9;68yc*& z*-CR)svRs(HPI?SKO9aX=i8@Wtz_@~#KjnVZcHrYY$nEVJ(YBIFXqtJEbhNQP}#uz zb(Ao;ZKE%lumI5F1R;ig{Ix_Sd47L;=M4{F?y-cgY864w$ND20&*Gz>?>!!$K(8Bs zOC>%&DR-*P)@bzGn*-J?cD~L|PH^ zmR~hqBh}feBq3;<9a;s~&AT#S1=le~IB8?+U!V+Zay@^(E=G|Ak|DD9ckBFVs#z!< zs`R?8e0jR4Z*13|!_V9rH6ovp%{-7zJyt_u@oMJQ>~E7g1<0dP?t`ytrRV#W$hNE{ z_BT-*O5f=G2Safe>(k$hX0P9g>}gDvSduKKE6bE`*iOC%#ap{u_p5gt6 zEkUW0&l`#fvj;{?jc)5fzBVY~{Egn{uOj$|Cx=1JY4`Qr#&F->ozL8Qy6hLtcVSe2 znR8XGLVVrS`_N3+xZhmwWr&P@YR2MJs(l{V6fC=G4XzcD8{#fmxwbMH9ag=)4}r)X z&HE03QHMT0%smomtzPI!Xx&?*5P#fL?=wp1BATl?oV{JS`|kq)%-p8G31D6Q3_D&t zpwUrL;q4RS!r^?4IGWz&yp@|=G1F(B{)#aEfE6+l_?#$_-`9&qhMoj$fT4pZ|d!qmAx3rEAfJgdW;_OZaFN3w^ z`t=9~av(E!yyKcf1^DGJCh|uQpaO3@vpoh8im!e4DqjHJn^=9v>Cah6@xNih; zAW&;vlazjSz64Qq!l5fXpm~t=w{28$-=4yPF5SB!djzf#+rJ%TDRZq#&{po@7Mry; zKWShsXBiK5I;T?wcZ5$rum>;V7R|Kz1=5vK=Z(QFOuMriCziGDR@mn@(vOcOMgM__ zipKx8_F~bouj+p!HMQ>!BUNahu6?8c^7jZzWgY=QT#5?u=W*4(rtH5?-`vkB0zT?zJlbg3OI+^Y@wqxyT?Ypfk;=P_Aws4NBS|$y-l1$t`G26K}D3uWDlBfX}zcov+ z(O@)}WR>|!MoPL|RE7j|__tP<(aWbHVQUvp2UcEFYq=N^7ZV-O0wN)L2xgmbDjfgEIkGYuKl0x59IapE`EK3QH9fLXcfuRwG7(crJ4`QJqV+kSaLohqwNdNOTVAec`ewO-pE}d5h^uFka8;w)n< zBn?d*8`aXej|_H%+S!88^caEjk$}y1Cy@47F{eM?W1AdA|eEyc;!sFT<%# z)61dn2tYc)c8ER{Ui7#k&>-?!T4XbKtI!H0^otyVP~`%X@m2E z_DYSv{7)~WnsKMrz{IFfS`9YFtPPe~Goq=pzh^a}7# z4=5h8(Lp4nca_+ESszG)wHLo3E$oQLe_psoc;o|p&5|>kU9XLK7Hu&M*xUq_X@{0ED#ho6n$xSao@o)mqZT}^R;eR@ zP^?Bv=iOIKl4Ne%JIN?dS`?_bE$xuaw;ZzB&fDP7i*Uq`}&Z0f|zIyZIUz>W?8`6uQ9GJ9m|L{VW)U0Iq zK%C_LU%oNL)9%eNFOvCHyVZ0=`9~zRo&9nA%4mXyYvbl>l3u!L7p(z5zQ_(oH@kW} z2C?6fn$sEp$d6l#zp2#VgoX_RJpzwE)Tkc66Ah1D6!qwCs8$<(9L_wpzbkD^83?~1 z8V2?{r|vjTI~{JHLhZ6|b0LTs%2|Vx8L78DrK;&Yv(sVC3p7Mf3HZUchA>;4?{}TM z#B`dbsrY>H%BgI%XY`Iz4=uGr7CW5epGww_!J=hUd@qb{oC`tM7+aioGdQzv*im0w zlA}9M5)jdsalQ9&3*CX|jwbP}YFc~+hHg4oc>{R6uA60|p}6D#QS(QrWcD!+a!)6ut(mU?d7`^f$S zoa4@X;Y|o08`SCq>5N0h8!#7mu7kIuDUQko)QO=CZh7D;Z*cZYjb-7TSiw?FNajuU zn(bKaw8|S;bTh^6p;WVAC4F$+a^Q%twxA0yPp^~A^G?U=mzIN8`%5cQDAMGHo)XIs{}njXyw~jV#HbW_ts7ra@@tFjS>ey)7233yGcF`UK_0BNlX~Ub>TpGRFGK}~j0WWk;Q^5?O^%xev>ZU>?4VAGIHTmtrzbs- zrW21lMe8qSH(BR;)vB|1N^Hf%|DrKH-G{q^{O16b%h=*$?4rz7^fi=Nwc%~sdEi8i ztfY$R0&;cevM^m&#cx{$8e0`-kqyqz*A{e!v!(%(iCR2wEmL&AQ2b&h?VKjBF>saN z^8^$^Sb~fx6)~73WB+}oqrZjw{9AT-{+WsDg(jxmK{IdqL#pz|@eAPfTq~*3TIf;? z91@U`bbUKK{WvD8+$k&tKK8t0l@yatZ-!v-LwwDzxV6 zp`H8QmzuCgzrmPS6w93-I6j9m>TOZs>_S{wZf}5<9xBYzzBZdvWPtk+F5^N z=j7VdSZVu6Jx-SlbXV)|(a|%QM>r~C?>eIe;5|p; zb8XZpfRT3y63C70qfX2ZGgifa(j@iK%nbk1HJh1iW-KcB{GOCE+N!ZU_UK}kaLyrG z7QigU)%TQ_6DqPB3@@zqw8ag?W4^sA;B*wL1#5sQgsJbO%OSy=HTob3Bmt%NQH>>Z zB}a$565a|*S9V~xHZKvUllk;hWIgu)zqE%@oiz!J)dL%;DX{hQN^nWcqv>4XE`=_P zK@)$hBvxh9YscZbgIv;8e*(x8$Cav zt8j(o2?;c|7O0L2-i!mr9As;qCz_R}@%^FcxG*=Mp5>T*#DFdmC*e&9ifXF1b2-OJ z)lsO`zuuh}D4sD)P2{}|&yFrnR`2G5G#TzmGoel;gtj)`ZVdQO*~R#dxLgiWDt-Ld z(lm=nD`Rep=AYKLC1B>jxNn6vrrnn#%on&G`gOAdNG%Z@Jy`UmbT!psYGv3xVOz^- z>91sIgog=Lwx{$NE{+Hf0nbg#=P2bC9pqg<`}jvCX}0asJ^1G?ITK`-sjOqJW^^t+ z@0p)=qy;z=xV~OYt2ZeO^bDuX_ADoxopv6V=_M)?hYJ$_BxGEF6)*&Ci8LTKvtZDL zVT-)1nOr0rRjM#0i%Jnu2up5J%VQ68Is{6A#vz1yu&&SJT8{a=ukWx*(Y!2C#=e`! zqn~e@U?WfOVE><&(jNa&;}e$4rIH7MaAVcwanjWf6=##?v&A*?gCsU($j3Jb`RL0R zGvz$?)4XTt$R!EgE^k`$9h)~ddF^f6LdoR(zk*&*1b%+j;2_1 z)0+nmXLp{=o_{>$-WQ7noM~3My}f{ajd>#w-HqJYe#sh+`U^#%k$R`l7| zJcH{x<)h{a_L^PL*UnrUx0*{W_H8x^_XOmQKe(jr*)`v^o>XVPec}U8*0uOTq)%B4 z{u^}SFE}UGTHqiv{psHHA%`Hq7wt=O$T(BFBuksZ5EmU z|8bh6Quoi@%s-0zN`!*->}1NW%JZ@vL*o7|(|P7Om`|fH(n_sirq7hfd#(-bT{75& z?r-&3D#P(!7cT8>i!XF}DHJ_V?<+=y+HXa^P*f!oY<9j_@HyGYE6CYjZ?uvhf-1+% z;s<$~zK=N(H{TB{HMRYIc4R(Kw^=;`#s}8ladztzQb7DzqUwE(Gj7@ zVqyin zYP?3M*|356zN|87z{ai2)>LKJu|~xRIB~Nq9jB3F67VgQjhNKTuw`%*sh?!Z#D=NZ zr0MY_7vA+yJNj%wN=Tw=Yk=fODRcUEOxX*V?nwdm^$8Yyw0QD=X#QMOg+jJ>sMYl? zhJH`mt?jOLGv;l@84zJSHv@?#&y^9tXfpFn4EFOTbQUW%2i8Qaws216I=~e;S*2o= zAm7F*xQcnZgMkKZqValCV_xOdPwl^hH<1-ckUcB(`&Av!uu@v#DBXJgdqWPn#iqK= z5+iI@eeavMIV&VJz~_okO|=?DJ;yC`lqXbIy^EYtf+xF2J@o5KJGUdY7AbO_!z5nK z@Ijnt>DMJXdvnX}`){T1zTklsof#`YFlvGtIgAZ8nAjA5py~W7(ram4_IyS3iRE~< zpjg$6TqX%$yUb%*exJYYfO#5@ro8AEduyq0dw<<&xwja7B=t%!m;#3e*Ssm1z24v} zGeabxH}k_AgU$DK_|4fd^7CSjT!#VE*_#r$xSFvouv^JhUa>eVOv*YJX{Zfzy)&xM zu=#wfcvXbP40ul~?Y7j8{PpGVaP)FT|okMJe|2OMHf`dJurgVNJ<26LLRV{Nid$< zS6H5q1w|9kckj1S=d53wD!kl5xIUn7H2B#o8epGkD%p?y6-s!i2H0m2ZCug5bF4d; z2&whfhk6vd1qwiGL#2?`A=gB41RBx%`Y&RuOz#n1S2H@g1m`aqp*dezNJHfg?sNxe z&etbn7qiAr*A!JCHzt-mWq2oPqS2G8+8IsoW$u=)l?P)h1AvL8*DgKLwj(7V$@&%R zwB*g9t@M3F?>B+wclQM^^e30t#DycLCCUEb)b%o_5o5U2fH|n{xK*Ku?exLUM)c`R zCG13mrNdB$Gvg_-f1hCdHsfK8et8Hw_eyQ1-T%k-k!kUkN*J zazA2p%eyE~_5J2Lhq)bUvCRBbcl(1%RmVM9tk%4@^GA~nKO080Y~!xu^2Mf5;WMR? zx4faj?abDDaZOi2brndz;Xo_#oMf7~a^PS;yH5kUUA@y9>nujk-SK7_6%e44jemWI zxKzX|m9>R+S-JS6S4}MECdGh>f8FGKo^g}T_$e#k7mO(}xHZYPh_#6&Rpaybk`A z98@H-5hW+WcPGtVkujGM2fA*l2n(+MdNoRV@Jtzj_BD&ub2bmnTT+eEZGU^3TdISC%7HG%=IU47-g-(w;|^IFr+=u}%T zYrInnQN!xoa!2W0IcsW0S@Ax~?d&>%s`n@p8sFb%feMk}Bv-F{%GD#J+Yo9$kkKRB zy!^qUN;+RtMH*}M2Y?ZYxNj8iR%(L_E-wfBSTHJu^vs=)ll*X~NY2MNHrfZ9b1oX13-PTG4KLVuSH&JXTFUCNat>U*eZrgSpm(zQphD(_vj^(GlQYr>+;C~e;%V+$3DSy$Zx z9?Sm;j5dhP9;_YKj;+fB&%R1)NauZ@{kcpHDv7kJghN_0JXXQ7%!e(tWlDykpsz5- zlB-KIFI3$Zb1p->x#2@uMSli635gN3?R4!(ke#UgOz6xI;$N&$dd9T8_$3MH+%Es3PGAD$ftQcZ~00Fsw+D~MRmDpRQGY2!M@}T>9#X@JI z&>uM8lf}7nL}qxq;@*jS7!QjefU@~V?h!!qi`iRU`Y%IO@K|xE1~RA=g{B6Wj+Sm! zpfIAB^9LJxU?XD6yHk(2i>EwdV`|M>14r*t3alr>?XGL-Snz_r=$=iAeQ6Mm>6EoHoi`zJUkc#)Ko=mbPqI1Xxp0rR+$TXeP!A z?V+bYQtg5-pM;5x6yve{?jf5O<2J2;S?sr#3$x9Q*4vX`-WfdmNRE0*>@40|N8>A1 zBcqY3n#!xqM-?@Nc#EJ+F)yzBKgMMf`ynTq4`1l(OTG;XnZMK(P~)^_gs!MU6@_c; zH*3mnP_dCN$^132eMtSc1u%5gTX(EBy`$@|{;wf*JoYmcYCqxJgg(Ll?Yh&FN zhS6)~NQ>?>OG#Cvuve(F(&0@0q&k{ilZF(r;~MbGcH4!>)*%NSRkW%MnJO9GdcTid z`WaC;)bPE|FpYDWK%K*<#egQZkC#IduZJVYqvvS?cAnt{f7a%-N%FD*nVbNl|DF{g zc*7fVMY-Jd-I&1dn+W}wb@6WO9U8sAbiKX=8|q=W=5(4j?`VH5n^$e8j|rfr^URUg zc-KR$seH!*EK6KxV#Bs7QTAvzBb8l;i+*p3IZG6scg`MPz2m;(6A>-w?Db*LlL+4^ zp3|GQ6XRK`TU4Vn^GOM3^Mx01ieY{hdcmu3I7oI($&6_Df#+(xN3i7CicnTA*lS@2 zBF4Da0vK?s>X-k4=o-sAv^@(qztW8BkT(x6oUIsY=)$c1*YP%RrX1?G6RTGtMBLpR z<^Q6#Do*!AV|$5T<)Pqz2vcI$!t_BgJ<9YvJMDd}>`catx?5I2Mb4ZNK zRvwXZm1lXWmamV6J|>%jQoY09RJOG@dJ%>|M7MRK&Ocq&77~>8YQ+4{b{V#$x3FhN z;whecsquqMRW@+}*GS|>3zL5Jwl@$oYbD&n1Dk~A`rgq$x&%a!Qj+S z1I0E?l;G9w+JXo`ZfaK8vH*qwc)cLrxe&?;9lc_A9ua?- zsS5=nAN#~hZaG_*G18o5zfB+g^R8L2k%B`L|L?tVk9$77H{rOfV?JU0a;(O9^VIdp zgkO9CN8!pqYOL3zIwmmQf*EK&nE_63Q2lg5b#I&l>)ymj!pNaR;Fsxi-Zk84QhrYi z`DFAUqcN%Cg_(>CaPoN5Lkv{L(_)@-bj@vK#kja9R3LRMct=NYf>!Mv~nbUmY+SA?H;|5^BVo zeXqn6do#XT5@z8Cr9|>QnE;p071NbJ52>jUlapIp|5?9nDppVe-EXslQ&dM!@fjkE zzKG_IdY6Pw(J(mL&4u`N52oh7KAMQBf$+@@a~&*n-~P@E$?NU?BLayrTa58oQyLzV zZ_O(aE#7iv*&!2FsZ1-w&%vtlTyYnVXO1_~QjG$(#u&bVG1jXWX7_mnP@E1R>~J)3 zjYdd9(sfU>=bCvHL+yz$bUwh-*Z;aAmv1zS-~-QQ=Fxpn6XYV~hTErZutOj?cYK5v z5&=fkN(k7Uby64T4}+;v*~goQU9(Estb^){23|`%?1ocoEwK`}qe$ zxj1iP?ILF%gVvNZ_9=>_{uC!2talLJj0%%Fgv_kmnopXta=VxfP40E~iy1}nl7LC+ z-h%ip*Jr|(8E}I~mqN=zt#0FyM+K&Vlv+5(%3-pm9!$gWNPx4(lKwCGDMt{ay)Ac} z?=mtTKA+91oED>meMt#)R0EUMZ(j;qbMgIH%flzzH~ZQ;y9b~t3r@SQ4_I~8=> zR2D;w0)n;g9wT)ArBJFvxx@!z8b0bNc7=11UBpJJruibf2!EJDQbC#Wc zld$*2wtS`E(xC(zbgYuvD zo4xYL=atk^jXt$VfMdj~eQQxqEjB5~&*O0PtMZ8O#qIOJA$^L0gwC|d=e9ZU4SqJN zxW<}Y_*m)QDG>IW+r;Lu3# z7Umed>ftVsI79B{Hnn4muk7RVIqQXI8GTW-2R7hlvlTLKl;L%ideO8hV)+h5_ss^J zvxMr3@l|4My5^7GA?64;!bYP)U3O7@J3P_7cZeE(TG4Rf|zqGL{WN z^CHZ!h3~h-aR;+27ftC{k6eo?URK@*{v{F_qGYO(2lCN@vW2O+mBJPJjyu;Ra~wTx zZqD3B`5ZS~>Q7;FN|A5*IUw#h6@IFKVYsh820topZfkVQBq_SUIThe>|H7@Nygyh4Zn5^WaMWZ#ud= z;59wBQjRKZG`Z$9w%zD39B)wQRpg#i_q?h@lpNj`Ih}eBtnFJbb$uv#0KyS=~lba4sIV#(2jb zT#u5V$ijIB;H3cd?D@qKwPp`CCn_J)6boJ(3vzjI)QvwvIzzP7<)c_)^FFrvrHJmd zW%TM)%Fkwp;m;=Q*jdP^PxZ?&U4^`wCh6(Lf!3p|?c}zW8O=|RKj!iqLi!E@58B}4=k*>!PcWIZ1mJ=Zk9KLts`n4{<54Q+N zN#`QGFG1dZ17^g+Ni`RR%gnbfX)u2KR=q10t;rh9fr^rE;ts!1_K-*IS0D9~&N*VD zi97(c`*bm`KZ?cz+-P;GLchM=+n1kWv@#mShR zW>e+LR)y))HOZfiKdc=3+)yUf=eh)a+h!M;7{ae!vxHB#Jbn$aSh+Ey4GE6&=SANh zm;_j_R1fywmpFh4A{JvV2{t>4J_g?3JdzBV?kuQxI^(|g)sfBKWLn-o_qXxfaFC*> zUNgTEEP_e)oghk+w#* z*kSKbDFH%TinH|xoOg9JWGuw#ca{TEg2mGJPc=MjR)7QVuSfZID zwfRBjh}Uh;m_I@1?wd%f3_HIQ*q--9PT`u9gZiDele^Sy zdf$8JVi8r=3hGf4q*!%5=<|AG3yR`wieQ*1(|$v6pD z(Myu;#FvnYRcz}!~Wx#JTbPr)T zA8!vG3*EbSrA~YO1Z+#3WvQqJEs;b&HVsinq-!4Z(bO!IaSe28o^4vV>?VKP z{$@rjA4oP;;a25Wv>91g#rBjD(!Jw`MinJ#m0!g*+x_VuGVzAWTFwW%M5)mLpZvLK zQ%skb5?VdKh>JLRd{XTq`EtzGc0Wo2HsohOtRoLQ&V72bx$EyGc6e0Pvo0*^cT7Ep za|NMfT(I@!l~nAV_Mm4p;9tWy73C(5_voFOC;ArdwD7;Z0SvTfS!dkN>=V>Pj%M+u zT~|&qUK>E8X$IGGa6$CuOOv0hzXW_S0nNwpMZnvpAxN6T>5G~!GwYX?r-q8kPeVgi)e|f}WRVLAUN?e{d z<(E7f7gmwRqUGhNCR^vW@)raR%V10_LQ#H*^cETK4#Pa!_?t3??mjv*fsTfX6-NKT z3FlX+s`1$zXS2cyn8+Qpog;pysY**7n#r zYUJ`{t2TEd!g9SQf>kaHdrK@^ef1;A@r*G8>GNgeJJ5FPV%)=%vLIZ4n$e2c<#ch) z2o+Mk_-fl#t+VGFSBOBj0YQ7@>}C4tFb^Q3qCd@Zef>aXbbQTywA%ph)XqE6jX~uS zvf9vEQ>oRw#E~&q2_wGcIE%(AGp^Z$P(~I+Jgt|rui6%pOfHfw+#;_fInh45JhJVx z!0=D*L4g8;La4I@((t|rAEUfa8I?M}&Y6s$$8;{PuQeacS<%P#x;$5i0luNeLq!UduHM#%!K$Y>j)K2xVpY$9>V1;spH+lIUcd!bal+B29Q#4f#)~Y^n9BlosQC zHT2+(pS1SFb6L42#W6~8zx8|X?oWWF_&+;xY5Nb--?;Q$H^a3Je@(JVVQ0U2erDt6 zgC3FF|8}C*Eeu^yTa`1O51`QQiZsJUfdO&jSEmm|bJBd)D?hEEJCDa!oxJG_H8Giv z=}`XF-%VUX2VmEyGw<)4eiczS$+g0#d4`i$9fBHi<8q$tT5>`MZKR1hUEGmhPQDgB z!G-BTx^gc4eJRTe^SLWvDZnT4yn35T?7#4TG%IPBC!EHL9j2?C$I!`U9>;AKf{d?r zg&aQn)bx*15Y-n>zr7P z2~19F+V|Mm9t<1H&LB7`$<(g`0BVWY-UGTt6xh+Pw4<74!p>btL2u=v?Y1G*_EaTb zEFAw*Io)~cx~S?e?sYF)?9jP}1u11V{A;7^16PAW27liER^|0hbTV7IhP?7iPCba< z93xE`G(2jSeC7qTe?P=+#>DhrgI@jBiPQ|A8ze%j`SrL+jVIsk-JJcD4EA$>lYb=A za?xNstHpRL1PYn?RIzTjCo859Qhz7o;CYJcO1D&gRxklDnc|hBLAZ~))(4(~w>|?P z7F;PagE5!fRG(_M(k@m4qH*gZ*OwwKQ=2Y_TxizytNNd|Sa8I#*&qxzV@4bSn7){J z{>ioXi13q16swo^V~F_Q8U+!kiUnMZ`ym}th48);l^u2Z<~noN0%U~)5OD!i3T2W!v+M`P?aW$JdpLh?l8G<0$Ka9GL=Gi|F z#YnUuK1->$RYK=)06?tqmyVS8;&o98!x$>^vev6CN1}ly0y9195l3QgO^Z6Vf;?ZL z5dLJ;Z@=mAk6V~MUo9~xuH$LJ?**%XGR@G~Q+z%l=G=$Z@>kTGwVjd1jr%!>ie*nY zELzC4qJx^fFTyY4@`n^nrVc*~7f=AKYcJNkiEF2@A|a ziN6xe?D-1&%4yYCyhHDurvxwoR?lH%VRPp63AC zX~h?fD`KF>0o9-rz91KOTB|yXAlbauzUKe5n|y}4_f>ye?F31@rz_Uo_BY6sT7mTk ztH1l$FB^XJI+(Jd_t9b$g4q&q)NyIYy&*%`V)uG-&0sdy~`bG;AAfcT$~}?Se9w z$t=kqo-;K0>2SXc1Z3_Abn8M3qD4XN!=m+};KFW9Qejd0zINRJ3 zsMlKIfzPV?nh_1wYuB)QC`QeB<3jnI#ovIvO3M@wjec;ydU92E4z!0UI=cB@j1n)c z4ApME$tm;Y2~JN;cNMMfN(B6J$^^ka>?jM`zBerkM)pN*cwdp>m28l%T2skMnE z9gjdyA=QK`i=*qRbRI&kcg#4DBHQ*J(5+GVzBLoUKuqvsNg9Y}-3s?Lbk z1|iw}&X!Ufy>{#kLq8M@<7lbZm-k~R&uo6Rw2%jR`b`0DVfxb=O((*?L9$wHjw^Vt zthARq`l6!G8*xh2`mrk@G^}M?AaIL7Zbe!|dcMM9vp%S87;IKJr2Kxz*Up)ZFTKba zEvx!_^cUe+wa!Fwb&l2te|}FL#9(UxqE|CBV=#COpZ~UG+md>N`W!Q^1*%4yzqMLcX3;iT!1$9RDA`XAN;LuD7^61^Lkp0sB%SAVtE;h7kj8W>f>5a3^mdS{{f zfQ2Z_bh+2Xj~??8FC7-H5@L&bf2#yZBNnNfr8k2bT;?iO`NvwNuVhB`U%s2i^j#Wr zN{Bo9a;BWt@6TTeIpgsTw7)-_9IvUouRuy4I~NlAro}7ko)zod5A-KbTEhO=KF{4+ zyUPoYGKCE3iw1tOEbZ0irCF=jcD2h-%&EC_^C3p-xs~2ss|$wcr64z}g$n6M6|unLHLZWNm{Ung zLB#oVS^jT;BU<)UOh8;_juJM1&!^}e!A$>DN+*uB@GLybbc=iclVd%X;7=r?p#G^= zuTtZlIHqLek{h!2eBrrUC7G7n>14&cZ!r zN=KipAI+<5-7O4ues`kFlys|nZQ&sB+h^YZl`>F~Ti{_gQu?jP2Hn!miSdg!iU7at zj!s-VVy-1wuYO;yq1If>usFqfkw>D&I29$V;d{nQd?obgVN@F?a+j;v+&5^`%G&D) zw9zXRQ#w?Y&m~i49^#B&RR%f3y5<)H+gWOskY??`A?Cmilk>Mqspz$1`+83Sp5xQ_ z>!@6Dn1s(Fj{7)h(!DJu2-Wt-tV7%QEol_pTWkFc`7|qD_m8c&y{$mp$==C&X?4z$ zdp&L+k*&wvEy(|xiGk0ThXMCh`w4Vl|J}Y$I1l%2jMW~Mbvj#7w%arA25F~VT^Y^L zXeUEErJ>W8d`rW7Xk_13l?qV z9LQeKXs7LriDEq1PGh3fw@yf1S z6C=;X7}T2A)3QKf#OT@T_Qm8$MWsSY_{924O%eVYyP1{{FMGmR!gfS->I~)bX&Ujj zemXm6kaPoY1u95Z(z_7vU0vd$#wJBA`BAC;2)TAiThC(rrx^UbSeMQQ_a+Q|_VI9j z=+NS<>9(qwmtVc7$=yv0y;Kw6Ie`N`_6@lup+FK3Zy>13R=zUi9d>9T)qR(ns%3BG zk?NI9=lfPs@zI~dBw%dpYi?*#hG!10lJ$HX1d8~%4p03Ee~=^eYkwerRW|LwOoO$x}bWM2G)_i6G7KYw=bXHpu~;k z0IBImHugf4TbMUY4DWDl}!i5b#(> zid66l)p8*5YP#IAL)wr|pHCz{!SWWawS_~0(P1BK%|96W305&HP0WG;nYVa3l=6P5jd+MfOY zEP%wiXJK9uypa0$j6CB7QTRqdjlk+~Gh2&38-$RryuP3re^__LGAI@3NxS<`2)2_u zKU!Y=dCh5@u)H#9W@=^{xjy_*m=1-Q=g$f$VS!tIg94Oo1i{ljr>R!n`PsBg>Gam+ z-B2VbFtoTN@bok$^KHJ_buwkd2V(7Wv0#oa8>)evmHRBdo^1+Z80FQszV?h9yEPFg zlOf~2C`6CfG#@=0je2WwO!H8NRQ$~tvfk7V;qX{k3sz;tvf*Y)Z3VpLz7ry z?>XyjAF}@39d=>VKbp;Vvh+!EQ2i3ncl5uj?{3^LewQNd9Y`Ch+kNiu7kf-AJGLl# ztDwT<4+L!1ntI#M*m-mR=TRqYYR{nMp{eQQh^&XH)qdle)5fwTKMQ!F-hIQP@P)r0 zB-j(3DR$ai^`9lUem~ynr+Op4x6r>t_Vm3J21Q5y21APeC}ZLswu;r9Wc|#qBUg1? z5ee_UB&(6gop)v@LE;~m?T;sqt)n>pX91+iC*NOC6i;c*~^VD~b#DOB65dyyS&Mf&al*EK*{6PP%a%h;_rS8Ax&U#z@Oo6;`zVoj{)(LqSJ zJ;$|AK7e3G!Rj&mKj{xE&b|aqHpI@{Ovn0qT$Vq>@M|icoq}Y~J3jyPqvg+OjiA9R z4soweC$Zlow~GFSNlX4-i|*E%Zot0C`JT%HLE^bb2{~&=qPph(PX69FpSs4TG~2WbEs+WK z$(v!#NnK*D#ej{#cA^qf{l$d=qxZK znv+)%a%O!HKQmK?P=9sAzm8-rg%9%MTMktJJDn(+JB)27%9AV^UOW4S<4v$feD zxVo-gN%kPuFa2J>YhQ$eUDmhD@7XQ7*MB<*q~=hPu(u5TJ-ZvnE4gTB0DW8$xA?fo z?DxGf|23Gj z1cPrU%jHf*KVA+GhP$et3CilLQlf-Ee$tpF)0zLPAX>OQbPnHEvw~8jkNt%=09J|w zS8>$@wU$@o5r-RpNt%PsI{u#huRYZsy4cn>lx}2|7bSZ@g&2GG7G_?nNlAZckP(8O zdNI&_d~-;7CpV_;UZB>zct{z|YP%?PBhf{lHA2d*gdtF)8sFR6(v};NBP)Hz<;qvi zs+Cn^bsJ_I-j_E;EMM+1(OOxvrfENVz0~RJL$msv)SLm9b-lkI%EK?+mG1d-bM|n;Mf=4buEwVLuacgXjCXq9 z%WA`qy;i`zmq9uHZI;I;Eyw3abnexw;lx%QZycBOHg;u(9m;mpQb(n^bYo-<%#()3 zyQ!GM(U{3c#yF3)2mWDW*EtINYPS63e)P!`0y1djyg}G(*sC->-chXHjkp<|XpxQE zZwjHYx9r0}K>=n1i>z;|*Z&f@FTtFJjPaUrH4tLc(42Q9ooaPSd>nyvB2iof{(e(M zJNVn8CV{?usYZxw+rZz->HRD*3>(Ul_wxxOOzrn5@N1lYmow6iyLZ$E``jy8Oz3LSpaWR-X9N#klCstg@A?Z*3GSP;JKmtItMa zWWAMiTI&u6{0&wur7p!q(Q~8PMRyZ#lqE73gtLu`A$z&qX+mXy;FQ|NlRd^jGNeBO zG@A5tbCjsXw5*)$RorujIB78E#CQ2alnf)6tNkMz#)=>%{a2iYmDuqD=A}Mj(mj zeSWtSD5Mt-T5PJ-;+BaD`Sj%D=*Ydh36RaF-KxGp8^2}b0+zEH=&Vy4Ubd2)wm&iM z5oTZT+X7+h%YR(Do_)CQfUQJ2_XbgjcizIl6XP)R-F8|t>)xUs+5 zY7phBKek3p_e;fU;s(x@#QrQ|wtW*oXmH5=T)9K}nqKT9W8eJscjVai!9%ury$=Gr zHdfLgD!DVIMh&_P?CN^KcC6lM4lHhb5`^-<%D6<0X{#e#K0)#VZ*=-mR4v&-ffH@y zFnPqugdzjWqXm-pg8^@NAN89AaW0A-J85n4(ajjY^-F}QRLx}$o5mF$E5a`?yW8{E z4##XOZ@TgluoGHD&a3V)%)Q_IBgvgm6f{=hr>i(BS4UXf!NE=1FG)9A+#DvPdN?R^ z4I7_gn3&t7J8p6!sZJoc{B;$#)Iilev6oANo}ZYD5zl_YZtmE{lKg`+%|R|qzI;Oy zNM2!hX8O&XwcmeBB;TnK?&-an)vqJ6TA-;Tsv7%IrJ_=oZVinCPot-cUoZcNjC#Y9 z3Op5o6{+FA6O&+HiF#nu@UPNlwfx_SN7gM^eKTGNVj5E=jOQD2Bd2N-fzB`~`d!wZ zw-n#Xjjx2lWN~1eQw{j?52d?KR)@d5Xg1Am_B+SZSadn5+-&{ma=EI_MT^`b?QQ>h z7=FLne=PCLhU>#lOGPwW^;^Kh^<5cdCq>ph(*09=4vn8ct0!s7pHfbg+zR^pPxq3H zP9e{byX;&N`A>IUOu&joh3@W~MAI|P>yvQ}@n5@VZ}qpumN?}!if@)k{&5?+)5J}1 zKPS5$gwjo+S{Klg6hWf!te%s?DZgYaps_{q?swN+e|l-wL@(}~aomPh6yLoz09oNF zRCEVTc1=Lw!Sq^}4>92>#%eeF{$anZul}RHA$pGHxBE=c{>z@LRcf_*JGr7O>5#Js zyIR_aRUMD25)3GspQwhWWG51ZBp{D^_$!rJoe88n5uAy^>^+2>OMHiV)U5gW3z64#>?%eucm%3DXCOnbB?k` zzw;v{?E;!P$vIPy`n)x!0C{y>d?#xgXn+U83(cup+-ySVxMlJV0VF`R4rl8sum9`e5I@bbk>!1$T>beC^J2&gPo0lKkP+$Y}xA(MR4$ z$>E4Abj0)AFz%{V*D3;f2u>ounyU5kdi#&cm;IXbeGyfqoS|g71eKHH~u`C54X6ri+h{HIi(tvfRiy z^%10btPx5&45vF6*3M7;Ii+n9c~;z3tZh*g)OgcG+Azi)tl2E59Sx#uaSJ3s8<+7# z83yA{aSk~0)!u&Ny8r_nwIDa(y!fUXB;=t_QnHqH#Ak7yhsXDO1Gl*e1s+E=0gsmb zYgk4oB&s6dM|0U;zWMFV_S5U9el)2M@$O4K%nAKeui|?}Yki(sEV9sK?bc4vfa2mx zAk?hpTT)@~xBM~vTD?i+svbL!3ruSu?Y11rywIIb0A7oHe41W2$2Ty`0pX^ja8`g7Xlg;dSbEkl>4rQ%q{^flq`F0WhGM8f07 zm2Zmv(!-#yvkQ7{vHmlSNqe2IE&jfh-7pgr^3L!NxOr>U8)n2lYiMDb`&BTWulPgr zBw>I<3X4?_HZqd9yocaQo>WH~xD(AsMQHRO9CT=zQeZMBW0E<0QrAio34fs@Z)jF& zrN1=!B2`1XdE*VtM{u~Vi~DY}w>RHuUiyGCxiH2Uo+{B97?E&H@(FLZ!AnfFYD9SA z+?sI8Eb44ku{OZy4>fR1s1>!w)^P9ak~TkkHb3%fH0a}!G)ao=7-q7TY7)$ug-*ulsJ|bo&`$>*Guf8}t)s_i=Z|*FCD-o4Jb2b31)|MmK@D z#?QIyiHXUey8Mwk1sHs}u)eA$Bz{IRW*4+OIginuJn)Q2-~=~rbjU_KRkJ4C01>x+ z7+=jzYXAz?y31KMPz;6J!qt%_Eo)LHHPTn_0v%V!h>y+RgX{L-?DP>srp~F)I;$_@ zvhONyXS?31RHxU0FFVFj&Nc$J|-z-ww z%DnS?O(?#B-(?e!Cgh#4XgWocJ`#3V3fJP)M0mXUTJ?%&hen9hG#Y30G{wQhhtZWf z*Qe8)lGRgJ>#L>~Mar^Rj5pICoNI8kQPCo@o}xA0*wJ4YEX4!`92U@7ncu^>?LTwD z%1LSw{3yRuAq={L&C*2g<%iHyGkA?JT$7Ei8n^l%|537WPwe6r){(tGKh;)?A<^FI zcB;w=1zdCLQ&xnY5o=*tQGjD}f!{=(Kl zb%3lOX+7#-&0#i(LL93*khu{4{^*_Sw))WAkMNk}!l6fALE7j4L^I`n2|g$3$VbX; zE0q!5voOh!&GeHW-ze8y=URXhb!W;Vx@A1R2dU)fs<3CRz5omd2IgE}<$o7zmqzZt zF#hs_MMq7R?a{2PZDC!#)6ZTXt z4tR~*T4s%g*|wCcG2QoHk#Vr3S1C><~W1LE1=o@x7_(vFH1<$V%4odIVbwxf|yDI$^w!ln=qnB+K zPW2S)?N4lgP#tHA3bY-X$iHTy9#yaPe;rHqJM(z`HFhaDIG^;DXm(=Vbpq@UU+9i4L$1T&T?!*<#aY1YWxK}zD53B*y1%9B6XKm%-xoVILntUha z=+2|romK4HrpSv8Xz{-8$YE3)WXsv$b#9P98(Vj&2k~I~t&IL|VB7UH&t$*#o_|Hm z*CjmDj8ct8>(U*E5LCzV(OssB{K-w>n;@VWXYI&eppq<-u2gsj*!>S0b;PAXsFrej zF^O9YibKY`YI(-RKNfY}ViDD?0nfm+jnqbVZwR5o4IE~v>MdJEckZhmBEzwza z>X7W(e`Xs@_n*X`WW&ts`sw{F%TvRvcVAO*KQ6b+N?B{4I46%4QucGi7dD&@-+8U z+%5H~0M~L+>7~a3Z#13mO1l+ug|yRQd@YW+4KleVUKMPWx;I(LWwb@^f1ruqH!`Cx zEZ<|8L^*qLAGJGFcIhQIeFSAz=WaGWhmb+AdT}v;=zK)Ad(qYFVQDe9T_f6Erx*+e!KucM} z>iNQMkB*4YKO&rjoR;SQvQ+i(MtxdE%^;a?K=vagnEkOXfP|^YxKkrRr#1JtXlY0B zFJ}>}2Ap5Jp|@LEMN5)$!>(qzMePtjLawHme_hiaK{Nj&3aWseeMu;G-5NdAEn{Vs zv(k0-DO*dK>nrs>j-iCQwr?iqh1ZB~m5fk(LVdKtS#e#fF>q+uLJ6bwa!oqPuO%TU zW^TyttH}eGy>YfSdaC}+H}c~nCQfC0L0_tS>PenL7r%MtKBL`Q5Tgl589sL_7jS%0 zX%k9j36;n2z>)b&#==1oO-8kdj(;P2?FN>(F7aDE)^;WqfC=4y;&+Fh8iKoaDU*^B(`ty%&ZbB{p*knxG1fU6 zf@!!0wjhnb>!#V{(taDsKK3KDR8k(RV|c}|1!YT~!HW(mG~C53p!wt49q+h5r2z5p zFWME5FKW`vjo@Uj-e(gHn+9!pw(F#StfsG(FaNudCkne(KC_*~^rU_cCjR~MqoIFK z?ceNY-Gy(QpnUhgC_Nlu#b$3tc9)H6vE}M1@ovuU(iBoK$3VvcHT+!E-kz=AS7qc%Ch+E0VS{Vx+(>q@`tk_pB-)kqfe4VeR1ze zs_z(gNRaGDc^8?<1@jF*$PQ3wk3C58RKT{O&pe&~=?YsPb{^6%6{J?R{ZidyA&dKF z1Q+esH1DrQ`g1Vz+9yK|JQ|X+fhkx}xQ2d^(IzPfF4}7SZK|IMFwtA};=>8Ocu~~w zSmRRcV3uE~IRUhJ$PeVXj6jVNL~{|LG1e!XIu&pU)h7S6g3g&3!=*hkYOtzr+RD7} zs{$);>J^@KfxqvFgzli!?}1!wo~Cm5q8AO*=D8NI)q@dpIgwy>35nkQJh!Tfd=}H@ zU|4}oaeLfRv7==tU!*AgcI{7=BHurHAp~g(KFU1)gFWJPUjx4YJk#*rTxrO{-nVJt zi@ntyY3sY_D|^hVMFWlJDBePdQFhmqY#o!`vqQOcXPq)*6>n2;&LqJW@3+uupy;x{ zgjoI#h}(-Ydc(~+0ZztSy!B6P!FoPnYmJ$G5tz9npP*vzW#?wIdFW>JmHEk&4}Jpt<1U zN9t%TYo<)7U-b|7o;jS<*d-UWD^{RcEl;n-yBtcYK-TGQK&oedoHpE?gbtEg2Ajj` zi=qbxtSdqPo-u4>z7608xpUdzlBjHZetZ9yNXBqgiQSTV+^t;1H+$(o*`AtW7mwxF zQCP(S^c=lj*j76daLXyn7FCEO4_UUsF|3Fnh_GAn%w;03{!g`_;Sfv*ZjjA(x1YB$qQ1U|IEY zl?~Dw7$fQ*uPfP;{mX92VEK}BVG_?W3)67WX6s>d7vDMa#HXX5Gc`37<(6QGPH#{b zFtLeKDippe2))=HCt3GyDy!nuTozyw+(JtiXEHVxuv|a1tO?5hqF!M1?aEH!l(=jlr)Kr)gj&QH1D4RqJOK=)0y zFLI4huv5O3)wB0Icf5`IjGi!G=wx$u;5cXy3f-ey`$~I0rjvuZwh1|G;EM`6!+k~( zk#A$cgb3p{-^HK)NPfbiti__4g__n*+kUVbV{GD1xOdyQ?Dc^Ri8_!k6BL{acp~ge z$K2W+yk|+&yPx0OSruAXzgQF4wFoBg^+fWm!Z%;mm*c?@s(UEqZFO8Py66)z4#ZY4 zJF_y+WeIP)M8Gsd$rcr2ernKS4M{8aZegR*A5D&oJm+l;KL{I6EgWo_xN{^qhkaY| z+Y!k)xMF}oi|J^-XQ4k^z4$ajsB{MJT)?S}?O3c#XCcpVa_AlYxrPT}k^`IE2YU$j zTW)!dnVclT*qx-iCSmJ&XUS)a78~p~))QO)Xyb>J65->AtV>UuS=fD#Ta0l^6#q9i ze@-0W=*`o z11_;8oyeCKSUvmG=9UbWT7i+<#<|!L5KTOv_8EFEZMFNt%!GWMwGEIi75Cq|4RYrT zU(A9jYL$wktUE~k9u~CruzV!X;AV$)*}q8MYaG8!56>9y=HF;c43c~YEFxaG`e+gj z;!McaUy({?EQcCh0IeQ4~HTyMJZ{?nCz(ekj|4M2I@qf!zvqPbcHm6GO zBBrNZ>9t8EO@q3Ss8o;io*EM2b<-oJs2EyjLT@}?!~O!TC9m4K5TCcAkRa%l!&pNT zxj!G@z3$(@AOCVry?SUalj{n2@4T#G1V=&h%-7&V2r_c23>$Js9R*)mDb*paMZgos zY^;c|>C|IEl7_`w4n1#%jiZMy_NqqWa0%=z0T|7=QE8cGkCG2%!l#T)K9(hVc$Ya3 zIkodHeB)%ZojyUCKpO+Ut8jjs@37c0kf-2l+m?7~&lS}_Mx<>Ox-BY% z;djQtDbZ4KBYs~USHqOx^R#_JMIO^dnns$Q_b}3eyGT5jlg+Kc50a%1Yb@lOz(2HtwsA7=$xhN0dkysv zl!gyYb!|a=_(4=^X%2_Tv8v>~c~u#Vip=`~{%rExaa@@5EzO+@F!{_i-@3$xdl(`8 z4($^iY9g%YTOiQi^lj}-t3JK@O2dj@ku{d^XYah|!86uyu4*0b0k14b z{CkxyKST2k;uJj`6D@O%<#(DOtFm5T>0-uJL;)QL)b!=ncWlmf?SG13=wk}(*um6; z>nVPUk$OGvqaEl6D9Fqpa=SxfvqpmOxfK`^!LQU;W67W-V?hG;D-F%yBS6&lKQx6{ zd=yGi4m3_nSP~+=XoxFa&0j5$MM*{(UUsE@JjqJqDHayLKsp7k;jX-MaG)o9u4m>B-|=h!W5vCbbOXQ<1w5h?5}dH z$8$%EGozr8)O<6=7;+ zxp@uWI2V%u;b*$r+UtL8(L$2V^(vi|jUEzdYWXna8tqvGEw7K;w?zOCSq8^pWCB?a zq4Dps;;tlOe(l+%?E%mwzA?eYy$Xd6OU@mlUD-@3gg=3g!cE(VWby_+sxu8+;3l14 z5-zP%@GLaOsi}I-Xf2|x2;<_Ots`xE(q8>$arlhGUPU5#A1a-n4@X`K91M9(rnLXD z4)}3qK%VeNDUlu`3@=o#TN#Np2*c(GIKl9nK+H27>J{<8`dt(Ah{ZljF9PbP1{I~` z8#G_!fk5eDNi4DhzAht*C&LlH;s30;bOXm`9dw)&9}3 zsK}V<;nSd}ueHyFEDxXXXc&WO=;{ZYTy|yM*8mJZEURmcivcKX*kRnx9tzng?eLTZ zgosKRKX;Qzy40I>6hsPcdg6K9oA4gbQ{@8z7GAG^+JM?_pkP-pbQSskoIt*0%ma-` zj01=$9)K?;=6e+u>nNt?M~}p6Xrt-kVbavk;xfWG5vXC&29BLpq?kO0%bP7aV28j# zxhz2{P53a)VU;61#Hpjde&&WmJSgQ;sSz!c*Jqf|97;8;!W!M8QRlg@e8-5mV31Yl zo^u`@8^fjmM2W^~uS37j+4sV>An1U#;9qasq`B__%&_dBhC|`n5G6l3^*w95f{4+< zW0B=U>-eLZ?ap(b9o8adikxytpB#vF1pH|^8Dd?Y8EzJp;=1ow?UMs5RV+=KcNzm_X3K4pYa$Cvz5HDHAP zU4ib7ozVvkm?{DT`glxMH1co(C+I?={oqLgKkg71dMs9lXP|>Jcs_P^Om0xesI8MK z{?c8|+Obmi;~q)2w)2S*r-h{12ATUWhW@c#3B(5xa#i1i@5xL0Mls_Is6A^e zr*k_lM^s5?$tQ}m(d6Y3UqG^@a5%MWgZYqxiI~DD07Pf{5q;ZjL-VBVjE}NeXTxTz zm-iC=AKu=)-(NO2eVN$EJWoW#bbeDL@sC98%%8A7`2klbq^S0@2cD z%c->#tL_$zW<-S7<;U#<1eQS(g>xF znfWHdIwg-g&wH!^qZ85z=3nZL%6Kl}LL}|$gvkoBsYk#~e}CRkgi8yp5yA=|r@cN+ zH!%r1^a{KqzRIL}(+Q1Cvc)+-11=T#|3s-(;A}V4@_)7y!6pP15JGgEqHe}(?yL+$ z<8W>jRQzP$?(y&2zLOK0Jl7Q26h269eQ$L)r-xc9qrWoi!GoH}t0SXjhfv93(K}v3 z?--(aCyg2hAGHoWVb~c|Fm~)&ImJWX^D=Jq6j$&0=ufOtJRJg~d)2%gT}V}iIjSFQ z&2{a8Sj$FNmc#gP5~FW1nj3|cmzx7J8o<97z)Xe@)bprOhlan(fVHWFrz#oL)Ntf= zUc^VimJ#qkdGTl}6a+FckRF`jGvtl!U7aDYg7I91n*3~ z^@|#~+(wU^$vO{7pKn~)maZ~>=Dkqwpu6UmkcVM`o8o0eigzeYrbzP~p&tOV>!R7v zYiX%;CVQCS;?)+{8zJsdI0HSmlW_%S{||bdbnV2b(-I3SeBmH}LNy^8&CrpKzw5ZL z0kQ~JSi5BtY0oK7@Hm4?Um5yCP(3ZYG6qSR^GYz_$!jY|tiT%K)yB7TxSF!1I|^o_ zH$-=pM~TvR zgU+S>Dr?+uYac_`{uP3MyNRt0lRtzP6**KXa7db>Cs2L+YEj{6_Cj=PG-G;8gb+h= z8V_=q;6wTwx@-NtnwA9Vud#YKQB?~U$QU(IuSE>a(W^Wi&aZkds&gS8w&(6>Ys=fz z?1ekW-wQ_ZKUP-Qh~FteHj4@B*K7(tN8h{IRW5le=B z?z3aY!)M#r#@W^W3V^15z45yH+1{Bli%jqRVbIrY)m&zpx|*~>J1O$o>gx;d0m5Ce z&re75zOxP1ckQ&eju@VKu!TqD_bMHgtKq&WwjI%teh9}7=pella{J}}YimO#BF>Z(7dukNVj?fqx>_>@XtZ$SXCJHQVx zfG?_%N&^79-*iOzpdgYYL>EPXzEsG?lmL$^t$}YwD)_55XPFy@cn`r7OP}5A&MNeC zOXlpwnqQied9{9T3HkdZ;PKF$%yu|U_h2g+8Aj|J?>S+yz|}XXv&(9%&brAc%^Lj< zCe<|0$RQcJsp3{YJW@13h1DQVl+CWc`0Q}?BR(qRUKih1&w8Rgu?!!VN%k59ptc+6 zz=|7Pc4GIoeo5Dgv%XCvOpd`}3^sSfnY)B{37Sg!HhjdxR*>MNCOV{f`b%cgNwYAvaC3d4s=OY5OO3LMR@}Hr2zm-=StR`=%U4`GQDcQ}pK?s$ zdb*4&hNkb?lhl|&3}-2*GGC4M6k_g!j~KJl>_Q!mhHS2L8s*A04+RhD&IvKjvQO)j zp23WmJ3%xm?jGf+k|zf!)zrd*TDu4jbM5 z>)$)5)h^>f+~b4#>a|M#k{W>YT_JZvFCwDq z0$J6W_iK?%lY=V5VR|MjUP@*Kfv)BM5_(T1Uj}2h#*M8s1vH@7$sI)c>QSBBfI+TE zhJuC#sGrD22cbPzwnhL0(cc#pyv2wA24pl*7kFld$i=9QPKL}LRO@)x9f>6a_Bcx> zBz5cC`rEpja<(P>rh0ao^USSS3Fd)By)Rdi;TRP_x)EFu>Q35J0GYoiaC4O=%Owf5 z92|(RCOW(EjgFjZ_9|vXZA_Dy{)?RY;<0XW zkIotNT^`>r8;UO5CwG#Xuee!dW3q_}Fv*o3g48JJtvB(o4cUZi=Ut*>VRBoFcHG{xadWZs za!AN;Nv&^k!db~^)rF-7+LYWTAwoJcI?V+!H&*X}9={4jmCFl^cYEJw9cJHah$-km zvus@+$PX>lTRe=BkyF-;qQF@sV-x7%im%k|RabNOqN2Wy9zp5-iE%Vrif(5NIIWNp zEYs9p#4We8)0}XDKn>(HP&42Y2c0jT832S--AlCFG0BM>Gao2;mmC}c(+~$3<8~A3 zia{dF{7Qmwgm17iSB7l}lQq@>7Na`UQ(fg3nDOHUmkH+O;-%?8)G6qhymPVQap6|L zT5zK{f@h{l;tniVrB>lh{Ou-2vSKK_4;;%&9VzQqv}qbGYw!L*_5iaB92Ocl3wH~p^YLWO-ef&*G)O>u z?EqHRau_qpNR$2=bcZ{K{=L+6U@V^fGpaq7iq9(eR^A&dFk4&sJod!WKF@O8w1^-c zgsZOPyGckgHKwG8l@S9E?E7Cq^#kp=dR=p!FZHRL&8t@118$nbt7pMb_@$j?&_D1j zkF#4l^DSJg>mTEB`$N@WM8y?#dO%0=doDlEh;|lQvJ!-Ijh>}yl3%g@*~O{+ZZR!W zsUR%`DrlGj9FBtJ}ac%!pcGsLWMc5L4{)ke`8Zz*X zzd`yG3ewq;{={lyq@DCbH5`Z9*s@~QEmbBVceQ517`c@)>;GsYgjb*t#{y|cl#brk_SA=(6aMMS+pqg2#Gz$$1sNMiq0M{;oBe#PN&8v1*oU)ddcZbULwc%?c>yuUy}(E727v3^G8kbCGhnYs0R zuCl5JEz2cgVynPwYR|+Cs7Xt@U-hIL@5*w4V|4}h2;U0 zw^wiAWy>~d@w#}i`J0ZUrUWMhl8~I5ojWV~=z$D*tM13sHP$;ew~<6b)}IwJ)_Uju zj+K+Ge*2U>*x2zF?}|#q5L~X3lw1PVy)(0}$~pYz7eGbQ>z9ZoYF6&kPf=*)5!btr zy5)|YjV3Z9m)prmHKS?}ILj}wvn?YpHW+udF_>~wJryb@+k1JyqFjs4wfk6(LIUa~5q=ocp!wLzP z6^a^*aHvL+}SGidN8ZDpdBhIH{CR&HQfYhM#0pOwLFuLg-zN7ASA6MihX z4VtSV+g=2jf3cic%MnGrwwoLpU7y_!q^K9|(L*J0iy*^?ossFq~#)F^jW#?yg`?Ql0oZas|%Y zrmejG02LXJrQ@Pt1tx{KR81!&zdO!@==si*)^{V*IvOjh)OH7l3*FgJUDA{+^Y-S= z0)0tQ5W`VCs2?MYxQ4~##%!s4@k!3F5iB05I9KUjadgS=JHyh;`=(oiJIne;(McU{ z(ihEXq-|*dqD5+WNNHiFPDSd22I!9_766nCqerZ_{njj4c*)8r$hMh%lj2{CnLNHF zjs9}B8D3p-COvCZaunX)EOMcn`l(UfHcVh_@ zJdh=7{#nxQDp&-TJF{3-#2(Z+pqUw35~pe~7FcV31-sbF7_Oln5L`rfch={ItxksJ z=J4wMROpQ(V1e^m_)*%kJS5)-y`*J<;2Wp;CR)U#7&0$qqi^}0UhOz!ax>kK@xHZK7#|+(Tsbye|xE?muY@kSTi(W<`UjRM2wpm05 z&1Bv!T?RwZR+{3K7!qsG&)80#&{zi&#J{*hsU@g%S?CI_E5%IB<Iil#`1k@C@!EDsnzMJM7K<5?RN)LFT~T}>UHjm(QlY}PCu)KT~Fj|+Ix&%fHB z)O}=RKw*v10%^7+sfJ=Y@DD(zbS7fTa@l93i5g+wV(Pw_vC{xNh2x=(i&<7VSp2_H z{7T+)$_A-oJ+>OQ&ONX7zCD3+s=?$ZD(o}% zPy5NQp|Y~iGUD{eVZj6N_3zpu@hi$9b)8i;%as84@F2Q*oUKolD3584YG!AGV*_#i zHIdyq4Q|E!D!tBsf07-wbXT=B!_dN=@y;b@^#K-?++A{Iwc=@}N2zik5_X@Y0V|0x ztEjt2Rhj}I@JHa&jRqUOoQFM`S-)mO$Hh1$#z3}zUz!t3<okL7ubgmn@nCD6v6*Su?imO4rM7| zd8L5(K6&=G@7 zfT*EeO+Tsq-NXlyzr(;1N>%kzfl+7YHK1*6)rIho9N;2?lsekjy>W*)U5M_thOJ)r zXOFtah~E%GuLKEjvv@NoF1;hFdJYubF__Creg!B8S~K)zD@~4hH?DNxThOda9t}!4 zY-Owj0+df@mvz|bwlO)UH6ptom;%X@Esr20m5|EA?7Oj2lzT0qkFv=qR$X$fi+yyq zHQK17{h84}6ivR2*-ek^%4_8v=U6Ly0jUnLr39m`(#PN4-d3EWwSH*mJu^b`8j{0A zh8%Kf^K;7DTlJIf6`}A@7@ypf1WyVBc`7zvpSQ?m??;81)r`AN0`K@|5bEM-G=ARh z>EWl@QpH%7WDsOR%`3H|;}DuPKCmlF%~c?HFPO6q{&^rs^3RV}(xLUKX*t#4*VN$| zFch?pKu|?gzR(_@-K1HuJyEAJiwET5PeE!~OAl9P7c4yms3KpmY{Vl5^0g$V`;>lYOPWf?gt#Yg zXB=G?8_=SgrVFI1WrfKpBS7ZYoAX0)*;w6 zk||T)blwk?5<5~;8^8GevJwOkXia+0g7(;{_l-il2{2hZ^t{LXu$m`>2keikIBbD1 z3rW3`Q*~U^PuaYDiFN{zW)ADVu~mX5+wHHLz$Zst(IdCUM{7swk4ye=c7{?MLw9vr zzU`juQK)17xm!^7foZkqkJD-p9W>a`AjUrkjS{@O;0$!rj8Vv$a|usIbXj^$YXUzH zr=u6_a(h(A!>VvTIss-5-^|3G^|) za@gY8pF)$M8Uim$6+Nw<%QXwAO}KE|+Lp+8}Ixeh1bpL57xnv zFr`RRs}E>n3JHUe-u~kD5um*+(%JL?0tKvR6gz6uN^m_@eh?hCVngDWf(X!?HBhSmiDMxv<8>b?Uw8=s|K5SPHV|R`5>qqmKvuBQGTUL1 zcX`S4h;*vR%`Zcv{u;TXA{_SfLfcKS&I}b$&-V{)!YyeydE~;`4?{i7Lx1G*&YB&E zzw`*;i{tl7NDf;F48|H0!8h_<6bxJ`ottwiKsTQn6MX---*voVs}DS<`bLwAdyr}J z!{$g!T)d&^608s6P^L4L+grH)d)JbC*)dXfK_q9;)kGV0_>J15CeH z=HG`?mK{`48~b(ap@W2VDEE~Q^W^&WhtM`BqJNF_m&oKGl$iKgX`Y#wcyT=P%;)>5Z|vllC^}NS1EH14m4ZaI&GJ$ zBc`Le82^^lKVEL{ZuR{uNbtgS#CxJ7p1*bJ?w2eUdmLJEYk+A8yTNxF#RG)k&q7i% z6l!u)6%I{lc*12nj67uTP5u_tlAb2)GqyUZGuI;c(jr_}!fr|+zqXtJjX8ORiTMu5 zx2qBk%^ZaEPsAY57j=x249H1fo4aPdR!g*d{wv7@fPD{8Ybl0OSxTbFn}_xQkWZuw z&@BsOs2(l(j>X%wlpXYAhy6Sr+77T9oEMLj;@$wvDOtCi&}+l@a3f17i}FQ+2gk zM2g8%zf-Lr_tba%twt4|%PX-kErn(KFY$J|5|S^AcO#5f0=sxWl6XX33@hWGJIIR1 zL+8O^7V$0~wEbWY4?lZ99c&==3vYYI&>CRlDRT!g_y?@va`dVYWFirW3e5G6)0^V{ zu&fCg?2o<*NLfSK8-MMWAsu{OY5oWz8!vZyC;O7-z}{2~b)X&F#3#i#B^_EaH7+(# ze~C1MAK1TqRYmzGXw10otCjbA9*IT9D#oncyS*7Sm5;JD2 z6qUm&73DBYB`)2GVI(mXw(N)^B%bfl}$)oN{Bbe1|=|8=*?}devKnftc@-<5BHX#UM%U`Fa*Y= z(wOAIi0>n{oWbrz8xP368h1D8U3X%BQKqgPgd$qc8Xa>pnX(C;@VrfT3l4DBb#r~L z`U5ZrUvN{lWJeD;Oijcq;Aa5au%;c{yBW@j3I?3NrIqZ#@6!C02Ym9jO#N3TvF@e5 zT#Y}|o_B$#y?!y!iv2Bfbqe%Sri%6X9&EB^z6R-A6~yG1v($3Mt<{;jcAGAX0rwxW ztQ;qJ1JUO;%Y*~^F^x-{zTl4AF74U63psnHmu_Yv8Be}*z7O2xh8LtPKkDf=bvb;G zF|w!+8OV@KOCYloPK#Rho!CAf12b*!1U$9MU&wk2#0#PU&%EB+3U`KZ?vmfo`(G>M z!jp6yE+KDt8LejA{HjlxiF24+^E&wJPGRf#{j&A^{m4nV-)MS{-zrjmLXm02C@n0g z5!|(H4!5vGWPA}kF|P_qqH5hokOK|+aFc7cEu(Pozr|#*EA7!7FW>kVU%PWjkmK#H zx|&PUB==KSc^_j5E$@H$m{+B2=&O=je%{G!lS_{C+YQzW#q@#X{!Ao6GhQMd(w_~k zgah7Wlp1|1MRdZTb0uEbu&`ARdKq}m+DlinXkytT+6#h(K1o;dInl+^F`*%DJ2^^c3PTE_(+zRL^)hm1 zgX(cphDO`wtp0i}uMJKxBC~gAbKXvyZV`uxn5qX_dddL)z_QdKy2G>OA*OJu7sO%D z3-7E@HakGfm@ITlqc15T=^_W@4dqJc7L*i+{#WZK5LJj;{#C@Y+97p9d03it#b?<1 z%raP!k|5t~T`@RL&=YS)NIrbF5i-CZSvxH|tuWz4T_;jCpzZ0SANvMnY%!C@SR{2& zhZ3Z#qFXUV60WSyp78`}Ir|Fh4s;!6wFx75oZmL2@AlS(H@~7JfDt9_>g}!Y@lnI$ zh;eFOj)xCt%a}|Wp3a!5&Ay>2LBhh7c*iTmEmh6t9p1`%hdyJ-WOetOB=XNDW zsYq&Rf}}SmdG6Vb;gW8na@_a)NJB*SJGm54!jeq{`yPUx=wCl@%ihrCU@BPkZlhk=7Y-~lFAl6V23I!S_(D`r z24;oOwhB`gx^u;XiRb{je;Qu&w(4;#UDn9!*`V(o*56W5E(rlH(RQ)>h&aGfv63sU zWgRh7iXsV0zMI5;F_@UB36)5Vi}n7wx}|(i-C3xH8tTH&TC)|61+e!LNQ|RIFRd^b z&0AI>1lhT8fR*lm>jnBxS#v8b@92Xz#Qnpp^+t?pep&ANW2Y90?BQl$|Pu7-R zpcdj_6(l0D!f@K7lw-K$KNm#EX-mmToxczRj(ZoH$w4lB4Xk%p&I(^2CO(VvA8wLW z4&9xqs)C9o1%-EwX0rh;qVT+xb!FFn(YCMf zg+yRF@vb2<%N_q7WpQHK?XbizS_LXozo0Iu*baz&?E#BfNKrrxU?$EiM4dN?CE>W) z;3pX}#xd1XLD*Q$i(l)uPuYO(^3m0h63E3{_y*$kp0Uz^4n*L$CWUv+AX1tGMzUk+ z)}>7b+9wys>yNUkJr|&a+E9(s*a5#*t!Lxd&A#F98;yWWa=lZ`e`^{^3ZzEUbuf5gY8Jc(kH!qC&M7_=t3d?E31kpFRyPqpw4KsC)dbUPZg zJn=6P?(*0F@Gm@9EjIO9#fU`vo@*v?reZ<9vAoEUiMhIjIhpC{ll7x#IEHlP!CCI; z9}E#@ZdxX{{PT!QvCxyTtDmpzurlfa_uT{24zX$fs@n}dV}ezz<6gDSN?6Azo{XUr z**7f<5|s4W1+i28@j5;v26tH56e|=fhcwQYh^c0CS6xElB zu&Bp+^LaaKqm#||$9$8jX?l6Zp@Kb5gEW2B-Z}{mItS4b#AJ^@p=s=PJ`Cv0Jj+hF zIiiP90%ooZ)C{@At>gtUUtaFJ@AJW^>GJld;{SC6^1Ya4Rd4ynb0#}9c8>co*n?c* zWv^65a`Cy?=ZC4h_|et2yI{*!Rs0dPvM~c_D@bo$c+**#rC#+=3!G?l;Sw*8H|L?O zG<3F*#6s}aJTPvC&DZZD6M~A~*nMyA%DC)-@qaT^(Q7(47e8NKIM`6Nsf5t){=($s zETZhkYJLL+_o^;D07+&>4w7n(?u6L4H(2LQQ%r05+IvjB+tjQNHP)U6Zl=z+USB<^ ztml!fn@Vv&7=9(ya2EVNA^5gsP6sJU%_bth_&0O=sY7)-pV(25VH$DByYq*3sfO=RftQq$K|Tfv#NZp6&*)ZM+TSVq0fx3 z(+cErB=O6Vjho4MezG;0*Q~WC9hlVUxM>Eve#G#kU>Q4^MJU*vG=v9)bpyp5AWcb5 zyu95=oJ-tVbwjalbkb}K*L=k5KB%ST^lGP34-U5nIuJBQ2TUWhMH3n@1-ys@6#K2l zWUIQZif4(U+1~A6$h2Ua(MAKprNwboj7xK;~&y zKy|*scC$SMY&WGCPKIp`&|F8{&r&8o!fKik&Cq62H^Ijq1x@g2XDr(4T=2|&TJdaa zc&(w&x;3eAga5U4sdj55mnfQWOO)W$ZLops{E+~|ltTAvq|kRO8#Z11cgnxde4-^y za(9K3QSy$&T<0HWH{xTZYwrTnB6k{UO~~b}ggUTfj6QeBU2^~$38A2B^>DFjMBXBb zc<^epk_+E8sJ1mJ&Bve9-$j4lNZDr8weQ~Efc9DV*hPNLE|=`zPy0+s0=(dU$m zB?*$4z>D>?&zGxO_ev z-P`Mf8B`$w1dBchH{c*bhPSGiYBx>H%Se~O=>-i^=B6ocnKanuL+ml@~|CZ80N~>0WqP8`puHr!!y**gPFR{e< z_6k0QjSizX)(W-1*vtt&V|zyMQT)HrduoJb1rx)nV-zMvoWu0kJENRM)A7 z#>E1QXE>8L?JQgnVh&v2T!p2z)qZIC4c{8L~VJi&ME{JTQ8S#1SNT3dR9G;*nA z!P&i7$v8A`!Ptg!)@swRdb2QP5>;?t=8y;GzsB2`lp9uDD)fBv&z9LCV-+Hn>snB_ z7hU&bk4dns=}X@i>*|1SEUz~8kdR;njcin6n4ico$g)kZYU{@#sX@1cZk|RXpJ|Q` z{g3grdPj~BHLV(?*%~7!ywwe(;?aQn%xb^JlKr8psIGE-VeJxw(hq6h--a`=%{be* z6+F6V|6^OEtnJ@*kkORB?s@yps%iI$_g=d>y;pYjX!v3N@$#fwT8gB1YX976rM!|a z?mv7y3>JL~%r^eXcl54x>aI}aPw)fw@U}zP6El%Dg@X|GzUxW}PNeII&uz5@;P%Y_+2xIsV>O#XWtV+VF$Q|h zf?ldH0yW)4c@?;bx;*`#thkE4S=BqZunni0>Q~x9gBy97m%!f>e)3|UZmu)++Xqh| z?GT2KqI9xcyqlsWLu+g0z{h##JwLTBwU03_A%mp;L^e_^R9m{ONbI##NSabg(>a8C z$^isf+~46x|5!3%^-tBmeaV96ubAaz70_*^Wc0(-L*lB zwYnAW>m(~lFkkDh*<5ujyB7x~u9}r)`BkKaT%l@Fc6t8nIggnyQi0nSc}YSRiyFzqnrwsh{c@_ZX+MOI3#ITB!3#c}7Ngs^E>P_Yj;N=~dOH{#+> ze@bCpXWV8WomXjvf0XY7a9iCb?8G~(V`cYDM&xCEHYZV26&gl#TaE@}lxB&N4e_e~ zR?`;b8Mhe&+Jm`=*!E?lCTla%YG{|%AWuwshSzZGzuz5;Hr+Mzwhmd(0r(vVQzCTi zudKoskL)eM(#vObW`TG-w{_S?MQN(A+pnm@f?a=J7thY6MrK=Q>O=JfppnwqlE3g$ z#Yo+O;QHJH)um&Nm*!>DWS{2LrIouz*pv~ixnz#BLJ-6M z{By;sQpxx4PuPZHr&HE9si6!uUlO-A8oa{?fnw7mmDfHG&Pic*9zpWfz-&ZdNQ}ikXEp3JJHCOHDgU`1?#lu9>2<@s!h!y|XZOdZn>8 zO@)(f^fJo>aey-REg|FmOt17qbn{moFu^?FsVOv`sFW>kmfPG2QlA=y!5oV>&nSqF zhn9s7Z-;7d(do7>)i3_sSRI&3SCj_+iq(Z5ui$U%`ubAu9jo6bgK^GhK!&Z+h2`fDy$147MMNv+_W0_*4`S*DTH#9K!n1 zm*SR;_yQ2r?XpEd6YR@sOLTU@^gyt$%|0gx?R>c)za;vjeU%rTI#|PBi#;If%;fV( z^r$kUA`fnG)=Y^L@NU~dOgP4MY^+Qo2mFoPp=HO8BV|q-YzMOn`42+l>^JQRJD>F) zlT7wx>uOCLxzvACd&uRt&h;;p?FbpCeOu|JD#5XRpom8vpg?(^ibvLJDCRB6Zs<-I z=D(VRoBu{XW=DXhqYlP&DwQ7R9^-Q*`)8vvr4egNVGwt?^mgr1Okxf9QElN|4-5WX zIM?fnRq?O=a#R-^awB#c=;;N3jNlvQ^aq^p1+C6}Jt|D@PdabuHEiG?y@ri*q8YrD zb?BS4+aIjQT4qRo_xz^4enV# zb|rY5e`Gi{sF*1+9LTj3J4_pYRqCC3XUFQDB2L^RdeQga5GK*-4;0gbaVtdxS5k~# z>tPQh*WrNfCp@)R2=RsEV1)tb@iwkFvKDQq(HuU_0Q7#X^m_Jh9;M&tX&iNCBshb0 zY{i#zXWGP@v&P=-gMH$)K$4<+88!ZuE1eJHeC0f0C0Hj~2L|c|;&kOE=87xt9f06I2=1oOaW-dWs{-SxSeXs5 z+=b;ag-%)?87iRww*NRi45AS0b6d zdv}z*;E<)Ok7X=d;zv$Qde_pkV;z7AgYNE&wT90vO2gl_I?@`QnQ%n}EyuVR<7_%j7U_C%fD>@-W)1cG!5ES-~zpwD&pEW1fGhjv}v4M91)^ideD+V8Q3!+Uj z^O7>N?Q=RLs|ME++8OsALRLndp8y`|O|%bR3R>+()qGxhdNxJcvEScP7 zWvG9$FxbYNq+*8hY-#Q&{zy+YQq7Vx<*MHtAN!pbfJzmZB-A2}VKSJ*aI7$7rj7{~uypD^F*1`+MfDI$2M}l~pR>W`abMpNf{#l)Ny{@@E@=R0m?u z5!y2@v2+j#DCt3vgZAJW#~1CThV+B2I{RbwAI=t33kPX#tQW(OLW`Y-7|#_C(noLwVevGcjY z@m@le_qpZi@>pmvJKa&YbiDh{qBi>kMDESzcjxU#_39a+qxp7lUK|$q$0jdxx>GwC z6*Cb5Ir9L^f~jDh-J;IS&_RMS{F)T`qVH%z<5|7b^fP4Q;G^MCyDD6K%|2if$+b)` zI)Cx{ufnM*)f^3J$O(sgkdVRN)OwHVV75MAaD}A5g5kC@x7r#SO`oD}lm$X&OePZM zyJ~933}I!s%|PJd+l`+ix^~lPS=I8~SP8Ffk@ir%on)U|0M*EIdV6);!HfYQLYA{w zzm;~lV60yHT(F;}mEihjLBXfQ*7!ARl4uMla#GD}bfQUw__VL=USx{5n6z}c3!_{A z8<>|{1?q2Lx3ny|t5rfTf{)cgQh~;ze#~!`P+_D-B?$7#j~=7>d-q z_-o#bF=cSPc9>gq$gQTyN6=P%Iv)JpB9Jo>NFJ5iO}|c@E+@h@G&F0~2VZ1lOdPwE z{~rNB`%JDc{aMXgb~3c-OBXh=I5#yNKUo>|*>xSCuV2m@8lhF= z*zNB?$f5_(-(^mddukg3fu9zQ{_Scs zzHTZ_mUEL!f*HF%8iv7pQTWaU*}~Yom|EC z;2XL(>RW|+(l}k&%JrSde{qwPNY?KcsXv~rzZf~Y4q{6+lm<1|xB9_4I;Ei)?N%}} z1;K*hiwR3;p_%itneSw**Sx>~%SgiNSwMDmsFcD|il3LDFTBt_#~Y)fF<<`tB;(N8 zMf}V_SWo{kk62i}1@aAAouuK-p+(xFAU3<#VmsW4yjifN%I2bdhE7*Ye#uzR3z%M~ zzQS$=Q+D)q^KtFc?6aWI?I2c~Xd!^HSO3sNv~4=bJGjKu0r$gdlV$E;0Gnt{T8%!b z{;YW+g*9IIwJ5G@5FC0-uu@Xh()!TXE%Wih8pq4nKD0Sv+mn$?BT$@;2FcwP2Azr4W!2&p9I^mefYiQOVIF*(bT>u`z zEJhxBfb{!CjaXBcp1h6f<`uS{TANoz+LFQZxGN+K9VzT1+E~%TJm+-;<7h|Mc8!(h zV{-G%IZH!G#do-UsJ*rC@_%;Wc^q|29b~kF>))k7L0uH(i6LOJi|KX;#Q@{4+p8XQox5p=OJ`aY5Cu&0MIvPmwJVQFPMKlt$L<@dGJl%cv zy&kzcgMPP|Du++OIV-g5nC7sd4G;rKjM$I#BLBSKA)(ZnvBH#XVU1;ON5}D5tcbe@#ybz>N#-prvXd`A=HMK?2A4x5I(i@Uyi)k z7nv!*2Hn>j_5{(2Ujt;T!DwV>`EJ*LJFrOPeqC7Yu}>Y-9IYW{TMJjUE)-P(*zsH- zNw7Sgs^4Gwz*RNTkma4$&rEsXquMonuVv{_=$aem^`8!;Ol;Jzk=K7s*M)!IggjnH zYcr1H@Z}|XXL7QlOL<=HgRSQ;ts9q$Xz3UIf?2~UOykAXB9LI=g(|s4mf*S z?MN-g=IcGqEaY8qu&)K;cF=({tBoQ#U@)+%2;|SS}aNB959;BrPb>^Ge3p|xP9nW{ zn^|FLYc81aX7V*`e`HR*R5q;gSrE$RqVh{+TSoK($u>jHUxu(voZ?a zk-^nShOp!-RSr1_s%8BxY%dc?=9IRD!2x4ONGuhd0YBhPNK`vJuV_C3+53{ss^5u?gCd|0)E| zaZhC=ue2Uv{-;89UgK=%K~XH%28(+H+m!-(US?25*9OWo?ugtfS~V__lfN5i@+`ZK zzQM#A0vfmJX=UWi4ovoQqe{=Hjhn{RtZ>oE*pBBVhI7-A&-8P3d3KJsv!oO~a^AVI?xm>aksUz?GX5lR3zo$Z% z0gAY9__LAx>~DZ=r_(cOg4P`8{KaggmyGz;9Hv+kHk71KZUwpa z-<~Vm^~R#0=%uw*$^P#p@ZmdPsW4g7Sj)CSF8iRtp-5;%=7h*{LKp1;U%< znyKbr*WO;@i}{Wf17d=BRmYxh5{Ma-InDz75Zt_^r=d|lCi#+dUi}iQ@I{V2e&AYh zXQz;Pk+SVWpZO$!_dP0%cp6POKhb}Ch&U#1B^N1TQ&vJ8Jc+W90%1 z9yac&iV`*~hFbwg=r@5C2q zx%5n=!Ll9munz_du%QxT)L3mDxj@f2``;(c+7-)DmjP1izp~Jk{;hJP%ConEw$B(> zB<P{mtC4ld|U)ielox0#L1oj-^k1w|3X{;yBW${Jvs3#Sj`NsQaGr#bgWdnS^=i#m?xPFDx&&$t^Ul^ zvptC^{LmT1svkPlr(VMmDkA~Pv?mw)Ht%_b6VETalT5bYSF*loC2b3L5xo`GOhJiG zWfu5a;CeXPyi*@?!ZHON$EQ5`%XqR>5~NT3^Eld*u$w&A z6wp?=E?pjzS>v)%<+si=tgy_;!oRWi(;SmfZkq12XMJZrTX+-(@ORCU4m><<_c(95 z2r5=~guXGYeR)UeLf-BWN=ppUJ-aOl*3P|3FIkA3c^xI{2OuC}vo+z$c^xt~AxcYJ ziN|5PwZbjvfVWSf?^dW{q=ruMye?5XBBz=w*_`c@T4A#CwXNyD2*lO#M7!24Nb#G{ zzVs5&SmYE z0s=edU1kKfp}~N_XK-0~zW>&W$9QLoq9vi*Aw5cBed27tiz7SIMNn+FDYLD*^A|^O zJtL8MeT#Fmn>!*`*RwWX8R0rmNe2Y76>DH-`>o40f$G1L1s`bSQ$&7r=3;(pc<*Tj zt@=`-)T2WJ+iw}W?0i95Xpd8>CoXugemZ`WfU(shjVH1mYjl-qxAc!DM6T#PA52d9 z(#zhxPdSjcV$a}Q1aDp#svmdK4AqO~O%5H`?EORCIQ<4hg0<&-s}*9j^!aS76Q{aZ z5}5G(Obl_)P*Z9iKO5#|F65e~#Z_~@z~$sOoBzJg8BB#tM0gZp6kXs)Y07DO(dOPN zDG8Y}(n`^4jGEinteB3a8ng$(j&()Z?@mW2%S3DQG&ov&^O~%^=k+X~DU(`3kd=B& zq7HQOlD<+`@eWg0T~6cEk%9gyrk;eY)m{SR zgwI4bTOzcP*42_F6r?S^O9Xl}@OriZM(ffA6^g0bm$sb4e{h+J%gT}Ufp+&L0aC7m z>z@|qz1z}&?qhB}#iEGdg|GzgPPB$n}ausj!^^($giRP`Zk5gZ!utt6>kQNc-ZapXW~N zBn>X#`N=^p6yQM}SD;QB>7j>|N`}j`{;)WZH}2yQ$LgtZC_7iWr!dbH=mi;T z<36xNM;n*=Cu-HKd3qiI_@j(})v8Wuh<=>K0`QMz(&r=J3w(Sj%7%44GOz+tL?rIw zpA?+_dejUka^{!Hfq_?6CrNJaQM1cR0~0x&%mvlT{~qL|?&rjc1QPZ=%dag3WA9-q z1?Xli#7Ugj5Zpl3aqdu7P{sN`9zurl?ASqv`;}SOAMDw#y7jOKCJ>Ih1vqTxE*UGY zSW^nj=9*KLeBHVDExTdC)vA3eXtV0cZVk1s!^NG9_%Nzv$gLqfnRlA$5k*1ATa9#w zf#e)iI7zp%s~ZMQB277M@ZjEjR)mJWaOy1J!oC{tp0euESxJ_}mgXLzWkjXqQB}JG z*y<&ZY|-M9$lLpBW20mo_P!FV8k3nsIw%+o15C*%dOyXlc9W(*UT404>WLK$Ku`F+ z2xCZjAntrwEW6s`D-kMGy55q_CE>aAFB0t28PWir=HVF<0C>~>YP2;l?n#e*l-?Lj z*v@C$ie5-(u8pqEZ#`9=|M^N9e$oEiX(gclFeb4XT1Gb*Q zL!S7}_>QD{$`>+8iPx3u3(I(@c#@CHZLT=_I$J_%{dg#|CEHr>^+#0gANBny&`#vq zd|vj8ik*vAY}W5=2}Oi$44E0xX!@1fbjRhVSLf9BGTXrp@Dp&}08xBW6obbaVPwi& zZhAIYy~li-0R&%gT|yyuXO$OETNu@D)J;jkc=ec$WGIVeW!9*JE{2=t%z11TL+22g zK?Gl^D+K{v8k}4u@zPp&WYgvcwEycjo&M0wm=8bW81V?%+>&FHK$BnV zt~rcJ$cGjy-5uNuXJBhci zO=fP)w5kw4lWJ2VZKBk+<{M*At{$qM^TH^~v1P(6mQSFaI|sS?8~2wlgDSuJXBQUT zLe_3~XPqR?B=>3kE~}JN@2d*@8QK~0QGuL;QAk;n$b|TFfT_HmC{aFZ?8>p>hMCJi z^h~B&tHSUo7p$^sKl^v1`q`pYa|j)V^ih66@Vge7d};M#w6hwXWP5H>$=Y{xQ!aWB zo*zC|7o=I2Sn2QpB;17Cz4=0M+*~*dFH-O9m~7I{DC-KFARPd>4{zG8${AY02CEUMQ z;NF+4LU%KcdU6@G^e}uRg?}rQ(^Yr|no`(PP_5?p@A8ULnhwLWMjbo36Q*bm%1ZpP ze(a1WV8OpW3kyH@idJys_vT{<*{Jxao11OCBT~b>!rHn>ecVY&I>p`VBeP#sq1dD| zWl>nrnVroib`{jJ8j-(yiM(5mZ}rGUyW0)!mKQC`*UrjCPpoesGj?~}+|q&azDm=e z&G1pr_4Qf^&TOb8WLhxupS;7q&tos#=u&7S({8ZoiL8g2l0G!u+|9+-)uyGV;??w^ zZi(TCw(Frk;47c%TL^vJ%^wxpGynthYNecCoG-?Ff#NBERX`sMiS$kKoR+CA&y@UA zfc;J8V(4v@q5BV7Ouw!jsMha93JnC;-bL{}N6;NMUziF-*jom5v$~XCVxLlVkPm2yz0YuC_6}q9 zr`DLMmd6RhJgjrBUIQ{xd*eIDH2A-Xkoj;w0L%?u-ibH_4ZbmcyCP0?3RynccOuT@ zU}gXO-ha)iUX!>KcX`QVUreBOGg7Nu-hIa!>q)%4p~<9Lr{1+s;Fb#sI%J2Xy4L#Q z<<0&MRn4$V)eh64gW$PZp6By_DanY1x~^s^tfVzaiJp+~_NY8c&ALKTjS(eE*wD{< zvlhLXva*+>0`MX zN-?qn{sZCd#;5nS>o2AhdeyP0(=-U?s?WifYMP_%t1|Y%p+10HRikWY<1E4eHg*5J zoYn^WH}*nlVd45>&rOhQ+5>oWfAE>~LY3aIqtO0NEq|{HRuj_0jr~N)D3jUwi9gqC zIdvs&aU;EJ{QiOuAWP<``=2BdC#fXBS`M%i1FyIT(bnRNTzJRQ-xB(}32&1&R;q`- zZUr+QT!Nbrc71J>CBuR<{BGod&vCD?NqAmYJ5ZU~o4oElm`Z%8)+KKiE$&a`B=hW6 z>SSovBoMUa(&E#^(Q}AXA1$H z4@z5p$ZU2uH`dKP2MlxkWD`_~#he}|o?B;=*#8Ud?7Ar&DW#`9?rZjs@}!)#w|u7jpXP$_uTaMg7qs{oOgaE)wt6-&`eO*6w?nE5`!}wWA=r zZTU~Xsp5(bqFJuLSEKgOmr@d@tm$HuS!+NACf2h^=2zlorE-{GlD%@>&q}xIl4_u*1>a% zRI)w zUHS|qf}v=^Nh3wja)3PGcBq)KCt)9VTsHv^AO98HD=+?#TN+I12Nu(|o3WB^|1w|SKzZ9!B%ob1YtZuIB zJSe#59o$ob`Vx5hu{#Br`1wUxI2ls{w{IxZeyLTir$4|O^JHwe)|5OVN}TV%4~J~8 zQ1_Jy!U9HK*@FE`0zax$oL+OENAb=B{BGl=2B*pC~$mUGj|IbFNQ7vZKpCb7cn-3p+F7 zzj~;t*o|L~?^6*4Z)C>cMQnv2nu52;Fwv}pgmnK*gvOGJvLM*$n#1$c0>XLU0X`(~ zIUTSN{S70vTmVBiW|D9>?1gW@fz|AuhNXoxdc|!a6|A#z+I~){vUaPq<|$Ctoi@}u z2G`h!CI2(u3YL(D;MdQQL%LfnJgaw?Lgx!9#nrsW0F=pxoNIE`9)_VxXVLEB2@P?m z^R9wq?fxj3s`KTD|78=NLcd(ZMJ+)lxV~L{fV9DdfQvCYR+$g-`Gf?tMK6c}WW7Rs^j!>RE- z%_op==av1abnc#-XN!K#c{EZ=t;i&JUj^e9_z-w?US)Ua$G>YIIREIOPje)J z0~`~oblkP%5NXS`e{z1$X=ZIeBEM?it}!LIa01+uN;v+A(C&OG+eK_RZ}dPH3)AsN zI@JKFB7!d zWjs2&R54J!rCCVP^1le}qZaMgyr(U(Iw7yfdVDRJ-%0fH2AM4LQV4m(Zq-iie zNe<6lq5bK}F1p3KUded3TZU|m;^hKJEXl1ySqs}H)qlJek;~!e`slp+*aPej(wdL3 zPdNRxF~;#7)>}!@wOr{K!qJtmUDn6TAabRwryW;7`o&pnhjQEqc2yNts9V`c+Ad9P zQPq1Cy%(Pl$@+t{HF4p33_7p4_h}%@EAzaKLko}i82q_{z&_m~hF&f(UZy?5mPIXO zHukc;>4KG$_RS#|HrlI8DJcrZ^V$_FF%OsjauVyODtr0@9bM`Y{>I8>8hFnwbWwv) zvGUNqxjCxO9D03t#z11E=|2Xwv|_!g+n+WTw2;4Krm<)*Zq$M2 z``}P1=K7mq3qo>jsaD;2Y(Re8ll(8f!U8$S%~l_?4HxKjLzRJy*)z1^*V5?V%Tw2P zZ)6gu9Blu4hA`AlhZwWP{-56shICR)1OZb`pH+e zWFC9X2njsjW~Nhtuhv^wbAuGp=fe2dKQJN`(6kgR|hat3y)Iio&WjAGiD`zeV(OxxC) zz}>#s_@g4cDM2*mOb}D0;*QHSW$=8btNr+9zc#qKA;g7;ZH)Rj!&sv!cz)v6rYw%@ zgiTjHyc0Qg;7N+5VPki?&ZvqfHnhh}a{p|@1BC!NLRFnxw>efOHS|ThjsM{$y2WL= zTZaU#es7?0MVEJD=X`$vB>gUH5TQRSd_R~zv0wEqH*VX7Mn4lq*h&k)jum@{E(abR z3ZqKPV<+q{w`zMF;N@SVo*#lP%BvwSiZVZp&l_F7 z6M?CZc9XG7mEJ|yNXqwWNOHv}o9~aVjV08SA8R~S=)-D$SsBRs=>1kPeeiI%JF)px z2s?aW?h4`}Wy91hq}^geF@7BrQg3rDB1OTTK*$a1PLi=5vsGz%VLjBEepuD>5L)m~ zjY#@4v0?w;#jL#z*(*P|Jczw8%9Q0`xC@ys7@~PT7}(W-mIlnmzW&(wyE!~OSI!FE zih2>?55$jn?$g}oc0Z`+yWZl*<^H|XePy_xGiI`Zslq`Wm{2xr;$`8L<4Q~;bfzBx zuW0Jx8S~Is&wCbzyHR1+M{`V)oG#e#ju-GUVd~)^#BRSfhY5#ZPtfVHWWNqs{fi;R zn3j{5kt!-7!uI9LS?D0)9v&CenS5k#2_atcE&KLrM~Uph)Pie;#?0*&TZ_wHm^-M-)|T2!%mPppV$D=Q4V2d8pE~`%dRmpRk7~nCHel7VWrWlk*TIKRdn!iaQQpH?JvAW>a@(H8ue5>THpfv{8Exwbu zQegKO8D2Z*TgOf=3jRdG-Ea7ged6NII+>Kc#G8x(dv)6fH0Bz_3@@k3!whC5h)Rwq zOaB)|a?Y9iCn{&zCtuVX3E~#IHilOo_ESf2&f*NQNq%)qCrsK`rgUHr3~)OYtvc2Wx6*HCK^|jbaq+I z1V!m+T*U9u5L#0+W`Ul_(B%JT0km(uR&#QB>!DfIKW0_L19n6*#W>v31b2)scX1{L zPxlRBKfHL(O$6-(6vBYOv3z1aLp2xw&hu+oq~-YZCUcXqsuaXJegr^>O3l;t7@{1@ zNFs9+Xppdb+cN=uIsS!7hEaGCA6Ik z{(<$@{BD8L(wwFb&9f2W}_KCr8euI@sj_S@wTVOzi~!7r;ww{u?x5_KX5dqX=9zetxNkaJw&xKB#+!vk|rj#{NhD-XW*%5G~4|NHppnbrZ)xxX+*_TbEksx%v`QAX1 zxDu#QdPw3=|J8s^%C9Aq)5IUp$^u^qh&WAN)SVOrrA!jEv!|r2CDVL~@@6B7u9zmB zP0l@&Dh2TiDhL%Wt8e?hqoBqY6ll2EV+2|KNJX3xm*81{%e!t8WAK~ZO>MTNmTxj= z0TxS%A3jR(AnhI2N8IsQo5#bs8V@mdzzz+?>MuGJdg6>7zdq*EzizS0s|>=I2iCxz>|m z(L<24d6yb zIubKQtkAg^Qn2NdDSmHWN)VHiH#Fh`OGD4!}W-HjP33r0$>VfKJ|)p zuk>e)Z?Rr!8|F;`bk|S`TeZwrRh>7gk~rQjyp%caKM!K4*xK!3KL4yu{MWGBO&DW5 zIFSsjFqR2EAC5Z9@$v+`+a+1DCj>#W70Ot@gdTBpD+ zBM(~iU_wfd-liZ)_i$Mu<2l25y$jdw+H-Cb{nGX&Rj^OCv#KZ>Dw*2LFJW5s4pVy{ zhRIaT?9YMDK^i?Usdp8Lue7QVz{-YY`K^KYfN2jJci$9kz4@46KDqeRbu|FAb8Y^M zPjG%%p2TY6428P-cIISbj!vz!a4LE9o zc?#$9Hf0R6tq;p0TD694;l+TPtv9JI)ka5;C+Ba&l{3Rz#`X$lE6c}pE6cSGj_+%K zcO^RP(<$0X{!rtXLD#2Fr#+d31D~(FarE)m@STqOt6v>jK~6c2=fO#$9DEX1#itdkH`%leR#XT9ZdxYHsjsB7(d4)RMyzLJmtp63h8KBCw+OO4K3=>r=`c3xu68tr z6gQg?&M6l<>~l%=lgkn~gN#&63<9N0s(2e}fAkovC%@;}w^H~|I{~6@1(B{em5Q~i z|5!8!tmdeXjQ4TRmaEpKy{%C{i8U+)*$gz%3L2OZmGw$}Z=F5MtsnhUq`^=*SU%H3 zjot$#E{2bYNwQ+GaY1lJ*@^#+8Vq+}DQ`_L&ALES!vaECxqw+(%VBx)%NoSw;#_)A z_m*cV%S9XUk5omrV_j4qy!<~V??~YN-I{^-T7QA$D@&!Tn{A!o3g=}e<&?DXXdP_w zZDIEo&ExBK%-RAerCL5-4=si|H(F9TZd8F_VfQYsrV--mR=%KM#UQ!EJTo`-2ZEMk zj~C$jEfDsC{_GK8>M*CUIqwq4RuZ5g$!@q^?XGCjX?gky^E z&GFe^kuB4I70%{yd}Wzxt2@y;$0soMi5AnlbIaX5KP+dsmhsNqzVow|3%eX`wnD7H z+o?gCt}Q3fJEJ40utXahUpWB@M5x$fEMssk^(IdJYgjf;vWszAC2*IcHVK-tRLwdV zzkM-Ng*v;faex=!V#^f<1&%gqMpOvnf@t#uFk8UN=lUDWsuGvUia}sQXlNc&I?5TCnDl_toLM>Dra<O!-4En?an}!`uV?o2h0PXO*?`1T9hs+^12Y2!N z4WW)_<2+7rP(kXrN{%nMmRC$fOp zothJe#PP$F!gc<#c0%x(Xhq4_I(VHC*db@P-GMVJZE^J0xrqJwyju;Q0P8ro*+(01 zR@*)kS!~R*au8solR}?AzyhZ{f)MlkL7NT?^jGn%_254_niJ=#jw^J z7t9%B_Zq1TQ50PigFobKV(_EQHXlKFd~DJ7#SnHJf|JwN7dq$$4^W`kh=-|2Zs&$= zosv9YYx583r`Mq~s3b&Rg%(lYcgPbmmQ(%91tz767Ff!T4yI;9^KJ z`r?r@=RrrY)Fd;r*5cr!AV|#N(a(zfn+Gug@}ppvYNrt>Ws#p3tK(#WX8aO@sZ;^5 zLnOXLYxYwM{(lfuN>y5~-j>9YA2giB&)@er3Rf0Ii0~ha?5iLc(#th;O6Bayy ze?&s49`(FdCcA23_rUdyZ`aAOKLCHuR#kfu(Nfp7aQ zgiXLKhkhXLZYDx-y1G}b?_>{t>8&DTXtSnMq5v!hFt}O%>62F`_<8Ho*`P_*p!ZKR z3QlfLF5dcvX=qHq*82mPr=;8G5Jypr{brX}P>aCEO2$wSY2e-Rw8z(%l*RnU&^6P! z@n9EbN5|zRoM(`_Q&7>MBw{#UrQNDo2qqRnLUrkJzBr~$23Qfz8y zH6M#-DB%7OTZRFau+X9QS__-jyJ%6a+vs4ENAzdKD=(f;vW<8|b#LyyQsc6Te}=~t zjdKefR+_JRxRJlI0!(A#*%=z!bynoC5n{iF6Kk^qtHD&~jGaBQP%d&(2MKnSrgf-C z{XfoF?kT%^d|8{$vlTm@5l+t)?fx#4)fs<7Me=v;HPzkLt+Su*n{97jR&(m^yRdiNfd5I_@6!fs z&iPD8+zuI8M}W|DDC|pnAnIZo;a1S2dA)xeqOy4qtDs;h3@W#M@8TKRLYqs2q0i38 zH1U5tmK5NaJ|}zroujYYt-l$!wA_H@{af@Qh3U5~;#oPZrWTAQkXVCZMWW;0DQ)4G zYnMvmUrXH*gR>r>2jzVGP9&ypi<3e>hFp>WQRDzOm8v zx;g}`1v|h9yGBC>V6MRW_pYJSNAXljUWo*)ub}G(mrW}KO`a3Wuo38c@Zv`Ea%Z6L zwwXyTgzM<-x1uJn%aAo&WUbJ^bDqmRoRZyG0h@-KwyeoI04vzb;QHX)Qtvgp-|lJ^ zIRD?cK203?2c$M-e!I-evwPY6!j)r?7I*nzIKF)Ns66P6vUcTg;|EzCeILA~=Plw*CaOv$QU( zhUvp|a)Zqk2HXGBQw-Eo(PZ>q^*09}kk#sCDj%fuM38kE3Ilp$hjS$$Xkkgsn~yCTjB~&!FGMd<8*OU1M&Sw3Tn41p2jd#| zCT0_}5+>-)w)Su4f?u@AA&5iICArV*AA?7{Rpt#eey<2@wn;IzZ!3_-^|nRx8X=eL z%N_OZ9p))!7%sJ!kX8rFDv1SVQ#`!afJqFRI((#8K<&wlU9eeh0a#F*?B?Cul0#S^t)t zcuHxKA!dt#t`q=@Og;;4yolmEzcxw;I;S(mwe{wrsF6Osdy#MsyF*sqo|Z!UNE|Ys zVsS~k*x7?(`QhUr@L+BjX*~|*!wvCbT;QFD1;)bpxgF8qxHNi83Unf8noW>I(24+( z4T*E#S$#@@xb8Kfzw~ggDIZ36oQV6+8ae+GQ!iOjN_B8J{!cnZA zaXw*!%DvMHu|cZoc*bXNcx?NLrM@m9iSp>5FK7RRp-gCJgN#OBh&1^zuIl6=^3ngeF zK~?kqGK#yL7PDY8@;!gmcc=PSZhNRB)_`?wLW64(uc)@{5?l9!o?YqRlO34R z1`ZRueJ^z z@j}(SCTG>(Wq#Ip`PIjnO+AM7-`PfW%=wGUujZzc7AfNzvWs>+*`g`K$q<4>f)?!f zMc0L%n!Zb)G`5s7Nq2c`s{a&loPKO2Sb!>U!89ADrRDO_w-(VX3#=TeCulFhT<0GH zkB#t}dB2zSuA`Llde!>wD$V-nveNl99bNq_3sAlv_kBBkbPy09V@cg%1x*(4%}t03 zB2#3#lF!D-K*n_mio*YCJu~U-S@*Sng9E0d2WL_86Cr^On@@CGo~BTE zSYtf3vd+A$OCCRyOul#EZG7YK$1=;QKE7 z&7-Tbg;luPl#2&njQA`sm6B2jD{nT_s1Lqz>~IcW{tOO@^t&KN5eCY^Xu=wbPqD+I zX6hUy5?HPNBi?VV%?MA)$N!YbRiUFOGw7AeEhG=dz_67!Sf>KV@1V>twM>iTL&37} z@z)$yy6V`2hEVraIh~OUpxKoqH=K!^69>YcE$is z!4^vkaCx(_wzj?*G}lqoX2DX% z*-P4IjLJGG8Ac_uG?=0_P~e{gK0-dcNOnU)J$*2ZyLE0-TyD3uO>vAnAyT&M9VMJ` zmVFKXHAbbjde(S)cE*gGIxk!UL{DPIZLF%9z7={TInMXOZ5cgvYxI9-m4GHu$O|t|oH3Tj zyRO`mJ@?>NeD4)E7w}gz;|QnEkz{kZw@_dGl28 z&3|szs)}DWG#q0)izZe?a;2ZlUI~XE7JI>rt9IP`6YE)F?T(1v4W?e;`yU!N;tq0w z_5)5P(@|7w;HD7mq&O&Uv)-@*E`Oyo>TvzamfcCha*h@J@}T;Y79Zyj6B>pf{TlII zQ%VE*yWk(nXy>?#Hb_;w3+P?oth`hezsSBuKP83wf&V>oe?;r}V6iY&N_+eXws-y< zq(#elpY{>Q0!+Qkn85S+4I@akLyzG4(l*3%jbwtK-FVl@l$C!mnb|zhFFas&c!N@B z0my2f78MD`vy*rP6jfSU>`rT=Dh2U--*Bv9FpOy!G;|^Vw}+w2I*%1NEuleF&qK?e zWmN+!j0~0WLOJd|YWPXLyacc>3|YNirJkclll;SkdX2t|1lSH3`oOlBHwP)fWN7tBH>8Sk=?V>bZjiZ#W}Xc4zG3mBC_ zhjr>&m8`*#*-Oz`Ir;}d%txUb$G$qF5c=XQJ#=(@=|xu=PPJPGQcucssF!<_fEY|D=lZpgp`$ z)Z!m9nlTWvcnTnh5uYON&yG!LzqIxJfCj_;i)$<99NwX(U`DN0l)B17Gvi{_-Rh9% z?ZJV)6@JTf##LALQ`0x1#9kQ|r^I5SYm$HvK=z+_`Eg^xs6}^iJh_z74GQ-trh7g(w^5x=)t^bz~|S?Z3Qu+^*;r;%5Cx(Z%-iT zgew?cqonT}G(3kZON)6spkAKHqxe`;EpXLhqVG{dO_3=YnWBVO3O(4aSl*moX&N_M z`adAkoWiAYx>fC-82})+rV&U?ACx(uiA|kw1!#(U_7x4*X zgPxi6Aw|meOX%ma$e@;qFT(7JX>K2%FZO6C7$J5rpSf)`U}N{xw8ZXLJ}~-Aa7f7rLzswbgI2eI=)Ubf_i{^vYB5j_^;OpBAp7O2JV3f59ZC3nIC zJ$ITm35{H44vIrSWtRNJCLR2k!_-ez!8P9lR0__W4uKT5tyPiN6*0^)nc&PQ#zyv%VG9VBi-{eo547f z<*QKhYgsh6Np_{qzdK4_%DOTV`$DaH(yDx0hqm7y2kic`NKcAOXf_B~C@RX1@#<|Y zfO!7u>na43Jog1*(N8SjaT(qr&abKY@tW%Poe9m8V|-QO(~%!3d8ox-=YzB94nixTE>BS1Zzq3F!N;UATHNj!S7LiC(em zvaNw{c-UzxZ9T6I>?Soblv9)yY0k!8mIlj^!I9oFC-=r(UHS!G)@yzcwcjIj)R~g2 zi=3({xuqSu#W#EF#lq}ZWIFCcXxqmuOhBB-(-i~J-RM}J$@qSTGfUd5)_-=~kLXBE zcv_dV_*B<^?}sQd7bl3IED|)Q<%H*2?191DVEKz7ZSIZkZ-#cQZR*%wC%Fj5g2$~bsOCSsXl5+E(&Zk2EmKkFf^tuKSo<5(& zec_iWcno-7P+ThKa^%>Hy3Wy(=ND~Zg28w1{x9f5KgKx!SHQL*42Nt9_H8akxV`$G zrPEP!`Wa}uxw$=EwO?{`%1PpuB>&kMx>ws_@jmY;G$zCzs-PA|$DH%3;RUy!SuSk(AYYF(LGgO7Le~sVeQQ9dty^DuZz>65V+0 z(p0?9I|zeh6zFj&i?9FP@4g1=@8DwlQ4nGsIGaFyC+)xlaoOJ)sqFYkA-$dd-ZXd>B9eN*)6e!H$t8rh6TWXh0jBHEyi9)TCg2NF{4F8(2XKZ+VjrjXL52ZzC?c7q{H z)6J-dRbfHnqE)rQYe~-`7fn%&56XDuOYJ+8Cc+uHQ`T<^p?`8#pP}dc6tlRK$KGKq zW^)M&sG!jK#TBjld*%{e<%{NcV(TEzL1L23FCC(=n&L8>Cm}?NLatp*Jg2RJ=*sPy zyimV~92-|H6+V=KeDD!|JDVSJHJmVT%2naN!RMK4ciW#<(R&AZf zN0{E`2!M-ZNxpV4#s=wVHWFzC=liasJ09|F#_xEB?G=H3DLyYm@zusKOVr|{WumAs zU^6~6sN~sDP(wqdN~N)u2_s*ni;}I7vua0NYq;aI&Ax!4e09)`7?rWgqEu9Ia%FXF zn<$Z5kl621bxJgqcb{sb9(>tph4M>gz6qZ9@dP-Kfse@H`+e4Y#qtTK_%^%B3@m&Q zzJ*wIte?8-XjXI~%RObI4$pch5>C>S6hk7KA{v1;vmbCbG+9D`>c9c+5$O=!OzriB z7b@#G!PkRWJ&&eR`Nuq`yUR*7UCXa+d-r@YtkeIv62?m8fUXu{?=8zEo> zt(i}+a83vc@I`XcF)ue0_edVDHxS~#X>$UiCt;s9+xB$&W1 zJ=^^gnxY@hHNs9`tr5#W|4YxjMbhiEWA%mLm7(tX1`Jl3M2YOtFeYMSu{0hWat#e= zCtUcKSr++=a@-Pnz40MfTs$+WE+t-RHQibOGUq(f?z7TN$S($Ot)_Ln)YA41SUX~8 zU>P4*fl^p`&phf8E9&vmcu1Q!zzn~Yxj8#u0BMCv$22BW^MfonCRu1bR!buN7++%3 z)tmSM9H8GlG02UUd-VIzX>}<`yy3>vF%<^dr2cBPr~7qIQ%)j~N!dy^iYAxHL*ykJ zM#H57VESvedq1NaIz6=g^85R4txvA32dPYMKhf0c3u&%He^f5wq)vB5N#RfgVXvKF zyN6MLVmtBO@gab;@%(VT_dS`=R6BE4+;sWcy5_3Y9OV>3h5%^FCBvVx4jS7F$c~YJ^q${Ova0|CPeOHS1jW57+B&X^`1# zz*sB4GS6jywH@7Xe3Dt^!{jZrkN(W;9^}MV(E`6niXhy=vLt=yhpe|`A(E;+cEcKR zzQ%~+0K^HY=-yWWcq@RsZdV0r?U5j(TmG%Hxz|sj$+yk!`!7&_!6v-JJy_-Axh$CP zx5R)0W|3F$?%P*kwK!jp*)&ZbpwN=&!3SKm&@syKyp-kMBu?8U z1({5gL>i-NHU3&$tZg>fdVM&6rGKf=^_Uw4+{KuW1yy&U^6b*n6b=G=KeeeL;T zj<4tSM%5%;Nb6?S#4QB{@j!Em9?)vGjoC%6Jp2wugf_YVX`lG!zhYm@KA9QTe#~oK zPmwB@g}hndZ~M6sdDGqVp;J#k^kguz{qllYyB^j8@yDr8bWvBEhpPPxV~5HHH4N+S z!@HydeGy?Fb%{)KdZ4~s%diz35cs_v+Sd3@3pp8dh*W*8m=1;!H`k*18cC={em*c3 z8L=O_W5u=wk_HnI=M)pIP}bN1E&f0g(kgiWjWH%KK9ZXqqkuGb-{$XGRj8)^`;Q0v zl2DKKL_Eat^t)8ASwpm;$hG$4+39az!irkTWiJ=qtGnBWdDwsal6J(Wd?O#7ncm|H zAR`0I@0%wOu)*CgKf$RoPZwO=cuyTU;sqU8E7&aBic5FR{;frws{tsU>^?~y=^c>{ z$fv~n3fx}UcJIPnb#*Ha&ExV&+fdydvCstbFQD{&^&&|vVc%jr?Ewbp^B8sUIj2qR zu%S5&8@07#rs{RDB-MVAaWy>zHGl@=!d6791Eh4cLA=HM8zxQWV-VknqW<=mkJ>`X z@}=$gn~%SU!3Ch{iX&RQaWXe+kmf$G?6F}89ba@3i%0i>^lvV6pOFbn$sQ$WKimso z@@FOU`B0A*oaSI)aV9^jtIbi(nD4MFU5Oq26ix?%0AOa?xNN&(=ojj5)?%UZEIrqP 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 Qlk1 Date: Thu, 10 Sep 2020 11:10:32 -0400 Subject: [PATCH 082/231] BUG: jro debug Found a bug in running with one additional coordinate when loading JRO ISR drifts data. Fixed by setting data column length variable before 'time' is added and ensuring everything higher dimensional is an xarray. --- pysatMadrigal/instruments/methods/madrigal.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 1248dfb..dfb98b4 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -105,6 +105,7 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): # lowercase variable names data.columns = [item.lower() for item in data.columns] + len_data = len(data.columns) # datetime index from times time_keys = np.array(['year', 'month', 'day', 'hour', 'min', 'sec']) @@ -168,11 +169,8 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): # Set the indices sel_data = sel_data.set_index(list(xcoords)) - # Recast as an xarray, if more than one coordinate - if len(xcoords) == 1: - xdatasets.append(sel_data) - else: - xdatasets.append(sel_data.to_xarray()) + # Recast as an xarray + xdatasets.append(sel_data.to_xarray()) # Merge all of the datasets for i in np.arange(1, len(xdatasets)): @@ -180,7 +178,8 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): # Test to see that all data was retrieved test_variables = [xkey for xkey in xdatasets[0].variables.keys()] - if len(test_variables) != len(data.columns): + + if len(test_variables) != len_data: raise ValueError(''.join(['coordinates not supplied for all data ', 'columns: [{:}] != [{:}]'.format( test_variables, data.columns)])) From 1c7fb88d5c70e883107ab97b8d956e775923c72b Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 10 Sep 2020 12:26:15 -0400 Subject: [PATCH 083/231] BUG: data column number Reverted the determination of the data column length location and fixed ValueError text to be more helpful. --- pysatMadrigal/instruments/methods/madrigal.py | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index dfb98b4..2aa2332 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -66,8 +66,8 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): Returns ------- - data : pds.DataFrame or xr.DataSet - A pandas DataFrame or xarray DataSet holding the data from the HDF5 + data : pds.DataFrame or xr.Dataset + A pandas DataFrame or xarray Dataset holding the data from the HDF5 file metadata : pysat.Meta Metadata from the HDF5 file, as well as default values from pysat @@ -105,7 +105,6 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): # lowercase variable names data.columns = [item.lower() for item in data.columns] - len_data = len(data.columns) # datetime index from times time_keys = np.array(['year', 'month', 'day', 'hour', 'min', 'sec']) @@ -178,11 +177,21 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): # Test to see that all data was retrieved test_variables = [xkey for xkey in xdatasets[0].variables.keys()] - - if len(test_variables) != len_data: + ltest = len(test_variables) + ldata = len(data.columns) + + if ltest != ldata: + if ltest < ldata: + estr = 'missing: {:}'.format( + ' '.join([dvar for dvar in data.columns + if dvar not in test_variables])) + else: + estr = 'have extra: {:}'.format( + ' '.join([tvar for tvar in test_variables + if tvar not in data.columns])) raise ValueError(''.join(['coordinates not supplied for all data ', - 'columns: [{:}] != [{:}]'.format( - test_variables, data.columns)])) + 'columns: {:d} != '.format(ltest), + '{:d}; '.format(ldata), estr])) data = xdatasets[0] else: From ebd3525f3de7d814268f77c041092984c7f234ab Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 10 Sep 2020 12:27:04 -0400 Subject: [PATCH 084/231] BUG: new loading method Updated loading method for all JRO ISR data types to use new features of the loading routine. This fixes a bug in the implementation and also reduces the amount of duplicate data stored. --- pysatMadrigal/instruments/jro_isr.py | 78 ++++++++++++++++++++++++++-- 1 file changed, 75 insertions(+), 3 deletions(-) diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index 639fb38..6e3186f 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -85,9 +85,6 @@ supported_tags=supported_tags, inst_code=madrigal_inst_code) -# support load routine -load = functools.partial(mad_meth.load, xarray_coords=['gdalt']) - # Madrigal will sometimes include multiple days within a file # labeled with a single date. # Filter out this extra data using the pysat nanokernel processing queue. @@ -163,6 +160,81 @@ def download(date_array, tag='', sat_id='', data_path=None, user=None, data_path=data_path, user=user, password=password) +def load(fnames, tag=None, sat_id=None): + """ Routine to load the GNSS TEC data + + Parameters + ----------- + fnames : list + List of filenames + tag : string or NoneType + tag name used to identify particular data set to be loaded. + This input is nominally provided by pysat itself. (default=None) + sat_id : string or NoneType + Satellite ID used to identify particular data set to be loaded. + This input is nominally provided by pysat itself. (default=None) + + Returns + -------- + data : xarray.Dataset + Object containing satellite data + meta : pysat.Meta + Object containing metadata such as column names and units + + """ + # Define the xarray coordinate dimensions (apart from time) + xcoords = {'drifts': {('time', 'gdalt', 'gdlatr', 'gdlonr', 'kindat', + 'kinst'): ['nwlos', 'range', 'vipn2', 'dvipn2', + 'vipe1', 'dvipe1', 'vi72', 'dvi72', + 'vi82', 'dvi82', 'paiwl', 'pacwl', + 'pbiwl', 'pbcwl', 'pciel', 'pccel', + 'pdiel', 'pdcel', 'jro10', 'jro11'], + ('time', ): ['year', 'month', 'day', 'hour', 'min', + 'sec', 'spcst', 'pl', 'cbadn', 'inttms', + 'azdir7', 'eldir7', 'azdir8', 'eldir8', + 'jro14', 'jro15', 'jro16', 'ut1_unix', + 'ut2_unix', 'recno']}, + 'drifts_ave': {('time', 'gdalt', 'gdlatr', 'gdlonr', 'kindat', + 'kinst'): ['altav', 'range', 'vipn2', 'dvipn2', + 'vipe1', 'dvipe1'], + ('time', ): ['year', 'month', 'day', 'hour', + 'min', 'sec', 'spcst', 'pl', + 'cbadn', 'inttms', 'ut1_unix', + 'ut2_unix', 'recno']}, + 'oblique_stan': {('time', 'gdalt', 'gdlatr', 'gdlonr', 'kindat', + 'kinst'): ['rgate', 'ne', 'dne', 'te', 'dte', + 'ti', 'dti', 'ph+', 'dph+', 'phe+', + 'dphe+'], + ('time', ): ['year', 'month', 'day', 'hour', + 'min', 'sec', 'azm', 'elm', + 'pl', 'inttms', 'tfreq', + 'ut1_unix', 'ut2_unix', 'recno']}, + 'oblique_rand': {('time', 'gdalt', 'gdlatr', 'gdlonr', 'kindat', + 'kinst'): ['rgate', 'pop', 'dpop', 'te', 'dte', + 'ti', 'dti', 'ph+', 'dph+', 'phe+', + 'dphe+'], + ('time', ): ['year', 'month', 'day', 'hour', + 'min', 'sec', 'azm', 'elm', + 'pl', 'inttms', 'tfreq', + 'ut1_unix', 'ut2_unix', 'recno']}, + 'oblique_long': {('time', 'gdalt', 'gdlatr', 'gdlonr', 'kindat', + 'kinst'): ['rgate', 'pop', 'dpop', 'te', 'dte', + 'ti', 'dti', 'ph+', 'dph+', 'phe+', + 'dphe+'], + ('time', ): ['year', 'month', 'day', 'hour', + 'min', 'sec', 'azm', 'elm', + 'pl', 'inttms', 'tfreq', + 'ut1_unix', 'ut2_unix', 'recno']}} + + # Load the specified data + data, meta = mad_meth.load(fnames, tag, sat_id, xarray_coords=xcoords[tag]) + + # Squeeze the kindat and kinst 'coordinates', but keep them as floats + data = data.squeeze(dim=['kindat', 'kinst', 'gdlatr', 'gdlonr']) + + return data, meta + + def clean(self): """Routine to return JRO ISR data cleaned to the specified level From 5f53f7a155f00a44f3b08ad0a44af2182454a56a Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 18 Sep 2020 08:30:57 -0400 Subject: [PATCH 085/231] DEP: updated deprecated aspects of test functions Updated the use of deprecated kwarg `package` and attributes `inst` and `name`. --- pysatMadrigal/tests/test_instruments.py | 28 ++++++++++++++----------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/pysatMadrigal/tests/test_instruments.py b/pysatMadrigal/tests/test_instruments.py index f9048df..fe73ace 100644 --- a/pysatMadrigal/tests/test_instruments.py +++ b/pysatMadrigal/tests/test_instruments.py @@ -4,7 +4,7 @@ from pysat.tests.instrument_test_class import generate_instrument_list from pysat.tests.instrument_test_class import InstTestClass -instruments = generate_instrument_list(package=pysatMadrigal.instruments) +instruments = generate_instrument_list(inst_loc=pysatMadrigal.instruments) method_list = [func for func in dir(InstTestClass) if callable(getattr(InstTestClass, func))] @@ -12,18 +12,20 @@ for method in method_list: if hasattr(getattr(InstTestClass, method), 'pytestmark'): # Get list of names of pytestmarks - Nargs = len(getattr(InstTestClass, method).pytestmark) - names = [getattr(InstTestClass, method).pytestmark[j].name - for j in range(0, Nargs)] + mark_name = [mod_mark.name for mod_mark + in getattr(InstTestClass, method).pytestmark] + # Add instruments from your library - if 'all_inst' in names: - mark = pytest.mark.parametrize("name", instruments['names']) + if 'all_inst' in mark_name: + mark = pytest.mark.parametrize("inst_name", instruments['names']) getattr(InstTestClass, method).pytestmark.append(mark) - elif 'download' in names: - mark = pytest.mark.parametrize("inst", instruments['download']) + elif 'download' in mark_name: + mark = pytest.mark.parametrize("inst_dict", + instruments['download']) getattr(InstTestClass, method).pytestmark.append(mark) - elif 'no_download' in names: - mark = pytest.mark.parametrize("inst", instruments['no_download']) + elif 'no_download' in mark_name: + mark = pytest.mark.parametrize("inst_dict", + instruments['no_download']) getattr(InstTestClass, method).pytestmark.append(mark) # remote_file_list not functional in current code. Disabling for now @@ -35,9 +37,11 @@ class TestInstruments(InstTestClass): def setup(self): - """Runs before every method to create a clean testing setup.""" + """Runs before every method to create a clean testing setup + """ self.package = pysatMadrigal.instruments def teardown(self): - """Runs after every method to clean up previous testing.""" + """Runs after every method to clean up previous testing + """ del self.package From 18819fa72f2e0d890a2bb4663b9ea8c75298838a Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 18 Sep 2020 11:55:14 -0400 Subject: [PATCH 086/231] BUG: package in TestInstruments class Fixed use of deprecated setup/teardown structure. --- pysatMadrigal/tests/test_instruments.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pysatMadrigal/tests/test_instruments.py b/pysatMadrigal/tests/test_instruments.py index fe73ace..21891d6 100644 --- a/pysatMadrigal/tests/test_instruments.py +++ b/pysatMadrigal/tests/test_instruments.py @@ -39,9 +39,9 @@ class TestInstruments(InstTestClass): def setup(self): """Runs before every method to create a clean testing setup """ - self.package = pysatMadrigal.instruments + self.inst_loc = pysatMadrigal.instruments def teardown(self): """Runs after every method to clean up previous testing """ - del self.package + del self.inst_loc From 118b54adfb86ffa706fa56f520471a8a0eacd417 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Mon, 21 Sep 2020 13:17:15 -0400 Subject: [PATCH 087/231] TST: update `generate_instrument_list` import Updated the `geneerate_instrument_list` import to reflect the new location. --- pysatMadrigal/tests/test_instruments.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysatMadrigal/tests/test_instruments.py b/pysatMadrigal/tests/test_instruments.py index 21891d6..4c03f59 100644 --- a/pysatMadrigal/tests/test_instruments.py +++ b/pysatMadrigal/tests/test_instruments.py @@ -1,7 +1,7 @@ import pytest import pysatMadrigal -from pysat.tests.instrument_test_class import generate_instrument_list +from pysat.utils import generate_instrument_list from pysat.tests.instrument_test_class import InstTestClass instruments = generate_instrument_list(inst_loc=pysatMadrigal.instruments) From eab0a9c15abbf26b76290b2f26025876cacbc78b Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Wed, 23 Sep 2020 15:36:12 -0400 Subject: [PATCH 088/231] MAINT: use inst_id --- pysatMadrigal/instruments/dmsp_ivm.py | 18 +++++++++--------- pysatMadrigal/instruments/jro_isr.py | 10 +++++----- pysatMadrigal/instruments/methods/madrigal.py | 12 ++++++------ .../instruments/templates/madrigal_pandas.py | 8 ++++---- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/pysatMadrigal/instruments/dmsp_ivm.py b/pysatMadrigal/instruments/dmsp_ivm.py index 21df6ed..3997ae3 100644 --- a/pysatMadrigal/instruments/dmsp_ivm.py +++ b/pysatMadrigal/instruments/dmsp_ivm.py @@ -26,7 +26,7 @@ 'ivm' tag 'utd', None -sat_id +inst_id ['f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18'] Example @@ -72,9 +72,9 @@ platform = 'dmsp' name = 'ivm' tags = {'utd': 'UTDallas DMSP data processing', '': 'Level 2 data processing'} -sat_ids = {'f11': ['utd', ''], 'f12': ['utd', ''], 'f13': ['utd', ''], - 'f14': ['utd', ''], 'f15': ['utd', ''], 'f16': [''], 'f17': [''], - 'f18': ['']} +inst_ids = {'f11': ['utd', ''], 'f12': ['utd', ''], 'f13': ['utd', ''], + 'f14': ['utd', ''], 'f15': ['utd', ''], 'f16': [''], 'f17': [''], + 'f18': ['']} _test_dates = {'f11': {'utd': dt.datetime(1998, 1, 2)}, 'f12': {'utd': dt.datetime(1998, 1, 2)}, 'f13': {'utd': dt.datetime(1998, 1, 2)}, @@ -88,7 +88,7 @@ '': 'dms_{year:4d}{month:02d}{day:02d}_'} dmsp_fname2 = {'utd': '.{version:03d}.hdf5', '': 's?.{version:03d}.hdf5'} supported_tags = {ss: {kk: dmsp_fname1[kk] + ss[1:] + dmsp_fname2[kk] - for kk in sat_ids[ss]} for ss in sat_ids.keys()} + for kk in inst_ids[ss]} for ss in inst_ids.keys()} list_files = functools.partial(mm_gen.list_files, supported_tags=supported_tags) @@ -135,7 +135,7 @@ def init(self): return -def download(date_array, tag='', sat_id='', data_path=None, user=None, +def download(date_array, tag='', inst_id='', data_path=None, user=None, password=None): """Downloads data from Madrigal. @@ -147,7 +147,7 @@ def download(date_array, tag='', sat_id='', data_path=None, user=None, tag : string Tag identifier used for particular dataset. This input is provided by pysat. (default='') - sat_id : string + inst_id : string Satellite ID string identifier used for particular dataset. This input is provided by pysat. (default='') data_path : string @@ -172,7 +172,7 @@ def download(date_array, tag='', sat_id='', data_path=None, user=None, """ mad_meth.download(date_array, inst_code=str(madrigal_inst_code), - kindat=str(madrigal_tag[sat_id][tag]), + kindat=str(madrigal_tag[inst_id][tag]), data_path=data_path, user=user, password=password) @@ -272,7 +272,7 @@ def update_DMSP_ephemeris(inst, ephem=None): inst.data = pds.DataFrame(None) return - if ephem.sat_id != inst.sat_id: + if ephem.inst_id != inst.inst_id: raise ValueError('ephemera provided for the wrong satellite') if ephem.date != inst.date: diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index 3f1ec34..5b110f7 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -55,7 +55,7 @@ 'oblique_stan': 'Standard Faraday rotation double-pulse', 'oblique_rand': 'Randomized Faraday rotation double-pulse', 'oblique_long': 'Long pulse Faraday rotation'} -sat_ids = {'': list(tags.keys())} +inst_ids = {'': list(tags.keys())} _test_dates = {'': {'drifts': dt.datetime(2010, 1, 19), 'drifts_ave': dt.datetime(2010, 1, 19), 'oblique_stan': dt.datetime(2010, 4, 19), @@ -72,7 +72,7 @@ 'oblique_stan': jro_fname1 + jro_fname2, 'oblique_rand': jro_fname1 + "?" + jro_fname2, 'oblique_long': jro_fname1 + "?" + jro_fname2} - for ss in sat_ids.keys()} + for ss in inst_ids.keys()} list_files = functools.partial(mm_gen.list_files, supported_tags=supported_tags) @@ -123,7 +123,7 @@ def init(self): return -def download(date_array, tag='', sat_id='', data_path=None, user=None, +def download(date_array, tag='', inst_id='', data_path=None, user=None, password=None): """Downloads data from Madrigal. @@ -135,7 +135,7 @@ def download(date_array, tag='', sat_id='', data_path=None, user=None, tag : string Tag identifier used for particular dataset. This input is provided by pysat. (default='') - sat_id : string + inst_id : string Satellite ID string identifier used for particular dataset. This input is provided by pysat. (default='') data_path : string @@ -160,7 +160,7 @@ def download(date_array, tag='', sat_id='', data_path=None, user=None, """ mad_meth.download(date_array, inst_code=str(madrigal_inst_code), - kindat=str(madrigal_tag[sat_id][tag]), + kindat=str(madrigal_tag[inst_id][tag]), data_path=data_path, user=user, password=password) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index cbd6317..3889889 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -37,7 +37,7 @@ def cedar_rules(): # support load routine -def load(fnames, tag=None, sat_id=None, xarray_coords=[]): +def load(fnames, tag=None, inst_id=None, xarray_coords=[]): """Loads data from Madrigal into Pandas. This routine is called as needed by pysat. It is not intended @@ -53,7 +53,7 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): This input is nominally provided by pysat itself. While tag defaults to None here, pysat provides '' as the default tag unless specified by user at Instrument instantiation. (default='') - sat_id : string + inst_id : string Satellite ID used to identify particular data set to be loaded. This input is nominally provided by pysat itself. (default='') xarray_coords : list @@ -392,7 +392,7 @@ def good_exp(exp, date_array=None): return gflag -def list_remote_files(tag, sat_id, inst_code=None, kindat=None, user=None, +def list_remote_files(tag, inst_id, inst_code=None, kindat=None, user=None, password=None, supported_tags=None, url="http://cedar.openmadrigal.org", two_digit_year_break=None, start=dt.datetime(1900, 1, 1), @@ -404,7 +404,7 @@ def list_remote_files(tag, sat_id, inst_code=None, kindat=None, user=None, tag : string or NoneType Denotes type of file to load. Accepted types are . (default=None) - sat_id : string or NoneType + inst_id : string or NoneType Specifies the satellite ID for a constellation. Not used. (default=None) inst_code : string @@ -423,7 +423,7 @@ def list_remote_files(tag, sat_id, inst_code=None, kindat=None, user=None, password : string Password for data download. (default=None) supported_tags : dict or NoneType - keys are sat_id, each containing a dict keyed by tag + keys are inst_id, each containing a dict keyed by tag where the values file format template strings. (default=None) url : string URL for Madrigal site (default='http://cedar.openmadrigal.org') @@ -474,7 +474,7 @@ def list_remote_files(tag, sat_id, inst_code=None, kindat=None, user=None, # Test input try: - format_str = supported_tags[sat_id][tag] + format_str = supported_tags[inst_id][tag] except KeyError: raise ValueError('Problem parsing supported_tags') diff --git a/pysatMadrigal/instruments/templates/madrigal_pandas.py b/pysatMadrigal/instruments/templates/madrigal_pandas.py index cca211f..abd5bd9 100644 --- a/pysatMadrigal/instruments/templates/madrigal_pandas.py +++ b/pysatMadrigal/instruments/templates/madrigal_pandas.py @@ -88,7 +88,7 @@ platform = 'madrigal' name = 'pandas' tags = {'': 'General Madrigal data access loaded into pysat via pandas.'} -sat_ids = {'': list(tags.keys())} +inst_ids = {'': list(tags.keys())} # need to sort out test day setting for unit testing _test_dates = {'': {'': dt.datetime(2010, 1, 19)}} @@ -98,7 +98,7 @@ jro_fname1 = '*{year:4d}{month:02d}{day:02d}' jro_fname2 = '.{version:03d}.hdf5' supported_tags = {ss: {'': '*'.join((jro_fname1, jro_fname2))} - for ss in sat_ids.keys()} + for ss in inst_ids.keys()} list_files = functools.partial(cdw.list_files, supported_tags=supported_tags) @@ -134,7 +134,7 @@ def init(self): return -def _general_download(date_array, tag='', sat_id='', data_path=None, user=None, +def _general_download(date_array, tag='', inst_id='', data_path=None, user=None, password=None, inst_code=None, kindat=None): """Downloads data from Madrigal. @@ -152,7 +152,7 @@ def _general_download(date_array, tag='', sat_id='', data_path=None, user=None, tag : string Tag identifier used for particular dataset. This input is provided by pysat. (default='') - sat_id : string + inst_id : string Satellite ID string identifier used for particular dataset. This input is provided by pysat. (default='') data_path : string From 06a8c27134a1ef6ec61ded6ab4d412a5212c477f Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 9 Oct 2020 08:19:55 -0400 Subject: [PATCH 089/231] MAINT: install_requires update Updated install_requires to include netCDF support and added tag for only supporting Python 3. --- setup.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 75a7f7f..201fd98 100644 --- a/setup.py +++ b/setup.py @@ -17,11 +17,15 @@ version = version_file.read().strip() # Define requirements -install_requires = ['pysat', 'pandas', 'xarray', 'numpy'] +# netCDF support requires netCDF4-Python or scipy installation +install_requires = ['pysat', 'pandas', 'xarray', 'numpy', 'netCDF4-Python'] + # packages with Fortran code fortran_install = ['madrigalWeb', 'h5py'] + # flag, True if on readthedocs on_rtd = os.environ.get('READTHEDOCS') == 'True' + # include Fortran for normal install # read the docs doesn't do Fortran if not on_rtd: @@ -43,6 +47,7 @@ "Intended Audience :: Science/Research", 'License :: OSI Approved :: BSD License', "Natural Language :: English", + "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", From a529e75f2a91a9204f2d849224902eb2c2f7f6ec Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 9 Oct 2020 08:20:56 -0400 Subject: [PATCH 090/231] ENH: general and TEC netCDF support Added general support for downloading and loading netCDF data from Madrigal and applied this as the default in the GNSS TEC instrument module. --- pysatMadrigal/instruments/gnss_tec.py | 45 ++- pysatMadrigal/instruments/methods/madrigal.py | 327 ++++++++++-------- 2 files changed, 218 insertions(+), 154 deletions(-) diff --git a/pysatMadrigal/instruments/gnss_tec.py b/pysatMadrigal/instruments/gnss_tec.py index b3820ba..66f6614 100644 --- a/pysatMadrigal/instruments/gnss_tec.py +++ b/pysatMadrigal/instruments/gnss_tec.py @@ -38,6 +38,7 @@ import datetime as dt import functools +import numpy as np from pysat.instruments.methods import general as ps_gen @@ -50,7 +51,7 @@ platform = 'gnss' name = 'tec' tags = {'vtec': 'vertical TEC'} -sat_ids = {'': [tag for tag in tags.keys()]} +inst_ids = {'': [tag for tag in tags.keys()]} _test_dates = {'': {'vtec': dt.datetime(2017, 11, 19)}} pandas_format = False @@ -59,7 +60,7 @@ dname = '{year:02d}{month:02d}{day:02d}' vname = '.{version:03d}' supported_tags = {ss: {'vtec': "gps{:s}g{:s}.hdf5".format(dname, vname)} - for ss in sat_ids.keys()} + for ss in inst_ids.keys()} list_files = functools.partial(ps_gen.list_files, supported_tags=supported_tags, two_digit_year_break=99) @@ -113,8 +114,9 @@ def init(self): return -def download(date_array, tag='', sat_id='', data_path=None, user=None, - password=None): +def download(date_array, tag='', inst_id='', data_path=None, user=None, + password=None, url='http://cedar.openmadrigal.org', + file_format='netCDF4'): """Downloads data from Madrigal. Parameters @@ -125,7 +127,7 @@ def download(date_array, tag='', sat_id='', data_path=None, user=None, tag : string Tag identifier used for particular dataset. This input is provided by pysat. (default='') - sat_id : string + inst_id : string Satellite ID string identifier used for particular dataset. This input is provided by pysat. (default='') data_path : string @@ -136,6 +138,12 @@ def download(date_array, tag='', sat_id='', data_path=None, user=None, error if user not supplied. (default=None) password : string Password for data download. (default=None) + url : string + URL for Madrigal site (default='http://cedar.openmadrigal.org') + file_format : string + File format for Madrigal data. Load routines currently only accepts + 'hdf5' and 'netCDF4', but any of the Madrigal options may be used + here. (default='netCDF4') Note ---- @@ -150,12 +158,13 @@ def download(date_array, tag='', sat_id='', data_path=None, user=None, """ mad_meth.download(date_array, inst_code=str(madrigal_inst_code), - kindat=str(madrigal_tag[sat_id][tag]), - data_path=data_path, user=user, password=password) + kindat=str(madrigal_tag[inst_id][tag]), + data_path=data_path, user=user, password=password, + file_format=file_format, url=url) return -def load(fnames, tag=None, sat_id=None): +def load(fnames, tag=None, inst_id=None, file_format='netCDF4'): """ Routine to load the GNSS TEC data Parameters @@ -165,9 +174,13 @@ def load(fnames, tag=None, sat_id=None): tag : string or NoneType tag name used to identify particular data set to be loaded. This input is nominally provided by pysat itself. (default=None) - sat_id : string or NoneType + inst_id : string or NoneType Satellite ID used to identify particular data set to be loaded. This input is nominally provided by pysat itself. (default=None) + file_format : string + File format for Madrigal data. Currently only accepts 'hdf5' and + 'netCDF4', but any of the Madrigal options may be used here. + (default='netCDF4') Returns -------- @@ -178,16 +191,22 @@ def load(fnames, tag=None, sat_id=None): """ # Define the xarray coordinate dimensions (apart from time) - xcoords = {'vtec': {('time', 'gdlat', 'glon', 'gdalt', 'kindat', 'kinst'): - ['tec', 'dtec'], + # Not needed for netCDF + xcoords = {'vtec': {('time', 'gdlat', 'glon', 'kindat', 'kinst'): + ['gdalt', 'tec', 'dtec'], ('time', ): ['year', 'month', 'day', 'hour', 'min', 'sec', 'ut1_unix', 'ut2_unix', 'recno']}} # Load the specified data - data, meta = mad_meth.load(fnames, tag, sat_id, xarray_coords=xcoords[tag]) + data, meta = mad_meth.load(fnames, tag, inst_id, + xarray_coords=xcoords[tag], + file_format=file_format) # Squeeze the kindat and kinst 'coordinates', but keep them as floats - data = data.squeeze(dim=['kindat', 'kinst']) + squeeze_dims = np.array(['kindat', 'kinst']) + squeeze_mask = [sdim in data.coords for sdim in squeeze_dims] + if np.any(squeeze_mask): + data = data.squeeze(dim=squeeze_dims[squeeze_mask]) # Fix the units for tec and dtec if tag == 'vtec': diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 2aa2332..ef73963 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -4,14 +4,12 @@ """ -from __future__ import absolute_import -from __future__ import print_function - import datetime as dt import logging import numpy as np import os import pandas as pds +import xarray as xr import h5py from madrigalWeb import madrigalWeb @@ -35,7 +33,7 @@ def cedar_rules(): return ackn -def load(fnames, tag=None, sat_id=None, xarray_coords=[]): +def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_format='hdf5'): """Loads data from Madrigal into Pandas or XArray This routine is called as needed by pysat. It is not intended @@ -51,7 +49,7 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): This input is nominally provided by pysat itself. While tag defaults to None here, pysat provides '' as the default tag unless specified by user at Instrument instantiation. (default='') - sat_id : string + inst_id : string Satellite ID used to identify particular data set to be loaded. This input is nominally provided by pysat itself. (default='') xarray_coords : list @@ -61,8 +59,11 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): inside the list instead of coordinate variable name strings. Each dict will have a tuple of coordinates as the key and a list of variable strings as the value. For example, - xarray_coords=[{('time',): ['year', 'doy'], ('time', 'gdalt'): - ['data1', 'data2']}]. (default=[]) + xarray_coords=[{('time',): ['year', 'doy'], + ('time', 'gdalt'): ['data1', 'data2']}]. (default=[]) + file_format : string + File format for Madrigal data. Currently only accept 'netcdf4' and + 'hdf5'. (default='hdf5') Returns ------- @@ -73,137 +74,181 @@ def load(fnames, tag=None, sat_id=None, xarray_coords=[]): Metadata from the HDF5 file, as well as default values from pysat """ + # Test the file format + file_format = file_format.lower() + if file_format not in ['netcdf4', 'hdf5']: + raise ValueError('unknown file format {:s}'.format(file_format)) - # Open the specified file - filed = h5py.File(fnames[0], 'r') - # data - file_data = filed['Data']['Table Layout'] - # metadata - file_meta = filed['Metadata']['Data Parameters'] - # load up what is offered into pysat.Meta + # Initialize the output meta = pysat.Meta() labels = [] - for item in file_meta: - name_string = item[0].decode('UTF-8') - unit_string = item[3].decode('UTF-8') - desc_string = item[1].decode('UTF-8') - labels.append(name_string) - meta[name_string.lower()] = {'long_name': name_string, - 'units': unit_string, - 'desc': desc_string} - - # add additional metadata notes - # custom attributes attached to meta are attached to - # corresponding Instrument object when pysat receives - # data and meta from this routine - for key in filed['Metadata']: - if key != 'Data Parameters': - setattr(meta, key.replace(' ', '_'), filed['Metadata'][key][:]) - - # data into frame, with labels from metadata - data = pds.DataFrame.from_records(file_data, columns=labels) - - # lowercase variable names - data.columns = [item.lower() for item in data.columns] - - # datetime index from times - time_keys = np.array(['year', 'month', 'day', 'hour', 'min', 'sec']) - if not np.all([key in data.columns for key in time_keys]): - time_keys = [key for key in time_keys if key not in data.columns] - raise ValueError(' '.join(["unable to construct time index, missing", - "{:}".format(time_keys)])) - - uts = 3600.0 * data.loc[:, 'hour'] + 60.0 * data.loc[:, 'min'] \ - + data.loc[:, 'sec'] - time = pysat.utils.time.create_datetime_index(year=data.loc[:, 'year'], - month=data.loc[:, 'month'], - day=data.loc[:, 'day'], - uts=uts) - - # Ensure we don't try to create an xarray object with only time as the - # coordinate - coord_len = len(xarray_coords) - if 'time' in xarray_coords: - coord_len -= 1 - - # Declare index or recast as xarray - if coord_len > 0: - # If a list was provided, recast as a dict and grab the data columns - if not isinstance(xarray_coords, dict): - xarray_coords = {tuple(xarray_coords): - [col for col in data.columns - if col not in xarray_coords]} - - # Determine the order in which the keys should be processed: - # Greatest to least number of dimensions - len_dict = {len(xcoords): xcoords - for xcoords in xarray_coords.keys()} - coord_order = [len_dict[xkey] for xkey in sorted( - [lkey for lkey in len_dict.keys()], reverse=True)] - - # Append time to the data frame - data = data.assign(time=pds.Series(time, index=data.index)) - - # Cycle through each of the coordinate dimensions - xdatasets = list() - for xcoords in coord_order: - if not np.all([xkey.lower() in data.columns for xkey in xcoords]): - raise ValueError(''.join(['unknown coordinate key in [', - '{:}], use only: '.format(xcoords), - '{:}'.format(data.columns)])) - if not np.all([xkey.lower() in data.columns - for xkey in xarray_coords[xcoords]]): - raise ValueError(''.join(['unknown data variable in [', - '{:}'.format(xarray_coords[xcoords]), - '], use only: {:}'.format( - data.columns)])) - - # Select the desired data values - sel_data = data[list(xcoords) + xarray_coords[xcoords]] - - # Remove duplicates before indexing, to ensure data with the same - # values at different locations are kept - sel_data = sel_data.drop_duplicates() - - # Set the indices - sel_data = sel_data.set_index(list(xcoords)) - - # Recast as an xarray - xdatasets.append(sel_data.to_xarray()) - - # Merge all of the datasets - for i in np.arange(1, len(xdatasets)): - xdatasets[0] = xdatasets[0].merge(xdatasets[i]) - - # Test to see that all data was retrieved - test_variables = [xkey for xkey in xdatasets[0].variables.keys()] - ltest = len(test_variables) - ldata = len(data.columns) - - if ltest != ldata: - if ltest < ldata: - estr = 'missing: {:}'.format( - ' '.join([dvar for dvar in data.columns - if dvar not in test_variables])) + fdata = [] + + # Load the file data + for fname in fnames: + if file_format == "netcdf4": + # Xarray natively opens netCDF data into a Dataset + file_data = xr.open_dataset(fname) + + # Currently not saving file header data, as all metadata is at + # the data variable level + if len(labels) == 0: + for item in file_data.data_vars.keys(): + name_string = item + unit_string = file_data[item].attrs['units'] + desc_string = file_data[item].attrs['description'] + labels.append(name_string) + meta[name_string.lower()] = {'long_name': name_string, + 'units': unit_string, + 'desc': desc_string} + + # Add an index + file_data = file_data.rename({'timestamps': 'time'}) + data = file_data.set_index(time='time') + + elif file_format == "hdf5": + # Open the specified file and get the data and metadata + filed = h5py.File(fname, 'r') + file_data = filed['Data']['Table Layout'] + file_meta = filed['Metadata']['Data Parameters'] + + # load up what is offered into pysat.Meta if this is the first file + if len(labels) == 0: + for item in file_meta: + name_string = item[0].decode('UTF-8') + unit_string = item[3].decode('UTF-8') + desc_string = item[1].decode('UTF-8') + labels.append(name_string) + meta[name_string.lower()] = {'long_name': name_string, + 'units': unit_string, + 'desc': desc_string} + + # Add additional metadata notes. Custom attributes attached to meta + # are attached to corresponding Instrument object when pysat + # receives data and meta from this routine + for key in filed['Metadata']: + if key != 'Data Parameters': + setattr(meta, key.replace(' ', '_'), + filed['Metadata'][key][:]) + + # data into frame, with labels from metadata + data = pds.DataFrame.from_records(file_data, columns=labels) + + # lowercase variable names + data.columns = [item.lower() for item in data.columns] + + # datetime index from times + time_keys = np.array(['year', 'month', 'day', 'hour', 'min', 'sec']) + if not np.all([key in data.columns for key in time_keys]): + time_keys = [key for key in time_keys + if key not in data.columns] + raise ValueError(' '.join(["unable to construct time index, ", + "missing {:}".format(time_keys)])) + + uts = 3600.0 * data.loc[:, 'hour'] + 60.0 * data.loc[:, 'min'] \ + + data.loc[:, 'sec'] + time = pysat.utils.time.create_datetime_index( + year=data.loc[:, 'year'], month=data.loc[:, 'month'], + day=data.loc[:, 'day'], uts=uts) + + # Ensure we don't try to create an xarray object with only time as + # the coordinate + coord_len = len(xarray_coords) + if 'time' in xarray_coords: + coord_len -= 1 + + # Declare index or recast as xarray + if coord_len > 0: + # If a list was provided, recast as a dict and grab the data + # columns + if not isinstance(xarray_coords, dict): + xarray_coords = {tuple(xarray_coords): + [col for col in data.columns + if col not in xarray_coords]} + + # Determine the order in which the keys should be processed: + # Greatest to least number of dimensions + len_dict = {len(xcoords): xcoords + for xcoords in xarray_coords.keys()} + coord_order = [len_dict[xkey] for xkey in sorted( + [lkey for lkey in len_dict.keys()], reverse=True)] + + # Append time to the data frame + data = data.assign(time=pds.Series(time, index=data.index)) + + # Cycle through each of the coordinate dimensions + xdatasets = list() + for xcoords in coord_order: + if not np.all([xkey.lower() in data.columns + for xkey in xcoords]): + raise ValueError(''.join(['unknown coordinate key in ', + '[{:}], use'.format(xcoords), + ' only: {:}'.format( + data.columns)])) + if not np.all([xkey.lower() in data.columns + for xkey in xarray_coords[xcoords]]): + raise ValueError(''.join(['unknown data variable in [', + '{:}'.format( + xarray_coords[xcoords]), + '], use only: {:}'.format( + data.columns)])) + + # Select the desired data values + sel_data = data[list(xcoords) + xarray_coords[xcoords]] + + # Remove duplicates before indexing, to ensure data with + # the same values at different locations are kept + sel_data = sel_data.drop_duplicates() + + # Set the indices + sel_data = sel_data.set_index(list(xcoords)) + + # Recast as an xarray + xdatasets.append(sel_data.to_xarray()) + + # Merge all of the datasets + for i in np.arange(1, len(xdatasets)): + xdatasets[0] = xdatasets[0].merge(xdatasets[i]) + + # Test to see that all data was retrieved + test_variables = [xkey for xkey + in xdatasets[0].variables.keys()] + ltest = len(test_variables) + ldata = len(data.columns) + + if ltest != ldata: + if ltest < ldata: + estr = 'missing: {:}'.format( + ' '.join([dvar for dvar in data.columns + if dvar not in test_variables])) + else: + estr = 'have extra: {:}'.format( + ' '.join([tvar for tvar in test_variables + if tvar not in data.columns])) + raise ValueError(''.join(['coordinates not supplied ', + 'for all data columns: ', + '{:d} != '.format(ltest), + '{:d}; '.format(ldata), + estr])) + + data = xdatasets[0] else: - estr = 'have extra: {:}'.format( - ' '.join([tvar for tvar in test_variables - if tvar not in data.columns])) - raise ValueError(''.join(['coordinates not supplied for all data ', - 'columns: {:d} != '.format(ltest), - '{:d}; '.format(ldata), estr])) - - data = xdatasets[0] - else: - # Set the index to time - data.index = time - - # Raise a logging warning if there are duplicate times. This means the - # data should be stored as an xarray Dataset - if np.any(time.duplicated()): - logger.warning(''.join(["duplicated time indices, consider ", - "specifing additional coordinates and ", - "storing the data as an xarray Dataset"])) + # Set the index to time + data.index = time + + # Raise a logging warning if there are duplicate times. This + # means the data should be stored as an xarray Dataset + if np.any(time.duplicated()): + logger.warning(''.join(["duplicated time indices, consider", + " specifing additional coordinates", + " and storing the data as an ", + "xarray Dataset"])) + fdata.append(data) + + # If multiple files were loaded, merge the data together + for i in np.arange(1, len(fdata)): + fdata[0] = fdata[0].merge(fdata[i]) + data = fdata[0] return data, meta @@ -235,9 +280,9 @@ def download(date_array, inst_code=None, kindat=None, data_path=None, url : string URL for Madrigal site (default='http://cedar.openmadrigal.org') file_format : string - File format for Madrigal data. Load routines currently only accept - 'hdf5', but any of the Madrigal options may be used here. - (default='hdf5') + File format for Madrigal data. Load routines currently only accepts + 'hdf5' and 'netCDF4', but any of the Madrigal options may be used + here. (default='hdf5') Note ---- @@ -437,7 +482,7 @@ def good_exp(exp, date_array=None): return gflag -def list_remote_files(tag, sat_id, inst_code=None, kindat=None, user=None, +def list_remote_files(tag, inst_id, inst_code=None, kindat=None, user=None, password=None, supported_tags=None, url="http://cedar.openmadrigal.org", two_digit_year_break=None, start=dt.datetime(1900, 1, 1), @@ -449,7 +494,7 @@ def list_remote_files(tag, sat_id, inst_code=None, kindat=None, user=None, tag : string or NoneType Denotes type of file to load. Accepted types are . (default=None) - sat_id : string or NoneType + inst_id : string or NoneType Specifies the satellite ID for a constellation. Not used. (default=None) inst_code : string @@ -468,7 +513,7 @@ def list_remote_files(tag, sat_id, inst_code=None, kindat=None, user=None, password : string Password for data download. (default=None) supported_tags : dict or NoneType - keys are sat_id, each containing a dict keyed by tag + keys are inst_id, each containing a dict keyed by tag where the values file format template strings. (default=None) url : string URL for Madrigal site (default='http://cedar.openmadrigal.org') @@ -519,7 +564,7 @@ def list_remote_files(tag, sat_id, inst_code=None, kindat=None, user=None, # Test input try: - format_str = supported_tags[sat_id][tag] + format_str = supported_tags[inst_id][tag] except KeyError: raise ValueError('Problem parsing supported_tags') From f5b451a172442a6087c3ef752223395e3c592f9c Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 9 Oct 2020 08:35:30 -0400 Subject: [PATCH 091/231] BUG: netCDF4-Python pip name Updated the PiPy distribution name for netCDF4-Python. --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 201fd98..c7820b4 100644 --- a/setup.py +++ b/setup.py @@ -18,7 +18,7 @@ # Define requirements # netCDF support requires netCDF4-Python or scipy installation -install_requires = ['pysat', 'pandas', 'xarray', 'numpy', 'netCDF4-Python'] +install_requires = ['pysat', 'pandas', 'xarray', 'numpy', 'netCDF4'] # packages with Fortran code fortran_install = ['madrigalWeb', 'h5py'] From caf877bf0f13a36c28a96126621a2ac6020f2cc6 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 9 Oct 2020 08:52:43 -0400 Subject: [PATCH 092/231] MAINT: test instrument update Updated the TestInstruments class. --- pysatMadrigal/tests/test_instruments.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/pysatMadrigal/tests/test_instruments.py b/pysatMadrigal/tests/test_instruments.py index 4c03f59..589e08d 100644 --- a/pysatMadrigal/tests/test_instruments.py +++ b/pysatMadrigal/tests/test_instruments.py @@ -1,3 +1,4 @@ +import tempfile import pytest import pysatMadrigal @@ -8,6 +9,7 @@ method_list = [func for func in dir(InstTestClass) if callable(getattr(InstTestClass, func))] + # Search tests for iteration via pytestmark, update instrument list for method in method_list: if hasattr(getattr(InstTestClass, method), 'pytestmark'): @@ -35,13 +37,23 @@ class TestInstruments(InstTestClass): - - def setup(self): - """Runs before every method to create a clean testing setup + def setup_class(self): + """Runs once before the tests to initialize the testing setup """ + # Make sure to use a temporary directory so that the user's setup is + # not altered + self.tempdir = tempfile.TemporaryDirectory() + self.saved_path = pysat.data_dir + pysat.utils.set_data_dir(self.tempdir.name, store=False) + + # Developers for instrument libraries should update the following line + # to point to their own subpackage location, e.g., + # self.inst_loc = mypackage.instruments self.inst_loc = pysatMadrigal.instruments - def teardown(self): + def teardown_class(self): """Runs after every method to clean up previous testing """ - del self.inst_loc + pysat.utils.set_data_dir(self.saved_path, store=False) + self.tempdir.cleanup() + del self.inst_loc, self.saved_path, self.tempdir From a9b757704c0e1ee1d76274fbf633f8b59366cdc8 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 9 Oct 2020 09:00:35 -0400 Subject: [PATCH 093/231] BUG: pysat import missing Added a missing pysat import. --- pysatMadrigal/tests/test_instruments.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pysatMadrigal/tests/test_instruments.py b/pysatMadrigal/tests/test_instruments.py index 589e08d..02bf101 100644 --- a/pysatMadrigal/tests/test_instruments.py +++ b/pysatMadrigal/tests/test_instruments.py @@ -1,12 +1,13 @@ import tempfile import pytest -import pysatMadrigal +import pysat from pysat.utils import generate_instrument_list from pysat.tests.instrument_test_class import InstTestClass -instruments = generate_instrument_list(inst_loc=pysatMadrigal.instruments) +import pysatMadrigal +instruments = generate_instrument_list(inst_loc=pysatMadrigal.instruments) method_list = [func for func in dir(InstTestClass) if callable(getattr(InstTestClass, func))] From 4d7007bcdb92062d8345abcfe17c5e645241e590 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 9 Oct 2020 09:47:47 -0400 Subject: [PATCH 094/231] MAINT: sat_id -> inst_id Updated sat_id to inst_id again. --- pysatMadrigal/instruments/dmsp_ivm.py | 14 +++++++------- pysatMadrigal/instruments/jro_isr.py | 10 +++++----- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/pysatMadrigal/instruments/dmsp_ivm.py b/pysatMadrigal/instruments/dmsp_ivm.py index 21df6ed..ce7c7d0 100644 --- a/pysatMadrigal/instruments/dmsp_ivm.py +++ b/pysatMadrigal/instruments/dmsp_ivm.py @@ -26,7 +26,7 @@ 'ivm' tag 'utd', None -sat_id +inst_id ['f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18'] Example @@ -72,7 +72,7 @@ platform = 'dmsp' name = 'ivm' tags = {'utd': 'UTDallas DMSP data processing', '': 'Level 2 data processing'} -sat_ids = {'f11': ['utd', ''], 'f12': ['utd', ''], 'f13': ['utd', ''], +inst_ids = {'f11': ['utd', ''], 'f12': ['utd', ''], 'f13': ['utd', ''], 'f14': ['utd', ''], 'f15': ['utd', ''], 'f16': [''], 'f17': [''], 'f18': ['']} _test_dates = {'f11': {'utd': dt.datetime(1998, 1, 2)}, @@ -88,7 +88,7 @@ '': 'dms_{year:4d}{month:02d}{day:02d}_'} dmsp_fname2 = {'utd': '.{version:03d}.hdf5', '': 's?.{version:03d}.hdf5'} supported_tags = {ss: {kk: dmsp_fname1[kk] + ss[1:] + dmsp_fname2[kk] - for kk in sat_ids[ss]} for ss in sat_ids.keys()} + for kk in inst_ids[ss]} for ss in inst_ids.keys()} list_files = functools.partial(mm_gen.list_files, supported_tags=supported_tags) @@ -135,7 +135,7 @@ def init(self): return -def download(date_array, tag='', sat_id='', data_path=None, user=None, +def download(date_array, tag='', inst_id='', data_path=None, user=None, password=None): """Downloads data from Madrigal. @@ -147,7 +147,7 @@ def download(date_array, tag='', sat_id='', data_path=None, user=None, tag : string Tag identifier used for particular dataset. This input is provided by pysat. (default='') - sat_id : string + inst_id : string Satellite ID string identifier used for particular dataset. This input is provided by pysat. (default='') data_path : string @@ -172,7 +172,7 @@ def download(date_array, tag='', sat_id='', data_path=None, user=None, """ mad_meth.download(date_array, inst_code=str(madrigal_inst_code), - kindat=str(madrigal_tag[sat_id][tag]), + kindat=str(madrigal_tag[inst_id][tag]), data_path=data_path, user=user, password=password) @@ -272,7 +272,7 @@ def update_DMSP_ephemeris(inst, ephem=None): inst.data = pds.DataFrame(None) return - if ephem.sat_id != inst.sat_id: + if ephem.inst_id != inst.inst_id: raise ValueError('ephemera provided for the wrong satellite') if ephem.date != inst.date: diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index 3f1ec34..5b110f7 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -55,7 +55,7 @@ 'oblique_stan': 'Standard Faraday rotation double-pulse', 'oblique_rand': 'Randomized Faraday rotation double-pulse', 'oblique_long': 'Long pulse Faraday rotation'} -sat_ids = {'': list(tags.keys())} +inst_ids = {'': list(tags.keys())} _test_dates = {'': {'drifts': dt.datetime(2010, 1, 19), 'drifts_ave': dt.datetime(2010, 1, 19), 'oblique_stan': dt.datetime(2010, 4, 19), @@ -72,7 +72,7 @@ 'oblique_stan': jro_fname1 + jro_fname2, 'oblique_rand': jro_fname1 + "?" + jro_fname2, 'oblique_long': jro_fname1 + "?" + jro_fname2} - for ss in sat_ids.keys()} + for ss in inst_ids.keys()} list_files = functools.partial(mm_gen.list_files, supported_tags=supported_tags) @@ -123,7 +123,7 @@ def init(self): return -def download(date_array, tag='', sat_id='', data_path=None, user=None, +def download(date_array, tag='', inst_id='', data_path=None, user=None, password=None): """Downloads data from Madrigal. @@ -135,7 +135,7 @@ def download(date_array, tag='', sat_id='', data_path=None, user=None, tag : string Tag identifier used for particular dataset. This input is provided by pysat. (default='') - sat_id : string + inst_id : string Satellite ID string identifier used for particular dataset. This input is provided by pysat. (default='') data_path : string @@ -160,7 +160,7 @@ def download(date_array, tag='', sat_id='', data_path=None, user=None, """ mad_meth.download(date_array, inst_code=str(madrigal_inst_code), - kindat=str(madrigal_tag[sat_id][tag]), + kindat=str(madrigal_tag[inst_id][tag]), data_path=data_path, user=user, password=password) From 138034163cddc3dc55a577c60e6b85fdd0fab68d Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 9 Oct 2020 10:18:45 -0400 Subject: [PATCH 095/231] TST: Travis uses develop-3 Have Travis use develop-3, since enough breaking changes have been made. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 2b205a8..425eb68 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,7 +37,7 @@ install: - pip install pysatCDF >/dev/null # Custom pysat install - cd .. - - git clone https://github.com/pysat/pysat.git + - git clone --single-branch --branch develop-3 https://github.com/pysat/pysat.git - cd pysat - git checkout develop-3 - python setup.py install From 59c59831f690881d2a43c0e987725ec96c04cb6e Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 9 Oct 2020 10:41:33 -0400 Subject: [PATCH 096/231] BUG: update module nickname Module nickname was not carried through entire file, fixed this. --- pysatMadrigal/instruments/dmsp_ivm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysatMadrigal/instruments/dmsp_ivm.py b/pysatMadrigal/instruments/dmsp_ivm.py index 80b867f..1ee616f 100644 --- a/pysatMadrigal/instruments/dmsp_ivm.py +++ b/pysatMadrigal/instruments/dmsp_ivm.py @@ -90,7 +90,7 @@ dmsp_fname2 = {'utd': '.{version:03d}.hdf5', '': 's?.{version:03d}.hdf5'} supported_tags = {ss: {kk: dmsp_fname1[kk] + ss[1:] + dmsp_fname2[kk] for kk in inst_ids[ss]} for ss in inst_ids.keys()} -list_files = functools.partial(mm_gen.list_files, +list_files = functools.partial(ps_gen.list_files, supported_tags=supported_tags) # madrigal tags From 6908d09c0df3a971799c29bf3fe572c6552bbb1c Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 9 Oct 2020 15:12:54 -0400 Subject: [PATCH 097/231] BUG: lingering sat_id Removed hopefully the last instance of sat_id. --- pysatMadrigal/instruments/jro_isr.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index d315fcd..7686aaa 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -161,7 +161,7 @@ def download(date_array, tag='', inst_id='', data_path=None, user=None, data_path=data_path, user=user, password=password) -def load(fnames, tag=None, sat_id=None): +def load(fnames, tag=None, inst_id=None): """ Routine to load the GNSS TEC data Parameters @@ -171,7 +171,7 @@ def load(fnames, tag=None, sat_id=None): tag : string or NoneType tag name used to identify particular data set to be loaded. This input is nominally provided by pysat itself. (default=None) - sat_id : string or NoneType + inst_id : string or NoneType Satellite ID used to identify particular data set to be loaded. This input is nominally provided by pysat itself. (default=None) @@ -228,7 +228,7 @@ def load(fnames, tag=None, sat_id=None): 'ut1_unix', 'ut2_unix', 'recno']}} # Load the specified data - data, meta = mad_meth.load(fnames, tag, sat_id, xarray_coords=xcoords[tag]) + data, meta = mad_meth.load(fnames, tag, inst_id, xarray_coords=xcoords[tag]) # Squeeze the kindat and kinst 'coordinates', but keep them as floats data = data.squeeze(dim=['kindat', 'kinst', 'gdlatr', 'gdlonr']) From 5df53b194a04db85747e39362aca9886306091d2 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 9 Oct 2020 15:45:31 -0400 Subject: [PATCH 098/231] STY: removed print statement Replaced print statements with logger warnings. --- pysatMadrigal/instruments/methods/madrigal.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index ef73963..b7393f3 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -400,10 +400,10 @@ def get_remote_filenames(inst_code=None, kindat=None, user=None, # TODO, implement user and password values in test code # specific to each instrument if user is None: - print('No user information supplied for download.') + logger.warning('No user information supplied for download.') user = 'pysat_testing' if password is None: - print('Please provide email address in password field.') + logger.warning('Please provide email address in password field.') password = 'pysat_testing@not_real_email.org' # If date_array supplied, overwrite start and stop From ecf0403425f2fe72816e7bee6ce5a84fa87c8e75 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 9 Oct 2020 16:03:26 -0400 Subject: [PATCH 099/231] STY: file_format flag Added a file_format flag option to JRO ISR load and download routine. --- pysatMadrigal/instruments/jro_isr.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index 7686aaa..9ecc729 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -121,7 +121,7 @@ def init(self): def download(date_array, tag='', inst_id='', data_path=None, user=None, - password=None): + password=None, file_format='hdf5'): """Downloads data from Madrigal. Parameters @@ -143,6 +143,9 @@ def download(date_array, tag='', inst_id='', data_path=None, user=None, error if user not supplied. (default=None) password : string Password for data download. (default=None) + file_format : string + File format for Madrigal data. Currently only accept 'netcdf4' and + 'hdf5'. (default='hdf5') Notes ----- @@ -161,7 +164,7 @@ def download(date_array, tag='', inst_id='', data_path=None, user=None, data_path=data_path, user=user, password=password) -def load(fnames, tag=None, inst_id=None): +def load(fnames, tag=None, inst_id=None, file_format='hdf5'): """ Routine to load the GNSS TEC data Parameters @@ -174,6 +177,9 @@ def load(fnames, tag=None, inst_id=None): inst_id : string or NoneType Satellite ID used to identify particular data set to be loaded. This input is nominally provided by pysat itself. (default=None) + file_format : string + File format for Madrigal data. Currently only accept 'netcdf4' and + 'hdf5'. (default='hdf5') Returns -------- @@ -228,7 +234,9 @@ def load(fnames, tag=None, inst_id=None): 'ut1_unix', 'ut2_unix', 'recno']}} # Load the specified data - data, meta = mad_meth.load(fnames, tag, inst_id, xarray_coords=xcoords[tag]) + data, meta = mad_meth.load(fnames, tag, inst_id, + xarray_coords=xcoords[tag], + file_format=file_format) # Squeeze the kindat and kinst 'coordinates', but keep them as floats data = data.squeeze(dim=['kindat', 'kinst', 'gdlatr', 'gdlonr']) From dcf32efc25a6d8223e7cc5d5ce1ac0f7f03520ee Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 9 Oct 2020 16:04:34 -0400 Subject: [PATCH 100/231] ENH: HDF5 coordinate flexibility Added ability to remove expected coordinates from HDF5 xarray loading if they aren't present. Now only errors if all variables are absent. --- pysatMadrigal/instruments/methods/madrigal.py | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index b7393f3..3ae0fc5 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -187,11 +187,26 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_format='hdf5'): data.columns)])) if not np.all([xkey.lower() in data.columns for xkey in xarray_coords[xcoords]]): - raise ValueError(''.join(['unknown data variable in [', - '{:}'.format( - xarray_coords[xcoords]), - '], use only: {:}'.format( - data.columns)])) + data_mask = [xkey.lower() in data.columns + for xkey in xarray_coords[xcoords]] + if np.all(~np.array(data_mask)): + raise ValueError(''.join(['all provided data ', + 'variables [', + '{:}] are '.format( + xarray_coords[xcoords]), + 'unknown, use only: ', + '{:}'.format( + data.columns)])) + else: + logger.warning(''.join(['unknown data variable in', + ' [{:}], use only'.format( + xarray_coords[xcoords]), + ': {:}'.format( + data.columns)])) + + # Remove the coordinates that aren't present + temp = np.array(xarray_coords[xcoords])[data_mask] + xarray_coords[xcoords] = list(temp) # Select the desired data values sel_data = data[list(xcoords) + xarray_coords[xcoords]] From d9f3247b69ee0d0c0249ce0a88b117d99088a6af Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 9 Oct 2020 16:24:53 -0400 Subject: [PATCH 101/231] STY: flake8 Flake8 correction for hanging indent. --- pysatMadrigal/instruments/methods/madrigal.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 3ae0fc5..3a716f7 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -193,7 +193,8 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_format='hdf5'): raise ValueError(''.join(['all provided data ', 'variables [', '{:}] are '.format( - xarray_coords[xcoords]), + xarray_coords[ + xcoords]), 'unknown, use only: ', '{:}'.format( data.columns)])) From e69fd43723cec9f4ef608c1009c3cc82446badc4 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Tue, 13 Oct 2020 12:50:29 -0400 Subject: [PATCH 102/231] BUG: madrigal docs and file format handling Updated general madrigal routines by: - fixing incorrect use of `self` in `filter_data_single_date`, - changing `Notes` to `Note`, - ensuring local files have the right extension, - changing variable `file_format` to `file_type` to remove any confusion with the Instrument attribute, - changing `netcdf4` to `netCDF4` everywhere, and - specifying accepted file types. --- pysatMadrigal/instruments/methods/madrigal.py | 62 ++++++++++++------- 1 file changed, 40 insertions(+), 22 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 3a716f7..59231f7 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -17,6 +17,7 @@ import pysat logger = logging.getLogger(__name__) +file_types = ['hdf5', 'netCDF4', 'simple'] def cedar_rules(): @@ -33,7 +34,7 @@ def cedar_rules(): return ackn -def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_format='hdf5'): +def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_type='hdf5'): """Loads data from Madrigal into Pandas or XArray This routine is called as needed by pysat. It is not intended @@ -61,8 +62,8 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_format='hdf5'): strings as the value. For example, xarray_coords=[{('time',): ['year', 'doy'], ('time', 'gdalt'): ['data1', 'data2']}]. (default=[]) - file_format : string - File format for Madrigal data. Currently only accept 'netcdf4' and + file_type : string + File format for Madrigal data. Currently only accept 'netCDF4' and 'hdf5'. (default='hdf5') Returns @@ -75,9 +76,8 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_format='hdf5'): """ # Test the file format - file_format = file_format.lower() - if file_format not in ['netcdf4', 'hdf5']: - raise ValueError('unknown file format {:s}'.format(file_format)) + if file_type not in ['netCDF4', 'hdf5']: + raise ValueError('unknown file format {:s}'.format(file_type)) # Initialize the output meta = pysat.Meta() @@ -86,7 +86,7 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_format='hdf5'): # Load the file data for fname in fnames: - if file_format == "netcdf4": + if file_type == "netCDF4": # Xarray natively opens netCDF data into a Dataset file_data = xr.open_dataset(fname) @@ -102,11 +102,14 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_format='hdf5'): 'units': unit_string, 'desc': desc_string} - # Add an index + # Reset timestamp as datetime and set it as an index file_data = file_data.rename({'timestamps': 'time'}) - data = file_data.set_index(time='time') + time = np.array([dt.datetime.fromtimestamp(tt) + for tt in file_data['time']]) + file_data = file_data.update({'time': ('time', time)}) + data = file_data.set_index(time=file_data['time']) - elif file_format == "hdf5": + elif file_type == "hdf5": # Open the specified file and get the data and metadata filed = h5py.File(fname, 'r') file_data = filed['Data']['Table Layout'] @@ -271,7 +274,7 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_format='hdf5'): def download(date_array, inst_code=None, kindat=None, data_path=None, user=None, password=None, url="http://cedar.openmadrigal.org", - file_format='hdf5'): + file_type='hdf5'): """Downloads data from Madrigal. Parameters @@ -295,7 +298,7 @@ def download(date_array, inst_code=None, kindat=None, data_path=None, Password for data download. (default=None) url : string URL for Madrigal site (default='http://cedar.openmadrigal.org') - file_format : string + file_type : string File format for Madrigal data. Load routines currently only accepts 'hdf5' and 'netCDF4', but any of the Madrigal options may be used here. (default='hdf5') @@ -313,6 +316,10 @@ def download(date_array, inst_code=None, kindat=None, data_path=None, """ + if file_type not in file_typees: + raise ValueError("Unknown file format {:}, accepts {:}".format( + file_type, file_types)) + if inst_code is None: raise ValueError("Must supply Madrigal instrument code") @@ -343,11 +350,19 @@ def download(date_array, inst_code=None, kindat=None, data_path=None, start=start, stop=stop) for mad_file in files: + # Build the local filename local_file = os.path.join(data_path, os.path.basename(mad_file.name)) + if local_file.find(file_type) <= 0: + split_file = local_file.split(".") + split_file[-1] = file_type + local_file = ".".join(split_file) if not os.path.isfile(local_file): web_data.downloadFile(mad_file.name, local_file, user, password, - "pysat", format=file_format) + "pysat", format=file_type) + print(os.path.isfile(local_file)) + + return def get_remote_filenames(inst_code=None, kindat=None, user=None, @@ -542,8 +557,8 @@ def list_remote_files(tag, inst_id, inst_code=None, kindat=None, user=None, stop : dt.datetime Ending time for the file list (defaults to time of run) - Notes - ----- + Note + ---- The user's names should be provided in field user. Ruby Payne-Scott should be entered as Ruby+Payne-Scott @@ -598,13 +613,13 @@ def list_remote_files(tag, inst_id, inst_code=None, kindat=None, user=None, return pysat._files.process_parsed_filenames(stored, two_digit_year_break) -def filter_data_single_date(self): +def filter_data_single_date(inst): """Filters data to a single date. Parameters ---------- - self : pysat.Instrument - This object + inst : pysat.Instrument + Instrument object to which this routine should be attached Note ---- @@ -642,9 +657,12 @@ def filter_data_single_date(self): """ # only do this if loading by date! - if self._load_by_date and self.pad is None: + if inst._load_by_date and inst.pad is None: # identify times for the loaded date - idx, = np.where((self.index >= self.date) - & (self.index < (self.date + pds.DateOffset(days=1)))) + idx, = np.where((inst.index >= inst.date) + & (inst.index < (inst.date + pds.DateOffset(days=1)))) + # downselect from all data - self.data = self[idx] + inst.data = inst[idx] + + return From e94aec65258cbfce0511d7ad81a1773b70269798 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Tue, 13 Oct 2020 12:52:19 -0400 Subject: [PATCH 103/231] BUG: allow multiple TEC file formats Allow pysat to handlee multiple TEC file formats, though instruments will only load one type at a time. --- pysatMadrigal/instruments/gnss_tec.py | 88 ++++++++++++++++++++++----- 1 file changed, 73 insertions(+), 15 deletions(-) diff --git a/pysatMadrigal/instruments/gnss_tec.py b/pysatMadrigal/instruments/gnss_tec.py index 66f6614..132e383 100644 --- a/pysatMadrigal/instruments/gnss_tec.py +++ b/pysatMadrigal/instruments/gnss_tec.py @@ -55,15 +55,14 @@ _test_dates = {'': {'vtec': dt.datetime(2017, 11, 19)}} pandas_format = False -# support list files routine -# use the default pysat method -dname = '{year:02d}{month:02d}{day:02d}' -vname = '.{version:03d}' -supported_tags = {ss: {'vtec': "gps{:s}g{:s}.hdf5".format(dname, vname)} +# Support for the list files routine +# Use the default pysat method within a local routine that defines the +# file type +dname = '{{year:02d}}{{month:02d}}{{day:02d}}' +vname = '.{{version:03d}}' +supported_tags = {ss: {'vtec': ''.join(['gps', dname, 'g', vname, + ".{file_type}"])} for ss in inst_ids.keys()} -list_files = functools.partial(ps_gen.list_files, - supported_tags=supported_tags, - two_digit_year_break=99) # madrigal tags madrigal_inst_code = 8000 @@ -110,13 +109,71 @@ def init(self): logger.info(ackn_str) self.acknowledgements = ackn_str self.references = "Rideout and Coster (2006) doi:10.1007/s10291-006-0029-5" - + return +def list_files(tag=None, inst_id=None, data_path=None, format_str=None, + supported_tags=supported_tags, + fake_daily_files_from_monthly=False, two_digit_year_break=99, + delimiter=None, file_type=''): + """Return a Pandas Series of every data file for this Instrument + + + Parameters + ----------- + tag : string or NoneType + Denotes type of file to load. Accepted types are . + (default=None) + inst_id : string or NoneType + Specifies the satellite ID for a constellation. Not used. + (default=None) + data_path : string or NoneType + Path to data directory. If None is specified, the value previously + set in Instrument.files.data_path is used. (default=None) + format_str : string or NoneType + User specified file format. If None is specified, the default + formats associated with the supplied tags are used. (default=None) + supported_tags : dict or NoneType + keys are inst_id, each containing a dict keyed by tag + where the values file format template strings. (default=None) + fake_daily_files_from_monthly : bool + Some CDAWeb instrument data files are stored by month, interfering + with pysat's functionality of loading by day. This flag, when true, + appends daily dates to monthly files internally. These dates are + used by load routine in this module to provide data by day. + two_digit_year_break : int + If filenames only store two digits for the year, then + '1900' will be added for years >= two_digit_year_break + and '2000' will be added for years < two_digit_year_break. + delimiter : string + Delimiter string upon which files will be split (e.g., '.') + file_type : string + File format for Madrigal data. Load routines currently only accepts + 'hdf5' and 'netCDF4', but any of the Madrigal options may be used + here. (default='netCDF4') + + Returns + -------- + out : pysat.Files.from_os : pysat._files.Files + A class containing the verified available files + + """ + supported_tags[inst_id][tag] = supported_tags[inst_id][tag].format( + file_type=file_type) + + out = ps_gen.list_files( + tag=tag, inst_id=inst_id, data_path=data_path, format_str=format_str, + supported_tags=supported_tags, + fake_daily_files_from_monthly=fake_daily_files_from_monthly, + two_digit_year_break=two_digit_year_break, delimiter=delimiter) + + return out + + def download(date_array, tag='', inst_id='', data_path=None, user=None, password=None, url='http://cedar.openmadrigal.org', - file_format='netCDF4'): + file_type='netCDF4'): """Downloads data from Madrigal. Parameters @@ -140,7 +197,7 @@ def download(date_array, tag='', inst_id='', data_path=None, user=None, Password for data download. (default=None) url : string URL for Madrigal site (default='http://cedar.openmadrigal.org') - file_format : string + file_type : string File format for Madrigal data. Load routines currently only accepts 'hdf5' and 'netCDF4', but any of the Madrigal options may be used here. (default='netCDF4') @@ -160,11 +217,12 @@ def download(date_array, tag='', inst_id='', data_path=None, user=None, mad_meth.download(date_array, inst_code=str(madrigal_inst_code), kindat=str(madrigal_tag[inst_id][tag]), data_path=data_path, user=user, password=password, - file_format=file_format, url=url) + file_type=file_type, url=url) + return -def load(fnames, tag=None, inst_id=None, file_format='netCDF4'): +def load(fnames, tag=None, inst_id=None, file_type='netCDF4'): """ Routine to load the GNSS TEC data Parameters @@ -177,7 +235,7 @@ def load(fnames, tag=None, inst_id=None, file_format='netCDF4'): inst_id : string or NoneType Satellite ID used to identify particular data set to be loaded. This input is nominally provided by pysat itself. (default=None) - file_format : string + file_type : string File format for Madrigal data. Currently only accepts 'hdf5' and 'netCDF4', but any of the Madrigal options may be used here. (default='netCDF4') @@ -200,7 +258,7 @@ def load(fnames, tag=None, inst_id=None, file_format='netCDF4'): # Load the specified data data, meta = mad_meth.load(fnames, tag, inst_id, xarray_coords=xcoords[tag], - file_format=file_format) + file_type=file_type) # Squeeze the kindat and kinst 'coordinates', but keep them as floats squeeze_dims = np.array(['kindat', 'kinst']) From 3029d4aeb8ee034eaa1a3bfe505f7cde2250f1fa Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Tue, 13 Oct 2020 13:04:49 -0400 Subject: [PATCH 104/231] BUG: time index Fixed bug assigning time index, now is an index of datetime values. --- pysatMadrigal/instruments/methods/madrigal.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 59231f7..d5caa0e 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -104,10 +104,10 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_type='hdf5'): # Reset timestamp as datetime and set it as an index file_data = file_data.rename({'timestamps': 'time'}) - time = np.array([dt.datetime.fromtimestamp(tt) - for tt in file_data['time']]) - file_data = file_data.update({'time': ('time', time)}) - data = file_data.set_index(time=file_data['time']) + time_data = np.array([dt.datetime.fromtimestamp(tt) + for tt in file_data['time']]) + file_data = file_data.update({'time': ('time', time_data)}) + data = file_data.set_index(time='time') elif file_type == "hdf5": # Open the specified file and get the data and metadata From 15dd2b3501228979473b4e38654b2c226717f59b Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Tue, 13 Oct 2020 13:39:53 -0400 Subject: [PATCH 105/231] BUG: file_type can only be set once Fixed bug that tried to set file_type multiple times. --- pysatMadrigal/instruments/gnss_tec.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pysatMadrigal/instruments/gnss_tec.py b/pysatMadrigal/instruments/gnss_tec.py index 132e383..0a799a7 100644 --- a/pysatMadrigal/instruments/gnss_tec.py +++ b/pysatMadrigal/instruments/gnss_tec.py @@ -159,8 +159,9 @@ def list_files(tag=None, inst_id=None, data_path=None, format_str=None, A class containing the verified available files """ - supported_tags[inst_id][tag] = supported_tags[inst_id][tag].format( - file_type=file_type) + if supported_tags[inst_id][tag].find('{file_type}') > 0: + supported_tags[inst_id][tag] = supported_tags[inst_id][tag].format( + file_type=file_type) out = ps_gen.list_files( tag=tag, inst_id=inst_id, data_path=data_path, format_str=format_str, From 54ab698fdb55b1033b8add4fc25c2a00ffbbe2ae Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Wed, 14 Oct 2020 08:57:09 -0400 Subject: [PATCH 106/231] STY: dmsp_ivm file_type cleanup Adapted code to allow flexible file types, removed unused default function call, and updated the style and docstrings in clean. --- pysatMadrigal/instruments/dmsp_ivm.py | 127 ++++++++++++++++++-------- 1 file changed, 88 insertions(+), 39 deletions(-) diff --git a/pysatMadrigal/instruments/dmsp_ivm.py b/pysatMadrigal/instruments/dmsp_ivm.py index 1ee616f..a33fa5b 100644 --- a/pysatMadrigal/instruments/dmsp_ivm.py +++ b/pysatMadrigal/instruments/dmsp_ivm.py @@ -87,11 +87,10 @@ # use the default CDAWeb method dmsp_fname1 = {'utd': 'dms_ut_{year:4d}{month:02d}{day:02d}_', '': 'dms_{year:4d}{month:02d}{day:02d}_'} -dmsp_fname2 = {'utd': '.{version:03d}.hdf5', '': 's?.{version:03d}.hdf5'} +dmsp_fname2 = {'utd': '.{version:03d}.{file_type}', + '': 's?.{version:03d}.{file_type}'} supported_tags = {ss: {kk: dmsp_fname1[kk] + ss[1:] + dmsp_fname2[kk] for kk in inst_ids[ss]} for ss in inst_ids.keys()} -list_files = functools.partial(ps_gen.list_files, - supported_tags=supported_tags) # madrigal tags madrigal_inst_code = 8100 @@ -136,8 +135,63 @@ def init(self): return +def list_files(tag=None, inst_id=None, data_path=None, format_str=None, + supported_tags=supported_tags, + fake_daily_files_from_monthly=False, delimiter=None, + file_type=''): + """Return a Pandas Series of every data file for this Instrument + + + Parameters + ----------- + tag : string or NoneType + Denotes type of file to load. Accepted types are . + (default=None) + inst_id : string or NoneType + Specifies the satellite ID for a constellation. Not used. + (default=None) + data_path : string or NoneType + Path to data directory. If None is specified, the value previously + set in Instrument.files.data_path is used. (default=None) + format_str : string or NoneType + User specified file format. If None is specified, the default + formats associated with the supplied tags are used. (default=None) + supported_tags : dict or NoneType + keys are inst_id, each containing a dict keyed by tag + where the values file format template strings. (default=None) + fake_daily_files_from_monthly : bool + Some CDAWeb instrument data files are stored by month, interfering + with pysat's functionality of loading by day. This flag, when true, + appends daily dates to monthly files internally. These dates are + used by load routine in this module to provide data by day. + delimiter : string + Delimiter string upon which files will be split (e.g., '.') + file_type : string + File format for Madrigal data. Load routines currently only accepts + 'hdf5' and 'netCDF4', but any of the Madrigal options may be used + here. (default='netCDF4') + + Returns + -------- + out : pysat.Files.from_os : pysat._files.Files + A class containing the verified available files + + """ + if supported_tags[inst_id][tag].find('{file_type}') > 0: + supported_tags[inst_id][tag] = supported_tags[inst_id][tag].format( + file_type=file_type) + + out = ps_gen.list_files( + tag=tag, inst_id=inst_id, data_path=data_path, format_str=format_str, + supported_tags=supported_tags, + fake_daily_files_from_monthly=fake_daily_files_from_monthly, + delimiter=delimiter) + + return out + + def download(date_array, tag='', inst_id='', data_path=None, user=None, - password=None): + password=None, file_type='hdf5'): """Downloads data from Madrigal. Parameters @@ -159,9 +213,13 @@ def download(date_array, tag='', inst_id='', data_path=None, user=None, error if user not supplied. (default=None) password : string Password for data download. (default=None) + file_type : string + File format for Madrigal data. Load routines currently only accepts + 'hdf5' and 'netCDF4', but any of the Madrigal options may be used + here. (default='hdf5') - Notes - ----- + Note + ---- The user's names should be provided in field user. Ritu Karidhal should be entered as Ritu+Karidhal @@ -175,53 +233,44 @@ def download(date_array, tag='', inst_id='', data_path=None, user=None, mad_meth.download(date_array, inst_code=str(madrigal_inst_code), kindat=str(madrigal_tag[inst_id][tag]), data_path=data_path, user=user, password=password) + return -def default(inst): - pass - - -def clean(inst): +def clean(self): """Routine to return DMSP IVM data cleaned to the specified level - 'Clean' enforces that both RPA and DM flags are <= 1 - 'Dusty' <= 2 - 'Dirty' <= 3 - 'None' None - - Routine is called by pysat, and not by the end user directly. + Note + ---- + Supports 'clean', 'dusty', 'dirty' - Parameters - ----------- - inst : pysat.Instrument - Instrument class object, whose attribute clean_level is used to return - the desired level of data selectivity. + 'clean' enforces that both RPA and DM flags are <= 1 + 'dusty' <= 2 + 'dirty' <= 3 + 'none' Causes pysat to skip this routine - Notes - -------- - Supports 'clean', 'dusty', 'dirty' + Routine is called by pysat, and not by the end user directly. """ - if inst.tag == 'utd': - if inst.clean_level == 'clean': - idx, = np.where((inst['rpa_flag_ut'] <= 1) - & (inst['idm_flag_ut'] <= 1)) - elif inst.clean_level == 'dusty': - idx, = np.where((inst['rpa_flag_ut'] <= 2) - & (inst['idm_flag_ut'] <= 2)) - elif inst.clean_level == 'dirty': - idx, = np.where((inst['rpa_flag_ut'] <= 3) - & (inst['idm_flag_ut'] <= 3)) + if self.tag == 'utd': + if self.clean_level == 'clean': + idx, = np.where((self['rpa_flag_ut'] <= 1) + & (self['idm_flag_ut'] <= 1)) + elif self.clean_level == 'dusty': + idx, = np.where((self['rpa_flag_ut'] <= 2) + & (self['idm_flag_ut'] <= 2)) + elif self.clean_level == 'dirty': + idx, = np.where((self['rpa_flag_ut'] <= 3) + & (self['idm_flag_ut'] <= 3)) else: - idx = slice(0, inst.index.shape[0]) + idx = slice(0, self.index.shape[0]) else: - if inst.clean_level in ['clean', 'dusty', 'dirty']: + if self.clean_level in ['clean', 'dusty', 'dirty']: logger.warning('this level 1 data has no quality flags') - idx = slice(0, inst.index.shape[0]) + idx = slice(0, self.index.shape[0]) # downselect data based upon cleaning conditions above - inst.data = inst[idx] + self.data = self[idx] return From d7e64a3486fca91ea4c349feeee2727ca45ed5d7 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Wed, 14 Oct 2020 08:58:11 -0400 Subject: [PATCH 107/231] STY: jro_isr file_type update Updated jro_isr to use flexible file type throughout instrument, and changed old variable name. --- pysatMadrigal/instruments/jro_isr.py | 82 +++++++++++++++++++++++----- 1 file changed, 68 insertions(+), 14 deletions(-) diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index 9ecc729..965155a 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -66,15 +66,13 @@ # support list files routine # use the default CDAWeb method jro_fname1 = 'jro{year:4d}{month:02d}{day:02d}' -jro_fname2 = '.{version:03d}.hdf5' +jro_fname2 = '.{version:03d}.{file_type}' supported_tags = {ss: {'drifts': jro_fname1 + "drifts" + jro_fname2, 'drifts_ave': jro_fname1 + "drifts_avg" + jro_fname2, 'oblique_stan': jro_fname1 + jro_fname2, 'oblique_rand': jro_fname1 + "?" + jro_fname2, 'oblique_long': jro_fname1 + "?" + jro_fname2} for ss in inst_ids.keys()} -list_files = functools.partial(mm_gen.list_files, - supported_tags=supported_tags) # madrigal tags madrigal_inst_code = 10 @@ -120,8 +118,63 @@ def init(self): return +def list_files(tag=None, inst_id=None, data_path=None, format_str=None, + supported_tags=supported_tags, + fake_daily_files_from_monthly=False, + delimiter=None, file_type=''): + """Return a Pandas Series of every data file for this Instrument + + + Parameters + ----------- + tag : string or NoneType + Denotes type of file to load. Accepted types are . + (default=None) + inst_id : string or NoneType + Specifies the satellite ID for a constellation. Not used. + (default=None) + data_path : string or NoneType + Path to data directory. If None is specified, the value previously + set in Instrument.files.data_path is used. (default=None) + format_str : string or NoneType + User specified file format. If None is specified, the default + formats associated with the supplied tags are used. (default=None) + supported_tags : dict or NoneType + keys are inst_id, each containing a dict keyed by tag + where the values file format template strings. (default=None) + fake_daily_files_from_monthly : bool + Some CDAWeb instrument data files are stored by month, interfering + with pysat's functionality of loading by day. This flag, when true, + appends daily dates to monthly files internally. These dates are + used by load routine in this module to provide data by day. + delimiter : string + Delimiter string upon which files will be split (e.g., '.') + file_type : string + File format for Madrigal data. Load routines currently only accepts + 'hdf5' and 'netCDF4', but any of the Madrigal options may be used + here. (default='netCDF4') + + Returns + -------- + out : pysat.Files.from_os : pysat._files.Files + A class containing the verified available files + + """ + if supported_tags[inst_id][tag].find('{file_type}') > 0: + supported_tags[inst_id][tag] = supported_tags[inst_id][tag].format( + file_type=file_type) + + out = ps_gen.list_files( + tag=tag, inst_id=inst_id, data_path=data_path, format_str=format_str, + supported_tags=supported_tags, + fake_daily_files_from_monthly=fake_daily_files_from_monthly, + delimiter=delimiter) + + return out + + def download(date_array, tag='', inst_id='', data_path=None, user=None, - password=None, file_format='hdf5'): + password=None, file_type='hdf5'): """Downloads data from Madrigal. Parameters @@ -143,7 +196,7 @@ def download(date_array, tag='', inst_id='', data_path=None, user=None, error if user not supplied. (default=None) password : string Password for data download. (default=None) - file_format : string + file_type : string File format for Madrigal data. Currently only accept 'netcdf4' and 'hdf5'. (default='hdf5') @@ -161,11 +214,12 @@ def download(date_array, tag='', inst_id='', data_path=None, user=None, """ mad_meth.download(date_array, inst_code=str(madrigal_inst_code), kindat=str(madrigal_tag[inst_id][tag]), - data_path=data_path, user=user, password=password) + data_path=data_path, user=user, password=password, + file_type=file_type) -def load(fnames, tag=None, inst_id=None, file_format='hdf5'): - """ Routine to load the GNSS TEC data +def load(fnames, tag=None, inst_id=None, file_type='hdf5'): + """ Routine to load the JRO ISR data Parameters ----------- @@ -177,7 +231,7 @@ def load(fnames, tag=None, inst_id=None, file_format='hdf5'): inst_id : string or NoneType Satellite ID used to identify particular data set to be loaded. This input is nominally provided by pysat itself. (default=None) - file_format : string + file_type : string File format for Madrigal data. Currently only accept 'netcdf4' and 'hdf5'. (default='hdf5') @@ -236,7 +290,7 @@ def load(fnames, tag=None, inst_id=None, file_format='hdf5'): # Load the specified data data, meta = mad_meth.load(fnames, tag, inst_id, xarray_coords=xcoords[tag], - file_format=file_format) + file_type=file_type) # Squeeze the kindat and kinst 'coordinates', but keep them as floats data = data.squeeze(dim=['kindat', 'kinst', 'gdlatr', 'gdlonr']) @@ -249,10 +303,10 @@ def clean(self): Notes -------- - Supports 'clean', 'dusty', 'dirty' - 'Clean' is unknown for oblique modes, over 200 km for drifts - 'Dusty' is unknown for oblique modes, over 200 km for drifts - 'Dirty' is unknown for oblique modes, over 200 km for drifts + Supports 'clean' + 'clean' is unknown for oblique modes, over 200 km for drifts + 'dusty' is the same as clean + 'Dirty' is the same as clean 'None' None Routine is called by pysat, and not by the end user directly. From 9f25389b229293784020546a9bd244450e0d381c Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Wed, 14 Oct 2020 10:06:22 -0400 Subject: [PATCH 108/231] BUG: index More efficient transfer from unix to timestamp. Fixed bug where index does not need to be assigned. --- pysatMadrigal/instruments/methods/madrigal.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index d5caa0e..d86dcf6 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -102,12 +102,10 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_type='hdf5'): 'units': unit_string, 'desc': desc_string} - # Reset timestamp as datetime and set it as an index + # Reset UNIX timestamp as datetime and set it as an index file_data = file_data.rename({'timestamps': 'time'}) - time_data = np.array([dt.datetime.fromtimestamp(tt) - for tt in file_data['time']]) - file_data = file_data.update({'time': ('time', time_data)}) - data = file_data.set_index(time='time') + time_data = pds.to_datetime(file_data['time'], unit='s') + data = file_data.assign_coords({'time': ('time', time_data)}) elif file_type == "hdf5": # Open the specified file and get the data and metadata From f316ad9b4afd075a14430f2e666fb0a0d26f2553 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 15 Oct 2020 09:48:41 -0400 Subject: [PATCH 109/231] STY: Apply suggestions from code review Several suggestions from code review, including code style and docstring typos. Co-authored-by: Russell Stoneback --- pysatMadrigal/instruments/gnss_tec.py | 11 +++++------ pysatMadrigal/instruments/jro_isr.py | 2 +- pysatMadrigal/instruments/methods/madrigal.py | 4 +++- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/pysatMadrigal/instruments/gnss_tec.py b/pysatMadrigal/instruments/gnss_tec.py index 66f6614..1858567 100644 --- a/pysatMadrigal/instruments/gnss_tec.py +++ b/pysatMadrigal/instruments/gnss_tec.py @@ -92,7 +92,7 @@ def init(self): " Array Center, Institut Geographique National, ", "France, International GNSS Service, The Crustal ", "Dynamics Data Information System (CDDIS), National ", - " Geodetic Survey, Instituto Brasileiro de Geografia", + "Geodetic Survey, Instituto Brasileiro de Geografia", "e Estatística, RAMSAC CORS of Instituto Geográfico", " Nacional del la República Agentina, Arecibo ", "Observatory, Low-Latitude Ionospheric Sensor ", @@ -128,14 +128,13 @@ def download(date_array, tag='', inst_id='', data_path=None, user=None, Tag identifier used for particular dataset. This input is provided by pysat. (default='') inst_id : string - Satellite ID string identifier used for particular dataset. This input + Instrument ID string identifier used for particular dataset. This input is provided by pysat. (default='') data_path : string Path to directory to download data to. (default=None) user : string User string input used for download. Provided by user and passed via - pysat. If an account is required for dowloads this routine here must - error if user not supplied. (default=None) + pysat. (default=None) password : string Password for data download. (default=None) url : string @@ -175,11 +174,11 @@ def load(fnames, tag=None, inst_id=None, file_format='netCDF4'): tag name used to identify particular data set to be loaded. This input is nominally provided by pysat itself. (default=None) inst_id : string or NoneType - Satellite ID used to identify particular data set to be loaded. + Instrument ID used to identify particular data set to be loaded. This input is nominally provided by pysat itself. (default=None) file_format : string File format for Madrigal data. Currently only accepts 'hdf5' and - 'netCDF4', but any of the Madrigal options may be used here. + 'netCDF4', but any of the supported Madrigal options may be used here. (default='netCDF4') Returns diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index 9ecc729..4ccf867 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -175,7 +175,7 @@ def load(fnames, tag=None, inst_id=None, file_format='hdf5'): tag name used to identify particular data set to be loaded. This input is nominally provided by pysat itself. (default=None) inst_id : string or NoneType - Satellite ID used to identify particular data set to be loaded. + Instrument ID used to identify particular data set to be loaded. This input is nominally provided by pysat itself. (default=None) file_format : string File format for Madrigal data. Currently only accept 'netcdf4' and diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 3a716f7..5e9fba2 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -62,7 +62,7 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_format='hdf5'): xarray_coords=[{('time',): ['year', 'doy'], ('time', 'gdalt'): ['data1', 'data2']}]. (default=[]) file_format : string - File format for Madrigal data. Currently only accept 'netcdf4' and + File format for Madrigal data. Currently only accepts 'netcdf4' and 'hdf5'. (default='hdf5') Returns @@ -101,6 +101,8 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_format='hdf5'): meta[name_string.lower()] = {'long_name': name_string, 'units': unit_string, 'desc': desc_string} + # remove any metadata from xarray + file_data[item].attrs = {} # Add an index file_data = file_data.rename({'timestamps': 'time'}) From 536f402c62040b5c3d415db0d70e2a089a968614 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 15 Oct 2020 12:23:37 -0400 Subject: [PATCH 110/231] BUG: supported tags Forgot exta curly brackets in `supported_tags` values. Also fixed typo in module imports and variable names. --- pysatMadrigal/instruments/dmsp_ivm.py | 8 ++++---- pysatMadrigal/instruments/jro_isr.py | 6 +++--- pysatMadrigal/instruments/methods/madrigal.py | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pysatMadrigal/instruments/dmsp_ivm.py b/pysatMadrigal/instruments/dmsp_ivm.py index a33fa5b..d95ee9a 100644 --- a/pysatMadrigal/instruments/dmsp_ivm.py +++ b/pysatMadrigal/instruments/dmsp_ivm.py @@ -85,10 +85,10 @@ # support list files routine # use the default CDAWeb method -dmsp_fname1 = {'utd': 'dms_ut_{year:4d}{month:02d}{day:02d}_', - '': 'dms_{year:4d}{month:02d}{day:02d}_'} -dmsp_fname2 = {'utd': '.{version:03d}.{file_type}', - '': 's?.{version:03d}.{file_type}'} +dmsp_fname1 = {'utd': 'dms_ut_{{year:4d}}{{month:02d}}{{day:02d}}_', + '': 'dms_{{year:4d}}{{month:02d}}{{day:02d}}_'} +dmsp_fname2 = {'utd': '.{{version:03d}}.{file_type}', + '': 's?.{{version:03d}}.{file_type}'} supported_tags = {ss: {kk: dmsp_fname1[kk] + ss[1:] + dmsp_fname2[kk] for kk in inst_ids[ss]} for ss in inst_ids.keys()} diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index 5779b8c..22781fd 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -41,7 +41,7 @@ import logging import numpy as np -from pysat.instruments.methods import general as mm_gen +from pysat.instruments.methods import general as ps_gen from pysatMadrigal.instruments.methods import madrigal as mad_meth from pysatMadrigal.utils import coords @@ -65,8 +65,8 @@ # support list files routine # use the default CDAWeb method -jro_fname1 = 'jro{year:4d}{month:02d}{day:02d}' -jro_fname2 = '.{version:03d}.{file_type}' +jro_fname1 = 'jro{{year:4d}}{{month:02d}}{{day:02d}}' +jro_fname2 = '.{{version:03d}}.{file_type}' supported_tags = {ss: {'drifts': jro_fname1 + "drifts" + jro_fname2, 'drifts_ave': jro_fname1 + "drifts_avg" + jro_fname2, 'oblique_stan': jro_fname1 + jro_fname2, diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index ac34a7c..702c2d3 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -316,7 +316,7 @@ def download(date_array, inst_code=None, kindat=None, data_path=None, """ - if file_type not in file_typees: + if file_type not in file_types: raise ValueError("Unknown file format {:}, accepts {:}".format( file_type, file_types)) From 8fed840dbe228b1cd5e862da2bdc2031ed0c26c2 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 15 Oct 2020 13:17:32 -0400 Subject: [PATCH 111/231] BUG: default file type Set a default file type for DMSP and JRO. --- pysatMadrigal/instruments/dmsp_ivm.py | 2 +- pysatMadrigal/instruments/jro_isr.py | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pysatMadrigal/instruments/dmsp_ivm.py b/pysatMadrigal/instruments/dmsp_ivm.py index d95ee9a..0451172 100644 --- a/pysatMadrigal/instruments/dmsp_ivm.py +++ b/pysatMadrigal/instruments/dmsp_ivm.py @@ -138,7 +138,7 @@ def init(self): def list_files(tag=None, inst_id=None, data_path=None, format_str=None, supported_tags=supported_tags, fake_daily_files_from_monthly=False, delimiter=None, - file_type=''): + file_type='hdf5'): """Return a Pandas Series of every data file for this Instrument diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index 22781fd..2008260 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -118,21 +118,21 @@ def init(self): return -def list_files(tag=None, inst_id=None, data_path=None, format_str=None, +def list_files(tag='', inst_id='', data_path=None, format_str=None, supported_tags=supported_tags, fake_daily_files_from_monthly=False, - delimiter=None, file_type=''): + delimiter=None, file_type='hdf5'): """Return a Pandas Series of every data file for this Instrument Parameters ----------- - tag : string or NoneType + tag : string Denotes type of file to load. Accepted types are . - (default=None) - inst_id : string or NoneType + (default='') + inst_id : string Specifies the satellite ID for a constellation. Not used. - (default=None) + (default='') data_path : string or NoneType Path to data directory. If None is specified, the value previously set in Instrument.files.data_path is used. (default=None) From 0aa33e136eb8ea7f07caa069e4a2a1a3e22193bc Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 15 Oct 2020 14:56:01 -0400 Subject: [PATCH 112/231] TST: remove test statement Remove debug statement from download routine. --- pysatMadrigal/instruments/methods/madrigal.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 702c2d3..3f3bc59 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -360,7 +360,6 @@ def download(date_array, inst_code=None, kindat=None, data_path=None, if not os.path.isfile(local_file): web_data.downloadFile(mad_file.name, local_file, user, password, "pysat", format=file_type) - print(os.path.isfile(local_file)) return From 692d8612561e40e66f9b614ed5659735bf9a7e4a Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 15 Oct 2020 14:56:17 -0400 Subject: [PATCH 113/231] MAINT: python 2 support Removed unnecessary support for Python 2. --- pysatMadrigal/instruments/jro_isr.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index 2008260..4f5214c 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -34,8 +34,6 @@ """ -from __future__ import print_function -from __future__ import absolute_import import datetime as dt import functools import logging From 0539745af226eab23db7cc89e08bff425a85cfa6 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 15 Oct 2020 14:56:33 -0400 Subject: [PATCH 114/231] BUG: default file_type Updated the default file_type in list routine. --- pysatMadrigal/instruments/gnss_tec.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysatMadrigal/instruments/gnss_tec.py b/pysatMadrigal/instruments/gnss_tec.py index 8444cb5..5e3d7e8 100644 --- a/pysatMadrigal/instruments/gnss_tec.py +++ b/pysatMadrigal/instruments/gnss_tec.py @@ -116,7 +116,7 @@ def init(self): def list_files(tag=None, inst_id=None, data_path=None, format_str=None, supported_tags=supported_tags, fake_daily_files_from_monthly=False, two_digit_year_break=99, - delimiter=None, file_type=''): + delimiter=None, file_type='netCDF4'): """Return a Pandas Series of every data file for this Instrument From 2d742c36fe5c172ba313855f0997b84acd978564 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 16 Oct 2020 14:12:55 -0400 Subject: [PATCH 115/231] BUG: pandas version dependent Without the fix, this will break on newer pandas versions. Co-authored-by: Russell Stoneback --- pysatMadrigal/instruments/methods/madrigal.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 3f3bc59..5c0e003 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -106,7 +106,7 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_type='hdf5'): # Reset UNIX timestamp as datetime and set it as an index file_data = file_data.rename({'timestamps': 'time'}) - time_data = pds.to_datetime(file_data['time'], unit='s') + time_data = pds.to_datetime(file_data['time'].values, unit='s') data = file_data.assign_coords({'time': ('time', time_data)}) elif file_type == "hdf5": From a4201ce3abf40ce64abb16989a16faca1cc61930 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 16 Oct 2020 14:32:33 -0400 Subject: [PATCH 116/231] STY: instrument module organization Updated the instrument module organization. --- pysatMadrigal/instruments/dmsp_ivm.py | 169 ++++++++++---------- pysatMadrigal/instruments/gnss_tec.py | 69 +++++---- pysatMadrigal/instruments/jro_isr.py | 213 ++++++++++++++------------ 3 files changed, 246 insertions(+), 205 deletions(-) diff --git a/pysatMadrigal/instruments/dmsp_ivm.py b/pysatMadrigal/instruments/dmsp_ivm.py index 0451172..6330247 100644 --- a/pysatMadrigal/instruments/dmsp_ivm.py +++ b/pysatMadrigal/instruments/dmsp_ivm.py @@ -70,21 +70,19 @@ logger = logging.getLogger(__name__) +# ---------------------------------------------------------------------------- +# Instrument attributes + platform = 'dmsp' name = 'ivm' tags = {'utd': 'UTDallas DMSP data processing', '': 'Level 2 data processing'} inst_ids = {'f11': ['utd', ''], 'f12': ['utd', ''], 'f13': ['utd', ''], 'f14': ['utd', ''], 'f15': ['utd', ''], 'f16': [''], 'f17': [''], 'f18': ['']} -_test_dates = {'f11': {'utd': dt.datetime(1998, 1, 2)}, - 'f12': {'utd': dt.datetime(1998, 1, 2)}, - 'f13': {'utd': dt.datetime(1998, 1, 2)}, - 'f14': {'utd': dt.datetime(1998, 1, 2)}, - 'f15': {'utd': dt.datetime(2017, 12, 30)}} + pandas_format = True -# support list files routine -# use the default CDAWeb method +# Local attributes dmsp_fname1 = {'utd': 'dms_ut_{{year:4d}}{{month:02d}}{{day:02d}}_', '': 'dms_{{year:4d}}{{month:02d}}{{day:02d}}_'} dmsp_fname2 = {'utd': '.{{version:03d}}.{file_type}', @@ -103,13 +101,17 @@ 'f17': {'': 10117}, 'f18': {'': 10118}, } -# support listing files currently available on remote server (Madrigal) -list_remote_files = functools.partial(mad_meth.list_remote_files, - supported_tags=supported_tags, - inst_code=madrigal_inst_code) +# ---------------------------------------------------------------------------- +# Instrument test attributes -# support load routine -load = mad_meth.load +_test_dates = {'f11': {'utd': dt.datetime(1998, 1, 2)}, + 'f12': {'utd': dt.datetime(1998, 1, 2)}, + 'f13': {'utd': dt.datetime(1998, 1, 2)}, + 'f14': {'utd': dt.datetime(1998, 1, 2)}, + 'f15': {'utd': dt.datetime(2017, 12, 30)}} + +# ---------------------------------------------------------------------------- +# Instrument methods def init(self): @@ -135,15 +137,67 @@ def init(self): return +def clean(self): + """Routine to return DMSP IVM data cleaned to the specified level + + Note + ---- + Supports 'clean', 'dusty', 'dirty' + + 'clean' enforces that both RPA and DM flags are <= 1 + 'dusty' <= 2 + 'dirty' <= 3 + 'none' Causes pysat to skip this routine + + Routine is called by pysat, and not by the end user directly. + + """ + + if self.tag == 'utd': + if self.clean_level == 'clean': + idx, = np.where((self['rpa_flag_ut'] <= 1) + & (self['idm_flag_ut'] <= 1)) + elif self.clean_level == 'dusty': + idx, = np.where((self['rpa_flag_ut'] <= 2) + & (self['idm_flag_ut'] <= 2)) + elif self.clean_level == 'dirty': + idx, = np.where((self['rpa_flag_ut'] <= 3) + & (self['idm_flag_ut'] <= 3)) + else: + idx = slice(0, self.index.shape[0]) + else: + if self.clean_level in ['clean', 'dusty', 'dirty']: + logger.warning('this level 1 data has no quality flags') + idx = slice(0, self.index.shape[0]) + + # downselect data based upon cleaning conditions above + self.data = self[idx] + + return + + +# ---------------------------------------------------------------------------- +# Instrument functions +# +# Use the default Madrigal and pysat methods + +# Set the list_remote_files routine +list_remote_files = functools.partial(mad_meth.list_remote_files, + supported_tags=supported_tags, + inst_code=madrigal_inst_code) + +# Set the load routine +load = mad_meth.load + + def list_files(tag=None, inst_id=None, data_path=None, format_str=None, supported_tags=supported_tags, fake_daily_files_from_monthly=False, delimiter=None, file_type='hdf5'): """Return a Pandas Series of every data file for this Instrument - Parameters - ----------- + ---------- tag : string or NoneType Denotes type of file to load. Accepted types are . (default=None) @@ -172,7 +226,7 @@ def list_files(tag=None, inst_id=None, data_path=None, format_str=None, here. (default='netCDF4') Returns - -------- + ------- out : pysat.Files.from_os : pysat._files.Files A class containing the verified available files @@ -236,60 +290,23 @@ def download(date_array, tag='', inst_id='', data_path=None, user=None, return -def clean(self): - """Routine to return DMSP IVM data cleaned to the specified level - - Note - ---- - Supports 'clean', 'dusty', 'dirty' - - 'clean' enforces that both RPA and DM flags are <= 1 - 'dusty' <= 2 - 'dirty' <= 3 - 'none' Causes pysat to skip this routine - - Routine is called by pysat, and not by the end user directly. - - """ - - if self.tag == 'utd': - if self.clean_level == 'clean': - idx, = np.where((self['rpa_flag_ut'] <= 1) - & (self['idm_flag_ut'] <= 1)) - elif self.clean_level == 'dusty': - idx, = np.where((self['rpa_flag_ut'] <= 2) - & (self['idm_flag_ut'] <= 2)) - elif self.clean_level == 'dirty': - idx, = np.where((self['rpa_flag_ut'] <= 3) - & (self['idm_flag_ut'] <= 3)) - else: - idx = slice(0, self.index.shape[0]) - else: - if self.clean_level in ['clean', 'dusty', 'dirty']: - logger.warning('this level 1 data has no quality flags') - idx = slice(0, self.index.shape[0]) - - # downselect data based upon cleaning conditions above - self.data = self[idx] - - return +# ---------------------------------------------------------------------------- +# Local functions def smooth_ram_drifts(inst, rpa_flag_key=None, rpa_vel_key='ion_v_sat_for'): """ Smooth the ram drifts using a rolling mean Parameters - ----------- + ---------- + inst : pysat.Instrument + DMSP IVM Instrument object rpa_flag_key : string or NoneType RPA flag key, if None will not select any data. The UTD RPA flag key is 'rpa_flag_ut' (default=None) rpa_vel_key : string RPA velocity data key (default='ion_v_sat_for') - Returns - --------- - RPA data in instrument object - """ if rpa_flag_key in list(inst.data.keys()): @@ -307,12 +324,10 @@ def update_DMSP_ephemeris(inst, ephem=None): Parameters ---------- + inst : pysat.Instrument + DMSP IVM Instrumet object ephem : pysat.Instrument or NoneType - dmsp_ivm_ephem instrument object - - Returns - --------- - Updates 'mlt' and 'mlat' + DMSP IVM_EPHEM instrument object """ @@ -347,15 +362,13 @@ def update_DMSP_ephemeris(inst, ephem=None): def add_drift_unit_vectors(inst): """ Add unit vectors for the satellite velocity - Returns - --------- - Adds unit vectors in cartesian and polar coordinates for RAM and - cross-track directions - - 'unit_ram_x', 'unit_ram_y', 'unit_ram_r', 'unit_ram_theta' - - 'unit_cross_x', 'unit_cross_y', 'unit_cross_r', 'unit_cross_theta' + Parameters + ---------- + inst : pysat.Instrument + DMSP IVM Instrument object - Notes - --------- + Note + ---- Assumes that the RAM vector is pointed perfectly forward """ @@ -399,7 +412,9 @@ def add_drifts_polar_cap_x_y(inst, rpa_flag_key=None, """ Add polar cap drifts in cartesian coordinates Parameters - ------------ + ---------- + inst : pysat.Instrument + DMSP IVM Instrument object rpa_flag_key : string or NoneType RPA flag key, if None will not select any data. The UTD RPA flag key is 'rpa_flag_ut' (default=None) @@ -408,15 +423,13 @@ def add_drifts_polar_cap_x_y(inst, rpa_flag_key=None, cross_vel_key : string Cross-track velocity data key (default='ion_v_sat_left') - Returns - ---------- - Adds 'ion_vel_pc_x', 'ion_vel_pc_y', and 'partial'. The last data key - indicates whether RPA data was available (False) or not (True). - Notes ------- Polar cap drifts assume there is no vertical component to the X-Y - velocities + velocities. + + Adds 'ion_vel_pc_x', 'ion_vel_pc_y', and 'partial'. The last data key + indicates whether RPA data was available (False) or not (True). """ diff --git a/pysatMadrigal/instruments/gnss_tec.py b/pysatMadrigal/instruments/gnss_tec.py index 5e3d7e8..d7c845c 100644 --- a/pysatMadrigal/instruments/gnss_tec.py +++ b/pysatMadrigal/instruments/gnss_tec.py @@ -47,17 +47,17 @@ import logging logger = logging.getLogger(__name__) +# ---------------------------------------------------------------------------- +# Instrument attributes platform = 'gnss' name = 'tec' tags = {'vtec': 'vertical TEC'} inst_ids = {'': [tag for tag in tags.keys()]} -_test_dates = {'': {'vtec': dt.datetime(2017, 11, 19)}} + pandas_format = False -# Support for the list files routine -# Use the default pysat method within a local routine that defines the -# file type +# Local attributes dname = '{{year:02d}}{{month:02d}}{{day:02d}}' vname = '.{{version:03d}}' supported_tags = {ss: {'vtec': ''.join(['gps', dname, 'g', vname, @@ -68,10 +68,13 @@ madrigal_inst_code = 8000 madrigal_tag = {'': {'vtec': 3500}} # , 'los': 3505}} -# support listing files currently available on remote server (Madrigal) -list_remote_files = functools.partial(mad_meth.list_remote_files, - supported_tags=supported_tags, - inst_code=madrigal_inst_code) +# ---------------------------------------------------------------------------- +# Instrument test attributes + +_test_dates = {'': {'vtec': dt.datetime(2017, 11, 19)}} + +# ---------------------------------------------------------------------------- +# Instrument methods def init(self): @@ -109,17 +112,44 @@ def init(self): logger.info(ackn_str) self.acknowledgements = ackn_str self.references = "Rideout and Coster (2006) doi:10.1007/s10291-006-0029-5" - + + return + + +def clean(self): + """Routine to return GNSS TEC data at a specific level + + Note + ---- + Supports 'clean', 'dusty', 'dirty', or 'None'. + Routine is called by pysat, and not by the end user directly. + + """ + if self.tag == "vtec": + logger.info("".join(["Data provided at a clean level, further ", + "cleaning may be performed using the ", + "measurement error 'dtec'"])) + return +# ---------------------------------------------------------------------------- +# Instrument functions +# +# Use the default Madrigal methods + +# support listing files currently available on remote server (Madrigal) +list_remote_files = functools.partial(mad_meth.list_remote_files, + supported_tags=supported_tags, + inst_code=madrigal_inst_code) + + def list_files(tag=None, inst_id=None, data_path=None, format_str=None, supported_tags=supported_tags, fake_daily_files_from_monthly=False, two_digit_year_break=99, delimiter=None, file_type='netCDF4'): """Return a Pandas Series of every data file for this Instrument - Parameters ----------- tag : string or NoneType @@ -154,7 +184,7 @@ def list_files(tag=None, inst_id=None, data_path=None, format_str=None, here. (default='netCDF4') Returns - -------- + ------- out : pysat.Files.from_os : pysat._files.Files A class containing the verified available files @@ -272,20 +302,3 @@ def load(fnames, tag=None, inst_id=None, file_type='netCDF4'): meta['dtec'] = {meta.units_label: 'TECU'} return data, meta - - -def clean(self): - """Routine to return GNSS TEC data at a specific level - - Note - ---- - Supports 'clean', 'dusty', 'dirty', or 'None'. - Routine is called by pysat, and not by the end user directly. - - """ - if self.tag == "vtec": - logger.info("".join(["Data provided at a clean level, further ", - "cleaning may be performed using the ", - "measurement error 'dtec'"])) - - return diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index 4f5214c..ff489b0 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -46,6 +46,8 @@ logger = logging.getLogger(__name__) +# ---------------------------------------------------------------------------- +# Instrument attributes platform = 'jro' name = 'isr' @@ -54,15 +56,10 @@ 'oblique_rand': 'Randomized Faraday rotation double-pulse', 'oblique_long': 'Long pulse Faraday rotation'} inst_ids = {'': list(tags.keys())} -_test_dates = {'': {'drifts': dt.datetime(2010, 1, 19), - 'drifts_ave': dt.datetime(2010, 1, 19), - 'oblique_stan': dt.datetime(2010, 4, 19), - 'oblique_rand': dt.datetime(2000, 11, 9), - 'oblique_long': dt.datetime(2010, 4, 12)}} + pandas_format = False -# support list files routine -# use the default CDAWeb method +# Local attributes jro_fname1 = 'jro{{year:4d}}{{month:02d}}{{day:02d}}' jro_fname2 = '.{{version:03d}}.{file_type}' supported_tags = {ss: {'drifts': jro_fname1 + "drifts" + jro_fname2, @@ -72,15 +69,22 @@ 'oblique_long': jro_fname1 + "?" + jro_fname2} for ss in inst_ids.keys()} -# madrigal tags +# Madrigal tags madrigal_inst_code = 10 madrigal_tag = {'': {'drifts': 1910, 'drifts_ave': 1911, 'oblique_stan': 1800, 'oblique_rand': 1801, 'oblique_long': 1802}, } -# support listing files currently available on remote server (Madrigal) -list_remote_files = functools.partial(mad_meth.list_remote_files, - supported_tags=supported_tags, - inst_code=madrigal_inst_code) +# ---------------------------------------------------------------------------- +# Instrument test attributes + +_test_dates = {'': {'drifts': dt.datetime(2010, 1, 19), + 'drifts_ave': dt.datetime(2010, 1, 19), + 'oblique_stan': dt.datetime(2010, 4, 19), + 'oblique_rand': dt.datetime(2000, 11, 9), + 'oblique_long': dt.datetime(2010, 4, 12)}} + +# ---------------------------------------------------------------------------- +# Instrument methods # Madrigal will sometimes include multiple days within a file # labeled with a single date. @@ -93,14 +97,6 @@ def init(self): """Initializes the Instrument object with values specific to JRO ISR - - Runs once upon instantiation. - - Parameters - ---------- - self : pysat.Instrument - This object - """ ackn_str = ' '.join(["The Jicamarca Radio Observatory is a facility of", @@ -111,20 +107,78 @@ def init(self): logger.info(ackn_str) self.acknowledgements = ackn_str - self.references = "?" + self.references = "Depends on the radar experiment; contact PI" + + return + + +def clean(self): + """Routine to return JRO ISR data cleaned to the specified level + + Note + ---- + Supports 'clean' + 'clean' is unknown for oblique modes, over 200 km for drifts + 'dusty' is the same as clean + 'Dirty' is the same as clean + 'None' None + + Routine is called by pysat, and not by the end user directly. + + """ + + # Default to selecting all of the data + idx = {'gdalt': [i for i in range(self.data.indexes['gdalt'].shape[0])]} + + if self.tag.find('oblique') == 0: + # Oblique profile cleaning + logger.info(' '.join(['The double pulse, coded pulse, and long pulse', + 'modes implemented at Jicamarca have different', + 'limitations arising from different degrees of', + 'precision and accuracy. Users should consult', + 'with the staff to determine which mode is', + 'right for their application.'])) + + if self.clean_level in ['clean', 'dusty', 'dirty']: + logger.warning('this level 2 data has no quality flags') + else: + # Ion drift cleaning + if self.clean_level in ['clean', 'dusty', 'dirty']: + if self.clean_level in ['clean', 'dusty']: + logger.warning('this level 2 data has no quality flags') + + ida, = np.where((self.data.indexes['gdalt'] > 200.0)) + idx['gdalt'] = np.unique(ida) + else: + logger.warning(' '.join(["interpretation of drifts below 200 km", + "should always be done in partnership", + "with the contact people"])) + + # downselect data based upon cleaning conditions above + self.data = self[idx] return +# ---------------------------------------------------------------------------- +# Instrument functions +# +# Use the default Madrigal and pysat methods + +# Set list_remote_files routine +list_remote_files = functools.partial(mad_meth.list_remote_files, + supported_tags=supported_tags, + inst_code=madrigal_inst_code) + + def list_files(tag='', inst_id='', data_path=None, format_str=None, supported_tags=supported_tags, fake_daily_files_from_monthly=False, delimiter=None, file_type='hdf5'): """Return a Pandas Series of every data file for this Instrument - Parameters - ----------- + ---------- tag : string Denotes type of file to load. Accepted types are . (default='') @@ -153,7 +207,7 @@ def list_files(tag='', inst_id='', data_path=None, format_str=None, here. (default='netCDF4') Returns - -------- + ------- out : pysat.Files.from_os : pysat._files.Files A class containing the verified available files @@ -296,67 +350,28 @@ def load(fnames, tag=None, inst_id=None, file_type='hdf5'): return data, meta -def clean(self): - """Routine to return JRO ISR data cleaned to the specified level - - Notes - -------- - Supports 'clean' - 'clean' is unknown for oblique modes, over 200 km for drifts - 'dusty' is the same as clean - 'Dirty' is the same as clean - 'None' None - - Routine is called by pysat, and not by the end user directly. - - """ - - # Default to selecting all of the data - idx = {'gdalt': [i for i in range(self.data.indexes['gdalt'].shape[0])]} - - if self.tag.find('oblique') == 0: - # Oblique profile cleaning - logger.info(' '.join(['The double pulse, coded pulse, and long pulse', - 'modes implemented at Jicamarca have different', - 'limitations arising from different degrees of', - 'precision and accuracy. Users should consult', - 'with the staff to determine which mode is', - 'right for their application.'])) - - if self.clean_level in ['clean', 'dusty', 'dirty']: - logger.warning('this level 2 data has no quality flags') - else: - # Ion drift cleaning - if self.clean_level in ['clean', 'dusty', 'dirty']: - if self.clean_level in ['clean', 'dusty']: - logger.warning('this level 2 data has no quality flags') - - ida, = np.where((self.data.indexes['gdalt'] > 200.0)) - idx['gdalt'] = np.unique(ida) - else: - logger.warning(' '.join(["interpretation of drifts below 200 km", - "should always be done in partnership", - "with the contact people"])) - - # downselect data based upon cleaning conditions above - self.data = self[idx] - - return +# ---------------------------------------------------------------------------- +# Local functions -def calc_measurement_loc(self): +def calc_measurement_loc(inst): """ Calculate the instrument measurement location in geographic coordinates - Returns - ------- - Void : adds 'gdlat#', 'gdlon#' to the instrument, for all directions that + Parameters + ---------- + inst : pysat.Instrument + JRO ISR Instrument object + + Note + ---- + Adds 'gdlat#', 'gdlon#' to the instrument, for all directions that have azimuth and elevation keys that match the format 'eldir#' and 'azdir#' """ - az_keys = [kk[5:] for kk in list(self.data.keys()) + az_keys = [kk[5:] for kk in list(inst.data.keys()) if kk.find('azdir') == 0] - el_keys = [kk[5:] for kk in list(self.data.keys()) + el_keys = [kk[5:] for kk in list(inst.data.keys()) if kk.find('eldir') == 0] good_dir = list() @@ -379,36 +394,36 @@ def calc_measurement_loc(self): lon_key = 'gdlon{:d}'.format(dd) # JRO is located 520 m above sea level (jro.igp.gob.pe./english/) # Also, altitude has already been calculated - gdaltr = np.ones(shape=self['gdlonr'].shape) * 0.52 - gdlat, gdlon, _ = coords.local_horizontal_to_global_geo(self[az_key], - self[el_key], - self['range'], - self['gdlatr'], - self['gdlonr'], + gdaltr = np.ones(shape=inst['gdlonr'].shape) * 0.52 + gdlat, gdlon, _ = coords.local_horizontal_to_global_geo(inst[az_key], + inst[el_key], + inst['range'], + inst['gdlatr'], + inst['gdlonr'], gdaltr, geodetic=True) # Assigning as data, to ensure that the number of coordinates match # the number of data dimensions - self.data = self.data.assign({lat_key: gdlat, lon_key: gdlon}) + inst.data = inst.data.assign({lat_key: gdlat, lon_key: gdlon}) # Add metadata for the new data values bm_label = "Beam {:d} ".format(dd) - self.meta[lat_key] = {self.meta.units_label: 'degrees', - self.meta.name_label: bm_label + 'latitude', - self.meta.desc_label: bm_label + 'latitude', - self.meta.plot_label: bm_label + 'Latitude', - self.meta.axis_label: bm_label + 'Latitude', - self.meta.scale_label: 'linear', - self.meta.min_label: -90.0, - self.meta.max_label: 90.0, - self.meta.fill_label: np.nan} - self.meta[lon_key] = {self.meta.units_label: 'degrees', - self.meta.name_label: bm_label + 'longitude', - self.meta.desc_label: bm_label + 'longitude', - self.meta.plot_label: bm_label + 'Longitude', - self.meta.axis_label: bm_label + 'Longitude', - self.meta.scale_label: 'linear', - self.meta.fill_label: np.nan} + inst.meta[lat_key] = {inst.meta.units_label: 'degrees', + inst.meta.name_label: bm_label + 'latitude', + inst.meta.desc_label: bm_label + 'latitude', + inst.meta.plot_label: bm_label + 'Latitude', + inst.meta.axis_label: bm_label + 'Latitude', + inst.meta.scale_label: 'linear', + inst.meta.min_label: -90.0, + inst.meta.max_label: 90.0, + inst.meta.fill_label: np.nan} + inst.meta[lon_key] = {inst.meta.units_label: 'degrees', + inst.meta.name_label: bm_label + 'longitude', + inst.meta.desc_label: bm_label + 'longitude', + inst.meta.plot_label: bm_label + 'Longitude', + inst.meta.axis_label: bm_label + 'Longitude', + inst.meta.scale_label: 'linear', + inst.meta.fill_label: np.nan} return From 1263a58a26493932758521f199ac533f7127f9a5 Mon Sep 17 00:00:00 2001 From: Russell Stoneback Date: Mon, 19 Oct 2020 17:47:08 -0500 Subject: [PATCH 117/231] BUG: Fixed compatibility with netcdf4 file creation --- CHANGELOG.md | 3 +++ pysatMadrigal/instruments/methods/madrigal.py | 19 +++++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0535e07..1040632 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ This project adheres to [Semantic Versioning](http://semver.org/). ## [0.?.?] - 2020-07-03 - Added coords from pysat.utils +- Bug Fix + - Updated madrigal methods to simplify compound data types and enable + creation of netCDF4 files using `Instrument.to_netcdf4()`. ## [0.0.3] - 2020-06-15 - pypi compatibility diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 3889889..21d5ec5 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -89,10 +89,11 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[]): file_meta = filed['Metadata']['Data Parameters'] # load up what is offered into pysat.Meta meta = pysat.Meta() - meta.info = {'acknowledgements': - ' '.join(["See 'meta.Experiment_Notes' for instrument", - "specific acknowledgements\n", cedar_rules()]), - 'references': "See 'meta.Experiment_Notes' for references"} + meta.acknowledgements = "".join(("See 'meta.Experiment_Notes' for ", + "instrument specific acknowledgements\n", + cedar_rules())) + meta.references = "See 'meta.Experiment_Notes' for references" + labels = [] for item in file_meta: # handle difference in string output between python 2 and 3 @@ -115,6 +116,16 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[]): for key in filed['Metadata']: if key != 'Data Parameters': setattr(meta, key.replace(' ', '_'), filed['Metadata'][key][:]) + + # Update formatting of madrigal experiment information since + # netcdf4 doesn't recommend compound data types. + mad_vars = [('Experiment_Parameters', ': '), + ('Independent_Spatial_Parameters', ': '), + ('Experiment_Notes', '')] + for mad_var in mad_vars: + temp = [mad_var[1].join(snip) for snip in getattr(meta, mad_var[0])] + setattr(meta, mad_var[0], temp) + # data into frame, with labels from metadata data = pds.DataFrame.from_records(file_data, columns=labels) # lowercase variable names From ffbc5ddf3344fd8b9d0957929205a30315981a3d Mon Sep 17 00:00:00 2001 From: Russell Stoneback Date: Tue, 20 Oct 2020 17:22:50 -0500 Subject: [PATCH 118/231] BUG: Removed references etc from meta --- pysatMadrigal/instruments/methods/madrigal.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 21d5ec5..c2ecd13 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -89,10 +89,6 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[]): file_meta = filed['Metadata']['Data Parameters'] # load up what is offered into pysat.Meta meta = pysat.Meta() - meta.acknowledgements = "".join(("See 'meta.Experiment_Notes' for ", - "instrument specific acknowledgements\n", - cedar_rules())) - meta.references = "See 'meta.Experiment_Notes' for references" labels = [] for item in file_meta: From ba8b4291be10abb5c72a7771af2140bad8367532 Mon Sep 17 00:00:00 2001 From: Russell Stoneback Date: Tue, 20 Oct 2020 17:44:59 -0500 Subject: [PATCH 119/231] BUG: Updated for python 3 --- pysatMadrigal/instruments/methods/madrigal.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index c2ecd13..30e1692 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -119,8 +119,10 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[]): ('Independent_Spatial_Parameters', ': '), ('Experiment_Notes', '')] for mad_var in mad_vars: - temp = [mad_var[1].join(snip) for snip in getattr(meta, mad_var[0])] - setattr(meta, mad_var[0], temp) + snips = [[snip.decode('UTF-8') for snip in items] for items in + getattr(meta, mad_var[0])] + snips = [mad_var[1].join(snip) for snip in snips] + setattr(meta, mad_var[0], snips) # data into frame, with labels from metadata data = pds.DataFrame.from_records(file_data, columns=labels) From eabcd255d98badb36fc5952d76bd5a7741a59327 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Wed, 21 Oct 2020 10:00:30 -0400 Subject: [PATCH 120/231] STY: merge suggestions Implemented various suggested changes to the data merging. --- pysatMadrigal/instruments/methods/madrigal.py | 89 ++++++++++--------- 1 file changed, 46 insertions(+), 43 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 5c0e003..1478215 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -82,34 +82,41 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_type='hdf5'): # Initialize the output meta = pysat.Meta() labels = [] - fdata = [] # Load the file data - for fname in fnames: - if file_type == "netCDF4": - # Xarray natively opens netCDF data into a Dataset - file_data = xr.open_dataset(fname) - - # Currently not saving file header data, as all metadata is at - # the data variable level - if len(labels) == 0: - for item in file_data.data_vars.keys(): - name_string = item - unit_string = file_data[item].attrs['units'] - desc_string = file_data[item].attrs['description'] - labels.append(name_string) - meta[name_string.lower()] = {'long_name': name_string, - 'units': unit_string, - 'desc': desc_string} - # remove any metadata from xarray - file_data[item].attrs = {} - - # Reset UNIX timestamp as datetime and set it as an index - file_data = file_data.rename({'timestamps': 'time'}) - time_data = pds.to_datetime(file_data['time'].values, unit='s') - data = file_data.assign_coords({'time': ('time', time_data)}) - - elif file_type == "hdf5": + if file_type == "netCDF4": + # Xarray natively opens netCDF data into a Dataset + file_data = xr.open_dataset(fnames, combine='by_coords') + + # Currently not saving file header data, as all metadata is at + # the data variable level + if len(labels) == 0: + for item in file_data.data_vars.keys(): + name_string = item + unit_string = file_data[item].attrs['units'] + desc_string = file_data[item].attrs['description'] + labels.append(name_string) + meta[name_string.lower()] = {'long_name': name_string, + 'units': unit_string, + 'desc': desc_string} + # remove any metadata from xarray + file_data[item].attrs = {} + + # Reset UNIX timestamp as datetime and set it as an index + file_data = file_data.rename({'timestamps': 'time'}) + time_data = pds.to_datetime(file_data['time'].values, unit='s') + data = file_data.assign_coords({'time': ('time', time_data)}) + + elif file_type == "hdf5": + # Ensure we don't try to create an xarray object with only time as + # the coordinate + coord_len = len(xarray_coords) + if 'time' in xarray_coords: + coord_len -= 1 + + # Cycle through all the filenames + fdata = [] + for fname in fnames: # Open the specified file and get the data and metadata filed = h5py.File(fname, 'r') file_data = filed['Data']['Table Layout'] @@ -154,12 +161,6 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_type='hdf5'): year=data.loc[:, 'year'], month=data.loc[:, 'month'], day=data.loc[:, 'day'], uts=uts) - # Ensure we don't try to create an xarray object with only time as - # the coordinate - coord_len = len(xarray_coords) - if 'time' in xarray_coords: - coord_len -= 1 - # Declare index or recast as xarray if coord_len > 0: # If a list was provided, recast as a dict and grab the data @@ -226,12 +227,10 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_type='hdf5'): xdatasets.append(sel_data.to_xarray()) # Merge all of the datasets - for i in np.arange(1, len(xdatasets)): - xdatasets[0] = xdatasets[0].merge(xdatasets[i]) + data = xr.merge(xdatasets) # Test to see that all data was retrieved - test_variables = [xkey for xkey - in xdatasets[0].variables.keys()] + test_variables = [xkey for xkey in data.variables.keys()] ltest = len(test_variables) ldata = len(data.columns) @@ -249,8 +248,6 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_type='hdf5'): '{:d} != '.format(ltest), '{:d}; '.format(ldata), estr])) - - data = xdatasets[0] else: # Set the index to time data.index = time @@ -262,12 +259,18 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_type='hdf5'): " specifing additional coordinates", " and storing the data as an ", "xarray Dataset"])) - fdata.append(data) - # If multiple files were loaded, merge the data together - for i in np.arange(1, len(fdata)): - fdata[0] = fdata[0].merge(fdata[i]) - data = fdata[0] + # Compile a list of the data objects + fdata.append(data) + + # If multiple files were loaded, merge the data together + if len(fdata) == 1: + data = fdata[0] + else: + if coord_len > 0: + data = xr.merge(fdata) + else: + data = pds.merge(fdata) return data, meta From 193cf505237a5be01e2a2ef586635410a9e576d5 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Wed, 21 Oct 2020 10:16:37 -0400 Subject: [PATCH 121/231] TST: unnecesary(?) checkout Removed possibly unnecessary checkout statement. --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 425eb68..be22923 100644 --- a/.travis.yml +++ b/.travis.yml @@ -39,7 +39,6 @@ install: - cd .. - git clone --single-branch --branch develop-3 https://github.com/pysat/pysat.git - cd pysat - - git checkout develop-3 - python setup.py install - export PYTHONPATH=$PYTHONPATH:$(pwd) # set up data directory From bebff4d10b675640b245c247e8d69cd6113a29b8 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Wed, 21 Oct 2020 11:20:35 -0400 Subject: [PATCH 122/231] BUG: reordered data merging for tests Reordered the data merging and test variable definition to ensure testing is possible. --- pysatMadrigal/instruments/methods/madrigal.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 1478215..6983e0f 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -226,23 +226,25 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_type='hdf5'): # Recast as an xarray xdatasets.append(sel_data.to_xarray()) + # Get the necessary information to test the data + ltest = len(test_variables) + lcols = data.columns + ldata = len(lcols) + # Merge all of the datasets data = xr.merge(xdatasets) - - # Test to see that all data was retrieved test_variables = [xkey for xkey in data.variables.keys()] - ltest = len(test_variables) - ldata = len(data.columns) + # Test to see that all data was retrieved if ltest != ldata: if ltest < ldata: estr = 'missing: {:}'.format( - ' '.join([dvar for dvar in data.columns + ' '.join([dvar for dvar in lcols if dvar not in test_variables])) else: estr = 'have extra: {:}'.format( ' '.join([tvar for tvar in test_variables - if tvar not in data.columns])) + if tvar not in lcols])) raise ValueError(''.join(['coordinates not supplied ', 'for all data columns: ', '{:d} != '.format(ltest), From 991c2123999082fe234988e134037b3e5ddc0d26 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Wed, 21 Oct 2020 15:34:29 -0400 Subject: [PATCH 123/231] BUG: netCDF4 multi-file loading Fixed incorrect implementation of loading multiple files at once. --- pysatMadrigal/instruments/methods/madrigal.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 6983e0f..67c2295 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -86,7 +86,10 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_type='hdf5'): # Load the file data if file_type == "netCDF4": # Xarray natively opens netCDF data into a Dataset - file_data = xr.open_dataset(fnames, combine='by_coords') + if len(fnames) == 1: + file_data = xr.open_dataset(fnames[0]) + else: + file_data = xr.open_mfdataset(fnames, combine='by_coords') # Currently not saving file header data, as all metadata is at # the data variable level From 7ae7fb2d8143536b32748db10725e757e949646b Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Wed, 21 Oct 2020 16:33:27 -0400 Subject: [PATCH 124/231] DOC: add temprorary warning for file loading Added a temporary warning for file loading, as HDF5 loading may break if netCDF4 was used previously. --- pysatMadrigal/instruments/methods/madrigal.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 67c2295..99cb8fa 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -74,6 +74,10 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_type='hdf5'): metadata : pysat.Meta Metadata from the HDF5 file, as well as default values from pysat + Note + ---- + Currently HDF5 reading breaks if a different file type was used previously + """ # Test the file format if file_type not in ['netCDF4', 'hdf5']: From e48af3dfd55e14a2c2ecdb464a8d98ac1a61af06 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 22 Oct 2020 08:02:32 -0400 Subject: [PATCH 125/231] BUG: variable order Fixed variable order, not using a variable before it is defined. --- pysatMadrigal/instruments/methods/madrigal.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 99cb8fa..a6a47ca 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -234,13 +234,13 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_type='hdf5'): xdatasets.append(sel_data.to_xarray()) # Get the necessary information to test the data - ltest = len(test_variables) lcols = data.columns ldata = len(lcols) # Merge all of the datasets data = xr.merge(xdatasets) test_variables = [xkey for xkey in data.variables.keys()] + ltest = len(test_variables) # Test to see that all data was retrieved if ltest != ldata: From c4d83e2b8d2ae61ad68c62042dad31328d16fb73 Mon Sep 17 00:00:00 2001 From: Russell Stoneback Date: Fri, 30 Oct 2020 16:50:23 -0500 Subject: [PATCH 126/231] BUG: Updated load for multiple files in pandas --- pysatMadrigal/instruments/methods/madrigal.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index a6a47ca..613069a 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -279,7 +279,7 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_type='hdf5'): if coord_len > 0: data = xr.merge(fdata) else: - data = pds.merge(fdata) + data = pds.concat(fdata) return data, meta From 2ac496e33b8aa275473444269e0d82a61ea7844d Mon Sep 17 00:00:00 2001 From: Russell Stoneback Date: Fri, 30 Oct 2020 16:51:02 -0500 Subject: [PATCH 127/231] STY: Updated CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1040632..4fe624a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). - Bug Fix - Updated madrigal methods to simplify compound data types and enable creation of netCDF4 files using `Instrument.to_netcdf4()`. + - Updated load for multiple files in pandas format ## [0.0.3] - 2020-06-15 - pypi compatibility From 9c75e985bb2c5f68d7adfdb135a9859077c74957 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 19 Nov 2020 15:41:27 -0500 Subject: [PATCH 128/231] STY: update logger handle Updated logger handle to use pysat logger. --- pysatMadrigal/instruments/dmsp_ivm.py | 4 +--- pysatMadrigal/instruments/gnss_tec.py | 4 +--- pysatMadrigal/instruments/jro_isr.py | 4 +--- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/pysatMadrigal/instruments/dmsp_ivm.py b/pysatMadrigal/instruments/dmsp_ivm.py index 6330247..82871d8 100644 --- a/pysatMadrigal/instruments/dmsp_ivm.py +++ b/pysatMadrigal/instruments/dmsp_ivm.py @@ -60,16 +60,14 @@ import datetime as dt import functools -import logging import numpy as np import pandas as pds from pysat.instruments.methods import general as ps_gen +from pysat import logger from pysatMadrigal.instruments.methods import madrigal as mad_meth -logger = logging.getLogger(__name__) - # ---------------------------------------------------------------------------- # Instrument attributes diff --git a/pysatMadrigal/instruments/gnss_tec.py b/pysatMadrigal/instruments/gnss_tec.py index d7c845c..424776e 100644 --- a/pysatMadrigal/instruments/gnss_tec.py +++ b/pysatMadrigal/instruments/gnss_tec.py @@ -41,12 +41,10 @@ import numpy as np from pysat.instruments.methods import general as ps_gen +from pysat import logger from pysatMadrigal.instruments.methods import madrigal as mad_meth -import logging -logger = logging.getLogger(__name__) - # ---------------------------------------------------------------------------- # Instrument attributes diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index ff489b0..d38de9f 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -36,16 +36,14 @@ import datetime as dt import functools -import logging import numpy as np from pysat.instruments.methods import general as ps_gen +from pysat import logger from pysatMadrigal.instruments.methods import madrigal as mad_meth from pysatMadrigal.utils import coords -logger = logging.getLogger(__name__) - # ---------------------------------------------------------------------------- # Instrument attributes From 4006c8710ad86902c1d20ae71313ec2a2b66a607 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Wed, 9 Dec 2020 14:06:59 -0500 Subject: [PATCH 129/231] STY: updated meta class Updated Meta class to use MetaLabels. --- pysatMadrigal/instruments/methods/madrigal.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 613069a..700a996 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -71,7 +71,7 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_type='hdf5'): data : pds.DataFrame or xr.Dataset A pandas DataFrame or xarray Dataset holding the data from the HDF5 file - metadata : pysat.Meta + meta : pysat.Meta Metadata from the HDF5 file, as well as default values from pysat Note @@ -103,10 +103,11 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_type='hdf5'): unit_string = file_data[item].attrs['units'] desc_string = file_data[item].attrs['description'] labels.append(name_string) - meta[name_string.lower()] = {'long_name': name_string, - 'units': unit_string, - 'desc': desc_string} - # remove any metadata from xarray + meta[name_string.lower()] = {meta.labels.name: name_string, + meta.labels.units: unit_string, + meta.labels.desc: desc_string} + + # Remove any metadata from xarray file_data[item].attrs = {} # Reset UNIX timestamp as datetime and set it as an index @@ -136,9 +137,9 @@ def load(fnames, tag=None, inst_id=None, xarray_coords=[], file_type='hdf5'): unit_string = item[3].decode('UTF-8') desc_string = item[1].decode('UTF-8') labels.append(name_string) - meta[name_string.lower()] = {'long_name': name_string, - 'units': unit_string, - 'desc': desc_string} + meta[name_string.lower()] = {meta.labels.name: name_string, + meta.labels.units: unit_string, + meta.labels.desc: desc_string} # Add additional metadata notes. Custom attributes attached to meta # are attached to corresponding Instrument object when pysat From 80a0791d24faa7347b1d8e1ca3225c76fe2a5fc3 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Wed, 9 Dec 2020 14:09:52 -0500 Subject: [PATCH 130/231] STY: JRO ISR meta class updated Updated the use of Meta in the JRO ISR instrument. --- pysatMadrigal/instruments/jro_isr.py | 32 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index d38de9f..d931a9c 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -407,21 +407,21 @@ def calc_measurement_loc(inst): # Add metadata for the new data values bm_label = "Beam {:d} ".format(dd) - inst.meta[lat_key] = {inst.meta.units_label: 'degrees', - inst.meta.name_label: bm_label + 'latitude', - inst.meta.desc_label: bm_label + 'latitude', - inst.meta.plot_label: bm_label + 'Latitude', - inst.meta.axis_label: bm_label + 'Latitude', - inst.meta.scale_label: 'linear', - inst.meta.min_label: -90.0, - inst.meta.max_label: 90.0, - inst.meta.fill_label: np.nan} - inst.meta[lon_key] = {inst.meta.units_label: 'degrees', - inst.meta.name_label: bm_label + 'longitude', - inst.meta.desc_label: bm_label + 'longitude', - inst.meta.plot_label: bm_label + 'Longitude', - inst.meta.axis_label: bm_label + 'Longitude', - inst.meta.scale_label: 'linear', - inst.meta.fill_label: np.nan} + inst.meta[lat_key] = {inst.meta.labels.units: 'degrees', + inst.meta.labels.name: bm_label + 'latitude', + inst.meta.labels.desc: bm_label + 'latitude', + inst.meta.labels.plot: bm_label + 'Latitude', + inst.meta.labels.axis: bm_label + 'Latitude', + inst.meta.labels.scale: 'linear', + inst.meta.labels.min_val: -90.0, + inst.meta.labels.max_val: 90.0, + inst.meta.labels.fill_val: np.nan} + inst.meta[lon_key] = {inst.meta.labels.units: 'degrees', + inst.meta.labels.name: bm_label + 'longitude', + inst.meta.labels.desc: bm_label + 'longitude', + inst.meta.labels.plot: bm_label + 'Longitude', + inst.meta.labels.axis: bm_label + 'Longitude', + inst.meta.labels.scale: 'linear', + inst.meta.labels.fill_val: np.nan} return From 94b662d5017f3f3b45ce5b083d76458e70363933 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Wed, 9 Dec 2020 14:11:07 -0500 Subject: [PATCH 131/231] ENH: udated GNSS TEC meta class Updated the use of labels in the GNSS TEC instrument. --- pysatMadrigal/instruments/gnss_tec.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pysatMadrigal/instruments/gnss_tec.py b/pysatMadrigal/instruments/gnss_tec.py index 424776e..f083f48 100644 --- a/pysatMadrigal/instruments/gnss_tec.py +++ b/pysatMadrigal/instruments/gnss_tec.py @@ -296,7 +296,7 @@ def load(fnames, tag=None, inst_id=None, file_type='netCDF4'): # Fix the units for tec and dtec if tag == 'vtec': - meta['tec'] = {meta.units_label: 'TECU'} - meta['dtec'] = {meta.units_label: 'TECU'} + meta['tec'] = {meta.labels.units: 'TECU'} + meta['dtec'] = {meta.labels.units: 'TECU'} return data, meta From 737c81af9c5982b903e7655ba906dae37a3ea672 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Wed, 9 Dec 2020 14:13:30 -0500 Subject: [PATCH 132/231] DOC: updated changelog Updated changelog with general description of many of the recent pulls. --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4fe624a..e91e69a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). ## [0.?.?] - 2020-07-03 - Added coords from pysat.utils +- Made changes to structure to comply with updates in pysat 3.0.0 - Bug Fix - Updated madrigal methods to simplify compound data types and enable creation of netCDF4 files using `Instrument.to_netcdf4()`. From 19524a3db252a360b7e2d7ea30e1f2775090fbba Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Fri, 11 Dec 2020 12:31:15 -0500 Subject: [PATCH 133/231] TST: add password support to tests --- pysatMadrigal/tests/test_instruments.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/pysatMadrigal/tests/test_instruments.py b/pysatMadrigal/tests/test_instruments.py index 02bf101..a3535b4 100644 --- a/pysatMadrigal/tests/test_instruments.py +++ b/pysatMadrigal/tests/test_instruments.py @@ -7,7 +7,23 @@ import pysatMadrigal -instruments = generate_instrument_list(inst_loc=pysatMadrigal.instruments) +# Optional code to pass through user and password info to test instruments +# dict, keyed by pysat instrument, with a list of usernames and passwords +# user_info = {'platform_name': {'user': 'pysat_user', +# 'password': 'None'}} +user_info = {module: {'user': 'pysat+CI_tests', + 'password': 'pysat.developers@gmail.com'} + for module in pysatMadrigal.instruments.__all__} + +# Developers for instrument libraries should update the following line to +# point to their own subpackage location +# e.g., +# instruments = generate_instrument_list(inst_loc=mypackage.inst) +# If user and password info supplied, use the following instead +# instruments = generate_instrument_list(inst_loc=mypackage.inst, +# user_info=user_info) +instruments = generate_instrument_list(inst_loc=pysatMadrigal.instruments, + user_info=user_info) method_list = [func for func in dir(InstTestClass) if callable(getattr(InstTestClass, func))] From b804a3b9588fd082fd23f4575526cc30d6ac3067 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Fri, 11 Dec 2020 12:32:45 -0500 Subject: [PATCH 134/231] ENH: remove auto-generation of user/password in methods --- pysatMadrigal/instruments/methods/madrigal.py | 33 ------------------- 1 file changed, 33 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 613069a..2003fca 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -338,17 +338,6 @@ def download(date_array, inst_code=None, kindat=None, data_path=None, if kindat is None: raise ValueError("Must supply Madrigal experiment code") - # currently passes things along if no user and password supplied - # need to do this for testing - # TODO, implement user and password values in test code - # specific to each instrument - if user is None: - logger.info('No user information supplied for download.') - user = 'pysat_testing' - if password is None: - logger.info('Please provide email address in password field.') - password = 'pysat_testing@not_real_email.org' - # Initialize the connection to Madrigal web_data = madrigalWeb.MadrigalData(url) @@ -437,17 +426,6 @@ def get_remote_filenames(inst_code=None, kindat=None, user=None, else: kindat = [int(kk) for kk in kindat.split(",")] - # currently passes things along if no user and password supplied - # need to do this for testing - # TODO, implement user and password values in test code - # specific to each instrument - if user is None: - logger.warning('No user information supplied for download.') - user = 'pysat_testing' - if password is None: - logger.warning('Please provide email address in password field.') - password = 'pysat_testing@not_real_email.org' - # If date_array supplied, overwrite start and stop if date_array is not None: if len(date_array) == 0: @@ -593,17 +571,6 @@ def list_remote_files(tag, inst_id, inst_code=None, kindat=None, user=None, if inst_code is None: raise ValueError("Must supply Madrigal instrument code") - # currently passes things along if no user and password supplied - # need to do this for testing - # TODO, implement user and password values in test code - # specific to each instrument - if user is None: - logger.info('No user information supplied for download.') - user = 'pysat_testing' - if password is None: - logger.info('Please provide email address in password field.') - password = 'pysat_testing@not_real_email.org' - # Test input try: format_str = supported_tags[inst_id][tag] From 4ae2728b8db67db9baacd6ff8a6e02d9635628d5 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 14 Dec 2020 10:23:21 -0500 Subject: [PATCH 135/231] ENH: generalize madrigal parameter checks --- pysatMadrigal/instruments/methods/madrigal.py | 36 +++++++++++++++---- 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 2003fca..88fa218 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -332,8 +332,7 @@ def download(date_array, inst_code=None, kindat=None, data_path=None, raise ValueError("Unknown file format {:}, accepts {:}".format( file_type, file_types)) - if inst_code is None: - raise ValueError("Must supply Madrigal instrument code") + _check_madrigal_params(inst_code=inst_code, user=user, password=password) if kindat is None: raise ValueError("Must supply Madrigal experiment code") @@ -418,8 +417,7 @@ def get_remote_filenames(inst_code=None, kindat=None, user=None, """ - if inst_code is None: - raise ValueError("Must supply Madrigal instrument code") + _check_madrigal_params(inst_code=inst_code, user=user, password=password) if kindat is None: kindat = [] @@ -568,8 +566,8 @@ def list_remote_files(tag, inst_id, inst_code=None, kindat=None, user=None, inst_code=madrigal_inst_code) """ - if inst_code is None: - raise ValueError("Must supply Madrigal instrument code") + + _check_madrigal_params(inst_code=inst_code, user=user, password=password) # Test input try: @@ -644,3 +642,29 @@ def filter_data_single_date(inst): inst.data = inst[idx] return + + +def _check_madrigal_params(inst_code, user, password): + """Checks that parameters requried by Madrigal database are passed through. + Default values of None will raise an error. + + inst_code : string + Madrigal instrument code(s), cast as a string. If multiple are used, + separate them with commas. (default=None) + user : str + The user's names should be provided in field user. Ruby Payne-Scott + should be entered as Ruby+Payne-Scott + password : str + The password field should be the user's email address. These parameters + are passed to Madrigal when downloading. + """ + + if inst_code is None: + raise ValueError("Must supply Madrigal instrument code") + + if not (isinstance(user, str) and isinstance(password, str)): + raise ValueError(' '.join(("The madrigal database requries a username", + "and password. Please input these as", + "user='firstname+lastname' and", + "password='myname@email.address' in this", + "function."))) From f9f5e6f928fceb433bf1cc02b9cc080133f23a2c Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 14 Dec 2020 10:35:45 -0500 Subject: [PATCH 136/231] TST: add tests for madrigal param check --- pysatMadrigal/tests/test_general_methods.py | 33 +++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 pysatMadrigal/tests/test_general_methods.py diff --git a/pysatMadrigal/tests/test_general_methods.py b/pysatMadrigal/tests/test_general_methods.py new file mode 100644 index 0000000..d432c12 --- /dev/null +++ b/pysatMadrigal/tests/test_general_methods.py @@ -0,0 +1,33 @@ +import pytest +from pysatMadrigal.instruments.methods import madrigal as pm_meth + + +class TestBasic(): + + def setup(self): + """Runs before every method to create a clean testing setup.""" + self.kwargs = {'inst_code': 'inst_code', + 'user': 'username', + 'password': 'password'} + + def cleanup(self): + """Runs after every method to clean up previous testing.""" + del self.kwargs + + @pytest.mark.parametrize("del_val", + ['inst_code', 'user', 'password']) + def test_check_madrigal_params_no_input(self, del_val): + """Test that an error is thrown if None is passed through""" + self.kwargs[del_val] = None + + with pytest.raises(ValueError): + pm_meth._check_madrigal_params(**self.kwargs) + + @pytest.mark.parametrize("del_val", + ['user', 'password']) + def test_check_madrigal_params_bad_input(self, del_val): + """Test that an error is thrown if non-string is passed through""" + self.kwargs[del_val] = 17 + + with pytest.raises(ValueError): + pm_meth._check_madrigal_params(**self.kwargs) From bd3dede72f8aa7401d6b93a5dddd6411defe2323 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 14 Dec 2020 10:37:42 -0500 Subject: [PATCH 137/231] DOC: update docstring --- pysatMadrigal/instruments/methods/madrigal.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 88fa218..a668f7c 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -650,7 +650,7 @@ def _check_madrigal_params(inst_code, user, password): inst_code : string Madrigal instrument code(s), cast as a string. If multiple are used, - separate them with commas. (default=None) + separate them with commas. user : str The user's names should be provided in field user. Ruby Payne-Scott should be entered as Ruby+Payne-Scott From 130dc69b8677f0e35ddedcc12098c21da8bac450 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 14 Dec 2020 12:31:51 -0500 Subject: [PATCH 138/231] Update pysatMadrigal/instruments/methods/madrigal.py Co-authored-by: Angeline Burrell --- pysatMadrigal/instruments/methods/madrigal.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index a668f7c..b5cd685 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -648,7 +648,7 @@ def _check_madrigal_params(inst_code, user, password): """Checks that parameters requried by Madrigal database are passed through. Default values of None will raise an error. - inst_code : string + inst_code : str Madrigal instrument code(s), cast as a string. If multiple are used, separate them with commas. user : str From 37a08e22f9b3b7f4f615c2ed7e73ab3e6b4ac66c Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Mon, 14 Dec 2020 12:33:37 -0500 Subject: [PATCH 139/231] ENH: added requirements files Added requirements files for testing and running the module. --- requirements.txt | 6 ++++++ test_requirements.txt | 8 ++++++++ 2 files changed, 14 insertions(+) create mode 100644 requirements.txt create mode 100644 test_requirements.txt diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..27c3023 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,6 @@ +h5py +madrigalWeb +numpy +pandas +pysat>=3.0 +xarray diff --git a/test_requirements.txt b/test_requirements.txt new file mode 100644 index 0000000..02dae12 --- /dev/null +++ b/test_requirements.txt @@ -0,0 +1,8 @@ +coveralls +m2r2 +numpydoc +pytest-cov +pytest-ordering +pytest-flake8 +sphinx +sphinx_rtd_theme From 0daa100f4f75e39803ae710bd7117807a0bb048d Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Mon, 14 Dec 2020 12:34:14 -0500 Subject: [PATCH 140/231] STY: moved setup to config file Moved the setup details to the configuration file. --- setup.cfg | 47 +++++++++++++++++++++++++++++++++++++++++++++++ setup.py | 53 ++++------------------------------------------------- 2 files changed, 51 insertions(+), 49 deletions(-) diff --git a/setup.cfg b/setup.cfg index 29eec56..a1b6277 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,3 +1,50 @@ +[metadata] +name = pysatMadrigal +version = file: pysatMadrigal/version.txt +url = https://github.com/pysat/pysatMadrigal +author = Angeline G. Burrell, et al. +author_email = angeline.burrell@nrl.navy.mil +description = 'Madrigal instrument support for the pysat ecosystem' +keywords = + pysat + ionosphere + Madrigal + CEDAR + thermosphere + GPS + GNSS + TEC + Jicamarca + DMSP + ISR + Incoherent scatter radar +classifiers = + Development Status :: 4 - Beta + Topic :: Scientific/Engineering :: Physics + Topic :: Scientific/Engineering :: Atmospheric Science + Intended Audience :: Science/Research + License :: OSI Approved :: BSD License + Natural Language :: English + Programming Language :: Python :: 3 :: Only + Programming Language :: Python :: 3.6 + Programming Language :: Python :: 3.7 + Programming Language :: Python :: 3.8 + Operating System :: MacOS :: MacOS X + Operating System :: POSIX :: Linux +license_file = LICENSE +long_description = file: README.md +long_description_content_type = text/markdown + + [options] + python_requires = >= 3.5 + setup_requires = + setuptools >= 38.6 + pip >= 10 + include_package_data = True + zip_safe = False + packages = find: + install_requires = file: requirements.txt + [coverage:report] omit = */instruments/templates/ diff --git a/setup.py b/setup.py index c7820b4..490d94a 100644 --- a/setup.py +++ b/setup.py @@ -4,54 +4,9 @@ # Full license can be found in License.md and AUTHORS.md # ----------------------------------------------------------------------------- -import codecs -import os -from setuptools import setup, find_packages +from setuptools import setup -here = os.path.abspath(os.path.dirname(__file__)) -with codecs.open(os.path.join(here, 'description.txt'), encoding='utf-8') as f: - long_description = f.read() -version_filename = os.path.join('pysatMadrigal', 'version.txt') -with codecs.open(os.path.join(here, version_filename)) as version_file: - version = version_file.read().strip() - -# Define requirements -# netCDF support requires netCDF4-Python or scipy installation -install_requires = ['pysat', 'pandas', 'xarray', 'numpy', 'netCDF4'] - -# packages with Fortran code -fortran_install = ['madrigalWeb', 'h5py'] - -# flag, True if on readthedocs -on_rtd = os.environ.get('READTHEDOCS') == 'True' - -# include Fortran for normal install -# read the docs doesn't do Fortran -if not on_rtd: - # not on ReadTheDocs, add Fortran - install_requires.extend(fortran_install) - - -# Run setup -setup(name='pysatMadrigal', - version=version, - url='http://github.com/pysat/pysatMadrigal', - author='Angeline G. Burrell, Russell Stoneback, Jeff Klenzing', - author_email='angeline.burrell@nrl.navy.mil', - description='Madrigal instrument support for the pysat ecosystem', - long_description=long_description, - packages=find_packages(), - classifiers=["Development Status :: 4 - Beta", - "Topic :: Scientific/Engineering :: Physics", - "Intended Audience :: Science/Research", - 'License :: OSI Approved :: BSD License', - "Natural Language :: English", - "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Operating System :: MacOS :: MacOS X"], - include_package_data=True, - zip_safe=False, - install_requires=install_requires,) +# Run setup. Setuptools will look for parameters in [metadata] section of +# setup.cfg +setup() From 6665a70117694e1437c829368d6860147e3d2207 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Mon, 14 Dec 2020 12:35:19 -0500 Subject: [PATCH 141/231] TST: implemented requirements.txt Updated .travis.yml to use the requirements files where appropriate. --- .travis.yml | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/.travis.yml b/.travis.yml index be22923..b69dbd9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,14 @@ language: python dist: xenial -matrix: +jobs: include: - - python: 3.6 - - python: 3.7 - - python: 3.8 + - python: '3.6' + script: pytest --cov=pysatMadrigal/ + - name: '3.7 with flake8' + python: '3.7' + script: pytest --flake8 --cov=pysatMadrigal/ + - python: '3.8' + script: pytest --cov=pysatMadrigal/ services: xvfb cache: pip @@ -28,17 +32,19 @@ install: # Useful for debugging any issues with conda - conda info -a # Create conda test environment - - conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION numpy scipy pandas xarray requests beautifulsoup4 lxml netCDF4 h5py pytest-cov pytest-ordering coveralls future + - conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION - conda activate test-environment - # Dependencies not available through conda, install through pip - - pip install pytest-flake8 + # Once pysat 3.0 is released, remove the custom pysat install and change + # this to: + # - while read requirement; do conda install --yes $requirement; done < requirements.txt + - conda install --yes h5py numpy pandas xarray - pip install madrigalWeb - - pip install PyForecastTools - - pip install pysatCDF >/dev/null # Custom pysat install - cd .. - git clone --single-branch --branch develop-3 https://github.com/pysat/pysat.git - cd pysat + # Install the pysat requirements + - while read requirement; do conda install --yes $requirement; done < requirements.txt - python setup.py install - export PYTHONPATH=$PYTHONPATH:$(pwd) # set up data directory @@ -47,9 +53,5 @@ install: # install pysatMadrigal - python setup.py install -# command to run tests -script: - - pytest -vs --cov=pysatMadrigal/ --flake8 - after_success: - coveralls --rcfile=setup.cfg From 8dadebd2a0cc19c639a4b27301cbf68a7770e9a4 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 14 Dec 2020 12:35:26 -0500 Subject: [PATCH 142/231] TST: remove pysatCDF, add portalocker --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index be22923..e98c907 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,7 +34,7 @@ install: - pip install pytest-flake8 - pip install madrigalWeb - pip install PyForecastTools - - pip install pysatCDF >/dev/null + - pip install portalocker # Custom pysat install - cd .. - git clone --single-branch --branch develop-3 https://github.com/pysat/pysat.git From 764f9cdc3a2dd29c59c7ed99bbd365abd8c23b44 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Mon, 14 Dec 2020 13:17:17 -0500 Subject: [PATCH 143/231] BUG: fixed installation of test requirements Added line to install testing requirements. --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index b69dbd9..6d5aede 100644 --- a/.travis.yml +++ b/.travis.yml @@ -39,6 +39,8 @@ install: # - while read requirement; do conda install --yes $requirement; done < requirements.txt - conda install --yes h5py numpy pandas xarray - pip install madrigalWeb + # Get latest coveralls from pip, not conda + - pip install -r test_requirements.txt # Custom pysat install - cd .. - git clone --single-branch --branch develop-3 https://github.com/pysat/pysat.git From e182dac908518a68a86cc724fd41cfbfe436e26b Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Mon, 14 Dec 2020 13:17:50 -0500 Subject: [PATCH 144/231] STY: updated author email Updated author email to pysat developer email. --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index a1b6277..a162e68 100644 --- a/setup.cfg +++ b/setup.cfg @@ -3,7 +3,7 @@ name = pysatMadrigal version = file: pysatMadrigal/version.txt url = https://github.com/pysat/pysatMadrigal author = Angeline G. Burrell, et al. -author_email = angeline.burrell@nrl.navy.mil +author_email = pysat.developers@gmail.com description = 'Madrigal instrument support for the pysat ecosystem' keywords = pysat From afba95e969086d9905ac3a1c90dc2c417c424287 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Tue, 15 Dec 2020 09:55:20 -0500 Subject: [PATCH 145/231] MAINT: remove unused kwarg Removed unused kwarg `fake_daily_files_from_monthly` from `list_files` routine in all instruments. --- pysatMadrigal/instruments/dmsp_ivm.py | 17 ++++------------- pysatMadrigal/instruments/gnss_tec.py | 17 +++++------------ pysatMadrigal/instruments/jro_isr.py | 17 ++++------------- 3 files changed, 13 insertions(+), 38 deletions(-) diff --git a/pysatMadrigal/instruments/dmsp_ivm.py b/pysatMadrigal/instruments/dmsp_ivm.py index 82871d8..1d8397d 100644 --- a/pysatMadrigal/instruments/dmsp_ivm.py +++ b/pysatMadrigal/instruments/dmsp_ivm.py @@ -189,9 +189,7 @@ def clean(self): def list_files(tag=None, inst_id=None, data_path=None, format_str=None, - supported_tags=supported_tags, - fake_daily_files_from_monthly=False, delimiter=None, - file_type='hdf5'): + supported_tags=supported_tags, delimiter=None, file_type='hdf5'): """Return a Pandas Series of every data file for this Instrument Parameters @@ -211,11 +209,6 @@ def list_files(tag=None, inst_id=None, data_path=None, format_str=None, supported_tags : dict or NoneType keys are inst_id, each containing a dict keyed by tag where the values file format template strings. (default=None) - fake_daily_files_from_monthly : bool - Some CDAWeb instrument data files are stored by month, interfering - with pysat's functionality of loading by day. This flag, when true, - appends daily dates to monthly files internally. These dates are - used by load routine in this module to provide data by day. delimiter : string Delimiter string upon which files will be split (e.g., '.') file_type : string @@ -233,11 +226,9 @@ def list_files(tag=None, inst_id=None, data_path=None, format_str=None, supported_tags[inst_id][tag] = supported_tags[inst_id][tag].format( file_type=file_type) - out = ps_gen.list_files( - tag=tag, inst_id=inst_id, data_path=data_path, format_str=format_str, - supported_tags=supported_tags, - fake_daily_files_from_monthly=fake_daily_files_from_monthly, - delimiter=delimiter) + out = ps_gen.list_files(tag=tag, inst_id=inst_id, data_path=data_path, + format_str=format_str, delimiter=delimiter, + supported_tags=supported_tags) return out diff --git a/pysatMadrigal/instruments/gnss_tec.py b/pysatMadrigal/instruments/gnss_tec.py index 424776e..2217f32 100644 --- a/pysatMadrigal/instruments/gnss_tec.py +++ b/pysatMadrigal/instruments/gnss_tec.py @@ -143,8 +143,7 @@ def clean(self): def list_files(tag=None, inst_id=None, data_path=None, format_str=None, - supported_tags=supported_tags, - fake_daily_files_from_monthly=False, two_digit_year_break=99, + supported_tags=supported_tags, two_digit_year_break=99, delimiter=None, file_type='netCDF4'): """Return a Pandas Series of every data file for this Instrument @@ -165,11 +164,6 @@ def list_files(tag=None, inst_id=None, data_path=None, format_str=None, supported_tags : dict or NoneType keys are inst_id, each containing a dict keyed by tag where the values file format template strings. (default=None) - fake_daily_files_from_monthly : bool - Some CDAWeb instrument data files are stored by month, interfering - with pysat's functionality of loading by day. This flag, when true, - appends daily dates to monthly files internally. These dates are - used by load routine in this module to provide data by day. two_digit_year_break : int If filenames only store two digits for the year, then '1900' will be added for years >= two_digit_year_break @@ -191,11 +185,10 @@ def list_files(tag=None, inst_id=None, data_path=None, format_str=None, supported_tags[inst_id][tag] = supported_tags[inst_id][tag].format( file_type=file_type) - out = ps_gen.list_files( - tag=tag, inst_id=inst_id, data_path=data_path, format_str=format_str, - supported_tags=supported_tags, - fake_daily_files_from_monthly=fake_daily_files_from_monthly, - two_digit_year_break=two_digit_year_break, delimiter=delimiter) + out = ps_gen.list_files(tag=tag, inst_id=inst_id, data_path=data_path, + format_str=format_str, delimiter=delimiter, + supported_tags=supported_tags, + two_digit_year_break=two_digit_year_break) return out diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index d38de9f..f1c13a8 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -170,9 +170,7 @@ def clean(self): def list_files(tag='', inst_id='', data_path=None, format_str=None, - supported_tags=supported_tags, - fake_daily_files_from_monthly=False, - delimiter=None, file_type='hdf5'): + supported_tags=supported_tags, delimiter=None, file_type='hdf5'): """Return a Pandas Series of every data file for this Instrument Parameters @@ -192,11 +190,6 @@ def list_files(tag='', inst_id='', data_path=None, format_str=None, supported_tags : dict or NoneType keys are inst_id, each containing a dict keyed by tag where the values file format template strings. (default=None) - fake_daily_files_from_monthly : bool - Some CDAWeb instrument data files are stored by month, interfering - with pysat's functionality of loading by day. This flag, when true, - appends daily dates to monthly files internally. These dates are - used by load routine in this module to provide data by day. delimiter : string Delimiter string upon which files will be split (e.g., '.') file_type : string @@ -214,11 +207,9 @@ def list_files(tag='', inst_id='', data_path=None, format_str=None, supported_tags[inst_id][tag] = supported_tags[inst_id][tag].format( file_type=file_type) - out = ps_gen.list_files( - tag=tag, inst_id=inst_id, data_path=data_path, format_str=format_str, - supported_tags=supported_tags, - fake_daily_files_from_monthly=fake_daily_files_from_monthly, - delimiter=delimiter) + out = ps_gen.list_files(tag=tag, inst_id=inst_id, data_path=data_path, + format_str=format_str, + supported_tags=supported_tags, delimiter=delimiter) return out From e60181717551db679ef97c5f4575ad005934bc82 Mon Sep 17 00:00:00 2001 From: Russell Stoneback Date: Thu, 17 Dec 2020 14:44:45 -0600 Subject: [PATCH 146/231] BUG: default->preprocess per pysat v3.0 --- pysatMadrigal/instruments/jro_isr.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index f1c13a8..dc08bac 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -90,7 +90,7 @@ # To ensure this function is always applied first, we set the filter # function as the default function for (JRO). # Default function is run first by the nanokernel on every load call. -default = mad_meth.filter_data_single_date +preprocess = mad_meth.filter_data_single_date def init(self): From 262bc173e72aaa004ae99758209db22af84cffd6 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Tue, 5 Jan 2021 17:33:56 -0500 Subject: [PATCH 147/231] MAINT: update meta --- pysatMadrigal/instruments/jro_isr.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index 96701bf..75e8b87 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -401,18 +401,12 @@ def calc_measurement_loc(inst): inst.meta[lat_key] = {inst.meta.labels.units: 'degrees', inst.meta.labels.name: bm_label + 'latitude', inst.meta.labels.desc: bm_label + 'latitude', - inst.meta.labels.plot: bm_label + 'Latitude', - inst.meta.labels.axis: bm_label + 'Latitude', - inst.meta.labels.scale: 'linear', inst.meta.labels.min_val: -90.0, inst.meta.labels.max_val: 90.0, inst.meta.labels.fill_val: np.nan} inst.meta[lon_key] = {inst.meta.labels.units: 'degrees', inst.meta.labels.name: bm_label + 'longitude', inst.meta.labels.desc: bm_label + 'longitude', - inst.meta.labels.plot: bm_label + 'Longitude', - inst.meta.labels.axis: bm_label + 'Longitude', - inst.meta.labels.scale: 'linear', inst.meta.labels.fill_val: np.nan} return From e2709fcf8e135e12f9cf5aeb6f1804d405b1209b Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 21 Jan 2021 13:28:11 -0500 Subject: [PATCH 148/231] BUG: fixed remote file list call Fixed bug in remote file list, feeding pysat routines a list of filenames instead of a list of madrigal class objects. --- pysatMadrigal/instruments/methods/madrigal.py | 55 +++++++++++++------ 1 file changed, 37 insertions(+), 18 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 984332c..aa88c98 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -5,18 +5,18 @@ """ import datetime as dt -import logging import numpy as np import os import pandas as pds import xarray as xr import h5py +import pysat + from madrigalWeb import madrigalWeb -import pysat -logger = logging.getLogger(__name__) +logger = pysat.logger file_types = ['hdf5', 'netCDF4', 'simple'] @@ -370,8 +370,7 @@ def get_remote_filenames(inst_code=None, kindat=None, user=None, url="http://cedar.openmadrigal.org", start=dt.datetime(1900, 1, 1), stop=dt.datetime.now(), date_array=None): - """Retrieve the remote filenames for a specified Madrigal instrument - (and experiment) + """Retrieve the remote filenames for a specified Madrigal experiment Parameters ---------- @@ -404,6 +403,11 @@ def get_remote_filenames(inst_code=None, kindat=None, user=None, be contiguous and will be used instead of start and stop if supplied. (default=None) + Returns + ------- + files : madrigalWeb.madrigalWeb.MadrigalExperimentFile + Madrigal file object that contains remote experiment file data + Note ---- The user's names should be provided in field user. Ruby Payne-Scott should @@ -505,7 +509,7 @@ def list_remote_files(tag, inst_id, inst_code=None, kindat=None, user=None, password=None, supported_tags=None, url="http://cedar.openmadrigal.org", two_digit_year_break=None, start=dt.datetime(1900, 1, 1), - stop=dt.datetime.now()): + stop=dt.datetime.utcnow()): """List files available from Madrigal. Parameters @@ -545,6 +549,12 @@ def list_remote_files(tag, inst_id, inst_code=None, kindat=None, user=None, stop : dt.datetime Ending time for the file list (defaults to time of run) + Returns + ------- + pds.Series + A series of filenames, see `pysat._files.process_parsed_filenames` + for more information. + Note ---- The user's names should be provided in field user. Ruby Payne-Scott should @@ -576,16 +586,18 @@ def list_remote_files(tag, inst_id, inst_code=None, kindat=None, user=None, except KeyError: raise ValueError('Problem parsing supported_tags') - # Retrieve remote file list + # Retrieve remote file experiment list files = get_remote_filenames(inst_code=inst_code, kindat=kindat, user=user, password=password, url=url, start=start, stop=stop) - # parse these filenames to grab out the ones we want + filenames = [file_exp.name for file_exp in files] + + # Parse these filenames to grab out the ones we want logger.info("Parsing filenames") - stored = pysat._files.parse_fixed_width_filenames(files, format_str) + stored = pysat._files.parse_fixed_width_filenames(filenames, format_str) - # process the parsed filenames and return a properly formatted Series + # Process the parsed filenames and return a properly formatted Series logger.info("Processing filenames") return pysat._files.process_parsed_filenames(stored, two_digit_year_break) @@ -613,7 +625,7 @@ def filter_data_single_date(inst): :: inst = pysat.Instrument() - inst.custom.attach(filter_data_single_date, 'modify') + inst.custom_attach(filter_data_single_date) This function will then be automatically applied to the Instrument object data on every load by the pysat nanokernel. @@ -621,15 +633,13 @@ def filter_data_single_date(inst): Warnings -------- For the best performance, this function should be added first in the queue. - This may be ensured by setting the default function in a - pysat instrument file to this one. + This may be ensured by setting the default function in a pysat instrument + file to this one. - within platform_name.py set + To do this, within platform_name.py set `preprocess` at the top level. :: - default = pysat.instruments.methods.madrigal.filter_data_single_date - - at the top level + preprocess = pysat.instruments.methods.madrigal.filter_data_single_date """ @@ -647,8 +657,9 @@ def filter_data_single_date(inst): def _check_madrigal_params(inst_code, user, password): """Checks that parameters requried by Madrigal database are passed through. - Default values of None will raise an error. + Parameters + ---------- inst_code : str Madrigal instrument code(s), cast as a string. If multiple are used, separate them with commas. @@ -658,6 +669,12 @@ def _check_madrigal_params(inst_code, user, password): password : str The password field should be the user's email address. These parameters are passed to Madrigal when downloading. + + Raises + ------ + ValueError + Default values of None will raise an error. + """ if inst_code is None: @@ -669,3 +686,5 @@ def _check_madrigal_params(inst_code, user, password): "user='firstname+lastname' and", "password='myname@email.address' in this", "function."))) + + return From 74209f490e6e5ae475f7f7f941e834cca811dcc2 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 21 Jan 2021 15:08:21 -0500 Subject: [PATCH 149/231] BUG: fixed kindat input Fixed the kindat input to better reflect pysatMadrigal Instrument structure. --- pysatMadrigal/instruments/methods/madrigal.py | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index aa88c98..c4736f6 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -505,7 +505,7 @@ def good_exp(exp, date_array=None): return gflag -def list_remote_files(tag, inst_id, inst_code=None, kindat=None, user=None, +def list_remote_files(tag, inst_id, inst_code=None, kindats=None, user=None, password=None, supported_tags=None, url="http://cedar.openmadrigal.org", two_digit_year_break=None, start=dt.datetime(1900, 1, 1), @@ -523,10 +523,11 @@ def list_remote_files(tag, inst_id, inst_code=None, kindat=None, user=None, inst_code : string Madrigal instrument code(s), cast as a string. If multiple are used, separate them with commas. (default=None) - kindat : string - Madrigal experiment code(s), cast as a string. If multiple are used, - separate them with commas. If not supplied, all will be returned. - (default=None) + kindats : dict + Madrigal experiment codes, in a dict of dicts with inst_ids as top level + keys and tags as second level keys with Madrigal experiment code(s) + as values. These should be strings, with multiple codes separated by + commas. (default=None) data_path : string Path to directory to download data to. (default=None) user : string @@ -555,6 +556,13 @@ def list_remote_files(tag, inst_id, inst_code=None, kindat=None, user=None, A series of filenames, see `pysat._files.process_parsed_filenames` for more information. + Raises + ------ + ValueError + For missing kwarg input + KeyError + For dictionary input missing requested tag/inst_id + Note ---- The user's names should be provided in field user. Ruby Payne-Scott should @@ -574,24 +582,27 @@ def list_remote_files(tag, inst_id, inst_code=None, kindat=None, user=None, list_remote_files = functools.partial(mad_meth.list_remote_files, supported_tags=supported_tags, - inst_code=madrigal_inst_code) + inst_code=madrigal_inst_code, + kindats=madrigal_tag) """ _check_madrigal_params(inst_code=inst_code, user=user, password=password) # Test input - try: - format_str = supported_tags[inst_id][tag] - except KeyError: - raise ValueError('Problem parsing supported_tags') + if supported_tags is None or kindats is None: + raise ValueError('Must supply supported_tags and kindats dicts') + + # Raise KeyError if input dictionaries don't match the input + format_str = supported_tags[inst_id][tag] + kindat = kindats[inst_id][tag] # Retrieve remote file experiment list files = get_remote_filenames(inst_code=inst_code, kindat=kindat, user=user, password=password, url=url, start=start, stop=stop) - filenames = [file_exp.name for file_exp in files] + filenames = [os.path.basename(file_exp.name) for file_exp in files] # Parse these filenames to grab out the ones we want logger.info("Parsing filenames") From 8a7384cffb2cf2d10ed2961b25f9d2450faea7ef Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 21 Jan 2021 15:10:10 -0500 Subject: [PATCH 150/231] ENH: updated madrigal Instruments Updated the madrigal Instruments by: - making all the kindats strings, - fixing docstrings, - updating list_remote_file input, and - fixing the template organization. --- pysatMadrigal/instruments/dmsp_ivm.py | 43 +++-- pysatMadrigal/instruments/gnss_tec.py | 11 +- pysatMadrigal/instruments/jro_isr.py | 14 +- .../instruments/templates/madrigal_pandas.py | 168 ++++++++---------- 4 files changed, 113 insertions(+), 123 deletions(-) diff --git a/pysatMadrigal/instruments/dmsp_ivm.py b/pysatMadrigal/instruments/dmsp_ivm.py index 1d8397d..7eff11a 100644 --- a/pysatMadrigal/instruments/dmsp_ivm.py +++ b/pysatMadrigal/instruments/dmsp_ivm.py @@ -41,7 +41,7 @@ Note ---- - Please provide name and email when downloading data with this routine. +Please provide name and email when downloading data with this routine. Code development supported by NSF grant 1259508 @@ -87,26 +87,32 @@ '': 's?.{{version:03d}}.{file_type}'} supported_tags = {ss: {kk: dmsp_fname1[kk] + ss[1:] + dmsp_fname2[kk] for kk in inst_ids[ss]} for ss in inst_ids.keys()} +remote_tags = {ss: {kk: supported_tags[ss][kk].format(file_type='hdf5') + for kk in inst_ids[ss]} for ss in inst_ids.keys()} -# madrigal tags +# Madrigal tags madrigal_inst_code = 8100 -madrigal_tag = {'f11': {'utd': 10241, '': 10111}, - 'f12': {'utd': 10242, '': 10112}, - 'f13': {'utd': 10243, '': 10113}, - 'f14': {'utd': 10244, '': 10114}, - 'f15': {'utd': 10245, '': 10115}, - 'f16': {'': 10116}, - 'f17': {'': 10117}, - 'f18': {'': 10118}, } +madrigal_tag = {'f11': {'utd': '10241', '': '10111'}, + 'f12': {'utd': '10242', '': '10112'}, + 'f13': {'utd': '10243', '': '10113'}, + 'f14': {'utd': '10244', '': '10114'}, + 'f15': {'utd': '10245', '': '10115'}, + 'f16': {'': '10116'}, + 'f17': {'': '10117'}, + 'f18': {'': '10118'}, } # ---------------------------------------------------------------------------- # Instrument test attributes -_test_dates = {'f11': {'utd': dt.datetime(1998, 1, 2)}, - 'f12': {'utd': dt.datetime(1998, 1, 2)}, - 'f13': {'utd': dt.datetime(1998, 1, 2)}, - 'f14': {'utd': dt.datetime(1998, 1, 2)}, - 'f15': {'utd': dt.datetime(2017, 12, 30)}} +_test_dates = { + 'f11': {tag: dt.datetime(1998, 1, 2) for tag in inst_ids['f11']}, + 'f12': {tag: dt.datetime(1998, 1, 2) for tag in inst_ids['f12']}, + 'f13': {tag: dt.datetime(1998, 1, 2) for tag in inst_ids['f13']}, + 'f14': {tag: dt.datetime(1998, 1, 2) for tag in inst_ids['f14']}, + 'f15': {tag: dt.datetime(2017, 12, 30) for tag in inst_ids['f15']}, + 'f16': {tag: dt.datetime(2009, 1, 1) for tag in inst_ids['f16']}, + 'f17': {tag: dt.datetime(2009, 1, 1) for tag in inst_ids['f17']}, + 'f18': {tag: dt.datetime(2017, 12, 30) for tag in inst_ids['f18']}} # ---------------------------------------------------------------------------- # Instrument methods @@ -181,8 +187,9 @@ def clean(self): # Set the list_remote_files routine list_remote_files = functools.partial(mad_meth.list_remote_files, - supported_tags=supported_tags, - inst_code=madrigal_inst_code) + inst_code=madrigal_inst_code, + kindats=madrigal_tag, + supported_tags=remote_tags) # Set the load routine load = mad_meth.load @@ -274,7 +281,7 @@ def download(date_array, tag='', inst_id='', data_path=None, user=None, """ mad_meth.download(date_array, inst_code=str(madrigal_inst_code), - kindat=str(madrigal_tag[inst_id][tag]), + kindat=madrigal_tag[inst_id][tag], data_path=data_path, user=user, password=password) return diff --git a/pysatMadrigal/instruments/gnss_tec.py b/pysatMadrigal/instruments/gnss_tec.py index 2174419..e12cc67 100644 --- a/pysatMadrigal/instruments/gnss_tec.py +++ b/pysatMadrigal/instruments/gnss_tec.py @@ -61,10 +61,12 @@ supported_tags = {ss: {'vtec': ''.join(['gps', dname, 'g', vname, ".{file_type}"])} for ss in inst_ids.keys()} +remote_tags = {ss: {kk: supported_tags[ss][kk].format(file_type='hdf5') + for kk in inst_ids[ss]} for ss in inst_ids.keys()} # madrigal tags madrigal_inst_code = 8000 -madrigal_tag = {'': {'vtec': 3500}} # , 'los': 3505}} +madrigal_tag = {'': {'vtec': '3500'}} # , 'los': '3505'}} # ---------------------------------------------------------------------------- # Instrument test attributes @@ -138,8 +140,9 @@ def clean(self): # support listing files currently available on remote server (Madrigal) list_remote_files = functools.partial(mad_meth.list_remote_files, - supported_tags=supported_tags, - inst_code=madrigal_inst_code) + supported_tags=remote_tags, + inst_code=madrigal_inst_code, + kindats=madrigal_tag) def list_files(tag=None, inst_id=None, data_path=None, format_str=None, @@ -236,7 +239,7 @@ def download(date_array, tag='', inst_id='', data_path=None, user=None, """ mad_meth.download(date_array, inst_code=str(madrigal_inst_code), - kindat=str(madrigal_tag[inst_id][tag]), + kindat=madrigal_tag[inst_id][tag], data_path=data_path, user=user, password=password, file_type=file_type, url=url) diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index 75e8b87..536dd60 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -66,11 +66,14 @@ 'oblique_rand': jro_fname1 + "?" + jro_fname2, 'oblique_long': jro_fname1 + "?" + jro_fname2} for ss in inst_ids.keys()} +remote_tags = {ss: {kk: supported_tags[ss][kk].format(file_type='hdf5') + for kk in inst_ids[ss]} for ss in inst_ids.keys()} # Madrigal tags madrigal_inst_code = 10 -madrigal_tag = {'': {'drifts': 1910, 'drifts_ave': 1911, 'oblique_stan': 1800, - 'oblique_rand': 1801, 'oblique_long': 1802}, } +madrigal_tag = {'': {'drifts': "1910", 'drifts_ave': "1911", + 'oblique_stan': "1800", 'oblique_rand': "1801", + 'oblique_long': "1802"}, } # ---------------------------------------------------------------------------- # Instrument test attributes @@ -165,8 +168,9 @@ def clean(self): # Set list_remote_files routine list_remote_files = functools.partial(mad_meth.list_remote_files, - supported_tags=supported_tags, - inst_code=madrigal_inst_code) + supported_tags=remote_tags, + inst_code=madrigal_inst_code, + kindats=madrigal_tag) def list_files(tag='', inst_id='', data_path=None, format_str=None, @@ -254,7 +258,7 @@ def download(date_array, tag='', inst_id='', data_path=None, user=None, """ mad_meth.download(date_array, inst_code=str(madrigal_inst_code), - kindat=str(madrigal_tag[inst_id][tag]), + kindat=madrigal_tag[inst_id][tag], data_path=data_path, user=user, password=password, file_type=file_type) diff --git a/pysatMadrigal/instruments/templates/madrigal_pandas.py b/pysatMadrigal/instruments/templates/madrigal_pandas.py index abd5bd9..b6ca401 100644 --- a/pysatMadrigal/instruments/templates/madrigal_pandas.py +++ b/pysatMadrigal/instruments/templates/madrigal_pandas.py @@ -10,15 +10,15 @@ Warnings -------- - All data downloaded under this general support is placed in the same - directory, pysat_data_dir/madrigal/pandas/. For technical reasons, - the file search algorithm for pysat's Madrigal support is set to permissive - defaults. Thus, all instrument files downloaded via this interface will be - picked up by the madrigal pandas pysat Instrument object unless the - file_format keyword is used at instantiation. +All data downloaded under this general support is placed in the same directory, +pysat_data_dir/madrigal/pandas/. For technical reasons, the file search +algorithm for pysat's Madrigal support is set to permissive defaults. Thus, all +instrument files downloaded via this interface will be picked up by the madrigal +pandas pysat Instrument object unless the file_format keyword is used at +instantiation. - Files can be safely downloaded without knowing the file_format keyword, - or equivalently, how Madrigal names the files. See `Examples` for more. +Files can be safely downloaded without knowing the file_format keyword, +or equivalently, how Madrigal names the files. See `Examples` for more. Properties ---------- @@ -27,7 +27,9 @@ name 'pandas' tag - '' + madrigal instrument code as an integer +inst_id + madrigal kindat as a string Examples -------- @@ -36,9 +38,8 @@ # for isolated use of a madrigal data set import pysat # download DMSP data from Madrigal - dmsp = pysat.Instrument('madrigal', 'pandas', - madrigal_code=8100, - madrigal_tag=10241) + dmsp = pysat.Instrument('madrigal', 'pandas', inst_code=8100, + kindat='10241') dmsp.download(dt.datetime(2017, 12, 30), dt.datetime(2017, 12, 31), user='Firstname+Lastname', password='email@address.com') dmsp.load(2017, 363) @@ -65,51 +66,53 @@ # https://docs.python.org/2/library/string.html # the complete instantiation for this instrument is - dmsp = pysat.Instrument('madrigal', 'pandas', - madrigal_code=8100, - madrigal_tag=10241, - file_format='dms_ut_{year:4d}{month:02d}{day:02d}_11.002.hdf5') + file_fmt = 'dms_ut_{year:4d}{month:02d}{day:02d}_11.002.hdf5' + dmsp = pysat.Instrument('madrigal', 'pandas', inst_code=8100, + kindat='10241', file_format=file_fmt) Note ---- - Please provide name and email when downloading data with this routine. +Please provide name and email when downloading data with this routine. """ import datetime as dt import functools -import logging -from pysat.instruments.methods import madrigal as mad_meth -from pysat.instruments.methods import nasa_cdaweb as cdw +from pysat.instruments.methods import general as ps_gen +from pysat import logger -logger = logging.getLogger(__name__) +from pysatMadrigal.instruments.methods import madrigal as mad_meth + +# ---------------------------------------------------------------------------- +# Instrument attributes platform = 'madrigal' name = 'pandas' -tags = {'': 'General Madrigal data access loaded into pysat via pandas.'} -inst_ids = {'': list(tags.keys())} -# need to sort out test day setting for unit testing -_test_dates = {'': {'': dt.datetime(2010, 1, 19)}} - -# need a way to get the filename strings for a particular instrument -# I've put in wildcards for now.... -######### -jro_fname1 = '*{year:4d}{month:02d}{day:02d}' -jro_fname2 = '.{version:03d}.hdf5' -supported_tags = {ss: {'': '*'.join((jro_fname1, jro_fname2))} - for ss in inst_ids.keys()} -list_files = functools.partial(cdw.list_files, - supported_tags=supported_tags) +tags = {self.kwargs['kindat']: 'General pysat Madrigal data access.'} +inst_ids = {self.kwargs['inst_code']: list(tags.keys())} pandas_format = True -load = mad_meth.load +# Local attributes +# +# Need a way to get the filename strings for a particular instrument unless +# wildcards start working +fname = '*{year:4d}{month:02d}{day:02d}*.{version:03d}.hdf5' +supported_tags = {ss: {tt: fname for tt in inst_ids[ss]} + for ss in inst_ids.keys()} +remote_tags = {ss: {kk: supported_tags[ss][kk].format(file_type='hdf5') + for kk in inst_ids[ss]} for ss in inst_ids.keys()} + +# ---------------------------------------------------------------------------- +# Instrument test attributes + +# Need to sort out test day setting for unit testing, maybe through a remote +# function +# _test_dates = {'': {'': dt.datetime(2010, 1, 19)}} -# support download routine -# real download attached during init -# however, pysat requires a method before we get there -download = mad_meth.download +# ---------------------------------------------------------------------------- +# Instrument methods def init(self): @@ -125,64 +128,13 @@ def init(self): """ logger.info(mad_meth.cedar_rules()) + self.acknowledgements = mad_meth.cedar_rules() + self.references = 'Please remember to cite the instrument articles.' - code = self.kwargs['madrigal_code'] - tag = self.kwargs['madrigal_tag'] - self._download_rtn = functools.partial(_general_download, - inst_code=str(code), - kindat=str(tag)) - return - - -def _general_download(date_array, tag='', inst_id='', data_path=None, user=None, - password=None, inst_code=None, kindat=None): - """Downloads data from Madrigal. + self.tag = self.kwargs['inst_code'] + self.inst_id = self.kwargs['kindat'] - Method will be partially set using functools.partial. Intended to - have the same call structure as normal instrument download routine. - Upon Instrument instantiation this routine will be set to - parameters specific to a Madrigal data set. It will then work like - a standard download call. - - Parameters - ---------- - date_array : array-like - list of datetimes to download data for. The sequence of dates need not - be contiguous. - tag : string - Tag identifier used for particular dataset. This input is provided by - pysat. (default='') - inst_id : string - Satellite ID string identifier used for particular dataset. This input - is provided by pysat. (default='') - data_path : string - Path to directory to download data to. (default=None) - user : string - User string input used for download. Provided by user and passed via - pysat. If an account is required for dowloads this routine here must - error if user not supplied. (default=None) - password : string - Password for data download. (default=None) - inst_code : int - Madrigal integer code used to identify platform (default=None) - kindat : int - Madrigal integer code used to identify data set (default=None) - - Notes - ----- - The user's names should be provided in field user. Ruby Payne-Scott should - be entered as Ruby+Payne-Scott - - The password field should be the user's email address. These parameters - are passed to Madrigal when downloading. - - The affiliation field is set to pysat to enable tracking of pysat - downloads. - - """ - - mad_meth.download(date_array, inst_code=inst_code, kindat=kindat, - data_path=data_path, user=user, password=password) + return def clean(self): @@ -202,3 +154,27 @@ def clean(self): logger.warning('Generalized Madrigal data support has no cleaning.') return + + +# ---------------------------------------------------------------------------- +# Instrument functions +# +# Use the default Madrigal and pysat methods + +# Set the list_remote_files routine +list_remote_files = functools.partial(mad_meth.list_remote_files, + inst_code=self.kwargs['inst_code'], + kindats=self.kwargs['kindat'], + supported_tags=remote_tags) + +# Set the load routine +load = mad_meth.load + +# Set the list routine +list_files = functools.partial(ps_gen.list_files, + supported_tags=supported_tags) + +# Set up the download routine +download = functools.partial(mad_meth.download, + inst_code=str(self.kwargs['inst_code']), + kindat=self.kwargs['kindat']) From 73d242569bc504a876bc839b4eeb1820fab35f66 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 21 Jan 2021 15:22:48 -0500 Subject: [PATCH 151/231] DOC: updated CHANGELOG Updated Changelog with all recent improvements. --- CHANGELOG.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e91e69a..ab08e08 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,13 +2,16 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). -## [0.?.?] - 2020-07-03 -- Added coords from pysat.utils +## [0.0.4] - TBD - Made changes to structure to comply with updates in pysat 3.0.0 +- Enhancements + - Added coords from pysat.utils + - Added Vertical TEC Instrument - Bug Fix - - Updated madrigal methods to simplify compound data types and enable - creation of netCDF4 files using `Instrument.to_netcdf4()`. - - Updated load for multiple files in pandas format + - Updated madrigal methods to simplify compound data types and enable + creation of netCDF4 files using `Instrument.to_netcdf4()`. + - Updated load for multiple files in pandas format + - Fixed remote listing routine to return filenames instead of experiments ## [0.0.3] - 2020-06-15 - pypi compatibility From 4148c5521f77b05f38505daec9931fb052c7018e Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 21 Jan 2021 15:25:40 -0500 Subject: [PATCH 152/231] ENH: added code of conduct Added pysat code of conduct. --- CODE_OF_CONDUCT.md | 75 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..db1f7f9 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,75 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, +body size, disability, ethnicity, gender identity and expression, level of +experience, nationality, personal appearance, race, religion, or sexual +identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an +appointed representative at an online or offline event. Representation of a +project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at pysat.developers@gmail.com. The +project team will review and investigate all complaints, and will respond in a +way that it deems appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an +incident. Further details of specific enforcement policies may be posted +separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 1.4, available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ From a6360f1ec118fc03981e7acb07129cffd1cd48aa Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 21 Jan 2021 15:26:06 -0500 Subject: [PATCH 153/231] ENH: added contributing guidelines Added guidelines for contributing to pysatMadrigal. --- CONTRIBUTING.md | 130 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..cf433ba --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,130 @@ +Contributing +============ + +Bug reports, feature suggestions and other contributions are greatly +appreciated! pysat and pysatMadrigal are community-driven projects that +welcome both feedback and contributions. + +Short version +------------- + +* Submit bug reports, feature requests, and questions at +`GitHub `_ +* Make pull requests to the ``develop`` branch + +Bug reports +----------- + +When `reporting a bug `_ +please include: + +* Your operating system name and version +* Any details about your local setup that might be helpful in troubleshooting +* Detailed steps to reproduce the bug + +Feature requests and feedback +----------------------------- + +The best way to send feedback is to file an issue at +`GitHub `_. + +If you are proposing a feature: + +* Explain in detail how it would work. +* Keep the scope as narrow as possible, to make it easier to implement. +* Remember that this is a volunteer-driven project, and that code contributions + are welcome :) + +Development +----------- + +To set up `pysatMadrigal` for local development: + +1. `Fork pysatMadrigal on GitHub `_. +2. Clone your fork locally:: + + git clone git@github.com:your_name_here/pysatMadrigal.git + +3. Create a branch for local development:: + + git checkout -b name-of-your-bugfix-or-feature + + Now you can make your changes locally. Tests for new instruments are + performed automatically. Tests for custom functions should be added to the + appropriately named file in ``pysatMadrigal/tests``. For example, + space weather methods should be named + ``pysatMadrigal/tests/test_methods_sw.py``. If no test file exists, + then you should create one. This testing uses pytest, which will run tests + on any python file in the test directory that starts with ``test``. Classes + must begin with ``Test``, and test methods must also begin with ``test``. + +4. When you're done making changes, run all the checks to ensure that nothing + is broken on your local system:: + + pytest -vs pysatMadrigal + +5. Update/add documentation (in ``docs``). Even if you don't think it's + relevant, check to see if any existing examples have changed. + +6. Add your name to the .zenodo.json file as an author + +7. Commit your changes and push your branch to GitHub:: + + git add . + git commit -m "Brief description of your changes" + git push origin name-of-your-bugfix-or-feature + +8. Submit a pull request through the GitHub website. Pull requests should be + made to the ``develop`` branch. + +Pull Request Guidelines +----------------------- + +If you need some code review or feedback while you're developing the code, just +make a pull request. Pull requests should be made to the ``develop`` branch. + +For merging, you should: + +1. Include an example for use +2. Add a note to ``CHANGELOG.md`` about the changes +3. Ensure that all checks passed (current checks include Travis-CI + and Coveralls) [1]_ + +.. [1] If you don't have all the necessary Python versions available locally or + have trouble building all the testing environments, you can rely on + Travis to run the tests for each change you add in the pull request. + Because testing here will delay tests by other developers, please ensure + that the code passes all tests on your local system first. + +Project Style Guidelines +------------------------ + +In general, pysat follows PEP8 and numpydoc guidelines. Pytest runs the unit +and integration tests, flake8 checks for style, and sphinx-build performs +documentation tests. However, there are certain additional style elements that +have been settled on to ensure the project maintains a consistent coding style. +These include: + +* Line breaks should occur before a binary operator (ignoring flake8 W503) +* Combine long strings using `join` +* Preferably break long lines on open parentheses rather than using `\` +* Use no more than 80 characters per line +* Avoid using Instrument class key attribute names as unrelated variable names: + `platform`, `name`, `tag`, and `inst_id` +* The pysat logger is imported into each sub-module and provides status updates + at the info and warning levels (as appropriate) +* Several dependent packages have common nicknames, including: + * `import datetime as dt` + * `import numpy as np` + * `import pandas as pds` + * `import xarray as xr` +* All classes should have `__repr__` and `__str__` functions +* Docstrings use `Note` instead of `Notes` +* Try to avoid creating a try/except statement where except passes +* Use setup and teardown in test classes +* Use pytest parametrize in test classes when appropriate +* Provide testing class methods with informative failure statements and + descriptive, one-line docstrings +* Block and inline comments should use proper English grammar and punctuation + with the exception of single sentences in a block, which may then ommit the + final period From 74f103da9cd19eda21a523bc480c93e61e140b5e Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 21 Jan 2021 15:32:04 -0500 Subject: [PATCH 154/231] ENH: created a .zenodo.json file Added a zenodo json file. --- .zenodo.json | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .zenodo.json diff --git a/.zenodo.json b/.zenodo.json new file mode 100644 index 0000000..19a67cb --- /dev/null +++ b/.zenodo.json @@ -0,0 +1,37 @@ +{ + "keywords": [ + "satellite", + "radar", + "Madrigal", + "DMSP", + "pysat", + "JRO", + "Jicamarca Radio Observatory", + "TEC", + "Total Electron Content", + "Ionosphere", + "Space Physics", + "Heliophysics" + ], + "creators": [ + { + "affiliation": "U.S. Naval Research Laboratory", + "name": "Angeline G. Burrell", + "orcid": "0000-0001-8875-9326" + }, + { + "affiliation": "Goddard Space Flight Center", + "name": "Jeff Klenzing", + "orcid": "0000-0001-8321-6074" + }, + { + "affiliation": "The University of Texas at Dallas", + "name": "Russell Stoneback", + "orcid": "0000-0001-7216-4336" + }, + { + "affiliation": "Predictive Science", + "name": "Asher Pembroke" + } + ] +} From bceb4309f50ca7cd31abbc06d2b1c3b565ae63ef Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 21 Jan 2021 15:32:37 -0500 Subject: [PATCH 155/231] BUG: fixed bug in setup configuration Fixed bug when setting options in the setup.cfg file. --- setup.cfg | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/setup.cfg b/setup.cfg index a162e68..4ffee39 100644 --- a/setup.cfg +++ b/setup.cfg @@ -35,19 +35,21 @@ license_file = LICENSE long_description = file: README.md long_description_content_type = text/markdown - [options] - python_requires = >= 3.5 - setup_requires = - setuptools >= 38.6 - pip >= 10 - include_package_data = True - zip_safe = False - packages = find: - install_requires = file: requirements.txt +[options] +python_requires = >= 3.5 +setup_requires = setuptools >= 38.6; pip >= 10 +include_package_data = True +zip_safe = False +packages = find: +install_requires = h5py + madrigalWeb + numpy + pandas + pysat + xarray [coverage:report] -omit = - */instruments/templates/ +omit = */instruments/templates/ [flake8] max-line-length = 80 From ba23390ba12cf33593de49685e439aa858cae68e Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 21 Jan 2021 15:36:58 -0500 Subject: [PATCH 156/231] ENH: added a pull request template Added a pull request template. --- .github/pull_request_template.md | 53 ++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 .github/pull_request_template.md diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..5fa8548 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,53 @@ +# Description + +Addresses # (issue) + +Please include a summary of the change and which issue is fixed. Please also +include relevant motivation and context. List any dependencies that are required +for this change. Please see ``CONTRIBUTING.md`` for more guidelines. + +# Type of change + +Please delete options that are not relevant. + +- Bug fix (non-breaking change which fixes an issue) +- New feature (non-breaking change which adds functionality or documentation) +- Breaking change (fix or feature that would cause existing functionality + to not work as expected) +- This change requires a documentation update + +# How Has This Been Tested? + +Please describe the tests that you ran to verify your changes. Provide +instructions so we can reproduce the problem and the solution. Including images +or test files is frequently very useful. Please also list any relevant details +for your test configuration. + +- Test A + +``` +Test B +``` + +## Test Configuration +* Operating system: Hal +* Version number: Python 3.X +* Any details about your local setup that are relevant + +# Checklist: + +- [ ] Make sure you are merging into the ``develop`` (not ``main``) branch +- [ ] My code follows the style guidelines of this project +- [ ] I have performed a self-review of my own code +- [ ] I have linted the files updated in this pull request +- [ ] I have commented my code, particularly in hard-to-understand areas +- [ ] I have made corresponding changes to the documentation +- [ ] My changes generate no new warnings +- [ ] I have added tests that prove my fix is effective or that my feature works +- [ ] New and existing unit tests pass locally with my changes +- [ ] Any dependent changes have been merged and published in downstream modules +- [ ] Add a note to ``CHANGELOG.md``, summarizing the changes + +If this is a release PR, replace the first item of the above checklist with the +release checklist on the pysat wiki: +https://github.com/pysat/pysat/wiki/Checklist-for-Release From 4e875073e0f5cfb786b8aa7d942830e914128ee5 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 21 Jan 2021 15:37:24 -0500 Subject: [PATCH 157/231] ENH: added issue templates Added issue templates for bugs, features, and questions. --- .github/ISSUE_TEMPLATE/bug_report.md | 29 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 27 +++++++++++++++++++++ .github/ISSUE_TEMPLATE/question.md | 19 +++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/ISSUE_TEMPLATE/question.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..a7f6ad6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,29 @@ +--- +name: Bug report +about: Create a report to report a problem that needs to be fixed +labels: bug +title: "BUG: " + +--- + +# Description +A clear and concise description of what the bug is, including a description +of what you expected the outcome to be. + +# To Reproduce this bug: +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +Consider including images or test files to help others reproduce the bug and +solve the problem. + +## Test configuration + - OS: [e.g. Hal] + - Version [e.g. Python 3.47] + - Other details about your setup that could be relevant + +# Additional context +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..d02da2e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,27 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: "ENH: " +labels: enhancement + +--- + +# Description +A clear and concise description of the new feature or behaviour you would like. + +## Potential impact + +- Is the feature related to an existing problem? +- How critical is this feature to your workflow? +- How wide of an impact to you anticipate this enhancement having? +- Would this break any existing functionality? + +## Potential solution(s) +A clear and concise description of what you want to happen. + +# Alternatives +A clear description of any alternative solutions or features you've considered. + +# Additional context +Add any other context or screenshots about the feature request here, potentially +including your operational configuration. diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md new file mode 100644 index 0000000..2073086 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question.md @@ -0,0 +1,19 @@ +--- +name: Question +about: A question about this project +title: "QUEST: " +labels: question + +--- + +# Description +A clear and concise summary of your query + +## Example code (optional) +If relevant, include sample code, images, or files so that others can understand +the full context of your question. + +## Configuration + - OS: [e.g. Hal] + - Version [e.g. Python 3.47] + - Other details about your setup that could be relevant From 6be936302b1de22f3c3aa37996f3395ba81c7740 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 21 Jan 2021 15:38:53 -0500 Subject: [PATCH 158/231] ENH: added manifest Added a file manifest. --- MANIFEST.in | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 MANIFEST.in diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..3d0abb0 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,14 @@ +include *.py +include *.f +include *.c +recursive-include pysatMadrigal *.py +include *.md +include *.txt +include description.txt +include LICENSE +include pysatMadrigal/version.txt +prune pysatMadrigal/tests +prune docs +prune demo +exclude *.pdf +exclude *.png From 62ea5e624010d8407c64cf126267fff6e7172b7d Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 21 Jan 2021 15:42:39 -0500 Subject: [PATCH 159/231] ENH: removed unneeded line Removed unneeded line from the manifest. --- MANIFEST.in | 1 - 1 file changed, 1 deletion(-) diff --git a/MANIFEST.in b/MANIFEST.in index 3d0abb0..d24537a 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -4,7 +4,6 @@ include *.c recursive-include pysatMadrigal *.py include *.md include *.txt -include description.txt include LICENSE include pysatMadrigal/version.txt prune pysatMadrigal/tests From feb34b0048dfd19ee9485f5c3d7b2acebad9df25 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 21 Jan 2021 15:43:18 -0500 Subject: [PATCH 160/231] ENH: reorganized testing requirements Renamed testing requirements files to better describe their contents. --- requirements.txt => conda_requirements.txt | 1 - test_requirements.txt => pip_requirements.txt | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) rename requirements.txt => conda_requirements.txt (75%) rename test_requirements.txt => pip_requirements.txt (88%) diff --git a/requirements.txt b/conda_requirements.txt similarity index 75% rename from requirements.txt rename to conda_requirements.txt index 27c3023..6a4dba0 100644 --- a/requirements.txt +++ b/conda_requirements.txt @@ -1,5 +1,4 @@ h5py -madrigalWeb numpy pandas pysat>=3.0 diff --git a/test_requirements.txt b/pip_requirements.txt similarity index 88% rename from test_requirements.txt rename to pip_requirements.txt index 02dae12..d103e68 100644 --- a/test_requirements.txt +++ b/pip_requirements.txt @@ -1,5 +1,6 @@ coveralls m2r2 +madrigalWeb numpydoc pytest-cov pytest-ordering From 0b92660786a3096d50e2d9f417b8353d469e5139 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 21 Jan 2021 15:43:36 -0500 Subject: [PATCH 161/231] ENH: updated to use requirements files Updated travis to use requirements files. --- .travis.yml | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6d5aede..2ac27fe 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,14 +34,10 @@ install: # Create conda test environment - conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION - conda activate test-environment - # Once pysat 3.0 is released, remove the custom pysat install and change - # this to: - # - while read requirement; do conda install --yes $requirement; done < requirements.txt - - conda install --yes h5py numpy pandas xarray - - pip install madrigalWeb - # Get latest coveralls from pip, not conda - - pip install -r test_requirements.txt - # Custom pysat install + - while read requirement; do conda install --yes $requirement; done < conda_requirements.txt + # Conda does not provide (the correct versions of) all packages + - pip install -r pip_requirements.txt + # Custom pysat install, no longer needed after 3.0 release - cd .. - git clone --single-branch --branch develop-3 https://github.com/pysat/pysat.git - cd pysat From 0f7b162b5ce760534b13bd4d06fa83936c0974a5 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Thu, 21 Jan 2021 16:05:48 -0500 Subject: [PATCH 162/231] STY: flake8 update Fixed flake8 issues, commenting out blocks that will take more work to make operational. --- .../instruments/templates/madrigal_pandas.py | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/pysatMadrigal/instruments/templates/madrigal_pandas.py b/pysatMadrigal/instruments/templates/madrigal_pandas.py index b6ca401..64b3dbe 100644 --- a/pysatMadrigal/instruments/templates/madrigal_pandas.py +++ b/pysatMadrigal/instruments/templates/madrigal_pandas.py @@ -76,7 +76,6 @@ """ -import datetime as dt import functools from pysat.instruments.methods import general as ps_gen @@ -89,8 +88,8 @@ platform = 'madrigal' name = 'pandas' -tags = {self.kwargs['kindat']: 'General pysat Madrigal data access.'} -inst_ids = {self.kwargs['inst_code']: list(tags.keys())} +tags = {'': 'General pysat Madrigal data access.'} +inst_ids = {'': list(tags.keys())} pandas_format = True @@ -131,8 +130,8 @@ def init(self): self.acknowledgements = mad_meth.cedar_rules() self.references = 'Please remember to cite the instrument articles.' - self.tag = self.kwargs['inst_code'] - self.inst_id = self.kwargs['kindat'] + self.inst_code = self.kwargs['inst_code'] + self.kindat = self.kwargs['kindat'] return @@ -162,10 +161,11 @@ def clean(self): # Use the default Madrigal and pysat methods # Set the list_remote_files routine -list_remote_files = functools.partial(mad_meth.list_remote_files, - inst_code=self.kwargs['inst_code'], - kindats=self.kwargs['kindat'], - supported_tags=remote_tags) +# Need to fix this +# list_remote_files = functools.partial(mad_meth.list_remote_files, +# inst_code=self.kwargs['inst_code'], +# kindats=self.kwargs['kindat'], +# supported_tags=remote_tags) # Set the load routine load = mad_meth.load @@ -175,6 +175,7 @@ def clean(self): supported_tags=supported_tags) # Set up the download routine -download = functools.partial(mad_meth.download, - inst_code=str(self.kwargs['inst_code']), - kindat=self.kwargs['kindat']) +# Needs to be fixed +# download = functools.partial(mad_meth.download, +# inst_code=str(self.kwargs['inst_code']), +# kindat=self.kwargs['kindat']) From 2e5319f50e1fed5f0bdb4f907fb661a21dff895f Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 25 Jan 2021 14:54:00 -0500 Subject: [PATCH 163/231] TST: remove override for remote_file_list tests --- pysatMadrigal/tests/test_instruments.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/pysatMadrigal/tests/test_instruments.py b/pysatMadrigal/tests/test_instruments.py index a3535b4..4acef59 100644 --- a/pysatMadrigal/tests/test_instruments.py +++ b/pysatMadrigal/tests/test_instruments.py @@ -47,11 +47,6 @@ instruments['no_download']) getattr(InstTestClass, method).pytestmark.append(mark) -# remote_file_list not functional in current code. Disabling for now -if 'test_remote_file_list' in method_list: - mark = pytest.mark.skip(reason="not currently implemented") - getattr(InstTestClass, 'test_remote_file_list').pytestmark.append(mark) - class TestInstruments(InstTestClass): def setup_class(self): From 5ed0b677dba0b80c4eaa34344eb15f3ea2782326 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Tue, 26 Jan 2021 16:41:48 -0500 Subject: [PATCH 164/231] BUG: good_exp check by date --- pysatMadrigal/instruments/methods/madrigal.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index c4736f6..74cf8da 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -491,14 +491,12 @@ def good_exp(exp, date_array=None): if date_array is None: gflag = True else: - exp_start = dt.datetime(exp.startyear, exp.startmonth, - exp.startday, exp.starthour, - exp.startmin, exp.startsec) - exp_end = dt.datetime(exp.endyear, exp.endmonth, exp.endday, - exp.endhour, exp.endmin, exp.endsec) + exp_start = dt.date(exp.startyear, exp.startmonth, + exp.startday) + exp_end = dt.date(exp.endyear, exp.endmonth, exp.endday) for date_val in date_array: - if date_val >= exp_start and date_val < exp_end: + if date_val.date() >= exp_start and date_val.date() < exp_end: gflag = True break From 564b86e5f3b5f18392da681b8e40684829a1097c Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Tue, 26 Jan 2021 16:47:02 -0500 Subject: [PATCH 165/231] STY: pysat file utils migration --- pysatMadrigal/instruments/methods/madrigal.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index 74cf8da..f0126b5 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -551,7 +551,7 @@ def list_remote_files(tag, inst_id, inst_code=None, kindats=None, user=None, Returns ------- pds.Series - A series of filenames, see `pysat._files.process_parsed_filenames` + A series of filenames, see `pysat.utils.files.process_parsed_filenames` for more information. Raises @@ -604,11 +604,13 @@ def list_remote_files(tag, inst_id, inst_code=None, kindats=None, user=None, # Parse these filenames to grab out the ones we want logger.info("Parsing filenames") - stored = pysat._files.parse_fixed_width_filenames(filenames, format_str) + stored = pysat.utils.files.parse_fixed_width_filenames(filenames, + format_str) # Process the parsed filenames and return a properly formatted Series logger.info("Processing filenames") - return pysat._files.process_parsed_filenames(stored, two_digit_year_break) + return pysat.utils.files.process_parsed_filenames(stored, + two_digit_year_break) def filter_data_single_date(inst): From 0152ba0d9eb60c3ae1184653f09084c19b5f3669 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 29 Jan 2021 08:26:39 -0500 Subject: [PATCH 166/231] STY: renamed `methods.madrigal` Renamed madrigal methods file to a name more appropriate for the current repository. --- pysatMadrigal/instruments/dmsp_ivm.py | 16 +++++++------- pysatMadrigal/instruments/gnss_tec.py | 19 ++++++++--------- pysatMadrigal/instruments/jro_isr.py | 21 +++++++++---------- .../methods/{madrigal.py => general.py} | 0 4 files changed, 27 insertions(+), 29 deletions(-) rename pysatMadrigal/instruments/methods/{madrigal.py => general.py} (100%) diff --git a/pysatMadrigal/instruments/dmsp_ivm.py b/pysatMadrigal/instruments/dmsp_ivm.py index 7eff11a..5301900 100644 --- a/pysatMadrigal/instruments/dmsp_ivm.py +++ b/pysatMadrigal/instruments/dmsp_ivm.py @@ -66,7 +66,7 @@ from pysat.instruments.methods import general as ps_gen from pysat import logger -from pysatMadrigal.instruments.methods import madrigal as mad_meth +from pysatMadrigal.instruments.methods import general # ---------------------------------------------------------------------------- # Instrument attributes @@ -130,8 +130,8 @@ def init(self): """ - logger.info(mad_meth.cedar_rules()) - self.acknowledgements = mad_meth.cedar_rules() + logger.info(general.cedar_rules()) + self.acknowledgements = general.cedar_rules() self.references = ' '.join(('F. J. Rich, Users Guide for the Topside', 'Ionospheric Plasma Monitor (SSIES,', 'SSIES-2 and SSIES-3) on Spacecraft of', @@ -186,13 +186,13 @@ def clean(self): # Use the default Madrigal and pysat methods # Set the list_remote_files routine -list_remote_files = functools.partial(mad_meth.list_remote_files, +list_remote_files = functools.partial(general.list_remote_files, inst_code=madrigal_inst_code, kindats=madrigal_tag, supported_tags=remote_tags) # Set the load routine -load = mad_meth.load +load = general.load def list_files(tag=None, inst_id=None, data_path=None, format_str=None, @@ -280,9 +280,9 @@ def download(date_array, tag='', inst_id='', data_path=None, user=None, downloads. """ - mad_meth.download(date_array, inst_code=str(madrigal_inst_code), - kindat=madrigal_tag[inst_id][tag], - data_path=data_path, user=user, password=password) + general.download(date_array, inst_code=str(madrigal_inst_code), + kindat=madrigal_tag[inst_id][tag], data_path=data_path, + user=user, password=password) return diff --git a/pysatMadrigal/instruments/gnss_tec.py b/pysatMadrigal/instruments/gnss_tec.py index e12cc67..1eac4a6 100644 --- a/pysatMadrigal/instruments/gnss_tec.py +++ b/pysatMadrigal/instruments/gnss_tec.py @@ -43,7 +43,7 @@ from pysat.instruments.methods import general as ps_gen from pysat import logger -from pysatMadrigal.instruments.methods import madrigal as mad_meth +from pysatMadrigal.instruments.methods import general # ---------------------------------------------------------------------------- # Instrument attributes @@ -107,7 +107,7 @@ def init(self): " (SONEL), RENAG : REseau NAtional GPS permanent, ", "and GeoNet—the official source of geological ", "hazard information for New Zealand.\n", - mad_meth.cedar_rules()]) + general.cedar_rules()]) logger.info(ackn_str) self.acknowledgements = ackn_str @@ -139,7 +139,7 @@ def clean(self): # Use the default Madrigal methods # support listing files currently available on remote server (Madrigal) -list_remote_files = functools.partial(mad_meth.list_remote_files, +list_remote_files = functools.partial(general.list_remote_files, supported_tags=remote_tags, inst_code=madrigal_inst_code, kindats=madrigal_tag) @@ -238,10 +238,9 @@ def download(date_array, tag='', inst_id='', data_path=None, user=None, downloads. """ - mad_meth.download(date_array, inst_code=str(madrigal_inst_code), - kindat=madrigal_tag[inst_id][tag], - data_path=data_path, user=user, password=password, - file_type=file_type, url=url) + general.download(date_array, inst_code=str(madrigal_inst_code), + kindat=madrigal_tag[inst_id][tag], data_path=data_path, + user=user, password=password, file_type=file_type, url=url) return @@ -280,9 +279,9 @@ def load(fnames, tag=None, inst_id=None, file_type='netCDF4'): 'sec', 'ut1_unix', 'ut2_unix', 'recno']}} # Load the specified data - data, meta = mad_meth.load(fnames, tag, inst_id, - xarray_coords=xcoords[tag], - file_type=file_type) + data, meta = general.load(fnames, tag, inst_id, + xarray_coords=xcoords[tag], + file_type=file_type) # Squeeze the kindat and kinst 'coordinates', but keep them as floats squeeze_dims = np.array(['kindat', 'kinst']) diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index 536dd60..4418954 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -41,7 +41,7 @@ from pysat.instruments.methods import general as ps_gen from pysat import logger -from pysatMadrigal.instruments.methods import madrigal as mad_meth +from pysatMadrigal.instruments.methods import general from pysatMadrigal.utils import coords # ---------------------------------------------------------------------------- @@ -93,7 +93,7 @@ # To ensure this function is always applied first, we set the filter # function as the default function for (JRO). # Default function is run first by the nanokernel on every load call. -preprocess = mad_meth.filter_data_single_date +preprocess = general.filter_data_single_date def init(self): @@ -104,7 +104,7 @@ def init(self): "the Instituto Geofisico del Peru operated", "with support from the NSF AGS-1433968", "through Cornell University.\n", - mad_meth.cedar_rules()]) + general.cedar_rules()]) logger.info(ackn_str) self.acknowledgements = ackn_str @@ -167,7 +167,7 @@ def clean(self): # Use the default Madrigal and pysat methods # Set list_remote_files routine -list_remote_files = functools.partial(mad_meth.list_remote_files, +list_remote_files = functools.partial(general.list_remote_files, supported_tags=remote_tags, inst_code=madrigal_inst_code, kindats=madrigal_tag) @@ -257,10 +257,9 @@ def download(date_array, tag='', inst_id='', data_path=None, user=None, downloads. """ - mad_meth.download(date_array, inst_code=str(madrigal_inst_code), - kindat=madrigal_tag[inst_id][tag], - data_path=data_path, user=user, password=password, - file_type=file_type) + general.download(date_array, inst_code=str(madrigal_inst_code), + kindat=madrigal_tag[inst_id][tag], data_path=data_path, + user=user, password=password, file_type=file_type) def load(fnames, tag=None, inst_id=None, file_type='hdf5'): @@ -333,9 +332,9 @@ def load(fnames, tag=None, inst_id=None, file_type='hdf5'): 'ut1_unix', 'ut2_unix', 'recno']}} # Load the specified data - data, meta = mad_meth.load(fnames, tag, inst_id, - xarray_coords=xcoords[tag], - file_type=file_type) + data, meta = general.load(fnames, tag, inst_id, + xarray_coords=xcoords[tag], + file_type=file_type) # Squeeze the kindat and kinst 'coordinates', but keep them as floats data = data.squeeze(dim=['kindat', 'kinst', 'gdlatr', 'gdlonr']) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/general.py similarity index 100% rename from pysatMadrigal/instruments/methods/madrigal.py rename to pysatMadrigal/instruments/methods/general.py From a82b87fb7bb686debc20b5f5fece35687edc5f63 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 29 Jan 2021 08:27:25 -0500 Subject: [PATCH 167/231] STY: updated template file Updated the import names in the template file. --- .../instruments/templates/madrigal_pandas.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pysatMadrigal/instruments/templates/madrigal_pandas.py b/pysatMadrigal/instruments/templates/madrigal_pandas.py index 64b3dbe..6881da5 100644 --- a/pysatMadrigal/instruments/templates/madrigal_pandas.py +++ b/pysatMadrigal/instruments/templates/madrigal_pandas.py @@ -81,7 +81,7 @@ from pysat.instruments.methods import general as ps_gen from pysat import logger -from pysatMadrigal.instruments.methods import madrigal as mad_meth +from pysatMadrigal.instruments.methods import general # ---------------------------------------------------------------------------- # Instrument attributes @@ -126,8 +126,8 @@ def init(self): """ - logger.info(mad_meth.cedar_rules()) - self.acknowledgements = mad_meth.cedar_rules() + logger.info(general.cedar_rules()) + self.acknowledgements = general.cedar_rules() self.references = 'Please remember to cite the instrument articles.' self.inst_code = self.kwargs['inst_code'] @@ -162,13 +162,13 @@ def clean(self): # Set the list_remote_files routine # Need to fix this -# list_remote_files = functools.partial(mad_meth.list_remote_files, +# list_remote_files = functools.partial(general.list_remote_files, # inst_code=self.kwargs['inst_code'], # kindats=self.kwargs['kindat'], # supported_tags=remote_tags) # Set the load routine -load = mad_meth.load +load = general.load # Set the list routine list_files = functools.partial(ps_gen.list_files, @@ -176,6 +176,6 @@ def clean(self): # Set up the download routine # Needs to be fixed -# download = functools.partial(mad_meth.download, +# download = functools.partial(general.download, # inst_code=str(self.kwargs['inst_code']), # kindat=self.kwargs['kindat']) From 3bdfde27cdf43d98e32b078a500add6edcd361aa Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 29 Jan 2021 08:34:16 -0500 Subject: [PATCH 168/231] STY: extracted DMSP IVM methods Extracted methods from DMSP into methods file. --- pysatMadrigal/instruments/dmsp_ivm.py | 187 +-------------------- pysatMadrigal/instruments/methods/dmsp.py | 192 ++++++++++++++++++++++ 2 files changed, 197 insertions(+), 182 deletions(-) create mode 100644 pysatMadrigal/instruments/methods/dmsp.py diff --git a/pysatMadrigal/instruments/dmsp_ivm.py b/pysatMadrigal/instruments/dmsp_ivm.py index 5301900..5c0b1df 100644 --- a/pysatMadrigal/instruments/dmsp_ivm.py +++ b/pysatMadrigal/instruments/dmsp_ivm.py @@ -1,3 +1,8 @@ +#!/usr/bin/env python +# Full license can be found in License.md +# Full author list can be found in .zenodo.json file +# DOI:10.5281/zenodo.3824979 +# ---------------------------------------------------------------------------- # -*- coding: utf-8 -*- """Supports the Ion Velocity Meter (IVM) onboard the Defense Meteorological Satellite Program (DMSP). @@ -45,23 +50,11 @@ Code development supported by NSF grant 1259508 -Custom Functions ----------------- -add_drift_unit_vectors - Add unit vectors for the satellite velocity -add_drifts_polar_cap_x_y - Add polar cap drifts in cartesian coordinates -smooth_ram_drifts - Smooth the ram drifts using a rolling mean -update_DMSP_ephemeris - Updates DMSP instrument data with DMSP ephemeris - """ import datetime as dt import functools import numpy as np -import pandas as pds from pysat.instruments.methods import general as ps_gen from pysat import logger @@ -284,173 +277,3 @@ def download(date_array, tag='', inst_id='', data_path=None, user=None, kindat=madrigal_tag[inst_id][tag], data_path=data_path, user=user, password=password) return - - -# ---------------------------------------------------------------------------- -# Local functions - - -def smooth_ram_drifts(inst, rpa_flag_key=None, rpa_vel_key='ion_v_sat_for'): - """ Smooth the ram drifts using a rolling mean - - Parameters - ---------- - inst : pysat.Instrument - DMSP IVM Instrument object - rpa_flag_key : string or NoneType - RPA flag key, if None will not select any data. The UTD RPA flag key - is 'rpa_flag_ut' (default=None) - rpa_vel_key : string - RPA velocity data key (default='ion_v_sat_for') - - """ - - if rpa_flag_key in list(inst.data.keys()): - rpa_idx, = np.where(inst[rpa_flag_key] == 1) - else: - rpa_idx = list() - - inst[rpa_idx, rpa_vel_key] = \ - inst[rpa_idx, rpa_vel_key].rolling(15, 5).mean() - return - - -def update_DMSP_ephemeris(inst, ephem=None): - """Updates DMSP instrument data with DMSP ephemeris - - Parameters - ---------- - inst : pysat.Instrument - DMSP IVM Instrumet object - ephem : pysat.Instrument or NoneType - DMSP IVM_EPHEM instrument object - - """ - - # Ensure the right ephemera is loaded - if ephem is None: - logger.info('No ephemera provided for {:}'.format(inst.date)) - inst.data = pds.DataFrame(None) - return - - if ephem.inst_id != inst.inst_id: - raise ValueError('ephemera provided for the wrong satellite') - - if ephem.date != inst.date: - ephem.load(date=inst.date, verifyPad=True) - - if ephem.data.empty: - logger.info('unable to load ephemera for {:}'.format(inst.date)) - inst.data = pds.DataFrame(None) - return - - # Reindex the ephemeris data - ephem.data = ephem.data.reindex(index=inst.data.index, method='pad') - ephem.data = ephem.data.interpolate('time') - - # Update the DMSP instrument - inst['mlt'] = ephem['SC_AACGM_LTIME'] - inst['mlat'] = ephem['SC_AACGM_LAT'] - - return - - -def add_drift_unit_vectors(inst): - """ Add unit vectors for the satellite velocity - - Parameters - ---------- - inst : pysat.Instrument - DMSP IVM Instrument object - - Note - ---- - Assumes that the RAM vector is pointed perfectly forward - - """ - # Calculate theta and R in radians from MLT and MLat, respectively - theta = inst['mlt'] * (np.pi / 12.0) - np.pi * 0.5 - r = np.radians(90.0 - inst['mlat'].abs()) - - # Determine the positions in cartesian coordinates - pos_x = r * np.cos(theta) - pos_y = r * np.sin(theta) - diff_x = pos_x.diff() - diff_y = pos_y.diff() - norm = np.sqrt(diff_x**2 + diff_y**2) - - # Calculate the RAM and cross-track unit vectors in cartesian and polar - # coordinates. - # x points along MLT = 6, y points along MLT = 12 - inst['unit_ram_x'] = diff_x / norm - inst['unit_ram_y'] = diff_y / norm - inst['unit_cross_x'] = -diff_y / norm - inst['unit_cross_y'] = diff_x / norm - idx, = np.where(inst['mlat'] < 0) - inst.data.loc[inst.index[idx], 'unit_cross_x'] *= -1.0 - inst.data.loc[inst.index[idx], 'unit_cross_y'] *= -1.0 - - inst['unit_ram_r'] = (inst['unit_ram_x'] * np.cos(theta) - + inst['unit_ram_y'] * np.sin(theta)) - inst['unit_ram_theta'] = (-inst['unit_ram_x'] * np.sin(theta) - + inst['unit_ram_y'] * np.cos(theta)) - - inst['unit_cross_r'] = (inst['unit_cross_x'] * np.cos(theta) - + inst['unit_cross_y'] * np.sin(theta)) - inst['unit_cross_theta'] = (-inst['unit_cross_x'] * np.sin(theta) - + inst['unit_cross_y'] * np.cos(theta)) - return - - -def add_drifts_polar_cap_x_y(inst, rpa_flag_key=None, - rpa_vel_key='ion_v_sat_for', - cross_vel_key='ion_v_sat_left'): - """ Add polar cap drifts in cartesian coordinates - - Parameters - ---------- - inst : pysat.Instrument - DMSP IVM Instrument object - rpa_flag_key : string or NoneType - RPA flag key, if None will not select any data. The UTD RPA flag key - is 'rpa_flag_ut' (default=None) - rpa_vel_key : string - RPA velocity data key (default='ion_v_sat_for') - cross_vel_key : string - Cross-track velocity data key (default='ion_v_sat_left') - - Notes - ------- - Polar cap drifts assume there is no vertical component to the X-Y - velocities. - - Adds 'ion_vel_pc_x', 'ion_vel_pc_y', and 'partial'. The last data key - indicates whether RPA data was available (False) or not (True). - - """ - - # Get the good RPA data, if available - if rpa_flag_key in list(inst.data.keys()): - rpa_idx, = np.where(inst[rpa_flag_key] != 1) - else: - rpa_idx = list() - - # Use the cartesian unit vectors to calculate the desired velocities - iv_x = inst[rpa_vel_key].copy() - iv_x[rpa_idx] = 0.0 - - # Check to see if unit vectors have been created - if 'unit_ram_y' not in list(inst.data.keys()): - add_drift_unit_vectors(inst) - - # Calculate the velocities - inst['ion_vel_pc_x'] = (iv_x * inst['unit_ram_x'] - + inst[cross_vel_key] * inst['unit_cross_x']) - inst['ion_vel_pc_y'] = (iv_x * inst['unit_ram_y'] - + inst[cross_vel_key] * inst['unit_cross_y']) - - # Flag the velocities as full (False) or partial (True) - inst['partial'] = False - inst[rpa_idx, 'partial'] = True - - return diff --git a/pysatMadrigal/instruments/methods/dmsp.py b/pysatMadrigal/instruments/methods/dmsp.py new file mode 100644 index 0000000..192ba2b --- /dev/null +++ b/pysatMadrigal/instruments/methods/dmsp.py @@ -0,0 +1,192 @@ +#!/usr/bin/env python +# Full license can be found in License.md +# Full author list can be found in .zenodo.json file +# DOI:10.5281/zenodo.3824979 +# ---------------------------------------------------------------------------- +# -*- coding: utf-8 -*- +"""Methods supporting the Defense Meteorological Satellite Program (DMSP) +platform + +Functions +--------- +add_drift_unit_vectors + Add unit vectors for the satellite velocity +add_drifts_polar_cap_x_y + Add polar cap drifts in cartesian coordinates +smooth_ram_drifts + Smooth the ram drifts using a rolling mean +update_DMSP_ephemeris + Updates DMSP instrument data with DMSP ephemeris + +""" + +import numpy as np +import pandas as pds + +from pysat import logger + + +def smooth_ram_drifts(inst, rpa_flag_key=None, rpa_vel_key='ion_v_sat_for'): + """ Smooth the ram drifts using a rolling mean + + Parameters + ---------- + inst : pysat.Instrument + DMSP IVM Instrument object + rpa_flag_key : string or NoneType + RPA flag key, if None will not select any data. The UTD RPA flag key + is 'rpa_flag_ut' (default=None) + rpa_vel_key : string + RPA velocity data key (default='ion_v_sat_for') + + """ + + if rpa_flag_key in list(inst.data.keys()): + rpa_idx, = np.where(inst[rpa_flag_key] == 1) + else: + rpa_idx = list() + + inst[rpa_idx, rpa_vel_key] = inst[rpa_idx, + rpa_vel_key].rolling(15, 5).mean() + return + + +def update_DMSP_ephemeris(inst, ephem=None): + """Updates DMSP instrument data with DMSP ephemeris + + Parameters + ---------- + inst : pysat.Instrument + DMSP IVM Instrumet object + ephem : pysat.Instrument or NoneType + DMSP IVM_EPHEM instrument object + + """ + + # Ensure the right ephemera is loaded + if ephem is None: + logger.info('No ephemera provided for {:}'.format(inst.date)) + inst.data = pds.DataFrame(None) + return + + if ephem.inst_id != inst.inst_id: + raise ValueError('ephemera provided for the wrong satellite') + + if ephem.date != inst.date: + ephem.load(date=inst.date, verifyPad=True) + + if ephem.data.empty: + logger.info('unable to load ephemera for {:}'.format(inst.date)) + inst.data = pds.DataFrame(None) + return + + # Reindex the ephemeris data + ephem.data = ephem.data.reindex(index=inst.data.index, method='pad') + ephem.data = ephem.data.interpolate('time') + + # Update the DMSP instrument + inst['mlt'] = ephem['SC_AACGM_LTIME'] + inst['mlat'] = ephem['SC_AACGM_LAT'] + + return + + +def add_drift_unit_vectors(inst): + """ Add unit vectors for the satellite velocity + + Parameters + ---------- + inst : pysat.Instrument + DMSP IVM Instrument object + + Note + ---- + Assumes that the RAM vector is pointed perfectly forward + + """ + # Calculate theta and R in radians from MLT and MLat, respectively + theta = inst['mlt'] * (np.pi / 12.0) - np.pi * 0.5 + r = np.radians(90.0 - inst['mlat'].abs()) + + # Determine the positions in cartesian coordinates + pos_x = r * np.cos(theta) + pos_y = r * np.sin(theta) + diff_x = pos_x.diff() + diff_y = pos_y.diff() + norm = np.sqrt(diff_x**2 + diff_y**2) + + # Calculate the RAM and cross-track unit vectors in cartesian and polar + # coordinates. + # x points along MLT = 6, y points along MLT = 12 + inst['unit_ram_x'] = diff_x / norm + inst['unit_ram_y'] = diff_y / norm + inst['unit_cross_x'] = -diff_y / norm + inst['unit_cross_y'] = diff_x / norm + idx, = np.where(inst['mlat'] < 0) + inst.data.loc[inst.index[idx], 'unit_cross_x'] *= -1.0 + inst.data.loc[inst.index[idx], 'unit_cross_y'] *= -1.0 + + inst['unit_ram_r'] = (inst['unit_ram_x'] * np.cos(theta) + + inst['unit_ram_y'] * np.sin(theta)) + inst['unit_ram_theta'] = (-inst['unit_ram_x'] * np.sin(theta) + + inst['unit_ram_y'] * np.cos(theta)) + + inst['unit_cross_r'] = (inst['unit_cross_x'] * np.cos(theta) + + inst['unit_cross_y'] * np.sin(theta)) + inst['unit_cross_theta'] = (-inst['unit_cross_x'] * np.sin(theta) + + inst['unit_cross_y'] * np.cos(theta)) + return + + +def add_drifts_polar_cap_x_y(inst, rpa_flag_key=None, + rpa_vel_key='ion_v_sat_for', + cross_vel_key='ion_v_sat_left'): + """ Add polar cap drifts in cartesian coordinates + + Parameters + ---------- + inst : pysat.Instrument + DMSP IVM Instrument object + rpa_flag_key : string or NoneType + RPA flag key, if None will not select any data. The UTD RPA flag key + is 'rpa_flag_ut' (default=None) + rpa_vel_key : string + RPA velocity data key (default='ion_v_sat_for') + cross_vel_key : string + Cross-track velocity data key (default='ion_v_sat_left') + + Note + ---- + Polar cap drifts assume there is no vertical component to the X-Y + velocities. + + Adds 'ion_vel_pc_x', 'ion_vel_pc_y', and 'partial'. The last data key + indicates whether RPA data was available (False) or not (True). + + """ + + # Get the good RPA data, if available + if rpa_flag_key in list(inst.data.keys()): + rpa_idx, = np.where(inst[rpa_flag_key] != 1) + else: + rpa_idx = list() + + # Use the cartesian unit vectors to calculate the desired velocities + iv_x = inst[rpa_vel_key].copy() + iv_x[rpa_idx] = 0.0 + + # Check to see if unit vectors have been created + if 'unit_ram_y' not in list(inst.data.keys()): + add_drift_unit_vectors(inst) + + # Calculate the velocities + inst['ion_vel_pc_x'] = (iv_x * inst['unit_ram_x'] + + inst[cross_vel_key] * inst['unit_cross_x']) + inst['ion_vel_pc_y'] = (iv_x * inst['unit_ram_y'] + + inst[cross_vel_key] * inst['unit_cross_y']) + + # Flag the velocities as full (False) or partial (True) + inst['partial'] = False + inst[rpa_idx, 'partial'] = True + + return From 335e797bfe491b6ce120c3a96dc23365d6d05794 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 29 Jan 2021 08:49:16 -0500 Subject: [PATCH 169/231] STY: extracted JRO methods Extracted JRO methods into a methods file. --- pysatMadrigal/instruments/jro_isr.py | 84 +---------------- pysatMadrigal/instruments/methods/jro.py | 113 +++++++++++++++++++++++ 2 files changed, 116 insertions(+), 81 deletions(-) create mode 100644 pysatMadrigal/instruments/methods/jro.py diff --git a/pysatMadrigal/instruments/jro_isr.py b/pysatMadrigal/instruments/jro_isr.py index 4418954..720a886 100644 --- a/pysatMadrigal/instruments/jro_isr.py +++ b/pysatMadrigal/instruments/jro_isr.py @@ -41,8 +41,7 @@ from pysat.instruments.methods import general as ps_gen from pysat import logger -from pysatMadrigal.instruments.methods import general -from pysatMadrigal.utils import coords +from pysatMadrigal.instruments.methods import general, jro # ---------------------------------------------------------------------------- # Instrument attributes @@ -100,15 +99,11 @@ def init(self): """Initializes the Instrument object with values specific to JRO ISR """ - ackn_str = ' '.join(["The Jicamarca Radio Observatory is a facility of", - "the Instituto Geofisico del Peru operated", - "with support from the NSF AGS-1433968", - "through Cornell University.\n", - general.cedar_rules()]) + ackn_str = '\n'.join([jro.acknowledgements(), general.cedar_rules()]) logger.info(ackn_str) self.acknowledgements = ackn_str - self.references = "Depends on the radar experiment; contact PI" + self.references = jro.references() return @@ -340,76 +335,3 @@ def load(fnames, tag=None, inst_id=None, file_type='hdf5'): data = data.squeeze(dim=['kindat', 'kinst', 'gdlatr', 'gdlonr']) return data, meta - - -# ---------------------------------------------------------------------------- -# Local functions - - -def calc_measurement_loc(inst): - """ Calculate the instrument measurement location in geographic coordinates - - Parameters - ---------- - inst : pysat.Instrument - JRO ISR Instrument object - - Note - ---- - Adds 'gdlat#', 'gdlon#' to the instrument, for all directions that - have azimuth and elevation keys that match the format 'eldir#' and 'azdir#' - - """ - - az_keys = [kk[5:] for kk in list(inst.data.keys()) - if kk.find('azdir') == 0] - el_keys = [kk[5:] for kk in list(inst.data.keys()) - if kk.find('eldir') == 0] - good_dir = list() - - for i, kk in enumerate(az_keys): - if kk in el_keys: - try: - good_dir.append(int(kk)) - except ValueError: - logger.warning("unknown direction number [{:}]".format(kk)) - - # Calculate the geodetic latitude and longitude for each direction - if len(good_dir) == 0: - raise ValueError("No matching azimuth and elevation data included") - - for dd in good_dir: - # Format the direction location keys - az_key = 'azdir{:d}'.format(dd) - el_key = 'eldir{:d}'.format(dd) - lat_key = 'gdlat{:d}'.format(dd) - lon_key = 'gdlon{:d}'.format(dd) - # JRO is located 520 m above sea level (jro.igp.gob.pe./english/) - # Also, altitude has already been calculated - gdaltr = np.ones(shape=inst['gdlonr'].shape) * 0.52 - gdlat, gdlon, _ = coords.local_horizontal_to_global_geo(inst[az_key], - inst[el_key], - inst['range'], - inst['gdlatr'], - inst['gdlonr'], - gdaltr, - geodetic=True) - - # Assigning as data, to ensure that the number of coordinates match - # the number of data dimensions - inst.data = inst.data.assign({lat_key: gdlat, lon_key: gdlon}) - - # Add metadata for the new data values - bm_label = "Beam {:d} ".format(dd) - inst.meta[lat_key] = {inst.meta.labels.units: 'degrees', - inst.meta.labels.name: bm_label + 'latitude', - inst.meta.labels.desc: bm_label + 'latitude', - inst.meta.labels.min_val: -90.0, - inst.meta.labels.max_val: 90.0, - inst.meta.labels.fill_val: np.nan} - inst.meta[lon_key] = {inst.meta.labels.units: 'degrees', - inst.meta.labels.name: bm_label + 'longitude', - inst.meta.labels.desc: bm_label + 'longitude', - inst.meta.labels.fill_val: np.nan} - - return diff --git a/pysatMadrigal/instruments/methods/jro.py b/pysatMadrigal/instruments/methods/jro.py new file mode 100644 index 0000000..98802df --- /dev/null +++ b/pysatMadrigal/instruments/methods/jro.py @@ -0,0 +1,113 @@ +#!/usr/bin/env python +# Full license can be found in License.md +# Full author list can be found in .zenodo.json file +# DOI:10.5281/zenodo.3824979 +# ---------------------------------------------------------------------------- +# -*- coding: utf-8 -*- +"""Methods supporting the Jicamarca Radio Observatory (JRO) platform +""" + +import numpy as np + +from pysat import logger + +from pysatMadrigal.utils import coords + + +def acknowledgements(): + """Provides acknowlegements for the JRO instruments and experiments + + Returns + ------- + ackn : str + String providing acknowledgement text for studies using JRO data + + """ + ackn = ' '.join(["The Jicamarca Radio Observatory is a facility of the", + "Instituto Geofisico del Peru operated with support from", + "the NSF AGS-1433968 through Cornell University."]) + + return ackn + + +def references(): + """Provides references for the JRO instruments and experiments + + Returns + ------- + refs : str + String providing reference guidenance for the JRO experiments + + """ + + refs = "Depends on the radar experiment; contact PI" + return refs + + +def calc_measurement_loc(inst): + """ Calculate the instrument measurement location in geographic coordinates + + Parameters + ---------- + inst : pysat.Instrument + JRO ISR Instrument object + + Note + ---- + Adds 'gdlat#', 'gdlon#' to the instrument, for all directions that + have azimuth and elevation keys that match the format 'eldir#' and 'azdir#' + + """ + + az_keys = [kk[5:] for kk in list(inst.data.keys()) + if kk.find('azdir') == 0] + el_keys = [kk[5:] for kk in list(inst.data.keys()) + if kk.find('eldir') == 0] + good_dir = list() + + for i, kk in enumerate(az_keys): + if kk in el_keys: + try: + good_dir.append(int(kk)) + except ValueError: + logger.warning("unknown direction number [{:}]".format(kk)) + + # Calculate the geodetic latitude and longitude for each direction + if len(good_dir) == 0: + raise ValueError("No matching azimuth and elevation data included") + + for dd in good_dir: + # Format the direction location keys + az_key = 'azdir{:d}'.format(dd) + el_key = 'eldir{:d}'.format(dd) + lat_key = 'gdlat{:d}'.format(dd) + lon_key = 'gdlon{:d}'.format(dd) + # JRO is located 520 m above sea level (jro.igp.gob.pe./english/) + # Also, altitude has already been calculated + gdaltr = np.ones(shape=inst['gdlonr'].shape) * 0.52 + gdlat, gdlon, _ = coords.local_horizontal_to_global_geo(inst[az_key], + inst[el_key], + inst['range'], + inst['gdlatr'], + inst['gdlonr'], + gdaltr, + geodetic=True) + + # Assigning as data, to ensure that the number of coordinates match + # the number of data dimensions + inst.data = inst.data.assign({lat_key: gdlat, lon_key: gdlon}) + + # Add metadata for the new data values + bm_label = "Beam {:d} ".format(dd) + inst.meta[lat_key] = {inst.meta.labels.units: 'degrees', + inst.meta.labels.name: bm_label + 'latitude', + inst.meta.labels.desc: bm_label + 'latitude', + inst.meta.labels.min_val: -90.0, + inst.meta.labels.max_val: 90.0, + inst.meta.labels.fill_val: np.nan} + inst.meta[lon_key] = {inst.meta.labels.units: 'degrees', + inst.meta.labels.name: bm_label + 'longitude', + inst.meta.labels.desc: bm_label + 'longitude', + inst.meta.labels.fill_val: np.nan} + + return From 8057ea85266addd6f15e61e02f1f641f319ff86f Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 29 Jan 2021 08:49:42 -0500 Subject: [PATCH 170/231] ENH: added DMSP reference method Added a reference method for the DMSP platform. --- pysatMadrigal/instruments/dmsp_ivm.py | 9 ++---- pysatMadrigal/instruments/methods/dmsp.py | 36 ++++++++++++++++------- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/pysatMadrigal/instruments/dmsp_ivm.py b/pysatMadrigal/instruments/dmsp_ivm.py index 5c0b1df..69b05fe 100644 --- a/pysatMadrigal/instruments/dmsp_ivm.py +++ b/pysatMadrigal/instruments/dmsp_ivm.py @@ -59,7 +59,7 @@ from pysat.instruments.methods import general as ps_gen from pysat import logger -from pysatMadrigal.instruments.methods import general +from pysatMadrigal.instruments.methods import general, dmsp # ---------------------------------------------------------------------------- # Instrument attributes @@ -125,12 +125,7 @@ def init(self): logger.info(general.cedar_rules()) self.acknowledgements = general.cedar_rules() - self.references = ' '.join(('F. J. Rich, Users Guide for the Topside', - 'Ionospheric Plasma Monitor (SSIES,', - 'SSIES-2 and SSIES-3) on Spacecraft of', - 'the Defense Meteorological Satellite', - 'Program (Air Force Phillips Laboratory,', - 'Hanscom AFB, MA, 1994), Vol. 1, p. 25.')) + self.references = dmsp.references(self.name) return diff --git a/pysatMadrigal/instruments/methods/dmsp.py b/pysatMadrigal/instruments/methods/dmsp.py index 192ba2b..ee15793 100644 --- a/pysatMadrigal/instruments/methods/dmsp.py +++ b/pysatMadrigal/instruments/methods/dmsp.py @@ -7,17 +7,6 @@ """Methods supporting the Defense Meteorological Satellite Program (DMSP) platform -Functions ---------- -add_drift_unit_vectors - Add unit vectors for the satellite velocity -add_drifts_polar_cap_x_y - Add polar cap drifts in cartesian coordinates -smooth_ram_drifts - Smooth the ram drifts using a rolling mean -update_DMSP_ephemeris - Updates DMSP instrument data with DMSP ephemeris - """ import numpy as np @@ -26,6 +15,31 @@ from pysat import logger +def references(name): + """Provides references for the DMSP instruments and experiments + + Parameters + ---------- + name : str + Instrument name + + Returns + ------- + refs : str + String providing reference guidenance for the DMSP data + + """ + + refs = {'ivm': ' '.join(('F. J. Rich, Users Guide for the Topside', + 'Ionospheric Plasma Monitor (SSIES, SSIES-2 and', + 'SSIES-3) on Spacecraft of the Defense', + 'Meteorological Satellite Program (Air Force', + 'Phillips Laboratory, Hanscom AFB, MA, 1994),', + 'Vol. 1, p. 25.'))} + + return refs[name] + + def smooth_ram_drifts(inst, rpa_flag_key=None, rpa_vel_key='ion_v_sat_for'): """ Smooth the ram drifts using a rolling mean From f32724db59f9b5bd23b4bb42cb9e282a506232f7 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 29 Jan 2021 08:58:13 -0500 Subject: [PATCH 171/231] STY: extracted GNSS methods Extracted the GNSS methods. --- pysatMadrigal/instruments/gnss_tec.py | 32 ++-------- pysatMadrigal/instruments/methods/gnss.py | 74 +++++++++++++++++++++++ 2 files changed, 79 insertions(+), 27 deletions(-) create mode 100644 pysatMadrigal/instruments/methods/gnss.py diff --git a/pysatMadrigal/instruments/gnss_tec.py b/pysatMadrigal/instruments/gnss_tec.py index 1eac4a6..488f232 100644 --- a/pysatMadrigal/instruments/gnss_tec.py +++ b/pysatMadrigal/instruments/gnss_tec.py @@ -32,7 +32,7 @@ Note ---- - Please provide name and email when downloading data with this routine. +Please provide name and email when downloading data with this routine. """ @@ -43,7 +43,7 @@ from pysat.instruments.methods import general as ps_gen from pysat import logger -from pysatMadrigal.instruments.methods import general +from pysatMadrigal.instruments.methods import general, gnss # ---------------------------------------------------------------------------- # Instrument attributes @@ -84,34 +84,12 @@ def init(self): """ - ackn_str = ''.join(["GPS TEC data products and access through the ", - "Madrigal distributed data system are provided to ", - "the community by the Massachusetts Institute of ", - "Technology under support from U.S. National Science", - " Foundation grant AGS-1242204. Data for the TEC ", - "processing is provided by the following ", - "organizations: UNAVCO, Scripps Orbit and Permanent", - " Array Center, Institut Geographique National, ", - "France, International GNSS Service, The Crustal ", - "Dynamics Data Information System (CDDIS), National ", - "Geodetic Survey, Instituto Brasileiro de Geografia", - "e Estatística, RAMSAC CORS of Instituto Geográfico", - " Nacional del la República Agentina, Arecibo ", - "Observatory, Low-Latitude Ionospheric Sensor ", - "Network (LISN), Topcon Positioning Systems, Inc., ", - "Canadian High Arctic Ionospheric Network, ", - "Institute of Geology and Geophysics, Chinese ", - "Academy of Sciences, China Meterorology ", - "Administration, Centro di Ricerche Sismogiche, ", - "Système d’Observation du Niveau des Eaux Littorales", - " (SONEL), RENAG : REseau NAtional GPS permanent, ", - "and GeoNet—the official source of geological ", - "hazard information for New Zealand.\n", - general.cedar_rules()]) + ackn_str = '\n'.join([gnss.acknowledgements(self.name), + general.cedar_rules()]) logger.info(ackn_str) self.acknowledgements = ackn_str - self.references = "Rideout and Coster (2006) doi:10.1007/s10291-006-0029-5" + self.references = gnss.references(self.name, self.tag) return diff --git a/pysatMadrigal/instruments/methods/gnss.py b/pysatMadrigal/instruments/methods/gnss.py new file mode 100644 index 0000000..3e2315b --- /dev/null +++ b/pysatMadrigal/instruments/methods/gnss.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python +# Full license can be found in License.md +# Full author list can be found in .zenodo.json file +# DOI:10.5281/zenodo.3824979 +# ---------------------------------------------------------------------------- +# -*- coding: utf-8 -*- +"""Methods supporting the Global Navigation Satellite System platform +""" + + +def acknowledgements(name): + """Provide the acknowledgements for different GNSS instruments + + Parameters + ---------- + name : str + Instrument name + + Returns + ------- + ackn : str + Acknowledgement information to provide in studies using this data + + """ + + ackn = {'tec': ''.join(["GPS TEC data products and access through the ", + "Madrigal distributed data system are provided to ", + "the community by the Massachusetts Institute of ", + "Technology under support from U.S. National ", + "Science Foundation grant AGS-1242204. Data for ", + "the TEC processing is provided by the following ", + "organizations: UNAVCO, Scripps Orbit and ", + "Permanent Array Center, Institut Geographique ", + "National, France, International GNSS Service, The", + " Crustal Dynamics Data Information System ", + "(CDDIS), National Geodetic Survey, Instituto ", + "Brasileiro de Geografiae Estatística, RAMSAC CORS", + " of Instituto Geográfico Nacional del la ", + "República Agentina, Arecibo Observatory, ", + "Low-Latitude Ionospheric Sensor Network (LISN), ", + "Topcon Positioning Systems, Inc., Canadian High ", + "Arctic Ionospheric Network, Institute of Geology", + " and Geophysics, Chinese Academy of Sciences, ", + "China Meterorology Administration, Centro di ", + "Niveau des Eaux Littorales Ricerche Sismogiche, ", + "Système d’Observation du (SONEL), RENAG : ", + "REseau NAtional GPS permanent, and GeoNet—the ", + "official source of geological hazard information", + "for New Zealand."])} + + return ackn[name] + + +def references(name, tag): + """Provides suggested references for the specified data set + + Parameters + ---------- + name : str + Instrument name + tag : str + Instrument tag + + Returns + ------- + refs : str + Suggested Instrument reference(s) + + """ + + refs = {'tec': + {'vtec': "Rideout and Coster (2006) doi:10.1007/s10291-006-0029-5"}} + + return refs[name][tag] From 44d9a8f4bb398a47b0d11c42fe145385fbe34f3f Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 29 Jan 2021 09:00:18 -0500 Subject: [PATCH 172/231] MAINT: fixed line length Fixed the length of a long line. --- pysatMadrigal/instruments/methods/gnss.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pysatMadrigal/instruments/methods/gnss.py b/pysatMadrigal/instruments/methods/gnss.py index 3e2315b..1e95f38 100644 --- a/pysatMadrigal/instruments/methods/gnss.py +++ b/pysatMadrigal/instruments/methods/gnss.py @@ -34,8 +34,8 @@ def acknowledgements(name): "National, France, International GNSS Service, The", " Crustal Dynamics Data Information System ", "(CDDIS), National Geodetic Survey, Instituto ", - "Brasileiro de Geografiae Estatística, RAMSAC CORS", - " of Instituto Geográfico Nacional del la ", + "Brasileiro de Geografiae Estatística, RAMSAC ", + "CORS of Instituto Geográfico Nacional del la ", "República Agentina, Arecibo Observatory, ", "Low-Latitude Ionospheric Sensor Network (LISN), ", "Topcon Positioning Systems, Inc., Canadian High ", From d173a2e6f535c926ee1264441ca34f355b20a1a8 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 29 Jan 2021 09:00:34 -0500 Subject: [PATCH 173/231] ENH: updated init file Updated init to import new methods. --- pysatMadrigal/instruments/methods/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pysatMadrigal/instruments/methods/__init__.py b/pysatMadrigal/instruments/methods/__init__.py index f9df482..9554193 100644 --- a/pysatMadrigal/instruments/methods/__init__.py +++ b/pysatMadrigal/instruments/methods/__init__.py @@ -1 +1,2 @@ -from pysatMadrigal.instruments.methods import madrigal # noqa F401 +from pysatMadrigal.instruments.methods import dmsp, general # noqa F401 +from pysatMadrigal.instruments.methods import gnss, jro # noqa F401 From 65b34d4cdac25344bec8bf65fe8629102a39adb5 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 29 Jan 2021 09:04:13 -0500 Subject: [PATCH 174/231] DOC: updated changelog Added a description of the changes to the changelog. --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab08e08..f3634d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ This project adheres to [Semantic Versioning](http://semver.org/). ## [0.0.4] - TBD - Made changes to structure to comply with updates in pysat 3.0.0 +- Deprecations + - Restructed Instrument methods, moving `madrigal` to `general` and extracting + local methods from the instrument modules to platform-specific method files - Enhancements - Added coords from pysat.utils - Added Vertical TEC Instrument From ea9c999d609a713a8f52961f663eb845c97a5eef Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Fri, 29 Jan 2021 09:09:14 -0500 Subject: [PATCH 175/231] STY: updated general methods unit tests Updated the general methods unit test by renaming the file and fixing the import. --- .../{test_general_methods.py => test_methods_general.py} | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) rename pysatMadrigal/tests/{test_general_methods.py => test_methods_general.py} (84%) diff --git a/pysatMadrigal/tests/test_general_methods.py b/pysatMadrigal/tests/test_methods_general.py similarity index 84% rename from pysatMadrigal/tests/test_general_methods.py rename to pysatMadrigal/tests/test_methods_general.py index d432c12..88fde64 100644 --- a/pysatMadrigal/tests/test_general_methods.py +++ b/pysatMadrigal/tests/test_methods_general.py @@ -1,5 +1,6 @@ import pytest -from pysatMadrigal.instruments.methods import madrigal as pm_meth + +from pysatMadrigal.instruments.methods import general class TestBasic(): @@ -21,7 +22,7 @@ def test_check_madrigal_params_no_input(self, del_val): self.kwargs[del_val] = None with pytest.raises(ValueError): - pm_meth._check_madrigal_params(**self.kwargs) + general._check_madrigal_params(**self.kwargs) @pytest.mark.parametrize("del_val", ['user', 'password']) @@ -30,4 +31,4 @@ def test_check_madrigal_params_bad_input(self, del_val): self.kwargs[del_val] = 17 with pytest.raises(ValueError): - pm_meth._check_madrigal_params(**self.kwargs) + general._check_madrigal_params(**self.kwargs) From 847a3aefab21f38e02d641c53eb2c782880f4149 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Fri, 29 Jan 2021 11:41:10 -0500 Subject: [PATCH 176/231] BUG: find single day in remote_file_list --- pysatMadrigal/instruments/methods/madrigal.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pysatMadrigal/instruments/methods/madrigal.py b/pysatMadrigal/instruments/methods/madrigal.py index f0126b5..29b9de0 100644 --- a/pysatMadrigal/instruments/methods/madrigal.py +++ b/pysatMadrigal/instruments/methods/madrigal.py @@ -436,14 +436,13 @@ def get_remote_filenames(inst_code=None, kindat=None, user=None, date_array)) start = date_array.min() stop = date_array.max() - if start == stop: - stop += dt.timedelta(days=1) - + if start == stop: + stop += dt.timedelta(days=1) # open connection to Madrigal if web_data is None: web_data = madrigalWeb.MadrigalData(url) - # get list of experiments for instrument from 1900 till now + # get list of experiments for instrument from in desired range exp_list = web_data.getExperiments(inst_code, start.year, start.month, start.day, start.hour, start.minute, start.second, stop.year, stop.month, @@ -493,10 +492,11 @@ def good_exp(exp, date_array=None): else: exp_start = dt.date(exp.startyear, exp.startmonth, exp.startday) - exp_end = dt.date(exp.endyear, exp.endmonth, exp.endday) + exp_end = (dt.date(exp.endyear, exp.endmonth, exp.endday) + + dt.timedelta(days=1)) for date_val in date_array: - if date_val.date() >= exp_start and date_val.date() < exp_end: + if date_val.date() >= exp_start and date_val.date() <= exp_end: gflag = True break From 68ccc5a6045502c0171bfed302b3e45f74d5073c Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Fri, 29 Jan 2021 14:30:57 -0500 Subject: [PATCH 177/231] DOC: add comment --- pysatMadrigal/instruments/methods/general.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pysatMadrigal/instruments/methods/general.py b/pysatMadrigal/instruments/methods/general.py index 29b9de0..12bc0ea 100644 --- a/pysatMadrigal/instruments/methods/general.py +++ b/pysatMadrigal/instruments/methods/general.py @@ -436,6 +436,7 @@ def get_remote_filenames(inst_code=None, kindat=None, user=None, date_array)) start = date_array.min() stop = date_array.max() + # if start and stop are identical, increment if start == stop: stop += dt.timedelta(days=1) # open connection to Madrigal From d0b56caca9b7ffff063574cf7114f280802e1a63 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Fri, 29 Jan 2021 17:18:55 -0500 Subject: [PATCH 178/231] STY: flake8 --- pysatMadrigal/instruments/methods/general.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysatMadrigal/instruments/methods/general.py b/pysatMadrigal/instruments/methods/general.py index 12bc0ea..a09f006 100644 --- a/pysatMadrigal/instruments/methods/general.py +++ b/pysatMadrigal/instruments/methods/general.py @@ -436,7 +436,7 @@ def get_remote_filenames(inst_code=None, kindat=None, user=None, date_array)) start = date_array.min() stop = date_array.max() - # if start and stop are identical, increment + # if start and stop are identical, increment if start == stop: stop += dt.timedelta(days=1) # open connection to Madrigal From 34abc6646caeeaa3b4c8a4a4b9fba86b8370ff12 Mon Sep 17 00:00:00 2001 From: Angeline Burrell Date: Mon, 1 Feb 2021 13:23:47 -0500 Subject: [PATCH 179/231] DOC: added documentation Added readthedocs style documentation. --- docs/Makefile | 20 ++++ docs/citing.rst | 40 +++++++ docs/conf.py | 190 +++++++++++++++++++++++++++++++++ docs/develop_guide.rst | 6 ++ docs/examples.rst | 8 ++ docs/examples/ex_init.rst | 73 +++++++++++++ docs/figures/pysatMadrigal.png | Bin 0 -> 3156166 bytes docs/history.rst | 2 + docs/index.rst | 29 +++++ docs/installation.rst | 53 +++++++++ docs/methods.rst | 44 ++++++++ docs/overview.rst | 11 ++ docs/supported_instruments.rst | 33 ++++++ 13 files changed, 509 insertions(+) create mode 100644 docs/Makefile create mode 100644 docs/citing.rst create mode 100644 docs/conf.py create mode 100644 docs/develop_guide.rst create mode 100644 docs/examples.rst create mode 100644 docs/examples/ex_init.rst create mode 100644 docs/figures/pysatMadrigal.png create mode 100644 docs/history.rst create mode 100644 docs/index.rst create mode 100644 docs/installation.rst create mode 100644 docs/methods.rst create mode 100644 docs/overview.rst create mode 100644 docs/supported_instruments.rst diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..5c4c3b2 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = python -msphinx +SPHINXPROJ = pysatSpaceWeather +SOURCEDIR = . +BUILDDIR = .build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/citing.rst b/docs/citing.rst new file mode 100644 index 0000000..3e97310 --- /dev/null +++ b/docs/citing.rst @@ -0,0 +1,40 @@ +Citation Guidelines +=================== + +When publishing work that uses pysatMadrigal, please cite the package and +any package it depends on that plays an important role in your analysis. +Specifying which version of pysatMadrigal used will also improve the +reproducibility of your presented results. + +pysatMadrigal +------------- + +* Burrell, A. G., et al. (2020). + pysat/pysatMadrigal (Version 0.0.3). Zenodo. + doi:10.5281/zenodo.3824979. + +.. code-block:: latex + + @Misc{pysatMadrigal, + author = {Burrell, A. G. and Klenzing, J. H. and Stoneback, R. + and Pembroke, A.}, + title = {pysat/pysatMadrigal}, + year = {2020}, + date = {2020-05-13}, + url = {https://github.com/pysat/pysatMadrigal}, + doi = {10.5281/zenodo.3824979}, + publisher = {Zenodo}, + version = {v0.0.3}, + } + +MadrigalWeb +----------- + +pysatMadrigal uses `MadrigalWeb `_ to +access the Madrigal database. This package is described in the following +journal article. + +* Burrell A. G., et al. (2018). Snakes on a Spaceship - An Overview of Python in + Heliophysics. Journal of Geophysical Research: Space Physics, 123, + doi:10.1029/2018ja025877. + diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 0000000..4bff398 --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,190 @@ +# -*- coding: utf-8 -*- +# +# pysatMadrigal documentation build configuration file, created by +# sphinx-quickstart on Wed Jul 5 16:25:26 2017. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import os +import sys +sys.path.insert(0, os.path.abspath('..')) + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = ['sphinx.ext.autodoc', + 'sphinx.ext.intersphinx', + 'sphinx.ext.todo', + 'sphinx.ext.coverage', + 'sphinx.ext.mathjax', + 'sphinx.ext.ifconfig', + 'sphinx.ext.viewcode', + 'sphinx.ext.githubpages', + 'numpydoc', + 'm2r2' +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['.templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The main toctree document (using required variable name). +master_doc = 'index' + +# General information about the project. +project = u'pysatMadrigal' +copyright = u'2020, Angeline G Burrell, Jeffrey Klenzing, Russell Stoneback' +author = u'Angeline G Burrell, Jeffrey Klenzing, Russell Stoneback, Asher Pembroke' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = u'0.0.2' +# The full version, including alpha/beta/rc tags. +release = u'0.0.2-alpha' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This patterns also effect to html_static_path and html_extra_path +exclude_patterns = ['.build', 'Thumbs.db', '.DS_Store'] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = True + + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'alabaster' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +# html_theme_options = {} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +#html_static_path = ['.static'] + + +# -- Options for HTMLHelp output ------------------------------------------ + +# Output file base name for HTML help builder. +htmlhelp_basename = 'pysatMadrigaldoc' + + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'pysatMadrigal.tex', u'pysatMadrigal Documentation', + u'Angeline G Burrell, Jeffrey Klenzing, and Russell Stoneback', 'manual'), +] + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'pysatMadrigal', u'pysatMadrigal Documentation', + [author], 1) +] + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'pysatMadrigal', u'pysatMadrigal Documentation', + author, 'pysatMadrigal', + 'Tools for accessing and analyzing data from the Madrigal database', + 'Space Physics'), +] + + + +# -- Options for Epub output ---------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project +epub_author = author +epub_publisher = author +epub_copyright = copyright + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +# +# epub_identifier = '' + +# A unique identification for the text. +# +# epub_uid = '' + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + + + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = {'https://docs.python.org/': None} diff --git a/docs/develop_guide.rst b/docs/develop_guide.rst new file mode 100644 index 0000000..54c0a3c --- /dev/null +++ b/docs/develop_guide.rst @@ -0,0 +1,6 @@ +Guide for Developers +==================== + +.. toctree:: + ../code_of_conduct.md + ../contributing.md diff --git a/docs/examples.rst b/docs/examples.rst new file mode 100644 index 0000000..6144edc --- /dev/null +++ b/docs/examples.rst @@ -0,0 +1,8 @@ +Examples +======== + +Here are some examples that demonstrate how to use various pysatSpaceWeather +tools + +.. toctree:: + examples/ex_init.rst diff --git a/docs/examples/ex_init.rst b/docs/examples/ex_init.rst new file mode 100644 index 0000000..163d386 --- /dev/null +++ b/docs/examples/ex_init.rst @@ -0,0 +1,73 @@ +Loading DMSP IVM +================ + +pysatMadrigal uses `pysat `_ to download, load, +and provide an analysis framework for data sets archived at the Madrigal +database. As specified in the +`pysat tutorial `_, +data may be loaded using the following commands. Defense Meteorological +Satellite Program (DMSP) Ion Velocity Meter (IVM) data is used as an example. + +:: + + + import datetime as dt + import pysat + import pysatMadrigal as py_mad + + stime = dt.datetime(2012, 5, 14) + ivm = pysat.Instrument(inst_module=py_mad.instruments.dmsp_ivm, + tag='utd', inst_id='f15', update_files=True) + ivm.download(start=stime, user="Name+Surname", password="email@org.inst") + ivm.load(date=stime) + print(ivm) + + +The output includes a day of data with UTDallas quality flags from the F15 +spacecraft (as implied by the `tag` and `inst_id`), for the specified date. +At the time of publication this produces the output shown below (the index +header has been added here for clarity). + +:: + + pysat Instrument object + ----------------------- + Platform: 'dmsp' + Name: 'ivm' + Tag: 'utd' + Instrument id: 'f15' + + Data Processing + --------------- + Cleaning Level: 'clean' + Data Padding: None + Keyword Arguments Passed to load: {'xarray_coords': [], 'file_type': 'hdf5'} + Keyword Arguments Passed to list_remote_files: {'user': None, 'password': None, 'url': 'http://cedar.openmadrigal.org', 'two_digit_year_break': None} + Custom Functions: 0 applied + + Local File Statistics + --------------------- + Number of files: 1 + Date Range: 31 December 2014 --- 1 January 2015 + + Loaded Data Statistics + ---------------------- + Date: 31 December 2014 + DOY: 365 + Time range: 31 December 2014 00:00:04 --- 31 December 2014 23:18:20 + Number of Times: 4811 + Number of variables: 30 + + Variable Names: + year month day + ... + rms_x sigma_vy sigma_vz + + pysat Meta object + ----------------- + Tracking 7 metadata values + Metadata for 30 standard variables + Metadata for 0 ND variables + + + diff --git a/docs/figures/pysatMadrigal.png b/docs/figures/pysatMadrigal.png new file mode 100644 index 0000000000000000000000000000000000000000..e0df67038d38cf538e0384e07a8fe86a8438df9e GIT binary patch literal 3156166 zcmZ^}2UJtp*EX(WVH6}fNKr~u6jYQ@q=!U@Q7k}49Yv)?2#C@my`-rKQ7I9F6az#= zMTZi4C!t6}kBZVEKmwsd5+H?;{QbS}`<3;r^}lP~bmMzxlTehe_%&ff%-m>L4#Rvb~3ccm%V2wZq z7vGBZ45XmkX!`_Q37;9#$N*4O^J@IT_edbUUIhlW1127w|XA`Bx;4Uxe< zAY&^lE0B>1$i(FIFUIMRsK8K<$kTx#y8o@@f9d(lI|LE@;9=+kWZ);27OM#)@!M}|CkM#c<;Qv44e{_LC|Cz4;Yx@3sZT<`WwK$O7V9@_wXvl8B z`IE#gTh4B|^w+t6BDbPPccr>sDw-B{c`4tZsOxKAQk-kJXm2w=)@VbCbI>~>-6F@s zOaI;Ry}9ddBfe>2C~HI)E5*rJ@{M^IbaOR^Kh>EA#7cP#AVe=AcVIRpYo~<_ zATWSUlS$_BQZAER<;d;LgXP<&Y1s_PrCexLA+rZb+pJ{coPdPvC*Obezyi+vog0BY zxDnzn4=cusc=G_$ay}=!vgMJSJs|UFHkGY)-d7sWo7g;)z95q^mZ4HBEAay_oJ{QV z_Z6eRt&Rv7oWB-|+fr4)2rry?Dy=Y4oy=S5t4bSLrpc+1w9Pe8{DGY==os}l2-V~q zT2vfl>qYBWCY$zySRU`M+{~PQJMuc8vszK+Se4G(n^^^_+G*b3f;>h0a?4#Eksyae{rD&dd(ybUZ++8HGcL*_-}9I9nbCcz5s;Pmo+MnutrZHC9|O=> z?qyb)x3y#~bk$lyIqkn(3?Sf4E+f&h=Jk|))ac++0mNiMentvHxMa(v0s%j~A%S2d z6JgMiSEF2jo{%}dh9bn>cmke8_3z=7i%$aDed3oN7CcTw_?q-NnDF0Vsf$6TA^K|O zDKPTbd?)Ww8)(cRty9Y{(w?-!bcpHHl6z!G36QUs*WL&nH>!IJ!>sC(vc4MTdA+P%cX`s4WC+n5tU+fvQHf`;HP$4L z2{;vGKbzkhL&Qpp1t5Rx=?G(=(bTF{cYCoXXz9uYhzDj!u(zR%_JjgtYD{&%$@S6x z+G?PN3Hh|7)vU1Tb81N1$Tev0CDT((lk)17XS}Vki7o(+x=#vj*!XopuLg>J2MeMA472;}OI8NIk2bW>l zHY%xibzxq-Y(D*Ywj^0wEEiX}55!#6d4V#HL&maC3?8mq*LUI;4{p7;V6?C+m_4#0 zE@KP&yh~y`6~MQo*Y|3QgTn)H#@U#~>21nbjae)Z4?g+KU)E;#m&IltlFl1ESM2uZ zb0To%rF9M88_P_?b(aZ#w<+2;(HPI)|!F?<|ypv1P`AC=I@|IeRE1Xox-HQIALqqx-<7r5UTa5 z@F@G?z@=rBHU`0i1{+!ZanPSlN^`bxPj8Xk0~biIu}@6ItH2FcM7t;z{o-dzCUL9n z5aTRj^W|y2i0zJ$84I&l1ruB{ZV=qt1Tx2cIkbWd+S#X&s7F2UNm(dvLDj_x0(4L&AnpwteFmz1k=S7#4pMNU} zUe^b)DX7LN*h%aV>ZOgv_rrP92yq9H_tq1d&}q+SBA$-5MpvidZSZLpVAK<>mn^ea z%Vqc)E=rHV)U6W=8OAyv!gsx4{wZX z8`NAaC9`@oM>k&D{}~=IPQ^r*k#S=f7pJ?@Gf|!-wAk68b!sqH28VOCE^@>M&Kzr6 zvMJr7hC`-WURc3Hr>z}GXtbmVc=~MreOdu5%|<3rRjx_&Se>v~rt@0ZKr~glxr~E1 zkawmzS?RhY6lZZ?JnoX%So*)v^=AUg7ZuxTVX{SboaAv6(`)7{VP>QxJRB?E%>FjD ze8>^9bZ~)jyJ|WODYed=Sga6w-IdCu1FUgt3LHDOVK|)DX+Z$;x7umW`dqqmv-vgSXv|F$XRE>mdr!VAicA3L4Rpc6I9b9bJ*eWCHUTz{Y=*h(kP z^`ho_**48wJoS|m^|?CS|KXR@YW+_7C}BqHB^d!)kRf=g{3ID5eQjsW;jM{3V1hXpoOfy|VN)_ZMcyMDhhBm^ys+}x zI1$kg5K4W>=X#=sB8^{cER0H0^tV@`Q}bB&3S4_xCi7|(>4RRyT!>s98TaBbwLCX=#eEb`PSL>1NDt#WFaQq;cXC4R<;GZA`N zG-+W{v$pTbd{?N!I+XEi&+iAf4E^?}i{9^ule*0zmC91&_l|MK{bM!w(Hgq6APWX~Y0WE^H9(GD1|s-sowH4j}}q16{Q ziIY#&4AIM{@?EXWg*!0|f-8qwhyQ#G%QiGgS`{c>X?K>6dPR(fI&B(VKsBfEo@3;v zIkLB;#3A%u$~B#XOtM9XI1iQz8C-2)iFIgE-U+9oCj(u4-4UjjC%yFIo^y)fg4!(< zpi#19-k~(qf27xv++(ge-}#J!^z-yj$j&T1?F@u;iRS93FQ{?bZtFm@_Kl_K#uS4t z4qS&wGvX?^O$^{2n?>94G1$}9$I>w z#vI$Arz-ho-6!s{u;JBOMS1p~8x&FZ#2^h{@VObRNJSIqD#6Ea>C0|S0z8o$VwHnj z$N-raNs%SJJOFA_;Fs7jdToijua~}YhC#ztf9#H~+ z$FjdpI6BBz@LZ`Y561*I#=x^@b6PMI1Qq;XDo(h@B*lnpxYsKA24W-L)r#ewyK8(|wx!`k^Qy2`{}F$kzYiIZ6tLvJv=8X?}Ep09?CC0EA)r-T2Ei0!R7(UA%y1e4^*Kk+wh;( zi4X1}j!2BQBRKj+rFdAD5Js%)kLU#^YunU$)<+8M_Vgx=mjeO~r?pJq0D1LnOK`Nf zC{RlV=8{T^`o~a^ES=!qs7Y3Qd7ahnG~j&aMLr-4i9`iYYAtO29zys!O|%}>4-`M* zYUv?4f!bq1zYRNX#{zOkGUe-}G$pSwS!hUw#VN{~BLLDBFI;yup?3`KG`DyOrSy0QohFta@wvi>D>yCk?a60rcLR}5Swv)3Ls3wFKS`0NljN7`!q7*BbU0%{vLz)( z6~r3|^4g)7Ai5?pMoN>ybf90C<<6;{J;5npu@Rrcj&hw%KgZbCkn)pdzI zqz{HOXBfTqtNi%~n#=)Vw74&_miZ=8-g>JXF>NQERb=gux z(&?1!N?S(FS)GA78Aq4$2>&GnP>D>eGY*m|bCsi2Yhk!LhLk;nVtcIb53i83; zK<#w(R!B3$Z$2sKMAD)SmC^4JFcM-L4pgf_yvUm7+2JBLiWTSv&f-SrFX}%eU&p{D zwq9U2YsvI$r7TZFHLFs0{#I5te%y-^UOB$fjp-o>N=Gf9ATWy+eM^hWw-S(A^Znqr z5-xhhd*QI8C+FSY{GV%uc;S8TyH0ZEZN{*A|9JP@oeY=&{2ac3f^a-$;W+Vp((_nM z^bmAOj2Ma$KL`aAtQX#Ec zg}RXHBZP(T89?9%v8j%eak70VhZ#xDZ#P@!+)c-sWmS0Jm5KzN4gN!8Z)k|L1X18S z_kI+dB}BwSlZ)3pLWb^B4(Ij2WK({814}4>hr9U9N7zl?L?6^g{y1Ndi-Myc2vu@f6phE7)~M?Zb4S>tO|(SeK{?AePa3RP-o!4YR4{j zk^jj$g+fYITyv*RR^7dND}ODg^$Hrp3|72&x@S=+om=-VrJ*jEvyIj>1-`>Rw608c ziS2KwtYICCy07-snbM{_>B%&cR|L+Nv-IkNOwp`66}FVs+qtobN1xEo3n9`VD$V)+$~)Fe{YC_ep{iFO@g-``BbH{+^U_r zt?I9TD17N5B32##u+5|XqKrIk*eoGa4+5I<>G5O?VrZ@Nr!c(jgQDs1 ztbhfc^kMB%3c!^Tvmyt}k9?`AE$g)0T2_(qs^#j;d+?zjRt>EKw?-^y0cAPbRrHRn zsKzG)upoywUFQ(^pb|AoiCYBf>{#Niv9iVib#L}oTZAt<76Ltpz$-Pw+@U}L zZTL@gHvl1t-*{!38o-7f$PrnPg^=wNQl z%D&s@)7%15+}BAg)bE1AK-r69Hq#&2<}SsqfYra#wbxg=J@)G~?9T8SJx5Xx=9Xb* zgLmj|4!10iI6U6682j}+3@B9jU<#KuBQurX6nr^PZM; z2)2O=^a-w!BF;eMwOgE%ytZtqW}dNzIE&zOWx?lhK}m8ZA0h{D8jZb)lKiXP6g8BH z8<0zyluK79PP*QAe0sj>`_K>W@WiyRuqh9@(0QfQ|LtT4mAYBB_ME^SxEqsgj0PX; zsCr22YN^%-X_oOJ!P_+Dr}g7>0p>%d2`JH#xOKBy(eFE>+0Xl{ZCmY#Lf+2nO6?!( z%y;Guuppz<_pm&E7o{?203GV+sLV|F(deGfM&85m9ee5GzukpZ;I3Cpn%5iCQlr5? zC6|NOQGe~6&^0j{=B~WXgE$D}KR(2)G@q>0hmVL$b_);=*e_v>A5;8!S3s2U8Rf#` zBQR#gnUOr)koYj5wMXClCtWOK5OC5JW`F0InsD1dhf6n$Jir0q63!=*0%*@oZZtp|k?UvR0SWCti{+Tc)W zd%nPw3VGs;nxDug>IxE0P!HM)42l4w2YTr)(H=#K{ppqbu8?}p3+2`dvVgniBGLLI1-k1U>T{~Y9{Wq$j8R*`HYcE~2ltK+)W3Fevw&U6Q-5YV4R z#r&1DhkBgeGridAeu$Wit%dgB9THmn;NLzvkB|V$faLRoQVf>Z-iR*vP-Z6DD7br` z*2H+MC~&V7to2~A>mC%s}&g_O3p2NNoE zF`y=wm#)9LF$lyAW5Dic2VtyOvC~vMIV=<1(D9f&EIZ6N8*=qjT8zz3PLIN0?G_Qj z%%GqB$aV3=nm*)cL4MENZk?k)HPMAiwQOND8DMyoW*J|eoq&DYAtAfW) zmV;gP2-t{bT9?(hyXM`S8>$NJ_+8s34E*H}#o2oT^)@SvUL9!f>=fN`Pk4|AXxaXG z@PSGE^HZ|xj6Cl?1$(+8p$q%MANo@Oxj26E^fS)HVap0~$DVDO6{aE7b$D&$ zGfXu9QL`ykn%1q2-fU9_qT(6-q6G~*aSqTO%%1&+I1E;ftB-yxTnl^DxS2h3Tk4UY zwc?7tY?kGT`5;5z`TUKf;=o=eE!ya;w0dJuQIYaHiXi`W_nIRlf+oSt8e4#zmlWpk z%lyJeLeUc^@-5EkwcryU&^sPjwb4fR-jnKRP($|V)r7Wyn8j_UpHEF~%W@yNFZ6q` z-ug|;!l^hB@2FhD^JjarJ#U|QrF(@Nc9y!HF>;^~pcU!lg%@N4FSc1OpilImpTnR^ z(R3J-Cx+}4-`k}bQjlA<wVL*BtF+fszbebku<*zUn9B>A9TZ zj9V1RQ+(9D%Ou6DkXH_t^s;0}6LkgK2IOZACz;`wrx9c-2B@BgvcjL8_HPi-u~yKG zPU3nmL$dyyf1{|~);nGwTDNjkz(pSmPn)n5IQmm8)jOlp&xM!PZM0XXF8XUg#}*&^ ze-!u=a|ElVqc_rlocLWZXoA`Qjf$uv^&1@c?q^_Hj{ucL!Eaw;qW6cQQ|<>t6}==8S454C$|aK=Fq>xcI(6&>|s34 z&*wBquVHZy4IUO}k9{!Ls^uEeNw8&6jTYg@57d0q^Xb~-`cysKc>His?UFbsSf~}^ z#*MqKJaYDs$SY+bZjaom2nio|MhwkO-_$3-l_x)|qEoWy^J!_EpNXxAcvo~-`p-zO=H6wE z1(g`Qu~j9EFgZy;F=%VGjla?!oE$B6lnK36xLkCDpLNQrcB;+pIYsc<&+qr;jND>! z804iQHMvTj#ISttH1?;=i~0l4q9lH4jg>f{DM=#LoqL9xJP;%V#1lVogy>#4|Ci= z$rY57k+Y@T{>1$jGNHFpS4DsKxBi;xH*TS7qnymmGz9wW1V?>LNS!MqWpM@S)NeP+ z#aC_ur>ZK0VjY7tW85B4+uxy0#@;YG)k6%FcBEc%%Tfo@$veg7=CJko%zRm?27O{$ z#ch71j0l}>?dL`nKObO52%l=Qw5~%Jjn@{nTK3vUhjx;T&&%FT4&l>V9NZJBaOc%; zrV%|^Z5k|Dy5RVx^qKsyDK}$!lfV95n@SZxw2fOnH(Z!jAh(Uc=My(PGo6`ghxeVxC9-m ze@4-(^NNXX4pr{lvzhWdJS+O)0>|D;Er=Hf`}hYX>QtZqzwM2m7Gq{w+{gntSC%hx zsW#?hMzkeO#vh(*WJBNi=?q@QyL9iAP0`@}7{>dkh7j&zj=sRUze~2GxB84A=ZxtXyk%KP9X^A42 zmh=jKRMHi!ycUFoGeqF~Y0M4Pk>#4$8s@Fpo{@Cm26bCgIshP(B3OUcu=Pklu|`zs zhEnj`tn1zTSQ95u%G!q7+gl)Kr?cv8KHj|RU63dY3Kv_s6eb4$mOFpq+X;800I*MR zK)_wlf)v=_-{TQBHpO0qK^=7>XsRU3y#4mr;ua_(at2*XtvGZK9Bhw<*pRtYru8Eg zs>VVguAYBU?gIs%VJQgaGETs6du>rod2`Aq*lUM7RO45$tL(~OJ&4n@WvnzGU5+qD zRhNBJ8dFL0kE}qRW71`B4oSmWFI1_BDe56SkIgeC7nLE2ZWfa=y{BHuHuXrTV~jph zt^Ihx$a~x{)Ry`oSv%-?%pP*^*-FCFMB0P`!=BDr``NKegf}t^%GCPE4$NCecrp1jKqZ4ILObZXdE zi~rS5Rs=F{@rPK1`80#bXHfg#wS=6SS{|_u-8^6$aIYb9K+(l!qZo9PdT;&|1Y^ni z5Q&Y}Uob*!*(fyw|GqU%3}3*dpRBv_?WJ>K-et_*xWN`yMstyI@{s04$XCiCMzLuHY`Jo=_A ztX8;XJ*5r0cm^po{wT+|-#u`>E&1`|flA?ISYp{Wig5s97JjPAz4^X_HU<6dXWZy5 zvnaNG5~a@2*!^%!^A#a$jrWR@ln1Y?@NjP-nzGy9BQpt?x!STX&Uu=&wLkg{egee| zXx*giX=r64nc|;4vgx}onnb~O%{GL6>65lh#NSbKj_}1)!=%M&K28_(tQ$H3+0+_- zyR)U+uo{Keno*Jmn$o7gwO@gx3ExkvuW}%+lGVMW7iLmhnwh=Y1qp|A#e6lHr~g`) z9hj27Fzn7rKvg$}(_FNnsG-*7>uxK6`E|Y87inhVly3B{E7X0E1OF&bwtGbFXMJZ_ zR5+2Bs-pE%kc48^Zh4CpYtM?8uq2=RaeLuRhXqz?^T*l zkgpO>X$Fr*R>qs2l6uV?=y&e$^P_4sKe-x})OwxEB{Jwj4T<=I{sHL=*Vxb6$pJlW z>yIA!TZ=G%sK9`QU1KfUZ|3*VuF=JpA%9m6+>Lh=m7Ipi zmG1x`2*p#2C`z8$IMk=z;zNMcOeZgMeu%{H^?L8<+BririnZA5zj6H#QZsr)^zLZS zg#J!MnzC!GvQ9JJ^!6RrC-fUdRZH|J?SNIV*UHTIi7I3Algg!r-wp7b{h=id{pzwI z)L?hj!}zR#zs$coWxK8qVClp?8k`~44D^ci#C)gmNxDGZkTj#|r&FdHm`+#S3{G|` zg<hK-y#u_TTRmy?%nnMXVWEePjFvLVkD!=pZZ%nK;c82koOA8O}8p_0Z+ z#Q;_3DpjuKTlP9SQK&yN6^a5+|a@)}q|sA9Gf2ZUz|!h|^5dmxS5T z^cfe}GbJsFf&5=~e#89~l1_B*FrY=E*saB-WqX=wdF{mxht&8C#r=kJ7ujZFU263}H^Z`P5W-bv7!cBu{Jlie&O zZ37`A8kc1c%GRc82(--#94-;=0NMjS6WGvecT%fF|XKDpqEz)YSVD;J3?tX@DBIO(Mb=Kn}fDq#Y z2o2zt7%K{mc0J(UheJHAw{xvgjz{drYo48a``a;}gdQvOr87&%Vxzh4%@>lC$SWRh ze_VdlZaIvuyqbly*cES8KezB%HDe^rB=c2_I^+~v=SAfM2Ai06SQ?3Yv#H&CI$PL0 zAYv$QR-D6`rzM8?XVR7}F-M$!^Iw?6UPBJd97m_v4|v7rN3G7%^y5UQdQgBj0XhX>yieHDa2&L5(`HAB~K5e9=t&$ z4UULI&w?4?_s1A%!KpyWajH42HK-<<1y1@pm5|^{_5836ctHkcn*}N%gW%ZlMGBNO z6#G}r5km8TR{iSiq451yyHE<#cv;!6V^p`W0h=J7{-c$2O2gO9umDjG(#RrB;j-8f zn0jp_PH;tYR*w0>4#lJu}cKY!|{`)G7^2%J0VvRu4B1;8{X4_s^G z?I5^)sSK~BmlsYH$6p$?Jiw0R*$7*_0VV3;k!y)9cJxU+gFoC=dJdwYy-;=>FXXd>A_%8WC&DIDhC0w?8oHWOJhva{lD z6;x=U0X9|6Z_}BqV&7zG@Qdx_MTKLGi|H16{Y<|@7%TT@YsT{InsCft0LpI^%bA4M z8k)|6cuhm)%Wp5vAJ&J4iv4uT1pr_L8PdR;& zl@@`P6>YZXfTPtWnpA=Jel9d*-D+DQfhQHg)i`k{JTKf46_Vx0W7o^Dv`a$I~BiiuT&<)+Np_eoIIX2eVtX) zpLr*(c&6E|)ddKc?$ybdz|J(LB0eCt$mSfBc}`qDJv)dB4xk{}_`L&9hf7)krLDP% zt7U^SYIT{;kEs}>bOJBX#SVxjj?u)#rKSM@q5F*s`2w@bAM;hCusfNjFqfq+T&`$H zIt`fA_R03RMfPQ)Iiq3cCH}%DSL_k&$-bPhrTT^2s=)pIx!wp2i89BGOfF6({zpE6!!a8w=uLaZHb7)1;~>jS-g21b957CK(qp zH#h>7HsmFbB8`;f>a_1|R;|Wn4?-6euA`Z*sdnOKq^pvg2bA-=d57Ue4d`30yx{gL zR?$;Q5StgGRw|a@5Hd1yP}iAS>gb*=TK!VyBwXI(2%g-Zwsv9(*R%HFPS?ht_l-C{ z&~ixq);BWOUVm{&uqe$<-Y1cre)}0&NFWoL!9rI#dZMiQrA*>q#3i$LQC;_=Ni2<_D;IhJg=FkIiZ^ld2w z)g}2PjUN_0E1J)DHxX(L7=v}NB2R3Z#lVu!%z$RNHmx{Z`E4?q|f{)e%2Jw-{DT33n8gppvcNrvPqlp(Zpp5HPRJLiHiO~wH`fl+L za-Yn9?~pE~aX-l#K1mp0)bsX19WdD2`k`5;N{Od7(Z^a0fv8J%fk`iZGJVXCSfg@` zYR;-{NUSfyxxN)97s3s@@G5$whidXY;jEQ?`eUBVf(E{S?nNvns{K=23kR^lX(Qvf zB$on?5&g zx7(iOX+qxcCz>eVq@*ol6UmqnZF#Vz7{Vdf+J)_%xZXnm(@o&Lu9nrAum^>PGt z9BjNcE7-8wndVwL$LZ=9=talfB=?N{&WyBzj#U9}G#^xqhfb?+pf%hh~JJ$5s5ew9j&nNAt?aWyh%pRtJ}Q}3zBdeuu|9s2cs81uwrP`Js^TH;g- zE&jRm{waC|%PQ^H2JlPwO&1rq@84~QJ_!`7^(=7>!opYDxd`)T8ZFRaOZE9;yu9Zs z7A*MdVCxk zh{cooVip?x911!hirv&!EDcI4Cl zoEpvmPV@>L_1Io6D44cMS1IpHE)lnq!0L>*>DLsTew9)3x|6p0-6P(xG)YzXeqU4y zH9Y*MXg5^#)@2bNNDon>)$FUnYirw!iqR+6ge=-9v?ca7M6^FU{I7M~`PP+nF-H40 zVUZP!d(F}-Ui{qPe43uHvu}N4`OHglLYM7IcguB(h^Ixk&vecWq1s?M$h|%<7HDWT z{!hA&AhiL{kxUVxQ`cov))?vu4+!Ck^}-nIdc#@?pCYi)ob`3i4)F&=D<&A%bFaD` z!0b@Qm5aaHs_L-H^6&WxZ$+VIW3SjVj(cvS42fpr2F-5D)+YoB z#B-vJg@rYxIQLr{M_v*@lf>_eyXNh0C#c`^BhV)Hr%|oG+fUf`Z?&Z+mni#jmxq9m zCl>aDw&SB=V(hs_%0*K4zyQDN_t_Tj>kbiaD4vBAKsEPHg19n9u+7j$XH3oJ_KpjZ zg~9%|RKHrU7vHorudhsey9B}ArT0#&908QEw?a2ouu%XpP=gsBanxXBQ zgn>2y!YiS37w%p1P|4&CeG*hM`8(0j;i!D_P=1O{>4I(8_^ON2%BJ=?mc~kc!MmS> zJ;NXYk-6|K_QM5W_`PLrj4Sj6>!#17Bg`Qe{4R|)ebR;Fw9bzP%^?9pfcr^s)E?8| z&`!JP$f@UxL(+3B#@pq=3YK{Z1hr%)uOE4sy^?br9sDbK#q=0l9S)ZE*@=(quP4TP zIQHxXs@&kwkafgBJ$?bWD*u>b+eYg&&1;&X7jtUl+M~$z>H{S=#gke~2T2RgT z;IjE%?Vgti&7xHvRI^LR$&VfUr?UL^_z%ivLF@XjN{un?$jxWKRLhFoA?caCM8DkC zmOlOK)EC{=zan)_rn|{3k!T|wRvG+fX?yCZCXHBa?4_u|r#(#@qbIBms!fR45irwdI&>owQ<+o{#jo!6-T-R=t zXIg&rnDo3(3J!<_E$Rsj*b3r~UY%@+(myT%r)U+lywFKjP>Afl?uMc-;|acbG>sQC zs-Sn!B`3|bk|tb3owAnFopZg)c?B7sej_C;eQ36^H-&BQ;L#$AFfTZ9_*Kk@RO>ZU zXejShXDYUw-DXFj|?{-gfWFKojIeEca;gTY!d5<0t0%1L4Ovvpt;tenn+4h z-%+c-razOCO8AZnh3zHw^gG20om-E%KniLecJ7L*7lqcYTj&qjt}fWYB2+>k=J3If zKs8K&8H(G>xyR1{(Rr$slLDJe{>A0>4NX(5NmW&PTAg^ZwQF>sK9fZivZZsaB5r3m z6pfnx*F0hRap5z{L}$(`rth(LKAB)o7vRJJn0--sym&ClUO1~#Up%V`xbF5G=4|7S zeR*yokjrDQh@ypNV$_kzhLV3e5{K%G`_0Ou5_*cLH4P1C=f>IJR9W5qHjGu+^ql7x z{e0%V{w~o>!1C(d_b7xu9_~JIJUHY>ZJjI+Mva~I_&$m!#XNJuR#tWzOOq=6eeAME zi~pU7eXK8x4DOD@o3PmCz=edFE7UNFd(4Wfi&(XT6w+(7oh9bxJ?|c?*__ZG8+0eP zCAk8;+Rvlg2%BHKUG>*L4^J9ScWz=7FAi59DMAehvI*$h8!A9em^Nf`Q9s8=C;7@P z14tIzt*4*iu`(iv-SvGXOP#KOayS3+yK>@W;XM}zPBz0_=YZ7chu988`UwG;HASwFRCYoQEo(C zv{m-@xkXFXT|hH{CP`WQ;_**+YK_?#tN0D;w+h76Q>Bi;sGR;&#wY<}fd8}(r&}z={;ISF{?OE2aHiqA8;%c-bXjT+&7NL5+ibLcw7!9R+a}L+ z$iTj`x~Ixn2GKFcF>MO5~J1D+EgO4H-3G~I&;?62gg}`l(MUDF( z1q8N@iTqs)k>%fypLZSCxzGF9tpIpLWUw-oJ~r%z;?^a>YJC!;@HXD(8V(TxxlGuU zgic)=b@x?*1xk0D5(==ta$qa39c0Vf__w7pJ-XIm1lPZsuD|X2Y4R$64*&~EvEK}B zJMK9FrQT5*GV1NOZ~ZL)@-!xGWNLF=7jYH6v2Bq5!H}@vt6M9MbC#`~3~lvwJ<%^7 zpt48wZgR^7Yi9PI*WK6uZI5dOguj5&3LqejRpMbExAF@sJ`aVL)~JUt4ew3mJzL3o z(?GbfC8(&!a&p-Uvp|_7X)KUnlex`?zRKmi6lu#w+hY0ofDvml!(`rcFnE63wVq_b z?uSzxId$qHQ#vXkx!v<}7i(q1T|ghy@guk3eX3)NP%>@IowO|e0E%d3-`b3%^Ijw$ zi{jp{xmLzwtRy2@Xt5w^8)ERY(R$9UG{&_LnL?S=aX8=#KB-{wm<=xAWS2j{#FX*=uU^mx@&d9M{Ee6*LiK zj$}_5u8V>Jz05REmZiS+eA*%ls|o$cruSc(LTD?&Slu-waQMxLg=gnT+-^e>Z&3(QWp5xE&x!)AB||XnO|EFxHEDbX_!%aj z&lJD5P1;1a+TVOkc)^}kq5UeqYN+S+ZJ{;C-QH!#YPXj96b5LiJvk2xGB!|a)p4u@ zzx?UUSBVRcx~!MQ;R%dK=|4Eh)-n_7#@5^*S&`HrmA_V=h%e2#Aa2O|Rn4MgbKGU9 z_&cKIO=(qSWyfd90fmN#e8)sGE}ltGSq8pm*FFPhkkVwuK9V|)>)X0&&2!v1|D@zm zw%T3nIQ(W(+2YkV85m>gnj%s8;3wx{Ys>v=!ow2x%k}*V;#JQ3`tm;I<$(N=Hl9S( zM!-ru`;=)V+EscN)-&V_Q=KP!2*G)jMY0hM)U7IA_`VBP*!a-!T>G(@{(4{2?`!Sa z5fs}f1$!2nDKB=JSMS%RpsvcS-9Hs#dYI+@U^eXf?mWw`JEdahO%A@q6bcpHEsR<7 z$PGNYPIN~6u*{sCP!UVkMP6@!n?u1L$)mydwQl&85t))_==#Y<7}FA0K*5^*j*^J) zX*E60A>$-7fklSq2+SWW_eX6Nu&=nKee%EnVmneY^l+AUn}nHmp%EM}#x(mb2` za^G?*+ArhO#>PsZ@sg!VuCZjbxm{1`Xm(ZihSvv$L#vyKJ7kNLjmU0;F8!wSzNP40 z0O+tUI=uY>`$1m3vmtMw*>14?LL`0Vq{l?BD*4H)&w83mySo6@(~E)GOg!hO6rb;C zAr~#?h?Z%<=_$F+HPsOFnQ6HSYCxWv9o|; zd^Qg?9fY;^$xN)G`DK=*0X%HE+fvahK}o3<=Vb?46173_na1nW7u}+QTeoks4N=vD zz}IGl!T+Z7DgYZ^v%l{kYgZ>(_{o-#P!; z1uY|Qr`P8F;4jtxx{#B9hPGOmIvqqVOVk=0${rDgeKJ5UO_RC5C%Ff`8@2Zt1!OEN5Ca*J40cx?kak8s=XrN<{hK*#mCcP}9Ffm9}+$9UCHx85h^l$S) zh$3NsXk)k6jZA(!?_Ql;<}*H8!^L0^*)j1CvduB?vcPp4uKv1_K$X=y$d!uDSmUQ; zAS0@XD9Bo*kSUJtWP(g*`{-IgK4sqi zuE$xOJv9&U$Dj^jyfJqYHc!kMA_qGj*7(Sd?5jXe)g!GzNa;;Aqe4P<8(+dk;y>o@mndDDI z%iYg>^H!(+?z5f;4S|#l_~>ubRM)8$Y<3?g;7UGa5qxRBNx=Dog8F;wZOJS^B9=PIXGnf!oS~8Joo*6z22Z5riku@mUVZIy-%5eE6+*x#QFdL zwtbhs9(|pC@_)v!>scg{p84q~;4JXBC(7FG)+YnvZ<;53KBO>~y~o5#^+(`gMMocE z!|=U*d|iyk|IRZ{PYBSj=A*uRf1B|Dt}L)x^!EfjRZl3(T>B{c4CDFJuf=`(gQn%# zWVE0Baript#m+>Go?|!u*Z%8^CU~M5!I#ezqW-F+=_{i|oqKzMyvGVs>xcsfGt$*E zTd$XcOOU;bI^0cbwZg&W8H<}KE^FO?RoB*xae?fGa~-{Ecg+Gqxq6j(0(n_iDRs&$ z#HJx}W(W$lzYGRkUy@n9fopo%NY1MGOqj87a&Fp*g4Jhl$gA0?2@(r1VNuc=l<8wK zA&p#jJ-uysaytBesYl~OD~72wU)q5>=_GWOJKkLnvkHko*GZjq5` z-4!pO19Z%H29rvdYg2Id6$iO#+@FWq87K?qa|malLe7ZWZ{~yCZC|Uy1RnlXxlJ@} z<(HJ{e$x2CQh-4CB4cCCDcnZ^T)HJZ0S+%+|MR<{c^nZ2Zr;i-+7V67W;wCTlSw6R z-Ca(Hu%j=~_`n<+0Q+6DbFaQ{4izXr{596HAY5_F}6vhK; z{7f-Jt0$G65ECn*+_}H4MvvCUFcLgCYKRHLj{x>~sf+iaz+l>KcDK0`VQNS zKpxH9owIRU_~m%9w)1nZ;*TWz+G_cj_i3J)VU?|)ezJrSMID1j1~0HvHn%wuaX1TX zY)$F*0WYI3Rz=vdg}N?P^b9UQhYcuR75&tz*3Kg9I(_h7i`cCVq`tNVU*3uX%3$Yyi zz$Gm#@cOGY|L)c^tGdmtq# z_ff=Oax&(8t%BCdk;X9)b+PzEnPTabnC?BdK5<1Hjuepwe~!U|msoA4->Chafu(8$ zuP^pNxn*+;PWT7#YO+lHH!FoNhPn$vm+aFiHedxdGA3jAMb#AUc`UeoPWiumOKwX} z2}8WjYruM~2%-Ih-82$mi=d3L_Ekq)oN7Yn6t9>npHFMMxTYaLNgwNuqk2y}y_8RM zh8e)5GxH32gtAnfPby{k(p93|sJ^)p{QwdxBc++WD zSDZ~C-#qMFvH5n~lM{Z!6C1%9l3ihjM&+6?hHIrCt!jGR!K%t>jJQqROE$D=r_3Fnn_tezfsKniO+X$IS4t#loPI<)Y0~0oV?(yMKD#5 z=-#9TRN-kDSokVrSO=kp?v;&#E#{y22!6M*j`Y!)_joi~8_)IP>s)O{nle~&dP2n+1zJ(uwTvbCUf6P#=L=8*So zwD9wGc~@Y`>V+QL#-iF_#i0h7$a9ZN&BKFtjJ*#W(LQxhd7lORLug$M@U>o|g#V+r z^PhgDV(}@$Hl++9+6SgMt$h1ov9E4ryqxhKrrj-}2&4WB9m~7*w{$ns=s8V)T@bhw0}**V@#{&)yOaT+A}Qj(*a&OF8|)eNmaS&~FO5DO&<+pSlJ2 zGac`WI7IONLXQcB)_No!#oe$|Q7Uqs(y`j`LdT7N^UrC2m9TOmG~7PT#?SSiv`>K} zC-ob{V+qo?xQ672Z)5+|9kJlfj@a*Lu(}uhl3=#h!oL<>%@^#hyutU~Q&XYP^2r+} ztj#gfWP94w(<|eu4#bq}pj@uL{O{_q9+gzF!548a8fCm6u;fIOXzhH#o=+18Bb5fo z<72TtHyDhWzucd8D5qY>hUuNb*G=DuS~>hVgi`0^Xm97S!T)-ocLTKeGqJ%)>tuR{W>bA$lp$3kIz5xdZp8phvI<3rHEhuG~r-onGPLu{S zn?SwrGL%o#gFap?&qS|v6c~aA@EHlp<5ud@>B5V4jWNBmEne3qhz7(iA4u%7_WGKf z0J*)Q*4wE-=pe`~x4;UQG@9&$_p}{L z#m8Dsqas%p)sVeTrd$i~TyZhHWE2qlxtiH|_G06Ay8KL6gS?r;JvH3O5|2E!xPsA1!cW zB(NXa$T0b47FENbY#R%=7V6|P@Xvaq)_($NtGY?J#gSxOwau^k5x~`ekdI*X@q887 z4mKliEjUN5X5%L!%Tk=7HiKWdXi69XSI0}h=z*~Hse~71;O0yWC601rAM~__dwmaL zR4AVS&DDdpO=b3%jHR`pa{|N6Fc6J~(v@E`LY#NJ0@|#X14on-!2cSxa-wHAI#cB^ zeL`$|%QWmavQgtW0MXk@geU0B_!H%TYRXH05xz45z0n_gU>q)f@;A$m)MkX}X9=G~ zo1N>~C9iZ!f3mH=wAv7o&IgE4N2=IUx{%G+l51;cpQNn%hR~Zp17%a3&gSD;73>L^ z$XEMJiRCLNC@SBKehu-6dBpoLU}JKn7|u9Azx^*B$pBdR@QdeyZ@)SQ4NeXEf3}{H z{+vjs0OEHekFeFm_&i5yMBlN%#vjLOYOThdr*b-0bi+3Pn2u|?I*6W~5~Y_n@8&PM z0;0LLu0=cjrD^f9pb@i1(Qwe1glr&vJ4kBklY*;2Ki5{92!{ z9-9ASDO&=+rdveZ%1znUO5pHjiM&hb7M~ml(`9|5t4x-9Z_*hVH`~GDul7(3Y<>eM zDfs-Zi87wWZHUi8-Q_frvXJIae9>JtbeQD54l%Otg_DMzGw0itOXzT44os0JoBL|3 zjd#u%JlShrjLdg`BsoKYQ#bUs2g~rB{tQ(AMB6-ZtQ?}f>46p!t!jHMP_n-`MU`G^ zIPJGi29xr_sOTQs2eitxoh2?NxC+<=#*85c=7mVoY4quJ>Q~% zfX=TV4u_J&3$a}O?I5}T05(P?h|7q**6($(7!HjW)!b(z?0ZqI7QAgt|`NlktvJOzyFf~INK$U7)h1Ut@ zD-eO0!1xQ+<5P%T!UT{Fsdlqnji`!1R`*P0(2vucNnrd-cLNYJVqsj5S0rc6W!%P+ zH+${8SHwTqWAqlSfiw&eDCGo9#H2{(tW0ZJ*G~rRg?ygaw7DqBL4pzt(O({x+9|0+nu=DBqdPox=L-X?l{{GZ{uc9b!G??hY!8AJ9SJlY>r0GATcgCn ztpn1~l2&AxLKi8+^Q0L0P2T4wsi#g$sq~wc+g_mC*hEYvO`At6@3q2{hv}>Y@6n6a zr2HBb-@j@=d#nFwpzA6`G~SPqtiGV|@$WC0vd+=>gIfCfrG=kFRwy0Qz8T)ynY(SHlG^*+BRc+mN8 z(FypT-V9bhMz_D`^_QX{{|b+y+f#;3Jwm%{l?52~A!F9Jo?)ZD03a_jQ zX%{RO2DYx~5E7R)Y>EF-X^}{-Vp9I4diK`P>?R`+e9YtE1$fCmfKBX6Djtw0{yUMRrO`$sHL>~ug2<9MhOI%#QLsxZMAlnd;ijZ? zqJt>Y^0#i?zdqap>K#GN7r-t43RnrLrLIM zPkgkA03mvUYuC1$2tnxP+m9;X#lWDiJ**RiFDuq91H=kfjUh(lk>bOW@_^4iYJYE55NnT5X_9q(4juGvdD1+>3sG^bldN50uRUp?Yb(~641q?x=HyMke@@`y2bT^**} zH;6q^U}QSCKdc_W_pI_V*qfb}$E+=)#( zr#y(F&+AQ2W#3!mKduki_1+LCnW$H)IP-NXXi9khcQ<&mN3_YZ28A$KzSpbs1IxPC zLpeaMBfNrgb@w-WnycGo9D<+J@;=!ooRuFPnVI2 zrO7X)BK^IZj)FKV)oTOhT#NukJ{;5*6Rlc8@;@dwoCPA z+90p#4sgSwEww}Fq9-l{@8Tqy2de85{Hf6LF#4nN58NMRt6R8w<*D= z?1LyX(fvQI>_H#s^!IU-E!NZGk;gWBT9Dk?pdmVMQ&7ud+o+Jo8Lu3L6UyG{xbx$< zj`Q%~tMn!!T)FfLY0VInp4YS+Q~#FpP@0=ww|WeQ_Pl1fdW@+Z zF5)SgTlFDS{9kP;=1s+cph29z)pT(-d0Z?h;h@f+r`X=`VTQkt?ik-j7ZL8o*Iv-| zqt2J)89-O(K2b;(>H9ukatHuC9gOPoY8g3Y>h>z*Nk%DYDqm#tMmHS@W-yk%o|T^no!$J!IdCyW**2}N z*nS)PlDRnFoR4%s3%`zPgXSJHz#0dUV^mbm~3RO6#?alG3#I%tsdsN*4Yetl-p+EET4voQ2j zc{FBUqA9KmW;5$<{g67!9&2kas%F{Rz&lwfg&22OkW{{WC2N8ADXii9)*(X3^mJ16 z_KRLY&GzAhJZ(gSumFV*ux+!}b#2dcVr5z3mDybLQ0zeqcj?0LPOZ`s>h+Cf8`yeAF$hMD%5`<+Y7`FF21nKbw zso*RBt+>I8bjg~Zc&TB2wi>G2R)!&w{;e9QUgBMo&Ol|yB6u4WDBGg9moapzCVL(Y>Yp;FvP*npiqIkVObwN zsIU}36g-Xg_^4fB1v*>_Lke*ONiahY4B0tBRUHwIThQ=lq52p9Df$&3ukcc_XYP&W zFXmou-#O-I;z5t24z@inIH9H>ZfQ=i+0p1#BgirSAQqt1Y&;FZ`TGL$Rpc>tF{l7D z!VLCu7mK}en^pPZj})1R9T8@6?l=ypU4t=DsxrHG0M?|(KNUZWpv15?-n3>+@Qq{TuVsNUwQ7d;pb%(lsqWNHrh1fKY*!@4pENFhv3C`nrP7*BKU30u8Z9$vgT_%?k zgkH|+2~0af@c>~8&b3+_8}a;whw2*mZVHKA*!qOJzt zKCZU&+Z%a{Ip@N@CF*~d?3L!zaxh5k%Aiko_}?t>&j_SpAII;(C4%{8J9#}N&Y!pz zfC&QG9s>{$5Brk@&hDC|BejWXI`gCSoz3Hfs8FM<$&@#$+FE!nFT*0*{j}9^A!SuH z1$|vDos+dI+zw(0J@WkI5MqB^3zO~D&W~4htoeF<=Nq}Jsv>2Znc?R5&O-}r z`IvKn-H%ojr5D^FZ8A8cPlSH+3qbg|yt9U`wZyS~a}cjtgvzJqxMk*y99#?EA>xyi ztJ0!Smz7@K-kGh9Wo4(p#D%i8G|+)db*-G#k4L&l4>$H`FVdd&jjS{`!l1}e19ne1 z=jE`le*&*@B?2ATImY0PiiL9jL?KqZA{NHR8urMJr4*%h!nN7ft-wgTCtwr=`LE5t zMW3*Qn4NDE2{zJ(jIo>snMCYXIeK|#VpFFzlvC$)VcnIDY`wIv{8E^juO0V=mo?Jb z4=PorkJ-$$U+QXv`qc?bQ=B8dF+GmnHc*W~smY=x$}n+#iCcS9W2w>b?4c5&*jV`y zn0$-YbzERnhPv*cVrAN#i!Hmbyfd(-><`23meR;Yt|-1 z#R)BH3E11U7_3H`OiYnYA&)9!xuFr~%$Q3Jn05ThJVi7D?qpOyxY_%murtmER(MLp^c3p~gh6mNg zkLl%POl&PZ(!1yQfV0(Qelx=%_Sq-dk6YCf`O(IVr|b8iNc#HTBr>09gMVi>h#;f{ z6jgoxiTqGnm34xj<^cLmeh`>j8Mapipo1WZykZ80U^I$fQ#(cFZ!-wC`FcdFcWxUWa`fQ7r2I_UHEKrYL1C;hGak{R(x;Eit5KJ_@pL(wKtTHiM{HEr~^zU{C(hsjq4%2$6NApFsP=pJpqX*ZU`fI-_S0JuBkop5qhv2Lu%V;@%JJxPs*=P zEU_)MFlOt?E06CLtX3cP&Nydh3X+t{s4@;cxc1qXsUsI%kEE#TJP-10%A&p4JFnna z542}jnc5Q8s4H|;-J%!qnt$Wh&!(xAr*+@xd6Ct<+V?oy+b#Tj!L2_4`+Pz!i|6OH z{=p>#hAf_5(>cp0_NgTAwYaQtPZb9+`=NcY!}PoRHSYj>5OFXX>MZ768WZ{4haQO5FKwFBr_?Js zww2`(56oLtGfYNr(Bh>72Zd>2%f;g4>qWi`uPD3!yGZk!X0!@@pbwTN@6qn1mQzRW z(|2rF`LknU_QH^Oe;q!|Y=D`e1RmZ22}hh#Ye?ye?&n9Vi|?*^uhQIF7p(wh<+x_D zVu9r0S}HpwHMTbwV+9FXd)Sc&Lv~!UYJ`IJuqLa2Ivrvv*VLHp$BtO-F;lMN3naWE zha2b6_m63}1sepdYAUjW%=fJeG)I~7rZncw_3|ouvs>~3poLU1(2dlFtRyybU2I;H^S_xL$g+THf5 zY$gAcz5Vn7tnz-SHDjLpgb;%f*%>HxwYEh?D5oej?S|X`J!p;Y?MS-(B-(2xpsAxD z@2uS?u=+*c%B_YMX428BW6_|i{z3*1D$(Sy6wj)+lgSmj6sR&`b$5uV@ES5gXdw<_ z?V+red1whRkH7A1Nmv(OUSH(4aoWAXu5jdgpMPU}bO7!m@u@C&carKtzl^Hb-TRX2 z!KuHcC*$PWSU8G9a~f18Y>OuO)<&&xg=z8h)NK!;v200dEh5^qvjFXrYz7;7Ob(b{ zpOOojOG-&_jmVoM%NDd79=IwGp2w#vmkWn!KAQ<}Qcnp^ck~R};Vi@j7}r|xj-r=8 zIFf{lD7av4jI?_~g0wt;8@xs;Pq9}WrlcF4aY0HncHOQi{QPm$GI75Ah|1%LPvFFD z^CXNaEt1it_Jb2(xWzuhz6do+r>?-w<(jEBHZz{3YpZa@1~Zn1{H81eC%XLljK!O7 z%L{MKvGbu`|8m@fO}DJu)l!F88xY4&vE9ZF(teD@2fM?aQ-GA=G-MRsyA?GO z^>tJaggo=zg)YX+-+9zO>wN$zNqN}s{V(SmUGWt7m=8$3!R>2h0|^{i^UqeHo^nS0 zcx&vF)OE53h(8jVyv@JtHUH53g{DB*d!& zpB5F)d9kkQFJSI9F$1-v_n8$f{5yITt{o8^E~PmSB~`UY7-M#i8?WTolraLI2urPc z-mvqu^iGE}T-(Qsdb`8%)on}}c`CY@_}SyRZxGlgbX%Q8Vcbj|EU25d^wAx(%A-jG zlo~O!m(U<}4a?Qox`csrciZPKpxBj0d{2wUNM!>X^?9B69lhAT8X6))FjWg<7?YQd z(sg&q=M{{!;enLPl9i#fw)64HcMBFX1KYLCqQxFNDA8>NRr{kkwiY{ia*vo4$Z!@l znq1b{M4=TD+qU4;J|>zKD9*jrXsVjZArrcu!mTN%jM+L^(&-K*1{P)bb`$i_n)n47 zraW8NEOI{GtxIA)x7gP-f4oHgUh#ZqBc<<>ODt8U6YFzmR~cF(?mbwTKh)u(I4OK# zz*>fn4!~MSz8K#9wHbTa^*6;z4u?cyT~jMrjw)yCq0aZ;+tSHe(XyjZFCh?SSeest zc9CaF&bpgm**Z^&ly>~wreXiRDnNdT)A=c~m-mg1y`}=!f4lA%A!uH4S z2}`$sT`M&~rzB%ey?~+T=pLahLk|QMV>xcNEm9)`_l& zn%)VmZrvh*S#FC*Iq;}`27MD6PQ6}E-GqfzMq)5Y#=9Rgjst$?U#d+%6$)PEmY{=SJeGQEiyUkRPq(+8B49vfAVGU5f>ZVL0h1~=U#z1^F^+0YVjest-@ww}&(jee$K%yC+> z(+u{@YS(|a@e7M~+3?0co$!jMHy5(qrXG*`hlCHU2(){z!rxR9lRCnkB zrwD!*EPbZi|4#aq(t?_=3Z8NrL*+G*`#ODC9edw8EV~M3m-u5A1qd>;n>;wmT=?t91YMzlWX94cE;0OU5vVIvotEi zCSOH=qV3|x4F-T^Q~%e4F;uw;rP_4H{zSPnh1TP1`rxG$Sa=HL zwntIV9dP*K^u{=ve~A0pscz|AF8y0aEaTnF46!%Q)Q(ROA23BqCX(@mC13N71)Jt+ zY?4oEGEW#bSS_yAiPy9R}Dj~2ZW+) z`wHEZt_6=ux$xtlYXSPA{jp4RxeGVs&F_KvsWh zS5*~vGvWxUwXE(=oNvA4G%L3*0nP)8^_up4gyY@ThmLLu#Cq0Hs1XN++GDA@2|843uwi8tjwWq}T`X__4Coeg-@;)^&Yo2I*S1 zWp}<3@l>Loc(zMqTXhN!Kb1*%>JSfTkFlN|G; z*7e|mDL!W7sByY$Ug=6j-@lyKOA0GCbkCgoGgWp}(n!gap>BmT-AKroXc*y8*nL}_ zUla5lU*JIJTE2#aUHzVDQ~JlS2}>a9lNXPdT!}f@pD=#0Gfm)U5c9 zKaQMUwlypQAQaVtwx&hnR15)kVZCQhPz^=bVOKf2o_V-jjx7d(8#st`$7z;aScs|M z9IPv~JXd&uZXlMHhaO3hANsuomo0p|i9Z24w`(18T~*Ahw*FIm#c6?3r?eM^UV;Z1 zZ`+kaV6DD41GOOp%QcL2^owiBAkhh75kd0};2GO}CI~`>cEnk%e|Uhz%svY?Wnr)3 zvnG7Ei#1v7W+60Uy^ieD2Dpi0 z4VDw$c=rTgNXTjJLEH|1&)4HH{wocTh4cbD4M=^gPlj4{g!CiZoI@@=&>ItYC>>h%B>p2{Wxgr6?`rola>E2N_zU8i8ly>~;4XH2)>G`;8 z1{aa=ed@yn?fe~N%gWw}AF%@Bv3;nJ^Q6xZRzY4?yc|xtuXBpa^GDV3I7=cx_}a#; z@DkYe5Zi3!R9kcJ15m4AE6FU(RWrGjN@Z^`4<1DReH^ms*`513MQ%E*1z!{`UOg}z zl`r>b)Mm2ULL3a`S+%XW=es@Kld3SJfOPz#d8VuHOqk==?c|alurf>gkP*j;!oST! zbeFH0svTIDEA)(mFYOkn86BB(Jas4ep4dX9{w%~hJ7;#aFVIXE`NtR3-i_=>&tlB| zu&@8UoeALfDQ-dmR{Ls=D$~am!wYApXXwdH6|Fc)KFo;FCzo=;EWV?2?ec~6^at~g z(i3X0AK(PuRj(B2oUdnO^YdVW$hp!K-Ijmd^e($VfoVX{Y@qTz*+Hw|u^2JV@z7B8 zNK$q4VI(;8V%E%nZ1yGj^(AlB*omxr{s@%XCS5Itr|J&iUnt~7#qr?yA20LXA0S_c zv?UX^atJ~{H0v?ikHg9nKDNa|E5>zn^!oEaQr{{zRZAa16|m_Y}7_O2)%QyxUr_vF(yPQ@yI)esOk%j?ZJy)4ehbJHn1`8}{ZZS!$>z+4)0V1eu)1z;K46$^Rkh zcbL+pWFNm4%r^Bw-BNSQ2Gb1-Lf_@)5;AXMrLHR*Aq>rrZj!*0<&~qRX&R&vyOE}l zwx;*!9|mBg&gRkflFVo1zzU~G2gIx9!P@4^21C=5|?vjDrAn%4gHTI|ld+RYW++$XQFa_*o%q{eb^Kk+Vop6|?i)1@C3f-sE0W&fi zj9ip)Z=ty-@cJ78uxO@o!9;)5FEnIfwbZx4Yl&LI>6awEgMI!Fpy~X`UN6kD>-THh zTW(&_MVJAz5w@m;lQ$aj_w1L*joTgVRUYS4;?qsXVg2IEP>sR1e@5=MGY`x9AfLPXidx(_ zRl7ldTVJOu2vT~Z8fVOTxKz@HF`|)Pu*Sp@l(wz0;>8xdh9t?(cALr@F#bpQl+uiC|?a&A)mf!&<+zd=Q2yak-qF+Ywl z-w_{$a62@wz}MKVl#oC||1ANf!*gRmi{E}Fm6f4Em6~|u-4bxaBYtizFf{@1zWlvb z5;8&2{^4eADu@r!v>w})OG)o)`OqLvtSgg~+YMfS2CW-{w93NQkN-oz>?ls@>mn`p zYWI6`ZDyuzGdD zasIW1cZr6*^3^`1w_stf)H^f9>xZP>0TzjBc}wleXU#-R;nJ2I1ERNbJ$$;s=JcQV z*cb#0KKHF_u;*eW+izND8tE>)9F{=cn~2KsAPpSv?+;oX&@%+attcd6#{@4O$cWu;Wu6 zvg=gswS<`<8g6LH0$bXY2ly2w#^1;qO1#asPAhu9_nx^HYc)(`<=fsa?Xi`b8G@0s z5r%d#R9{QJF3 zR%;UG0%ccZ!3B&T`8CG!ZC#5IgC`6P%TvX}_6aT@fVyK6@3xHlV_5lv48gnJFu+TB zsz`y@jHo$$fP7Mkf-@Fqb$!08L=m^O2gneEY@2d(whev`7R0|t6?=*FF(>YA_WV;_ z93U1N5O_;-EoQw|z_cqUyv<%{$SWN^&Ra`m#p(EuC6&DVucK|CcITMQl&$V^l-LUR zeFdB9qJJ26cpE0P^3QAS#kNuCm$21i{!U5@!$Ns-R5u(|ea10xj+v_&f_hsDEwJje zcUsq60m%v~+}FBX+PBFn;DAvAMBTosvy^LBzpavPcHTh>H4Ti9z4g{M0qCkt14TfaAoX^#8SsMzxjAQcNqum@quIxBzm9==fIF| zUXW(8MieH7NDh*}REziT0on9W9v#z>+;%Hie>SHoHMye?Gk(0V7l*&zq^BYzrZ|+i zJgBZc*_YIH^s;`jvPE3>^ISpj`J1i9*Sv_tdC1xeRf`WTwJ{00x;yN5>=WfLf!PhW z(W*C7plNt+t`7R+VwVoDs$+O8ZvGMbkbaC_6h0ppGZ{4IoW60a*_R($jagmdgoUkn z&-OcRcJIC{lIFW>rnEjD>FJrWD*FKwKHRdxhNwLyQ8yRdD zEKE|}-JMtMD4B5n+?iM@`-y%O`MNEW&{A){u{g@=9m>PP0d&0wQ`S62$j0x&OH{&~ zg3I7ciW8{&d|usS<^2wmzjgEst+}%WeM&r6yrv8@QnS6&7i1(b7n%IZIYvoB@qUNJ;suW0 zYuiOObPCQZyRosat3XUvtz}K7Q6ty#@_c+2%>kgmeNxHMc*2EfLPkGv^}j8a9_pfB zebtNMCJF>1Nk2f06jHZ1f&=izhTJ*MNkrXulnp2|&^iNC7q&IMn3I+B5-EI2FptJt zw?K+k|2elH{Pd+@+G~Sy2l^-Pl9eS3Tth1?lMz2Q6&0tA*h7_u1K`Fir?{|Ja6#RD zmwHB_!^Gsu#!}s_@|DWJ%=lfxSLbSXZ_O6-jUC#QU*LY+&qHtpkxoDRaaGzz=frVz zBj@*#_}ue9qbHNIC_$9{=I}?Be_WjA2pwzTY95fHqQ9C#qizNq0*sb5>{dU`HdvHR$8E_m~GQT}W+e)TMVg z8$cgW7r9pK+8_)7pJaO^NUL~l77Iyb{656fLXCRzIcw^+WLz%dVjv(mtWVy(9(`!F z0KD{um}I`i(6N~Rq>v!hf=db5&bH{2zyVOsgeWPF z5^~ffVnW2(iO7bYF8RIg7$e7Z_dtxs!HFj0y-36HJA(b9wUy1GHz{T^*H~u_uyrgA zweFjABRc=drdQy$)UZ^ro-i+HlGhsTT97QH@|6kGpxd&vlLouZe^b_y1)V!i(r}ch zoo4{m;=#T_&F9w5&+U^JnM%MS$eYy=naZpU+l3Qv_ z!5xW)r)mqJ~;YM0A?)Efnxa+z*ZI(s9!I|J*m}JNpV^y!gPSe5y{8W zPcg@LVau{!>dqt3PaBbd-@yrVT0NI@r;PA;|ib>u12#j|FGTPNguQ0r#8A_{GVZaC(ukW>a(JQTqF z@a3-H3S9aqC1R7YxgMK(tV3gA`TaRr&;PP%LLmAPU$b`MHG@#x9<(-4-nUUE8r?3) z@J@#L4&?!Av2sw+tp$}4@od*@Kx#?8P0o$FNYIxW!l~>R+makTq^W9xI1uRc1n@`Z z@$k8|x{*WHDGyUi;DZ=76mjRPAC<;&{Y*Hht3i(7p4An#Nt_WN09}oa-Hz0RTD-cw za(nd4JlfVD&2p0sI;-&?>@s&1ed zgTAJ325T<6W@#FJhzXe|YKnV~%c9cWl|e8twMRRNVS9JNA!w zDi8km-cWpT#vhZHsmr|TpBry}@1?swu;10k*QE9KxMa}aqS^Nl#0 zlgDHyXPuXjb)uXek~X=2wJ*>$(sNj)r}hb-9*{>_^zztzE2^U)sAIKL^z}6FwV7fi zz9m#ItA}&|OB?;eFL0%9pK#$?BvhyU2+QZ{!vy(GH7Bs8Jcnq;Rjz4l|B>t@gG&D%)!pSnPLJOv6-zq0e zxkhio);dpYM^*m`!kPgiWm?0+86_5h8iuM~|*CdfTTWEpz8YwA?VQX?l=Ifp9 zF@t%tLn|?f_~thn)_z-yFpG8$!wcW;M}3fUrmpC5SB}0POV#M*b!4Pz`c8R*9jry> z_IH=MWS%}da^H?%5gS|6|zzki!CKe|V|g;NhqFAL0}{~t}~71u=izipLORt2Jq3P_1%CAuJ8LJf9o zkoD&(C?!&Zv<2GAPR(%0D*)SLI~;Y&wKD5%+Y-2 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