From 004e59dce076f950f31e7cd9105b87880550532b Mon Sep 17 00:00:00 2001 From: AyrisA <30354655+AyrisA@users.noreply.github.com> Date: Fri, 25 Aug 2023 15:46:36 -0400 Subject: [PATCH] Bring branch up to date with master (#579) * Temporarily specifying pandas 2.0.0 dependency for testing purposes * Disabling akebono tests....works in my environment, looks like connection/download problems in github test environment are still an issue * generate gse2sse file and skeleton; update jwu_testto call gse2sse * Removing pandas 2.0.0 dependency (it seems to work fine) Re-enabling akebono tests to verify that the test failure there is not related to pandas 2.0.0. * Disabling akebono tests again -- test failure is unrelated to pandas 2.0.0, perhaps triggering DDOS protections with too many connections in a short time period? * Apply cotrans to sun/moon positions if necessary Apply earth-moon translation when working with positions Transpose rotation matrices if doing inverse transform (pyspedas tvector_rotate does not support invert keyword) * Switch to using CDF for IDL-Python validation (still not picking up coordinate system metadata, though) Set coordinate system explicitly where needed Add GSE to SSE rotation matrix to test variables * bumping required version of pytplot to get EIS bug fix also bumping version to get this into PyPI * fixing bug with repeated calls to FEEPS PADs with different time ranges * Adding slice_x and slice_norm keywords for MMS * Adding more 2D slices tests for MMS * Adding calls to plot the EIS data after it's loaded to the test suite (to catch any metadata regressions inside tplot) * Adding calls to plot the FEEPS data after it's loaded to the test suite (to catch any metadata regressions inside tplot) * bumping version again * Replaced first batch of tplot math/utility routines with wrappers that forward to pytplot versions. * Slight rewrite of test case * Bump required version of pytplot, to pick up relocated utilities * Temporarily (we hope!) commenting out HAPI tests, due to server problems at SPDF. * Restoring hapi tests, SPDF server is back online * Add WAVES L3 routines, fix impact STB * Downgraded the "Coordinate system not found" message from an error to a debug message. * Explicitly set coordinate system metadata in the SLP load procedure (at least until the data or master CDFs are updated) * Set the coordinate system in the output tplot variable. * Fixed a few typos; no longer need to set SLP coordinate systems explicitly; add tests for coordinate system metadata in output variables. * Add README example for WAVES * Pass sample times to np.gradient() to calculate a time derivative. * Add variable_type string parameter (default "Other"), if "pos", use lunar position as an offset value; if "vel", use lunar velocity; anything else, equivalent to rotate_only=True. * Add variable_type parameter to flag position and velocity transforms; relax velocity comparison tolerance to 1 m/sec for validation. * Trying to get coverage stats for pytplot using source_pkgs option. Also, can probably leave /home/travis/ out of the config. * improving documentation * Ignore QtPlotter directory for coverage stats * Adding geopack tests to github action * Add option to change fill_value in scipy.interpolate.interp1d * Renamed rotate_only to rotation_only to match IDL version. * Added tests for rotation-only transforms, and tests using FGM spin fit data instead of state data. * Migrated another group of tplot tools to pytplot package, replaced with wrappers that forward to the pytplot versions. * Version bump on pytplot requirement to pick up migrated tplot tools * Version bump to pick up missing imports from pytplot * Added forwarding wrappers for time_float_one and time_string_one * add sse2sel.py; fail test in tests_lunar_cotrans.py; * Removed position and velocity offset calculations, added a tplot variable for sel_y_sse for ease of testing and debugging. * Removed variable_type and rotation_only parameters (always a rotate-only transform) Added more sse<->sel tests * First batch of updated imports, for tools that moved from pyspedas.utilities to pytplot. * Next batch of import updates, for tools that have been moved to pytplot.tplot_math * Changed some np.sum calls to nansum (but not all -- some calls resulted in mismatched IDL and Python results). Uses bottleneck version of nansum if available. * Added relative tolerances to test comparisons, to catch potential differences in small output values. * Changed tplot_names() calls to data_exists() to reduce noisy output. * Changed print calls to logging calls; separate tests for bad input and output coordinate systems. * Check validity of input and output coordinate systems separately, more informative diagnostic messages. * Changed print calls to logging calls. * Removed logging messages for importing bottleneck vs. numpy version of nansum; output can be confusing, since twavpol is imported into pyspedas by default. * Better organization of imports * Simplifying matrix squaring a bit more * Added themis lunar cotrans tests * Added pytplot forwarding wrappers to coverage exclusion list....there are no remaining references to them in pyspedas proper. * Added Spinmodel object to import list * Added tvector_rotate to cotrans imports * Added tests for cotrans_set_coord not clobbering 'units' in data_att * Do not clobber other entries in data_att structure * Cleaned up imports * Cleaned up imports; ensure that input metadata is carried through intermediate variables * Cleaned up imports * Cleaned up imports * Cleaned up imports; switched back to tplot save file for baseline data; added tests to ensure 'units' metadata not getting clobbered in cotrans operations * Bump pytplot-mpl-temp required version to 2.1.32 * Bumping required pytplot version to 2.1.33, to pick up correct matplotlib requirement * Version bump for pytplot to resolve matplotlib version conflict * Version bump for pypi update * Try running the tests under Python 3.8....we have at least one backward compatibility issue, need to see if there are others. * Use backward compatible type annotation for spinmodel dictionary. * now using time_clip from pytplot * Fixing off-by-one bug * Updated to support automatic determination of the size of the Hanning window, using the same method as the IDL routine * Version bump to get Python 3.8 compatibility fix into pypi * Rolling out new version to PyPI to get dynamic power spectra bug fix * Adding docstring * updated RBSP RBSPICE routines to use bottleneck, if it's available * Fixing a crash that occurs when the user uses a decimal in the energy range of a PAD, and updating the test suite * New release, to get the latest RBSP bug fix into PyPI * Fixing a few more issues * another version bump for RBSP bug fixes * fix for issue with hourly OMNI data (#470) * version bump to get OMNI hourly bug fix into PyPI * bumping required version of PyTplot, to test new astropy units functionality * bumping required version of PyTplot, to get regression bug fix * Now setting units for HPCA angles in flux/PSD data * Performance improvements for FEEPS (get_data -> get; avoids unnecessarily converting datetime64s to floats) * Adding test for MMS LMN transformations Also adding the MMS cotrans tests to the test suite, including installation of spacepy (for the tests only) * Fixing crash when input variables don't exist * increasing code coverage for MMS cotrans functionality * Fixing crash with MMS FEEPS SITL data * Bumping version to get FEEPS bug fixes into PyPI * more FEEPS SITL bug fixes * another version bump to get FEEPS SITL bug fixes into PyPI * Now assuming datetime objects in the trange are in UTC (should fix #487) Also adding a return_times keyword to return the times * bumping version to get dailynames datetime fix into PyPI * fixing issues with EIS load routine * moving EIS fix to FEEPS as well * Update minvar_matrix_make.py Removed the unnecessary 'v' variable from the minvar_matrix function. This variable was not needed and was causing issues when `store_data`. * Update requirements.txt cdflib 1.0.0 introduces breaking changes * message for pyqt5 pyqt5 is not longer required, so we need to ask the user to install it, if it is not already installed. * Now using logging instead of print * Add STEREO beacon data, unit test, add assertion error for an instrument passed to stereo.load * Fixing crash with RBSP ESRHELT data * Bumping version for RBSP ESRHELT bug fix * Added last_version parameter to psp load routines * Now forcing latest major version for EDP data due to mixture of new/old files at the SDC * Adding support for Solar Orbiter L3 SWA HIS data * bumping version to get latest updates into PyPI * Tests for pytplot timespan and tlimit routines, and other issues pertaining to time representation. Probably not suited for automated testing until we can script plot output comparisons. * Version bump to 2.1.40, to pick up tlimit and timespan fixes, netcdf2tplot fix. * New version of CDAWeb GUI. New GUI version uses Tkinter, which is included in python. No additional requirements are needed. PyQt5 is no longer used or required. * minor update to mms_qcotrans tests * Minor changes to the GUI Improved alignment of buttons. * updates to the FEEPS test suite * adding a few more checks to increase MMS code coverage * adding error for missing trange * more MMS test suite updates * Add tests for tlimit 'last' and 'full' functions (as arguments, and as flags) * Replaced cotrans_get/set_coord with wrappers that call pytplot.get/set_coords * Replaced calls to cotrans_get/set_coord with pytplot.get/set_coords * Added new tests for pytplot get_coords, set_coords,get_units,set_units, and the wrapper functions for set_coords and get_coords * Version bump to pytplot-mpl-temp 2.1.41, to pick up attribute getters/setters * Disabling the HAPI tests, due to the CDAWeb HAPI server being offline temporarily * Autoload support data (spin axis) rather than passing support data parameters. Added probe and * Autoload support data (spin axis) rather than passing support data parameters. Added probe and use_spinaxis_corrections parameters to load and use the right support variables. * Autoload support data (spin model), added probe and eclipse_correction_level parameters to load and use the right spin model. * Autoload support data (sun and moon positions, SEL coordinate axes), rather than passing as parameters. * Updated tests, now that ssl2dsl, dsl2gse, gse2sse, and sse2sel now autoload the support data they need. * Removed support data parameters no longer needed * Removed support data parameters no longer needed * Add test of various timebar string formats * Version bump to 2.1.42 to pick up timebar changes * Re-enabling HAPI tests, now that SPDF's HAPI service is back online * Fixing crash due to incompatible files at the SDC (mixture of v6 and v7 files) * Fixing crash when PA data can't be found * Adding flag to assume no wild cards in the URL/filename * minor update, fixing typo in the docstring * Adding initial code for grabbing and caching the latest burst intervals from the SDC * Adding test for routine that updates the SDC burst segment intervals * moving cdflib version requirement over from requirements.txt * bumping version to get new cdflib requirement into PyPI * When the downloaded file cannot be opened, try again. Added downloading the file for a second time, if it is a CDF or netCDF file and cannot be opened correctly. * improving the error handling in mms_qcotrans (fixes #515) * Fixing problem with latest FEEPS masking table for MMS1 (extra column appended to the end); fixes #545 * bumping version to get FEEPS bug fix into PyPI * Fix sqtn_rfs_V1V2 non-public download * fixing bug time clipping spin averaged FEEPS spectra (should fix #498) * adding regression test for FEEPS time clipping bug * Now deleting the temporary file when NamedTemporaryFile is closed * Version bump to get temp file bug fix into PyPI * Now loading burst intervals from the SDC by default; should fix #378 * Updating burst mode data bar test * Disabling checks for Solar Orbiter RPW FLUX_DENSITY# variables (these variables no longer exist in the v05 CDFs * Slightly different fix for #555, to fix #562 (now deleting the temporary file using os.unlink instead of relying on NamedTemporaryFile) * Slightly different fix for #555, to fix #562 (now deleting the temporary file using os.unlink instead of relying on NamedTemporaryFile) * Now preserving metadata after interpolation; should fix #475 * version bump * fixing regression due to units now being returned by np.arccos * version bump to get FEEPS gyrophase bug fix into PyPI * Temporarily increase logging verbosity to detect any new deprecation warnings * Temporarily removing basemap installation and secs test, to allow testing with numpy 1.25 * Backing out inadvertent commit * Temporarily requiring numpy 1.25.0 to find new deprecations in test suites * Use Python 3.9 to allow use of numpy 1.25 * Temporarily commenting out spacepy installation and mms cotrans tests to run under python 3.9/numpy 1.25 * Fixing deprecated singleton array -> scalar implicit conversion reported by numpy 1.25 * Fixing deprecated singleton array -> scalar implicit conversion reported by numpy 1.25, cleaning up indexing a bit by flattening index arrays * Fixing deprecated singleton array -> scalar implicit conversion reported by numpy 1.25. * Revert to numpy >= 1.19.5, bump pytplot version to 2.1.46 to pick up UNIT_PTR fix * Revert to Python 3.8 environment w/ spacepy and basemap installations, less verbose logging * Bumping to pytplot 2.1.47 to pick up bug fix when units metadata specified as an array * rfs_hfr has /%Y/%m/ path format on SSL server * test * All Berkeley files stored in monthly directories * added barrel data loader * Changed default date to one where data is available * Restoring akebono tests; adding barrel tests * Adding BARREL_DATA_DIR to environment * Taking akebono test suite back out; connection attempts from Github timing out for some reason. * Bump required version of Python to 3.8 (due to numpy dependency). --------- Co-authored-by: Jim Lewis Co-authored-by: jwu Co-authored-by: supervised Co-authored-by: Samuel Badman Co-authored-by: Jim Lewis <105754292+jameswilburlewis@users.noreply.github.com> Co-authored-by: Tien Vo Co-authored-by: Beforerr <58776897+Beforerr@users.noreply.github.com> Co-authored-by: Nick H <34072991+nickssl@users.noreply.github.com> Co-authored-by: Marc Pulupa Co-authored-by: Warren Rexroad --- .coveragerc | 19 +- .github/workflows/pythonpackage.yml | 87 +- README.md | 73 +- docs/pyspedas_plugin_development.pdf | Bin 0 -> 2821036 bytes docs/requirements.txt | 4 +- docs/source/_static/cnofs_cindi.png | Bin 0 -> 113834 bytes docs/source/_static/cnofs_plp.png | Bin 0 -> 50657 bytes docs/source/_static/cnofs_vefi.png | Bin 0 -> 62176 bytes docs/source/_static/rbsp_rbspice.png | Bin 0 -> 80623 bytes docs/source/akebono.rst | 65 ++ docs/source/cnofs.rst | 64 ++ docs/source/conf.py | 4 +- docs/source/de2.rst | 160 ++++ docs/source/index.rst | 6 +- docs/source/lanl.rst | 46 + docs/source/projects.rst | 6 + docs/source/rbsp.rst | 10 +- docs/source/soho.rst | 84 ++ docs/source/st5.rst | 27 + pyspedas/__init__.py | 83 +- pyspedas/ace/__init__.py | 12 +- pyspedas/ace/load.py | 2 +- pyspedas/ace/tests/tests.py | 21 +- pyspedas/akebono/README.md | 45 + pyspedas/akebono/__init__.py | 344 ++++++++ pyspedas/akebono/config.py | 12 + pyspedas/akebono/load.py | 73 ++ pyspedas/akebono/tests/__init__.py | 0 pyspedas/akebono/tests/tests.py | 37 + pyspedas/analysis/avg_data.py | 235 +++--- pyspedas/analysis/clean_spikes.py | 78 +- pyspedas/analysis/deriv_data.py | 20 +- pyspedas/analysis/dpwrspc.py | 18 +- pyspedas/analysis/lingradest.py | 8 +- pyspedas/analysis/neutral_sheet.py | 532 ++++++++++++ pyspedas/analysis/subtract_average.py | 59 +- pyspedas/analysis/subtract_median.py | 10 +- pyspedas/analysis/tcrossp.py | 50 +- pyspedas/analysis/tdeflag.py | 5 +- pyspedas/analysis/tdotp.py | 28 +- pyspedas/analysis/tdpwrspc.py | 55 +- pyspedas/analysis/tests/test_twavpol.py | 112 +++ pyspedas/analysis/tests/tests.py | 36 +- pyspedas/analysis/time_clip.py | 155 +--- pyspedas/analysis/tinterpol.py | 39 +- pyspedas/analysis/tnormalize.py | 34 +- pyspedas/analysis/tsmooth.py | 74 +- pyspedas/analysis/twavpol.py | 92 +- pyspedas/analysis/wavelet.py | 7 +- pyspedas/analysis/yclip.py | 6 +- pyspedas/barrel/README.md | 77 ++ pyspedas/barrel/__init__.py | 57 ++ pyspedas/barrel/config.py | 70 ++ pyspedas/barrel/load.py | 68 ++ pyspedas/barrel/tests/__init__.py | 0 pyspedas/barrel/tests/tests.py | 16 + pyspedas/cdagui/cdagui.py | 772 +++++++++-------- pyspedas/cdagui/cdaweb.py | 11 +- pyspedas/cluster/__init__.py | 17 +- pyspedas/cluster/load.py | 2 +- pyspedas/cluster/load_csa.py | 62 +- pyspedas/cluster/tests/tests.py | 41 +- pyspedas/cnofs/README.md | 43 + pyspedas/cnofs/__init__.py | 181 ++++ pyspedas/cnofs/config.py | 11 + pyspedas/cnofs/load.py | 59 ++ pyspedas/cnofs/tests/__init__.py | 0 pyspedas/cnofs/tests/tests.py | 33 + pyspedas/cotrans/cotrans.py | 73 +- pyspedas/cotrans/cotrans_get_coord.py | 35 +- pyspedas/cotrans/cotrans_lib.py | 39 +- pyspedas/cotrans/cotrans_set_coord.py | 37 +- pyspedas/cotrans/fac_matrix_make.py | 4 +- pyspedas/cotrans/matrix_array_lib.py | 166 ++++ pyspedas/cotrans/minvar.py | 14 +- pyspedas/cotrans/minvar_matrix_make.py | 5 +- pyspedas/cotrans/quaternions.py | 789 ++++++++++++++++++ pyspedas/cotrans/tests/cotrans.py | 106 ++- pyspedas/cotrans/tests/quaternions.py | 32 + pyspedas/cotrans/tests/test_minvar.py | 67 ++ pyspedas/cotrans/tvector_rotate.py | 40 +- pyspedas/cotrans/xyz_to_polar.py | 35 + pyspedas/csswe/__init__.py | 8 +- pyspedas/csswe/load.py | 2 +- pyspedas/csswe/tests/tests.py | 12 +- pyspedas/de2/README.md | 95 +++ pyspedas/de2/__init__.py | 595 +++++++++++++ pyspedas/de2/config.py | 12 + pyspedas/de2/load.py | 78 ++ pyspedas/de2/tests/__init__.py | 0 pyspedas/de2/tests/tests.py | 62 ++ pyspedas/dscovr/__init__.py | 9 +- pyspedas/dscovr/load.py | 2 +- pyspedas/dscovr/tests/tests.py | 9 +- pyspedas/equator_s/__init__.py | 7 +- pyspedas/equator_s/load.py | 2 +- pyspedas/equator_s/tests/tests.py | 17 +- pyspedas/erg/satellite/erg/att/att.py | 2 +- .../common/cotrans/cart_trans_matrix_make.py | 2 +- .../satellite/erg/common/cotrans/dsi2j2000.py | 6 +- .../erg/common/cotrans/erg_interpolate_att.py | 4 +- pyspedas/erg/satellite/erg/lepe/lepe.py | 3 +- pyspedas/erg/satellite/erg/load.py | 2 +- .../erg/particle/erg_hep_get_dist.py | 4 +- .../erg/particle/erg_hep_part_products.py | 5 +- .../erg/particle/erg_lep_part_products.py | 4 +- .../erg/particle/erg_lepe_get_dist.py | 4 +- .../erg/particle/erg_lepi_get_dist.py | 4 +- .../erg/particle/erg_mep_part_products.py | 4 +- .../erg/particle/erg_mepe_get_dist.py | 4 +- .../erg/particle/erg_mepi_get_dist.py | 4 +- .../erg/particle/erg_pgs_make_fac.py | 4 +- .../erg/particle/erg_xep_get_dist.py | 4 +- .../erg/particle/erg_xep_part_products.py | 4 +- pyspedas/erg/satellite/erg/pwe/pwe_efd.py | 2 +- pyspedas/erg/satellite/erg/pwe/pwe_wfc.py | 2 +- pyspedas/erg/tests/tests.py | 2 +- pyspedas/fast/__init__.py | 7 +- pyspedas/fast/load.py | 2 +- pyspedas/fast/tests/tests.py | 16 +- pyspedas/geopack/get_tsy_params.py | 26 +- pyspedas/geopack/get_w_params.py | 23 +- pyspedas/geopack/t01.py | 9 +- pyspedas/geopack/t89.py | 7 +- pyspedas/geopack/t96.py | 9 +- pyspedas/geopack/tests/tests.py | 66 +- pyspedas/geopack/ts04.py | 9 +- pyspedas/geotail/__init__.py | 7 +- pyspedas/geotail/load.py | 2 +- pyspedas/geotail/tests/tests.py | 4 +- pyspedas/goes/__init__.py | 532 +++++++++--- pyspedas/goes/config.py | 7 +- pyspedas/goes/load.py | 409 +++++++-- pyspedas/goes/load_orbit.py | 107 +++ pyspedas/goes/tests/tests.py | 167 +++- pyspedas/hapi/hapi.py | 29 +- pyspedas/hapi/tests/__init__.py | 0 pyspedas/hapi/tests/tests.py | 38 + pyspedas/image/__init__.py | 7 +- pyspedas/image/load.py | 2 +- pyspedas/image/tests/tests.py | 12 +- pyspedas/kyoto/load_dst.py | 26 +- pyspedas/kyoto/tests/tests.py | 19 +- pyspedas/lanl/README.md | 35 + pyspedas/lanl/__init__.py | 174 ++++ pyspedas/lanl/config.py | 12 + pyspedas/lanl/load.py | 68 ++ pyspedas/lanl/tests/__init__.py | 0 pyspedas/lanl/tests/tests.py | 34 + pyspedas/maven/__init__.py | 55 +- pyspedas/maven/maven_load.py | 17 +- pyspedas/maven/spdf/__init__.py | 494 +++++++++++ pyspedas/maven/spdf/config.py | 12 + pyspedas/maven/spdf/load.py | 73 ++ pyspedas/maven/tests/tests.py | 18 +- pyspedas/maven/utilities.py | 9 +- pyspedas/mica/load.py | 10 +- pyspedas/mica/tests/tests.py | 12 +- pyspedas/mms/aspoc/aspoc.py | 14 +- pyspedas/mms/cotrans/mms_cotrans_lmn.py | 34 +- pyspedas/mms/cotrans/mms_cotrans_qrotate.py | 28 +- .../mms/cotrans/mms_cotrans_qtransformer.py | 24 +- pyspedas/mms/cotrans/mms_qcotrans.py | 49 +- pyspedas/mms/dsp/dsp.py | 16 +- pyspedas/mms/dsp/mms_dsp_set_metadata.py | 18 +- pyspedas/mms/edi/edi.py | 14 +- pyspedas/mms/edi/mms_edi_set_metadata.py | 9 +- pyspedas/mms/edp/edp.py | 21 +- pyspedas/mms/edp/mms_edp_set_metadata.py | 4 +- pyspedas/mms/eis/eis.py | 17 +- pyspedas/mms/eis/mms_eis_omni.py | 12 +- pyspedas/mms/eis/mms_eis_pad.py | 7 +- pyspedas/mms/eis/mms_eis_pad_spinavg.py | 8 +- pyspedas/mms/eis/mms_eis_set_metadata.py | 3 +- pyspedas/mms/eis/mms_eis_spec_combine_sc.py | 19 +- pyspedas/mms/eis/mms_eis_spin_avg.py | 8 +- pyspedas/mms/feeps/feeps.py | 58 +- pyspedas/mms/feeps/mms_feeps_active_eyes.py | 6 +- .../mms/feeps/mms_feeps_correct_energies.py | 15 +- pyspedas/mms/feeps/mms_feeps_energy_table.py | 12 +- .../feeps/mms_feeps_flat_field_corrections.py | 31 +- pyspedas/mms/feeps/mms_feeps_getgyrophase.py | 37 +- pyspedas/mms/feeps/mms_feeps_gpd.py | 38 +- pyspedas/mms/feeps/mms_feeps_omni.py | 30 +- pyspedas/mms/feeps/mms_feeps_pad.py | 32 +- pyspedas/mms/feeps/mms_feeps_pad_spinavg.py | 14 +- pyspedas/mms/feeps/mms_feeps_pitch_angles.py | 122 +-- .../mms/feeps/mms_feeps_remove_bad_data.py | 98 ++- pyspedas/mms/feeps/mms_feeps_remove_sun.py | 28 +- pyspedas/mms/feeps/mms_feeps_spin_avg.py | 26 +- .../mms/feeps/mms_feeps_split_integral_ch.py | 29 +- .../feeps/mms_read_feeps_sector_masks_csv.py | 13 +- ...MS1_FEEPS_ContaminatedSectors_20220815.csv | 64 ++ ...MS2_FEEPS_ContaminatedSectors_20220815.csv | 64 ++ ...MS3_FEEPS_ContaminatedSectors_20220815.csv | 64 ++ ...MS4_FEEPS_ContaminatedSectors_20220815.csv | 64 ++ pyspedas/mms/fgm/fgm.py | 20 +- pyspedas/mms/fgm/mms_curl.py | 28 +- pyspedas/mms/fgm/mms_fgm_remove_flags.py | 18 +- pyspedas/mms/fgm/mms_fgm_set_metadata.py | 9 +- pyspedas/mms/fgm/mms_lingradest.py | 25 +- pyspedas/mms/fgm/mms_split_fgm_data.py | 11 +- pyspedas/mms/fpi/fpi.py | 27 +- pyspedas/mms/fpi/mms_fpi_ang_ang.py | 86 ++ .../fpi/mms_fpi_make_compressionlossbars.py | 19 +- .../mms/fpi/mms_fpi_make_errorflagbars.py | 12 +- pyspedas/mms/fpi/mms_fpi_set_metadata.py | 13 +- pyspedas/mms/fpi/mms_fpi_split_tensor.py | 24 +- pyspedas/mms/fpi/mms_get_fpi_dist.py | 2 - pyspedas/mms/fpi/mms_load_fpi_calc_pad.py | 19 +- pyspedas/mms/fpi/mms_pad_fpi.py | 537 ++++++++++++ pyspedas/mms/fsm/fsm.py | 16 +- pyspedas/mms/hpca/hpca.py | 26 +- pyspedas/mms/hpca/mms_get_hpca_dist.py | 17 +- pyspedas/mms/hpca/mms_get_hpca_info.py | 1 - pyspedas/mms/hpca/mms_hpca_calc_anodes.py | 6 +- pyspedas/mms/hpca/mms_hpca_energies.py | 4 +- pyspedas/mms/hpca/mms_hpca_set_metadata.py | 15 +- pyspedas/mms/hpca/mms_hpca_spin_sum.py | 6 +- pyspedas/mms/mec/mec.py | 17 +- pyspedas/mms/mec/mms_mec_set_metadata.py | 19 +- .../mec_ascii/mms_get_local_state_files.py | 31 +- pyspedas/mms/mec_ascii/mms_get_state_data.py | 7 +- pyspedas/mms/mec_ascii/mms_load_att_tplot.py | 7 +- pyspedas/mms/mec_ascii/mms_load_eph_tplot.py | 9 +- pyspedas/mms/mec_ascii/state.py | 10 +- pyspedas/mms/mms_events.py | 73 ++ pyspedas/mms/mms_file_filter.py | 10 +- pyspedas/mms/mms_files_in_interval.py | 19 +- pyspedas/mms/mms_get_local_files.py | 30 +- pyspedas/mms/mms_load_brst_segments.py | 73 +- pyspedas/mms/mms_load_data.py | 40 +- pyspedas/mms/mms_load_data_spdf.py | 23 +- pyspedas/mms/mms_load_fast_segments.py | 20 +- pyspedas/mms/mms_load_sroi_segments.py | 12 +- pyspedas/mms/mms_login_lasp.py | 19 +- pyspedas/mms/mms_orbit_plot.py | 119 ++- pyspedas/mms/mms_tai2unix.py | 37 + pyspedas/mms/mms_update_brst_intervals.py | 96 +++ .../mms/particles/mms_convert_flux_units.py | 24 +- .../particles/mms_part_des_photoelectrons.py | 4 +- pyspedas/mms/particles/mms_part_getspec.py | 39 +- pyspedas/mms/particles/mms_part_products.py | 38 +- pyspedas/mms/particles/mms_part_slice2d.py | 24 +- pyspedas/mms/particles/mms_pgs_clean_data.py | 4 +- .../mms/particles/mms_pgs_clean_support.py | 79 +- pyspedas/mms/particles/mms_pgs_make_e_spec.py | 27 +- pyspedas/mms/particles/mms_pgs_make_fac.py | 20 +- .../mms/particles/mms_pgs_make_phi_spec.py | 33 +- .../mms/particles/mms_pgs_make_theta_spec.py | 28 +- pyspedas/mms/particles/mms_pgs_split_hpca.py | 4 +- pyspedas/mms/particles/moka_mms_clean_data.py | 74 ++ pyspedas/mms/print_vars.py | 9 +- pyspedas/mms/scm/mms_scm_set_metadata.py | 5 +- pyspedas/mms/scm/scm.py | 15 +- pyspedas/mms/spd_mms_load_bss.py | 7 +- pyspedas/mms/tests/cotrans.py | 57 +- pyspedas/mms/tests/curlometer.py | 2 +- pyspedas/mms/tests/data_rate_segments.py | 43 +- pyspedas/mms/tests/eis.py | 75 +- pyspedas/mms/tests/events.py | 19 + pyspedas/mms/tests/feeps.py | 38 +- pyspedas/mms/tests/fpi_tests.py | 112 ++- pyspedas/mms/tests/load_routine_tests.py | 243 +++--- pyspedas/mms/tests/mms_part_getspec.py | 120 +++ pyspedas/mms/tests/neutral_sheet.py | 62 ++ pyspedas/mms/tests/orbit_plots.py | 194 +++++ pyspedas/mms/tests/ql_l1b_sitl_tests.py | 31 +- pyspedas/mms/tests/setup_tests.py | 4 +- pyspedas/mms/tests/slice2d.py | 120 ++- pyspedas/mms/tests/wavpol.py | 4 +- pyspedas/omni/__init__.py | 7 +- pyspedas/omni/load.py | 11 +- pyspedas/omni/tests/tests.py | 23 +- .../moments/moments_3d_omega_weights.py | 2 +- pyspedas/particles/moments/spd_pgs_moments.py | 3 +- .../moments/spd_pgs_moments_tplot.py | 2 +- .../spd_part_products/spd_pgs_do_fac.py | 3 +- .../spd_part_products/spd_pgs_limit_range.py | 2 +- .../spd_part_products/spd_pgs_make_e_spec.py | 1 + .../spd_pgs_make_phi_spec.py | 1 + .../spd_pgs_make_theta_spec.py | 3 +- .../spd_part_products/spd_pgs_make_tplot.py | 7 +- .../spd_pgs_progress_update.py | 3 +- .../spd_part_products/spd_pgs_regrid.py | 8 +- .../particles/spd_slice2d/slice1d_plot.py | 3 +- pyspedas/particles/spd_slice2d/slice2d.py | 11 +- .../particles/spd_slice2d/slice2d_collate.py | 4 +- .../spd_slice2d/slice2d_custom_rotation.py | 3 +- pyspedas/particles/spd_slice2d/slice2d_geo.py | 4 +- .../particles/spd_slice2d/slice2d_get_data.py | 3 +- .../particles/spd_slice2d/slice2d_plot.py | 34 +- .../particles/spd_slice2d/slice2d_rotate.py | 15 +- .../particles/spd_slice2d/slice2d_smooth.py | 3 +- .../particles/spd_slice2d/slice2d_subtract.py | 5 +- .../particles/spd_slice2d/tplot_average.py | 20 +- pyspedas/particles/spd_units_string.py | 2 +- pyspedas/poes/__init__.py | 6 +- pyspedas/poes/load.py | 2 +- pyspedas/poes/tests/tests.py | 11 +- pyspedas/polar/__init__.py | 7 +- pyspedas/polar/load.py | 2 +- pyspedas/polar/tests/tests.py | 12 +- pyspedas/psp/__init__.py | 61 +- pyspedas/psp/load.py | 53 +- pyspedas/psp/rfs.py | 30 + pyspedas/psp/tests/tests.py | 103 ++- pyspedas/rbsp/README.md | 11 +- pyspedas/rbsp/__init__.py | 58 +- pyspedas/rbsp/load.py | 25 +- pyspedas/rbsp/rbspice_lib/__init__.py | 0 .../rbspice_lib/rbsp_load_rbspice_read.py | 87 ++ .../rbsp/rbspice_lib/rbsp_rbspice_omni.py | 93 +++ pyspedas/rbsp/rbspice_lib/rbsp_rbspice_pad.py | 172 ++++ .../rbspice_lib/rbsp_rbspice_pad_spinavg.py | 127 +++ .../rbsp/rbspice_lib/rbsp_rbspice_spin_avg.py | 122 +++ pyspedas/rbsp/tests/tests.py | 74 +- pyspedas/secs/__init__.py | 4 +- pyspedas/secs/load.py | 2 +- pyspedas/secs/makeplots.py | 4 +- pyspedas/secs/tests/tests.py | 47 ++ pyspedas/soho/README.md | 55 ++ pyspedas/soho/__init__.py | 310 +++++++ pyspedas/soho/config.py | 12 + pyspedas/soho/load.py | 73 ++ pyspedas/soho/tests/__init__.py | 0 pyspedas/soho/tests/tests.py | 39 + pyspedas/solo/__init__.py | 11 +- pyspedas/solo/load.py | 9 +- pyspedas/solo/tests/tests.py | 32 +- pyspedas/sosmag/README.md | 47 ++ pyspedas/sosmag/__init__.py | 0 pyspedas/sosmag/load.py | 535 ++++++++++++ pyspedas/sosmag/tests/__init__.py | 0 pyspedas/sosmag/tests/tests.py | 39 + pyspedas/st5/README.md | 25 + pyspedas/st5/__init__.py | 84 ++ pyspedas/st5/config.py | 12 + pyspedas/st5/load.py | 57 ++ pyspedas/st5/tests/__init__.py | 0 pyspedas/st5/tests/tests.py | 24 + pyspedas/stereo/README.md | 16 + pyspedas/stereo/__init__.py | 128 +++ pyspedas/stereo/load.py | 18 +- pyspedas/stereo/tests/tests.py | 28 +- pyspedas/swarm/load.py | 2 +- pyspedas/swarm/tests/tests.py | 11 +- pyspedas/themis/__init__.py | 6 +- pyspedas/themis/cotrans/__init__.py | 4 + pyspedas/themis/cotrans/dsl2gse.py | 149 ++-- pyspedas/themis/cotrans/gse2sse.py | 176 ++++ pyspedas/themis/cotrans/sse2sel.py | 158 ++++ pyspedas/themis/cotrans/ssl2dsl.py | 115 +++ pyspedas/themis/ground/gmag.py | 7 +- pyspedas/themis/load.py | 2 +- pyspedas/themis/spacecraft/fields/fit.py | 2 +- pyspedas/themis/state/__init__.py | 1 + .../state/apply_spinaxis_corrections.py | 87 ++ pyspedas/themis/state/autoload_support.py | 173 ++++ pyspedas/themis/state/slp.py | 15 +- pyspedas/themis/state/spinmodel/__init__.py | 0 pyspedas/themis/state/spinmodel/spinmodel.py | 669 +++++++++++++++ .../state/spinmodel/spinmodel_postprocess.py | 46 + .../state/spinmodel/spinmodel_segment.py | 118 +++ pyspedas/themis/state/state.py | 53 +- .../themis/tests/autoload_support_tests.py | 169 ++++ pyspedas/themis/tests/tests.py | 32 +- pyspedas/themis/tests/tests_dsl_cotrans.py | 287 +++++++ pyspedas/themis/tests/tests_lunar_cotrans.py | 279 +++++++ pyspedas/themis/tests/tests_spinmodel.py | 178 ++++ pyspedas/themis/tests/tests_state.py | 98 +++ pyspedas/themis/tests/tests_tplot_time.py | 117 +++ pyspedas/themis/tests/validation/dsl2gse.py | 2 +- pyspedas/themis/tests/validation/fgm.py | 25 - pyspedas/twins/__init__.py | 7 +- pyspedas/twins/load.py | 2 +- pyspedas/twins/tests/tests.py | 10 +- pyspedas/ulysses/__init__.py | 7 +- pyspedas/ulysses/load.py | 2 +- pyspedas/ulysses/tests/tests.py | 21 +- pyspedas/utilities/dailynames.py | 33 +- pyspedas/utilities/data_exists.py | 12 +- pyspedas/utilities/datasets.py | 14 + pyspedas/utilities/download.py | 159 +++- pyspedas/utilities/interpol.py | 8 +- pyspedas/utilities/leap_seconds.py | 55 ++ pyspedas/utilities/spice/__init__.py | 0 pyspedas/utilities/spice/time_ephemeris.py | 45 + pyspedas/utilities/tcopy.py | 9 +- pyspedas/utilities/tests/download_tests.py | 24 + pyspedas/utilities/tests/misc_tests.py | 23 +- pyspedas/utilities/tests/time_tests.py | 10 +- pyspedas/utilities/time_double.py | 47 +- pyspedas/utilities/time_string.py | 47 +- pyspedas/utilities/tkm2re.py | 66 +- pyspedas/utilities/tnames.py | 21 +- pyspedas/version.py | 3 +- pyspedas/vires/__init__.py | 17 + pyspedas/vires/config.py | 0 pyspedas/vires/load.py | 65 ++ pyspedas/wind/__init__.py | 13 +- pyspedas/wind/load.py | 47 +- pyspedas/wind/tests/tests.py | 103 ++- requirements.txt | 7 +- setup.py | 12 +- 405 files changed, 17308 insertions(+), 3176 deletions(-) create mode 100644 docs/pyspedas_plugin_development.pdf create mode 100644 docs/source/_static/cnofs_cindi.png create mode 100644 docs/source/_static/cnofs_plp.png create mode 100644 docs/source/_static/cnofs_vefi.png create mode 100644 docs/source/_static/rbsp_rbspice.png create mode 100644 docs/source/akebono.rst create mode 100644 docs/source/cnofs.rst create mode 100644 docs/source/de2.rst create mode 100644 docs/source/lanl.rst create mode 100644 docs/source/soho.rst create mode 100644 docs/source/st5.rst create mode 100644 pyspedas/akebono/README.md create mode 100644 pyspedas/akebono/__init__.py create mode 100644 pyspedas/akebono/config.py create mode 100644 pyspedas/akebono/load.py create mode 100644 pyspedas/akebono/tests/__init__.py create mode 100644 pyspedas/akebono/tests/tests.py create mode 100644 pyspedas/analysis/neutral_sheet.py create mode 100644 pyspedas/analysis/tests/test_twavpol.py create mode 100644 pyspedas/barrel/README.md create mode 100644 pyspedas/barrel/__init__.py create mode 100644 pyspedas/barrel/config.py create mode 100644 pyspedas/barrel/load.py create mode 100644 pyspedas/barrel/tests/__init__.py create mode 100644 pyspedas/barrel/tests/tests.py create mode 100644 pyspedas/cnofs/README.md create mode 100644 pyspedas/cnofs/__init__.py create mode 100644 pyspedas/cnofs/config.py create mode 100644 pyspedas/cnofs/load.py create mode 100644 pyspedas/cnofs/tests/__init__.py create mode 100644 pyspedas/cnofs/tests/tests.py create mode 100644 pyspedas/cotrans/matrix_array_lib.py create mode 100644 pyspedas/cotrans/quaternions.py create mode 100644 pyspedas/cotrans/tests/quaternions.py create mode 100644 pyspedas/cotrans/tests/test_minvar.py create mode 100644 pyspedas/cotrans/xyz_to_polar.py create mode 100644 pyspedas/de2/README.md create mode 100644 pyspedas/de2/__init__.py create mode 100644 pyspedas/de2/config.py create mode 100644 pyspedas/de2/load.py create mode 100644 pyspedas/de2/tests/__init__.py create mode 100644 pyspedas/de2/tests/tests.py create mode 100644 pyspedas/goes/load_orbit.py create mode 100644 pyspedas/hapi/tests/__init__.py create mode 100644 pyspedas/hapi/tests/tests.py create mode 100644 pyspedas/lanl/README.md create mode 100644 pyspedas/lanl/__init__.py create mode 100644 pyspedas/lanl/config.py create mode 100644 pyspedas/lanl/load.py create mode 100644 pyspedas/lanl/tests/__init__.py create mode 100644 pyspedas/lanl/tests/tests.py create mode 100644 pyspedas/maven/spdf/__init__.py create mode 100644 pyspedas/maven/spdf/config.py create mode 100644 pyspedas/maven/spdf/load.py create mode 100644 pyspedas/mms/feeps/sun/MMS1_FEEPS_ContaminatedSectors_20220815.csv create mode 100644 pyspedas/mms/feeps/sun/MMS2_FEEPS_ContaminatedSectors_20220815.csv create mode 100644 pyspedas/mms/feeps/sun/MMS3_FEEPS_ContaminatedSectors_20220815.csv create mode 100644 pyspedas/mms/feeps/sun/MMS4_FEEPS_ContaminatedSectors_20220815.csv create mode 100644 pyspedas/mms/fpi/mms_pad_fpi.py create mode 100644 pyspedas/mms/mms_events.py create mode 100644 pyspedas/mms/mms_tai2unix.py create mode 100644 pyspedas/mms/mms_update_brst_intervals.py create mode 100644 pyspedas/mms/particles/moka_mms_clean_data.py create mode 100644 pyspedas/mms/tests/events.py create mode 100644 pyspedas/mms/tests/mms_part_getspec.py create mode 100644 pyspedas/mms/tests/neutral_sheet.py create mode 100644 pyspedas/mms/tests/orbit_plots.py create mode 100644 pyspedas/psp/rfs.py create mode 100644 pyspedas/rbsp/rbspice_lib/__init__.py create mode 100644 pyspedas/rbsp/rbspice_lib/rbsp_load_rbspice_read.py create mode 100644 pyspedas/rbsp/rbspice_lib/rbsp_rbspice_omni.py create mode 100644 pyspedas/rbsp/rbspice_lib/rbsp_rbspice_pad.py create mode 100644 pyspedas/rbsp/rbspice_lib/rbsp_rbspice_pad_spinavg.py create mode 100644 pyspedas/rbsp/rbspice_lib/rbsp_rbspice_spin_avg.py create mode 100644 pyspedas/secs/tests/tests.py create mode 100644 pyspedas/soho/README.md create mode 100644 pyspedas/soho/__init__.py create mode 100644 pyspedas/soho/config.py create mode 100644 pyspedas/soho/load.py create mode 100644 pyspedas/soho/tests/__init__.py create mode 100644 pyspedas/soho/tests/tests.py create mode 100644 pyspedas/sosmag/README.md create mode 100644 pyspedas/sosmag/__init__.py create mode 100644 pyspedas/sosmag/load.py create mode 100644 pyspedas/sosmag/tests/__init__.py create mode 100644 pyspedas/sosmag/tests/tests.py create mode 100644 pyspedas/st5/README.md create mode 100644 pyspedas/st5/__init__.py create mode 100644 pyspedas/st5/config.py create mode 100644 pyspedas/st5/load.py create mode 100644 pyspedas/st5/tests/__init__.py create mode 100644 pyspedas/st5/tests/tests.py create mode 100644 pyspedas/themis/cotrans/gse2sse.py create mode 100644 pyspedas/themis/cotrans/sse2sel.py create mode 100644 pyspedas/themis/cotrans/ssl2dsl.py create mode 100644 pyspedas/themis/state/apply_spinaxis_corrections.py create mode 100644 pyspedas/themis/state/autoload_support.py create mode 100644 pyspedas/themis/state/spinmodel/__init__.py create mode 100644 pyspedas/themis/state/spinmodel/spinmodel.py create mode 100644 pyspedas/themis/state/spinmodel/spinmodel_postprocess.py create mode 100644 pyspedas/themis/state/spinmodel/spinmodel_segment.py create mode 100644 pyspedas/themis/tests/autoload_support_tests.py create mode 100644 pyspedas/themis/tests/tests_dsl_cotrans.py create mode 100644 pyspedas/themis/tests/tests_lunar_cotrans.py create mode 100644 pyspedas/themis/tests/tests_spinmodel.py create mode 100644 pyspedas/themis/tests/tests_state.py create mode 100644 pyspedas/themis/tests/tests_tplot_time.py delete mode 100644 pyspedas/themis/tests/validation/fgm.py create mode 100644 pyspedas/utilities/datasets.py create mode 100644 pyspedas/utilities/leap_seconds.py create mode 100644 pyspedas/utilities/spice/__init__.py create mode 100644 pyspedas/utilities/spice/time_ephemeris.py create mode 100644 pyspedas/vires/__init__.py create mode 100644 pyspedas/vires/config.py create mode 100644 pyspedas/vires/load.py diff --git a/.coveragerc b/.coveragerc index 013b0fd4..5c0ca9b7 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,6 +1,21 @@ [run] +source_pkgs = + pyspedas + pytplot omit = - /home/travis/virtualenv/* - */site-packages/* */bin/* */docs/* + */QtPlotter/* + */pyspedas/utilities/data_exists.py + */pyspedas/utilities/time_double.py + */pyspedas/utilities/time_string.py + */pyspedas/utilities/tkm2re.py + */pyspedas/utilities/tnames.py + */pyspedas/analysis/clean_spikes.py + */pyspedas/analysis/subtract_average.py + */pyspedas/analysis/subtract_median.py + */pyspedas/analysis/tcross.py + */pyspedas/analysis/tdotp.py + */pyspedas/analysis/time_clip.py + */pyspedas/analysis/tnormalize.py + */pyspedas/analysis/tsmooth.py diff --git a/.github/workflows/pythonpackage.yml b/.github/workflows/pythonpackage.yml index e96cc2dc..d8634fda 100644 --- a/.github/workflows/pythonpackage.yml +++ b/.github/workflows/pythonpackage.yml @@ -10,10 +10,10 @@ jobs: matrix: #python-version: [3.5, 3.6, 3.7, 3.8] #os: [ubuntu-latest, macos-latest, windows-latest] - os: [macos-latest] + os: [ubuntu-latest] #os: [ubuntu-latest] #os: [windows-latest] - python-version: [3.9] + python-version: [3.8] steps: - uses: actions/checkout@v2 @@ -21,26 +21,41 @@ jobs: uses: actions/setup-python@v1 with: python-version: ${{ matrix.python-version }} - if: github.ref == 'refs/heads/master' + if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/eric-superfast' || github.ref == 'refs/heads/themis' - name: Install dependencies (Linux) + env: + MMS_AUTH_U: ${{ secrets.MMS_AUTH_U }} + MMS_AUTH_P: ${{ secrets.MMS_AUTH_P }} run: | python -m pip install --upgrade pip pip install -r requirements.txt + pip install spacepy # required for MMS qcotrans tests pip install coveralls + pip install basemap python -m pyspedas.mms.tests.setup_tests - if: matrix.os == 'ubuntu-latest' && github.ref == 'refs/heads/master' + if: matrix.os == 'ubuntu-latest' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/eric-superfast' || github.ref == 'refs/heads/themis') - name: Install dependencies (Windows) + env: + MMS_AUTH_U: ${{ secrets.MMS_AUTH_U }} + MMS_AUTH_P: ${{ secrets.MMS_AUTH_P }} run: | python -m pip install --upgrade pip pip install -r requirements.txt + pip install spacepy # required for MMS qcotrans tests pip install coveralls + pip install basemap python -m pyspedas.mms.tests.setup_tests if: matrix.os == 'windows-latest' && github.ref == 'refs/heads/master' - name: Install dependencies (macOS) + env: + MMS_AUTH_U: ${{ secrets.MMS_AUTH_U }} + MMS_AUTH_P: ${{ secrets.MMS_AUTH_P }} run: | python -m pip install --upgrade pip pip install -r requirements.txt + pip install spacepy # required for MMS qcotrans tests pip install coveralls + pip install basemap python -m pyspedas.mms.tests.setup_tests if: matrix.os == 'macos-latest' && github.ref == 'refs/heads/master' - name: Lint with flake8 @@ -48,27 +63,75 @@ jobs: run: | pip install flake8 # stop the build if there are Python syntax errors or undefined names - flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics --exclude 'erg' # exit-zero treats all errors as warnings. - flake8 . --count --exit-zero --max-complexity=10 --statistics # --max-line-length=127 + flake8 . --count --exit-zero --max-complexity=10 --statistics # --max-line-length=127 --exclude 'erg' - name: Test with unittest - if: github.ref == 'refs/heads/master' + if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/eric-superfast' || github.ref == 'refs/heads/themis' env: COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} + SPEDAS_DATA_DIR: data + ACE_DATA_DIR: ace_data/ + BARREL_DATA_DIR: barrel_data/ + CLUSTER_DATA_DIR: cluster_data/ + DSC_DATA_DIR: dsc_data/ + CSSWE_DATA_DIR: csswe_data/ + EQUATORS_DATA_DIR: eqs_data/ + FAST_DATA_DIR: fast_data/ + GEOTAIL_DATA_DIR: geotail_data/ + GOES_DATA_DIR: goes_data/ + IMAGE_DATA_DIR: img_data/ + MICA_DATA_DIR: mica_data/ + MMS_DATA_DIR: mms_data/ + OMNI_DATA_DIR: omni_data/ + POES_DATA_DIR: poes_data/ + POLAR_DATA_DIR: polar_data/ + PSP_DATA_DIR: psp_data/ + RBSP_DATA_DIR: rbsp_data/ + SOLO_DATA_DIR: solo_data/ + STEREO_DATA_DIR: stereo_data/ + THM_DATA_DIR: themis_data/ + TWINS_DATA_DIR: twins_data/ + ULY_DATA_DIR: uly_data/ + WIND_DATA_DIR: wind_data/ + LANL_DATA_DIR: lanl_data/ + CNOFS_DATA_DIR: cnofs_data/ + ST5_DATA_DIR: st5_data/ + PYTPLOT_LOGGING_LEVEL: error run: | + # coverage run -a -m pyspedas.akebono.tests.tests + coverage run -a -m pyspedas.barrel.tests.tests + coverage run -a -m pyspedas.soho.tests.tests + coverage run -a -m pyspedas.de2.tests.tests + coverage run -a -m pyspedas.st5.tests.tests + coverage run -a -m pyspedas.lanl.tests.tests + coverage run -a -m pyspedas.cotrans.tests.quaternions + coverage run -a -m pyspedas.cnofs.tests.tests + coverage run -a -m pyspedas.secs.tests.tests + coverage run -a -m pyspedas.sosmag.tests.tests + coverage run -a -m pyspedas.hapi.tests.tests + coverage run -a -m pyspedas.mms.tests.cotrans + coverage run -a -m pyspedas.mms.tests.events + coverage run -a -m pyspedas.mms.tests.orbit_plots + coverage run -a -m pyspedas.mms.tests.neutral_sheet + coverage run -a -m pyspedas.mms.tests.ql_l1b_sitl_tests + coverage run -a -m pyspedas.mms.tests.mms_part_getspec coverage run -a -m pyspedas.mms.tests.load_routine_tests coverage run -a -m pyspedas.mms.tests.feeps - # coverage run -a -m pyspedas.mms.tests.eis + coverage run -a -m pyspedas.mms.tests.eis coverage run -a -m pyspedas.mms.tests.fpi_tests coverage run -a -m pyspedas.mms.tests.file_filter coverage run -a -m pyspedas.mms.tests.data_rate_segments coverage run -a -m pyspedas.mms.tests.curlometer coverage run -a -m pyspedas.mms.tests.wavpol + coverage run -a -m pyspedas.mms.tests.slice2d coverage run -a -m pyspedas.dscovr.tests.tests coverage run -a -m pyspedas.utilities.tests.download_tests coverage run -a -m pyspedas.utilities.tests.misc_tests coverage run -a -m pyspedas.utilities.tests.time_tests coverage run -a -m pyspedas.cotrans.tests.cotrans + coverage run -a -m pyspedas.cotrans.tests.quaternions + coverage run -a -m pyspedas.cotrans.tests.test_minvar coverage run -a -m pyspedas.cluster.tests.tests coverage run -a -m pyspedas.csswe.tests.tests coverage run -a -m pyspedas.ace.tests.tests @@ -81,8 +144,10 @@ jobs: coverage run -a -m pyspedas.wind.tests.tests coverage run -a -m pyspedas.poes.tests.tests coverage run -a -m pyspedas.polar.tests.tests + coverage run -a -m pyspedas.geopack.tests.tests coverage run -a -m pyspedas.geotail.tests.tests coverage run -a -m pyspedas.analysis.tests.tests + coverage run -a -m pyspedas.analysis.tests.test_twavpol coverage run -a -m pyspedas.fast.tests.tests coverage run -a -m pyspedas.omni.tests.tests coverage run -a -m pyspedas.themis.tests.tests @@ -95,4 +160,10 @@ jobs: coverage run -a -m pyspedas.kyoto.tests.tests coverage run -a -m pyspedas.swarm.tests.tests coverage run -a -m pyspedas.themis.tests.tests_themis_check_args + coverage run -a -m pyspedas.themis.tests.tests_cal_fit + coverage run -a -m pyspedas.themis.tests.tests_dsl_cotrans + coverage run -a -m pyspedas.themis.tests.tests_lunar_cotrans + coverage run -a -m pyspedas.themis.tests.tests_spinmodel + coverage run -a -m pyspedas.themis.tests.tests_state + coverage run -a -m pyspedas.themis.tests.test_cal_fit_tplot_metadata coveralls diff --git a/README.md b/README.md index d2039e07..8648b003 100644 --- a/README.md +++ b/README.md @@ -3,31 +3,27 @@ [![build](https://github.com/spedas/pyspedas/workflows/build/badge.svg)](https://github.com/spedas/pyspedas/actions) [![Coverage Status](https://coveralls.io/repos/github/spedas/pyspedas/badge.svg)](https://coveralls.io/github/spedas/pyspedas) [![Version](https://img.shields.io/pypi/v/pyspedas.svg)](https://pypi.org/project/pyspedas/) -[![Language grade: Python](https://img.shields.io/lgtm/grade/python/g/spedas/pyspedas.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/spedas/pyspedas/context:python) ![Status](https://img.shields.io/pypi/status/pyspedas.svg) ![License](https://img.shields.io/pypi/l/pyspedas.svg) -PySPEDAS is an implementation of the SPEDAS framework for Python. - -The Space Physics Environment Data Analysis Software ([SPEDAS](http://spedas.org/wiki)) framework is written in IDL and contains data loading, data analysis and data plotting tools for various scientific missions (NASA, NOAA, etc.) and ground magnetometers. - -Please see our documentation at: - -https://pyspedas.readthedocs.io/ - +The Python-based Space Physics Environment Data Analysis Software (PySPEDAS) framework supports multi-mission, multi-instrument retrieval, analysis, and visualization of heliophysics time series data. ## Projects Supported - [Advanced Composition Explorer (ACE)](https://pyspedas.readthedocs.io/en/latest/ace.html) +- [Akebono](https://pyspedas.readthedocs.io/en/latest/akebono.html) - [Arase (ERG)](https://pyspedas.readthedocs.io/en/latest/erg.html) - [Cluster](https://pyspedas.readthedocs.io/en/latest/cluster.html) - [Colorado Student Space Weather Experiment (CSSWE)](https://pyspedas.readthedocs.io/en/latest/csswe.html) +- [Communications/Navigation Outage Forecasting System (C/NOFS)](https://pyspedas.readthedocs.io/en/latest/cnofs.html) - [Deep Space Climate Observatory (DSCOVR)](https://pyspedas.readthedocs.io/en/latest/dscovr.html) +- [Dynamics Explorer 2 (DE2)](https://pyspedas.readthedocs.io/en/latest/de2.html) - [Equator-S](https://pyspedas.readthedocs.io/en/latest/equator-s.html) - [Fast Auroral Snapshot Explorer (FAST)](https://pyspedas.readthedocs.io/en/latest/fast.html) - [Geotail](https://pyspedas.readthedocs.io/en/latest/geotail.html) - [Geostationary Operational Environmental Satellite (GOES)](https://pyspedas.readthedocs.io/en/latest/goes.html) - [Imager for Magnetopause-to-Aurora Global Exploration (IMAGE)](https://pyspedas.readthedocs.io/en/latest/image.html) - [Kyoto Dst Index](https://pyspedas.readthedocs.io/en/latest/kyoto.html) +- [LANL](https://pyspedas.readthedocs.io/en/latest/lanl.html) - [Mars Atmosphere and Volatile Evolution (MAVEN)](https://pyspedas.readthedocs.io/en/latest/maven.html) - [Magnetic Induction Coil Array (MICA)](https://pyspedas.readthedocs.io/en/latest/mica.html) - [Magnetospheric Multiscale (MMS)](https://pyspedas.readthedocs.io/en/latest/mms.html) @@ -35,8 +31,10 @@ https://pyspedas.readthedocs.io/ - [Polar Orbiting Environmental Satellites (POES)](https://pyspedas.readthedocs.io/en/latest/poes.html) - [Polar](https://pyspedas.readthedocs.io/en/latest/polar.html) - [Parker Solar Probe (PSP)](https://pyspedas.readthedocs.io/en/latest/psp.html) +- [Solar & Heliospheric Observatory (SOHO)](https://pyspedas.readthedocs.io/en/latest/soho.html) - [Solar Orbiter (SOLO)](https://pyspedas.readthedocs.io/en/latest/solo.html) - [Solar Terrestrial Relations Observatory (STEREO)](https://pyspedas.readthedocs.io/en/latest/stereo.html) +- [Space Technology 5 (ST5)](https://pyspedas.readthedocs.io/en/latest/st5.html) - [Spherical Elementary Currents (SECS)](https://github.com/spedas/pyspedas/blob/master/pyspedas/secs/README.md) - [Swarm](https://github.com/spedas/pyspedas/blob/master/pyspedas/swarm/README.md) - [Time History of Events and Macroscale Interactions during Substorms (THEMIS)](https://pyspedas.readthedocs.io/en/latest/themis.html) @@ -47,13 +45,13 @@ https://pyspedas.readthedocs.io/ ## Requirements -Python 3.7+ is required. +Python 3.8+ is required. We recommend [Anaconda](https://www.continuum.io/downloads/) which comes with a suite of packages useful for scientific data analysis. Step-by-step instructions for installing Anaconda can be found at: [Windows](https://docs.anaconda.com/anaconda/install/windows/), [macOS](https://docs.anaconda.com/anaconda/install/mac-os/), [Linux](https://docs.anaconda.com/anaconda/install/linux/) ## Installation -### Setup your Virtual Environment +### Virtual Environment To avoid potential dependency issues with other Python packages, we suggest creating a virtual environment for PySPEDAS; you can create a virtual environment in your terminal with: ```bash @@ -158,6 +156,54 @@ stereo_files = pyspedas.stereo.mag(trange=['2013-11-1', '2013-11-6'], downloadon - `no_update`: if set, only load the data from the local cache - `notplot`: if set, load the variables into dictionaries containing numpy arrays (instead of creating the tplot variables) +## Examples +Please see the following notebooks for examples of using PySPEDAS +### PyTplot Basics +- [Introduction to PyTplot](https://github.com/spedas/pyspedas_examples/blob/master/pyspedas_examples/notebooks/Introduction_to_PyTplot.ipynb) + +### Loading Data +- [MMS examples](https://github.com/spedas/mms-examples/tree/master/basic) +- [THEMIS examples](https://github.com/spedas/themis-examples/tree/main/basic) +- [Load data from HAPI servers](https://github.com/spedas/pyspedas_examples/blob/master/pyspedas_examples/notebooks/PySPEDAS_loading_data_from_HAPI_servers.ipynb) +- [Exploring the Heliosphere with Python](https://github.com/spedas/pyspedas_examples/blob/master/pyspedas_examples/notebooks/Exploring_the_Heliosphere_with_Python.ipynb) + +### Plotting +- [Annotations](https://github.com/spedas/pyspedas_examples/blob/master/pyspedas_examples/notebooks/PyTplot_annotations.ipynb) +- [Range options](https://github.com/spedas/pyspedas_examples/blob/master/pyspedas_examples/notebooks/PyTplot_range_options.ipynb) +- [Spectrogram options](https://github.com/spedas/pyspedas_examples/blob/master/pyspedas_examples/notebooks/PyTplot_spectrogram_options.ipynb) +- [Legend options](https://github.com/spedas/pyspedas_examples/blob/master/pyspedas_examples/notebooks/PyTplot_legend_options.ipynb) +- [Markers and symbols](https://github.com/spedas/pyspedas_examples/blob/master/pyspedas_examples/notebooks/PyTplot_markers_and_symbols.ipynb) +- [Error bars](https://github.com/spedas/pyspedas_examples/blob/master/pyspedas_examples/notebooks/PyTplot_error_bars.ipynb) +- [Pseudo variables](https://github.com/spedas/pyspedas_examples/blob/master/pyspedas_examples/notebooks/PyTplot_pseudo_variables.ipynb) +- [Highlight intervals and vertical bars](https://github.com/spedas/pyspedas_examples/blob/master/pyspedas_examples/notebooks/PyTplot_highlight_intervals_and_vertical_bars.ipynb) + +Additional examples of loading and plotting data can be found in the documentation for the project you're interested in ([PySPEDAS projects](https://pyspedas.readthedocs.io/en/latest/projects.html)), as well as the project's README file. + +### Dates and Times +- [Working with dates and times](https://github.com/spedas/pyspedas_examples/blob/master/pyspedas_examples/notebooks/Working_with_dates_and_times_with_PySPEDAS_PyTplot.ipynb) + +### Coordinate Transformations +- [Coordinate transformations](https://github.com/spedas/pyspedas_examples/blob/master/pyspedas_examples/notebooks/Coordinate_transformations_with_OMNI_data.ipynb) +- [Boundary normal (LMN) coordinates](https://github.com/spedas/mms-examples/blob/master/advanced/MMS_LMN_coordinate_transformation.ipynb) +- [Quaternion transformations with SpacePy](https://github.com/spedas/mms-examples/blob/master/basic/MMS_quaternion_coordinate_transformations.ipynb) + +### Analysis +- [Plasma calculations with PlasmaPy](https://github.com/spedas/mms-examples/blob/master/advanced/Plasma%20calculations%20with%20PlasmaPy.ipynb) +- [Poynting flux with MMS data](https://github.com/spedas/mms-examples/blob/master/advanced/Poynting_flux_with_MMS_data.ipynb) +- [Plasma beta with MMS data](https://github.com/spedas/mms-examples/blob/master/basic/Plasma%20Beta%20with%20FGM%20and%20FPI%20data.ipynb) (note: the PlasmaPy notebook above shows a much easier method) +- [Curlometer calculations](https://github.com/spedas/mms-examples/blob/master/basic/Curlometer%20Technique.ipynb) +- [Neutral sheet models](https://github.com/spedas/mms-examples/blob/master/advanced/MMS_neutral_sheet_models.ipynb) +- [Wave polarization calculations](https://github.com/spedas/mms-examples/blob/master/advanced/Wave_polarization_using_SCM_data.ipynb) +- [Dynamic power spectra calculations](https://github.com/spedas/mms-examples/blob/master/basic/Search-coil%20Magnetometer%20(SCM).ipynb) +- [2D slices of MMS distribution functions](https://github.com/spedas/mms-examples/blob/master/advanced/Generate_2D_slices_of_FPI_and_HPCA_data.ipynb) +- [Generating spectrograms and moments from MMS distribution functions](https://github.com/spedas/mms-examples/blob/master/advanced/Generate%20spectrograms%20and%20moments%20with%20mms_part_getspec.ipynb) + + +## Documentation +For more information, please see our HTML documentation at: + +https://pyspedas.readthedocs.io/ + ## Getting Help To find the options supported, call `help` on the instrument function you're interested in: ```python @@ -169,6 +215,11 @@ You can ask questions by creating an issue or by joining the [SPEDAS mailing lis ## Contributing We welcome contributions to PySPEDAS; to learn how you can contribute, please see our [Contributing Guide](https://github.com/spedas/pyspedas/blob/master/CONTRIBUTING.md) +## Plug-in Development +An introduction to PySPEDAS plug-in development can be found here: + +[Introduction to PySPEDAS plug-in development](https://github.com/spedas/pyspedas/tree/master/docs/pyspedas_plugin_development.pdf) + ## Code of Conduct 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, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. To learn more, please see our [Code of Conduct](https://github.com/spedas/pyspedas/blob/master/CODE_OF_CONDUCT.md). diff --git a/docs/pyspedas_plugin_development.pdf b/docs/pyspedas_plugin_development.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4287da47547816077ad248d66098c7c740b01f30 GIT binary patch literal 2821036 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

RWalDl^ux#wG;yE1K`vu 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

e**6ojh3NHbATmMAPd?`U{-*}7WMEI+^e86QN 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 #64hh@jF97M-+g)aBEMNy zi`ZDNGpk#K|LRzC0U|b@5_SJ-&;|Xg3zt|WCyoNDhvgDzkvX+a3<%TsnESUW)g#)h zlVfZyF~D9+ua-FbzKZR`?N6ba0*EVz=B9XGF61#>y(#946$)@l99q6p#}N?FrEuAr zJA&t8KCK_Isdc&UQ_^@iMJ%n>li2n~S-Q`k*4SQKWd!lNhj7I9oSw+i1-B4i0h`d6 zv4v@(`9V)LN?8Q@2dYWRu9)MH!h1~5`NqDIFeqi`D4(HtqMs35Tc8l?8y@U;ltl6G z)RqCBvIR}0)05JM{seZcsBY0^)4PGe^aV>ZQWmIa_bF%b3h_N|)obl%=$*zVPrDR@L@*Daw>Vze=&i6m z%~k~gzD}QF+>?nxPAqCj?v+&_x^tANZfT+XKGl))GO8~~i|4YewS^53uX@rsh)KQy zeC8!;t4ELaM$Gk$__C(pUWP@66U#A59VgrL2g7##4KKfp8;j+4$v{^dczt$~{f_6f zaY7OvChrx^C5G`UQ522dE?a(*C79_VeV3^MqlpeTAJ6q5&~zy_W@_l#;Q@ZS#pAk{;j?zXY2Gslt2SxrQ=pM(JJ>1eT9!xIjK?h~uV%jc9Mq(u+j_t=teFTg?oqf?%b=eex%9qQ3gKGou+t z$GN^r}Z{NB_(mYnDX{V(< zlI46Kbpm|JgQSkAwG62sf>rAg1qO*#Q87CtO%Zd6Z4Krs$DAFpI^b(q_ErJv2-E8o z3LppSmGMP~JBb`iqWw&!iW`7i|K$p*r?rB3%gp40&4U4gz}ISK8`lcv2)I`L%x?4` zSR3RL`UsWj8EMVU7J1RokTusU0*1aGLYtXX9^qDi0vE1E;z)w^Io{e z)A^dsb|;`SBIwbptZvT;m%Ux`_;5~@ADZ?%-#@y5t_N-E*m+gTmOg<#?Gg>0j7EW=0n8d2hm8gX#Hq5 zG7>>jD?Fh@!VDI|RCPJwXS7c6>t~{a)e$H+A|JGTK4)aSfPQIpij@_`$*a<|>BU5$ zBT6RPqZDn2CWmr0bfeBagx`iAbT+@TSHe#AeOI8KCjDp?mNL5VXlyD8?&^v1Pk=tF zD4eQU(_T+I$nr0=6UjUI;(+PnMo+JOY-5oTb^p;3y@5mEco`6dt9jQ85mB}i)rJ{e zn#>49p>BpWIaQ+(N)za74f5rYv2Le^y>(6TAB|rM%Ri}+In}0pI z)fATTJifejleN_-&ZsoUBG@lMq@}^$%l_@XBLw5U`B(3EJZoEuES<7X5(>>g5cy9z z+US80a-58Q{y*!`@7_}EnSpB5MN0~`4cYjRRy8Z9xa=`KU~t|T;)q`Ob+ViID+Eh>euf- zF5K7n@C>%1Jj4~hBk!6O{=;n<={EVf58U)xmpRut?9TXD$t8*N1F!aF z8&FY~Cv%XFqrW0_3Hx^xh%6OKhg{(y*M73LzET9`gPL z8n1eWIUdO$u|uZo8tn=1Eps2ws~R7U66~cmx=#X|X&7NnO|xI5D7nyOo^K=sNhmmv zD)(4T@<&-jCXau0JHBkS+-eSp%L3{LT(eO3AXrxqo^BM3`r%R&SlG8B;vnoO2{e^( zmdh%HDkaRg9>vgeg%n?S?b&TV0e#Ebl0;FqXT|&x=Xx8PtK=$7e}LJT- zdJIr9<-W^wO5tovH8(#Cxuov8!W2=o5f-f;6nUdZOf1~&8CmO9JB`SM7}h*wi~I)) zU$ZM8ewt<7QSLl*;Xe$8lBI6>z6|^{7oYHC-8)kMvK1X}DBC3m2%VTgQ$t;eiX!n0 zi!KFBQZ(!LMDZ(k>cxN3OMTWP=K&c`y3VxXSZksO<9_|2TpiaCbkP&xgqHDftL6mv z#&~+giLGogAK41=*Q4dWc`1$lk@sbCGr>pYR!7hUAcoTlA8&f;<3{jx|`V3q!C^m zU>eajXAd9l( zUiRsWSs&w%g4|p<>~0DGD&D`2L>C-5V+DjLF9y72>@g^SNlMd<EH$&;igb|~qpeXw?H&a}r5c5r8RPb; z{iV7s?QV87M=iG>dbalYZLd+L>gJ5N8o{bf?U;z zm@LzhAV$MGQ{@t{UF;S2VWr7G&IKsfY2v-p#({OZN%i^%#p8h_5#l%YS`^OGKX2d! zTJ(t?izva@jx*jg2IlR2-e(069jdr;1b6@JnAF%rAhS+KKW5M#2c(9E$P%QFwU^Fb ze*h-LN7q?@yC#Ycd|}m>ZN^Pn@T2x6I#>T&6Z_uFmS>HZ8=`6C&=XJny`8-_$D^O0ZHbXRF zxrs_p4~d>SI_Rz$(lI8XUc{fzK^Hgx(Q^uULss*uH}6wVhPit&TL${a zNJj%Tzgq)*Mh%q_E8l?5qWjgKQVMQD6m~`xUM%ygl1uXmlxM_)ci`-_LIZcr315pF z=6p~omMGN_Q%M8@GAUUytGR&tiJWwSs|1V#%riOKkIa%YzBZ+?9UTf9Xhsxiy*464 z5CT1Nfr3AT5A&3GlfO#&Xi=nlx{*>tre|K&F${Y0_t0!TEpcFdq5Fm-F*T|>N(6diQ zS|SRf;<#6x_m)nhjii^>J#P7KEpj3Xjnwm1S}cY7HYUD#7dP0Z&}-3+=I#C}67m)* zoXqz9g71C?cb}+AlY}h9@lNlrBce|?r|NyrP7SBMocg*-4ZW+si=|s&oDJ80ts>s2 zKgxHT7cT%Iob9)SKdfJ&pgYBTq@Avexd9vC*0bo@q}|89OSoT!J3yzqW8E9Smkgz+ z${9H~TuM0Hoy`p`)J8axg=tJPl<9LTXpasd$ zJEU1)wcyCz?TqTeP+38PE~puk2E_M_3cx#Eyt=DZEI_;KJ3K@vhl-tlR_=mHc)Y1b_OrRW#^&fupP-xkrjS>5qPq z#D{=x0-pOD^!Hhfe#yGmx3^a_L!Ma=e7QdPHhJ)6=`x0pA_#iqNr|{NTMz904xU%( zU~^Y|S6-#d6#lpr9$U~{^W*5{1r*JaZYD>NmXms%5HfbW_bTt3%VXtv!RwdUDOA1( zd|P1vAh1 z(S$9j_Jml%iY3}bXTWayP|Mr8R>~X5i}X`5M|-UFJ0JaQaGTcyr=ez>0*Vj?J&hiH zB{UB4yFFKK{juBLZ*O3aMM7w8B2Vk!*_ZaJ{BXRL{)l+JQU=G6x5$K4{+4nQ+Z1#l zxt^CpvI^X;xego|W!Lmsnp@rt{4m2WKNqU^3pAMRr1qXVW4w@Q!gQlXg}&X*Kt~kU z0g^l(iW7z|&jveAienO3%t1(*lTmPBkatZgfVG`xXEsDO31KRki@@_51 z*9jVyz01lQkk7{cz=XWe#7aq!Dg|1Q)Fx&1x&gMD0?mkM^F#{+M8gr`&3vCeE*tEimiTC$BwxMm}iH+G}o)D3!Q-Cl6PT z3(t3)8zh*->|MLG?-k&28z~GlwskNy2oZfm&Iat7rI}FWyEg~eQ0-a44S_&?0FHqc=VZ*5Q5?-@0 z|A@T!>{Y3}cdtc1x%F2k@D&12`^!x~K31mP%jhYgy%wTLfEw6~?W^FF#lJka@p(N7B{zMBg-;#0UF_P`kq$?w@BIJ}|a zu;x1|KB9S65kf=RqCZJemuPif z@{rwxc*~Pi!FLH7UM!KRX@Hsi`Kuh+u2@>Xjb3gdU~&WwG2&}qh$RfncTYQpOSJ;c)%4L|zctm_G=h7~Jp;N_0rKnxm_}ZPavcBE$e83I= zif)%U+dMgjknowGS>f7i2o}`rrzH63S_=vBlG$hL4@932>n=XUFl$#;_Sav{K7+G2 z?125atjik_K8b_G8s>drGPh!5QB6#2FX_UeT6GNLZ|g_aZTP-~N-(o?o09&V^MfQhw77 zy`kFJfS{`aI1$G*%sfps!*uw5eo$Illx!bfByDYrz66 zF$DgNa6I3ttf;8UbKe-pBH@=GJ;Umi6yWD((EFujSr4XLXKr2!6e zIDt1Oj_@t1m)i+G6=3;31O5CrQz$2!Sxoh07K71)QYP@s*<7Whk8T!el^wKkseOVl zi=Om2-CuuWe6NqPTcu^YgcYOJh!NMIJ8>l2fGkMCiz}5s zPvBVE*A&s~uu~R;lXn*`5i`GSdPluY^WoHt#i-;u@A1vNGgZXcav15LhE=ILdEgj45}Quf1OR!g&=N}7#w3x*aP#ZN9DZ3y6FS4H$%Jm1{f zw;a7X1`iE`UEa64W3XK2PArCTEM0pkfc@(=AuG$`!NG zB(AfeLgP9o8fA7!%_{**)y;?wj4fYn_UNq`BqFIhmp+^dzg>8({p}X?MD8`1c4sWl z>9gbUq55t0dlz2WNoy)7!wfjcajo#Ijl+f=&gDvDcqRT_cA1RFD2#^NXKrn=cp84X z$JPtoRUc2D>FY_!rtlG^d#=g*J+!Q zcjFj6u(5@z-N{PQlJUaq;;wQxK)2A5-BG~UpqD($Dv{P7PUO86)*A61mBl&6K2j$T z>f5TD`l}zchPPz2k~>aIt&GEskH(*p;j|s!F~lqd=IM;NeG$N2&uGryUm{jwN#+e5ci%6^4Ku!VSJz7T#o8r|zhp3(O6$8o;5 z<|z2xPd)s~k=3Eh_^F$gkH0#1skTO)-OQO$rG(Ho5Akn%+R8#ykhF32q;=}D1Ff?f zd}A%BlIE`YYUP(`?_F`Dnz`{LOu&$S)zx*O9NqyX-f3;Qi^Z$KzX0gj9vg>+8uh2Qt7~H_w?s=^( zdK?NrbsQZ|^JJ@h%IggFx>rhR4ACcqZC4QtV6s{3u+8&jWsu_nQ9YwA49GE-6;OTv z0U~7mx7~8_yitA!IT|*yk9`Vbt=WUQqwit84H<1@d^oI+56EoUZjgjb^{e2^+ueyU z&ch`ET|#{YMuS05c<(0Rp2ne63?0SuV0P@9X2nnTu0M4@e0VSqB%vJVg3P?BX}tW` zT-icK8W`XirHrc>_rtuG+A+~11BSF)5i-rlr0|=~#M;#fK81SapT2F4x-7M#CL(SQ zmszeJ6y2xU^)CPPuvGiR0j9~;A_Cn}IZoj^V@dCer!`#gY+LE{0TxOb7Kpt~}N1BS#<6+d8|iVa8e7!}Ta z{AqNevAxq(=fDE0j6#>b1GQvI?M;fBveIE3=#zrZ77YE=<>dm3UEl zcY2{s1hr@T9(RSKYKe>`?S(Gv)NgXI()PIEg9vSIdZXC!n->cX0h?YcpNOdiCIaIO zSV4|Gq;&R;XZ?$)tdjIjr@Pg&!?&k&NE}as)8vV(F=eN^$g^PE`R{JaQ!+&K2_oi; zD-?sM;4XP%XL3MqWKlU1PFo9m32jcSmDm8)i`?duB5AegLiH;Ne^SktM(UTTI4 z9kZ4x?%2P+P$izr8bdD&|3cIk3wk0J|F25LJ0odn2?sh=o2x=KkeX zl8>kWqmGc`i4je37Q$EBrQPlrLSZ~dSkKptID&WaTmY{teI!d<5`1jM{oPs0LZ}Sf zGo7IT#SMV6ExBL%$hTG!uHQ5Un zFF(tcy{CSFpf|mftZ;8vQU7cob0iP*sXX4%&XFpoSrZC`AvIEdlAV6uqCpR{7r$?y z8|aQWR3g*VIw|Tq3whw2_$mL6AYJ~Jp{Aqe=(?((^9`GOkG~#|px)>t?RZcyajdx+ z0yC;*i@ZI7?$GDktae-QS)Vq-n^E9{OI(P zdLCK|#b`l0nYC|&x2vCEkJt1Mwc7Sx7hij@a%r#KZJO=mdx7nm%b-D&u!4SI7R<6C z{h(pA3`<)y(!d^LH<)Kr^z*a8Lod79hOq&q9V*6}Sz$*pqit3Fb)IKF;F_mt2VndQk>8Rp1lIiOo+^n_}3ib!N6S{TyhK*dx)4*PB%KL_|T`e8JM9rucEU>8~&M z9i!j0rm|BJ4RL2m)79c+v*yt zERo}P{KL&q+abkkwS7}6-_oGwE3Rq0XiwY22%fdvj4`}|aN9H(uX9YFZyLuwp%>?! z8g|_)B5Z_g#G0#adTtd_@B$Uy&iv!8M$g&kgB~e!%#KxWo&aHra@!1PCx%!r(zE!s zOkP2)hg8n+~2j8&FyTkM5R~aD)gq-y8B!2tm&J0!@`=lCEm}`mh;-c zK)9yxjCvNs!3Av2CK9>{f4^TtdShNW zzPiLC8>3@y-WyZ9`5vDRQR{l&-sv1zzp*wO&WG1kaepg2^~n{`_dt)vNl&KWr26k3 zC&PRAN~;UepHk^~Zqy=fJ8G~gFxOSg<#X_;2YUa|-E-7y1J9GK*PYHMm0!O2TkAd& z?i)`SMUVItTWzdZB%yA;B8yw|ZcImzdkcLZ=(aKPSS2iX*V}Vb@+|QlD7r`~E)LD+ zH83hPs1jiuIo3tEd|l1V^eHX$7^Nd9=+v|gU;Wa6qP67;<;eeV;@&P%;3243{sp$4 z^0_yPw@*vWpnyxeFu2yaD%*#X{(Y9Pn*nL%pg{s0oT*kNA`!D0EVE{?V&cX`^_V=; zy}Y`KdO2(0)#F=lLd(NK>c4Ag*&PQ(5sf$^y+fo+j7t+`zRDu>+enXihTDoSs;qqs zaa#qu!6PAd-jJ-m`zzUBHq}UJ<_id6eeCq>&n_t$C%HzN(JAsUbGLrQN zD@U$djn)GjIAHi;a>@6_Ox8j+?j&hjIb6J(KnJfKJuKTUf(V%=?lGwQJ}0%dX7OZ1 z;Hqr|K9-3UOXIlm(yZ9$bg&18L%17e?)w@p6WWRQq8%q1tIW?5u>^J!l;Aa(x$#*k zO_9%XZ(*NN{oGe28k@IxFl6ah0@UX%Ok87f>=$e?JPf)C`TFQG>5YCRy6y!`**$5Z zCK+w|grM^D-hQr2HkaqZfKu=Gz<-2L|NQUJJP~7>{If=AigHl)jS~7j@rY0bimrG) zgfWK;CM&99^t{aFFfn7X@_GDTezMoglzlt{laQOaAVYO=XLXXF0n44zxIBt-n7!>(nzI5AtO^7Ri;Z8yzv^gon$NZ|{O4prIUgB8Gr28dyeUBhx>08H{nbLE4D@K$Y zgD=oGKdjC*S>{JgIldz+LOqI^l=q9rY79T=9xW)5 z?g1?HXinVX zdwc_e7aKfuhi>R1-0%qkLL$8cq1xQmw*@=~4`?crCuN}fgQM#C_3b=~?z?Nf{E2Yi zCtE?>f{i$Pv^ZaX5kFROmAc!G3lA4E#ErV=HTZ#-Q6n8xIJ})W zw$KK_d=j`0DG~*5wuHt_LS}c4oOs4Y?I65!#b#d-SdX;06r+P=iT|kt^S8^&HPr@K(>4i$$~rqJL>d*F4;+#osWF2V>UEp z_tPK*JeJAh?`aJRi<_4jWr#G^z7pbLAyxbElIKG9#FfPl@(O0W6R}keZA-3JJw8io zks`@rd)u*_sGVu4RHUkeS7(K~B3e^tRM^&S`GFmzy>L_10_e36xTP!w{_)vW>jh%w z=*hYSFReAA0297)P`HY0EOJGZRqY|(a5OcVfJ5)M4=CWI@-Z;iv&3G4b*oJyU`E<$ zFr7(ptM6EI?Rcd)AA3$sOp1|9+x14ZE9*DFnP>Lz-;&siy5%taq?dm4jQ7=kKS=7` zmAjV}S<|nC+VsDND~@oA|3x#N$jMSlPe5jz4rgA$Xhw%D4~%^@PwuqUGJMXyRgJsk zJtN0MF{q&I|G8F57pmN;5X@Jq?KM=D5<{wtb6&WIy*rZflyzBRl&b-JP>==Auv9+W zOnyEskvdYH+~7IhxtE<>QL?zOxM5Bt-ofL*SXt^AkX<${?bo%rSh!pmUlityElT|Q z+UPpW>}XG`a*J^VDdE(RUSOoLh^DtjOp12x9TcpII%+PDb=Myht-_a^P8jWItaAvb zTJ6W(nxn4KGF|d!&q=NNv>T?sTj>3-v!^o~mXFyz+q}ym~HtyVr{@!XdZYZ$)KxP_N z=ZJ0H!bY9-qQj>32gSW-hd(VTADy1$P8)AWw;El9->;Y!v}+E5ljtwK7_YP+-#pc# zD4(91uCmg^9T6~gm>-RF$PaTSAfh2x#t(`d5WldB=sx{1-_3Arijrk=ZH21|(6x{s zEd$n)VBDul@wr`c>tBldZx#N>l}SJ0vsY%kU}f7vVnbtn8V|QZ-z6$Ysa=1)aED8QhG{KuFY?}@-IE&B_-dCA?Xw@ZKy;PCrG9C~MaL48i{`UI` z;XVg3=m5Fgz7?0lw7ADHKxXkq3fxR3j-pU|{+FT5Jzv6=d*=|LcEkUA5;Dn8Nxzy9 z&1eWq(YXIB&HLqa(AJt#80>zhF3PuSu!`SKyu&e3$V+!ZhoW5DtkKP(J3(o@s>jh# z!gXz_7EEth>0r!fK3_0OXb9e0`c*kPZ2!EMcj`aP%wHFSmg5qOWGTXiPR7ey-ztrD z!%(VRTtE94Eu^gHgMi~&r&4ybuCzHiag*e|en-JpQiVnDa3oaYCc-gsq^vC8B0a~# zM!S2m2#bPK>B16U20mFt52^lD(f_R}{=38%qg)a$Hx%Jhfga2ut{wh4c=WkzDKntXolAQkwwPYWV%PNY2=Y9q8>ub!V zzznPV=f7itN7gJ&;sM3o|1gz*CFR4Tx2@6ybV+~O(Z9ak2GWEBzTtB_dv zjte$CpYU(L^6y*!xyxM%k#XhPZ7GC$&;AP8|AFP{$zz^kkhYQkMO&ROE&gin9?PHW zy~NFOE_A5%+BYP_=4>CG|5Kv=E|&9)XiaA;|JeTwTmJe9b}M0{UL)tq^D#&*S@s`~ zpI1{Z+x<7O_>bG)e5}#?JI4R}>Dg6&KfdOqZu+08yZ`CUzximu{U6``H{x!x{eFCo zO|Jg`#Z3HzkDNuf&KIU|s^5=K4UGM`{qM#6+tqJAQfrg_SB(C>n18$auNVPZ^j|Uh zE4KWHjHLg+i$*^-Mp)y{W^!qa@GXt_YWS=E=(eMwvdelCknAdVS^sm8Ji^KUM^AhH zETvX)ESItQBj^d_Yb_p0qS2x1AayEaqbKxfw(jJoa&-bWOPguO{A2+s(s;IhcD(E1 zhhe?>KcN-yH-A%JKAkbohv@Wu#RMP8@04-ueX5)8A(hi0q0P=^)rjS4Xk~?)g|*d+ zgA00HX2PE{>mcJ0vvrmoJbkhV9IZ`w4n&zC$;cIjjWpcUyccI1ESq44+K()`q(&4yH`Hlu#L*Ebw6sl)MJK4>ruzubt= zz??zYq9Y0Ja~(A{ig+Wua2}h|G6h3Htw#8YtNF{bMGww1T!F0pC-#y(F~W`7sh!%% z#i-?KZK3r>-qK-2T#lId$k9Snq;7Fb3C%N3_MAHO)J47l@Q1T5J&xlT|=LZoN9$eK4M6 z~*bg1p4vbtabESj+>5D_0{ibJ7Bkl#D*2mP+rjrGm|GmvkT@C zBHcI6kqKs=KUjzgJ^Z+I&^3SHX=NXlRe#K+rRD%q$;kkKA$6y=b<&kfa98kDSp^r%#lAM|SxcH}SP`)B8BGs%YY-M zl!Hr+<~=Vs?nejISgT**RDtnKeaBNY*$5+Zd?HeX?OZm-*qY7;BT!YA6ZKZX-7ULO zhLD1&tTDPS2eAf3Y3pgbzMs9)RU?o8EoUxaq)-!ASDU_S?VbYpAp!DT+OQ5`5GqQwpKz{% zH{=TRqRf?iXnjNje|KwqA@7deT!Yl`L2FU1r&SVL)lwX?sbY{v zH5qA>XYqxDzl5s{sJcCSeay=N_$7guR+!S66RRg!v zg0pa!65V7b6&Dl3U=$Gtg;>UhVe#}WvbdtMMK@M#RT%Iv-tZF1%x9g#B-R=D%)9{y;{y{SGY(#bTd$n0#4GK*wRssZ~5R+h9P))VO&f zKUSLlWD|DfuCh&k{bLL-{P@%Ts?xC~p+XqrPqq#?iPgta3aOOQn+K@RY*@PLEwaM& z_;EeR4#uNJ)0Y_NADo_)o4v24qJkD;mVtMc^TJG_{jyN~BuAjx^kT3Fe*=A;rYYoX z)o$zXF`x=e8QK}=MF;nY0jrVP57HN6hwaWx?II5kfMQRLW*eyxr53g1=BSF@eQYAU z{W$xxXlhf3$H8GauP$C<)0Ypfr344YMCb)S=N2dk0LD!d2|pEHT}c3cnLcYPZU!hF zxdG`Zq8dGLaWMn+zM4;3NvIkPwKDQ)xwVvp#FZ8pRkwMp1rsW1jiZFd;Jg*B@Ns@` zA=2|iBcLh$^*jl_RI_JGQxp@qSW4X}Z&^z@fBZ8qv4d7?`<;$NVFL1?SNAn^NXwLE zq|5t7-pI5Y>NMQVcPGENuzBwEV*X4REOL;tdXUPouq+i%$8+%Hdo0rKm!HmbcV`$( zHDn8;89zP_@bji%mE?4*(U1B{M}dvddM({Fvy#e0yPw*+X2u(|FuL>XF!Q57aOkm> zkLD)`bvuT`&YJI5cu{W5YfQ6Md~iZb%Nlli_3&d2VXoXJGJt)$F}|#i~FEy0&l zbo&a8_rhS_LcT6`NKMY_sso)+%<2XGkI6_}pm$3s^1h_kD8Ui`{QZuDB4E2Fszo8K zRr+e%Io9X9c6!2?=P_KUP}}sXv4DNCmY6{iSGA>tb7o$T=KHqiEaL_L%l_FG^CZxB#kMNN%@I@`aTqT|>rB9pdXO9RX(j;`uM7IJCqM{tdYU%0gui;wi}zdlO}{UYIQiMxPv zy6hX$iUJu!+9(~!J-)iQB&H-I^C#kryzbenJ%BO3hxes64r?DZ9d1~mvB4Y$zC9F1 zGB427yEqqR!J7_)jkd7jagXgmr!Ui|YQY$Nl|9YQ{~ZW>I@_tl)toh5y%)n^q}285 z&ZdvKKq_{izCF$=OR{xkbmd6CBYyIwh1@2ctM6=<_LTQNli$w*Eiei`bnt!5kn82> zuCdR~$cBuUEdQY^?-}3{pM?s2qX5go!5{CG`T>{-lj&!5VG~fa6Jl6y=Z~(wnKc!l*m9h8y(<`S~<2qb=g6ma7_sG6k$Nc72qokAH_VMA_ z<`qz*Xbri;@qi&}Tp#4)y%AZx%G240I%~b{=hN3Ri~1DJU-10A1i<(E{mJ$XD?8C6q$9~dgLQl+! zFD}PmJ<#LkPz9B8sv8if;7k}WkqYPu;*gAHm^pktw9k$T|1#})V6M;f9R1};ek~L% zeY~&AVu$Z=l1>)vpcPj7zeO6CVX@s?n475A6McPz;oCkqbU62+DJap1q9ZOk3HdE- z6gpg8rK$U=#q-ssP+@vMDkrLRTNfjw?xUoyotd3FZA&fa_Tu%(ca8hwc^=Zol4Z6B zC<6G`HBXU((8d$Y77J!Wo+7oH=)lku$+_~iNbh^}h3^D;Ga3ihU-gF6^XZMo$h=Pr zq`9tXodVH~d;1u~*K;E5;@&b^YUPV&zhN}JgP1q4-1=Acr3~`R9DIC$s061+J)Bj) z2@&l5=o1lRd3616>6d@rerNw<9p;LtZpD^slQ1&1YEDad6=b^tehOgX!`V7_qE@4T z)1UQU`JtLmx1#B2iu-3i0?1~^ar$6LCpQ~QhU;1SaIv4y}P zwnGw@TKU&>rE@Jp22V?=vY*AS%g5Np;wbc05OJh7LGzI%=an!NSbpcC6z88ap5w6t zL2=oiX~r^=a_V!!F970f{>&lTNap^fwEP$2DJ%SEUQgJx>hZbpHgn|fq#Z{jo7*{I zE5O&E_kR=Lb^n*vUw-5-@pI<&-`Sn4oy@D}6F>GR@nb<_r2ky9|40D*rqo~X&+MjP z>hSrgOXj3MiBICw|IbE)zfi^e;o0wW;+OVM;^!0p`p*=f1(hY|`Rg-C{5yR)==t)> z`NZ4*NxXfteehpt`49UfOZVsc(5bHd%Ypnq==-4jC-KVhh3Bu&e}(H$Hvd<+eoNT@ z6XEih_Hjc4$)JxL>B#>@BfqkyD;WH!0qV7G^@ZiCjPwG&ieuu>{LYt3_Q$d@H380T z^KybHg(Rw+s$6q!@KmH=bJhPL=Ks)AT|rj6*b3^Pe|{`$6X^ zrT-+My&^-_TzH48W5W(nPS1+^G_B=y%{}gOwd%7$6A_Y=me)!K8jnBhEL=q2ft?SL z>CPA1W`s9hh+RQWT#QN*>=A!%J$-mP=e!``g8vOtPlIBGhM+03`q$Cvm8;J2L(-qW zo?ABJ%Ot$%J@Hz!t4ZmwX)L@-dJyG;CCx;EifAJIFd(% z<|Wp3Fg?vr-8&z0nzpa0?HexDuD7I1ztpP6)V{6ig>S--TILO$Zl1d)EXuOis{YONTmB^z0nXS6GCqEkfnk+p^Y0_gvPPFc5$a?_+uWE99fu#c^N zoE2tB0(ZZ%B05DBykGMmqg`c*?0i@0&b@Re{onAy1mz^^6Vc}VURmXcE9hNk54k2` zD0jZ+`bhR`^)i;Ug)Dq*&vsNEp$cAC5oOmp-x1_{N_g|_gbD6pbOmBqYTEr{P3qD4 z<}0M|Z74P?WeCM2l&^Z3d|=}LV(-htp;~-5&Cky?t1Z;;-sE2nj*6mVw72=<$=_e(tKc4r6`u+F5Xfk5u26ehR?G* zQ^Z!I$tWRn(3x}OKl%^xuy%2pb`^&wYg0vGlq@X@7wvNnbS=MsJj+m*cH zc1T~R=A(1mys_2Z#!OHL`KZUM-Q?WQT|&GE1Hm3#JR0TY+L^d$botoP_$#UMd``Aq z3|K$Go-b0Z-H1l!J*Q`0&AIq!xEhesU^^PLbBwfO-B) z(O!>}r@r4j|MoeT=9sC|?XFq9DXNwiI35^7&feBRr(Zz0+aQ%Vtn4qPr-#;Zr@W!{s=(t+Y)e=5k zgZS=&t4KLoQK1DtBRu z_Bz2;wy^vY_EcEvisr?Hy=(tL1tsSc2<3;^af9G~x z=UMspu@_*iuLe-mxIq)`s3p3{~RY*DCi%&fP!#aUk?c0(UF|Bi9{D}T}XkGId>Frw3HD7%4bx_`@_w&TDL zb+YSTy-f!IIb|BOXPADqV20*EvE@`d52*uwIcg(9q3@|9jrgBC6xxsNo+Q-7_pWVQ zvkaEUPJJD?e_IR2UaSOy;ked z4ZHs;49t~oRZw4EC3U5kzcc2q*eqY5#_)Gq#BS={(k{MN*jR{p`Uja!NWtfAqeVwL z>x`-hkH4O}EUPup${Jb8S*(P&XwV@W)bGuZ3hTC=C^eLx?7k(pp}cJZXzv3m>*=bT zs?W&*55i;@WzCL4h8I%wO1qXvOIrZ&yEgCG=~#WIS1Gr6^08hzs9M>+;T})cnBG+i z9&%a2skgsNIa@rCJm;X=y9F6=e)1vrZ#6H&H>Uy8=QHWhOh`t>2c{$*iCxxP8iDzm z6>&2jRjza8QR-UqN3 z#NlGALjEwu>k1aNyP=-nJ3i{FzBYA|`tmiz86G$4dT%nRKGR}+Z2*nc*t}3EtLl@} zFS^|Bv|LqChYuJadaXskQ9BDtr{Rbhw9kGR(5cF>P+69@t7A;&kLIu5kS#B`Q0X=N zmX&@7Xsw+ui%q8|aV2|76HK;T#@M4*pIxq5iceWYFY!}uzDQcnHgHD_lXDmCK*Z_Q zeakDv{T{RWA)j@IkRtQSL19WkvN*X9tu$I(8*U220^hKj_xE;i)Af@1OIyJ3{dW<) zbpzi%a!W35{;u_VfKm&3eh$dj#m8RbGw)l1v%i?-t%IYJ?a)}Y8S2H+@BzZ8kXCC2 zK~OgwBmd;w$cg$rm-nA6&$>t>V=hX#jZ)rE2WU`)eRe8?g!=d|fjx*J;F>m66m{Ov zxn#_u#+$Q#dNyl&RE5aP$+!5eB2m@BeQjn1xt^z8QCk)#v7}TE{6f9zR=du-U3g7c`j*r8)i>Y+0EU=wLj>Hmj2|THm%}WwOE3v+3W#=>J zbBNUkKfR@>p8o{+6!Gi70MeCJQ{Qmd8#d-*ivs8%cRWb%1Q1j&K zonvi6o(XA^4uQy(iX1FHjgDa=kgN-)^cNh3rGJ7J2rOQuw2KDs*)IvJM4NR$7N{5r zw3r!w)Os?1KHN|<%J%qc-R(l0VaGk1r^ajz&wllbzFUW-Iehn5+Ho5@Zb*S%Z2GHM z1BNf;uaxKK|AKO>ZIdsiWIk4Mn#A!QtHxA9j0SW3?*W0v(-xCyRXm&x=P(9xD#@22lkT%GHS z8=zbv>FV4mhSXZrW>tU|N2r#Vnev+qE?40{V;c$sd6(DQ9A{TxmHRs&v9r-^-W$h8 zvFgy=z)zFWHi43zx}iAsvjbklX0(tiQiq68A> z1I$n2Fm9cR*(wtanhBPA!u}Bmjr^exPT9l>^(cfV{i#UYh%1`x`VD$ks@&Vuz(Co! z-f`J(p{=Z9JRYMLH5Cf%`=g ztnS0GlWz;Oi7Emn^DpM%6NcWSkBZ8H30iJ`{o+CIem5%!VwaBLUNZD?U4Y3>^IJj? z=dV%1ZLRM-1i%8Gq>NScsF#d5nP)TNS`;0f=d0e@{rSttPDx|CdUokVDw(IMC!g=~ z6d*ZE0?nG^TdtJkg|nR?=kU1VpaZRA1(us%v=TzKSNZPRX|0C(%faYKYYLoPcq7H= z6FkM0cLw&AR9^=vCBw)`VP$g9BiOw5s*6g#GPkgbULfaOtY;tCn&hwF)AusnaU$ry zFnaz0l}yWQS5d&ptZ8TScmrE>&SwE`E9KW#?uK>UC=0dsAeJN_U686`570n#2nHfe z-A=K28S+~B;b)f3nn_u?Bo{l*5;xL%;wJxFG&(|p#9whbXoW|^{DslEKm4P!%wyPK z2bIbE;BMFOk(64#F?VSI7yUyaw;x)4EfP zrikelI9U=(`|s$cLt@-ZaRCF1p<_zbGyZJ5SJiHruO!K`f2X%|AlqMp9{XcKvWF## z!O$+Lc&HkLxjEbI#W>5I4sqo>M{dnFT#FJf_8~QPZJFvp;#p;+7WI|vw(v{!O%G+4 zmW4ClIE}XoQ5osk6&J(TpxRrmz!rAfC=s)Pns7GiWc==?F~GESv*48mh9*e$8GqRhdYPU zO^%F*ZUsL_4)BNbqR$d%As%h0d>Gl5NXOtTcFQ`AqyD{7?2TVz$&aa2=fjUeXX;!h zD{e3LaizirU}5461tldo9-A?bP5_fO;Z$8&=Ca6hSLLmD*>rdow?=4x?qbV#4%ROh zoVb?cF`Ln~6f!Qrk6M98(35bY!9qOyMBeO042+)tQR;oO&QT;G6;!p%pw{i~4RhAt z8UMIn^fG#uZwYNExh%iA)`FfX;SfE+H=*}o$(5SYZ-D+)~ny=TYN zWZ%rCx~ZlzFthvWviW)B>wut$~^S-fuNjD}``#gft!)Vhot0BF>6V)d+K-h#Bd&uaf=h~w1_kD?alWTv?_vVpYSCX)af*8r37aVEm#IX(!;XZPnO zXp@uY^lpl`*l?dtcc6yzszf{dUE&c&2fp4dan{xV`H4f`@%Mm{&-{$1D@Ge}a+_wn zq9soa61u%-sOg9EtGOGW3RpiYWntiXhY7gVc(*vL{jCkv7;Zru~h4FBlt{I$3#$aX6Y%#aj05?q$R2JhK z^o3jmB+X<%+@x&qUIyEJdoj21Nptd-QXLnP5^Mfq4#IKgYs)ZUl~@(Df5hL$8z1K3 zEtrn;%q%A|y}73%7QYC}w+3*4Fc0rLlSyWOne;o8{@~mbLrG(wZxcLAqwf~nncQb# zVMN^zvg1VEP#qy8V}&}ja)kx@4DoOtr97FRpM^WI+i;vp`UYU#n04#|?Av-g>t-3~ zJt=drCPh2eMvs6!TUjPF_BvE-zLttbr441pAehxt-e@@-&f0Wg5SZ2ZgBzB3(KEA+ z>zm__@{q=Ip#(+9RjdjLk+K%0&I5NO?rU{S2}I9y={UYfs=Jp){-JWwU27R;^Mm>M zr}Iq7{r(mU!p{PlK>aK+fiU;qxv^fWK@za)uHzX#65mmoq>{M%x77OCoC@=AjqWR( z4{&O-_RLOtsZSmY;i&vff6a>8jo`bu@SdiHD@D_w#&**pt~PD3%ngR_Gu{5!Ex63V zg&!@wfEo8oF)uQecuQ^8T6s~efy8b>OudiimZfy44k|%-$C_|H^@73S+iAdIMJRV)U(AJZ=FA z@iGcA57P9k&zSyt_WV4L=+?M8)XH=q89FY6RW6;t(jhBLIEe+fhiX5ZY=~KuNaD9H zQuccW4A6dfKva8~^%1yLWx3kEZg#!NptMg*@et01@_cqh%(-Qhb{7$%>5X?9(*P{Q z*fwh8tCi0VMt~o%?MJ_3Vdr>DAEQZ*9c9mX+Y^!9y4^d%qx98tC05?}eJ%}E?1B?D zs_-+_k3hY;%jgyx?Nl(Uz8$R1tN*4H=?pNP7UPxGy9bjG9gIX@FH7-g^t)$OaIKgU zyPBwn)KMV~Ra?HkOhkODqxQ72<@i(!G<5)KPv47k!au zlTbHeW?T%)xe1HuU}e&=X`E^@5N<)_+Us1kT9_N99m->{x;I4Uf{mH;epEiHu4~)E z8rPMrGhGuiyOWTUAQqDza6*e00N0;WkfLwH^z4dwDBdbm*I{Cn-E(Nq+x(Ob(P6jn zPHG&?wBeVlSz_)}hzr%f-Lq?aUz9nwEfqG+cxgH7e5zV*@xmlT?f-;tEdYt&{ zEd~Tx-trc&CR8L@wAriLHh0I=Vr+dWBN5AXSU~Do&ZjFIM!!Kr$woAf!2vfWbyu4yY%K z>-OCnJKe}%jNaKisUlun>61%@r23RI)Z5lB?%Nm8DkgewZ&&WLx{?@EAFp_?1-7CV z$SRei2%%%c0~O`{!pZHPxMcAY-sPq?yYsbptt(5EL+b9cja{FCQcjhTBLExTZ>gOU zzpmc4}*7uA_4C0k9n z!L74(t;na##7x$ybYly;HnKe&1vBet_3fv&P87uBJ0m;iaBdtXc9yY^q;Tlhmde*F-LiCAye?ay9K0OiGfw0!VAi|aU2tkEOVA}<+diZ}ocZRD?9dXa zNHZ0Q*02)5ZX6H0f3>XZ5_<8$_h_fy?n@7JW7u+;WGygUr;~Io2A%K`ty>=s(!HjM z{%z;FTIU_Ed@8dS*YOv8EunEW`D)s#uNRZ^DZ1#fz4C+#G*(s%;*>uGrjZyD&|5Jf z+Z3M$N+Z?$WiMH?jp3}&iQU#bsE^w5f>Sv@6uw5)GD}o?>%}{e<5D$`>5y_M&?&V~^@Hjgg2Q{lkM#d>)mk>mt43yqdOl za`k%~ZVa?CY{z?~-q}R^ylBko%hduKr7hn8YCrgpZMn@&zXXz>itw0sC4}kzLeW#L zf%ANsK?&eqUEh7l$G9>SAV~a z)khXm+H&J-1wk8)b56L9Q4vCpKfBBpRCrO52hWTBBjrFl=tHMnTIvgGp7ssjV6Bwu zdx%_LX~B(K1|qZc2Q<=2Qy6pv?Yx&Rgz0PHn4@u)@hE8x;N#ID?b`7eHmoB!4Z51^ z7P~(!HCo1Do%YGmkw&knItMd8^#J5y(|nvo8?&RLd1jdpY8Ks!%_f8M5a5>tIr!`0(_wjK_zvm6~X z?WzTr5)3%sFeze$Y?@mA`*74c`>%Z@Akdk7VkjQ4^*bTD z668Kn9lO1~&+l!r3fltd+kIwF7@^DwR8&j=!!9u9OCej|iyiqJBd^KAqpo|e2B6qX z5uM2u>)nt3s_dQ?Q-5S2Xhe|gn4ok$GPu7uf6OZ$5yFL!*z&Mg%3&WvY6Heq)CRbj z5*H^++RxzLK{4}l{85r|Pl-ITJ5|0u$P9^SQ<0G*9iN0=R{J9m?V#TYik3J+uykRF zzl~ME*sR)oZNja}m^T(BUHcl-DrAK5(ywj(u6Z`y^rY_-ZTs%F;@fZICAxqim3M~N z+|vwhIyO(43iH2wMjTUgpP(vb5Tve(?*)fiR?^<;)jS5M=| zv$ocjopHIx(tufQIR_^!s*(0n%44-n#wNC73A^!SPUn@D$c=}gUPW&0r}yD6G^IDh zrJ*ao=c$v5erMhq{JIu=QS_PjuZ4PrW@Fk&Lklh3aNn4`o~Sh#-sh2hgL& ztI#cSAHPpFSGa|Fbc5Wr zTMsI7^e?$SQc>SaWXu9517Cz6hy_E0dJPQ%ktGf!wWxiF`Ca?4uiIWu9mg{$=XB<3 zf$O(S-UdZUuo=`CBVx2FOBI<`Lg3%V>yw|e@)1g;iNi^fj%*+E_q702aiZDh$~o81gNJp-666wgyq1{5Y$}7D4g7+qgx_5_WeX47d3X$j+Q5wO~q1<=qYR9V&KKLijKDiXRby0oih4NFj1l z1*0|z6qf;KQwiQ{ry0v81ajfC(k$bZaA7KTr);EPgxA#9@r8R!JC|sP!!Ec(cBNI4 zf7sfSVVt7xlnhuZBJD(5GBh+&5oQNH+0z=3UCetupQr{ zdkXu-KHJB|Tw$6dkZ$m@Wa*e1c7$zyB>@gL(0)G2uuIH)C;!md3(qn-ga69yH=6Sv zv*?aMWd*M%&1l^q3f}=n2f-dSpK}73H7*qLp}bz=hW7l5@X{+l_&Tw4#3T) zYRd*gk-Ji{(EN<)`R9CC1g-$d_YG5tWM8Zxi{^vf_5!v42zmU^{rkaK1?V z;nqOYF33WF2axfuO#}6Tru{6o%PDTMkQ7$Z^~6&Uw-pxhv_CtA* z;nz;TW_6jN;Y!IB^cjqg)5)G!dgZckKe2{e7;}ft^AM2@xICI7CTSE>9*SP)1isDm z0^pGL!_3D!0V*~kh?ei|i(0r=x4S;JaG)QuBP(nzzSjcrV$d!KACJET>dm5oWW+M? zLQSae;e9#`vn@db}9{2Ur84qqKT4P|hc+h9}6Pccn<+`s4( zQ?Iu6*`(w}^YGM#s2D3uogG|K3&QqzO$q5y3N?9VQ;;@&gaszaR9Hw7S+~8hR*8O^ z$F_2(#jz(4S>P)6I3(+hn{HrbjM&T5L?oujMW)VF9E(=ZQ}SuD%7RRA^^2vRH4qrE zIt_yjX6c9ly&B8yZ59=GThbMPL9eo?b(fUGP=N zElJO}2{dH(0ipi34oV)BFAymKW|4UYt@C2Ic@i}h5FVc2=VG3<)RjQ{2Ai(q!=4Dd zO3E^}Ei^ z{X)WMHCehrsoCu=a?`_;{=+KkUEp^5boav4a7R`y%T6swfzl9Zqwciy4G-g0iLmn=MV6x%z<%yP zHNu}gVNNDOKMOSfjj9jqp^lH*I~&|>qjSNfdAc4yyp1fT8JHznDn zYoXrY17s4|yoi}mTMn-#XtIF|6dhz@J=;KG$Sm=%NC)O$9sZ%C3V@Jx(|fYXuHO0P zYbO&te>ulrcF6HHK6%Qj+TUq$J=e~QR8;^>>@Ft2Qy<`PlQJ{NO0!POf#+Ry=Lfqo z_56B)(y#3ay4?bYZKC-eyAm>0)TOa=k>>S)Ub$;2KY9;5-d+H8E;Q{aUSIpVjEtAC zS55$^H&a%8yj-j>_hr|(*Jy{EUz-a`@FQpman~!PjG%PiFPh~?jzqORDDX!^rq=_K z870CxBg4(O_57jCsG;2-q$!SjMQCTqnpdB>pNv6Y+OtbJ*R5h6*D&W<*~eW zyB9!a^d&mL1f^(^1N1rMJ55CUNAc8un`?P-_J$H25Z$f}_POyIpt3%lFMiX}mZ7#j zx5WYJ+3wJN=3s-ODvwk=jBZ#J}?n5_+-x>S|wG!9f+BMH;5n9#wMsTsCwO`P9N zUFh8tt8u~#eeiY{@c_cgz^(pvynx&Fk#|77EENFLr2!zE92G?VkbA>9s(3YsfS5YG z-SOA-=RxX2U&rgd)W-v>?Lwced^kmYefHzABq}A1?Qh^!-6s>!?d;SHJbQ=6AL+fI zsAv3FgO=>5o*7gT$1!kv)ax1NgeH_|=h89Xv>O20Z6-enWfjJWCst*!is&xS(^|x* z|87qN^s#A}AkjTPkQleLu z<^Hq>$>=50)B18 zOR0Q+;iR@PiZ?Z?(9F^5M~&)|Je$(n6A}fCn&)Jaye{62>bZbJ8 z8;-9mYj2S^hRl>ojh$uE10YPFw#`<5?RElJpnfOm%*obDw3P}V zGc<>5Zo$ddL)&>O{4@cv#^uESOpy^%`t0^>sM;Mz2pm^|4$z= zbM9b{S+_Gdq25p@SSZD#E2fX!{D1)9V5{F+>x|{yj}3~e4s>2=OW+3(a$ZjOf4OGv z1--dVO786#q8pR%c}{ zPQbYlC+TTWQCHUe>T>>P-lG>>8h-Pv9sa&f9?xxZoaJ62J@3>tK!>T=L;kUs-wrF% zcSng_I7K(C*$$VFj@4KiSBA`8E#hkyj3vv~8n-ze8}!WTO;lVs4`?Bz?Dq1neZZee zQ%!|ABEfLR5_)N-EbQpF=`Zr^msyU3pRUd=C)8s6=vhTr>c7eKGwAyB+}?}}N)d|@ z)CORcU%oBT{90i90ZVL^{@B8+YYWb>y3m7^o-k>Z4|piT#`PD)(JmY)5(spf_JK3pu z#@+Io;(o1pa7g^+|G*Ys0eJa) zBlkar^G_&c{J}`kp91jUB_LRbY2g0^g8oTF^Mgh2Pq6(d;JBwm^8aHr>3<3GCpmw} zR;tBelc!4vJFf#V^bZWDPVNCCy&W7py2|8l_lFj`~RZW zKV|U$`PRE{lp+ES;&xsWwePc54vgQ*L~%wr9W_ZyEcHA5Rrch&cW1SZ(m#s$a>el; z#<1v)D3gL9QxVLpV6{E}Vi>fV7K$A9f3)vfM#Lpt39QI+GgsSn#;pv zHT4t%*?F7qiEf~+>n-e^~UYPF<1ZbuK#)Nx5EyWlMc{kbKig4(w~nBUh)+wUl&1IRvCP} z`(Lm9aRMgZKY#ddhxPSmKbw7zHCvM!O;xOI>uTCYR_&6wy*=Vo;~dr@ym#oDaF2#K$9-kveBs%U>-TLyha{US{Y?n;3Ua1yPVB=UUY&Am!Thh3Ji zx$-29W#)Pd9lrw)`R?_D#9{YD1Cw#>e1*~(o5xD;q2nt@#0Zxwy8IEI!3?13U6))8 zWja%A`^*H6b5lvw;L^Xc@sFb`zx%Nq!_oJgr8WV!So|et1jxI2KfhFG^sY|@h#k7s z?&zzSekKSOId?trfQ@~eSNK6u$FNAgQPO+4ddo(<0ogx)v`#nRPGNBuEc1@$qvEh? zw>9bmr0VS1AFTT-VR+wpKKJAHs3-Mpsvd6qk^64CV5r*8{7{|Lw?-oA?xJ;-> zrCoi1<}Il8^u+F~6Y%z+@x~M#wSVC<^ z7DI04JMQIkag2KE1O_5WJDdqm_eW}`eVh#4v>pdY)p9m3e}NJAmp=tJ7|T&iDFr=d z1jkp&-J8dFs?A&9#qw!I=agIZ9*x!$vwU$4?BG7|HrKYOx2aB=2eh-a7>3$$+3}!6 z@@ID@#@-%q`_>I0QKhxo`*^Xga_48x9>g&bn^Qk@7jgUvu-meIGMiS#gA^`Jej$@u zKV$wc`czB$zs2_MuWdxukduOE?(?WFAuv|DgK}4WOgrw1_1`?!PKeO)TOCxJi681q zfmAj)?ys*kFYA_XM#R`R8??=+E12M_?346}?r77?D{Mtbg!2>rQT+pYd4jPSsFdHdaH4Ai4Gcz zA-ZmhV(lE%2U*<2&Ywm{WAX#&yk|yQ=2BLU&!lcgbg9P((`7jpH;n>JrOnWw0K*Gh z`k0q%Pf8g~_XyjJ)-D86qJK{v2iI+2@Ko<-_iq~7GO}UtwuKcynx0F`)Oc`36ITb}TUzhi`^T-;!xCPh8#CSK=A zieV<%NWGWG)q2z*fOskS4yVdSR(0u;8k3}qiC%HNr^8)auZEYG2bGIgaq#-UHDMnD z?vbt=o6pG8*M}Aqap+3dgym66(_^I9|MgZFns5c96|OFU-e0=Y(r60rW?{fJjt(ye z%1g5oXvRu*1B-4yhvF+5L!Lk8k|W;T_tmd?ovl|~`EGkW_vJh@H@>e6Vpy`r84HOv zU&M}84?PWG79LW%X^%7+u5`_YE$qg&JXHWCtZf`fAK$*nA0~Ie(yzbRxE|2Ymq9S- z#k#@Xghyi;`dq$AcMMZ6^Ra+#ee&qT^tf7j6@tcZYA(gnurSXs%A=KwAt=)fi&b5> zWqCoj`A_VwmiRr+@m%1utH_PP6KS>p2-|xn(zFBX*DNb_kQ2`q_+f7I21G=u8A!8( zyh`1*yR@GDazWq>ZTY18+463Y(~U@T#Mf!nu2R)etjn2@D&u-X`z#RwA+;r$FmP8H zp%Fd8RP$krx)NuRO{BTCcIn}r<;o=tX+jC-IB($KNOwWx0FUw8(WkmUjGa3Cp(8+9 zh<+XK!_{VL_=iT4cL{H&rA^5mU^1@Df$EIIlX|_&$8)`c$Wm>LuODw@>Xt9Rh#*NR zdGQ-P9JgKS7pAOnTyq$to#oXrYECAN!;_yJKG14){AsoPzgpyA_D5dlZ6$MTW_ z*TBP7!vZ$cbrU#YvCXDDPg0pB?s08j-kKSs&ANiTS{{btOgdJwi65jsCALfBL;MmO zF#_J(gi*Vb_As?j4J+I~nOHqpci2hiO>?U&W?%u?RkI12BIV1|MJB z1B?leOv+6%v6kF1`B^LLg;%tSH#WuwIR!XHiEHvPFLilWES|1aVbvSaBETNgw=mV|;?V){3B?DiZ6kPz$4Ao9BciIFOc)64bu7g4VASV%&{$Z*H&XX8Z z4kp8c)ZDW_qJ^y9?41J%0H~2-_zxc-)V$wpc97fxrrVtRr%%t_y6G)>kS#y^`vX;u zAE}BWaIe|LgSZN$0r97Q(9@C|7L@Wo8uHJD|CfXZ=1l+3Bvd34-j?bJTj8>9@^i0^hEyacl4>B~ml@l&+>eQJt-Vj@44$ zjl}%-o2CAIGZFJdfOv)}CWmhx_lR_?ZIJ7!!+-5L`|3{}-(4#z!Y8=t={U79{nvi4 z|13aQ;;I=}K&dA9gbK*B|J&bSs{yB4kt0&dn4g0%$$$7y+5fW$@jpsczC2bPtdU?m zW@dP|31-96!2Dmf;?&QurjceDZ2sZP_GU~zB28Q2zh2bG`GW!F3)8MiQ0p;I*&yTu zCS{;RAJJ}n;=j~c@F(e>$W&VQS+o_9BNjP_-Bxhf*YDl=FHv)O@Pk`*xDw$Anj_`p=V$$4)z>U_}`I%ix24RJ#MAn?d*;C>IULK=y{gn->r_wA|NU z2Nb}zF2f!_y?JXsEDkj_GYg^y^SJ8kcdMO=gX8rWYx1^oa)X&$i^n5py-AT z-6KK{a_tr7=xJ;Vq|b$cg>J)g^3(I!(fyISZIb2OI4(oU{F1?DE7md9-?TJ=Ta2+J z;r^)HV4t2jt|sz$n*RhUA?5xkF?{j$-;A*D{VP8`b#1LY0o2zCsdL?2S@xt|9&yu3 zvGJrS(5gq6jXkWkxu@4GAN!WLHaFn|wI)-%iHBkP)9c&def-F#|F&G2NC~8}vcB{i z8>@cyUCMsHf8na0_lu6IqINMf|4wtU2~iw2)P8%cmtS90CL2`aQJk_cmeFUoqN_ep zYJykh$)7#x%S zsEH1F*^P}&+*$!kqhH^Xzjh>wC1rPRw~&$ovf@LfeN&e`Qh9hEHrdB^;nqc|8O1KI zC2t+$<^p!=srPTR=_O8t7Gwp6N)Tz8TnwTg=Q&(asgz&6>Z-rUUn}bHl{SUA>ao=5(__|+xj64H z$Y!$#CT~(ALGm>J@atC`|8xpGT#8B0C1FI*;U#|^@x(^#OouKKx-Cv$MnBeDBlU`I zO`k|34{|b$;fK&tDKLAvYU$6{`?w?2xAuCD)C6Sp&Rd~FDjRrp%H&e0okp@aYh11Q zFM@Am z#MU=#gv*V8rm*4h_@e7l*Dk$R|2($c-?ca`{SzX!owTJ9nr zUJ(s<-l})9WnS%X2-|uQ+VGREFh1Rc3i+ zG%KUh4X6zYnhd`sptckZ&bQO#&wq5Pd4GS@=PrxJ&G#{f?K<;Q3`Cl`)!{8VzQP4b z{JCJkyJiYw*{7wKPPHXAY{?g**qir5QoNrHo;Xh`c@xBt6D>D%9*tpq{!9@R1QXhN zYBQ?S@%pjWb4n|Ta-(@au8Xp%YsNrhGz?7y@r zAKAS#D);#kB3;=5gI=cnn^G9xog;C*+D|Y z{Trelx%?VpUfJUO;B6=JxCOj#F~y6LtVx+g7E%Vn18`bC^F1`9q)ddz(+)Jo3j8%B zcC0{T*U^wtyc#Cr=6xsn*{5Q{$j(lW85p%1Qjgkfp-gVn8uZ6xjalQ(!f-le%jxin zun7x!Nw1YQ3jPvj86BpunNGX?dfp3hy{h?-1GM!nlmwp)gM?C7rD7rca?KX%+ee#m zvyHlRr88J(aV%dp;hRGZKF|rxS~F`Rl-5Ge%zBD>#_Vyk_gt&PiNcyrQ0XlH7xxhD zAQK;`i}3>k?^--pIUj0cUsI5^S8?vHkZgg^#*vVVFkA2aQvERxEu*Yn&gee7oflVY z$j$s=^<+1ul)lGD}6b_Pxs-WCJm@P&_7LE53H%FEUK<5DZt_PB-+Qy;>17>70S zY7jEx%AvnUh<{cX1}c2&9UfCHgL#_0m$UTC%M%;p%iQR(Dt+FVjUYK*VQR?W|?BhJ&)go5KJOCXVoWl#Lj^17a_08D|#`uL%1MlVnc%y2v#+&3*rAnx%@z)Y6y3Huvv9v6>=c1f! zWM!j$pVpUBql-%5E!=7Y*SWlj?9Lyb>8V*(hrPxUrOWy}g0J;@}n!qN?&SS)F5tRcY_hnqG0;qQ}QHST(qc5VO&c zf_v73k%XwV4@*Y)>UXdi%Vy8vuG?H&dGXb$Ef=`X!gj}oC+?M9%u-pBV*c>==p*&Z zxgWJ3W>?$b!OPhx^_cVtg+xbhYTj9a%y-*a*0CY7eOc;OJaIINtB=pWFtDvMUJW~f za@)P-R_JF;S@P9J*0?Ho(fLA0p3dipXy#vfjCKgL3+J*M;`@OesOK9)bmye~J~ zrGq|YueMjidMfI5%*_CLz%{oFHkzp{naqB2qZm+?B8gGb3Fi}=XeH9Lc$foD31PdS z>EnQZb9(6DYwbcVt(QfOrF|+?mRjglbQ=YB`j!j&W2(-i+m+UaUbdk0+$h@e;W zPORbC{nQw9^RuU`j=yld8}-kE(xac%-@K)}uRl4Y;pl)$&CRNtHqq46Io@qEPqM7- zk|jPkyNspci(!5AoG@N;fQ(YkVw!QGyND^|oMXPm=pp@GdYeVwa zsn?WZX}B^JxcIW0#)Ej0F^-D~nP7Q7F@pxlPpZ5+ZdL0QwYK%79Vf8Yz!Z@H-Ys#X zJhO_X8orsNty4^pZcgfCWg1?u;t7hH*hOvVUCos!O>dfHBg4yNc)#*$!Tp1fhmgO|f3?cXcpaT4ZBwa=5Bd8ec9=@!Yow~$YrexLp(V3&0{`+5-aXm6AI zN$l5fTaji|zQF#}bVH+CG~cc85vX2aNEBagDQgIqS3!8ec2f)GdcuCxi>ofko174lpb# zI6rD^)K|Ys++~*df+^$cV3VM3bqtf zx+*1wSFhia2W3)aJFrZ&s2MMF;;BjBD6(a)z!KC7rSa6ig^{J5CAwMNRG~5y3z`C< zp}o0eQY$(~pX7UC9Tm=drAf3XER1OL+HO${FCMcETD0SaCnS68CEDD~`2Gm%`;Mol zes?GFUA(~NEidg_S>iUg=d0I|qg2{$UPkR&L@jfo)wI+RPU#r;hdpSW&F!*JmRS*F z^}FAXkw&jg8NS6hq6b|&9mDGthI;!-Ce?X}`Odsbg-zx$dfxj%{yW|M&6n$nAi?!e zklqFgn`Q8hl{t5Mf%HY41#-1VBEIIiyO0Y(LyM2ObJhwsKkp1(@Bt5~q0^ylie5dafMb#}?oJ(4EEL{gyY7#P?L~xe|I5m$w}CqxS?ZP9hdO z7sSvm0zaA@YUdY^)Y6%XCzHhrRO^BRU&`tlYb}La$u;w4e0vrbedjzi-#kd^G060D zcV5egNW)lRCd5v?IQ}~RF5QF1Qv!Mv)Hv(&Jqtm`&+Sn`xfQf1?%qIILK%+_A38Mu zGuRlS<1|{<^g%>zy7zr6xQad}whh7Z$s$u+|9W7-^ zi0D7iJE6HN{wK-hEJ`(5rb_+GToPI7m#=<;B`GaNGxa%OXWNB-e_M={S1~DkAM*eW zHYX-RFQ8hp7>l+=JVY%lds4sFyQ#j)eTy5@&Ma)pDDMp|>Y@AHO&$a5O?mVqRq;yT zZj(m@J9~9|k^bwdkKz=N)z2r{%B$`$2lUD92%@|kgkXM*61>)NPOm&(YZ+FTV4(0t zT=YD2C}#3iUQA+Z|8&=Fhch^kkQ71gfY8Iwu}i1lIs77OCt1p2S8Uw+p4)sCJhMan#j~UC;MPOCu=PWFcSQTp zbNl=ASXQ3~X6%D&a|RFNN_EX`Dz%a$7Q8m&>5XpeO-sn{s#v{K!y|Uqzm#kpDA|4_ zg{=9C8!Ks?j?EHfv=*m|Jm?E(Kfah8#7(u|I<{o?jaU9>2yb15@KF^3(aW%O2-K@K z?VKQw^wj>-6ixhR?K@|~#mR%`+l}g!P@9AolX9nHi!4s z=GbV_AebVO%y3;Z;={o(jApfQ@YHgciqIpG9sa#U{eoqvW5sP-hN%+q$+>3I?}wOf z@S>Xf{u_v$j*SUSIV@vxh6%Q5F4%0C4@N2F^=V`9;W3M8YiM~3AOzB<27Uc3@Y2(` zw$D`w5Z+zmV0={aZe~Ez5JUb3KH-QSzxjZK^#fWtIbm$l#q3AI^Og@Fa?N=O1s33@9cIwhTq7{*e>UuS;@|-ah-Kcbu2Cj)OAYLSWfZq z9RUexT#M^c@a=mR2))Ggxf&Idi_P+*%WoSzU?dUWyc}-!lB>CwZYrm7@E4E=_vu+9 zg+<~yncz9)qFZcGO()kwiq78Yz$mTlWOEY$0;5)u(|(hg9yMGdL&5+bRCg~OQ}whf zh526(Ojy&GDc>9Rc&|E|^rH+C?)V~A?LJ2lraF?J#dB$~4ajGTjfD~OONo-9jBDBg zm53s@i=0}ofu>>Uduat7ojrE7Ke#|>hrHCEdC`p7^7vflI&P}kF_n8$77=@3af8TU zd~rTwY_WYEdnE?T@XadMebSYm)fuSqWFuNlL;iMeg?N3u(nG8Z6Ea5a$3Sk#=`f-1 zKFZXwuF{r6?$BC`$>q`-=wD5bx6YuGdz^q|^#N|7ELME@&!dju3N|8htrS5ArM*^5 zmYrb^rlb#N>bud_;>tzhAmrY>;@I*dnM01P+-tAxej44;yqIgjcly#Fe$ew%qcbht zOJ{7{%*mdU5g#0r7MgErr(?806`MX%Fz{tKy+#-2WhVmLCKD;2=ua3Pp^PPtnPO}R z!II2Cl_)L&CBTy>H1x{fZ5SN-5S;!2v1+~d7O+(ng^MOp&yIr-gd^?yA#^BuYm8lw z<B{UH$ois(G4n4NVxG;tQ>im&6BC)EBTksn_%=wdz=d9XJv>SQ?l^C)C ziIr-*Y^8VSkJ_Iv+^Fv;nB1H5ne-FbL}${ZWAoc>91h#4la?o^quJ)-+J^F2+sTXl zYhOg0$eiUr;Iqvon{r+ea1dIkdH1fyNNu|JEVqh&k1F=tmf_Qfi8OrL3_E(Uso1Bc zB@tblJvBs!nZxxNJyo3V4nwmuS}j@Z>W<_npg%=nmNJUO|C|8u)dWP;b0o$xv=~gC z3ET**wwyR6GpjNOa`Om*^`d5jpspkEI4F)C=sap12SCh|hGX^8G@5grHjiYr;%b8n z<~_|*01dUBA}+Z^E0d|EaVmg-+W2s&FGSY=7_^T8@*q*XRD-X9 zcb)J|8+KUTl?y^ml6H@V=f@Rn@Qi7(T6Li@7(Zm|2Zp5u!sgXm9;D>JfHT zknJAaI#ik*6d#|&C_G=it5B}qs9r+4o!91Hb$-`oCdmjv z=&`wF2x@^Mp>U28T*i+hwj=l<)Q6mAMaHhW-9r$x*s0{*bgxAah! z&JMU(3zLH75q(u%^8SP6v}J(o9Sc%_60p$iYATG-s}@mHqryo}AFz&-j#k)H&lF&( zNdvN;Y0|L+Y--0a!;p)U+_l$8`9)F>-3+#avP!lGKU$UZC%37v^C-&%ev2vC8itFi z5w&)9!;B}f@n_njq&ys^Z9mDqnyqO_#+$oOl*Z*!OssY-tn=G*8}1_Qr>U=*zKAp@ zdQ5i6QSaS3o5MJrqOt#QAWwFi!%l}+Fw+8jrwOt~nKH|5chbVwETGb}&}eA* zV5&I*!p!UAbV*MywH+1Ee^J=zPv?nUos9dm9oesA$)4^n(WaO*B@X7#u``=>Vz z$7H)ZQiZZQkhM-6Kr%S24Vxk$XS=&z zG`E~vm8CbdMnE8}diX|)tERZ=`b0t*`81)tEEVSlrueAh3tS5y;^lo_{W2&D5)!W> z!W`==M$O4oN{FWqo@|c-<*@b#c(STTVBpOiRIs5w=xyks>c5sBwwuXk7SNBN=%d3r zUq|Pv{ZEX&Z_-uvO7B~1Ia9wqb$)i2yyP3#4sUvK^|30c_2AY!cc&>JYw{bw*%_%8 z6NLt4Lq=X6@+|kpQ9;GuNL};nOdT=mL1sn=9rD54kaq{PtJ+liCKk{d-NX5>eQFxb z-zmk$(W=@^pj-26@4oFJklM77v(g) zdQ>E3lQ-@hi%oB~_1z|n(caHCQ%g60T=_=kyxMd9eiw3#*DXmyAtmw2vYEvP>3nsS z6hHN17W~emr|;%ThHCN_ z+hA`W3-Mu@%mCft+kto2K`YVB$^#>UKYpk?C!f#b`9uxess5+dn4RVqjlv!jA$%u> z+Phvc7v@~y6VYyj#PKk(+x!t0+GzOPc)gNOf1plnV3)7#%}t$ zr(!qA>|h&|f>y#WqYYxYQaG%d7j%On(mrtYJo!gD_f_QzX;dDQsPf<;;DV{54WE4; z&@8jw!O-S)ELnx@QOmO9Twl%`eJM_*+ z7th0?=%T>41rk|+6#8^l8rP5_`JcJA=M|w!VQ2}+SlDSk=;o-Doh8-I+uvd=^AYwE zNS(5`HK@nD54`W-9o@&7dWx?PAB}K}Mw3;uiEOj|1D(D{d!>@f63HUiR4`PKcHWK5%d1PA^gi={QdF&dkF2P z@m+y_lArxE0IcyNM}1+c1|4O`VdXZR^|kGfc@g^S>&&9l$zbP}57-n5w+zRC>y?pQRtUikg9`s=4D1J^SOnSk5 zTxlXlo{#6-h~TAQLzQ;RrCa&7meWwR^A7xW1XvC5u>>`ia3pgI9$Wlp42&W!*4{F; zWVGU+it|ApZns+(V z8L?Z1!Osos(U0J_8T7q;)uyFueJ)2zv521i1tWbd`)eB;KHOh*+@A7TZ*E5=!VSa) zo{jpwCCHaX=(V|S`rJ6*C!h{Z>`6D6^EYY1Y3s3B+8fRj8hu3g+AkC$^pmf~2QDpz6W5mt}Z#zpiM& z1Uq9gUR(us9RQo|ulKj0%3TgEMheV|Nu3^M2vf!5&vSH;dZ@cr^mgRJCc(G-f;+VY z_5I4^Hji$CHJ5P1hlvUWwbjZe_6@jCXX7u6)hP?@N-`Pwj>q;^clb*$1_EvGpz}Tm zq3G1$(PLngyyp))(&(tc%H9m>kCU9H%qj~JKs%=Ox~V#nxn*BV8R>C6a5k-VLzmF> z&o%tJQi6SR1arMFP6xpMi^@we8cLNwUNLys$`T>krzv)s+8Hv72K7BGF z67t8Hok4eXd~Km?z49JWj{;)Q+lXfOG>zxiNkAUrryu$qcKvV*+3iPT<|YKQe#4HM zt9lJM-<#1G$fecVE-=db9Ovj4_GWtMr8QeyX$T3gnMhF-H#Y-dv&ze44*L0m(1pX^ z&pflQWv>Yrj7;4)l7~0JkB?fEW`h}n_GE7Nk1ZKjdLna5Wp69=-tHMXu6cGGV5_0E zeO7h63p&1#-03#7q0}O9vj>Vfb-^ET;|qG{-;y21cjOV-)&L{)vsFXo(D!&zVwT8_6Wzv=A^Li zNqXokCGQ3x*q&JvdY3S=^a}-Rg1fFD_{}GRcHS4PxZ-ZGp?oH}0Tys6?I6I8+EFwz z)}`WOQhYM0HBd81jK*%$N6QMoI}el}hl@-86bvK@B#AkU@5oyFa9aN>3=B%j!7;^1?ij`z0`inNU)Gl2@a zT-!0eB%soZ|K0&magK{F@O|PfmN^2ZmTmDq1wpIe;TzURX?v92Gnu!FnZyLX?AtK^ z5aI0Xkj*tH_Dc+uc5#|xk{ZB(mGG9;5b*=}!!i8(gv-T=&qkJGh#DRdTZ!i!>L}zf zg8%GYb)C)azv(ZHKs3f&Bc%?oZ;2u2^@iA>oGdHu} zD_N)&=6J+k3=i(@KNLKx?v$@>7R9DVo!yUz1?_sjx&btjk5hPN3Q7<6$EVf=*GCUo zx5B{V*oKRt$_zbW{k?H%*cUG9o9AAK-dUX*etMfN8*L$2BRRYiQdyHh9e=jW`A+}7 zl)6fFT4Y7eN2fvv$^NpK&gF|Qi&_pkX@MHPCpul^$Y&&(@|K7q?-2 zJ@uiU`^<6M-J}NN5bk?wo@)n}(cFyPYCU;ZmLcX$k&e^o*}N6Y`eh zByFS#naU4}9JxW>OVK{@3Lo;R#MyTAoDmo2^37ENZfCph&I?rqp4wvZQC#uXIA+Y2G8ZjMT80a}ibHp~sxN0%G=1XMc;qN6?L-NX#h zUt(%3&T3SuI|>dn7tE;pHKPT<;{Doq1i^h^s`+Wn)gVO7c#MqLB0#L4zm{psrC1AZ z*gMNh9-bS6*wW-Cq)aG-n2D(IAr_n0;^sS)$q#8M*)}ZrHKmWmr^r96Ix~HVsdBMn zk})65r64hXIZ4o7_A!TjQsgr|Ag5wTjgv+p861ULqMT`u+qN{l5n9!IrXvai`fUwy z&*0@yeFO7&9H-BaB z^u8~83JkNUrE(T()(t9&Y!s1|_p)VPUe|KAy37V?TU$8GJdgJ@3#iUjfo0g>#*P!Y zYY#6Ky}g(j(;ELtja*NpA3?CGBXjs91F)jI(ymMc%!`EpuL3_627(55c*E94e-2l~5 zg($z}_b4gJ-tWG7%1R|wFIA+qP4o{q88$b`q3}3ct?k7d)SM5fDJ4l^-$?w46P|m- zPDKuo()^US%p=NpBOZIapwcN_r|MAWgD{*eb9`(zSpC+nr!WPsm++jN znfKk&XLsjdU#vCC9kq6n?2K_X~(#Y{Jj2 z5}*WWJTLZJjyx3vaXGYNvIT#G))#tutb7E^w&Vg=Jtb?hWRXQadUCq={tbRaV$tU# z&R}4FGl0#b`bkcw-^tZ82=4vOq>h`aOf zv1E!qP%BtJ%&v`++n{^9iKB$$nXMYYV*mY#3bMLiGXnE4*T-C<92>`}wYrZ9ZC-7u z0hU>RPNv2j=Y4YSbI)G)J%mJ)q<*VSQbZ0XOmej{jUG0s{bJKYPq)3o;5}uSDp{2Y zI^UPj!;SWpf&gKN&k}u(yK?E9Nl-zl4JA-!ETGxlpGvR08(t%3vPejamh`_qSFxi$ zrTO|GV2b{$>W|lGqFZFZVi=wWRz*5dlqFIb_Jt8jZ%`4F;T(+bNykS9TAL9_ zH-iM8-skBAdC(cHhbEfl5+;hx8Vl<#FXv??k~J7FePr8t&Z(UPhX_eR%RCJm{Dbggcp#$4*0wRxeVmTyb%wO8F2+nc4A8!>Mi1CT8cXpga} z6G%@NQ+&Go2L!K4O1>Owdxx9Q16Mp^CHsYiRbFgCvau^DZQQe}C$eoXF>P=ej~523 zk-^2}AFS>5hm_{Y1=DKNBbnWD7HFbc8AdpQG&Py#u<1W|K}}kQOj59+8B}i@_DF^g zYtvjF7^2aP%leKMyg9s_45btbVIMjUs>|Ny0T`J9^c+wZ2)_3D#zOfQbWY?K+yi<8 zV}l!P@^l@+m?sTEibybqLTJ(D8s#pi(sU{6VoILju8OfKnp5G@x3C0^qAm?f zYWUKxRp){DTq7F6ka>9)8?Cp!U7s|FHN=6}oVQ5gVICtU_Yjy~F%qKx?Nr*lc-XO>4wb|I zI#wwpy*-NPk|vW&(-+Fa*$64sB;k4PIx9m4U3_y0a0y^8+jeNMV-6Jls8*9ex<)VZ zc`R29sgW`-|7!8ako4d@T})mcM}(e|s;gS$P9KSWc$&wWY2-y)Zb*(7GyvwOs!`WF z)BE7RLZd7u7&n=5kveg2Iz|b zqGDl#r5|H%7bin-bVMJ+67eizY6*)!l@mg8nN``g=(5?5E3FpO3^b$5R`~!8_A$+y zs7A8^eWgeYtUt8Rz9Z1zd%qrd-NLENKYG}RVtGc3sy9@6!Ff#?NktG_W{~ACC51B@ zSAi-wxR3J5dIgB^X6W_fH>i+3uE*Z(#oq=o*S8h+q-HYXvT2fPFpPL$7^cC>CLj-= z1s$;WoVEjC>&{%)z&oU{q#zyBH`9^yqL{S$M-_y5Oj0_ddSog1G8HHUDDZTnT)$=3 zRG8bYDT$jBs7DHnLQD@9Kyu)0j5l%V9|%OTL3AjkM{Nybc^*e(j{Sp*XE@|6h3-~U zjCE3p8b>w*vTVx3xfL!YTR?d_LhyOC@OeUPO>VXKD4jUD)a?RE57;Z3$SDCWXgbq} zFXbDz8+-{z$ly)6@3^B~k*gSNnniEfWDvKGC)}Fe(&&^=+$~Nk@XsEXYm7@bTGK+z z4(o433_rrBnHA7D)tc3_hiVGhr4HMuks+yzKzxTVrdw*&GKFK;FZ_u1P1X{ywOESH zXrcWdX~E9wYW)`Z}u(`z9FEx-5>eb&o!RFAyj zj!$#KVQ~04kYp&rZrV3=q(-UIGT)IoA1LYL&R^10YOeX+cBnjldZf~S&!UOssfR+= zVr5R*QOXwa`tSS;NBrM1{a%tyOX+i+qDQ!3tYUo3)%c1nQ4sHwGc?a zDP&3G+m8S623XLBR?0=G3aZ5~^qoeH4DXS&zU$NVh^$#3_m7cc*XEugomVPfauNkQ zJzDDQ0k#zyY+&-As%z-R-vp=D+cIV!uCInrF*WVmI&_IHxxQ)?r_4?GJYJ?npZ$IW zA@U%xpyEbv`rSIebpe&=d~+t+sz{6<-}`Y1=JnSiu1^G+OCA1*ZMA6;4}XJy_m(_O8jCjK=eaOd0aq9z?D5VX5eJTiTT&6H zDyslY$}Y8K`|u2m<4pE_CLmgd2Fc7Ly0rk5aUrXcvu{3o<&OO{_=(^@XtQzQe{MGf zC3nvMvn5vUcZG(XWatBj62>wLcJJ=5_m_8!8V9vf$X9X5_wzIgPPH<+{K;h@SRk~G#BQYw-57Mx<7?x>M7Y!0Npr(y zPXC3xBPK#1Xv)8KQ&b;mRx0j~AyXsuCD_mxX@$(e4+14SPOElz1iFWnPJ)+Y{XS-G zSba^DTF#@40DA`nWS1Kj*oDc6bD&u232HF?0;PhFzL|Oga?Wx0O->y`JPA>z?^V($ zf~ab%yiEzbap+oVwf0aiF1ImoX6z$|OVXy^^^|DOd&pI47y$f~r4ITtrioB4w=HtCaRpn;IHT)*Q zX{gJhH))?eqWkiBHRMhOu3A#UD6$7+VZY{fLGHzU zT`{V@F+d**y-cxf2wpQ*r#rvigH@=fgn5nlR4iq^>@BwAW^ne{QDO3A>BzR!-k6`B z_J(b0^5oc%w5iOA-y&QhomP8wC9qKc!lj(iOBCC^`|)deJYgAwnA!%}0PXMwNVO5N2l);JDu;xr+H-|u>JqN6h-7!v#FC)`t{>*4hYc4wUg+J@u(?(5cd}wavGO%$M}N@_AJ8 zQwH`MnzE4tm;lc8V5CE<3xVY9@DYda6m#yRhxYWuC#gVf==$^R z*UNoLY(92v1OjCQWZ~vx@UeaUbn+Gm)4nwRao?a*%h7ndzlRb8s_H0OX86I?OX!*# zvH^=86)c>?zNI!<3w<7R^bPT{fZEy>Gq|d28mb!mrPj;=P_n*gK1>tO`X~`hmpQor zh>Gy5e>@MGVt_wJ$I88M>B7gba|~v2*05*tzaKOz%*lW7{ga|{%%J{5l%LRp`(U7| zn0N2&KiUUTG0pqr(4m%Tn1@pUYUbgLkIqiY2 zsBg{$JWZc%zOkdUNUR80TGPH5moZM=WUk@9XC3iUXws zI~?*RniT)$l*OH2n4ZtU(H!7ExG2tU&eJHhX&bYn!(7l2d)xw9!4B60+55^7(2(~| zPma=4$1D!k<#;_O_AFe*%QR*rbi;SnagAvYR^AjPyOlJdSyLga;_~?2=e|Sbl1Unl zuXU&)7aYHj24Ezyw)0xUYiVN@WP|{^ygGl+5A6b@*m(qgXDD<5fMg5waS4#!sIE{z znmDf`@>Z3ARNO*XLtEp_iS9|}OzL+rRK5LCyIoTCxAG8V-7P(Ut7$Vp>)xRt2clv~ zx|d?ECCoEj)_NPjvga6Z4 zqy-#Ks%>ppMaBUH(hK~LTTFE{1R`r9i%Le@?+UKsJ8mSvaX&76|3)_uJavfhNxT6l z^(rq1Jz5-=gT-=8Sy6sk1&&ZEa=OCPi6fhd;K-Jf@TGWm2HVze={0Qmq zF+=Jw>npZ_(9Ji3)Kntd{vcYuR$ZBPu#;2LqS*a|3qo%KQgp9CxiX)#s(W&g9&;5U zAGgxI=z?-r)C(ukX`x!Ta(zTh)L^f4Z^Rp~;JURXD>SLGlhPaLb;cSqGCKH5ULI}F zIb#G2UZV9Xvit+c@85>UmO@!JDr#7C%O~hAIW>zuj?G7Mo)ifc)Y=5Tvp~;dkQS8(ju9gGcJ;B_7QREh1^!8N4Pd-bszVkwTz9BXtABU#*Wf0_;1V{ZHStgDeu z8t}vJ(*;`BgO!6t10ZoRY&Km1&SOas_uFEuB4bXvPp~FboTOSQkTK39Wr6tLWhw?{ z2Pu*fTLI5mQ<-3sFer15+6Ep*q}m-T{Zr;30Ii@eN#i|P#>7mHnnpI@PZ#h;n}ory zM?H9zIJ{-s$Q+#Ps17InKvV+Uz>98F+|rM3blO%^xZB9&6$FL1ac=7V#xJ-3`6j8+ zqD?n*)6+^dFt9j3XZK67N~*Hm74L!r_IAKd(=0WML*zLoK5v@x6GHPmP?+fyx$zje z;Rl7Ms2C7*NTi#LQeD-FZLh$>U++9_)a9TD@nna#QoRY25$+h>|yZ}_v@Oo{rOE?76U zdFv#$6InH6(js``V8{WMU>{ zFS2hX&D=GSAV~j*dfmFKxGAnU5kimZd^6&iQrq#{JBR^bw&(Rtn+!TK0rEbJOk}~3 z;2bK~n^fvuD(dqpl0*nU@xk<*t<4kXn!1)9FV@WsE0T=>S| z@qzAfB^5H6dS=1j}G8$n4-d^lT#6SyeQ zR7O=bE0<|>Xyap+i7HZ4Vg*bam@1Gjoh_gFFE7=3{$4S8C%?zu^;okpB2K_S?Sx%tn2DtW2;u2Y`Tz)6HP< z-w&S$mYCXd5IlFB;G2oUvV>hW<(Z_MWxYqMa6bK`EwO4S=KipHU+zsImqvp&yX%;` z4F-m?AN*eyt91y!Ai-bNEti+?0@}2xv9_P<7ESgZHRRHR$*a~0Wn#jN?5Z6_NBGCB zp)K?DQE$w3i=4_bO-OL;SUNQyrVdKB)6b!CYatDr0jHZ)K!dA-71(Y8YoyqzKe+AU zR#+@uKD{~{@gewwxz={os@vIZN$?gzB1VKJb{v1HDt)SN8bE)H?5K`zLCHBd4;`}A zKU7Tx)qh;5xTg-(G3vz_f^4gs$X`Xw&8Z37j1+=3-{w6hJvZ()YQPWh=R-#I zH(ea)u@+0da4bG^s?MUz2+kGDpX>>9BV&3cd8YM!H_D^DZ}sSQAT&TQI}@TGIfaB9 z3?8PM{DebQ*@&w!f}Iit7eP;)*XcO`IBcEggR-_g zT8i9&d%tEHpPla1w}&L!kuN`G|^=YKB> zXm%GAX<;YD%Q^409p~>#_&`=NknTyZzQR~cdI42sL+sDpBgB2h>EB`W8DEA{Y+Jqb zE8&5Q#;`n&^n=mg2A>Z;{pR=NYg5+6BZbFw?8RT+VAx>*r?VJQCFn>b>xkhOtE|RG zjGq?6uObn162hdv9%rM10oXx@R-NGqpr?r@efALP#s%Uee-R4)5^;iW;oN*YxN;}q z?lU^-p3j6exo^TWOTKiED*R?aZ@=|vz+Y(MMBTU{XLJovjK$gN%E!yhw5(Sz#4u@Y zPWeOhEsh>^dq~AXC{}wCot83e{XAKLaz?@H&FJ zXP&JsRSnvwqIZMRlhsQ1;`O|O9;060{jKSDNbIrP6?Sfhw*K026NRwnI#iRRSr>_)d${SxfyLj5k@VKV9BOO?{s#5xMl9yMrhZp6N&!E>ohCQs*VKE_%{seS>4TCACZ|WFn>{vdmuv^k}uY8-tl?Z(A zdf<@Dj z-=r(U=A`z|kAaaLyvg^`lgLZk*OP2IU27`-%ZF8HQRw)+@j_iB8>z1{(;)kFY@B(1 z7ad9fd^GF}cQN3uRM%HoV&QfwymNA9>7@MN{@n2)pK5r{%xd5VQ<1-!#Qg3yHunAb z*Wt&2?>iw#vpka3Tk7_77*^yGzHt*RNcqlTe#+-WhMR=ba~<;|+)3TxR^enfZO#%g zrs?NfEj3j>=;+X*?$L#`4P8MBXGUlf0ICxDOfWn=u?4;Zw+65%eoU+ej=QTSu8 z{He(Om4iX5{_?Z_`A8amHEuf02LI-^d8K~~CHl*<|Hq?H`<0wKa2tc+4=&>$Jr;l; z<$vxJfDZi$V*c%$|9XWv*RQD>vxmPm`NwDdMRWY?7rfB=AKv3n>&yQ;S3T_NnJ*N4 zP7342_Kqu=kC|ckSBt&0-!1mM_uQRZQqgybe*g}Nw6&W5;^p^Ni2rI(XU}(mZaQpr zIlzhIgoNKv>woQqIR`=m9>@bW{?LDk7lnl@Y5cLIQ29Vu_`m$G9K{vZzXa(Yg2$xey;+2nb>g`u z=YrMRN__R5+o)TxnqiPh^@NX-~=W1uZa8C#So`L+WA>-GJeO<5i0X}#j z&HsD9Kel#-|2KYrjKyD9?EmlLB@pgo8shwO*9pA!!pRa-CK+z<9eVVvQ?7rvGa*=c z!g^M~r)vwT`X(MZ=kq0?kqK9jpg%cwMoUyZh0Vlyqi`60hHIPga$wgX++8@GRlCM2 zgIX?lidDNx*Q=F7SAC%Q9hCcn(I644xc9Sr8}816bH;}SZ;H~!DpJGTa4%lkqgB{n zcWM?BGYa~`0N4GzZXnI|6)LuMTpmcx40gEiTh(MLeBpzrI1&A8sdGo@4|l9B-r5E3 zXG9FzEhZBez}d82X*19Yc)?gtL`LNOF^L$UGev-erYCUQrbqcn^M0X@)6OazH*Z12LXMzFOduB(~P0aOv>x`E) z^2tUv)qA7aNz_`^J4J~~Igys+lA|^wnK0c6H`X;Oxl_Y%;cX`})+dD!a9h}vxxbC< zk7b74$s9Ax6T+9mAY%An%GHa)oewVW>tefhVwKJIB;hM zYm?IP(bWw@JJT+b&$hP6!cFR-oj*W5OL!)KJ5hXpx2`Tk&IT*@b7l&BpLXy7|!H|m}cbRb6m-#XKrbRtqPRc6Y?x&E@$0cW0KP|r`S&mVXO{TWW18?c3Fvw5PJET^1Xa~R z7^{|l(2I|yb!Qux!QOqC!FpLiuX5i7h6T6Qy6;~DTx{$({Kgew`CPKE!@M*vA_-~1 z!V*hnl(sPlCxDxcbd>mEI|_&B!je`GWH>&$>S}~j|RTV zX$51+Ml`Y`X0t1s)I(M?QV%WHo1;Tg29k5y0cXt>2UU+tfKq>H2-q8av(X&CYkRqn zE?792Ry;jetkJu(xz0R11zZq8qqR2+A3&b=PCKo@xxR-Vn-!fvrJ^;i|T|bm|t-iwuoAWQSj7(xL75dSl3-cpmt}l7`U^kN2J`l$F{oBWSy#VjnQT(*T}p$$uW){HBF>R z+~_=V_sMkg`ddErm}UGh=RJ0z4vxJ^mnqOh!H+f*tLjc(MZL-D8(%w%J=ktBaRZEP z81E=H<4oLiN9G#zoTP7tHoy8QPLD4YnA3ccSQ*)Pgv^um#kd?6oyhNrE1qI=UaIQY z7(QSiqd#ljZ_s8_wyoRI8&HHC`qN?F`DN}%&hOpbAj`{cFlyEQS%$u*vpGvR*^4Q~ zem|5*qzW=e6h;!}5Oz)18gpGbf+UQShOQ9eaWb9EFA;p$wh6tp6O(vgEEWk~$($a( z6F<|)TrW~fr(4a^c)VrTXHl42nzg{)zEk9UBAd<_$LiX_HAerCe;y#DmXghCSa=IT z^Tsjb&*j(@@0Tc)PjC%|4yKG1jVezcR>`u(tSZ#D2K0q%Qg!K^?x!$>4k3HiD|;>QTo>?7K~2 zGpKF?xSz4nGX_5671z1jj+}!M*BbjtczF1%Hig?ir)?|=Hd!BCRvxeEs}pKAT>5+~ zW+K-UHYFsyca7wx%FAmQBw{xcg~fz~g~hIke~J{oFQ#x$@mi}}TF@JMGij@m-G(tQ zw6pre*4FM;1H7S8?dW_Jo%v|?W~AHx3iqDd6a87MRURv|mGFnW>0cIC2zZ?zZ_l;9 zizK$n?={IjSh@*F@OrB`O@9zRVrJ_e3D(uYI>PJbwteA2TWzyI*XXcHZ!41|AYtdG zH@Gj=GNy||97-yGw9=ELY(R&lnHzyb+9!xlZo2OZ=uxQa!TpbQJGXO@so)+E-$v5t zHQvfQ_1K3OOHV!^y?Wogxv>Xc4;iGJp=GdVMfBWp~9j@zt{u#`_PfN|ICsSIuyAeE6;$Kd4O>T^cwBhMO z;hE{cg>Lg!2|b^$r(}|Dxv8$?9a<2cWfz`27p`g$2A1}Eqku)6u>hl1E#4SqdwGWE zOauA^Kf<#0cHr3uOr^I*zQtiNr)(T1Uvf6g3u4VO%Q|?HE_BH#zG^4yUWfE$+|*!* z+{z6Vdevz!WcWE3H8FQK{RJ0*#?j2^XI-iK#%ett4OM zl|%fSbR?QFa5MD~u%NV0T~_f=KvoY~C`Vr;!oW@DVW(^Xl4YYx6)7V{^^wXM*d>aK5!&dUgveBiq&`-o8$B3~b>6>2=hRGS=TL7gtr6>A3e>nYJr z=-NL$6hnu@Zu zU!*Kq;5wbc(|27BxpsThkJ#@MK3E)kCfhH4qbSm3mxW9tGI#!Ck=eCc3OZ3K?Z!g` z$C$b8xZ?4r&v-iQ>o=dRG$Hm~Y^UM{V!StmW!8^L*y!8 z?5!Uw$k;X|=&8;v13s|6~yn+Rr(Rw^1Smiy98m(`F=R+)RRqTt; zs_zw^J`#VM9SnQvoJjWqWzTXpZ$`%>l`nF1V`Z}T=6%2NnEmK%9Hwst;hLfPe1=JM z?O~r{ED3B2LitlmvQ+?F(BO;B%TO<_jJNEA&sm6`6}-E@CNC%4q0+^NlHCezed}R( z_xcmhHNn;yMKD*v{IypnoaBMiN_yeXVS>K#`G&VA%iT6tG@s~;ahV&dHM-S>k3tIq zIB>3A9A1Bty06o+IOf!M#Hsv6)85%%p`sN_YUk5*#ey8(lU?F&^<)h~xk0IW4^*)D zyDa_>dv6&PXSQ_Wxf}aI_m=k_m{;$nr|y z&C>Z{YN8>Q@SP0iYuSKvh_Jv*P^@C`cY(50w8Zkz7fk7B>L&cg;MO=}FmytS>u^Iy z$HeJiX?$s$rm=_?6HXx+Et`a|88?@ye#{@CGQ2kBOs2VN5JrEVAyj`8g@&_KNiO*F zUaY@FgOhohzfg|}r#tmgiY9R3VB>3jT*`CMd;T7r#yAuFkT025_<5`MyKH@PeS>&v zbR&F%F1q)cdo9cm?PWd=5BGFrtOmpoQ|>4F^xIIMW+MS*MLIsd&e9FzgSqzWjkH+WR%5QKK3W&5 zb4BZ4I6%#knh!HVVIcb^Z%v7nL_X`-?IM>{SSfxOJkauJ+hzGExPsec>Vv+C@NTRLuuAT=u9J&j~d9!0#5WpDRn_c+2w9<8t)&!npfxZl>2JmAtUTqIee_>cH%Av7#gW{+M#qaSJB7BrEQD+h$+^= z3lEO6O`OXbA@ncmD*VF>8OTB!EkcU(l)b336(1$i!>aBl-9x02-?t8S>h}zfQNA0D z9O>KhG3qe5950f2vms#>%txTyX%X3^8umr(y?v6TbWj(~jsbXzoOe7Iu~CAs8lHdJ zon;8Q8sD*U=r!N~(gVZb;xtAC20WssRXf&o4F$NAGeh_=r#9jf0(R_AgQlvoG#|Ap zA|@Kq$>$@o#Aly}Pi*lq@8_Z&(Ith}8x28TQEo^j(|opW@HYSGn9a*smh|u?gK66_ zL)xLnFo7py;q6X-{S$phQEN)!Scc{m9Y0ZH`AVH#?S0lLBJ{k*`A{2&6lMx0qaE22 zaNYkZx9f0hST7@nqp+vT_ir)Ye!cd1`5b(g>E^rkC~P*aRdI%9gpAl5OhfZReST%gr@dbowvBvk*-RCv1pTiyld)3nG}zu;Yp z7c5b=RH>{L@rhA|d>;k~CeSF7D#-)UQH6;dTIrV>=Ba}K{B*Sl`3u&X3II+96|thU z960Di3qJX@Yn%H>vV-M8?QM6>ff1cHP3PFjtuK)wEr{u?HWsQJv= z(BwB-wV%)Tch162UK3>Z*rx_kDz@#M=$3@l z#sEo$pKJuM`@Pho6C?%!wPtg|B^3wbhD}kmyRf0@h5Fwz<|!Rc($~#DHK#H|Zg`uU z0Q|^SUHHWWU6t>Euxi;34EROx%!!%16H%5X9a&^D%Z(os>;bDdUaGoGGA}dO3LX(q zNX%Fvm@W*b@V!h%*DRJRZiFymU(xJe68!t0FQ=rxist<2;4C{Q&=(wpYx)xJyZD_c zJu+-WMsFN8AP;+6h>jp9)WF`WkU?WlABUBiEYIzo^*E)!>n$EqK12AlQZ6iKp505r z7cehHEvKD*o7pd%6G%8c8WSnRb1>b~JfKqTemNJkY-jdYcYjuCOO!4`Uvj<_FUOF@s4LH8{9 zXOIxbJep;4Qj$AC7u&ansT^`66dwfQ37rpEwjSlH@aGB{jrRbbPp0F()CNo7z|&O) z$(IM!=}ZvZtLHHL0k9LSZRSx!2(5FH)wr@9bVhnppJ>Sk?i`krpQ~<*eif=HB_FDI zg!UeN;XkYcHAlY!kMnllZpJ@nO^+hYU^fG|q6^za6~3Xm4nkP0d++?Yar84)J&_&{ z^;ts(tj?>c-uE?E-;6Kj*w8MVkwV48-X~K=fIKl_B_w- zqZV@Q2}&QrOAi`RZDod}dzxZ&zJ=QE^XiQTTrX(b1^~67wN~g&4~3AZir>#l@8@SL zNbw}fzLwy(pbykwyM2MjeXPAvv8HIZE6gLapNa-FiV)#+{A{J7W3OK~+sp|qc?xXp z_?nQj zrVhbnQS&vVx!K-@c%M*gMs2x5JHIv2@x;Zju}f;qdv$ zr`$$$l@0(-v+$QBlA>x+l;(;pLxKyrU|1SPg?~f|`xukh?-_TGS19fSlzr82kL=Qd zh8!Wb97c>n@6vn+^FBoRm<&lUppj>;kct^J_j*rEaZ`pn{Y;@AS1^8 zG~q^Pfn4DAp~fXNWe|Ax$Pxj&5bEQahjrq_hY^==%P9dqz|PM;!bOQ+M_{4H3RnSU zo9K*kp7Pi;emu~bbS8;CuYcjJ$T29^huV-TStd4{&@O69ByIpr15N?vLZxkN2^2}Q z{fV=cDyo@#OEqH(2=}r)ISPgqcBNLI9nID2-vP7Rfs*7Up8Xv4(%~bAl(Xjq7kRth z=9Q$tRmHhbEOM*QsjtP)Vi`K@$%Ozu*UD=2m4lXK7(nP*ziYU#!g3h=Y3j~hq$htx zea@3jj>@BpTMEYmjfJE5v%hH;S|mtR^xgg;L#*sIK9Yzc=WZ5$lj8m%9ieWiBHS`N zccyx7C_QozFphp2+XIv*3^wf^pxM{1h-+E(7G4+l5pGQVI-$}l{GZ8R_gC^S^YVDi z!(=))u8*OMT~q<^k4}k(MlUcJXnHeR)id_YtZ>a+A-APsu+`xrso1+>RbgfSgw03Z z!BmrkK{O+@e+-kCv3{nv=>1r1`??Osubr=iCSn7A{tOW*q>dRK+4yh;BSi6GGRP9_5i~H5&yFbpRh1 z(*&eX6p|l$knofGUXCn>wII$)>NFH3?CRE#pyUlo=`;hMsX33Q;x9rI2X^Hm#<3V* zWm4kXp!fyTYhfMnew~zWAcp1>i@MYI9jaGkaxZB1d&#O@%Hq;lA<4CRqOe!2?hF2a`C2z>5lJC5r$A^t*(FQp+5=6uIl zbc%peizZ+hVGk#LDgknf*(|xX(}Z(F6Ofa%% zNtKj)l+?@iP3%$nYIggA5fMCUrV=yx<_PR%daE@7Jl0Dl|I7q4e`NxkS86l zT6@w!6zcFQqXV{Juo9>;C$rouqhKm-D`q~6e2W0118c~6MnomqCMmI*6>&cZ88v`sUHXHDD8y9Nm>uOM$89t-*}Yl4i-oZ1vLy*dS}o_UlG&Fa zGm=(l9BCvI^31v@Vo~PB#5okujB<=a#^0d`w}m6uy+wCE_{gp$A@*^Q_Z5TWg)8E?k{>&tzI0((8Shc*SiOHqs}S zgX5L0Z>sTplv9fP5;ye$tGvXi&-Ej~Eke|Kwk??+*+tv+Zx#Jt_1#}I>aQL`Opni@ zDD~!;km!1)%ZM}SYLE4c<>qAtT%hC$AHILw?GYJWrcULI1jLSTn=^0xykT^{&6+ZQ zw0}YU6;VB<=S$VJmw2Q+@ zDi~s%&H02?za1O<;;1NeZEqRB%y_h)Tii`^I4ST$A>S6b@8y7nk0ok*lgHNWT>F)J zmXWHN=M!f5aE!HTn-)!D@U|u=aFwM`ED#Y(JWcZ4(m7m!ep}teR7#`XQHpPX9FA6m z$+k5Y*UR1dGVVu?FtOrx=Df7JT7&Kxw>}T1PD5Ez&Q<+KPIVD_DusPVcE38eOFT z$>b;zo6%|6^`mIDWsu)kfEij)Hb2^Sz3cpzWIG4X)S4dLcF-5C;&*V9(*oWU_;JL+W0)R;L)1w}N$P|rMa8TO$kG5){OExyx8eDO}c#_#q zr`9-7yNv%4m?l}|N>-M3Ahvx^c~_XntA=FKzmRYRP<3|=-mK>vypZ0Mr!fNIostNo zKYQExLl`zoc3-O^Zvx3Cee42@pGWa9BOUP{l+@%N>R;rgw$K56Qs>)Q!!j+9lgK=% z%TfZvOV364vh;m+s7M`7t=v!ZGIvY}ru+ytE%mz#1?doiI|AF;ql=-U0i6S~6wo<& z?U-2ATY>Xj1TSC}02K)ler(qxUXeEf!0#RHQxn-hC9NEUxebNY8tU=rd2++173X=p z;)yV?Go)3~b5qRblO6i;;DPWp#;jevML6p?zJ{poQ8v+rhA`Ua@3_$7y$HZzlrGvF z&ZsZ*?`!#nF*GqqPm=?J*WLhiBhm7O3l6A@U3zBihu(p1BnO`pax(_!3lmeH=-T2K zf%g4rHqsSH<_jq3en1CH@IKF>jQwc|pJY59+s4K8JQI54$rMi-!DKP5!SVK+Zlv*r z={)A)HwOz$uWf7Iktw;fEcVq8d5j0C^anUHXd5Y`ph#5h<*6h^xC`QAp_SosgA%$Z zq^$Lkt@5(CsWo;u$v9T+Cv-iU=(JU0+lK4Klhwz#Q8?rCQlH15VXv@`fRb5h?973>PWk4M8#pC)9Y16Y`mz#>Ss>c* zn$NR~zb9&(Z_zl}OZq1~V2!S|+AO=7io^_aX)jwwHgABt0f6;D=rLYrJ){3@#->RA zY{q7boj`l8P1hd28Ue07@kvb?W2d?~A!X%O82se;Scxe~pl|P)>JT<-Dn$1UCtExP zn4~JzJ!kXqFX6}RNTv-lbez!RZADU&e`b7j2Gpo#<9J;N*I#705Su0yuUK=S8pS+hHmkd2S#jaW z!>xD`b5Kl9Fn8;N#$J3t;)|UWSfX3RL-}93D`-7WK780urJu&4)<=Ol{kSd-K>Zwa7>{W9S{$5NqMw|IA zC;sud0-m)U?-#vQ?&fJXVj?A=YH2(}p1|-UgU|0e};aIY@l!0cViz1aD{0%J^tn6TK{jeZqe{cJ% zz$qQFtdkT(u0>l8ZS9ge)aX)!exi&q}r2;-2^6T!L8!zQeG5lfAqEc)hz)0&0Vr$TTr^azO}jEPjIn25bC-oC$__y2m= zw`hU1#8N7@4SgYI|F=e|><;VwMfBTF7q_EMkt&O=&}REWBqH?$t6b1XF2pYj&QvPu z5uMp~C4wcLuaNbY0+gjS6&PJ$qX0T9VWt%H-rc8|xMq2Qlne6Y72zj3O!kS~{;BCrE`E8$;XFi9AEy&+3g1*M8pYkuL`Y^;Q(7V$*7A4_umBB7I^#QXLuywNi|rDXZC z%JSD0?4^MMdEM(a@&3`nJE=u5)F12MN-7n@t=<)-cJ<(rkkb>Sy{$rZ=OCq$Li&)3 zuU*m~{LQ2hw%dQ~2gk!e)U$EhV*4%Fwrmv|b&K@9Q^gd2k0fYNx3z_Wv27SK{Bm`Z z*Z?H(XZl;!mszu0$s|>&XfVKd5lLcv`LCf@2ZD(j^kS#*s#ElH@AY>ddbb3K@bGH5 z&IF)U*w2KI&x3vI9`U2~ix@6lRFgF_%q-dLi9!p*w=Hn3-CrxgMopxzwHN;fwe<&_ ziU|A#gEMuVpU-s3;W|6lUw zSLX0PAKXP+_nEKaFJK|@(wcoi#m$<4+tpC9N9rHQ@!$71hx;{ELcXrq@cd0p{h!+E z-~JN%6LOwe0sk?E|K&F3Tz_5v0Ja(YKlIwaUGwj7=ualexAAu`{6A!0q|iTK9%_nS zPyR=h{P$b_XXyP69XAIqMyj!X7t8S@6 zcs{TNjQk1R*f2orAC1|+iPyiq#lPrw+HTGNGSGj2?tlHlKScP?NLjY%+K>Kyg#XKP z|0@=M4&}C5BNv+KiW{thqdz%`v<}Evkay++f ztKZG{uV}yeDxT*n3bB;YypILjeIPyN`}?EArCkRL@m+>_WTF<=i!hgbvAQg0!+O3( zZ7O_!^z}yCm?Ok)ncwaA@`Q4gX2;9{_EuIf|e{VP(fSw5(qSDlLJKCA^kYVE`@G$>+ z_4@KKrjyfgq*os4Ca-ipRkQ4KK$*7FE`yT$MgH2#-S_$Vwfd(Yi=5uaEeWI<8%I}i z=8%QKr;3Q_s&-mFjFIc^?W7#R%W=Phj%(N`-YZ`wbMTlveRs#t8@sV(o#Us?wg+Oy z4x{*|NbGge4s=o<`$ClpS`RaTeYhs{A-T*0EB;Z&TlMr+jd6AQb? zM<}jO8&RjqCd1=aW0zLBaXv-V_DvK{@Rb2aF(H==BG&SQH)=X zW})@QX3i4{OQFu*1=b-?Qkm~)^nAtKw@doSfUW<;euK}SdDhP;&s zPlNj;+KQC|RAgehwKH$Uj})1*&Axq-+!~NPm4RtqH+1Ns#hai+mhJ7|r5F3He|vJW z{Dm3u*sPr$(W3A`7eun@0eqh43 zLy49_u8*+!w3T-{)74?M-5W*hq%>kt8R}Ri)@M#5jm_a7DZXZ3yQ&|ZGp6yoZO;+f zJ<)GNJrwDj)}HA$+Yq(p&d2$(iQ^Y`_fgzN0Dk7#a@UUR@196}?h-g^(iH;uw+7<( zB|js_Oy5_mTnSrYlcb##Z))r^D}CTu$ZWR6k2`U1+$aT6S5O(nY@1y1w?Br8b~>=I=3yyo*s1bA0(c%69Za=LFnvW9)V4qFrn^Q4&>BU76} zltyP7g!oTUazX55pL;sG(2a3gr@=63HLjG@PKV-+kw?#uVr5)ONmtoXs8w>kJZ)vcnq9cNg2~1Vn?VJ zu;@uIVcM-S1m`@S=16ysTdas9k#pjR)i|O*QxzLuwr2?_O?$RU|6sjm%Gj-DS&;Qn zU;ZndGKum$BAfGCq+k+$=_oOd5iupQrH7G&qidvZ^6%V zJV`ac{{B=Zq0uop7QytUjF)KT2`pvT)ogV<&AIBWRo+B#ip%QzEwG)4s(HBl*!#NQ zsoJ)~PfVtF$}7`nb-cN1<$MOQy5q73A_mdv+zaWJG=?SSG}xzauG~c34eqd5mQ8f< znotS-#EydFNMdPCuUSkd&SNvDjZELQv4fh~wTq-t2Try>SS{BpK^=LxMd|4s(VA!H z&c$WEnKlExZg`Om_M*i7FoDq2T)p;E{*OX87wQVqvDaZ)_Bif(VH_Jw&Fp)y6b0(M zok#$6H|<9w4bJi|PH}fKXg2E4C*b>am~30I0$1Gc!|8!KOm>i5LGyNkoLcr2hJ(n|N{ zlyUxWy!DxqF>mhKaKv!DGLWb-gUDT?f!u z-ElLJBeELtY1dp?7qmid6!Vdxx47$uvDMkL*(r|_E_a?JM37v&*3hW{{b=NL7 zG~3KiUZ3T8fpVx!PKE2G0@{P6R_<9)iW5izSrPfN&Vs;^9A$ZzW*(Fx+fxjnwv74j z1FqBiyfM{QM1+?*ze9c{B){Mol0hg;*KJ#d0azotDa7=^Vm~A|Fe!1>S4k~9Yq7eT zx&T3?n$PRBP)Xos3WRxX(M{}kGrd8^7%hvGj6%8SEMx%0JSW?ZaNWokvWj2xK2C_% znLs!MdqGT)eJ%#%a45qra7CELrKmtNe;DVqU;G$(w;)5j5sj2V_J?y0G!&3%a487I z4GN!ti1F#U69EcXd>i?&jl9(EF4S1MLCHr2>odgEsiiJ48%af&BBm?;f|afM#pc&wA&kLEQf zEO=8}72@0t&l5;j3TG3{Rtg&V9R;IrFjZ3vcnF1|Y) za);Q`7|A6aaPU>_U{$Z-Yv@bpAzRdaE_xMPNc9cg?VJfR$Z1oUi>2xiT%tA|Id_N* zjaZ5ynAP(mq}&J$JzSnLM+2K{76gdoD1Dj`)3X;lp_3#+ka9;}e&KIWeG>ay*eb8} z3-aKRu5DKcAk-Ys+Q}o0&rQ$3nq}Xd6i6*V{66dJrh_lFg( z&B3joYT{4n6rmJEXL#5F+)aoY^O;`cR4HFZ+6OwNa^$_?D#HXn)Y6hT;Qj4enF~#-*L6qtqK1;Dx{b) zO#(fDl>0SFsdTsrp4@ny?abab=W2o`KONn`0;6uT*h{dARg=^jj@R3v1Ww8&=uX^* zrcw?A@52&hcf1scaN@_l7$JRv_fD)Psz#Nhkm4jhLoCGc`UV5<|DJhbxKd8(#wLac zXS#LwC*#6)$CvL??CGJk-R=-17O&H7soH#B1M@G5<8|9A7Xj9)g9}cz!%vFLkVR}8 zXP&VyQ-nR=^Y-Lh4gfx3A-|ae9|C{bQD$q%7%~LZ06q__Q8SaYtg~enk#B&jGpN2k zo9yOCsp^5s_XUY)4j3#8M%Us)YX@g0 zR^&9B5JVByS1|=+?t9GEN-7@%Lr0lO?{j=lkvw=kfVs{Gz=ghVZa-JGMvC2zD2-R$ zkI{LnBVP7y8q93W(kqQi$SezWM~0%{dgbkX>h5kl&sl0XvaX~{>y#LAqO7WeI+S*6 z=M^(D-De0*Y2M0O&lPDLAeUMIr?fqf6Mo3v1YesxOrEM$eGp{HTTuo+ZgCVZYt~k1 z(#nv18+Rv9eRxx)K8_}6Hv(6jJtb9SyLgJ%-t>&Nd@jT?5IE6*Rr@usjWxyAeEGD- zf-=`vwiUxjj=VcP^2ctmj$6uzm~>Y<8cl>r_7u9&FwNh+l=y zZC>Ic_)OBPr$VJ?A!o`fR)@(sAq^oInu=#cnlyy?`0|A}s#qZ;cnrVk=8z(OA(--L z^QFAXy<6rK+47|Er6q0}KxggtR4eKylx_rnf@JhLS(4D+Ue6KZdbB_p%9}}yQvJj( zNe0DG8jai{X+^LRG^`9p@50l9Mj0y-%itu;gZ; zmvA0Q=m~b)P;6tqF>UgphN<}bX+!;|Cc&25!CYfbjWLV3XBTB+Xz}G#@srZwXt_mpk!@!E)*liF>Y)RTaqi*D!rU1ZK3fu zK!HZ=3R_v={AtKYrXL8KP3#~^q{?A^!C>=#pb1aUHEV6qS1^Z%W``8Q#s zdD;8LAb()NZSQ-hDu)H9Mftiw074jPI zO7G8$z>22OE56|(a#n*fGb3<5SpMfn;z7D-xvnuYgz~eIE*N zjfykMT^09N7HshcsoDY_!lpJWQ9rW6mXWp5Qy?FVg>YnK+B?SA`k9`CRNSwkKr8iN z51SDeGEJgY0X9-@K_d_wj4U_aGfBLPlAtY`m!bGcG%(p7V`B$GyoO*h_QN`$Rm|gS zB^-qToV#tUY$^+nhAiG6EUXzlm|6^;&wtAJ?V>zpW1WsCpXxMjy4*}Yd`Fa)5vumj z4;O4^hCTOQ^Z|*cbGu0~LzGh->fWSL0~t>e&Iph1voIr`fz;nZ{r+oyTgHuzTiHG= zTJs%Ql1*L7EI7t8W^hT6fV7d}g;D;y*)K7;rNvBMM?(COEZHP%Js9LzqxuJP^;<#< zmlyrzzxgtvKmVekEFH(at0h)CtWx?GKsxS5GH*D7;>bV?S_JN?9-_srP{2o;czY>` zaVz`Q5py4#fv}4|@L?h_-u!0LTG95*2BQJz&UlQwfv*v63t5YtxJx>&TyGmeW6*{b zXJ4u+thPDvQi3-*lemeV=k^Ew>$;0jGBn^qMtND?jen>MLR>Ik`#B}Cw$q&A4|V$B z@lXwi{?5n-#>=~hO=MtRM%F#x!Ku2V5*_~a=P_BImp{J3Yf~))DCqq)f{{2fB!G{l zc8`%4KMUp*Jh7(PfWFY?O~arpwg;0ojk};(rNYV~Hr;nUN>7WV)LjI2GXzsq2n2(T z=GeWP;K%$eb?iJ&HhV=8z;Cra!qT&48mjM$sS70%Xd6tNUIWrCgLCDRp~e~nAX!D; zTr(_f#*TjI860#s7jq^mBM{eU5w>r~!Gj;${m&kIji^b}!n#U$76VDo=qyR3wyyuq zuB^k&p#SP4vgOM?i&?#BzGjQxrQ=w`k%?v3QYE#y&y-j3*I*g9thk@s@LjRR99+y)LEDz!wr1U4pq68Pq{2DL91!{h%81B z{RZ_&wSPhE=3bbW4(7`a6HYRjmZBRiCoo$BMKw&G80dRi;nm-n=H*cw3MH`M+m@_Rk#SC;s%oE>BJDf&a zkM(c`KPdNNQ7=LZS9o9Rn9PG|;XS_@8YPh?)FdBK8_JiW!7`QsE5!(+PHhG_h&x?Q zTsSM5;CdzhNP?{oe^>Fo+kBsW=YucQc_RlAGUuQ&vg<Cx_z9z#v>EJBZbt_!^T8Q{bjTnwoXG***;BQcIeOu-ak-T(>bUse^q0 z10F9)es~1V9ag0ry~%#^@?2@F@$EbMb*T``axGXR(EAXW(SRn?ksx?7?12?iya5C3y^blrC85m! z5`(*A_R|}&bOcT2R4$w6?6IQxjMf@F@M}e5jw1Uea@>zp2qjGdk%H!mGi6<|*_4zL z(c2iwZe^mxK?$Y6^zy`7&ZQ2uwMS_83S&#ox}WOshYoJ0>yR|TGpu06KFqns+pnnF zv!FG@Q|W!O$T_7^v)nug$9&GI>*43#U^Y)80rb6U1HC7Q2&COoR^SgCg59780+;Z$ zF7JNt5ekg^vNffd6pOA)&LrVDwgX+-VYhPGL{Ov6`KIFiDn94?H_b92KeBCZ&K0xO zBfP`34PssY|O~L&NJ)?-{;)Wy{Fl(FfjU zznH6izqm}!YawRHidT-7pB0kX2DA`nMpho-g?PT@sap4VzCN0LyzCclBxeG)xm2lb z9KL75Y2LF6nrVvWJvFAShK}m3&tU%DR$uaAOlqTYPZ`vvMx)~2n_;IzYlX`U(eb*7 zLnedG&4M1njV;dha;-&6hhx&YU3hluE&0?9KOe#larJE3J$C7t15Tu;RQYR zOJq#aRMYot+yb(OpeZ%tdtS@VhC|L=Q|g<|YTuCZ!X3lJvLsCbo71d~wyL6f_Z1?C zviIs6XhvWScr~l0-YP9ppHVeAQa2}w=ed_>$(K$lEQV*ZTU9YL3lu(`Y#SvBVx!6A zxL!cC)R1=>ysM8|_4+sa!=`q@Z{f02d@VIop(gB`{ZiYS)Ke&hMOp7NL2MSx9jyEZ z5+MzQ3gQ*1Uru2?TcH~=$Bjq0${l}~;XLltax+!KsAb%q*)?-@5#0YBfphaK1ZVl0 zlIJ6^oL?6h)$3S{I;Rv}VvKJT48SRCj_rHz!nSuRWjDOxGyFC?<&@#JiAX;j;guXi zX%qz#lG|jIHO; zYnI8=0*N-|y01f)R@|SEWmNVA-CM$}M%tZ^ZIIbs8pWLA?^vUuJl!YjW%3JE_TcO)HKP3sB&jp3rddbbHZ)3^O%30bT%!BlEY=U^9_lX*xLkD{A9TbA>sqxFWxP7D?|$p&NkKv z!50K5U}7PLA=hT~EWE~4a%9k9F>4)Lz4$66QNKuW;|0U}=2Sg&$@6srR)qoyc6?)_ z_vpFf@Y%vL3Dk2RqN*OOf1u=ifXgUFsNn<@c;5fdOL0^*K0B$dGE)Bw#Xy}< zsg#N}D6)@d%MPtAo`XWjBu%j*xH}ZL+|zMKOz7$(YWc##oL?uwhn`{RR)7CR|-FO*!QlJ1EMOwkdgP3d+ z&0%|H<(cB*nN8z&W6~=qx_5Dau}UoQVvk5rO;s9NL&PEQ+m0ZAu3C2xD4Y+E3*cYf zH_W$+f4Aj)cipz*NheZor&u0}VjNQ|7d-SE5yM~euj+w*uCPfNSu42Rz;MYni#l6; zb(rvR-pPEeLAWPp=QGaTYbtGPic2(TjX_YV2veo-a7>LBg$!re7Ie;BQ=ItrCZ?4l zZw(t&M?f2eoA2evsWR|2-=Pfl?Pn6~^wU2G5aD5RCg@f{eC!iB;m;Q0dY0$ySd?;6 z>u$dRe8ZDbF6k3uOeumwNz>dN6;(p#>`jO3v`8C2N!i8Aij2gu1v-|A+=7$GjjCyk z>s#-DyNUMM*EhwS58w*c*H8Axejh3mh^SbWi(Ga)54r*3?v{sb=VU`S;u`J7qiY^_ zuSuHqB5K8+(o)v=?0KMsjugYJ=7doE>Q@^470c%pb}R@F;nj~Xf)%BTLg)?Wqze(; z_#fjg=pA(}an>H^o&tRBmQO1t^#|)G5}u3oIVRAXMJMYLvYEbu*UE!|ql+~)>p4V8 zNE)C~C4cXzoBe@3@Y_T6eZUq+To0|Pbux0?Rw*QEgp!S4Q9o12B_Y&$LnnSqtg!)6 ztEz2dEKGU4gvpGtWUhsKbVhRDuI0nCgA>W!?`SEX=p{t{}rNn9E|Nk0%lkCX=1N$*2DWHi`xgUZ3h-5z$d zlnJ{lU6VQ<;{^#KL%`<_W+!ZIP7h$F??Whg=$m*IyiXG4O@u(1RG!_kPjsL0Wwf{q zA9KEUJY1#EOc8Yd*un<2Q8l`V`>GaqTF*3MBc;uDj((YW11ZHE#d2&k*ALK^Hc1+# znQ1hC4KKZVMm@hOu=PXZkmr(4t5D&6EPSz6x4~9Jj_Zofecd-JOK;zNE^IfJ@XtGJ zo%g2fQg6vCJ^r}};g>EwgYXNWtERRSLh0RS{tnn<=thE`=8~qDAt8JIp;sT4y6^fJ z@!N8Z76c^jB!=V7q^d47jn&oT-+?4@rz>1SNpr+Q>;R#blV#ulJY3QH*x$7SY%hQD z#KP;x9EASIaL@l>+A0K>A7=s=HA6CaKTS2vo&%Tp~eSU*`Cnk8S zg9(XIO{%PZD8mrUp%c`U^=$vG4p;FDXcLytf6hrEvww-IKcx;k8(ALO;0Ni_bLP)~ zLNi~=Fn{+_9W9B%>fDJOk9KVI3IHG?V4tPQs zUkI{`tq;AkSDbFj;)U=R>NJy0XEy(zT@h>yzc^jsZ2eK???(SWR)i0mzpN;h+WZHr zzti&nW*7N?H~8K3__r13{|(Xqzactwd;N#&!~5s>m9Fo(&$8#`;nNDYkKnWsra!LQ zShEzK!Tf4*%q;8Wxupo4^YQF)@cgQY)l`vB$a0@30I7P_OwX5AcoBu2;bn&tzM5Za zGrQOqsjJnE^Qi7G<62pY=c?cJkmyL>W4~mqGkDAD>hyGu|`u7y&Qd^lEuxU zFwl{(PRI3fU(sd$yNjH=ir@7jXCYf>hXPs6Ma12a=2?FW;?C>|U9@2BKwax{GRSKk zTG!_%>58(wwrvzd)=H|b$lqclVZdGToUadXUc0Et0 zGr-}t5hW}J2<)sbUOaZZM3=L^U1t~eYjXKUoRj)MET`K8X|iS@6oJy zqAk8sxdz?(tCQf9pS7ItL(ZHwIp685pZK7!R-+&fv0Icur- ztx8Fb-QlJ#>XP}ob5nMI$?mqYn9jtrTAJH$A&3AP_#oBj}0>(a$^Nc?tpJSI;SQ=O)L?z*n8%={pN zo-_h?(}KtMJ!_0D4;!YHybHrk=JOWEW=~kQF+TU8tImsQE!U2@$~7jXgs)$`OVSeM zY@K-00m$H+3%$cVNV8wx9{oh-l$X3Q(^8hxIo9mbWsenbt2!R;pTBcDWObYi{PhwVj!R`bEGO^}$fj3E}KG6TU_A%Jzd*<+0}z z@%-VF`vzhAD?oa>CbM#rCglYl*ODdw?bLAvfx*>acQEZbihAoNe*wzT zbY>BIT6YtLi$&IgoFXYer#Q5WCo{Wk1E$*DT{ET3LwO8$-~+u$lSKf(=<4k{>&)uY zg%y!}p|xl0e`+Ng+b?Y5b8C2ABK2uTtot0hvV@nrDCJ;!(yf@G;ePEXlQK`>c7@MR zJgo0b;(-+Qkbz)X%W~J{Kp)}c=FQ8XS>6Vl!u%76s;}%kM3q9N#cA#tH3-L7wM^(+ z(FN$(<+dB#$=5j2=`*ze}WFd`)fVdkZmC9>ArDbYQpCbU69cG5BP}>vguqHkzH^gr zE<>l`iWnopVFpG@AYbk7;#T4^wWPPo>o9yRAnfH9p@ZjogQ%~C_21!ty5Kii@lkN z=*K=X)~&Il14iYIJgEuf<^8pX$%P);@a)tg;m4Qdsj+{!*v24-*k#OL527wzXl1D8!ODlCR1F+;XS z)EhT1w~8cmf&RyLXE8xteJG*I-lf+bM$WU&G!FvXOUurQ&+fc(?$W_#{UztchJ(v~ zQXZC=PF;!eS?+8*}8bCOh zH-6^aOZ3sIrl7*!G;IunoE4Qh?RcFJth*W*s+o%)}#bAdEi7>ACt3qwKiJ z#Um37#l4O}i1-1uR6gY`5A%K}r)UC%c7NHzp|abXKiid&59P`=&+eRF5lNPR+X^yG zCfW6p*{5l|A)H@pTK8611ATW^NTf9t2Tc!N3MLM07pmkJa$5}LvT+%wDr~G4Vh0%a zFFc)RYsf_N&X7UZBB#<6TNih@+znVZYfSg$byWNiI~bHQxNPVXMUrnZ*>B~PkHaNceac#Se)`g@Wjhy{&xc~Km$><02~FTqt+|WRpdaJ14C6hHT=wlw z_ke$bJ!Si+YnzMF=tnh6j&=oRh}_e)T+!T4gDpzOsnrI7%oirYcti>RQ)k*Yu!IzS zit6sO>4!8_u!ickb*zwApN!C;3ov)TA1~BsRCf@W5qqMtLl1b9`>TqtFZ_GmfvP(aZ3bV~Uk_HgJsD}bFjHNWs?kwG0O?We#*RHe)0@W}3VWJngRKs;KIpc3v|OPsAB zTW^q*dDcqC(D(W)l|LUm%+N4Y(&@JUrlMA{Kwyh&g^G?n68_#a<`R~n`;_SYyE@Wp zkL${r#GyqIRcD5%;95bmuai(_#`8z3nx6aNN+rsnDT7Dp%Nmht`VQO0s!qA?iybd( zsOQDulF-c!%Jb!+ZOFSef69PB-EU!yYHK$qt!ir?Tc>8?&8uaHxylQ+>0)4+*jIN1RKrJA>h*Ig z4gYxU6g+BIyW+DJXv9E$b5dR6BrI2F!Z5Yyg#Cvl7`h`7_F9WmpU=uH31T5dKI{LoNIsAX@y>(cWUAs1}Sbz%B zA_CG43Ift4Al+Tk4bl<=A|>59bT^ViBi&sCLrB*EQbPU_WSO=-~ArnzrWw{ z{dXS&GxvS3b***9d0yvQ!O6FV!QF$7fA}ZRIN=!iPv3{`FS`8zK*64UbA69kWV!g> zJ&sKqDtfd*fGHl@(Q0mBMr?h$Ux={~`1~b@x3XTf`rDgd>2wXG&r^6%U&Z==$j$ku zriFSV{Orb(h&@Q7s+PhMai!lNwuJzeR)53>T?IBksUw?bM|Vi``W7q|c(`FoSG$f& z_agYGfk@G0Q8s^ki0KzCu{(WU zUjNa?{tYZr&qoAd8KW$bqEJy!KcRa2G6J#hSo{WYxWp5|%#GjiOK1BQz(L3x?CP7t zl{em})44?w8e{uB-YdaI{30R~ygq#$gnXJI{93<|fw->S`5AK~+XVGn*6GsSnW)MF z0<$B@GACt542|^K+|y|GCgvrg^tjcd7%O$OJo~H5VeR z7AHU9e39mPyEvFXdWzWE`!yVEiq}EFPG>@n^Fnt(3u96lC0#rrl^I3 z0#o7#bktk(;|=#AQv=oe3Icnz`#$zoxPm^b3e`R23F_Kd3$M*(a+4d6nO*X@ZdOSs zZ+^o^7T4=L!teIF8eYUo#?qKd>Cqbn%22A#(QwGJOL>c@ft~YJr4kQXc20A#0Wz#+ zBS0$J5f1aYo*oqiDPILWX(MEk)e|6e)guUsY<_o2*Jz=#mm)Z9cwav)I$-RnNx7Oz z=Zc%)HNSEu1-j2!DdvsvA;SV8md*4|;2O zD=m?+K_GHVY`b9yFL@0frwmdi_8h2y{i^p0B$U@KOsNdgPncshC+G6Yr;U*65!^y4 zuNB%4dS=bPiJDDa3Ex(W;KMUQl*SK1*wC@V<@2V(eRCnyaVx#!tYtlcQ8&$+hpd0)n2s z_o8EL)DMvANzY`vW9|v?45SK}jTM%oorz4Z;=V{+CDsYE?WCLX1Zqi>g-cs?Kxb>= zpY|iz2JOVmOT)BBtNH9#a6!-x%&JUSU7F|8<@V$FA1@^c(Z9@6WY=QYwe20SsN&!Z zw7g{4TG$x8s;=;%sJ@S}+~l$)pi_s(9xikUI?n0qYYf-H_CTJoeLJD60l)K!Zw5-h z;oO-CfTW$##&Q|9KwybPrT!-+!XpCC7yI(h8$PX75!HyaiGhJ0?dCVjp!IXgX@eyM zn2%8C_Qx(HPhmw|46Ce?9!d33&gat^%qDW_tkTMq1F`MZh-#}_I(|reDCB-Eq-HwO zr4|i=kJKBre!5e>K5inVrL6I|%;+S@;MN&{f?w@+lc{vv4mu+p48EPGm-0BF@V*`9#3*aL!TZ+oUAe>uhB(eGrIYFlJ`349op%i@-HxQJHg;}%*%EJ#U7i$mWI%~RDVRB9eqyzuRMzxKZgbUE z{W=$CNc8e~lG1$6xq?Zjs_yKB*M7H9aMZ7v7w)cDs{8Z zT*4Ofm-~bJO}Vnfouy?KQKX}6k50$d)Y5kqR11A*uO&8G_x^!0OFsOA7YGVCF8zGm zJz9MMFOD#F1*G^NcmZqSSG_aFAGw#djmEhjJ@ zeQBQBs}P7`lcjd8M6p3(9LXV@82AXi<-ya+8A5XcGR_5{Kp@DBy}>vXI4#q!?HGYq zi7uvFJ03-CZ14Kq?q}EB06RjNYOr#8!|3s>Sj}-8Z#hE{RGIjmN~|JYPwVuKz-%j0 z$P_X-+xoIr-*xu6sAl`EA2zEx+Uz4kRz~CFFfl1`aJGhFoNfR$8Fj`A#Kx%z^DRa7 z`Qhics;_89YP5o$V&aLjA#i&**EQ_`?ksZ@v z6<)MxGV{J~33tnYdB%M}&O%V+PMo+vO{g#g$X%IlEcdaoM(V6R^M_jN&t{`JT`~A( zwG3SLCw{LYt|IG~?^-@uhRXBoKM54K2*AQr+1NT<$R#1B`E}AyR-kvp6GrvY!0pra zT(h{(>eQfVZ1A11!@jTK$29_HKV|*(JToxCv}>_%iDfVc#k9np*N_oPR6V8t@hae+ z1Qa3#ID>~u_7OPHiotXyo|>ZAZU~Z$zs80shweDRh9|44e=g113f+|4`4h;)=C}#D zwk$S=V<=NL_HA7`41|h~9sZhD@dn{ak8h)|^YGCKiL@GF1q_e3^F!mn8Qa$e`}x}0 zytu?AWNt0`B}TVgHV@fFR+01uWAijQ?h?pK=8$jV(ERORA=qClNrzYPp=k_Z@ke-r zXabTgmDa@P%0_cav_9YUM(A+qIyMN&G28Fp;P&kJfBv^ zAZpHJjYnW^oh`@s#HePuInyXUkGXb@JdxzK88o?-+`(4c&FP%_&5-4YC<-z(`DeTy zfN}mvO;k&cz{eGsTW&_u+j0eYp6%`^td-s73?~Lt*sD>-Ey@oQ7N!X{HxWo{Uf5ct zHL;RE14M5xsw%pzB7sVzeWZbW)A|Iq9;r~~U{||dt=w~GGpnUrfSfhlEa1F;57Jxe3JMpNN;Fo==LOG}kVkULnluM}_ZcFj(L{B^(&jNt{Ng7^-@N+TbJ zaSCh))E*Ou-Ee??SXW6O3f3s#w+u+>k|%&uV=L)GBh*BoEe9M!-rtcQ<^6t*0ga$L zagVT@=$YAQ%wrq5hVRynq3vN662vfTx!;b|GMYZ9YAwn7wW`V@^Um1exCh#Hy@|{+ z9lYQDIx60}_2E=wW$#P&Qvg-4Pl;BckmiTjaeiI!olRT$-xR;Igup4*wO3Xh zMr$(Nj5+EFl@%j42p)i)O!3hLldz6-zP}&p#B-OAqLagQG}Zi&)J1k|S1$Xxh`g#qOs8fLCCJ=|GI z*S9sjr1*jwRB5SA1aA;c8K3pBJ5!qXoIJLz{sGc_`~#Lg)XqbT_9co)f0gYG)Z=q2 z+E#b-=F{BvkAVtX#newX-HZUO?m}*XB3b@jv01Fx&A5{$@k|_-3Ne6{3V5d*yK~uy zTO*jsZ+Bi%O2+ZC6l;7YPYhhhvv1Z5wdPs$S#qKuz1MKMk$aOq(P%nx3=ojQpM4Yc zfP-Jqw(HhjSIS=0c0BP_hzZTt7gNRUcS_nH?7{tb6}1vdTWeJI+_NKZ>e(AJLoozR zyvc8~1lN3gdTGXE>fQvm~?{jNkr^*u4)J`5B`=I`~>%5H2dI$yUosvX*fg0_id(fKX)Vu7guNzY$QDzM>x z==mWBS81#F&SVnJgdlU=5Mv4N#%o(oxl4?(VF!7%26ZKNyy0P9e^>1Hg?0D{XKgClQRRucZ8ap2tnXTsG{~?8U?Ypt zKg%GOPpc++>(28qB8AYlCmDuJ3Fx4*$KHTq)3y^|N*zDj0Y8|?6eonzI7OJk-`E?H z9x)c_)^*Jf?6A1+P89|)kyMVRG~}f)4MH`{>r|Z>*}9=lss(pqQ){APE4kO@UV#ig z*HW`=u`vh&lAkCAooBwLFFdfxVtwzOhy~CQJ?XEIw*zSxA2;4)WSWWH(LM^owKG56 zs_<5nsIQx&!OnHP6dU|NEcl(lA)AH{&hu(E%AuI!H$8QW{3}`DN?7xgHSfNEu<)%y z|CES1k8d76!4nd4gqzm&*#wO&8XhtP)kL<=mDp|bDUW|XBum4(?jDBPfyWJW&!>$& zB&`PN&L*?+@UA4@AS{+nZF$o|uUtmV;BKtEN%yI$G8(PZxvf*!XMVZy6|4Yo)VnTA zqU6fi0aJe%&1l@AgCOru=>Awr(DH=&hd9Pwd{N&qkpP||=~EJ%5%o%SfTw(i#Szm? z>uX*tAX50vW6<`j1QEp zv4L4PaB{FW-uNBNFg%+q-@Umaf1+i6H20(zXx>h!5}Z!a#;)Fz2_L6%x2D303vD*q znCpvsn}dTn*?*v`Qlk3hl*&Xvm&X*TgBlD2h?40L=6&ft0spKbsnm=VmGoj%lQDZEU&a6uRZp3`j( zXSzZW=SK_OnNmPKIZoK1{Yoio8Nkj>rDB|&`9Oy8!#ur_68tbb<`JW0OP=MbeNrRe zTB1*1G)eq#;yLUE_idIo!$|qz-?8%4{Xdbi)sK~R!_6($<~LWJP9r~7jE+b7OYEn6 z+WZJ022QUXy{CB6sug^0xAn6(q%6oS?UFb?1bqO-n!qFZR;a5cGkC616eYAU`-+5Ii+>s3h$F87hLeU7AcDR363fX~#N8O~`OzZ!e zemP~TB}*Ct4{I=q$qR}{Ya4C8rfq1a8oq97HXvkak-FPshKF$6??H-Dt#Sk_2MWsl z2djT`F|<-4@GS>eSWbA>zo#S?;4I5U*wfy64Gzpw4yGv_mWXi=FO!i@03AB5K=PnZ z30StNWSh%=&lF)!hmCS#pX(i2v``!iFRXxuVEUoChG=Z!rqlqBsJtK*wtJZ2K|m+K z4t3Tr&|CXJe1}6ZZ!a1D$f^X?+eyfcAxE)g4kur9`z96Cm*~;-8nG5lMR7l}HtoB$nKT6A{NZyPCp$3+-9mE7)HY{wL zSyS*woLpZ&G^i8r^~6=E%g3?Y`)FoDk&0eDO9uf}C?S{DdlGVL??d#2(4%&*F~aV& zzk1AsCq!s4(0ZL06k)c)3DxXY%7u8z;*bJRr~9ZS3XWRI`^O_i6;;nKUK zkDvK5Y^z3{hZ@YkZOcn^2vyqTVnvV9_Ct+b_u;}$B4Ry z-Ka3J#>k-|a~dC*z{x+a&3b83C)@JR5clAlwINk5(JX?f0==D1+mkn_2OMoc zE!@nY<4fyW7j*PR8zpb#JR+M%u@u}qgASds8JyPBV%W43_q`s79MxEHk=FN?T-Gr@} z7g0E_NiLBQ^rUapobC&EDXn8S)&10a`v59Pp&@t?GX2#ou?SAnI7UazmQu%>uB8cd zcvb-j&Q>SpgVr*~K&9l358nw~038Nu{wAgq^f$m<4Yds>J);u*zcc1sAa1eC`Lj=;fj z^U?F&iSp3_>+G2pjD2#LJUd2n%K!_0y3u_&i(ZT6#p4poB6~{n4!uF+<#JHL_iMx% z*rdU2`7^Wz(;nC$Ag;HBX19xy-sE)=Ufo?fT~KU+!>a8lSL+d|al*7J&tBC~^~=}N z{G5jZmb(u=#?=+-jCwP+xmhe-5}pNot|uJChUp8YwJO9EQu4N=HCqVAB6Y9UksbU zOSnjCarc4b#@6MYI_0}g*)74sK8P^WLy;;T_RtAzVlp5Jx4uSLCk(({Dt z1Z%*ylXdLakn6Io@gWq7V|w1VWUs*Ip;XM{JVyV3)paGT#0a%=aSsucJ$il?7g~uP18feXkKU z7De!*G5NbIg|89sXLew|qakC&{m*832k1V1o;qF#bXv02f34*l6UIya-b_S9+UqvR zN;Z#(LO2vyh?HaNqYYFO#QfHjIv@4h;P3gHhc^HnUg*69+{d;E9-ma^Utkk>|7l4M z6Qu3M40{7_HIVatp)>lJJ^oBy<@V)C*bQnnx7?+m8s>ZeZkeuq2cKaIFxOnFl_Y=T zOHG13sO7G*F-Os^YPqzFPgCN4IV`rv2`+j)F2_C_R74Yip@PNxtg4E;tW`yyg1STz zx3wUwGE%vnUXgqr1@PXZqZylrKf)mu?ixea4K0!ZPg|PzxfvrT=9AwP!ii4b zslb(xx5vy@9|fs2(UJjhFK|POr`AcX%!ci?e$FZ1b^6#_Q<0Nj?1gcay-&+8?`eWg zWO|aETPj5x8xk3(LMrJPTC`sZ9?i(1j2KG&y&EvZH`{h(U z(AZC~nO@yy?~2QOud`;hn7co?cp_#qPNkO98f}JGT|7^FMB16R@ZlTJ%lW~(EGXjB zR;n$piF)N|;m$xG4p|nz%8E#>>I_C8y6gbk2J6J+<<1lXVB8eYqHm7Ema=87eJx~M z(WKB;l>egeHLx2hV|}w6?S#U}`+nJ1hqwA(wzA!(slRm*O)O-QmT907k=E-aejuSE z&6C{5FJx>#_$??W^^(LO46lFfv$tmquvY+=}x4#w9 z#^IO)Of52{M>%4sW2U!U9)FmKxQumoUxAcM(Eym4=&4%4wIah$-keS9LsEo{2W|j@*_bhH4&A?^)KEj*ai0RF4{T6+;Cw7Eymk!BiZGeWj zqECA)_V4p;AQaC%srqxA4`wXr0nh$xC0p*!OhQ$y>gB2E#r4o~!=`Y${%fv>j4)cX zu{K>6X4t^A^$bvLG#qq^-cC#=H7kn)nxa|{-5(J((vU=Me)$wFRBv6uAFMn>4jBC} zm-Ln}$=|w1=4srb_t`77<%rj!Sfns4fJnzA%Y1QY{Wo_5`WEXYm-l*Hz|arMJaBmA z39Da@y3bM7%plsZ3HE%6|8rx~4bA~n5RBY2(qaVYGkmItNTxT!y@7Uqo2>h{(F160J)OqpXCwCxOFwb?zxJgLVtzyAUI|BW zX$U4eUC_z$N^|JcMrBma($is2`~s=EH0h83V=piMn|gw#uSW63_ST>SEnI-Ii8%7U1?$cYM@_(tk?C<@fn1cPab$*K=hPNN|kp-^6Cc zX33^xey8X*3G`!I8TT0A>^C-0Ag?NkUDutfZopgl7+zxTwkH-D;KD+J5!Ck*m%U_a zcdW>|keO$S0l+?5DuV8`c|`_cQCHW0&n|Qi6VS&K8v6F0$V@vI;(55f}(2y%eu6gmJG@t{S z;cbhRi^)txvdc6lKPSb+Twp!Z;pw{zNd6{-{(uIJPH(#yQ|#4ilm2f0+88X?50_i} z(J2-qh3fd!;G2==vji9ZTpaS$Yf$^*{7Xy&6C`Eh`fIK73~Zh8jv*5v`coHjKw9D> ze9xF`PEix+26NZHKB)|NBHI>MRb0IpVOdOl4KoY6aLdgZcNSIYV^}wV6Jyrs;8GME zX%}r=qokY=ZQuCDZ~HLlA4-e*F#A1~B!*Q9)xZy~UXe{#?Jaxs-eOChqsfTFu11nN zY%G$CxU;aQ`+10wB4U!ogW16!r#W|P|DoTQ$@_=!y!%YOEPoglK_)b<>4BlaTE7xz z=b)T;RdcLY0xK9SYP;a-Zyx`dTN7$;>PwU#NXwl=kd98R78nvVd+Y|xK6=tHb_yJ3X!I$e>M7^)?XQ!m_6Llcz&4LU z?WbKr)TZMPQGSW^m=ou(K+ER>AC{>EzI|9m&(3`HD&$oN^b49aTOoZ23)g)lR6M*V zmodKBgH6g*RauHNXV)}$iS1B^mQ(AX1!#^<_pEnwx(=)CCAO~MoYi&mLGU0u+{y$J z2_^_U=a|#n59t(8JoqaHpVx_=?m{9ik_8NHE%4aL7p{C=k~s|1YONT&w@oIi{EBBa z4NWx>siK_{`hB-Jb%7ho1fIm!C^S5U)H2nB`mL%ZUH6e2R*ThFQ#CBOi$`UAtn&S} z7L((^_pC+EFUsfP1@ve7&=Es8Vy7`hdIDk18yy)bZf zFIQutStA*IM_8(ebWO>|#nQuxT{Vu!Gg_FB{mX0VqRe~B~NxFgMGX`pmo+TrWw9ea%Z z^IL4((mg~j$uohG5 zEa;vJC9*=}q=ieiy&6>t0kwnUd?f5ctt~y))YF_CmYT)v=l0sjJZAZh+Cr|dT_Uq$ z^I4WDkA#kVN*ltIy-D&I6rap9ur0G0`tbDd}Q#VSAXSj~8 zZ(->Q4rhK$CAGHG=EvVm?|I6V>*vIUZ8LZe%;m;s(*`nOD>pI`x$IZIWYvmvjw2Ja zUZMmMr_}Oi6z1mUlyXC;g@Vr-3+7!#EZrp{(sT>$jaP*Uw2H_x^)1KkMO4UY_Xv&; zy$`s#d-tY0wD*5d66gU5=yTqN)L?1Hmo;cZajNez+iq<$!`!v?Ub4JQRoxs_i zbNi0+o5b81eOfl@>UmSv;OrZ}+c4$hGav@G^NXXFu87{PR!h8P5TqG7C*>4t)0J~% zxT~sLqOb#A%I!@IoIw^}&8DPdY@A;&$k<=7D6aepR$;ii{eYJPi@RN_vH%0^*_S)_ zU)}MQdH)JL|CuYN@jc`Y<~ z7R`u9ToA0s)79U=hDDYwlKW~?1SA`zs5zBj{-7(`xTg;+5bkP7u*QM;%Z?H(=+|M@d zf$EHqUAHhG7J2oDdYtBbDL(=y*_YlAxv0?Oua>?b;$gPt8?SO~g2T_`lM4z%)*Bk( z|#46~ai*x@~lxXHRRLDj-l-vX5#_%m9XXknZ zZg8tB>DBpdwO+U!?a!p$1s)%5ZmOr6c$%j1L45%5%A~#zhxzFHy&{5^Oxm2I@n@=) zZ?--wu}@0e3m_%6U&cclZM)9b5BEXdC_MITp>qSRY2P%6p{m?3vzUsh?Mw8a4o45~ zqMHN>ARNVRVkJ4>g_y6hh|8XfU``4WrS1ax&0uTCM4`=_UJN&;#{5OO1 z|Hn~eoEmQ2O_>jH3?TpCt>PK|i@#Qk8jrn4uN`QMS+l|UEO5h`i&d-E`#9{9W!{;! zK%r6W&VR14|88M`2>)Npe86e4S1y?~;W|57`-8thpjd zEVZ0zG!CDCs#CXD^{Jb;q!e(v)(GCNheC2uujX%asho(_-4|J&XF z$DaOQf9I#C%->HSV>EE>U&Q^MU$)-6JSA@KHb|{J_^kuxfBnLL8G&W)Kf~s|9Byqj z!`h8n6$=W>k9%;pi>zb~n z0$K7qc9oa>cX!45^O8$$&9(((`Os0F=0>d&EY97xHgn~J9Rz!&${7MzSp6^_(*NA` z|L1FGzWeh88x3o*`ODi^%|x{FVDk+wlkSFWEB9X$ME|>O;rwk|?oIJmW=q-AwBt+) z@+gWN5^ihbg79)%J^3x?p#OQ#zbDIgFzt^IjPkqzVj8s~^+8>i9iAWf$lcl(_+32m z|Jx)1lmGLW=C3G`;F=W{Q6p`^M%?yu#Npo=WFpaDGh6)Ktqzo^U-u*3*8K5fLi>N( zi2vIqtID52cDFm)4(8x>-d8Cz6JP;Egfoj`pkUoLU^z0XSts;zfc`JXSQ=!E3%X!v zXtfM=-EfdG_;)k>_v&}Iy8>2#zjn(2#}-SO7R15b>)%Yvo%FsjHE0+QR zw8uRCXjyzTH&Prua`^s@MdB0x8KXWsfy8_NW|1XR{x$rjyFEBh{@)M&^F02)G5qJz z_^&SM|8r)eNQUOL$>x4kTdhC_%IBBge(WoY1HIf91eE~oV4(bL%IE*$Z3q5jD2#Z} z!TI_Dwb@b<-fcvd-#oWX%wWJ1n>ml}FWxW->}5d@{|M{inZ7(CuATek<@)Bxk;QX? z`U3Oi_ML>9gm~fF7cN5A*IN)V|% zWng*ddH8LTdMj?ED6^OYtXoFEid>frE5oq{|CkKC6z?qH3aDi-l4-DKibV5&@Gge;)2K%~rFu z?085dn7u%2FM@_x!w$5#TZ^i>R3|<0KzxW?A7Gqq_MWuiK#WS%?&h6ma}uEej)CS# zt{2b+f3Em`EAdzBWk2^~L70N~*;bH(j{vAUq5h;DZ;RaP5Hjj> zLv-$bnj^GOx#c`Ka$}-fVM+3|z<4~rcMVh~kpmtc*q2o0aO`p9W7$!8NYlVrmrHY5)!S~mBxf83v#N0hm8#VnM^8I4F-|B!Dhm?KlL{rO zC7{z@)N0NlXivk9)XVdh6dSTTAym0mPSonW_BqR`ZG35O4B7VhX@u8>C+M!7&uM_! zzDJ{6b0*Bzz|Xw(V)S##>{R)zrejMh>`{it2ouA9T{{2an?AYY{53DDZgqyS39LvPTqV|V|q3e8(h`r;u5QN!x0y! z<3{@VxWEUI|A7Lxe=*1h|IM#SIfc~dO2QMJ@S4>R215H&Zn<;N4!BlHT|;cw*C);P z5dp#6i|O0a95`#6i`p@Gax|aWhV8bsMF)ATT|ZlU7_NSWbw=#ii47_bPFv}Py~gci z!A>1x!o|T($qY^kC`g(8g#0e3oM3lo7A+bP(&9n-&UL~p2Pg)SICT80&?@o4pYY95 zEGRr>y`zapS{Yt2tYyNLLpNeEp0Bb+c9U4X^pW%I#YW@ncep?D_*$-Zcd;YL^Kx`1 zl?ex0xqK4vk;}H4KuA)o-}t#TBb|o%P{>QPH`9=aXxm#zDb8csR2gpHVq7hilGCHW zFzr+nauX%R-EdI+U@4Z!c3a4GBs)CPlA(52uQHLoj1y+&e$naE>M|>pET>=pJE2Yr zBbUggIX5c`{_;ox2p=VRVX+s5W_5@pygEnD}1H}TQ>cX^ub2?%#`*; z^p&eXpnqjv(^D217Qh~^t9>RtpQaFw>zyQFH&$}jky~5xO>j!OpGK65 zwB5JxM;THR{O2oM4bSM+DuphVgpwcfArp|4SOpdJFqO0qj@;Ev*cqWodTK2P;SeEw zb?IjbmG`Y^U>JL92V54-RU4WcctTgp>@rfZRi97vNoqh9hP$gFAgQWPCZ)RadX)zC z4w10Iwl?RnTo;Xs^Nw<&Hsz0_-j_bZHppP?7KX}KARPpqAnLqJy@I(!=kPgOy%DO9 zN$6yTOpK1;&K7qLt?#9%F||CP7kKh)Fxp$ z?&U^7o82YPpS!hgfs)7(0a3s23pu00?$A%O2&RhiEY8d7O%~jmljxT|tgT;k`JhXn zWmaDgz_B)+lWTo!rJu(Q?pVM*1{M1RSIV_AYvqXGxxuhCq6(0mNW-g`DqX@bmI_v&)%#w9~F| z4$4vmW?0OzKm|(9s6;~=FF}FWQ!e*A;B9OaW%yJKLs~kLAO|8O+B-K?N;^8{qBl3A z-i^pwgFe{_P#3LZN~lpr5Uh`W#WLH7?cPQuWG}{<9Cg|EN~l|(^ah+yocbDrUS zp~6w>v@~# zHZD6_GzKWYM?}lTYG_Tcl24-%L6lf)phbO-$7alG1~OJuq?`uNAWv-dQR6|;CbKDm zul-B`ss04UwzDO=n4?8Qt;dh^muQp(_#>844Q1iWO+1a~+pEOq{t4>dmZKFfIBmAp zM$$feF3^_F)xa}JJVj3MUG-A%jt1hs?iB{R!}EB+-X+%@4DwUCH=4s$Q)l~IZ7`q3 zy}Buy4H*c(VM2@(XIBzW30xJ!ia9CB;7Xe_rfI*1lEAZngm$o(4&N(9jM)Fw(YL$Q z?GbZd*QhQ&l7E3V!ZegmkM9@uy4B(O3U~i!mh3z5Cqd0yD01%hZm)vn4#_~cv4P;J#bnxJdZ@uNfC0e* zbCLQzU7hna?vA_nN$Je=?3KN;jVjg=*b2{Wdk?vnC}lQ!j$RNP!`$oCnnqa31yIM} zNVq^@-cR)$kSGb4C642mwu5zyS$X#_<%amfn*~WBrH!YLSwCUzJ2BfYHy}H{8F-a+ z?@He<%ez(2QDt0-(N=+%?X*O;Ex2u8RGKTmiUeyvPfMs0fq{cR;E$r8=MOiI!xJm? ziMZsF9XeI$3?`0%ntYN7Ysd}k5JYJljKI`96}*63ryW7YxsS@+-^XU<2o#893p#f6`|Ow3XasFX)Q+d8nrs zNsq85f>+X(r7pW52lt2$XREwQc&bs{g8O+ir+l-m7C{RGKNqrmfPr{x!7tkK){rQD zE!$}H>%@2W-g?Nr!|NW^nZ7Gj{RR-QrQ}u3(KTW=UA%373K4iVBRN2o&&H7fl1NpM z*@#7p85o{$-0?&s)PTpg=ik=uQ%WwwNjR99nO!%+ZXHP=uh^P z@xo~6HM}hF7`C#ZTPs}b(w|eZq03&&Z$f$AypdlDY0=B!*CY zyW~U0WblJ}nARTPBj4d!{m)W{)~i1-*FuGJ_Yzm~88w2cN1rXr8>plVYrDPeZk36= zWf);eMVXRXw_34p5(JM zMjOUQ(ggDSs1QBTGwriZ4>r%+1YLa329MP~4via5$yk1ieBt?~vJ8#O#mKgrN`9F@ z^$VHdYKvOR*+&3a#R%F%5Yfh@)Y_PvjHDv_SO!(cjz2T(PD~4^40BGCeDLNb6;y@S zhAge0b7x!>T%BoO(U)xPv#(vMaCzhrIgT2m;Gq>THA%amrV#w%nL;+h29GrVT#2f; zmWu?(AC`aBnBADwb(ZdwYd>r|J)q+|mG6V)=v$L{^$eXd1gLA*_&WsP@TzJdlT+rV z^0v&C5g9jg3u*Drn$Mo~vdRNJm(ZL^R9wCb zqUapxs`6e$(9BLUjQ?O%f~))-yZ=wQ)L)l{@Bc(c1Gdsi@QV84#{Oet+TplIc~y|f zKsoIh>#2nS(4%l!2mK?t_-tsCHd%vyS$5(T^x-RVD5!?Zs)ju`+%tUANIz)Z2lgv{>&->?+)s!N`|S)uE;nzi1q~^%?fcsz7@u zDb?iC9`^mazj1W^oqz=bGf*$1r@b3_`2e><^WFj@=dUte}(m|j1`L4cJsa#muAC9;=g+<@^^{xKWBk4`mdT;ydzi{m{K|Gs_R0G$=XwgrPXO( zQr_e1>`C6I<+b^D#d>q!Rb1qUXu!d5?TvRG>UkGg7XqC3OLyt{wZaJ#&JR$ePbX~$ zw8s#&gnn_h4Yh0iIiuU(sW~S07YmpW`o;lH8z@t)NLhH^uz3r+ zGJUL(z2{E}erQpO4YTbO$s5IDa!v-b3b$_Wi|xbG&^qo1$9RnbG!cm8GhfyE!~LN) zMiDRv*Q=ZjIq=RglZepotZ;)g5Gl_6ZZ9)KP{;RVzf705dr4)c_vW*sx0F-#%%u5<`3|-@rEcZ9V%eZr zq=04Ov!kfNoeoPPMCw`GyQRT|-^Yf?dUB7q=8iHI>()O$pmXcKono?|3-HGiJ}4-C zphH?_x^KE)=+EUevw(sox48_vcGqHOip2dhe29%j zq1CY%dRq<1;`(_cJB6F}ltU96k+w$E!SM_sHy{NR6m45*b2Si6IxuJ8b!5~;9Sn?? zZZ9OLSQG;Cwp+XBE(c76?ImGTIgHF>WWOaU$Ebo6(WHMZZ4KX_7~#0wYzvZOm@S_p z^TR}7M!JS#F){oL=;)KypR&HPokgP&Td=<94N&0$J1;l8&^b+K%bAy0!rn0E<%g-= z{XG#(@r^r$p&F&Zx<76AAet&BC1b$JjhDrrImQYI!`z6FfW0dj${8hYTKf&yM`wUDT_Q(H0-wsXOrB1e>XA0Zu?K&Ox#=*~zxdTH~!F zd_9h0AQw7YK3h+%0VH>Jo!yg<<{q|^Kb+e+QG|1bu6&F?XCUiY#~GBZB%g8f$erHp zW!_vQ_yrsBHnvxlfGX2>b+4MKdyPeYZWnH4(Oo(agY3|^iv7_y(lLCbnE4g5+ z?<&Q!g~?S-ee7?<8xjt{ct}~@=yaL<7v$xoAuWTOX-((u8^dk{68t$4d=Swrd?XJy zYh6i%_0+`f^l48+q}Mh-zNbMgtHvSi#_++CLp{R@Wbw2RJ6E)z?%rC+P4qr_iL&+K zT9JK6YjhO@0(rm)5_f>;-wO*g`${Q){Eo9-S9=eEM?{=3J$f+fO@ZA&kC;!Ga@M2i zuT+W)U9y5ts#`F%HEJ;0M)ayghqTaaDLn@o8e8md(;n1qwwrf|xu2EYu1xmpkN_UZ zy~&0BNK`5WlqSJqE6|LKq%IE{RjAZBpc?d`-l`?3`_`+HpQ1BkTg7&nYl-26c_7_n zh72T~*XrE+SCtFJhClR&IKKFDD7WR(NZjQo-y2TOJvO}-k+T8&jMWC^6h{5ZS<|b7 zat)1&HI1^owYtyxkAJpQ<$nD??7e4LRLjyfY<2@GDgpu$l$<5!ASg&iqC-wYh9O4> z1O+5Z&PnnNFp}d8O3ol@$Vko^X2`sYz1`>aJZE3e-|xM?>-=FB6V~dk>aOm(>#piZ zUb$RZwRI>~ouFj)$Z&o@Qy>1B|78q}2Z_2A@Ycya^2)~)qn>?8TB5p604655t5$tp zWV6T$4uy_~O?F9f-OQlOch^7^IwM8#o6p+@*yAaobem4@>O*6cA_r;xGuiO*d-r%J zK2+8}(p)F*t!iab-_C1jh|zo%H3B~vYQ1=Y)EnD__myPr2BdjsD$98gXJ+XI9*nUK z`wjP;Nl9Cmky&>icNdf>RK74?q$^m}d`Pw+5usPu#XF@dvl6q?tc0}N!(`@IcYb49 zn6}(sad&2+3>#v$33Ej}ZwCBe06cQVOK~CF?NXoYQ-m z=-wLpgrPD^G*4NVM77GJ6KB^co85?y3tG-(fgfVK(*&>)>aq^_?F`6}tgTHX`}!+5 z?QyE5RQrac95dhsF_#C&ezM~4e!vipR4jxv(y{VRI@T{#y7q$A*N1+@4%fcSX`b3- zEmme|*6UG96*ZpQeCL#gg!P$yQzj@tF_Qtk!0twNi1a{RAE`K}E|gm0v!5R`Wm{lhs3(Nf$_{RUp|!8r z0tQ<5_7o}K*6`ue?8#6^mcyRXAQu3p)tK;P(3wG?Z%_0d9$B&Wj8j6tGb0V$55doY z?a^-<{~2`l9qR?xk;LQM9CcVO=q_Yp`6aJ;nS($J7P_^k7JG$^tv>k#bH!)76$`5+kd8w)RghJg?<8k?Qlce}c0ob& z9%=zzJtW~_6!*x~l@qX%lscblrzF;o7%da5=I$r3}{4Z z3jjV6$UIZF@HroN%ILGvRxDE$9V7;icm1BE$nMNmp%;b~>yEUjhs8y%1C}ZYdg=&Z zyOaE_zRVbVh}M*Tww4Wc?_0Z4x76MvKtB;&vD)w~PsBd3qt&OV+!WKZYZmp=m2DXK z+Uz&kh|JWB_@wR8{mtHSvY%-#2ze)(u}zC-at;G#wMJpDo_JV6Huq5sn3Z?t|4A@W zBl;DW@Ctvn>*>Y>6*Zb(9^>U>MGo1RJa`X|Ym{dD2mO zGC#EriY`w*?RFKrhh&T&vf2uXFVt}i7=8Khwn)_p&JbL#NiR3mSMnBsz7+fWxNXLDwaOTKA8-{a zhR=U{(@(}&^METwmMAQDc=TXa({vOd?}jT#YJ;n^v~A}^8~^n2Mdsgb({3(G2lu84 zW7lk2#kNiOHoqCbahY}D=zDi!IM zFxnQ7B1ImINq5ZD1@df&orK$q$wrvm-_QRjXa7OPs%f}Cc%@YjR;<*!Qh9$`JZo_C z@o$dI-ggQOuR=C_7(}Xcc=+_SDiCH$c`8bYOZl=Y57cDlEN|a!O>VjHR zg_&&jfY^@ueEKM*oLnuyoo~%7p@Z%=#?QTKU+;if5cnO1>Tw_y(*$xM2VCrR8XS!r zxc`8H$NB!X);TjC&JkP#h@xhg3#pS{UWJ+KCbI8&USlJ zljy1_9!R{vAljZ;qm5s8_`OW*h>|*YxGItSKS)299Wsgi1s9Aay*9YtCVEv#7U8rn zc$e%h(H~%$0 zUpWp`-~Wdl#owB3qxxmKK2(N({`<{;VD0_)hJR1}|6l^&|Np5BKR=_k11M(fNC4UA zo7%|)V#KdpLUnqupT7a|q$5o&zw51vUieS#+T#+h^!CarJO+-EGXOX)GkcDcEuKuY zcW(XrQn^e07bw0U9j`|ynQk~aCRSBqnQuH)s18?4T7RqqL`lyC%jH6IO;h~S-W>#Q zKNj^cGD5(3R;L~3Qvha+EwNjlJq&E)YSw;^PX^GGB45sFydO`hq#SZq0KGGlF)rWYvEFFxUCYzUwU^-q7j6OO z5EUQ@tPc5EsH80@)u~23b|;P&q>{#SP1h4syY*c}aNnsz%R0gh_vAE$AMKbah0KZQ zI9yR5S{t_M7t~98tBSBlVj7aYsQo+=*D*`=xpQxCe@zTGEiFJPnJLU_iRt&rwJq}W zFHywo$K(zC9D75Mqm+VFmYy@Uk>yl9!-wk(WJ_PHnX!Ie*e*urzU`03^MR?u#Zd3I z`D$~|#|QS#=Mu=APdD3=uk+#Cj8^Goog^EQi;nXwDAD&Mo$ch4iH-`mcf7B#9jLK5 zOB3ZB3LDSa-}Yc0%vWE7*H?%ZJLK_|TWDQqo|xr4!IO68otv4|&WcZ|vZ*@Rm&o*R zP6Y|gLa;qw*ZP;(Dbi2|YPpd)G&=TzK+u`Q5z_w#ZcB|NBBD7+2F{@v*y$p^AQ=u= z$Q8T5FWu>#$j<6hx*1Kzz4h~j)=bmVg;!vU&B&LiyY`J^DGMaCx7CX*#*M#*S(cZ4 zFdmCJ9xy7J`!T!43$so6BCg=5YYTYCwPlrkO?#q2n0x7LUe zZ;dSt0cVl(vEE}9!?d(T_vL86@VZ?t?^w}`Zf`O7O|)v9?Y&m@YVeX5rzfWK!m9oz z6xKOxyoI3@qBqK4YB?365ItY1?}#B0yExEKJ^XQ@=YfslrG9R@xeApe!? zmJRBghC4HYSTb@80K)R;wf}9q6e*=UZv<7820; zy^L4aCB@cqFrOZetdtb%b``kR=Gan+=o4Hu#OB;x)q*>DBDO{=0$pWTtW(C(A!hg+ zpUv-MEifMh`A!;($sX1UR~fv&eV<6jUaMXJ=KRr=32-3gfOyS{Jvn~;ez}Zfg8Djb z$lJW*=*e70AMdGO|fnTb7%(>I2uah zp?t6cA02sVjBq-6L9pl!&awljP{ZlAB#iT4Mm*#2#ZE|@r!16zUlqSCNc@HB1x*YX zX3|xkZu-4!Mrlm8$Y~V1k};=`NV~npH+p^ASGAaB9PB@J zy!N4#HJ-Xs$1H}K-sx`Z>cIKz#CPVT7W0hrueRN2rM3Kni`B!C{_h#Zad_~N+VPuY zE=m5MLCsT=>faZMmDeTd1Y+gX*K6;RBAn|59}-6|^2;_A$OjPwK|ktYluqu|*L z2wI{ckvryiC#Q8A8B6QM`OVvF6z+yi`{4diO)gvrKM{1CH_NNXa_@ zy-T*7L!sxSDYmXw8+l`A90i>$X2@>fj^ljv1Ge{HzX42*I=QNQ#^YYIl3W7|0SB&| zo(jRMj;>@{v05(8dYV};T)o=bytKeVM&Y+25MlMJs1_f}yeHvR_)`!tf zhcBD;4i0xn+5>9n$7L|{g)0JhabI0LP9X*+YWdj2|9gZIm!1q{oIBZ84}ZsA(j3+J{2hGL#oM85J2Yehp!1{65!2 z#jJ*Fhn?J5KMxCQ^2ZLhGk*w0zpmhU>e_JXtY>kv&>DYlNe5IOdo;-D97EkQw}gl} zgv6M}Mw-eBmfljgHr)z>UR^TLEq2WZaXWu3Zjef`fI zk|zM23hd$aWh7vk;rFP-PlsR2;H%C2hd;37++SqN_bxuzj#kJ4UV5b=7i|%w|J2tg z#E9}KXm}uT$jVLXSXnFlBwwSjh7~yTB4ac{qf?k#Z1-mnGB*>%Rb4x-8E=HRc|nI} z=Bf`*mCJY^q{^=Ya0`hdm@>Cg(HBwyCV2pVG(hngIG;~NfOj3Lj&~1>JiuyIh-~`v zJRk!L$A&$PSjrd>Q{P?EW%tS^guw#iUn%0DTJ#=<4u7)r%OWZdODKiWH0yOL(>AxM zSjK-D!fgjUhRQV#nuk+g8H1x|KmoiMo~uhU1Nz#b&<^hrTIou|xF?-Re|^N`8~Pnn z$vi?dG_hqZ=Rj-~Qg@cI{d)AnTez9?)0%2r$rHQ@yYcI?eT4^kNonsc^D1{nI;%l1c z%3Y2E-7O){C;INrp|s2p=;=2Ok|*BhU>g~hlfIZ3Kec-ROAYp7iB;!({)d^K``%CFM#y5L{yW5AqoBD?O%6KYBYvTMTw02S)jLe9w$gSz=xnrbE@nY0M&%H?;svmOZfo8xH>b{bcoxyB zgqO$f*8>>d>}lBp9>b@n(f26z@tAr={1rvdN9+A!HAI29mERmwsltR5kF5Xa<>6x@ zWuQjK*mI7DAJ{r98@PX<3`C6zRBZ@I^rG=J?B(DQSzDOu+5!-|JI zsJ->`(u>C&ilgotdpw-OX9wz;Q<|O1b2BkA_BAYzP7YjcN|73ky=d=!!?5LXS@%0t`Cy} z!MuJls~YUNw8Rp7{f^?Y@3ekh zTrYBeYf^)uRSP&F6 z=^-5G7x~Du+ii@~6Z!M=2nRsPD`KlF*ctL8e)g=VbN}>Zad_X{qu;UBe=&;}{J)Ik zeq(eSDDt~5Kbks-P^j5+Zxl)d3%7^3*q7(vK(zyaD4roPZ;<-p6US75yUUjDp6L-G zX@McQF4r5h*HeK*qyo4x1hsK$3AM9X>$mBW%t6jFQ*|h{<|!4n&Y4pE^El3@as!y? zW`K6xdGa> zsFdgwzPv&K@pb-9@jz(|RKR?af&-57skT3k1{Y7SyQ`+uno} zwumC(0N!6cFIEo-@f6Qxe6xn8c6{eF#q|9q>!I6nxvnNk=zBr-? zQ9iw7e23;KqrOC!SDu@hX(KBDJhVtHi>&N8anbF%VN~ex;alQ-_lEi<-!xYdmDRX( zPgZ@s7kXG-{jk_f|DCSm6G0K^Vsdqi!^vi=e&Y9}Ew4Jy3qxc$RhtHv&2Z?*Y$Hd z<{>X~>fkY%M*13+5qZyY0nQ=kz>|;71<9`?^aQ(=iXmeawMQ%~wQ4y_^g+;5l=AP% zSU&5&vNKdR>4KoR$-aEZD#K{T@d}7_koU%@Wh`@xv||?&YaI_OC7MTVeW4o@aCSm( znz#fo&5~b=ij5`|z_XY!6?OVWDn$&%jIPZxlW?>J3nLvZG7vwa2;f)PWgBhZ%Wg=UcShOa(tSJtqU??^tDx9eF?s8}B65=>Wl=BzR59 zJXs+V1$>b9V-V8!jZ}I|A&Ocn$UlEr3A#&<-;38{bBWA@vpxrme+p<)1ve_6*4*#? zTBr==r70SzB~aiSK{Bfs^KpTLwo%6=GDlcd_Sa%+QDIKi{p)yNM$k6H7UQEAYzI|_ zHVK+5nvS|PU?VyJYrG{Q2Uc>HsaQ>IFpeZI=bijGcAs8sdaD0c^kzFp0ud;Hg zc+``}y1${R24D2#7*dGaqLg6&fkZQ3>k^<$2(WW6ZC}|sJ#2tkW36pzJ1=>^ zZq1~78ZaYvu5OJxWbPbmwXyrmx5EVX^Y7yvP>l3Fn3FGyYoiRadefdUb#L2a!^LTZJfMiqWS!)l6F;q4PT^FyS)-E}r!h`b6522kYg3d=1O|20> z;?Q7X+RL9Ve|tnNN048lR^w@vQn%cY9LfdsF+!2#FsSW|e4&~8w1q5Q#@m%>wq)YLK@y~rA_#`>ckH0zO~jw-t? zndOTw=2ZF2br$;ZB~wN!52CNyY{XC0D;Q0k0~^qcy?qCOMnd~NE2hogL+h>Wf#L9i zD0L2K0dQ}VM9pOi$I^ZXN0(uM0+C34=a+9>otf3v<${L6@G5|A3ayJ9%Bo_`4@RHV zoVB$?qw>mu?@h^Wzra&x_+$iNI#GVLUTUj9wvM$sNHNZt^zn2o_WbK`ZXS(`(@uy7 zG|IHFaCfU8p!a_N)NrbL^<* zk2@(QTil~$Y%sM=^4_9>46NPSY;Rd#VH{r3$aqM`snzg^F-BPTdTV#NtTq|D`?Sq7 zzhB(Mz~meT494<95%X?tpYVL%h}EK+cS9LA0ClCt%7u7;HMV5)<+Jv=N6n)6=1xAp zrQwQa|4Y?Gf2rESSVMIXuCLnRF?h!8AHT5wV&j>i`4Ez)nec=ergkzJAz*pt(#w4S zkSX*>xpN=^IT4x81M?<>D^}|^LX+O29xtl;`Z}^9FOJOsVCWg~mjMYz#Rt7by3BEk zSu(jrn3u60mYr&N$Wu@Kt<%NzWatIww$ZL?@>g| zeudu=90^zPQstN9yLnd48s-l?H3~g=7BBc%9@h=LkUm5F5 zi1M_rXgL;vKG25=XG$K;IGdB{SgD{$9RY?56n_&ZKy~p6Q18T@m-g~b=paQ*m z`;E+ul71DCEOQ|oTdg*Iw<&FA3{*Rvmk>dXg1XRTHL0el1C{b-<%2*Tv8me!%$`tj z#P!4J2gKjTv9eRSbi{!6D+A-^01g>auatAWgLMm|*Y>6uOSXE`*@=FEC4D50fNJu0 z3XL-3-~0};k49==IE@X1K zN~AlTn$H7ch$9VNp3qSI*PfS6@=v^@jy#7RCE%vv(w=CB6 zN`YJog-?H!lR`otNp;tZs;pJHJRo}JTZ(0kHbSU}kt)XhOf5_Y!-=F`7RM=X$vtc2 zFMJYlw!rk~uATZvixMps^x9+kX}={FP89@A);1|PRpcrf0ch{z+%uRI&zEd{yLnba zu5S@d2d0p;{(&qwc2kU|j8PTj`PKg(L1)Jmh^TIH`1*w4&M|2CjofnM57y$k-PO0* zrUNV@=PPLMM~SaGs+lpVC8D$66>VIoyNVzOXSc(@nnUR%4szrzmqtG^mxgpHS1DvX z@?>1X5OmHdd{Kl-Ted?P+SYvL9{AsE-v#pDNNtOXvEB8K*E?IwXQw1%>Ge#=~zY!;I3>fP9h&!1(JS z)JD{oX@g(0r!3};tdZl|*gv~>j(!Otd1Q$p0K(S#dH*)$F~4GSjIO|kHx<7pVc6=w zI(Vt|&POkb&VKokq7bVo;fW|~2s=6}l*xwxxl%E3#2XhQ`Q60G#>iU0A|%^|hA5cCj?iqq_@H;cpimJkS*>i}T-#qW~{7&8_O*RuFP2sPZY0 z9tZ(dwkPA0@@ie?Qx*>Z5!dXdSRh$$+07xxR)F{}*;-%Va^hZ?t_NrU$WYyTE}tO0 zyN{=5e6zG}FbGLuiy;s?oNAWVr-@WiIwMc>OgrvLy0#Pcut<0EV1mEH0r8k7$%^1E zVYFn|ZXhF#&3qwgcUcXyH;X3VoBr_k<^h%Yf-x;402` zX;i4vnoofrrFec&N|`4U1bTLRp$y#v0|HDvHEXKw4zsaiO&UV|V^3eO+uAkyW-q?* zbF<3I0f=Mt?bDvyRXU(+?yS)I8V?D7HcDpKX1#pRI?cLtG=Y;vu3o5ZSbEv1OZ!aH zwHWvavs=<>zv>UJ-X;VCGRICKb} z!|(#suv)1{D1cDN?6MZ0_G09@I^_ySdMU=f-%_zXeO(6R3s|kG6R4DB7}8Lrcwj!X zH8jMgoPZE_!|P{}G^N^L6Cq8$ZC}=}ArOx|+E0ra05nAg>kw~H%kMmd7Bu;8<&m{F zTDxcPd;}~VkH?uYyR;672u#vS=&3osSjhYoj=7-8WQ!VqePu^=nn-oUzClB2!N;h6 zW8HhL%20dX*1zgur=zWo^=k1v_LGkV7}C`LRl2K1A<>qiLBw)WDq*TnJuQ&AzxIIC z;1+h>t<5t=jR9`NF7~i%;i9p(z8a>*8r2srrjMH~!H5~VCN5b|*6F;(e9@|eI&^{o zp34o#v+eTYS2Cw^g_T{rGe(DzHHV%2mpDIJ8kzbXkGmaAjWotH{yzZ-;6zSk#>he2 znY~#%W@hH`!Ch~ytDHh+`93Rll8hL=ubb1Xx*v3QQB$IYB+^~0Tu=2< zgP*0O>B$H;9#@dpCK#LpIiLOqsp51{lIog4*m&E+iu%)*=Cj1fm<^PrWYb<_n|$XM zZEjLtYSq4od_`1%kr-sgflRl3yYRXD@e_RZKbd|qD>h94{oC(4@@TVF1A%>1hw3Lh zsSvp}j*zivpQ}H6{xpW$1$x%iBn5>Vu0?Qp$A zUQxGIykOZh50pC=S9SfsKU(A+H%Z1)(#@Yos|WOrk|n+XH~L$kh2be8P_He>Y0zTI zcCM%)5s-gP4egR<8GxMK+dw9#86h?=b5UMY*{&L4WA(2#i;CIq`~JQkUidW+XI)`H zS(a`s=e{41?KYs!((2>qP9a0w7UwCI)o`?}!NIZ4*L7YHn@(|$6%1XI_q~r*~03cV8KwTF7~j(zRO|U@CVDtygp=q<7LQy`;5}!@%3wI% z0Z*B8L7On9BXpfJm~)M(&}TRRZ9CF%O=Ijf_(Mb%6eO3|3AX zbLZV%b6L{ccH>T&iHY#tFh~+j`GLfWlWA&CyR3ML-c8J*rx3I2VxneTV+K;O-Nsyo zy_7vdmNT+Or9_x$m$Z-spOe|R6fiR3<&1J7;`?@c`7$CZT_cz`>PSq~MxSSu0(jNJ z8ba6}XeuySXnNJ!396`#YF^dl*2osDDQ3oSX->i?t>>hTR7kf{-)_4iObf?yI)5a3 zEA18iI8b?ytvT5iz*CQ|>&J@?(D&B4(Z^i)C$$|&ADkZ~^gKdO-<%#tvl(Ko>i^g{ zSnJ#1N|lu~;Z2PHN-Bbx9J#Q5MTY|SLEB!g<<-aArv2~ZwnObWQdIH;NSBE=$vK|7 zUW6CQxFqq@e@*bCgU8!@fENc>8<6nOoNR2sBa<2x2jC`45rpaOeq+~APom3Hd50ymB07zaj zslu)@!-!JWu;!hd*;6?s$%woW_S&WQo_iAUdZJ>Lf#`=CvITp8IKR=Wc>F8~31Rs8 zKngeFBVj)U_`V|QqhwsE&SzoFLda93Cpz_vMK{DN@L{Dc9GyR$9RL;i5SmB>3b3s6 z;Ia9^%U$7M9#z#c)s@vX?)dZF9sPIAfkML0m*Z*GbA5DR(`Gtj4`*X8fD==tU}Shu z6KaS6(jG^xgmke)zUo*zrkAlG<@JN8aIsIPm2+{BAS7Cvf>TK8tcg{j*j0}3S&K)0 zYiRkSX;vPz#leQhonl#MCpkhOdx$NzOq*(Iz1A zB>r~VJxmS|b#o~P=wmnByv?$$iGojZhN|ML6hK0qQkgGEmUc# zdsfVY_Uo_g2xli-KNped8TVF*oI7CR&i8&wfI7XH&j?=8sHwEIrry*Qr6~)KGrMQ8 zRosl1p|m9g7S~oP-O^Q@;MKwLo}gpV5p34We4UQrSyCYbGA&!}mNQg|{N*~pRNr5& zbxD%3%O!vSF3zV3nn|w(47F{hFVQopccSl(tu%M(*>xyM1HkQc9kJFyp*YlmNADWg zXk*H^c^;J!W|h2+?-j5@mGb5J|ABbjFxWjF?%`$OsX)aUq+!4mh}3BDcYKmz#17#RkO7&67Rc6jx_7LJnuYQ`l2umx?7~4Q}RQT)=4GL0Ym7in;&hb zG-QNZnssu?Zx!zg@}TX-i7QAdc4&6p^qQHBdL5^-H&S~R8B^(>SmCb0bO_Y?UAzwY zk&`)OMN;Rg_5x?7&}*bE822lg8{GQV-P-5ql|qfL3Krcmvr9EXTlZ>#YN8i*68(jJ z@(VyHCHVe8ENW-;Zc^4KCCj(Z$6Z88?X7ZedV8(j_G(QX5T#zJ=RwZTUNzUp5gBfv zf1j{YoT;`q(^BqX&9o4gjTd}+r~I8rs#YsS>hXTD+E<@v1eT~ym!`rr|AcM{2qRd3 z)>e^wpayU(qjJbcH?!OWrcBd^UqaZx5V4&%P2yY+hWVy|a=#I8p5+2TU1t`iKM=g6 zeaA;lCj5!1_d=<`BF>ZU9;*U2LRQemK!>d)Phg33)p+|mg^^0=7bdVi!Sf6U$D9!P zaFT^|(%pJXqnj*6DLl&Ub!8l9y@4A2%4y&&5PWdB65uST**?j>QUe5RqqlYJ9b&B8 zwu>1tHz6wLBsip6iBnbTOFGGNni0q{EZg;#x10&D*)6s@mI?~)J-m?IVKQ>bSBm){ z!NCBsKNi!l<^o;k<{y{*S*yr~e`9aBXo-=cT^Jdqoc`RI7;mh1dTyWfG%`N%GY zD&9lng#i$D)T-5cnl=-+d6d7uo9I0VQBW#%b0N;?!&k=p$wQWhjoHt)sU;vzCM&B^ z(6WlUm%r@M`&yz{C1~MpRM_hM(f-RvNC239TgJFoK5-CxDk%xwjURZMQc z&@jsLR-J`5w$N8DNN~*)3!}&i2VoVOVa~f+94!KRz`2F?!?%ffHIuv~qwA5k4G+U2%PXn>>u~&(0q$UY2IMm4qElJflURGC3SG#t(Z4#4`WsP2C z6}r`Y?D|ybW8jV7Lt^(C@UP0uj;gI|S8l<+!G;((8fDyz5>fZxf5Qg6&y8kRw~c%u zz;_6L4eJ<+>Lg6)_HWhCZyR}xckMpIy=xU>ufoC;JC`Ga54IY>PI!O(doIK4r&KaJ z4OR0ykCJ39YAV2Ddv;R8V85z6P{^hO_48$A7OJnRWj&4V$6Pu3L~oHusQ?Tj4bz zb4D^dq$mB~1o+!-@$%9Km+n{7a49MWXJBgZ>~Btk`O{@;#&>?_@cr)X{pqB~@mvj@ z$qAC9=>6%(Z96PAQ*J$e6a(k$th5z~d^nRSzSK{uZF5JZU=V>5Yh)l*6C)c>mk3Rqv7X<~c{Z4NA zr^mj8$V}S^9XzMiiFA80p(jXRakKE%I1C!MT27`@Q@nlWH}v5@F7qB=i>%cy-?Ch- z6y>U#v3_=2-vSa*xiWG#7Q3;=W2u4EI0NdJMU42#{ytIuCy!P<=a1KYu?4L5+7Bx~ z+M-w0+s;>yKW90NjZ2ly&?@`?N4tN!fzI#^8mQbA{DbYz?1HZcdg7(SQcEEyRL;7rvxJ|!DOa7yy|Em;#Yt4Tz|2JLzS33Wd&i^te|2xV4 z->^Gs&wMWMul}?M#s%A&I666i4Q(#3AV!wBe4JFzsV*;sg{j!3EUcZt4#2Cmp%eHe z*cf60rec=|+nPClsUeOm*3)KL)}s7r zfqj%2nB%NED+Oo8EX}UNX7T-9Z86-6Yve-jZ1L>Ur_*?SQtt`+;Fv@18;B$Z~}jx z^FPcTD#{Iovz)<*8 z3YT93W)9e@of_@Gl(D(SW0&65qOZ$cH`5xEAI{HzW=ev@UTljH3B!5wlmTi z^d+jmK>Pdd0dgAq0q-5CU^5|QB_(A;S9qywR8{pr!vj`RxuiJ+fv)Uo>CgVo&iQ|1 zlKyus{qI`(|Iu2i9Qwy#!DKq96GL9JzpODvaVoi}m&Kd3sgUwFVKc-8W@odcD=;)1o4wO{I$w~+@$DWx>%R}&1MULW^kMrx*nq1q|J)mwFxCdPNmIm8k&~HvOiq8tXYk=y zc%<$bV_kM1%|B?);puyZIIWd@2Qm$YnP40u@>YrB?uBdYC82d()hVZ+PJh_b({

  • M?gr`ZvUqp5{SuYm!AJA5PaD8yZ6)Lo2K}W@> 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

    H(F;3lYzpr_v{bW(n3TYe$oa2v>GIz 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

    d-*q?{A124BZ*6jK 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�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

    eZ+FNgv8XxKa@HxkrYLgvseU6r-tKP9pd+c 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%0DR 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%0AZW8|k5LSLC!V3{yY} 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

    VxZYAE z5W{ldOYk_Hw#fDX>af#CJO(Y76#8IAZYYag@b-@AmF3d982xWbU3ja|?9mRzzob#@ zA{b-i0RU&)S1yjHevwgkykYs%oETu2ZGN-{Ku#K|C@G9(|uOr34ylMUx8yu1?juc4)9y9xreA_U@ z)jiwy3cBEUGgimf_;udM5q$xmo8a%M5ME8c)c}eRdK^)s5`{&;^I8QN&x<*CRvIwt zG7&ADed&XgGGSyUcMWM~0{ySeaK#Dg_a7(CLV3n!S)32TT2tP*H9!Lkbc5aTB}_HU z;^2)@A`_@vg9yoYF7VRnzYl#=XwqT%4%NO=)boYKBM(G=R!^j{FSMz{l5XT!AVbjP z?m7c%MZ$~5)|t=jV%8PDy#e)>Nz)Wv4NAkfD1p>S6v~6X)vx=A6toBhteQ8{4Xro) zC~TTMcC>(7w~FSNU`Zcw6W3H$0ai9l!)7KH64j4@y3EnSYrz(12BbHwcSzA(2Jngh zR5jawi&!s6pS^5^n%}Nr_|Mo$tf}H?GKHV`;S4d^C@35STZjb86nvxO70pRTzw||-EA5!s zatt%)$_e{DJ|DLJZMf1@-M(3&w(*vnq#`03WFvwuIyNO7*UL40#7K1AGX!H{)@>lN z!P8hQ)>}?}BOg^&{D6ok`i-5@9_JVNTOP_3|Mh4c=@LfFgq_22{+x>z>!a3#3RFd! znm(8B?7wx!J+~i(R~l!RcRUZg^dC&vt>B@{#&F=n7l}2yoP4y|oL+@v79^$GO><|m`tu)IqQ{`k^7>1nsHDzY zy|YCrMOBlWR`KIiYJK?WZFvfLuhN-~t@*qP)uzM=$>?o0U=UqrVrM~y(8q0%m zDUbH1;UZkQBH6#f$MROTrl<9X%1ILI^Y2f_dvEZ*G`R{Ore62VHgY!C27+ngl)l!Z zNnorZPL*%kzfM~e(Mj>SDOy7bd|#1@9ns$Z9ci1$nkGwztV6z=$|log`Rm>N9D?j? zn-CY+Lm=}!3a@i<5OqE%5S(-YdA0TjcWp|2O8t|E+5M2v42exO)slU6FS?x5S%bdW z!g&|b&O`vBeZTLke~%E*wz#*NS8Ubf`w3T)Dkx8ll)+Td%hjd#_-t_TxPOk(SYl3{ ze!)ojWxC(OboYJ#Ub&j(7}J8;36T~(l`qiJR(9U93SQh%*?|+Rlg=1)tGzJ^#oBy;lt{n4S72w9cHW zXZkGQpV_7?P#6A*NQq>^5kaF5kd^?-tLBf~yOhZmHGie_o$9KOE}mEvA1>=%)~q1! z$dAHssA0o%L~`c)NCDGOB97rHxGZ++hU|P$C6dBF*?l#MUvo#JKKVs56Mf7gQtIo- zpFz-ms{9>zIis4E$gDypnDp)mwB5_3l5DVBa2nXD(Y*)_MLZ--G0N0OghS%~&JvvT zdfV#ZC9qTK^T;s#f&nuAjlG#U9TXT*O>a?^R%}T@eX~WjB(wMfu&`GFr_DIg?hPj^Q36o-IsA&Ruol5m$7^GF7I7;sHN$J2k)rE z`=*U|mQ3jO*U|t#9r#FcrS(Kn73L`E0`c{A=81Z(oJ3uEn?PCc{iPMGGL*-w&QTr} zJ1JQe0vtq;7tz#TRHb6Pm$_H2o5q>V6<^M!+GjDxF}6dVUaKbayUs%Y{DQIfi&BAI z#Fy=_8@bz&XUyCIjs@?N<2ri!3>c6g?#Z#)NUtJG9vCP}*TY6}2?qiNXTVMn(wS?2 zskqkk()nCGJ2dwDah+EdsggshD_mzb2=eFgl*V10d4y~3$hGor0&J^h+7M=}pB-XG z)XnO#tq98VZMyO5_Sa=X&0Fz-Fkr!oXfyvQnB1HHn4gw@$V(< zG2LYKO>$miYr$)S|9ukvelm|NGzZ2gQ~Z7LlzQ3pWB%vd(@UZm=l(vCoteudmg&}9 zhkI!TTZ#8u>1|EgO;^Bs*1~|~Ni-lgDctEd{4r)a=f*>Ju4!7E6}M3_w5STw#-&B$ zlKFCxi^p*1a6aI!NOTdkM~%aozrtNJYDOX$)0hROof@QW7f$*IM#a4~HA^oH z`V6O(7Cb9rnr8Vt(>a#)lnL#n+^!-pXeSkDVvQGY8fXK94 zcg`c^D6OsO;V&emIF>=0lCPYFubc=C5(@F^%{bdD|NE_K*<)DHVd*?u#Am#Dh{lt#jd z^7NFmNb+E0A93*O_?9lO_M)0UPT7y%U&c0PFTe4%GnUgYeQ;8D9y;%Nf&RIelF+M4p*TRlA&J(U2&hyX@4h zgKW=tY(%btp1fs}(e^Wo>lbyNTh{G#^X(r3&yEo{rzP)twZN#TRQ6P(Z;j>qVdlbb zs0J=)CK=Q0<@6i9=Gb7><=OKJ#Y@1~0UU0TwC%hU_a3{?a{4UmI>;O=Rh8aaF?^XH zCjzbS!)=1lBM*z_xW>Yg`T_L4vzW15Fd$g1bus1b6oY4H}>c4#DN_oKtn*{i@#m z2VTA6H){9VYwcxojxpw(Qf)sDm)bX2`qpFD{qAlr{4aZ{l>7Zxos;fQd5O13N&Bex ze|OYQUOoq-%QpJdl|7^K6??YPr~5(H!Zm7&36Efn@2XnDogOL`ba45TG@6-LN7;?o zA`3j?kjM3tB{O+FHqkDkQKnq&a^EDXT;f@(d^7gMSEzU6Kaq6Jpx2$mPsD3XmbP%| ztL^I1he%ngUlvzaJqA?z^FY|MKWn1@N+2m#6{~J&gG;EwBW)=I-ZW-(v5u4>1wNK$ zy&h`n6c|GQiK)hc)o|_AM;`wBC^JIe(?4NtbNYQo_aZME-Dh7n%o^Y977qHL`vr%{ zpteO}pmSodZ z(6jUOw~!X(L-_j2(T(6wUNk{mkS_UU-HK2BM@Mj~O=y9*5| z1c#1xqEL1ru|5X#G2`ZX&^La zeBaGTYbtlXw-LI0NmC)4It3eh(e)AtQ9~&R&&fEQ;6{YOx7WFcraEHlk77>oX8H0- zZIHVhpyT8zrFRa>%mMI4e$X?GEGgXQ35`MKq?qClqos`FQFo$HkcrP={$T^%M>XY{YhvQ`@QnLLc~F4NyO<3~jY0OlSC?xd2? z=sD>vOMcswh|4QZX!bm1a0q&$7GF8g290!1NTq^In0U1=6S2CPHQkt3-$Hj+x7V~g zBvYhw*^n|gDyv<#3du>?e-Sx#aZW0!q`vHZ!j-{EQ)oP+4*-_@i*MMV9Hk84uFVJ( zP`TqesMqak6?UZmllRMNOW$VNYH;sR8{M2Db87x{6iyH7AhG_PB1I$%$Hf>FReIL< zx=wheU5PyV8~yxmBx%|l@i$($aa~{Jjvb341skGdUNoe+%yt}T3kcyR9o)8FweJ1! z-X@*9XWV6o2DgF$1x(ysgarpUmWCdFPuZ_o>wFi&EzK_;ffXKvuzNv^92o(iS)Yx0!72u8A? zWZ9v(0ptB|rmOY<%j}vubD~QXqt2_|ua0HGxlMGzVxNnzLZW{m0))3<-Inq(doeeY zwtIQ%-vOsfVQNu?*k?DHL?==jB+1_-Y#!H9 z;gR}$3jER$ntLj~h<7TgxrAezo8_L935{!nEmB*BQktcRuHjT@(;uRuw=+X@Ob#g zcH2a4m$F11H~tKi=IAAcN63SoYVN(A&o}IT;fYEGnhRPF&+dA!2kbWojJI;MhC=%? zpj}sE^a-Idz$XahTzU7JNu#PEljaGrriTEnf_JJOs+R(>EHOymGWi|B>7KpmQTp05 zHY#P7u2qWlg0c#MzR7VRJYbiGb77CTI_gn{ltuDB$JBJ!C&gpB^G>zdhe=qfnY{wQ zI(EWXEF!8Ti{mxE29#TQU*DK12m?uV4%Zb$DLO4s?9EgA2UXLvAu`PFP5T%7o<-HK zLCykY#P0niqB}`hK#{xEbJ7euWZF+dE^A}HG!3%_T{g0pMb+~zowYGQ9=-S zO+Cs=vhkrto`0OW$WUA2&QaWd#BdQj7n45#Q46BfZ_ zM?JpO3RF%{V9O$bvm0uI!S8pDrM7M^GwB7pGQk4DXH2cV2iSVh{qdKOJ=& zvEyc@jADut78#d5G{%AuZST#-l z`h!*Slm|zO`P_B*`b*gK6T!usawwCv_%Ym_aExW0E{WK;9Lf~?!m5nu-|_(iLn-%L z$v^^WWnHMnVBc5lpQ^Qm(?Bjbj0v|cCB!~(4uO(9$=ta%jt4tSjAXicIhY`PR-tfy zRR~Qnx{b>0*cFcQMParYJ3CY87-qmFD4VveQH-i|1?r@~H0V%wc`#y6A6|pGpTw($ z?>34z_USt6Jk-p6}3WenPOC0s~S%D=z2Yk1YP?m&gIWq9o7%LbBYGOxt| z*9H1;7!+%%vapA=*(iqwdd!OZk+Odx|07nHrp)U*`fkH1+{4Xi`4!eN90Hc`c!pE}i|S}0@~hT3Nn*;%YZYZlgyXgg=} zzmVB7HBwa^I8Yg?U$py)`3cv64FoT<68mQH`t>HCzi zmDs+agD$pdP{i1YDG>4`JB|S3#efJ`6G)EigC@prA%{|C>zW^2QG~~F62;YwVW)Yt zif$bpCVfbFLy$R+jh;Icxn**X|J9}38-^%B5l`)r zp-=KCp5$ZoJHcec3b-|R(+NaW#M-+P2=dy_wfBgSop6O{TV?eVsc!aq)z*l@i+?Pw z_CJg?Dd`Jiqq8gHN!h}A%(=9lP)UR~2{WkfFmixtzx;j8_$wvQ3PGAIv905AL2@E{ z6zVZgy6pr8H#3X`N>RYXB*I)UnZv?s5!AKHj5UEDOEQ5--|z|5u}N_!P(Aq3KRCah z?37UDK!~l40DF(qn{*rGk%_orJN+Y@JpM|T5ArUbGSMw71`cYW69{7-pI=kvX4N6a zSThlt$bRxx3C!LpprokasHBuDqiWiV8q%TsG@FW&J)1?i?-ILsl;?mpd9gY+p|*#6 ziP2<^p0I$K|2*?$OK7b;x8pA1;`dOlte6t0=dyzEb0E%-0mV(m3Rf9W8702eC}PI# z1W*$x@&-7ccAzyp4mJ;m%LXKWi^RYTNTh~{3TZ=B9ioqjG}25KrMMc+sF*AxjGA7x zl)a=^QnuI?4{^h>jCwmi$-Q{6#Acjag1@( z3wZ%Y^iH~BB8mHn8*6gq?2Mk(x$)!$uRBxCr55})4n?25hqE&~_hV{0h^HagKu39A z7siva-AX9QFC_#lA4lsSRSKiQ>2Vv`A0K0&gWYO9i-Ymd`!=L6lsSi#!N8*MLIO$p;oRPsRIVzw7t zUp~QM!Z5%@4o2eRu%Fuw#TY>U-8gbgef0%JSG4P&77AB-v~L^v1>C<{8x@pOq6dFs z4$l@;O5sZ`3B#w6T}p=+x)PD%#V?igGn?!%G6x<;sQv#N=l{NOem%MmwhgdXT-V|| z8e~?u-+xB~vS4C$Jx-7FCtyMdhr?%xXtQ-?xRmia&f;P^M)DpdVldE(L)j)XvkDKM zs(BU(3>2OA4GCEup(fB+L-Cxh+gi~k`Z8wX+MNGvyxQB5_Nk@$OiZDf+zmgm!}aWq zS&$-2W-%8-`Rm&*Fwf|}>j${Gf323p#QIN6LT%=i4)mXZi08B4zXX;IPiZ?s1d=hGAQ>0Sai;7T3R{XpD88P5e z8$8$Z_(UU{Xr&VWv3Nm)QlT%kUA6_u*^)PKn1|$aSLs(Opxpnwg7bXyTuM zB!2Ql%-4aRjh$fJHlmonvy+P{lwxyYM}U{G5Mi~B&P&Q{g115}TY|0x4scm=pw#sy0yX^fxYi{Wj@e3QGl}j0IF7&0C@>pl~oej?)3ct-FZk5Nt)O#cwG)N{xZcW8UBp@`*yEEBbFep-+OVBm@E4Hh|XOun> zp`FqiT72B$*NR9@G428%5@TwqMq?z}L%X&bj`VALMF?u7$dwda`hM06&1n;lM!E}; zfwY=ek(}AV4vIOy7D*N6VMHHphTrLyAj{eK{2Hl^9XT_4)ky&9C@oWTxN(}x_~_2( zVXppjQbqjA?xtwlb~E-Ee7SPB9{Q9(5z6O!nLzYBPy+pZ(z{e7=PXq1%Oqc#&F%R+ z*%D6x)F3k|7j|4hZ$JU3>S9a(g%5pzpZ30cv4o$|E?ct8x05sm{W8h1!Z*nBIW}CG z)E3AkzWr^{sF2F$23Huob31p}o<)-|HSwH4uZdW-)%C=7@9)ed*(g0uGW+f<7_nvd z+3ygxy6L{@k}G%0N6fO{DHsy0KD+pEtZsn~EdrG=Y=OPJQdGyqs_zCK4-G-5uAAXT z%FwP<{kOl(NkPm|Z^!U{u&P+I0Aj`B_(`~Ud2Teqixg~Gilw$=qD0oD&{ANoP~ZEk zwd3exKf29u)&-bVHINF;6~f=Z4*EcjR&0S`vPB*Is519N~8Cjdip)u{Oq@XJ zg`bXP(GgWQ%yMofnFqqrp!APi}Odh#7yIe`kNcgaLS(wJ5IN3&&T_rA;x!% z{IBs~O+nsd#D_c@3El~C^agl__}=p*9m7zS z6i=QIsD|1ZA$04s;+avgopG~K-BdVJ5#ZwLw?aZMC9u@&DkerKUAohp44+!GK|2&{WdYG#4+)^4_ zfVM549)R6sYyBW)PMO8<7&B(f338YS`^IcNJoAVGb;1%l4(3C8Gq0Gg$Jqn4oo`2a zyM^Lc-g$WmAFSG5X={L9BEpTb@C@$DZm$b_%a}Ez-wudW>a z!GDhn(k#A?jy#HK0{&%b-?x4B#yb;?CF7RRL$^cqCRXbg7a8Aq4g5L?oKKPPF2{ZaHtazOQBA7P%>&~H}#)|(yacuI|Cce-BRNwqO30zAJC|kx6)LqcMDTKLjsU^Zk zkrFe@{5Bcee%v#-pb0jke{aXA#3LlHsc$5Qu4r_Qu0a3LPe}Fn^7wbQAz%!mP)PDN z5TXv2ks}KjC)vwMYG8)J_-g&X7@4AyS!C1svgu19o9CnisQ7afNuL@pdKGN*Lf1#X zLNjU6I}R!82?t$sG0Pb-GAT@0O8H8U#aQ5|$^U0Zx;=x{ynv2Cu!Xita~Zr_7Aa8` z{&zmR(EY@TBGi(ewWvrN=d`fQyw*ZWRv_S;xM&fByh7MZ`kUf@S#SXE=O&oj)Hx~T=`6g8ZYGamt&`8UJ!V@icI=$~3Rr*>U4MA@ z_nxP;&w~jh9Y10O3ESJwyFY|+ zU+GHv%~3YVk32J9EOQtkw2VUC+~vrI1OtcKvts^PZiU+=Otg9KNl?mDpR?01nryt% z%<~j1pO}I8V|T+@tS}U6n)tnC4T|v(m_Ry`Q$~~iH?4&;n4P+k;TtiIu!gD)<=IRi z_mhTYi4pAL3qIy?S~0v32woN?k+gH^@qqG2$17%GG%#G1th@d<_GunnNY}Oh-+t|V zS12#zmV;pqVE)%H@oF;lOrE{Q4yRA(qdbwtC_H0cjUzxsj=ZQDWcg3U68@dJswn(t zXi4Cu)uwX(?QgQNNT6(S;ygo)?d6lmbq5%5bEdXOKNX3hsq=L22n0q-T{NRV)%Dzv zxz5(TgTaDt`3SyzK>25_YnsHi3qQH zRbvM1Vfm>wT088%f_7MHP>ywflWxA0x&B0!d$p7jKiqclrFTtlB$aOkfJVAzpSau&HsGV4|{vFo8j5R~kq*i`HYiz{7&q{9D zNg^G$-ffy^0(RNn)7r2&%Kzh8#U*81CJ!otO~4@2^N8ejo3;DIZMS2c zT1HioP9;S?xs#09KcO2DXC~M`xv=gm;bg?Y5ixL?q?jO<7-x*$zo08NHm^F?Jm2X? z%!Bj5JVt6;WV4V}fof+}-?y5As`BnD9O9Avl>AW#2X5}{MWG=uDQYQ4*(jHMv?$nrk{ zGY(GVO9Qh6eOOc7H#HjKn<@BIz^GYpo zeTuO1LZ^4ewE3({^Q4o-k{#+lF*$*q^qSz&f)|vd8bb8uZ4O2}VjzJiWFS{Z7BnKZ zLwdvcb}PDUIM}$7K?%}EX~e;I48%)vgcz#{PR~{4WrOi(BW{2qOg+VcYdrkIP4_nD ze~w|>J6-?i8PUzY%hJI;U9}E z*0;>4T@X_)smYJTNLxfj%MY+ctGO}?YHAIi@VhuIB;KNsn_Igu<2GqO+VyTQ$3~1C zgMVtBZ8{pDYV{Ms6lgh`d3ubyKt>>euaqw&aomz{1yP?MNU#=v6a14;h6Z7-RiC}c z{^v%e(W7tUgh&X_s{dC4!}~kasPuO2p5#|jhGW{7u0&+h(hxLy-Wr}dVv&)l{A(QT`uu$V^0B~F(d4%rP|&-)M)^Ggbys; ze|Y1>!iuW*OWMol_cj(Be7^D9{1)s!&?{Ue$+NF8rQ`ORb}78^AsPYp+KmIW<=75V3L* zYg!bdL0EP?QaOWocm9f~Q38HbC>x=d;5&GF`>WWJ76~x3H(0Zy?dhQ+zSS*ok$Bz%CKmc`sqeK5t+2wB8tNv#h z@+N5h(Aq@)O;kIWs3)|Q9`@2xzkH=u(iKRW-AqJ5$s46yzexT?&hhrL6UruBq&NtKCCD>qYB@LxU)(H-VDjfO-rYLDV&;=(K5A zWg-d+zY_CA=Wb06r3QE?p2q>?U)@;V3$r%os*4f)$N1P*Wy^&qfP(@q6CJ=9x5$u> zxc0Xeluw-3kkS@{7y(vME{+5}%?6;TRB~6v17eGXV2WGkqyP`KKuoO;b9Vp2cM#XD z(4zo6Idrb)wi}n;9*ug))H`G*oh)r{9runO1=x;&;xZvGM7#I+#rWR&+>}$8MWjdv z`73^E;f{iPv#2Q(xaW&C}|U)!8C^?2E1KSGVWp&m#rdNDMUst z_8yi)RDs#xEkZ*dR;#{Oq)0;HrBt84HdqtaBn<_!Y5F0`B2=M z%-9+p+H$xDOv71_9&?Q)8{VX7p7uIEZKjal$8${sR^=%8WipcASn*7b04A_7`j00 z_Q-|WKKahA-l+}wxuH3W-#-!FJP&^^0NQ_IJv|4DSNJ6D#)^o;GIUW-@2ALaM1D5c zm{*}d8Ik$NCL++VqOYzAEjlQB#3Cexdj>v#J>885BZQyba_Ytk3=>cIot~`)0iC6K zkhcAJ7#I5*5(WtdQ@?EB&!X<|1Y;9@15s9toqfb52%-S82vW>Nev??j2K^G(%j~D1 zGPe}8)|1rXBkbRP88VT|p28>l0tg5~M8X7s;f9g8v#$u`gk0dlV5ohfSCr`j9b}U(_l%rw!ixn>Zviq^qj~I!`5jigt^vCM{X%>>_}Um1 zfykC}N5U^^281R!+|R5ky;f@8FxtF- zKEi=lXTQ1AgU2ESJ=0z>jgsjuYU~&H3p;)_>w1wBZ)^sieHJ3fti9B1GP@^O!t(4Z zZXhb2(0j-{{L6z0u_IJFNmyw6Q=4wLkfqXRT&E(M>{7j`0VV-p!lp~XE`#(>a2(2K(glxV)$39KWX&EIm{94eqI7<+nyvnl)S<6 z<7vM>`;}wKFm5-`;H!9$qiC#mZ~>LGU>)$9#{j(I!X_nh!{w`1i;@)n>Bfg)4Qysw zfi#gd7)=4xQK7V?k^;4cL+;oLR{*F~uTpF=*l5>iCn-aa2aKSoy2Y!g+71D8HT8l~ zUku(s#Qu#+NO`OdqhniOQk)nCZQqh^$mf_8_8@PpFWa(mq8KBk`e{CEjwXrWo=a zR`TUH1i;l^^_*A9C%!B2-1hr*|Cq!^1<9xCAee?smfK3@gro#evcy($?UD6xuQ@Oo zenbyxBFe0EJD>f9!omlXtF|z~2W9*F7R`vkM|akIpPB}gXSTbnHgod7wrT&ebN-rQ zB28x%O$sn1i>j~SbpdzaY2dcYyOu)RQRqKRR;!P?Q`ww8PjboCET8oOZm3+xY%p-w z29anng^NV1|BZU5R18p%lYnE-OY&zwcc!##rgY~ZXMkkQ^8?`{LRwOIpVE#Fh!m|Y zG|g7L2EGkkYx{ScI&Kl3u`RUxDV;t!<}sOSBXIG$y@R>b#%z9DF{4>&H=%Pn7(cpltAr zaaN?Uf;ou(;`8YFT;oFmk@;UvATMxIh zpYwgXsLJ1<2Q(xFR@asDBF6@l_G7z5*q>jZ<{P4IW~QxnQIZzka4omvVGb-a?fu z&tri9;O04M_&XYn&)MO%pE??;L{fz4Jt%wJ_>aG^x|ck?|JJT)#qOcVlb7ygTfZHs z92-$vy2YT1wU>b2#QcUsU1?-ii3Rt?n?g}o}ryy7BL7LC*a* z;)pa9!xO$SG<)XW^)LG*a-aWenpFfrHwHwDyVld(YX9v61Z|IVIaE4}^gI7NK=?&e=O{g>C$*qYX8lZ)$=E`>cqkpQ3!LMe;^Vt~=p+Fdff z#=}{L*~aU7-!Q&58eKWybl+vzyTQtNr>p&1%`sV^f4utX#*T!JCWs~}9{ErZ9?f;? zDmm+}?asjL}{pEJ}5W9;Z1|h3q+_p=SfvihL>G9`&{P$$NLJSP2ZpkDH zP8BwenoGnY3LJ24j2Znq61B15B@n^>VSDu!CP6K5T(yN}OA9ma0r_SIBC?3?1$jD3 znQ9i24N_j5TE#|BWj9H_?%47akZpvW=p3H|e1mHIN=SS9Wzyy2Ws+9~H7Xc5z-<(g zrvdlqhvpY)!sH2}WWcQj3^h`y(So4rmj*kFeHKdqrO}>K(glK;{tD`NLuZ)x=`Tj^ zAcHpM9p_I^Gox}>1qbw`_`ew(B(UULjCvK8X`xXN{P#SN?)GjW+7a%UydMX1B)d>O z`h2ybcoS4R8?@-hgX2o7c`$a}w)?Bt)*gU~{?bBYULTvEh*8|2zazl%%xRcEISV@; z*||LUDfTw&(e3OTM!0dUTsHz?Q-&q?;nHnie>^b^-wk}d5QML$VA z5vK#Ko9(s_ceNLM-D|t1 z{&wdXOK*B6p4w!*n5xh?M9}ZsA@R`aA==)W@%^tsy>WL$r0#CLo0nhi>}>$>l#6q6 zc>t;hoB@*sN%l)KlKqGAtdj3;9P|NtNd0YEQ*rhDYsZ`i^xmIyOQc5Uqi)hz9!X>X zebw}aGvq)UPrtbOQ=Xm!EAiM4{r${vgT)A7t255#X}(FYyTP@dRW!V-Xc)Uf$NN0@ z1ZDulkeK6yheZ&?gglTxzJBZ9AXIa*s2(<^WZJJIlM~Ji6`;LeVJ`;>*r;H$Clk$^ zy7qK(QF`-I;wX>hGP2{mCZ*-8&C)Jbs{g=CLC)+sP}FU+r9m;pt!Ld*V-1Mf06Hdv1JfiF zE5rGwEXlracF#fXWPEqSGZXmWy}**5gs4oM-89*gK3O38sO1ZfmQ%422^IBjlvFkBJ@RwZXIuVBPEdQxp5?~ zc&;bAT{iQLLbFhvgkK?L>(rjPAV6OaQ_nfwIHbJNEEn}_EYE!%Lj>?Ac{n;k#{QgP z##%5vjmrK88Fw9VlT3zn@(_>Z_V((~$`dQ0C#98&9kdqY;lGZiA<+ruLxZ2@VD~h0 z4*YR(K2@H<@MetD`~B;0RQFy}SK`&n zl?fO=KqN%iK|!r3DWB03(AD4BAdNf;e4yS(%l(3ODZILrFGu%O`Z9klhn95APHxQwDEmc_K9_y>`kVR^1CF&6ck7BwxFgm1ji#N^Ff7Yz0NCu=pv1@^h7Od)Tchn;B} zgBnc@TE(N?!+r+1_hH^_`LS0HfcQk#&^BklR6ReGLV8MYteApJi;pECpES^sVpR7|wGIPKGBl3jN7+A{_R3 zedipG^w#aR3i>?U3n>Y16llNMfNij!)GOncgeB$IC^R=cH>1B#KXB#~JIAYR_MgF{ zvZTD}zoef@@O@$CnpziM+FUQHl*zx7Lhxg0Y`FPt8;edi5N1lNFNf++XULeWC*Uw} zg~-%5(RSEHo+mk+_e86x(Rf7$3LXYNO%ddiWEFWpa_Y6&hO69=oL>dr5P_aOL({CY zlsxd>$UHg#k^s>FRB|%3GZDnAs#NUOH6LRnDO0e(9=8$L_XsbPOU#-)EqGHs*>DW{jeoK;aGAF@&~L83A2X(j5!{qz zSvS?}Zbi^%G!L;0GyOrwtjvasV$yOVxtL89=E-)ZkZ}c=F4pLuXY75T?)J*)2&4JF z)vhkyP+JJ2PMHI*r%rDNbYmfBlRXQ~o!wpY-=^7L@QuTsB!&7&{j}tJE$o{3ZyC$ybnf|UO?&y-~4xc!{`h16O5Y0zoAi#=vBWS{{Z zUoP={CLW7V19}qZ_K7vSt^A|NSz0^pKAx*fmz+7ma&mM8duanAv665CA9RBzm)3y! z&|DoP;LF|ZrD4L#OOx5ByP95QPWUubRz**qXW#oCYv9<6q(I#%Ejxr=yU@V43YNKu z57h%c1qj&K@)l|dE1#X{)@%0s7w)1B;L^LaSE`>kFhv)tL#}B6C0af9<)rcX6mthAN+AZ0%}#^BM|F zFu(S{=CzgkZQi+{%svA*P*m3N9~%t0bZi|EHC<%Zc`ysZIhjCN8cS%+s;WG|cj0+> z`qZBRvPqPtt>@E~!T5mjY~q1h6G>g8TI)mk=>N~Q3QDlEjd2O{^6wMckf5@(3}X<-9nqKF{kh!Mt zIDCPbe_LQ~_969fa8@k!q!7ZENa8kHJy40dd7{Pv;BgrD6ks=_~|wi3#%P5+DBY zjPH6eH>%DP=#3g8l20lE?1dm)ka7x9Q=gYx3)3b;0uyJmrgY=S+`_A_Ka5>tzOXB(V0i_p|#ufa%l@ zgl1BZbKqQhe;a^)cKCNM1ij3d!lgosPkMn7Snz*c=Zx*C;BY!&3CXn!!fD#n42L0% z)G`5^Md(4?qLVp)GK}HV_s;$S%x4A>wv{w*PMA^_(L;#sePTyA`X*i8 zmsI9xe1ZlOx#Vw8*Hb)*Y&(r>8KP<}E1a5{;8x6GprR2wy_-M1lU}nm;}xjy2pA56 znoE<71DnHOX(9%#`R+yrFcwSfLgAW|+Aj3(>uCxf_Utv3-FVpPnfaLR*Xkt!__gX1 zb%L?(GdTXUFnWzA$?BXxPw*LGGc$SolveA?8u0rbyvm^1c>L!z^WnBPqK(zGyGNV> zYskm5XJ+S2ngQ3E56kZ%7XvxBkr9vkKbC*p4jlRHi9(PpGB>Bb?*AZ&7ASvNP$Z= zO(hk%I(s%OId;GOv$)z3*0(EN%im&~mo4?|#ipgE*@As!KK%(3O*Ho+k3iib5PPvh z+$UtHhW=Gbk^jjKBIbB@g5?^~mhax$Rk4SYy8+(iz)bBF5QYG1u}@EPNo6|EDIXS9p3c%7&KZs36|Giou6_i6XtX7C(=r67qDL?b2<|2^YA~@{ z{x$c^5`|Z1v6Jh6{){ERS>i*jq}32uwvWH;@0^h>9jgJx@6*2jFT77@h#fPKDPGbN z`o>3SM4JjvUifSyNPN6qjgl$ll?Y~rN;1EyjhU=`FvHaJ1QZ><(%Fa2wa)j|N_%(^ zd;5bV`7Mt=--e}ep=5{m_3WDHvfGU%^*blOlb3lFhqd0F1vX%TCe)~p>;Zl=bq-vY z|1jne?|!83@QqN_4Y71pR>D6O0+07S^9Oqi*~5%oL@*`2E;&`V-^!wgFc6s##h3G= z!`o68pW@-8&Cs!uTU!AE`M7v=&Y`kScuwe6DoU!0Q2i+x)ss*<-}vXT37j>iPE=*q zc%8=haoogsQSHk&dqKDDrzaDBy*WQmi#i_evL07=WPX2KDwes)`yq9fAamJxYa|2l zib!QU={UKu&63SNS!EfTF*`{t60=_R+HsP(g1whc>?=IqAwT@6U^Bkgr{!SeT;d zvU23pNx|+a9U~&z(IOZ&6nTJwVtc8j5j`n zo==~XPFp)l&G-OLg#chCv5LUzsHJ{|vbf*iR@!kVX?6A#Wt;)vft3t%h@cE+Q~F zt`iXK#Bk}S8$UcjP5~gj9WfE$C*~5Y>tx#{72Xfq^im+&gLiULnJ1+<0gLL)77dMw znn?r1f1DWhK}wz2*1xMy#({zf;$jo^K@n|f-Zg>8-yGVlhMO$F1Frj`g9+ox>K??j zX-)|foLOGc*4&YR8+YW$;-VNP5tbEaiK6Z9IoKtp#f>-MY7W4;; ztH&WkZgDD-&uKHEj31%RaF4FPal}E~<&bJeqik~K*r)>`g^~+a&NVg3W|Eq|&@qF1 zEPyl}nfdy0DaTS?r?Xtqi@`+Fy7R?OK6s&XlCMEthTZGJTjEF1Ry(pBYxj0ICjhxA zeY>EU<4tNA(W)p{1Qsy}g) zM1H^hzQX~j<|9@KmMmACD7Wo67Bzintv+=3yL*;%G4{Aod(gGrKK~?3^%3weNYzOQ zPo(w?hrdEm#k|RcC)i<*{Awgj@ufMRe)X|ej1cnWgecAKy(&>Vp?~Xh!;g{J#<#jO z2e6a=wEH%L{mxikgg}7l2{8?T(k|xvC`hU%u>FXO!eRxtm#YD6-4wy!m z@mjR5dN=40A40J?Izi;I>~GXBnDd(6Tr6{5@u7c&<;fUX@u@6=EAtNg!NPX5K@MgD zllp-=NP@?tT=>WATE`(#ga2Ir1l*nmNP93>x?FXnq?epy-f;{);ZPX^jKb=+K_!&e+v81Va; z@A`io{ME;Xh@Z{_tbPZnG8WfyMvuE~bpEZ`;EvNW)+64B?BhJTiwR5rwfv*I>|%)B zz;fY^jnW}d(0M@mq+L-8nX_!o18NBMo0hU!T3)>wPS=@Vz3-36@iIdy?D`;GH)ro# z^3m+5Ami86%LHxT&pxe8Z1{gP{b*L``P-4n-@)`y3UH!4R5**&W%&9jX625gsmOe z;X*wD?tSYavT5pn_3NZb7Bw0{aSP~ z{mVkKG5Yi5S$YO^WfTFfKx<(gpxzq252+7b%Iq<#@MXq#Tu@UX=5;+T@IGepnv7<0 z4sr_1n?3q}Rp5Vk?HArTCc+K{npkJ97CI;{?}4hvhEkn}b6$U5_?lh+Q|(n&{e1Q2 zaP@KB){pb(Pxc*x?(CzLsTt3Ew6m1zpBKn@qAMVq&B?s2j3dhO==pQy_TNKh>n z^rIa~kbSv&nk>V_Z)9kEY23r7Q)&I6Q`>cC)aFy^j{^8nV zfDU1NEosS}k>30=6TQ2i`;y~A8uM{I-k*(K`i7hir|0(PWBck=<*HY=pg*$j@!`v= z-$?5{_1#Fvojk76{Wc>_=zGtz4A)J%n?Wo=(oW)<{JCH}nBLznC5=VExGcJ(Clfh& zYZEKy^Z(f^y)97h`*7$hg1myj(uf z^)92;mrQx3uNRQnMjRaXy%177VM`;5-`Lz~28W@zE*&H&a&R&*`(M28hkO+Sau)~z za=OTwVfw6_{lz?nJqD-{4CQpK`L$lWXBv?2^{)a@{cHYRs8w&G7T&ss@M1?XT#M2cc87D}w6UuA`J#Gv* z(N3C1(dOu%eJx|alYNFF*3v?cpW9Rrqxi6m(#$13<^aAy7;6n31#gNfvB(`=3zzBNhxkYTBfW{A}Gb45`-H4&%5e%Nm*&NtyChRhZ5lA zI`4DhRfwcEI8@DA`tM7kWExqr){CCi^9n!5^E=QwKw&qB6=b(ZbCrGR8k{uYNxm z{POLr@%!0Vv%6Kw<87G$Vbz?+<%4@HFx`o(+3omcM_6IUL%C$YMPEF!B%|R7f5?e=t>fi)JW&mZo`6{PhAi!7uXTPJ1bUxL2O(Ke`m+Hv$KGPUes&MZxh^JW6t&jM=qCkqipkrhVhu z;G4z#MKtYhfLd}O7PjETZdphAcM^C?W9hNW_BC-Q)!vI7173|~=LQghRA|?l3tP#t zh1!)b(z77vn)(JJWi*+Q7Q9iEOo;U(3&nYtQ|IuB;VW(6{rK1C&q6;DJ;a0sgb`H@rYl z-`#z>l>PqA2G9EC)&}RY<5d9e(SuMk^UOSqwDWb?Na{yk7H%ecRMgO>%@?NFgpWrj zxDl(457^q8Y2_nmGKuZGq|Co8)}Qm}adTt3GPT$yp%k;Ap)Ot|#k(!3ls#VDd~iwi z@`uN`Z+;G$(7vj&ftMuGU1A+Vb*m}NP+6;Ixogrwy&t2|rk&M+Qv|EtH#;Y1J~F59 z&ZgDd+skY-`$j*--5K>@%mVVvXCxS{%RCHeM9&(poY%d)o4Jy{VCkKtzlzubj%|K` z7kF3w*B9-<>?Si^hXiJ^uVm&`s>4x{Ob#ja5ie#RjDCi>!5qh8hO}h&NHN!1GROI( zXoR}iNrLj-Tl7tv>B9XUvySROT;rWI<5d*mWxHSofh>C3ukxnKcqN$^Ea$QMrXy9e z62I@cBvO1BHCi2b+zfBrtT#K}Xzn_ja`jt%)`d<=$E0J9vvs=p?-td$_U!U5b2K35 z2WH-qR$Eh6gAkv(QXXt7G5{QrEt*RAVbPE^IFo^_3{53Z?ARnX-5*7{Mm(XWQESo- zB+;=Jp;qm*GjaL6R;>$R{8%rp8Vu$qKE%UA{;BlZa)Cw@Ld^-n$2UdLE|b zG_5Q$1vcmIk|Ad1Tnm~fQh2`}V%g@NY<>a?SpZw$N)}O`lcEsD0h~>@Zy);%owqml z-v7I4xS0J6&p@0IaNjAskAuFryD==J8M;#ip!}>ewKs3+PZEU-=L(MRjR^x?AQcZI zAgG@V)&Xjra!pQ5$b&U6{mJz{&z zX_2P%8ydq2n(u&1(6+Qr*}C$*{UA?*Eoz00%aWuK=dyzrke z2}rUIo2y{^);^noEi)KIj`Y=be!>DiP zO#qV>s%3T?d(TtQutS1fGx*`%-+lhOK$|L1$K8VvU7eVhT^E&ZJMsEE{G}7;ze$&~ zWP>t^)A>jP&Np$!R;|@rW0tk&ysg;NAv+sOhQk4LhNH)w zrv=&f2#b}EC zG7EZ*^A#R*&j{emRD4qUVYXrQnfZ>S<&|veAicSxZ<`IaG^cRJYv>L)K3rQ;y@NR3 zDH8K?6N!1b4{Ngc!E zGd9JP&!gm5B|x2<@WE_=RHpEg`ph*Ed{&@ICCxvzIA#ow(>HBAlzef%{44=*T6F%! zjbPLK5Nc0D?!`B9x` zs+g_fL(EU`@q;z`yFT85p&y%ZT7Q55yNR=!uL}idX1gnMi&s76d?kBc>y!Lfs2Pmj z!HAXGoRd3AI@dr(q_(dQBOhA8UJ3pIjRCI~XqE}4o>>XIgh&JH@x)bHbH_6hqVphj zMw;W(&eQu>;u&)(0O|xCu2g<*DX|Fs~SH?zb~^O*wVi+bO_TJS17q#6ZG8sQKUs&Cr!?00E8IkD1%Pw zjfL_So5oyBbW~OXXq%XxMIBG#bp<=_ltsQ5`0NH8qU*aGGg=TK2#E2J(U>Wdj^ zk#ov6KuYdu=pP{sq{v7moAj?#rL=8j2+}vhmE>}C?Ev_lD+JVG8a7cr69yQXd2Z1W zZJT!;0P%BQiy3vxSN2IT+$ek9C_4A#xcK~3YiYgTRWC+Hc7jY`!HU86IVO5qY`tg7 zH+3JML?8|Kicwo$>NlwdIP4jToIr_T9p75_w>py8GpQ<3oUIc>I}$?eq`h*wGV8AW zlEy_2aaY~-{E)F#RPJ{_{#UktL#G4G41^w-BZ*T3b)K0V=pwK^M09C?F3ev$6ai$l z9v`6UbBMA54O+p?SK&ck2teU>a};*lV;4Ak*bJ^S6WihUnUFPH$fIsYa`+2ej-3FJ^-rg8arZbps9_yb5b`b5#kxxXQCkGYf`E-$Y7^=QxDKh(-ms z$&o~$#uD&<(3O(B-qC$heRhp97q9j;yMf%^x_(KDA~x-1MuW6S#K3#JB%Re1X|5@ z^7KBxubUKRr+g}Z_=Z7&3qqkgWWRLEy4XnJBZX3HiHUoy zXK+#PS&-sH0QL)AqNhI80Y($TlY6{+r>cTpQpHSIAfZ(3+)WFSJDRmppwI9f6=)@s z^Ylje@cJ-%w45p_*6oOOdVy|3G7?VGP`be9tQRlEpr#f$R>W4SY&x=fY58t>L$EcQ z5Gkhp80_`))M!A*p$3|d_9QIiu>mB#98NIcSs%28mKOpONU?9Z7=Tv|qv!e*Z=(;M zHW?1iKPSrQd}pnlQ1}jDjKqb4yn>AtA$zGe~F&0x0#-RG=;_lox^n%@yX{u9o7+5Dm)c98zeN0zY351 zj>XpgfxKK6Fq!gtmkkw6gVw)f%7A9-Xp!(n{ZZ{v_;e=nXyz*Q6~9ZR!yBI!fwu9J zZgQM=b%38)zqzU{Rxecu^hC?-84vg5hHSMn0F%^S25rm4QXI$(+$3GW%CAzV{D0TW zp!2U#1&4p>q8{{dpI%@2g!+t~{Yt;}z024t|1NV^PKr$Lx$8gc(w*O5LDo&4o~L7q z)T{3{)6ZutSFMtcz>D%hjmS^&ooA0<-hIecPt%R z17$vCM8Uru@xDGi0wJ$@N_xkxQX{)a(?YfWsISghDu2o;3nYDwD-wnM?1-27Hd$+4 zmf$QNv=euCF(u2p_8xM3PU zpfcjB2E`#^Jmdf)_qOj&J7+*PXdtshhNp=a@GCa>UgQD<5p1mUqK;naqd?6eU=>Qw zqjRuYz585HP;Y$D!|Pwgf^b&y!%T!2G+sl_5McD-W_WP1V z3ob3m%Wc1%rwwN`dGHKbgAmrV6dKH&l92`!?}Yj0Dxoo-Ix1dVU`J{EAaTytV*;`e zk0WvhEv-fT0HU`ng&h)FFyJs;@JwAn(b&JF)b|VV**PU+#^YR}LGS21F>EfzSuF2( zZQwATfqF4YUMKjnG>b!U<_W+0FK*ej7-Vg3(quU_KUU1nlsou!x@Jdqn;(W$`ph^O zKGAgvZ@$yMbDz5cZ!zBT>&XD=F`lWZ&TGNWl)#lEDQ$2JGim?>E1v5*r0i&zzslHZ zbPdYnzB{bO{FDnwo|Sqb(Gxj5>nf}M)h^1N60B5^_HaaX12u}}zGt!6;d9e@8tZBq z^)lPfEc177-zq_NS0W{8OA=B>w)*;tx9hA{Hnn}-XOnYN7lI01o+gLfymt`~L2Hlt z=3Q;14|Hz-z8buXI6_<83tOn>d&V;mrYnNQb_8fN$E$RtWble`tcJC7qoSKUwY5$j zQSPAHt1EsN`Bn(&3OalEPz}z!aG#?U+!CgG3h+H&DxUC^5QN;(ypLYc1(5@43|Z1e zMF$dk4ke&8O*`bi+q`5cg?xi}wSBfOATV9fBNhn?zt=G*73$q$s75GlTbf@QESCFR zyNbh6h5+vI^Eo0SA8@i=4*Sx#B3?{W0BFISJ=BWr#Q>?tc7zu|b~bPGn+dHd zn(h}&_gsDPYV6FUG}zaHGr7ar@EisiGmDi(^J{66!b*t-ek|f|(Jn1Cg)ow9m8!6o z(BggVNuFk}TXTTZ#&CCs#UuxiSV);K;yBS>aY@HIaW`NmaIIb;gUea4x&`lL0|~%b zAyzvF;L{m3aOi7tuv@xk*&r(#bb%Md?H7UOFoXSJJGkjWd2~_*UO?I#3WGQN=D?k& zso?9ej`K7Apd9V4yT#HgU{w)Hf&||A++M(s*anPOZnDD9c1rzp@&;uT@|;lN1AC4! z4@Y#EIXZaw;6g{dCLO0zIwWY?AhQuNl@*ZA;9cj7VO$-2Zu4Y@?v3{)vFjzl|Hzd( z=F?&3d$gQ*xHndqE8V*D-t-QgsY>P_7yrl>CS(~i(KXRjpo;{%xBu^-BN z4%X@4AA|s?e4-Hbix4TAO zrVDyEuM~>!-ryN0O^rV3DRZo*TOpRucpMS)-V$qgmTfS}MVYuM&wOKiA$tra<`euE z8PdL9qVb(YoDC_M6t2*{@ryh=;qUW8LlNR}?eLygia+uOhQBYQvzK5EajFekh#=k4)98^7DH&?}`fxbQ#h zs=xXm*CI#$80J36J*Kk**DwTA%-)i~Pv~EJX`^Du!bP|J#X|>;gfX&)7&Pq&I;ch> z{VLUDYWgbmZYf>$yz{Dy-xUY5*9>N6XJjmwQn!wIJoQJq`uZ#ti~^$vwSp1+6fB=_ zmdv_Ndsg%4?yj{k4M#|e_+a!u0Eqb+DSJ)YxvdRG9sBgX%YIqK`RNN)p(++Gb02%* zd%OgPr|UhcgY#}on)&~6ouqFKH$_b6<%iqnxyWHPEuT}$aeu|1@guhJzat}(@4i}V zcSrHZSA4~`$`yPsBE^JV+fpY17+Ker^^+?UnChq&Mdar?+rjMSf}OFpLJ?>#vWSq) zmNr028POQd`I&Yvy3ptF`?`XWYDsKjJGQL@**zPpMU|enEyD2Bf^rfi^y3Ma*E2$e zDt)EZ2NDWOI=QtjTtS8hjjXp4Bg35ev8uxf3i14Tp;bU2`!4 z{2^g6AKmUIcgo(4dQtq^CzN^!7=nbK@k1+}J%K{vx-z1}&+z+5ol}wMP+jk(yE$)#m~WVyF@Sh@rX+m>Y?9ZC z)d3NAZHh@{c6TU95-0zw?G^&1ycEVsc_%HWDior9WA)p(q_TbT$<8Xsv|~Te+ETpw zMeqPfR?HP&7RYu)o$bcH^)u*b>&uhA62IPQ?z{+K#t3y?p~MCvTRep<H7KGh20ciTJf9-%q*tqdS6^w{w)|o)1jWn5iP87XVlSxA z;4^^D%_T&eRH^a%MAihu?|@vUhS@V>-h-+xIu77?hPE=BC=VntP>XMmkL+=7Y>sum zi0j(}ifVv@UclzJlq)oL-Bvs>z3uw>ANtWIBEBZ|i2L1GYx7V>pc;*=1_*4oK?P+<*W?MF-aR>7W<`r9I?U$`zoa$DV-d!l?&CxU<=dh<$k!b)_-RZ z;M9b-N9Ox|bXWM|<2ptBw1AahokA7bK=g?CjDC*hjod+RJysF%wFZQql16laT~=yn z>8E|Lk?&9#Fhj1GpeR z=;Mfe1NHnckbFObF&rSsg4|7W{fe*gOj-%54=)pr{7>gPuKHZB8rNn`@5m)N^15Aa z)*!^jF;mNTQOw|#rw;;qpqSi{JLP9bRH}DUJDjelM^cdX!@kT>Fe!zF)e>N0$Q`~ha`{Y~}GlH4eIBT0+ z3B!!?-=vxc?{ppC$IPx`%x+g?&sWizvKV*(RY23bN_UjaYS?cy=UuVu;X)TG9z$e% zW7M^lj&6XQ)Pw&v-z{}r_}q4`-VogFn;nmVA86how;*>O;7R3@AC-6gTIgKxG2}KK zlLxu0$3j};5$j(ANw~yTIq7Qz zk*FI-S+k(?NGA{=4!(-pT($`?^=h|&l}K=3iN$Zfd(ZoY_(^JSIeIjAAS&2Irdbxz zj)Z$>Os_aaOfO}j>mb$LXGPt7BE0sJnxY1vD9$|i4E(dit=m_@Ox%y@FVvINo9~$y zK%v%S%Ye${2@M zI~9Ky-Tz!f8!Zsc*>S0n6I`%D_x;8^L$_eGqu=_6_2 zJ?eX_`Ph4il_Qlw`X!+%OWjr2x0*$NXa*&AUi{WKx~I~<&#c%x4jfFdc3}GkRVI%_ z5R__eJ(%~WQ^BhMk%pd(zf;@czng@d^~oY%emSKU0RK5c z{pK+bJZ0@V>AF?~?-5`QR&S&Db>Kee=~aQRfs~?TacGDSmJgVJuEoV^`zeO^eqqB2|#9_Yd_>m0&wXUvKT zIKgvdq+qio@YMw~hPo>iBhB87hE0NZ;I|uH*FmcRpeH9UgXWI#&q#yDrkZVw<7|ij zTs>h6q?+XY&1KT4A=dKV@^Db#`AIsAGRo(+P$fel{L?IVTzN+>Wy48wV{7PVnEq%~ zbWvlg4gP7zk%@E0^2y6WCCR=5Sv61ku<%a=Ob2=)s-Y)qCWO(5sA>e9F0X9^| zTz_ha_)*zchozxmbR#(KSX8@EKU`RMkzM@0r}(@G)*trZ+w#qO4yFM&QIrM+deC?7 zu|^~0`Xt?K$9!v~v)*MYksS+uAcRt}TM@rVwDGjG^%ot0)2)|kI$iNynD@mP4A$rw z`SE!z8-Tvx{)@n#!A9Y;UUs=pc@DlS)D*Da%Dw+UOX?D&G9>YGqG(%m2 zqcOSL&38?3F!w1rRXzonJsH!?fq6PsS|8|c2dy602_Ll61)bY2McuffyTG|!MmO@{ zLxO;uKCynY6rC%-0kbW1G6sb?DdxXbF#`DFF>qh={>>5?<$7zjijt10k28VI_}tln zLjZ;9nJY%xoQ=FNlxA6u9~3W?sK{wsVwe0kuM*pRX@GKQ82@b$iF#`45J&tHA_dRf za&$D_!eA4w2$JcgFJxoTyKZl;+Q3Yb!2{ zZ4POk&qGfJB%sjUP^tyrQRnF>ZXY_g4~!s|Cf>Nj!x=-`B}W=4Z)VgZ*Hs$0oCb~F zksoC&6bjRq46n>*l8QT)pUeX#9D8(W69_4|EpUTaQ zd>BMH{#7&dc{hx*n2#V;s_KgOv>lN;hMV&)|ePJ~%~$ zyhxd=?ICc%vb+8QvE{>8M_0Cj&55kV3>l;Nd02K=Mhwgt@BKD#EiRjpa-_rwv$nJZ zxBirYudk^}cGOkCr}O6tJ2S70Bp`7dlW&U!&QW~Qk0%f4HO|ZHxuYi~W?f7l&{iEN zSSmk`h-a9I`XOTD#V#9@$N@UK5y$9548Bul?mw@sj!g~}tk#E?IL~iA;6VN|0@60Q z4mgi0YFncbVeFYX?LdkxRNFm zx(lf3I#@+D{YZNLQqM|T3bQ+P`||oj26#L2j@Ub(lJ5a6zWIiNW%GqVSqP`KukNKZ z*MB|E!qr;jDnelzq2|YseIFiHP`woJ6L}bfknPwhq55Wr+qPc`x4m>YowZaohnr+ZYWY zKnRyt8j1p0WqUjCQ&|zrJ|{2TL*pGol9MATo5gY!3)2*sDCIh<`_g0hSA`5p&*^4s zAPyi}xKqTE?PHAaSkw+-jOalT>qNlI%Xcor?jH(&e#k2;4Ocr4SJxgLde zo!OIW{1Iu}_|RVnEx5+~Sv_B}1%0QRY6HIg+vYd9Q+fNZu`oXBckbK#Xv(g;vcbcH z1$z;}(=W?cPdrCPtc?pU&tUmfEm=Hj?+Dzz8e7%qi3e|sH6J!sR9(V*G=U99Pu#hz zbQ+f0Fx>Y6Qq5ueLiDQSaybdbl)^jT_l4K>WEim}y46WQsncFrH4|T;BYQGisWh|E z^oY^`1cf$CJCJimzB|8fY%-9|H}SY&<86RW^HC2hmE-^pP5D_KTAEwz@%P(Y!S8aq z2&0WNka+y?rZg9yhLMjfId`XD%d=@C3EaOGa|ypa`96^8SWfS>N|wjbY!3}T+f!=n z*e*iOP=hnRVqUXdesWUcI3>_x{wbkU8MfMj^lvbFm?4c*mC`c1c@x#O>>w6!O*=#N zs@3a&&F&20CKbJw)1q*aU|-ejyW?3u*#LbX9<8Swc+t{P|FD!hvYuGk28vB3K%YVW zCL{x4W&hQ!lGX$NqvO1>iK-^a5Xlxr?+?%f1-DmDp3%>&tGdZ$#3moLB*rsMESH@2 zn`7#|G>;OkkPLI0MN0#aLLwDEJHVP9kKkIOQnh-@ipGJwy)(b3A0Lvezf8%yb(j^=M8lb-QT0#au-dc_yT>@T_z zj!7O)9WdC3t+IkaUwO^;&Gu+Z++iadDVsMUh^erA6V^eK%BbEc389w(q9G=DUp>Bl zB14)+l?E(E39VRp@!`D+{>zF@!DK}foubkzaxsn+T~)EKQoQ3}9pwuqGJeB(NHy++ z1NO4L-J|GJv4qvhYvLRS5!J+z_KI0xyBm1e!f>>2{qnrMKpzT@>ot=#t^TW_+Sa5@ zu_*TRCHu*4vuPf~z&Oex;LTsqvm;6fL(ueDA&~E9h}dchS=i6u`!^%B*HQ@L+$HZw z{ALCU=T9xl^MuR6vG7z3X4LF*zpIkAblnt{jakL?t(Ko7QFn=uv(>wJjBbYL=6dbR z>}s&UO%SUTjdU)o-%ucauwM%m^5(cF-iEeE00`fCgbV(zy=lGI?C4uJA+3aU1>@V2 zc)a-;Z`jC4%Ep55$#+@O2=6G%Ugo>w`pJIl`(oF%e1-KDRRwbLmo=m-MZCwL24ZVQ zQ2kpwFZRq>cQ0MsS9cHIbZf!jyvW+a-|5Cw4F>S~p90NLUX={qj99bFZ(Jl1=?8~? z>_Tp=0n1fY)*RwCYi1_3Zof$Md?mcv;4qfd>nJGJtf9%_k>YeW3sE!7(~>t8Mk#fk z*IFLNT#%y&U>63dNDnXA^RP^q{*jwk?>y?mVq%F!*>b`4ed*wK|C{_0C>PT~sZkXn zCc1E$sZ!`K%e!#Z?dlPVz3J**0lSx(N4stR<@S| zMaKUeo9mf%ZLrIXaMn;e5lfU7ek_t*ykWWH=^Jfe=bv@!(3sHl_=nDfewoB)rax6x zGK&UeB1TDDgek^YM?~mv>zN{$g5=;KBhKtcK$m^{qEJ;dSHsgm3fBM zv#r&ZhcWq=B7>iehH4)kjxO!}a(%s+?UnOOLN>e=sn?YfSa{8eX>v(~D4Ue~;X&?} z?kRh^F#CLNv-+FZ1WO#NtU1Db;zzfxA^|Pm>g^D&FsS(W3?vDj1K&h~XMKRr_>2H^ zOnM7rmiUsJYG;5~e)A&_qFvuNBdBsEkz*jF=aTU>d}&S~qEmGeIuh0-EcdWkS?_c+ z*8ZGM;+Whogm=JmQlC5FH%kMgx|c#~El>w?|Bnh{`n=yx$~N2=vY+1Toi`p!H?W!M-TGji+7DjB5StXwM(Li+*F7iDVMv3l@s<8YB{eGbgiU>?&jXi79aY-oD)J7*w*}KV8_TP9u z&pG^IR2gbJF|89HEc48y<0N&Xly1?LMOGYV^x&)*>hEp#!{(=Gur#nRo_)6xa1KCn z=Lrh|!H@T&hF97Fqs{||0RGw*)n*};K7e1|F5mrCXV+WL|D+NjcX>quDV;j}x2Aq; zn@|5k4;Z|^3=ROxnyC(NDYwPz03GcWjxXh?qbNxjwj10jp-I-9%GXi4JBz$crT>j* zS&=M-3W&J%`zfzc&Zc=GE@Gu(SlD)#tp<`pS!>{zM4vNwy75LlZe@GBV%w7${-C>p zkh;6fZX-Lr0_QE`?S-p^Rqn5tjD$BJ4EdvRo#0Qt>Ag=w+>|a*Md6DY=av^Y+0g8o)ptXpbFt zGh>)f$0?gaI>w6(KfWn9BULxh>zsKu^InO>J-Q2_&gQzt zCyD{TdmhRQO%y+)7t6gTpIzp(Ph`IB61&L5QupxHf10-BOnD)pyf4Xk`z0sD=vZ*> z<**+t40X`K8(m~kJO=1L-g!}Os%by- ztYU+J@nhKIK#fRptn_-C+|8VhJ5F<|!10S|kMIU&tojE9$p77eW&eAi9PrVz#PLxw zGx)CG#_5CXD)_X|9$dp<6e|dX*n^)W=!z!ZH%tHNNV zV~WQ{!t&i#RlxjSC+|E^6}fy3Qh%!=B@nYI+^x%KQT3(9;E`3;bfV&@Rjlb9VW#4} zN8g?PjTX85)U?GKmKQ9{ZhWC!DBz)PkMb0=G>8U8U>*>O+5IR}@rKEYmgVhhi|cNX>1N8m{_`$v`hOOxNolvC0G*P(}=0h*^+!Tmm|*D z`&?1|df5JAjB&c^@ZE@OtYm^a{3D)l^qxmUsHp88b3TWMH4yExbuB;j@4i@EJ(D)vke7=N# zOtGo`HrG)TbKv|NjH3$?qPDvb%v&Uv?^}_0ESgSQ2T#S77#%;?XyXzdWn&0Fgj4D^ zFnAQ_6tlOu%j3;9Xs_5=ush*Wp zYp(@APCki&QL+uI!Yxp{0-w2y>e@|ARO4L1!$u~>3BdYamK!SCO6bQhki@d^)W&Pu zASpWIa}~|3U%bwcSbcl0$g@Vs66dGn!@c+s`xI5N<*CDj`c^rbXbV}h7Uj3$IR}2Q zy>(5Cde3!j(OPSj%O@YbM5faIk9%BDb`Wr@mal zonBHcWP+$;q~AeKZey5{<-w^z=mjAb{(vXezv_JOY`KNW-`F+CyOuf+BkR8mFDL;` zS_&-_+Y?oI|0+MrT;ZcDVo)5N`B(*m$&Wyx@!q3|@6sFi3;~ESG=ugA{r`v*&d}$T ziTI0*H1YbuR{`&^iJolx`ujv!>E&mkm~uQVjshMzu%s$9wj%0v8yZR%l`WPnJqlZn z0L;Z3Pd6~DT`0s-EO_+?LA>xvuHi>ETddn^Si%!}D75^+g1M)i$i{1-TkHcY8o`#< zEGP4TC8PesJPwh}dBYDlC+lSS3bM-x{4vQ7pKS-SlGV%yEV?63ROT zQ5|MeJNY8+?w$7%+0fmJOFfV#?s!YL;Z|%^_eX5|G>PeM*S-r6teg~9Gvo#-vspe}opW2O zU5~uYa|@crO1M2!DN|u}tft9!8{GfCF1P%+rBFS@$j&>di8_SGJbl5k%UF7Q`>hNT<*FBc1CpwLyKh_#40GsOL6NUQ z?zvRPg_K@AW1Wfmi?n#ZuXPlVlUGK&e?#b|KBWLYP#-x8r{XV^iKAq&86hBvNtDGY zRs6huwd_G;>w+aP-YX_O?;XbyvU-R^zR6|Yn*(*k9`!#z`%7u7K0%LP*zd5`Og^Zb z>jPex1xyNl{mxM=G4V7Q494l>v;EWJDutr&Fd9-WyD5xB_K-&Gb9e6o0Zuqsy8%f1 z)3i+Q8kPIXeEs8jX1bg9|FPrBGyp`w8ERCzx|3*%SId^v8uz2XH^`KfYYxo%re)Z3 z>c+^%+DcCo?2Db-!e zj~gyn(KJ+atSDp3o*uC`QsR`@$$}A1WNrCJ?TMDIjb_Ox%Y_7_Ap#e=IQ4CG+Z*F% zCr17AEQuLS)*%)7Vu*vk6kc>tL6 zFqlo@ge|{R(}y8{Sc;@R?t$inbTu1K@MXK2>u8kr=G$LAOUr9e=#O_MBd-d2-)hFt zxrsceziju9Ex2Ad<8c_F-270)QsWCO2rkVB*G9nY<2GL=GDKu8KnMyI0tclB4!fO z;=O6^0D#2(BWwT~<H0m6WQ~zg z<>o>gMBk*9c@5QQo@$~p?+QN|vC&J-RTSEZ3JKQlq&Mb<>ll1YVc*BOuFI8Fe*l`u zi{EXpJk9yaWB{t6fY8>kHP5i)2Y98-1@+VGGGcC)*zP1RX`J9%7_wncpZmUnL{{E@sbvw zC%C)hG8pq~x9qt{=OC|8!qg=c?K~b=me%sqiL^Z&%Pv28@Ev%V($LLFe>k%RE{XAGrcEc{N ztO2GE1OEQLB>TaCjge+H<_8=GyWw{mDJqQV7|ie2jJbbBq+Dt)Ua@w4gJiOkDUW~3 zIa*Di=N{@t2jebzY$wG)|DBIKx2%7MJ&3jb_3u|kllm&J1UzEX$P7tozKTtz7(I}b z%4o|9DcuXn9VjE8@MwE4XCa{Cv?744nL|v8^5t zWxjw~L=t#_$d82?YwBsd3Sh9FRKD#T66Ghq++5TdMb|R7oq27-e=D|MzzIpl6SwIo z$sUb+7EW%^gcu7@x#e)z(>1kV^U#btVhOls?egtNOe1(Wws|hu1pGzV9w7`ss_KJl z)?TS;I*)<5Rrl%8Yj@}{jl8b{Xv&n%*o1Msq6*o+VwV?2-b^`pnT~P+JX*7yRKCS9 zj%(Nj{`K>!X@=|9iD#^PtJy2P;ePz^ABE?jl}1J%;-~tA;V=BMh&>Vr3W^=7t2pTA zO(TQnjjlZ`Ga6fy2yQYj|I=pbXIo)7f+vkbcGlG7jVNGTOEh6W2}@NN=+heU^Wuwy zdRKsg79F+es_gc^^xs^!U#(+C#BPPuy9x(Xx3YYt-{?jAf|my!a6J0`rbMt8du{u) zpxA@5A9l)jX6=n+RG#Kqk>@&}XY|Ir>)G2Ox418~Zy&~oJ{7{&&-TrYRUVGAeT=>4 zV2WNvPTxb~ef2t>;^URfVuGx5dc6$x!jpY*a1V&t z2LAz)zdtV18*1{&VzM$(nxt6#@^MgJzpqmx#>QlJ>DSWLtae_oICVA}C{()I+Wd6Q zR-5yBK_QRrkV6h>_Zu<#U^_2syqi8<+o)CWl(z5rYk@kfgMhbk8@lh>Vcgv z+zmhnh2;t5$*@$X{;;J7b_Cl0C^FD#H;oXI@v1!w7%KpmtKR~|cgu$@g+{SnQhXZU zwkcrVAk-`v7LP?8DyvL4l`q*w$(P)`*oCT3sI1OvdRNX6^$PEJ z%o~)R>*fi}#@AmBH1r8mM;zH?KYsgbgLFI+^4FClByY@d`Q7JfR%ERzBz>BLOcqWb>umLxR~Ia) zh3ng$BGgn>2(1Ft#6>hQy7X`$Mo2X`0R1gd{gP9o%NqHt&rWVIhwf!vN9JH}f{uiC z^Li|`LC}mH-Z8Mn3tRSkjH{FvQKrHOb_yXM?eLuE-X)oMel?^T=iD-DADgqMzi4WW zrj1Q|+GNGI70aC>Sf95j_9sNCzWm#e;?Us70pqv1^?d}kUKi_gF79FreJ)oZitoBMJ_!QiDx;Ey-O4?u!4@9Ns?E<6Er0EGANlujy!%g|Hsu3-8Vl23G&HH@ zH?^|*o9hrcWQ0T@9y}Y!7%UAkT^RXr`@_-WP{u;GC}fM!rV`%D49Hhnum!M|Y2q!F z9Lc;W(1aaGa`ue2l1Xtjk<{E_d=7K}nzo<`mqWyY<2vX1=T^!mUNPaghJZff+axXP zEoU&=1WGRIe7xM*lW#s~gb``uAeC>Ql$?w7_e7nxzh8(r9?y%Ksd+}kwRnh7<6vRa zG*?B?MA11?FvGO7x_(-D8GztgtS8G|Pk*gM3T}^H51M{O3^&`}0o|mGnGD1#J!^7Y z?zA-)@JnH0>UJtI#%6yJo!ri`bww|g3Ad*tA-%w%C z$mEUofX+r#6-=K;N5}~(HJxe)&;*lce(PA+#1$`3sI<=NV=%0OFgZr z%ArH5u0jYT*SCR)-cQ!7vPuW9cOGEa2;S|eZd5t&PAtXIfv=yXG*t9)xswG0N|+>R zho~~?>PHddY~Q&DVET1_-!p;CPEQDh*U!qThx#9R#UHVY#{dw#TPjd0vB2KzV$tDD zf8R0hX12teyycYap@t<7R{HLTjy*B8++MiE^*C7g-p;At)KLQKO=hh z3Woa9;vUlkARFV~+wnmSTsO;p^LZPm7&~Lp#j?_7QrLy;5SP1czNxkQ`lY|=;Bj53 zhlokN-l0R4wj2TMUvp3bm&OSblL4vE?cR(BM12d37Go_cEiiA25iSgNmRo48Ydd$9 z?N`DXzccFZFH6M`poug!YTJ~b2sIhfhsEkuHKYa6Sr>zb;Z|wCABJ4OTkR#Itt;e) z3*mFe-GmGEiV700cXAh(4Z$#{^7Gc-Ck?GhQ(^LZS!k{Qb|Dsvi(;$eVjL?i^wH_= zjYvDN_OP<%z69s{2fXWYY|`^Lv3Qi_x$gFyH(Q5v;=^_jX>ZJUmmt$YRR90+%%1=6 zng8$a=O|eLud=SY4x1dN!;+^j4TrVnNflqYA6DTZ}OjIeo zAOES#D#5t>583x`EG`qy-j`nlZVm27%!=9yx$yE@Vdm3=KY#5fa-rh9N75a|blKK* zVDQT^wq7qo*_9tG{*?fiJ7Sv8E@$)HD&3Txsy43P+GELP!szglrtw>pCC7~4$+8FI znlkhs+>msxu3CQKvVQrvZ7`Qr)}^4SlKbCcKwI{O%h}cDKrEDSpkCwNmnED79u0Jb z_~DM1sq^%tZ@W+6D@GP&YuYW4>aDGBamLT( z>nb@jw6T(B{(*D^n+02jXyK^EdlSYjg~Wpa7GRxwU(P_96V_S)1RP;GFc^xlq04T5 zRVeTpJubQzbAjcs`7z=fEp~)NvOIBc&iKFQMmU03@BX5~O@A;w39{TH895fnyk4?u z*er7-Z-J+xhgHu`0&( z;I5H8Fi-um>;Bz_;&bwE6s0>?DuF_T6%`Bknq((>rRQ0-4{3U^+wrKn)8v?*iQM-% z2_dLp{S8j>Z?>Kfg~#;n%zJv>ahB<3s_rlFX-n5>op<(vv(L&rt-c@UBVO z!o3Z|)c!E8P#$|4IeU54u*rVhF9&b}f=Bg-{2wt7<~_HiNfU0b$10-;wTJnv@2q3O zxa`^$>sST>ypvXB|4+q0qbjF4|HhvI-igyakVow2B#lNfwfkk4zK!`Kl`NLHtadGU zneUl4lSkr>b{ zu(SwPHlxxa#l&ChB-KGN zSFH&dwsD^F1`qq31!4q-6m0i^!EoK0z0-UfK2M zy`m@NKsqml)gh(eCDkuQw~mHN(b;v~R`nXwb@diR*#~x@?92 z-kMmh$i6C6Q}rurc^|DQiss0RMR0;)FQS4WV#%DwA}(rtCNpS!^04A#N>;oS?8Vn{ z)k@JsDxb>$He^GJ%D#X*ecfKn+rCW7R-2xXB#@4endwN)zo z_&l@uD&C$qf*!SJLtB5sY7#Er-bzr|o~boGyV9#lg^_c}zVYyJ~PlB=tSupGYK8aQP15-;+f z;=M64Y1Aj3=-0}o-e#b2Q8zPTl>Gbpe{uKKUr}}8zl1c>Ac%l;%K(BjN_WGMN)Fu& zT}p?fbV+xYG)N;b5<|DZ(A^;1<9omNuKPFKA7;6n#oDLl?EO5S+C$l3pN}2B!~I*3 z52S`GP5qc&EfEm6NNmcvJvK3Xm(8#e240ETJ}29%)WPCT{9m*Jqoe)fpU|QsoUbA( zzDAIATe*co%I9BSpOZ33g`-oKEW!@CgVq}X;8v1%iAaK9?P5+7aZ6wfB@K&=bOvy* za(4cSc09;rG3|=Md4}UHb$`ZLK4k{}0&4{}2b&v2D;itH6p{4n8jXnu5rX9#wAI${ zKKHLTSk9Q>ES@V+za~bhZ7FiV_wFy59DeHIY@VJ!$IfHo)%ZGP>p~5CgZ$@WiJ!W> zL;U=@{qDr4{~<&s)}V&Z0}vsFQE#{>%Z?{SheQMzA|^$I?O1)bHjo<&1ddm@C= z^wZthTA!N$jjAqyu5J6+WKXgbC?-dm-mtzz9bK|0FP{sH6s^{h8^N^M>>IzA@_GU-p_e6i|x~}8wWf7H~ngr?h@1jFR@9AR$7;q_> zC-%ba3d*s%VU^jvRbR5SdKTxCIZg@E*A&AT zZ%$ux)r)LkUx}co6mLqD)jhVGi+}#;9x{VG~@#ZQ-?15d2qy!C(`f)=u zhq@FUwYHCImr4du?W&AZ6$F2o85(tD0*ST6Uo}gln4v4^pr~59In`TcY4XtkLswWi z{*!FWu+o*`3xR`#$>A%*loq-LvdmOHuLTvt1SyZPY%q5aE%O;{sB&UXEZQaiC4Oql z7ZbKEj#y_H(EqPc&1&jfL!fA=N38$;*cw$*<*MEExLd}t`JhQv=Ag2Q0LH)u0b0JS z0d*2_YwMT1k;-@3;4@-gU_FOxxAmUOYFjnuPAUY0vNZ^s%@FXy;xKyosm38A&AA`%~g9=eN@jM zXJ#c|J#w8lLXJ6CBJ5fi1@61VI#ecC^pmw&(qz;Qx9l#|<2~E;I2li^XrRnNDKC&x zT8)S{p8JIvnfg8syRC}%;+RGOfR+87RNWrF?Fl@v0N3^zE=?+9KkC~^4xTgh=*%oobp8+w=`$%b2GkzA|e z8;^T*HKhMFWqTvnF~W)=1;o+r#06A9Cn=A4wZ}#jHwNg@iX;-ke997;$*HRxK3k^@ z+3Ov47NZZjSLxkTN0(%1i#7+ikQWJ&3&30C2F<8imRFkxsYyg{ye{hv%L8c>3yc+g z)Q7KUY8hYetE7>xT%VK%#7;?F@wQdc(3p#{(w_KMhn)xN<<`kSg+>ziJ_|aITaQ*m zWIoy<4SK~4X7?N87~5$`XwTq<(&9cH*evK|lNKRL-ecm=_8HTl^(sBtC+@Vzh^6z+ z;OmWFx(%=yFI^rRQs)2gv>i7TWkSig={CuXUql7u_zKDTgL6}V*appCQR}%XGehni zDGTZas;cr>ARreN)Bvz8#%sh|q#;ffZqFs0pEYP8qI8hsX)4d`(9%4-;cJ3+$iJ={ z-F$m3(O{MZg&VMeu%)+`HVl_(r1aA76WFBgcG*V?MEzO9@kSD`{;J%S+v_^2k>{$6 zJUU_#QGM12)0pGk3Y?hSQ)t!Cnwvs3BNwtTz>BSr69Y{JERr~r4Z^ia`f+8(t%thu z5B|FkE|lmnLs>iI=wPN%1CgRpzPd-?KFAE0{RGf_CR85Rli^BRlFtB)txT%CqP1X7 z$~Ukc55?5Z?g8!&suS5@%Zm%$o|ad|tNwT}?qBi3XvVF9b*=s1|Ig{f|7cC9(gCtG zyU9aUUP%0Zc{(`*UVO8divw;vlcB#Non@JkbjjU*irZfla%DfU?dB3p(nQ|vP{Keu zsDJu7XQ`4H(^~FXaU?GzhaDG}Hj1YgQ`0Oq4#u#r=v`vm#n?p}optJ0915}_-(-qr zXsG{GL6{w{i6J^xLi^yf#r%cQ$)b0s7D=Y_fTEkJhV3M^oP918{B|I9qBqu+=Sd&! zZ`IKK;mJDX6`OeFcJyHTQZf{2uXs0|3N|`2z@q2_?Jo*{BarqmXfU23in&Q7IH(bm z9+qRpht;9;L0qmFSZ!Zg;Oa9lltrP(naiZ%c30+J_jOhj)kLu3{NbK0Pp3`6b~G#7 zCb|5+ihY%D8B@6C+sm})ise)Jzs zzLD~Ct9v5z&8r_eVC?NU<@PZaet!xx+4VFt5+y zS~ypGBSARSc%?N#z^j3XzRIOxB=Io;G1cBhB^O%4${SK>Kl^-?mm7&EdluweVnx?q zU6r62`mCy|NWTUQgdWDc^7uV_MqN>Xd#(e||9qbM3%^SCqI)j(=^a^_dY_`Mab&o4 zGV0ot;GfUyO*>}w?e|aIW7upypTf)^g5}Ry|+k|AlyyhS)MG0JVpQJ|qW1aj3xq_CXpg>UH$$h6?3IO-t9TcZb zkEw|a9uktqO&aZJ`CSL>&8@!En@MBC< zygm_2%#KDD@#*n%SKnp8)7G)s!)GpEE^u>bJ82xo+>6c=(N8yzT{k~Ei#d#GE&2Xd ze@)J6`Jc1V|LK`7owIF&iF12Ka?FLZ5SoA9iPZVT<^Od37wt{7;4v~fYmpuvQj4;O zvDheS?Wdb;R7pM&A&RXogRlALZ8XN`>9IjMiz2FRSuJ79)3^3N(l5Ez2D&nwp_g;A zr}eF^NkPE?%=%p}K|vUBFbV7m2t`u{T0%pBZ?ib}*8Od1^wWW5;7YySq@rp%L8PK; zfv0rKctF&X1+jJ*-gG(SH?iXH5b%UW+vG?;iA@DGqS4gZbN&xP}-jjX@CUqw{*{?d4WqB7ZV2n>El`MCP%ZX?-ORy?VP6rZAy=s_aVoh zj5_WQv57hYs!}@0RR(?=>_p!MT|H*6|50tnu5&f3yPj5AoMc~**7mgVX;0ms+avjD zOjVhWJV{+K&qgyr4E#LT>|MkT<$ifpgg5hgdm2_d7Mw?ZV!ij-F785o((fERy@s88 zOn9d{jE5&u-)Ka)#6YrjK!3?U%!u<(++QDJta0!DdU8G+f@;VheRTKfwtMf?^@QLL zz>gVhA!p}_UoZis*V-7b{0J7D$P%W>q+1foAIhVUrs3=`ctLFGKulWp^KH0B7*0@B z#WtK*miRIi&H;Zb6z>hO$P=)9Qnm@-QSZ4h!-bFmjsOy>QO{qVvRi^E$fM9wl@_F$ zj**V%NNiG@navltQyoS|e#tQQkDZ-GKIb+!6xK4#6{>0v1gB^2)H$B=+#{at^W~uD zApadA5d^1buax7MO|s3)EIHA79`#HvV99mNO5?NdE~26LHz8xVi|~)}d`NZLblKl> zNf3N9Lkn4Z$A>~(IZvweH!<4u!lg82IKNnWLEcj(qN*E`3W;PbyIhsP8jrGB)!bb*?<7o!tt4&d6OO9MFKIiIh; zui}laB2+V0Pwu6=flZPrpK)Jb3-}9z%1yvE*xuRx5ho22Xv!uBgnb4lr)WE2zYlcC z_53AA4yUYQ4d=0VZNjNpNU3|%88-x}<9_#1Uit)Q%Z;`J;Mv>-?|$ILr)p7SIy4%+ zknQ|2H%c=O!hG~1qmW*tbE|{pE@EAWzep$P5jsqS56G!&cBfw|^9LW!IC^ zKah}eOv)(44*P&D4b1)1(&^*mf80Yil$q%R&AuAGmb@mBxo#KwZ^VffvU&1^SVCOb z2cKN5Urdqq|1J+E4QNO<1c5BTyhsITKDnTs(d&6SnP1N#4RlklrGU;Lu~mMp0MF;& zp!vp%Sm?bL|DCAMN5&z!jA)9aj$SgZA8LI%1q3&X13{~eR<&+ItkA3WFTt}n?cfgy z_;~WM<}c{H%a=H`1#mT3>JadPH%t{52&U!vKy!hC;&woPn^n;S@6E)@0_w)Lu`<>jnN2I8Kkc69Ym?93vFV1aTI}WR zo*lZENWHs7gx%DylwUv;vNP)oDT&2WiJ`WUI!>bO!{=8>FVTvE}U%1RFK{C zy5a$?RvowCbf@T+S`p+M$8UyhT(VK?_}TC@Fq9d#SOOM0EW5wB%bs zi*JCSRH>@!Td*BVfmB^ug6P0gIxYJAsyZ>ojiXi4@-VKhh ze*zZ1?oyXeSXjO6v{cPE#Tad7Z1mmPU^Qg3dulDBI_DgfW(;$eks8c3`2P&Q#MUbM zI#Dwem%y^EB?#3s~d(A`$9?2ez~=5CjT z^Ae>?LoST%erEov9U0`1_Ny|6V>y=Wb`xWV_He2o(SgD7tm@nm&T~~fo|0cD_Ydu9 zHc@>ddpnbTh5zmch2 z_T0uQv%MoqdK%7XjH*9|N@;l-Toii(fm2_+3<@MGr{* zu{kyNiFf;!6Bhir;;f;6Czs~2Dc@$0cWTUn;m*JHd|y54=9=-tO8scdvo++a1w+&5 zahrLhpXLTrivxrC9Rz4b1+MGslSjv_u8W%De0?x(^6~jzyZk!h^K?;SR^2LMDm}qd z8aYX1h$ESv(TDLK%P;Y_6j^J={{R|OIbKaRITq4>ZR%*Os_8wpstusTFOjpx+CHhM zTHEW)K57F97q(KRkRK5Y7;THd)@_O+_W*86I=H)8%2+s0T#*RqY2N|*HP)okydU1J zG{kVgM*dIFMvCjH9Ab>xW~pO;KksSEj<+^+S3Dw(Mc0?;P7uFTIz=D zquIdwWTyl;V|UFpKD$DppnSUmY0_o-iMoXOY_NK5YdUt1jznbHBJ6urc9VH;GzUA4 zme%8R05Ii!Wo8Vq3bZzOj;~o$?0=w0^Qa9Mj7Pe=oqX}BlN!yCFKX7ZpSNtvFccC3 z3W+IsoMjtjNsa8wP?dcO1=V4hoF91aZGz-T&>vIBDI)Ygm$ayw$WZJn>-t;nF2WZ; zTh2#*y7_x^+H1W|*qIw?Kj-&NHt=zQ;&e{C=?1xJdT;N$g^Sz}sRtThA*eX7&T#XmAj&zbN%d-kjPRNrmGaWq9d&sj0??rcuL}2AV!=Z}A0y=M zBfsDYvzO@szb0+!@%YCh(*B0$xQ<~HTW3+ygvK$zR(--P&9R5BQFO9y1(LjNbc2Pq zY*xR9)W&!Y7AF<+)>!z_4Qx;1-3C(6Pp zkmx31*@C^&W`p!zDZ4}MGS5qU8p(4G9*>!x0YUD1AmP4B&xEeh^-nJW&{6Z7LWN99 z4RCKo1|H}v-L_Y*q*Q!nO4*S{+g}jAz(0Q?0`Ffosh>6p(|5x}IZIetQ94o{3OWKX`4Wk!~T_Ej$4~PqM-g+UJ&wJg( z?6OclZYXTm94)gLW+-w_W!b2QL5b)a_3wkVK!DX?{42hs6`(Q>hwla#I&g2Elb=Ur zPNexP0?$mZxC+U*x@r@d&78ykH76c4G|e}%Wp?94YozYz8~+){jv>mGD5hhgytUm| zCO~j=`;7Or=S1>+EIkn3U1f6v0@bkrjg4xzHk zB<8&*6i1|!GEEA-6T=0ply-F{)RyRL|WMlGRPlL6AcI(kbfH-);Q_tY+>nDIMFwViB*`qbFr54my6k zqvcNtEH=ATCJ|B8%blQGvAMVMc+wsqDCKs=U!)W0!5G+mLLv-!V(wcA{5s6`i1CPe zu3b(8a$RALJiZ9bnR^?uI?T;e?!T7qO%u2} zT(RhUt3sqNo(%w0w;Q+EoB*stwAvVAa|VDf_A()x_Ibdv1~Uh=xQwU=-|x>y8GzOA z>f!+4HVgkv<T z@)a83q^5J{BV#<*a{Smmp>&@kM{(T(dvgp^!Xc$Wzr^*x<|v`sn?8)2(&3(>nzH)-B-K# z*^DmrHesr;VGOi%btTvgU;y?E{HKG5Z;>NCfa!wlD?fd+R|8c557dHpR5)dK$0@YN z`uKDpz-!lapI)~|Jh2;dz_PTn#-Z|04!Ab_#*AUp@ZA9Rl=$L+BPKH++EmhGUfAkm z$h653UlWuCbAj(p)RV%#E&?cZvu zezwR!pX*)!GJAfMyC2uY;Hq}1yd05pUGTC>pX%$wB+GY3z}@S$H6TSEVY#pi2=T1} zVR)mIbf|`&5i7aOJ3{(Vxu^lsQdzu zp5)AD9U=xW!afEh!KUVbVIhdw$rmjE855 znSt%|ak)S_d9sYoZj|e5v@4c_cGL?q!jz&fD&Er*6p)vyr}cHPOBrlhG&R-?a|SJM zzj26LXd12EFR_BguC9eu-UC?Bu|LL&j9Ea7@*JzsF>yX;^7=>jskB1N1qTz6(3j`L zE*cU#13xTZa1GFX?tp4AvlVD|bBp!EM#N@Eg)}fHNQ)Kx{|$aO^>1uHQv-JxyOl`l z`V49Oo&%I;J4FVWvuAH_>c*F^zrqdCN}_zo8CJfn5IPgQUz)0@-%$H)9rHIF-RwjW%mKbakDUuo;g7{H#H)N9PDdDY+r?&35_{# z1jKzZAnM59PGI|I1m_LN>|t-g3@Z6CNn1Mp7iKhHrX9y*>fev^NAjmovx88sT551a z0RXjQYH`!`tf^H2q$#4&(E0^KPEMrRh($fE4!}=`yQiF?{TS0N9(c)XgYUL&$(t9a zQ@u==Sm2TuBPXR6xZm|PQYU{8U6o5jeJ zB*}6D5EuY5(HGTTYXx630h0yLUPQ%31Ml(3@1QxxqDJ+a{8KUL((i)f9 zU07>0Glca=R?Aejod2w)`1nVQ%$c0}I4ivYw<^mS7?V`1>MR#&lqtbhPuE4i$0}Io zRWG{}HTMnop1n-Y!VGsmV|SJ3M6;`ME#^btdwVT4+((VKC~xV>OVL5~D^2pJ#{*)V z2F_{C&-ZDb2Xg>4=R&V(yQtX^TwCkcp{PvtHy*Z7xc0O(5SJ3K1aXkwjd-g`4nVTa zb^z$angHydeSSe?CO5ZdbC&#E8Zgs`6MQYs!-kMB3;>nX8x$}Yiz!lTTvR5V6%ZZD zWuOCsVUpnwIOF&FMulY28O;I=BrXBenGH*Mkus8j0ErXXVBI~s$JWyqJ<=kJd{@h@ z1CHl^4jk>n&rPWwmTWVUBF(vfV*{o6zbpxHpHT1a*6$|KV+jyNMyy8%7DwzyDNy`Bry zZccIuV^8y(JDH8zb$WA$afj1Qw@3-{DgS&L_Hc3I`k%J$u`|~S$)*(xqhq(z1Xzk< z>7j+>e3|M6W4sF1fo%eS4%AJ0d{a%QaG9Hjo5^J%X#}+JGtEHDOviH!-TL3Uo2a^T z=%RdzLCiZS@iI8(zr(VjE}ri(F{^U4SbYDr756@mj$7)b#nL$-8IE)?gYpS}{wi91 zCF&_>T9y~|!V+}whpm8{-OXW@Tmk@xtOOlQG?K}Aolsn{`fQ`PfuuO#+lIG}q!DdC zz|{0l;k8!#p@B7+>-zmGXw-%ePykY5II=k$9?>eGw@@or3C=K!`(A|X-=n9_AzZQEMt_Et2{ zTK-Kt@4rlR&o==EnSo798}#HD#go2<=N~p=b>j(FDpP%6Vu!i&!|9~$(5k<_A)(CT z&i)l4si?!14Eq5#ZGA}F5W&4*Yj>oDDPBwGDoBMy5_hDjz&!`$q#+1+*W!`~{P1Pa zWHf+$p`=9{2m5z+Qp-LHVqm~9Ng)S%DX^&XkLP+&8ta~P#>xiZ6S)UMcAlSYq^`&F z#iDP8_3FPgk2mI2|32Ad9*=D#aDCm9Wd2vxK83t{i9)}pM%q^mrgk}5UT}OGIo$y zy4Ts$!fTQNmAyfVu}f|&tSSmoAZupCcru(5s&+BJnDb9O*wMA%4I~Wwo{nf3%0QxU zmHoQkBgt`-U?37dzRiXk+b)EHdeC@>xwu$VlriMn)CKk5R z3`5{aYXWkLt*ZDqb5|BiDD<2d9K7KKW#mju3}=&?wgsRvyhu75DEzp}Q3Y?3h!n88 z0NVfWd49o~St2XVQ)CXKXrzqAzAfhFp7FgnIBpYr z@T)EQg>-eH=Sv_Nn1z#X*~7G#QZMj4jWJujSe})t(OELWezk{TReM1C*(~w%L0{B-M5Cewl8lB^1#azI@wytN? zZ(u$G&ju3_iI=mN%)t(KbN_x>7w&lHQ#{u9${o<(1Hy=S>LS3_cvyOqmZ@~V?F5Co z=CuOey7n*0!+??kaQnPtE-#;b%lmh#6HwGFXI4~woEp7Qz280oA|EtpvHnttlAll& zXa3j{Dj;5=7^55ovA8191U_drkh>Vu6^=*tw2vD$LMqraRwzl>smK>?Q zjf@xtih5Hh-|8-wjDNz+g(@($`wVveA^Ybn*-~+i9g@jpA#(V7^|3cmd1ua6+Hq7= zu^(YbLQ?u6>#r9`hyK-{p3z512{TkF)oXS z2*$rD#7RpK(4@Q{kyo5zX$5NcQeC6lvoBv$C)9XjWJ?zF$UB~KcT$X(%S*gk5g~{y z49_y8niw&C1(%|BWn81VCko))m+cwFCiQwkh>PEq8^~DBN2XXkVI(}sJG+iuKn6>+ zR3hE5zGJ3nuBFM@Q7d=KqSbvp^?_kgnLVq2(VZ_iRb0W6A;eM{Ec6|JxqNm5+YTl}A^ zS)`THQ-l^=pmBoTJ2034jS@p}G73;ul>|NqXeR?EHYVw?xR}Mb^70bkGW7r(f2fTX zZHyp3JuchA_4mzgEW6jm0ApsLp_1M+1cJjsxqk(cuMs`? zG}()48|8bf!tV@^V#ea3!Y9sBOKIE1K}B z0^ur8t;U>mF`A!5(vRmwS4S;K;cvn1*djJM zV;TgE#zj$Bpa2Z3EgOEqwKkNRYiY4NB}|Q)-EKCkCsz{5tn0!RKYMe+{a{#WF3o-X z{SiB}Ce!ze-c)kCbU@)%q?)1>sn0Y^f-p~7L@H+osxxVnpSniF1KHs7rS7Ylu?@mL z_4ebQ@j3YvqJ+1yBIV`xb`h^|^E)&Cz2a9m44y+k5DXrHdn9wjy>u42sLVA9<%lR+ zA`p`Z!_@sMS6maoAsz@T)Yz9-dGu_0xcKM`9z_ z0LTnTw>fQS5k&q|n5P3gTr8~JA4W!0HhM;<2^tI|5C@j&GtUse3y<``&wxM`V9|wK z6UO$+mfgt1iw}$9maKpbxY^?3^87*vS@Gk?tjW7HQ8SEjz5bVUAP3d~v+`Jc+EsOIb?fQEi`Z?U(j_G=FtJ%*kIScLtxB(=)fwbmh@6aRLU$SM?v zH6NvT-Rw99IPVj7w0?<{$0-0>tnvR^EKOc&S+jQ?_v^N%0Qg}C6#lg zR*^codrs*(u)}AR0*wg?cfgr%Vv2-jN@^bzg&iPH-^_J5hL@4I5y);z6?r4Oq}a}# zT*)0BVNI6#rq5PxF*UzsrW$$Q$F|wK!G2Ln#?exIN^?wbx59WsshCNR=;+T|N9h>< zGa4CX$P&`_nG2caU=SgB#tv#ztM|3VmSJ7^NZd(=fi(x%v?a;D{uL`!syJ-Kg0B>5 zDl0DnHy((%C7#_X7pwMqSk2V1FJ%R9OjJ^ zW@X!mWi?B&!8Xhf5$u?s!!Sq@s$_`|!~FhU1A*Oty_}$h4CKq2M8FdMGgTN9g4q}= z)Og~VCNTA9hJN1~4a8em7dF8`@vghkmdp}CMi1hj5{>&W`05Zy-}MD5$B!|xs)~3v zs%Egs>bq+o4AZ7_dc%D+2p|z~uZ@K9%=~puC2_K6GuO5>qx0dfiY>_|R;!AKE_9oO zcqfu=lyG;+b-Ml8T=HWe%NAe9Ssi?4yntk%=FeJ9X?MuSZr*GH`CNFt?}Swx1);-dAIjXjsZ;TD>^}4P^mBUN#8NQpwg=YPeXm#; z3Q{NR8Ei-CyH_J+b$&_LgW1G%Wj>j%!tlL90#5S#P&1#7JhlZ;!T1XWKCcSW)=T#n zapYiEN7kOw)M@bo>9h7MnT}$6Cn!iOWXdF!B2A{x0Wq##YNv#hwIpAi!wGLQrSJW= zET7obJ;H2-UQB-lf%#)Y*Q{Y~O|VXkoVq=9pfFvh%G&_^TD*r#5pQ8vjN6JDv>(ow1r&$r;FPpA)-6YMVNhCD zs=s(6XyDDF*(hl9ka7wQH3FC^*ntI^5f=*}D{#AE{-18=pE@VazV^G^lJGLyVDR~K zp#{(*r!0Pm#9)w))Rzi$PknqvpRGrmYBYw9t9{5l+X=9AybO~#Pp6@@y|v6t0h_Ay z(ICfb(Gn)$)2bE{Y_9b5O%u?|)e};KgqXo#Hp@K>U=G7TJ)!5kOL{);&p+4&6hQw@ zgw#6it|umEHx?k~J2H&zfK{rTy;;>K*vR#hsTSdga|&zjuu08T{@RtD0nd}@Y#*l2 zr>p#~aM^IxnsWq~Nj(qs!eR~venPG^gzLm<7nd9nS$V$J4SeaIqiwPGOR8(TF+E>2(sqY z81v75Toqw{OkKw2w}Xkb`S~{gtM{`4;+?{$$Np4yy zXOY{3=blt5wRMZ6)EK~~xO|s}Y^b4Js&4vReS8$@ji0R4iy>>5&G*<6AuVMT@t_j9 z*>#69k`fJ(8@{i3-K>kuCdkh#SJ$q_mE84+Dr+p`C7^Qh5Qh~8Xz+``$tY1{yL+N5#pg=yN6SarCU z5SL1oMx7<|)V!3y;ik3QPbAN+h94@CNWw7cjb3O&z+td9P#GdW zn7z29WN6!qtrNeED3R@ur`<(M73@cA zag$EF20bmvkDo$HzRJQE?@Cv{LXH~b1)B@&lF-eg9oRi>!hQ+xI{V14 zR_NBtBXWs1{rrhlo#L|XFXoS+KkZqCa-WPo$W_Rwpy$GFyc$=*{wiJ757GOP zy*rLtpXl`HpW1)xUgmU)HbL86zVB#>N^BuOz5#A?7nz@fRLYXyvn&!$K4 zg@2S{wPsgSfP7B9vB7V;6|t<-)Mj)PupWcGlL^M}DU#riy}CWg-GIm*i1vVMd*6f# zR$twZz#gxYsDGWy1?;J3MoWoyh@PW~i`-K`gd+=hc^3`Obz*Fp0J%&H3f0y!@7o-q zA)Z<>Z0Ud=BpRq-iUC_#M`hlBK_TX5Fm`t}qPx)BrOqx(CuIXYotAu;P?Q>~qSfUd zPli2wia(;ouFY!GNOpm9K+ra7k_!G1k*`(uR_eI+jCnW-Ckm z!RuBj>yDx-mW)4_yug+cjg@g){SJ~@2dw^`@mWdLk1fbO#;JA9D|t>&J^{izADfDn zmA4OKor(0LPc{h%2)ZPFG*!gpB;C#p`ANE;$Ds9+_39dizM?}733#_bt%RAFI=mLq z(IG2>@+zyT2Wv~sKG2MhIeX~^zuuz*LcnZjR2N5{{Mik{r>KgAZO>Y&mqTwFhbWfa zHk?02uSpZwObt5bX0Hp1D7tb`hw>e>JCXt)X()6Vn$vpH&vkp~nse3`;Px02aG4Mr zuwh2>AcCRy;hk70?Aw<4&}~h{<;Jzvyu9~amu%nlANj@%%j53_Z)HL)bOapL5v1oP zq2s=LY(lU5R~W}_B1c`=&Az>TftV)MP%=_B$_-30fYdJQlx?mI>*RU1C(Pw~;k9eZMDGUDe{ce8zeP+Gn-mFG3? zD0%)$in#e>pFC$HH>b>3O-S z!t}_Wh=sX=rM;CuZrqz6U1Dc~G(7Lu67!0stwPseJ6;{v&L2XhAj438^e&NxMMB9h zv_!h}mti7Wo^IR8!bS;5-XtgM&zR6vw_i!f3o+ocLMA?X9Kyrf`|U)B=|~ob*XC7z zh$6MiO|NpQeU7@d%R05EwBGH z_CAv(0=N#o5*l{Py~wXY9A)wLg`cPXF0w^LCwv-jO}|cR&I3LVt#_Nu)pyx60Ygt$ z%B$yGowq86PkUXy$Fkz?TP>4BwK((pF1CLWU9cY$2A@ zYkzVCL2v)pR?w`6-D+UQ_Ym`Q+pnN>hXfvXrYuHO{>AGTwugXw1oU|psh#~JQ5;R zCM67oLtPSQ;gxrOTdE>Q!qpysdpuUwehuabU5|I2A7EsiKYa3@OAI(c@3|I7TyV4p)im=%7 z3s`@*^0zbK=4Md*D!I8UEAjB^+M8g!%jcH?56t4i3$N~NWSr%*R+Id>x)@F>@;5p) zS>|38NgzI?ImPWO$3ftBSog`jkz87WCZ&PAj-#3!E14snNAFB)OR2HLdu8%0sM>P-v=Tsbr2HwXmy+%+^YKs~!O40s7>Vw0pTL{hAlEd&-< zmtO2=w3I{8-&)Mcwv*(ZK; zE7gM#5&vjLsdw~m+*`*#&!}=Vh_ag~kp@Tzbi8NUJlyF)kBdO7PIOO!UR|BWr7msJ zv{Si!+tw4wrBh6u>b_F&co&wKVJgtGy@6lMs=_ga=_ z5V+%EH|{YG)3cP=965d_^s-Ghnip4gNZ74UWk~RM8LmA{A(dDKv-rhOFlc8FIH)zo zzk>oxLbCU?J;RcAvDDjY=)fnfvr4k2cM45pQdMpx%~dFybBcyI4u=Fi&6aa1k34q!(|74#<2bASh3EW0^X3PN;o+{;HT3;Ha zTX=SEu0u!uRUf}wc>CbLbB}Ejj?szjrHEt-b@HB29$K6TdTyLn!z#e-u6O<_6S3y& zAb!8geeW=Dc-|uV<#jyU#JE=o$4W}O~zU<{>}`M3FiE^ z6|4Zfv!hNriy6|Vj9k#njd&vcWmTV3_G5MCw67~AM{F$0o4WLp zfkeK9OiX?yPL&h21Pu6xGH%yhYAONSaak<*Hcu|zJt@rKjR8|fx>(1VXIe`j<8=jVi!qtYGJTEA}EU}MMS__mf2`@9MBN6}F zF}?VsgdO@~eAzzx?+Yt|L<`g6p=y+IW;^6w`d*6MqAHcQ;`BGu@Oj>XC|N&^M5@W` zRt@BhcgI?`2aZMYu^*k^=CQvM901fq-6zb+}tfxlUESbU%@Z* zO@!_(QyIn)>`<9Z3+assn&+pEl0C0@j^{ZD z3T>!~~kD z;|-{p18D;5f$Q=uai_mC3rpl@ZFwQe03i|Nwfy^;a7?%7!fB&Jv;JqGvo9Wz`#u%b zwHwKzj|qw>bXP^rLgv$jTFC)MDV4*N#DEn%j4Uiq^C#W8ZcjW90Q+SNyb&cGh~QI5j?_=eKDF z?%dg`e%R5bF+8s!4i_P72PplwPCTwmZA;5P?O3dijuZ`LP7r& z>TqkZuQ06pS85}XYU@Pn_{y0Ba+iXg@`v)9^l);aJ9DO9%m7Oat|PB>KQ55LIK3%S z4xH#j^}B3wl8eM&5S`qF_VxH&*B33!??SGH15vzj>|D$k{waSRWVDwn>r% zxBBKE8nOd25>Q8+RVu3aiM;IceO#8Ppld<&%8|z*Rt(&(NgvXi7WHVRWgk~;k9Cep znJ5Un0a5I9g^AS4+2PG(w%JI$yja?ovJbi0O7l^kZ2d;obT+6oei_ zbJzWgWyETC{g)`W)HVkbJfv7WivE2dW@FIgo6C4}cT)TI5vm19SZulMaCoPCWX)vF zh-i!RfC5ODUG0YBN)S=Opw8jIx;!+>QU^URs#qIY&q+_aMx7&=hL|VwIE9Z!k6cV$ z+q+Qx^VNPGQiPEvx}%;*r9+s)^7J16Yyw`*|ni;iU-(5Nt=->qLR$m;74DNkuT zn0Yz(_QQkD`7Eu#t{YbCaNAFo{MQf4U*hg>$@VzxR~rJKYTA9+PZeHf8kYHVULO6Q z4Ojajq0bloPubq*i&v3MY?whvx7V&Om&imvc`7c+j%vP@=AGP#QGOAd&>Gv-H(1j+ z*@=?~#p<)##XC+8Q#pvtaH12++1xEn{lIk+byvOOI-|3!=o} z9ij3^e@mC%jR3BYu(v6u)Ssut1-W$6GEImNWOUv!+n9~&u z8i(<07QSJJt!&fUO~kTJ@Kq9A=OsOic+Na9K&CYbWxqCPpa;ydq@oZNfSy`4|6DF9 zrPJ>VbPOWznwf`NB)gr`fclId0%!35V5c zynER?U$j+%vDV}Nm6?Nnt|ke3*Ixc9iazz{4F-Z0f}>12z28EQu{*e4rf8+zj4^k& z)ARj8=3wr|V*3ug_8aRI0VkKG?A)8lA!g0Xj~MM^<}ZZhBfLRIf-VWH?J_1(*4{H1 zT*Vl&6UN!<+ImTEOW*lpm>)URU>6FwhP;hK2?D3@6<^y#gP!H&m<&HxpSka_(ZGil zcv4QRAzU+<;11TdAB>fYpEBiKBo^!6Zwz0gpQ3XOglu5(!CImpCx4Lo77BXyQSx+Tn;$#Aon-L670!d zC*xdm`p={8_up3cR-h*Be&^wn$3)41bBTajy)HFpX)kz3Lj z-<6D2p9Or1O@RoJi}i%t40r$a?iI@Vmdc)cMfdwZ%|h#huwB>6_NVTY_N%W(m%m=F ztuogu@=|1R6dRGPypM`#lcw@VS8|; zxRb%1He2pvT|@JdxwihSz(@D(tcSLXjJDf;xSW?vXgf6i)^A;$;%*AszP{%BD3m%f zmF*pe>vx4aR{VH(nX|ATd?!o?%Yn_TWkG*=`C+>j791>JSj;%e36F`ogi8!@jCD>A zQvVbKAm!UKQ2{8xI5~MKOM)dtPY`SUO=<+7n)1P+F3^_rrUQR_RU8KbvwfS195+aL z>xUiv0|vJzc8%)hQt`~9G0!>~X?IBZzvAkGYo6yjm4Q4`ODXEUr}tCWQvo;12Dxx^ zg2*XyGM!c~c-|3{y$i5D(n3=x-#iZEaLNVQ2riXP_bk2m6LAW|i}>TBt#G4vx9h`7 zBsHh0f%_KDW8ZhPO+nt)V?WxIepI+8t*E)6`BoC$rt8 z@vps*3EorzrM^Wa%!KpXVfUYh;@`AVJjgsf6=~UtySI%EJ`M@2 zK3YEBBX&2uj3b<19%^PqxL*4|%{8C(4w}bbw_R-WdBB`mY0gDsd}<>C_cwj|Lj3n> z-Wli-k*{gL^6s@Yis6Luz@FE(w&j1#>0inkxAbf;rMx_!+}dKmykC|FD_Re({lkRD zI<3m1!D4tBP)f3B6HCjd)tIw&2Wqse`w=qsH*6BOc@h_w_22g~ho7wQbn0MSq7US(1V}qDQ5SOvGN_q*jIW6($ zTC?+VayOb{&dz-Xsj>0wlGdH`C1(6YlZ{Au{U?E;%{S>W>JvK_eW`<1ES zUBp@rmcPT~I6b&c4JyFu>l^fk?PbsVjlsi)J9BQKH?UnNh&_lMMzT>|Ku(@1S`xEt z9qK^_C@-7=D{P80InZCHuoJJBuzQvK)+t}|F55O}%X(!pbnf(NL;d_^V(JA$OvdN! zu5V#J@1^(C^!{m3(q&xxiv-TSlR2p4?l6tle=C!IBN4=z5)3|N^2BCDYNu*y!$Dj> ze%d>U%B%F9%19Vq`@P+qGeB*e9TZM*t*e~X0352ZwgfT}9om#CgWg<{_d@;HH?fzW zx&pCfndo4liUyLI1Dj$Dr_-8doidUvlBre>}S^~V6B51yr;iT^Of z8fDozm31ixWbFVKflJ^cshUv*9<2a6HNqk#%~o>ZA6KVn&`7vUC+vRqSEt_oYfeX3 zEDJXIU6RI$YAf2#B>;XStZt?B1n0CwDYA!)RPTv{Rdy+yW5 zmWi=TYp2Dk8cTl0$zRz-!P`Iz<+ZPtqJLWz;OQ<6KViC~Fe;y1NmU;g{9S!?@FXjg z-5h&;mfF^_xBCjif_?zNyS~`Ipx6>xt^x-c={f!$PFMVuX=qW|zhMPbMmziRNqW0* z`<_sQpADW1cJDk#>^tmj6cWa!iu9E3-r@m&dCUIef}S}=#T|e%bS}lqcbAcCkO#K* zd!?6s$nDAK3>3c|g8+{0R8508@MW~iyY*{JH|7rC-YwJGReeL@*>XmkiO)1{wgThk zH|8~MQ%kG*s#B&l@4-hG;YT*Zp7KGXhZXvPtv@f}(m7EHYZo?P8H*j%bwMN8!CYYD zoH#6{_`526yYGoQ%8qtd+Z}#o!DCH~Pjp0;(7n!BcXwrEl7DgEK20z0o1^ScG1*vB zkDaIU00w?s^Glr8@^vV?MB~1;M6IfLoppEZVqji~;>lNj*W6rDPFsHe?&qJt&eSHg zF-|pr_eh92SJw{j_^AgrM?UUlesnoNOTvqEJFxjWx?Zbf)p%oC1df$7|JVe~R}N=G z9aIPEkDVQyIhD*9h>hp;BUA-~_cV2X_hv2ox#K(*rbb-GP%=_Mtd3i0t?=VCm5f?6^mpn zK9ei8mv}s=%XyBt?twVJdqB?gPfycucI3b-wL52W-Z&+n7{R zQdb0L65SmbAv!M(R|#v%^Z9JSisUff43UXg`DU!i>$cSBzE|_{2{=jn6oo8tbLw?Z1CNY0(k*~;M!$zI^*6ZI#r z`O5qHQz+}12jR75vtk6w#`F{{^ZrL?_9YrNb;_p8EuCPc{$FM}EeT9j z+wOZ_T)nwgp+%uFdjl37fSmJjb*soHm#Q88@QWTjSfpxJ&;!G@2w$Q3x7}Ta%|RJg zG{?jT5+nu?XBmQxEDG)0#+unXI>c&G^|vK24?Z`j#Zhv(65L4wr>*p4UQJ>SmxdfWTWSbPjwAe z5OcLkcec~8k{5?@K786tie;?#`}P@x@O^}ZX1He;6`#=p`;C1pKh@fBCZ259)V?W- zD0oekK%q%#)xm*A$tgFILug}JRXXc)%;86Z-ByEYIJVntPm4V|ngigKMa<$d4y?ek z|G<19HFCG~sbMw^?8Qyzc6n-mUee^$g+zqY^v=~ZKFVb;#PchUU953b+|YP3R{Q%& zewDLfER*rSGeBC9+azVrA$9Q6nfZP72BA$XdN-BR)3fl2d~Id(iA{0;Ek%RI+>37& zlxw|HxyAOxcI`CC*8td8ANNGUU&H_qO{g3{QQE;)0>0y_YH4ZiZl#!>v5iwN#5)u5 zd&-A%c*z&}VqaWPVbZ35&(^*JnKJ~^v4aKHZnsah4FPa$CiA#VnAui&gzNos8nn_{ z*|LprIyURQzt*<9wt8|h4hs{2oxS+>Q%u|)YQrktFLJ1GCLBHv<@ogE!}0#Go1}*g z=7<6p9N#B^1b1WDIxgw`VJVdO+mHSiCiC#jQoErdfjzR+U#=szU%#H3JTAd?Mv1G{ z+cp11?$GF7N@gV=E~3W!-$uC$JdjhmBWB9yB^DF%%qL#_lNTdcL=@lSCTt|xD#`Pt zuAQt%xHPTFtvf7MDv@?nx$5#R3m8da-^0h<%Fv6YRkVK=n&$=lR5B=4_&TyDJ`hzh zX`XWeEb(y&#Dv){=2ge4Zy6~B#X$+JBgUB#G^X)HUw8(Ea$di(dhgs_nne(!q1rcL zjflRtm)ndE#eQ$+d&=9&;UX0lsZuab@x+1UNBnX3GU-8rwKpR5ya68RlgrQS9}z20 z-gB?Yz?oI>p}`K)S*hF9*88j@-pwXKG>mG*i#VI^61vD}e#F!mB!HTZ+c?c_+P8+3 zI=hgFRQvyUHtgTCPyatW3szmkAi)Ueh{i!|yU9v#&pCshwQ|t^)OLOFEoEVYDs7ST2iiUOIOy)2@ zV|F1ChaZQE+qeIOu0D7296W6o3t!;IJVMs}50(Y~D1;im zfZKoiSAGKm)3k5xzo3+Btjo_za}>gA+G`iSxA&n-m-0q)mj~&#K%(35HJ=m;Wh+mk z{d=UEwaRU#AEjn)4W~>sYlx5iw4TA+|l$~07qXKPAT&d zijSsXz~bHij>NpW;%bRb@_nIX3c#QrgKMQuh;Ucx*fBZfQu;<|Rs~+KhT5BAu*UmW zQiY}E3_-byQOwgLEEQmVF1lnd2>&jMIYj7~^VZ2pU=>@nx<%)-p*)X0GC;bj3hDHn ztpIJ<;T7FC)1QHBsA0k2fb1YQ-Hu@e4z22rBgj}eJ~AXb2_$&uu0gN6;UY|u<~$~y z;bsyPyiq?fLO(*2zLd{=c^Zpht%xaJ!`{TRlnN4n7gI8P@8E_1d_QEs}i!w!*NgRh*+1u7k8Q{truE;&x*d49H62ETM`8*F+@#bQ3> zH=Ffnw;m&U8r?Vh-xxnvdK_MEZHHKN{L|_-{bA)fBrk?rbX2I9gsR$WFmcT7H!Fv$ zR~C^q=v=OTFGf!+aFw3jq`p3{-8Q0(0$+qNAGzXcVZxvNB5V)H#Oz-D%>59{^RFJ| z&TBo5h{yhE!FPyNIrk&51Jd(JFvpSz2tl}mV|M|=0nB&)s)Z=bh4pNoj>d&zoR+4vas(bW{;n2UoiKVl1j z1l>53Lp{PA6P4J}N8H}>J}yFN5K!~cceUINOQjq-GY&}mciUR78h$t|HAQm72O(P| z^V^2eSGC#-xrP7(WO{WPKWUvj^RnzvRB>|GVfm@ zYSW>2@l~q4ACj=C)wI_Z6?j0dXTZP*WI*b!f5w~}bhYh|QOrcX@P=;cZiOHKJTYLw z&xEl;_$sNRX5!rrhSL8inW}^A8WMlNj(9Q7;f;Hc$Xcq*q1l5%jPk7c#OYQ@{6T_I z@D>EQQWkRF{fkPBoFkt}h}rXl`Dl!BM#(@AuUba_^LZB8LD-HHMs+hfOIm^~E0QKz zJX6qe&h5m_earTdu<^9}&n3lQ$6a1svbxm>ky0hIkD%`>Vy#6EbVM$}m`^LnV4pb(*v|W{Co$RhzjMEM z)xBHYe>)#c9n`rN-z}ai-Fl+5KX932tS{Q$kBQKGC%F4RVGq7r|KifC|7~Yy&Fl8@ zeAw9YoE}*6+SF*oDLjoB`|gduu4%&>nxA{-{O2$)+_~SGcTV+=dH03A-0%?!LaFUc z*!-_;JyV8y8#p?HUr-637$MCf>lT1ImNG4rdL4nIA5Wfq&_0OFJ=)8?-3dRv6d5R2DAdf|e(B>TE(~`cJ@$RK& zqAGB!!+*MB9aAa}xH6C~qVa>ml6a4BHvpfMY(KMmSC(pCX)n#{$Dkn-1Th$+Sl6Ht z{SoCxaC73qQPe69rk?;AUm;R*;X20beCoUsI?0kRcF0sxACMa z_BHejgLxuZNcD&DUj4CJvz0b_UFIh+)N=8VB%9$}<8i9ZEq=cRrk&uMl zQ!CFtn#0pu=NnwH`Apdojz8NL9GzGkHdZEB1Q;vz#3}O8^%_)P1^*4jDBjXEpb$rv zGvxdM8&+nt3?-EOuyEf{DBdS+$1V3%z~RwOqn?y#Kzm;DnN5B66;0GkIhNqQjtcSB zM@;hb!GlCIS`wt_Hn;+dSF3OFqIqPNg6S4-fH^U5*_YnLZy?aSZ0+4TO7x6h!8I2Y zPxQTaT=vilHGeqdc+%KI*4CwS{*689k2(L>7y(vNNBT$O2ZXb*UBa4zbp4a;nh9sd*~^*@2MR>hRMu=h2QK!(9SzTl%EEi@TBHc2VP(8an2Cs5 zW92z~j^}Us%#)ZKC8xh=1c(+jZHaB)1mcqZn{La^&t@B>4lyllH%5MEnMo1N&#{7C4-|Q+D zu8-+oo+Aryc;h?-%EZ^rRh=yl)VA`hOvqO>#rbb{ws(0qz4$=AMK&jtJ)Z9U9|EKW z58C}+d?}uLE)l1MFYnpl&WujHjN0DcN242^9maUa`^#|{r6tn0W4aL^ju~Ce6}&(w zgzKblACr_)ld))kZ6@^cUoW%T6^1^~+D^G9p{tIqZzJq`7Nhb>D%WVrUJ z>o3{{`)*s6hMV`RIUalMu-WF-%VPh1R6@bSC#c|yU;AAK@BPCz>FUMocKpxLTh^DU ztkY2}IK$^q9$u!eLj($R5n=oGm3^c$HIj5_71~hlc9=0i8AOf&V#X4DOfSK68}+Q| zZ0M=Jthy%r!E^ZGPwVEXCUE}-R1i5Ie^Rm)+;oFb^pBiPLQ{>@P<=Xgd3LFN2D~1H zsSfOmRwe!rCRdeYa87CYdo;?FCPjl%wfdwXW=Ltd&u2N+Lca%<^d=kMM25m7mH*5{ zMx-BwGHO)kwk}#?-{{blrI(b$PXJG7j?8z;36&S0HZ^4P{Rd$E&4Y6)&ColVHPl{} zheWn(nfuuP<|RX2Db@aEUE$q8RpQbt^sisd&kGN=AX3o9%R_XFbF_ zfIV|6GB+kq(ZKatf;#%f-*s*#PCJsv*6K8>kqzP*bjpzmHET&SnSPENq*-6qPS`e~JkB;O~Zp&)rWh z+9uT-*0guY3|F-;dI!UvXDQC8_*2e?`quM#{?QfrCcRS=q6xI>hd=az1-hnB$ z>++#9@q`@mRVN2L3IQ8gb^`b{r-i5P zf4+ZXQEGYsdgc8s`Fxk-7m$2pke5+`d!oY=&@EU1i4avJ7s)-=`QM>JllX8BT6l05 za1d_D5lW%PmYU0u^ZLwK1c;vFRC%S7nc8TkA-|;LKf2aw8taKT8%icru)FqVUoZ%_ z)lk0!omsfbJq7Px;@kW}&<13uV{P_c_XLvv>pgs~<{^NdYUIRV@2(|QngjH2&p$It z9)@6K9CfcVX(`j!Dbfa<3kSq(E!M?T~@A!=^O zyWK13pcE;tSZ0{i!XdpXd2v65neu2bC(#>^Kz1hQ)lp}_G;^?xE&;$MQJFZQNhNot zTq}IN)QA&(B{&TD`p#5VQle&JD|B=}R8emr#N;`YAAG+Z1`uJ`u$FKiXkn#DJnXFa z>1=5YNcgOnMi`g#_n}+aYvSvP;)ea!@ahwkS*IiVB5+RV83tW8=`^}ZzkF`3{_1fn zpECY~UI!cB||4zOp}AN3rnrw?n?FfUjLpO8=URHGnH? zzh@PJW#6`H!=k%})mK?opTD;gz38pNZpvZjSGNm!0c({{A<{xhT*A-$$}N`^s|Zvc zJU@}#>B~Qq#@3v5S(sHzS5E7#bJ66SrS8dAu>zZ+XaE-YZk;jecroPk! zMfS0Rm=(47QD`%Mj`phENqN%wNix<-s~=9G*hjd_dmFvNgCJgjhXuJNd7YuG*u)FX zG&>#0t>i@@DZO5{@fe^0A`!L7e~3doDVAl|A^j5VUA0kFJ|^V;UNiAe=5#T>I=D9Y zFK<&ZSeF(sMFUb2r)!;nrILT(58u6nF~vJ)B=>;S8)I@;ZKV5G;az0 zjGaP>mDi#gFW3a--8;u!e^4W4M{j;Sv#Rx%XTq#m^fvn0Y@g9@C6!C+oi^yk?3^(Q zU@YJC%(nfXT@%D()0%T<6=3ks7PS@~@nNP$HoX+1g(0I%pXHGDyG!WGB@!|agvLB2 z~J5ZK-%ZN3SWNLYtJT?bz*qupJUM~dil%PiyL8^)k5v+&*Nc3--~Ct zwv5JYB(|6ut{t~qA2_4#r*(6R?b)lV*3^=A+4`Hn+(S-UwRP+3K%*ygXOC2T4VMPE z(&T!RP!9f;`HpBCUMM-!Lb^b?%pZ0w40D&J|THXp^aK@-5GsYwz7^>9gQx5Ss)i028lxmqU zk%PL5Dvyu5fNQo+`+F&q`L~R}M%2@Qvk`KGA^Y*5Fw@kI-PzFh-{OvMbRa=fC?>07 zQ0wq1s@O9SgHkgwmgf0%=gjzZrF!-;md7jJU~Eb%`)&-`O&_o2yU|xIkBke0!`Ke( zp2-o|udt#4c;sw&ml2%UdPmEXAKq|i7lfht0-vH?j+L#G;+B`?IV2^e}69thQc4crazwDgdXtQRoL=i)LPTFgfn@A=lkm0*8y z4XwXV=DO@GMNJz7=ql!@iRtyve||J6ETBuhG5Lb!R1+Sj=r4GA|3No5B86m8>arI^ z(n2GPr$E?|sl8WKlERvsNi*SCUY2{qBmQXcD*ul+o*kiiGizwN{psJ1-Ihq0Tri#C zag4o;3BdSK$?B)~Aj^JoH& zXXLR=To>OQyBU$0$^%wLBvJ#J-Ik$)+JFPxUj0BBsO~s5Ws2(cG8kPo3}q=7Kkd>+ z=T%6dz5mewxaAEeUX}sgHK9}n^ATTVUQ)G0IRo*+5{QJBc0!g32cg5w=%aG1McO7A zPQ2NvCt_&gj*Xvqt_`d{p;~3a99BwwI>!ww;3dxg*0;xJ_E%i08ss&8(~q=nX60%@ zm)1xhy<*JaB}kOkPU9^UN`}|bg>DcbRkmKbxDH7|#3aFQ$ukLBX$^?{T~STQPbIiRhdDK7YNE|I&ry7jh0w z(s(jiY%@Pa9s^?wo3DwgQ#0gRj=RX}LlVG`)cFAKODRrNklpSN6}Sh4z^hgfw~1c1 zXF#;!I0S55BB#nZx2J7e~@GUj)~nc{y}Jq-SPRO;`x z(SA>{HkPyNGe&!A-{SV~>ri@KGMr@{7w-_orZIpSLHa=xaC7Zo>i~WOo#`Hg7jIw+g5O2TtKAIGQgf4%Gl5Z1bk6LD_Mud!>yRadEt--sYFdMIS( z7}aTo^&H`2uN`xj(T|L?x~Zj0FVQ;Ft@P#K$yCLR={SZ8m<4kNhgl)=5-*XSD(oeB*V}LjGhtMdUEq5iO?KYeW`X z(&{yIxm9P5sDPv{!}tGOy~gb_-u$+!XNENN>m2Ten;j>qs^5V3nE$)gq(^DjR5u@1 z?k+~|#Cwm>j3%}D+7BW?LjnYS>}BUg2eJ9)xBP{oOjDFcj=7o92ek{7`?xu0TwT0@ zw6CSh9}Xf*-Ll+wL;#Phf4BQH<(kj-L(_|=yP=WI+BFQ*`#EE6ll6?;xp>vXkHYS> zt`Ff6IQcT)5IJ%~a38Md$CmPu)Ns zuQecE<}BU5u=!r;ycW!#9~4ne4iYPX!+Znpv3XTBM0^6q&UE>~x^?z?Ay_JAo!9}w zgm);v0|X`s|F$V_Q$2DbRXTE>^a`C7G~gQ(N(gCHJs{;J-`N4CBGG2SW-{`)t{5C! zn6zL+6eFXTdqGYi1QJ$qP9`HIK-ApGnmzJBC%Szua^4J^j zeb;c>?H<>6BaV|-j!j!)^?Hao3{i~Uhy9{EWunDwSB*WRmzZYy!j%is{ShF5sB1|M z<%kV_8>#5>$d4atpUktf7f+V%Lzn!=DaK=a@O5D4KxWn_OB1#gaY1yP#Ws$H=$$ON zHp=}QhJy9DoLMXuNYy)%6@7Iw+5yLtyhHm}=&LUDg0A@RdP@WNn(Wp5DB)hFBf2ts zA1;zDMVlC`-%+!`N|}^~* zx%Kw>)LCn3;lQNK*zfQh+PYrIc5B#Sx!bsK2!5Of+;09_|g2+x2loGI|KLC zI&pnL4}2%HwpI0v>e>^dtws9Qgezxbo*^g`HWSh!@&DWt$eH&=73!Mx_R)!E;ifN~cA31D$ zt>u6Gkjnj~w-T7u{b-h$Z|L~RE)p1WH7@o(HatW4Jno&P2f1i*adUo;&;-zwX-=|F zhv{e4nsndTba{|iKWy&br-oSaECYrSo{I@iYNoAe%>&B=ImCH^iC~*QPFFoKHSWHV za)MQr9tJDF*=S>8DLjREawWf;_v=_UoHZ>%8l%=8Zl$cCz-hV(`s$v&SY6L937#qI zbB_XJns*3-*_rYaM#@hYH0j^2;T|J_xL>{~3)QmB!%31N|86GC1=l)bs7J+fPOo4; zYl&vCtC7?}*k}}5UV~PE2blIdo(D<;MR`)Z`|a^_LDdtW*KA&ku9$&ommf%24|*%L zr2e@Qo%ALwm2mkz$`0_-;B^Yp2%*hcG67)7uFYp9Z+49G-dW3=Dt6aODA+kB;{S-&hI~{j@D_7ZOU7$O>?t9|pM=GXIvZ z)JQIxV;Ul*RehiOTX)g`FE$oIo-jsR?SCVSeR9nMer&2r5e#{+# zPfaBkYTQI*9_X_z#!q8@QVP)8rDVTSFvvx)sbVdg9y(MOD#@lU&sMWkOeh!e==g6_ zN@@$rU^I==!sHD|o=(5e)Z138_~DTa)5*zn%1 z8hUY>pFe|i>I#|}0;rIa!TV}yAuJ*?CO|PB|5Hr$#OO>gek zTjs!#B7)gM?GJ&sUZwwPQ)Rrj8$T=A8A|rKsc6dKoHB&Azyz({?q6MkGHcUV>a}tE zaLu;rrULi*)-7GwJOg{iIb92@fIdka4wGv&EGr%;qi0Sv-v~s;;Hw&NXwuN(0E*$t zK!`}Gu#BR2Mk$i+FBQo=Hx9S+@vcg+B_Nl&jihG;jxvnHEB@!BRQ(S`_dD3iGr2~~ zXtVHKLj?uB>=MMZ{bDU>3$O*H{x$G-21r$!`BL!t>$GM)K_TLQ4YTN>Kp5?OAV;i2 zs2O>8UQC|&wjG`Dy=}Tad}mOwprDI0Enkeb4U^JS@Va|z&6Z5XDelrs{8&s?=89Cjq60YBoo<5WGewDch#+ji= z4X{VI15A?v93Sdsf^pxpUtNB9azK-IVeUUp(zOtCZ-p|rT-0WuuOAd`F9RhW8GO;kKw64I6-ahZx##I9%$*^Q z??o|@c|}<;rMic+I7}D+MfriVn)0scJmf)W*!q=F72M+zg3n5MB|)%dv?NgXPI3MN-E&ckytHh7`#O-crTn?Sb#cf>g}^ z&^Ey0x<30^n{m!Q!VTV*jfK(KaMZI7xP7Tf*UY5GL-;Dcm|ghQvT1V`*H|autp-FA zV!-r;cV=V$JK>1&$NQYhBCu|2X*nLg)IW|(6G54E`vRU`!9NNKu-a;+;7DeYiN*oZ z>0y}L!3WnoIs=x2FRBxhZ+HRpSOnGx0^E&yR35rHrA#v_$VYp)`yZ)E`ldB|RFft1 z@bE+9k=A7F@|+DzsqE*HRtTzuvZ{^qiana1odt1Ib{wfNI{WI(P(iPm_lw5qnDV1! zW#H_K*#xt?*i!MCv$b|HdKB*oIYTDU&Jb)mh8m2M^n zJ(GKiO6XhV;^m@)0}Ee9&)}zl!$wpVv=L{=g{p-KB3~4$EGnrmXSMpcEOJn6<>EX-|B_zqk4m(#o%wNl<>`epWMGxARd) zq==pnCnDrgZ35`bN=V!{QZAQ)F*$q9H+Qjd8=(5spAORfQ#*g=)wNNaBs6EVy7?;A zyptEygi``3 zrFgBHVD%Sp^HIqh&;t^UB)t3p_rtt_O=-EtX3zbnc-5f#HoSS}sqBx0Xx1ii5-A?h6 zEb4dc7=Vc=FE>(h-Y{xU7VmS|h?)-|tZ1!F&#<)o-xMY=7buG(L+QtWADuM#$H(poX5-l zIUI-l1|gAj1gI?8e3cJmH{nX!bPVaJX#GR5(zoU1m{w z3#&{}2OEZWE)EtBylMO)nO(|NYt5^Ka(JARcj%whh^(U6Nw`Zn^rBJZ8SEf@An|wR zze>wX%D&4nrWSG_sJwJ&{PlcoH;1j@RKve?RdgUacx}@W_lFFEC$#{vG)Wk`w^~a+ z{6FT==MHNY546;#!coLu4bj|6!_E1*)b4!b-Su2#V9(?Yuix_<-$-hSec2^8^{w`Y zk}Fms8WsOPDmuKx9`(JRNZcghLrt%WtdL3mp*epAh8rq7;BU>h>5=VZP9hF?Kqgoa zr!{W=2^XI+vrrU9A1a^B4Z}KlH(a8_$^$Ao4%g!rgnVEO2*S)rrTZp4nBJro>wry< z7?i73ALaGE^h_+!`BYb2a-g^CtZQLkuetb70PV5>fuQWN07X8r(uddw_S9naUR-Wq zOU(srj*^o^C5eHZDkggDi#8`VWsXFkj`ii{*-(9EkRh*tudRU9B9hEscVqBeeR{gl;K=S?#I=9jk> za~P*PTc65&!K*a9-F=Po;ELiE44~?f1?*V=sk-+J`bY>$(8H-gf3W^i19@C$>T+II!COP4Z_uGuMvP%~gP;K z{Pj2+$qiwToMd=oWF?9nkGu2}U5F>Yrl858HII085t!N<188mIk{QG6SI$&jzhK^T z>{Nv1ge6lAZpsMF@Gh7?b{uz4djAdK|CetqFa}NARC;}H#4=HNX+2DhjhaE9{@2jo zTj9<=?f7KYAaLOe!7>y6CydF4!w_{{UDs7v--{>exa4ms@;JKe8(+n_ zQP}^+Q){{-&JSS;N;$htKW1H`31KI2>y{Sq_b+g4W~w!jha4^s9}Gr~uME%DH8rMK)V>fvTq|X2z*MHC;D5e@ z_(gQ~EeN+STV0HJ7QW^2H1ISFaU(7yL{T94^9-Un9C6Bl&D*dYcTJVs4Fq<+bp{Es z!o@~2*rBE=p}cpyv~nj6<%TF_GH`Jvin8{Sm=qBjo-dTA}8j+A~LanpC7e6IPen5j$E|i zb)5kcO1YMh&#OBd?gXFXU1a83IAQe$u>+yxC7A+oPnFEPRkLk&P_gpy5#!Y${={Nx zlMNTpjynv72lOjM*cESpj;fh<$6=zFBZZ5GDp7rdAlzMn3F+x+l9 z46e3EHS&mc&jN27V^uoNapM!}P38?{bp(lJ+G!wYF*?@gAWK+6pX*$9R$~M@rcz1f zNEhx?e7ve@xPte<7=zD#eiBXZL{>n=h7JZ!W9gPmo*WBCXlv%TSGHYSe)+XZKr$6i z13L4G`XBXOx~(206rZAh(wU!r0?Z$QyABDf=Bf%NnwrHKg>?o`!Q1-v5j3(2JlPmF zGB}nqsS4H*rjSTVH$r+2R`gtm_p=%z2$~c^D6403WX14%CaPHdRrth2L5Y7Dkrjl= zTr?7BSu|O`-aP;Xh`~1;0G<$J+xLa>x|35$Q>peYK$J6N^Uc}XeY94(SxCZbQ61l5r zd2pk!3&@)z`gpgE;C?DK1Me!5HvLk23w}%0`R;f*TO0(}a=Vv+O?&j)T+2lrGoTne z9j3LA&th{Joys0K{e@?ODC`N{IIRQ6RX9!7*{1kIvP2Uc|6=2tw@7dZ69DpRmHe?6 zBmoYOU)+pvpg#YIp;zi^fodA87_%brg$&5aAwBjw*~%hZw1lrt9bZ0g{imBlP!Rlj zt8`AZ3Mb>J$v40~q(rd2iL z{<{K1yA6B!5-!&at}aX9kOAg5D~JjB3lCd^ju?rk%&O3YG`oI9P38y}c=uXoQnKhT z6F-FG?QkV;epdl8sNU6JwUplW4+kB@H?Bp;CxN+4c84+2aQPlA9?i884txznf*VF> zfj{b7do6oH>@%9r#uXhpyzH7oQuk zku82h;2*BIjZH2#_~vs=g*(0YrP*6vQgMQnStwG?ulQiVf`3bPX7=}(Mu3F89qWzkpZNJ!^>#;U+leCSX06G zHcF8miqz11F9r~#cR~kgh8F2nf(QXAQlyvAI|LAruJj^7r1u&S1p-KuCI|>3DC*h% ze*g1)-}7Cai}ReTbK!+y&)$1x&&*ouUF&^Ezt|8ED8sR5dp#lH29n*vtalTgu!1u| zK>Ac)oc(7|yUID6MV3&m$Us5}kbV%+X8sN6;Jr4(jcLQeAm!`t7t77Ev5$dVmqfywuPz=7%UJ~h@WG)t;V=^{lj4guqjo>uWD-R zkE!(A9okgRyWp=q0T0bC!~!?u#p42cbUS_1HWkWPKgZOm)^~k1KHhGxSx2cIMzb16uspu%Mg?^m9dlTDf;4_AM zJTd>Z7%2ID!=^lTe8YsYelDK)vuD~6iuzAc+lSZRX=L_o1Q|_^EV7CJ)Yj`}&_yE{ z_~|U?dtS3ZcWUZ@y@!QId$Oo}_@r`Xt;1fi-76%z{kf}n6LUs=|F@;DM$}xUN)WkV z8~jw-@NTL$$ehg6l4ud;91CheGf^8xQ}o#OlUCZyOqmlg>0U_)mNc? zKM~S6aA<|xCh}XG6C3}Ha(%kX?k>Q!;j~ zJm47;mz?ordKwdN--~E*I!f7ckrOl#9Vv)WrNc>WNIpH(=Z7o0nwng|?lF}giy3K% zwlb874blyeF)nGYW~;mpBfVy3pP?|vGd;qdS-DDgZzQ@R3uVc zqH*vAR|1;_-z2sKwSBf-j&p})ib@jiGBD6U>l=sE_#HWhTPW<$Y*@d?vAeu8Os$by$0)$ z^}<)g34zRBgN2kxEyqmHqqQ%zilEH=rEhU;FJXSpZT3a4?1G|D&&?yR{xfh{49<_~ z1<}SO4}hACUUvps&x1mMyqW1ysZ|%BazCUzf990|=;nWVzB=h#GfG~4z$^hBk-7JU zBm8&AcvADdq^wOe@OXFHKZf3uk)x|XS_^rct*wl;U$aZ-XuV6;{$8NtEq7i_pd*Ao z+;Q`6*yAMdne~s@(fxI#X1^k(T=824nt<$6T%}P67&29iN%E(uxc0$D`xb?5yHz)@)96Qe=$a%49Ivhq6qUcDZ`!u|$(tiFRq_JyFCg zaTNzAZ?IvEvM*d!`mQ9TACvVw#W2Hh^vk)cTrz$-XNtHfYuc5mW%}xP&afSwCxNc6AOrG>Vw2MyWJIup9UKB zD_aOkBRFDlf$lf2rzl#iJ%EAH1tJ;3&ctf?fz;R>t=Z{-%9IdLx&pGFj11K}d}NNnP*{o^YBo>8w; z_iQcjs}tcQi@XHK#~ND*R4-5d|G($|)A7W#m%?7tD$IROebXc^o$~s%KwI5M@=?ZU zJEwVa53p_{=p&Z&9b_(mbkC4N$^zU{z~55LGYmm{C;Oibo>)<3ua>;loJ(p0%02YD z*^OUrUuJ7n1$eCVoF8Z{R><(*NZwlTJN7v}`sl@GOiXotf0MfCAcSu@BtgNXHAepV zF!8vMqhb`ko6pMXZDM0xKkOQ`rx?Y6>e4Efer;~E6iFnkm)6}>!0OIR<|;i*#9w40SYx@r z2ql8Ot2fcDt7fs&^clzW(6(j9Jt@tqO{;?0zz!;P(RrUZUn$Sd!C1%wV{4mnQQ*n5 zQCGUE5^N|Qd8Z)v%v$;zU}Zn zYqf5W&am982vNjO<4Hcl7Lr~h>YnD>kZ2n*Gg3v{;XAPXDwi8=xN__}ovTOwsOgzmfB|w%MepfN2GqkMV%;J!(k2wt*d4wsL=1p5ZWOiI(sGJ~!6jZGT-tG+)epzo)c?f8<=f;bTh7wqb6 z=m4E22!?f4d{tN+;bV!efqfOt8rm48?>gg>B$dav!Iv9k<`oXgWcU*_bHCV+JY5S^ zGP5#Y$NC3Ud=VID6h}N7-P~PUTmPje3iaT%BidF|neZ#aPzfeUMZDOri(TwWYgp9T z22I&_5`N_Df`3N|*AR1MMBjwkQe&nd1UxE8A@|h?o0E?romY|emkaLzAV$JvKe=ya|-sN|Do{}0g14rHOzJOmlL1bo{&zzg`d^o(gms#8Z z^~TDOHvfmhv5QeX0REZkF>k}|kPZx;xN){#ff1Y?`?9hKQ*J>M6Ic?>80R%L+c>AL zo@+j=092{%Z>(EiU~5A>mEB4IDOUu9@mOH9448mli!)F>P}YqN6U@Dw0~qc z|MAdI2Tmp@9+|DKR9wlop*u_Jf7{W4bt@V~xp8$TO~a;;z%BwRP?DA!DCe z$oUh3w&#wk`K!nKQZCu2`|(+(z|yPENkn-W3lVTgX5T$-d8nVVa`pv?8{&mfWhxoB z2ama+z4HZ2y2oOlXjgK6qG8p45!>kx4tv{7TfW#=Kgy6Hmja!6`%}NRNZ*-QaGnm1 zRe5dbf_iZKG$A7(u|qF!Rc2bj=_qjSAkSxC0<<=rz2#l9lz6EWps@NrM?r^k$W$36 zXNw4sHsEKi5=1!k)7V`7Z$0@Zo;Hyzpzl&6lUA}!;ZTmCB}~3u7j##*VD>m!!1lFS zCxXx5nR{hZ#ytq?g9hhkYupX85>Z7)$p8>Bg)}RnhzM5b3ED?1sE?QV7cl46BRpZ zx9zJHC3jQlbpJKwpU#f$9+@t8UzST5f?_`Vsyu{6hV@}5#DEB5$WYH@w)$90vT(FH zpZcTJ#K5X`OFId~xH_d5KXC9v>&nXJ_^k5F`O@1)?}Z}+SrKaGp&3suy|;(P65>IS zF1CBTZYR(Rju6Kiw_tP^WIPy#OLt(NC|MRD$04z^aCX=RO zI$QJ2%@jgaOFmCj4rkn_(HmLuli-~XP;p!r-%=tmaW&l>1HZmt^Gw?}%r(uEL4(iP zP%O8bl=Yd`%-Z_JM0wQQahnC_>uX(@$~QJZREBS3br|9eM& zQ#lr&&x;HC9k1(}y42bzG(SixOIG4?tqnuV|a|e1d0qII1 zU9pNZyq_0-M-TuT{l~EV%b5LsHrtRW_EicK2T&JFRx(Ik(__C}0XzedB%tuz zwXqUn!+B(@0sp?5pJrm1H@ob{o;NPoObPj#Jwv2+&&xr2BH-ggqvWgxJoEXalUGZr zLezZA`N~JWwp$H%@?@HqNrZqQr4h>VW7R&cpM3h9sRae#|7+jh9{-HP@ ziTV3?&FH)}9+;Ak_^iyN82v-zM7~F=>j70ZcnUSp6RzPWlL^>`4%6hM+&MozKrlF< z>9Vc+xDZ9@FjEg?FR8)Vw|*HIHGTIOsw%4Ycc%N7$kbQ1k_QM>8xJNf_40s(jpd-1 zr)#+_3_!vFrTS==u9kzUhF1Wk{e2vpzZ{0K7D?Z8t~z_+zG)E*+YjLJCcEDQ{;3RuZezMR~3{%8lYwH=s zWr1T3tR1jg03bqCL-W0V4qDoi)E;RL)7Qea2(fSNyjjr96IE~qRPpxRp8m_`QV`1I z_G~l9a%$qlIs+0Ru4(TiKQ$*6_9&WcuN z2Rr$aLMm6ON=7z571IjZrx*(Th;@Ie=tH2I()KZta}{9CFA zk)qG}k6SC8nSk%Hxzj>{AfDfzP(W(}t7H634qfKD&(G4q|Iw%1#Zgi858a&(jub8Y zeKJ<=hNd%;-i|JpCq%jQEq=p^n|Gz!5}9wS;`Oo=+&{-V{mV_5#n&~!mOMubzd?59 zyQN>!KwpAS#;$LDx}hqT%}*C|CL$BegSSYf0|jyc`<7~zHPvrlufNan0%mcvYXw)X z{)(LBDiRpJ544}z%q7}^7!(jDyPhw{W%zF3w6VevG zxCn2rgINZ^0$`q=IhZ_qjxjE6!)Gs9PNe8GI2czJ^j#niTTmf7#h^DxAIGQPf30+>v@e+`1(w(l1$~?{38%#QzZ>cInY6mGU zrAmY!5$$H9<3}nx;eg6CuP1|9#`AK6c#=oA}%z$th~Dadmn*K9o3)e66c&ocQ6oM4puxUwcK|kEB?{3 zOVOxMcT)4tU4~7I6Vqqt-LiO;PCXO*CsI?2s&iWcK|m?Ou%C@3Z#{6@4(zj_siBb5 z?j**3C@E4>LDDvv#W%#FZG&dctK}d_N$NdL9Z-o8^hz|6{i^JoE2VsiYA`Ozd-YYu z;b=|{!vg1KrEh8fkt8ysnKYmZ{2$T&o`n_OocQy+K@}fIovADX{3yPn#<6S%8EliR zsE2HjJdoyfW(k9~i#tdfc7M#D?FYOP!$-Bp+Q!B|CiM39y^u1Pm6DywnTa;ZCFP{F z{t^~=N`sBGt?X8p>6eMp(jO)(&A*vLS+{1d&jZ5=PG&Eof4G0s+oC?qQ`$O?KQxv( zeX5EuPyTWBe!w~Wr*#W^9nsOz;)r*s0ld(9U1uqBbB#Or$R72SB`seZRf*bJB{(fD z?x&ij8^nN%Nx8g!|(Om9DPZW~wA-Lt#7q%p+Z zN^K}~lzU9zst7qIzI#p)H+AYQHe>ipI6BcC$=`_>b5Ues1v!6FvWS4qh`u8}uWvED zo>IP$@5almEnSOgEi{eru6owP)SJ&c`?Y6Y$K+vV=B<}a;Nvo!9KPIfQgM9J25W^8 zv4+ClR%g7!ib_KO7Ta^5BJDa4jU4bu9F_}Z@ZCEIH@o-P_~{9=37~-eRvgQoIsHf6 zaW`nl+fi0?MjY?&GV>7xa`s_(?y-nMo70U>33l;ogh9F)NY@rP!5LIxqPhT4`uC;0 znBlSbfjXS(XJX;9@38_C2gq-#ut>lgWkBfY;(p=?Jf zUlhfS({yJnt)VQD9o!{te0SYH@{`|e3Fg)qH}q(^9?m-*X^)JKRXVUw}@@9YUjyjnR#3? z0gZOf!uN%AtsIEp;e|5@PiO8*erFwO)l$ICjjPra zhunp7_&h7}%5#~icNYHnQiI;a#qkxsm@8;-?#uT1viQ}oiI^!5j`W3Ob7=c<&zM{n z1*;-&5p!TBu-F!QW2t6Oc@0!#gaC0#M0|SB1RGpNe5FDZOv){}`<9$+S^u|l9l2edI>iR85YwNi%y6 z{)-^MHzFNTR>U}&#FE^itN6hiZsi0FwQ7av_l=SPFdV_$*SZKo0b82^BJ|tPQp?I) zBD{ha2*2ggHQTC}Nx4(aEYZmPv#>?G+F3arSh7Q|vK%H!S1ES)tr_+Fe0S|NGkhEs zN=`_{4{(&?R4ej=w*Yn?vXa9m60?FUnjsC6SF_n!TD1t&k|_D!Vm}q9o({bDFtQwbmN~X4s(rfeXQk7TMNt-8$N-vI)#_BsLA5Hk&ZkX=gs%VWuUK` znM~YubKcfYX~R${CM9yezRWg;ecwk^gbxtv(ihCiXZAXtrAzY$_qDMOaK?iCmwz@yufVcgd|d>=rOAXj@h&9#_yLKUfNBx zuMSeep(D2+FC!Cg(Jtb(1Q5EYnWA#ni&D_a66{jbq$A!z|5|EO^vG3;)~gCJiJl(zP-HL<}(>LwJTVM??RXE2^ky5&WE;Uw2oG4R=H430c~CXS6kwE1gma> zIS9>+0|+V{B^AcfL!Vl#&29tFWiAnBrnf{@CONbqbo{nPA1W1dU+ch5Tb0CW7dTB? z>((M20AlX>P@}n03BtJVtkWB#MUd!)w~WD;y0z_k(6cc<1i3f<(PDtMUplIQE&A)-pZpt6t)w~fe;%6|WJ|S9DzrQ%zO_y7TqGD?yafPS1gX8Q3;eXY7KCFTDAR$4HX)B?{Vv}i$L{iiTQ~I* zu?+O$7hBm4uLi6Yd87@SN)XE^ex z3Nqy(K---E)fUXwf#Bjcmh^S=?lt}$6qKqkO%pNcrl$=&*Da{Z<-Ubvu1M5)2m5#; zXXqI+Zl^c+u#VFRHx2GU$|Iup7EQS8$?$p2OjMbif^`^+`g}%&&;~PxdEN$@4ezF# zp5}nWhIfnMRcm@xANUbz4RzUm!i*o zeOc}#ihpvuekXo^D!qO0dj6PsAx4bJp}0+d7gd|-w*MSkNhPU|YObi?bqT)P^!~z2 z^G--Yk88fg$DLqgzzuMUqe)V}zO(9W1gFuckMt4Th}K{T(B51Fjx5=+(Vh^CE5uqo z(1BfZQekO-A(2GX74@<4G_)o=lJ@rE?g?gR>HUPx+?0O@s;d`dahW=JWbifR)P>%o z=cR2p8-q;v(ZSyxw^y5C0{P;QbBCe9!$3a4VA3Jyju{AMg_gqeY><`LTpneP1Mx7; zW>&+ph8CC3zcXNp8ym}$KIoZj!=zcFtl8nyA7R)ycMF_8(V3jKyolGyA>fuR+5lzM z$CgyaI{h_1fRpAW-u~KxCe1v%qWrQUwE+ryUD?4f|M2q$k{)#kh24{ce?MQGS=eKB z;p{XRQwtt)5Qg?mc5|Qe71cWJtc2XkUoGF!(?v<>B#1kv+rQKUO=ac}3k-f;H~C8f zD|vGq;5|Uiz{7wCVOH!wIHoM)f_a;dt-~*!a>M)P1~08$WDLS#GxVoYZsRKB<29`* zV#jZOn`L@CvU3#mf$`HC7+F4xgbQVwairr>{w_}Pl|(dU@5x}u18~Ybo0$U5zHB*;Z#d*ET!mUEW6_*v7g|NY#JIvw5Uou!8q#{_|^GkY7@_(@>w_z5Mc z5CtP*ff`$;20&4l2RV1kdqIZ4+#P1ViW%7!KyI(x%$Z_vZ-*w4-1)FIp%>wJd?MK5 z@<_=5$@=#pU#$Xp5eIE|Pj}Gn7g4Jyvr;A(3Fq^!_VE|FL00GT;BtomMK`^;%`8)Q zR_m1~iuU%vH$0aQy15P6vn*u|3-SK#D^nWn80Rko{h|ZZXmAb?%eplKj;abtnd`fE zE_7~+=e{fu$buJ>kcXc5y0=-?6k~yp;Fu)|6pj! zErA{MG661*^^qK6j<(oks0)QtVN$EIcwd_SK=%hPbZ{|9fxK_OuIszr@Tn;=SAk^5 ztU=rlmKe0Otpm>2nKF%p&pg`9a|NCh{N?g`0%s0xIwu?_-kwZOQ(U-q&S8RGIu@gBU7gxUlGIZJax^AfB z^UTd2V(z^u#wFQRtHEvj@yzLs6KrMW-;w*KCK@)}YiVFg*!F=C9Y%*$;WS9C#YOrm6zO@;D{1jQ>;D*!&(@HiLWJp4;QtIHrN&HwcoX7H zbKEFlCVx@?rwRjuzbR$qB{6Lp7*0u+hLHtRJSc2hd^QTJ!yM@{vZQi{dHoTM-;DQj z#9)ey5=Xk&GUyKn+~((F5W{!Amkjg26R^HAC8-1ujF(R^BT8igk578!GI;#-VRX8` z8-+Kk&#TR|NSAT9(;xfu^AXN9HG zY@_Tm2(PxLoSzwY_C~D+aIi%_WY7%%HgrHgsB!U$#aCE&pp~Ugx=;rMb-4bk;9YBg zc9Gi^G{2)yNDTecQ?gq7;|u&LYoeE7)lTyuAIS>`f`o-4slk2yxJun}2g_b_)aOK0 z1C9IuE8tkKaxLGfDVIN3ly6*8Je}K13k0bmo#N;1UL|eX&7aU~4%Eu*F(^$1%V2C| zb*uaz#>T|vs;Dg~$_LBM=g|p2KSMPz5=gVd|NV|#WG>xEc3bkHcupa(Ks@AD`c>tu z@l5qq3u4coCTaJr*K(VP1)LBHW3&4<*KMUZvR~&ajWJ`T5FZk}2!Gr()74mcYP1WL(&0Xd4O<;95v0=6a71 zrkn@Ghp&el{Ym?TI787s5(l-CCAfD5&Yl^(D?MEN8eb|wKry1R)zwbllB;}66K9Ls z6j)_-)i$$^I_3WW%AO38edSM{T2|aWv%O#bD(N6eYq+%&U;;2#;5y>#8{Tf!0SDsj z-Y?-=AQQ)zrq-MHy4jgc;Eo$Pvdb?43;f7cM1wB4A~lpV1#3I(?q#qG2vWUb~2!M93JsFx;O0bqo8#b5Q z`ywQ%QT-lCTZut_;}1iju(`};y@facHt)FUo7yKQrYhF3U8myCv128R-@C@Jmps0| zXIVJzzxhRZ-9+5!^x&M0`TSXM6@K(nnFW{0&(9aU@Jr9;>Vn7ayqdhdZfVHMtGn{W zVkKEBy4tcl*V0`5HiNLb##zBU;h%?#sp=d>c0c)S-92zNEN&m@c#VBTOr-PLPZfy{ z!p2*fx74Z0h7y}U297V%^T;D&FqLiGl5byeK!Wn5js@2@Bbk3e6^eqLZV97mnfICX z_J>|L?RhG;za7(~Ew?M@M>C5Hsy+$S^{#K-5izID6dZH4LO69FO!&Lr`Sm>Snb3$(Pw zk-#vC9wDO?H^)RqJZOkxpz{+b_si02>Fb3>0bCt~>y$(e%G5qo4h-oq6?uss1>T-Tm9_ z-V2xVPB$rzVKTVGX=ljyQBv9v#hgG@B0m9>I-2%ZTT@`X&r)VQGgOI2)K{UFip0U* zeg|2H#bw7|UuPt%a*vm)?0va}5VHOrJ4H2Qe<bONQ1u5;Z>fD6cNoJ)wbhA7}gSca*x=+5$dk-Q|h&`qGXreRBH;)v&42wm@}W= zy99Rlc#g}rTbqYCw!9tVtiTg{>eNs13=s1YMYyYlhNP7lHO{9;I1fW2l|Q6}6B@{~ zvJH>{x|h2`Dy^jc=BMoF%<5&s1R6G~s!Yn7taWzECDk%9Cb7hx2sl?idy`)@U@f(1 zY5ihpEMAgCQ~~hDQYrv$vhO^j()hUVC0gVk0>t-e4NApO*q#NJan8mo^dG=k_jx7s zKYxJ2K0eg8bpZfS?Bc#xeeRnT=N2uHT~$# z36Z1WgwfLML%@1LL}u1zO+WUgE-e!Xd=P5&yr0cE{__Ek=~?Mpd%54-$C;F1%bITX zXm0sVXk1*zE!8k7;!@G@zP_5p!0IHUl7>b3W`BDFw{kW`zM0BfmQiJcV5g}_L1#!4 z`9pmoq_~+YnIO3S&L6|hyk!(WxyINhvT29mpg`rchK94O;DjisckKr-oLgL*0ayuM ziN{|b0nva|wA=36Zx&<>U5w!^EYx<6X$@R2Jw4qv{sFuSZI2jLHEf{E$)5<7X0SO^ z00~3ZhI^CbZ@Exai@P@po71K?{EX_dT8W%Y+CyObGE)sgmWE#-cHlk^Y8atgIah7; z8qEHB>)gLJE;MOdkS``77Z@PP=>=MH6L z-O^6kCc;>1_D8fCxi&>-HxLqF;_`K1N5!Wvg0>thnnl+Vle~~b($mpmdd?5_08orp z3PVo#5DRUHEyXf`w4@!~LdVw!aA=s+KT{d@ZPg**bM%)E=k2u3;VkV#xgPZ@vI9%$ zQBsFx^J4p=n5touwLgan%Pm7cZd**fr*$LT%^ctU!9zW+-qOZ&WQJ;p>Q!D@r^xTo z^_govxj>y(YVo#eb%1O0D;ub21tHxNcNhI{>n3t&6F`pFy>AgOFa)rCNhzXx8+jG| zBnO1zV`A2fz{#qWI@I92>1a*DtrL^fN0vL-2<2)*(}&U8&fy>H;A)y?Z~bhW-sC!>miwEyB zL^cR1vzN1yVDom%LQt{~)v(iF%x_>FrF{8*pS{@>ov(=WR-k)TbVH(51-))u5K)tj6Lhs-+0(j$(iLtDV@S_DG zKdIr}z^GSBU)B=&5F?i!Cz+^*ROZNBRA%o-nvv*qTkGMhr68xYhL=3vVoXvq3HDT- zD*}l-oDjJFLrT`azOO$5g_UX4dJH96FqX3@VQhqevhldc`W&Sxs`SDj^5XKmP#S5ijoE-yDp zXDT7^aLKn<$2(=01MThM+wnWuV|B{sGWjJloJEV8N2Yn{22p_4Ty*eJZcMS)<1RV%K<-f6Oe8TyWdX2h z>nn4;#4ZN5>SD|I@q0$|rt^j42|?1dOU^f3o$j&E`w6!*Om(Rtlg(aaj(8rzf%Y!@ zq0Rp14oGqHVc{u1p6>hJeSMjmC=GyFk{H`&$WNJB_FiWri$EUZY8rqEd6n9*Y6PJ(PNz8%7Nis+0>*Jt zPZ1b*DD3D(4G%Hr!*FBa9ND4H)?;jrPF7nCUGWOXgQWCI`No~sDcBs^OvZM4z;ESO zm2{|5PG$#|N60PpRGX-t2NuaROK4bf`Hn9#Ko?dgL~FC8>1XSCK&>LXnps+j;HZ0H zGQ!20>-pz)(zE3(%Rc6F)~Kq=++c{%$J)T)Zx0VHrahISYIQBpH?2%D+ijJp1ZspU zJWqpD*Ilskk*E~ZF?`gRbOFre>``=$CT{M_ZOi6z$K!gp}RpOG+SLuy$;fWd0YE9eo6?ZYnm(Hy%rcEyg% zHx}Nz?gzuQ`KHqf$)uMkoaLl}lwW6TCDxLD{)Ve)4loPiO=WINMikN%#HafrZGfvZ zXG~rF_wqw|0oL+r`JuipOVK@Vs8cAzaexEl#+M5^8dY#YviBwM?!pQf9!q)e_6=lB zs`cp)B3Z!d3zrph?E0VX_w=>cOSzgLM#a8=_@DPqzR8SGAz|1Vm^Usx_s1^uI>qPC z?NI8#*2pdcE%r=9w}UTm;!Q%_+^aIqrvN~DwzDA4RG&g^meOv|ikB~!7tUz)5wTNN z!fGO-v?Xm+0zV)9@i`L;WR!>x1HaD%kI5E|L>(zsIw?uA^gh~7;OTRLP{$eE8tF<_ z2zvTFprm7Z&KNO2Kse*`oklgK%o6G|u>%H@LEp`nR=(9@XL&mK3_O*ZSvgJqoJ0Xu z{Vt3)fjdAl@NMy*T(*+9jQHlKF+0xSrJ(a6VU<9DdAX?NX;4)n`^<`)=I?;W&wE3b z3*WTBOb}CRV47nF#y>o?nrBZD0V>$I$lVG>$-LFhWcL;i{$?ow8O0>J zME17!vx_%eYd$?B|M8b{ZRB6q^o(IG!I6@qz_$%uoF|##dHn!>1T0vQPj7u?7%D{X z8F!3xhqG)yNRs?SEm9YogtdI+hGZZPwp0W1#`MnPC1`c#Lt z$9yGi%@#B}aJU}!G5^tD`TQGMP58T#z5cFg=Tlrl?!$?*h2Dq9GtHqdbHi+EB;6A5 zTVThs%~yK!V?pzQO874w&m-|m75Sr|@^P~d-wFMi#POGNY)j8TR>N){kFXOE$fzIn z0G|XdxykNs)f%1$zTj1wMk3KHu*{8NF=|u zq{Ax{ZUA-mBG#M_5fP}b5EV|k?FMw2(U=|;ho@v18u0I`0mBjO;y_{)mL@XZvoW>d zr4TfKTn=L+X9{5)*Dv~REt zrUNsh=bdt4gNvhuz<}^v{^jAc9c-RfJT~cOM>;}$E~1XwFBiZLWiBOrXa5G3R#p`r zkp0=$c9gjLDwFA1AAwU5_l(3uws+swCVK(5q#?hG>X;Ed*q~EAJIrPaWSIGwZe-y% zpHhj-m&2f|N=O|{$_`KA2c)}cE|r}y&;_y*T4fcQl8qlJr-6D~fh z>oySB5POfa+@O!PeOelrSNfK#*~sr#C-V`if0zEser$J9+Z?uP%i{%(XS~WNxMuV2 z_m+_^jV6!l$-*|if`r(nG%(7`=P37=N3hzR`PSY(NsPd2EHX!&cqo#AQOwU$g94}71n`h8?LgorQ`<68jQ~l7 zQWTT3_GKF7E4O7>>eH|)!rZyoKx^}n?M_Dz(g?cn_|o~S1e>sn2eO;$nk?u++3j!n z8eD9t4IA7QERS3VM3DVEXxJwPcv#*;n93iUcXg~*;C;=Jl&rP8rP1=at&eu%+35lB zdGtVjuxzL^=3HLrF_=aMb2uAPKn4WC+K__sf_43PNJTw%G4=WO2~Vej=f4%P<7M2o zy(hNij{xEh4RPh4GHES|+%Jk(D(cgTwV##AVay;bK#c9jlX=~>k5!%6WeBGs<21V- zxIio) zE)UQvx7wH$D1AN%;a0So-AWIQ_a(lX;067-M^s8^vrz&V8GJ?#Nf#6 zgotF%KZrq}TK+0&($v=9E9(R6R0l7Aai@9Wnr_KUA1^N9NeOK3>pyVy!>tmxalHq9u0B6w73I^C_p~F50*I*eSFoZWlOxz=LC>ndsnk1iLOmQPq;qOfmBNASWb575)=znIu$6(4_8}4CO*enrVf!?*= z;}Pdqxb^JDL!g2~@yxA%|DLS|5GZUgQrUunE`DfU=$+AT_>M2sYJ3NRWaVCgPm|(5 z>FGkIxk{=l>_IKF`IVaasRYg|vLHeCsvZ_rwGlq_th#khWo+ME&1f~9U=eBN_abp_ z2cX1(p^mD;I?8tZF|UET{`bskb0X=tg=J_-Xh~r*@nf4wt6b?$f$|4k zU4I44Azcs>I3X6bZZC#VKKqn_{0tx3=ewi6AQOBt@nd5?KTFwpjD{UOpwhg0&X%9pQv_tX&L00hQC@(;d}_cV)>xFsOS3YH&9&kvgy;G_3hJd(+F4aNoI-6Y*Exikxe~?+(~=~{&(Uq z)|7^ZM^}n(Cy84a%t2_u^IV ztTN%zz9Aj-OIdX~#rwM06TVUrEOO|GnRY12`h^+EI<)+m9dE3gBX*oGuRyaQvT5za zkhbuL1L-1UF*fQ!HBdDJ8jp;scKI-~D@J|RiJmRS6{q+6`ldQ24 z*^}2DO(juci1PJfSyKKA@Sm3qj zT^)w5I(GntF03Dp17gAn&+z~EF7ZKP^!NVQCF91$Hx5EKiMK!fX_V5EFMQ2BD4;ig z>FNNe#D%JjIG0d4woAGr=YQY&@Y|tCKCYw#AvVJ`M^iO(*L(vik$!fvtRf0o&%?he1wn6UQT=yj{C>D zaRGj$n^cH?CneYruR?S=x)Pfc)ArmU+bFwrsiMBB9>4|xWhla5M1xt@#Z4>u>4C(L zcMHz-sc;@Du8PKpzP>GBxBH)VK+#ePA?w)?P-iu&8{`pgF(ZHdTn{>1W7w_;ELvJt z!dxKhW89_#yN^|RQ6S$4a6TA9zo+xl6BuyGr%1bbUMFSnO@Lggl0PZ&&3YJX_VM|4 z8T!y_&Zuz=(9GAib$7}|PkEFK%bMT?uMvwkPsbV2I(IGyYMVra@#;!vO=MWy6$bgn zAN}kavE?9`j?RelN1Tf_xm55J<9Y+4KUuyVd5U-<5q3znM7s+L0zhsReJggjHmf5P zSdaUB-y)MxN5UQQq52>LBL}5>N$3CO?&&AkIyhkXgD=q6+P)3E&DB%$^=%lW$&ksA zclZ|Lud1+z^O1M&~(t{z~Zk1cKO?fmDTts0RE z^KyPL+#J1qx<8R6NQ_3S=iya!I7muHA|zj1N^b0ZsZU>ElNF!msIVp){0nJR9Vw4c zj&U!XMB|r+jYJuab!dLOXq85M^!wpC7hPd$al6Cf$e1PCNLI37x%{-_0s%});2f|`EbuaP5iWQb-p#(G zzAO-yKa{%XQoW=6vHv7()jqNyP%LJsKl)5 z2!w(pw;o%q(=K?mB@&!6em9`s<>Fo6!m~$ay`9doJ`>)Iv`xI%7p7+Qj?H;|vQ_F9 zFcbRvmlON#eMjO!-Yu@HYuo#W7mqyUhfcZOSQIPJ$=-%&3LLQ)a0L2o@)(J#X;!{u z;KV7#s`_C2;K2y{@po3K#X>Q3an9t5K*or6Q4l0+=!Tx{Psd}Ok1Yq|68oSqKiYK% zUS8mLHhAo|4x19aL&0pk_h^m;=u@Ydkdhs>Jv zM~V0^+N}6l!5IpYJ9haDXMFA_TXK0IWc!ugR=#CuYk55%N>!DY+|U;^ANBr|_%bW; zCO{MCXOL%RvZ@{yupPN(1Ccdtwk}Bt*GmSm#Y4^ni)Lr0iXD;sdvn8W!H=d%q*dL) z@P0t2|7)>)qf4K(e98V0MP!qTV-pbX-=}w8N|*4oL#K=F4dkkUzh?1xgq- zbnFvC#G4GCKJDClcT}L%Z87>+gn#-+{vyIHX=`@h)eUu}XzAT@kanAI6R=p}-T=5b zK!_T*WCg-=ZU(D~CFC#%Ts(@5d)lheE57q2vSByubIMj&B}veUSY=c{wEOwK$n;CP zh?3meJj6m%=<}Jp4Ay&mai)^_KGM-?5szhm7x&XXsj7*=tpjn0AvmjEw&j9duF;Gi zfoce%VaAFmP>V~ZfBohWwL@Sc2hP0fP!zMsey$S%ak=w%hg(&dX0f=9vSh~jhZzod zD;Wcd`Z=LZNxa!$1`YsJ)aS<6ldEG?YRYatNMg?)!!pF&bq+K1Bmq#YR(cJ;f2EVl z36dBuS+1ch@}qFOjoiCS`lF7Bp)AH2D|SyAHU_Qs&s9yPK0C1Z#`!Y zwlC0Vd)_NLvim`Znuc&w0i2JXfHT-Mhn$0eCl})(4C{?xPiBATb{<9e$lj_&N z(GK!TWnY2o&gR0@F1iedcg8Q7V9%^$rJc*)PV>)>!~f-GW}$u3I~NU}ML;Eijm>GC zSk5PA@)$sw5ekF!^)pzu)uhuI6Y)BSW(+8iZU0}4y>(cW(YH2CNh2jN14?&DqqNc` z2nYyBBPA)F1JVscw{%IDbazQ9A>BxWz%awi_xL;KeD8U$@1O4T;g3fb9ieLe$NZL3{hTu#Lz%+L0|xP_)y6Uw1VHD_OjM{I`NTPN#pMcY%MwXt~_6=y4Cw(7$i!_ zZ3?YGGZribb$&5wSlB4Xpv7_vtJ1fNH3@79F@V3shg*G!nnO@qibNe!g5yKYe;E3T zX;??U`Bvqa^dcb3^^d+?MqV}hfDI4-CbR0DpkqyP@C&}{<{13~E}> zt$A@^*{(#_DVUHo#$_aUeNoL}bcj8T#nik{IrZH7x3TggC)01U3aJO=6VL&xC$bW; zjVw7<(TaxesYP^t)fd0)eXA6M27oE|$?WB?YL^4DB9p8LHIiZczy>8k`4>-%X$Z!P zYxCxnfO7w?ckWiji=#y8?#{!pYyvxwZhya|nK-Wj+VC)nyi(<(WoJTh7reg$%jr{7 z7P#I5*n5AgdD=vEO}7MiabF;Cb3>GhBXg@Vr~ z;-F{6;qMJ68_kwCT0~oD1<5}Jv=xvPHVuR%ac@q4@6>v{*0X3#^MB2DbJd*vg$;qK zh_*YAVH7!G=m72yG-cl}RW`Y3&QWz4UN%F;av3JUv@zyw@ytm(gg0l^$ zwZ;){@(c=}BJtSt`|@0Ti=TD`<+psCATtWmhgwFe|C{V%cA3Op6qedbvE)RA!Mv(3Wix&!Lc^#B$$kZFyTN&mdly zj5)ACgfG)fxiZ5SZdTN?g)F=ZCjJ@XUuE3R$1jXMJeJ7e5vgl#d$Z<6K19F&vteF9 z+DJ2E#^8UPhXcpS^uPh!Ag2eI(Jvq$B++1k2UvJEH;1xh0d|c3$4-%CFMs1`5@{*m zKEQTRQNQ~1BUm%sAZlHP-(Jmn|IofJvS~rBY7HB#2HH-*>8{IIhQ?|>SMB+qMS|k5 z^}H{R<(^?nXNjC-4+C`cRmCPL?^82s=9p1PXM7)(_>DtEJp2_H9d%svrU3> z+5clmt!2cktk1?mO#J`dcWWX1BdveAnNZm6J=F=TGGlkWoK3h#2yKB#cM9`2Aq3xKv^)1ZS0?+Cv!Xkv=w~+cG29DIr*o` zm7UlZW`v&|B~^K@<|slzRV=L8mXU-pM$g)Z6-tr@L@HzL+Y8Ov63P~X>W=&m=Nmxd zo#{bQmVfv+uMcy!Mi*-rpY(zGyslo{z2)iIbIF8H)+n5w-m^PAukg%mP9rq(sd108rG3+5iU@Igr+DVF!XBZP#aD7k#4yIG;pQ;E9 z?d+Tz7&_Yq8NF6|88phOJ#8K$WcI+l?0AV8=Db*vs!Yk8u}z59@l50rFfH`7V~%Ft z+r2Qr#Cv-9VMMrk7&#(pB8A){cX~M3Up?!flHPf(@o?z+<;;JLCjh>5>$7Ddd7MAp z0q>-}E!-bCd*laKHn8VmPNB0t{<*-EcRr6glt$hWm|Sq4A2m0%vAdSn=RlchHjk%! z#eeVr(!RIIyGw`JPCK@THg(Ve?b(KeVF;^%%+ zWIRgmc6|;`JzC*VhQjQP^v4m(#cwdp(>k>{DwqT2rx=w`8gGnA*p*<*fGDhoFXvUiCS2Vej)wNxLX2m#)y^j2P= zaKF8bOLcA`f6Zs%YVHi)tZ7L6B8#LOj@Dqqq%Pr?SH?3j!Dzv)_C*|{M`-I?fJSg!ww|h>|pPy zY6<|FMzdlD$#q=^6NL0GUVTQp^Tsc-V-7SH{!J*ixxT!o1_efp6J*%jKRb#txmcC1 zaqKwbx>~+K!H4wVKBz&bHTV$8zLUhs)LHu-&?GdrlBgA-nkM;|B7T|XGFqc!;nO;- zKtjCN+m6@w%JuZ>&hT{b%-xtx87gXcoVBpPL<_m^f<9Xozdi2!-Sm4k9|NA97wii( zgLEEAAxu5>&lf~P_%jNVy{d6+FP@%S5~&=`V0JYY_O08M4*TcR3(tn8WGCcXM6$yx zaY{9-vS)O1?Vo$uh-3CoGD z)n}m%lFSTz;Fu%pSaRZN1H<$Ti-X4g>U5p4*y?8cVa$Gh<|^1c$8;~ws|p2-108d5 zOwAM9m28Qc7%yN&H7*B~zn%;>xRtSueE4RUAi}iNT(|0=%kiQO`T`t{6UN{=zTd}e zX~mr4O}GQDQ?a+ULH!hAo91H5l^vN;%>2g=5WF_#jg8h+tR)tFfxrYY1B zdlH4E@UD={JE_jA&#oE--Q%QHdWqli+RuDVFa3xzA8ZHmyF+Ao)QpvDN zxC&DrZ{I$*5!NOu9BGa{p~Zb_q@4MC3$L=(T-D&Je2zUAqwe3w2RyI~mgky9lPuj9 zjt9fmNND?Q-?wcdJ~WEQ^0j@oLFP>xJv+VniU`;pmWEy2_#)p5sT#(M`lc|0N2T|5q{n_h595+xPl34l zli$|#FTJPFvN>~kR<6c~9<8~uu0&bvCk$r?d1oeuyh3=BB$MQY>h`TX2IJ(?PCmILAZVDo@HII*^5DX zEQ`8-uv7Lg0IGm8XG9Iaa@n7Y?&1Q%aPG04OJ3JuJ&$2dQUDnN^X6+D%`~p+Wk2U! zXSzZdD&WG}p74{)DNBVORhEotz1-cGLkZKHIOSQTm54mfZ?hs4z4nTiP7iw@(0t*M zNp1X7N=;NrB+IAbN1Ut5_IA6^6xXTlrXbLpYb;g~O)QKbte8`$%%W*B8CvX2niuIf zaFUY5a)CB2p382~gW97OQiQP@LLxLEGbfwb%RC9lPtI;&>E;aKsYZv%I$1;*4WZq0 zjQAnmnf+yj7_UBE)7x_zGQKXqy_>oiH-UZVjzbLBm^?)6BW1c>{dNseAI|l~! zD?p>Ja9_I4nu+ybVNoPEDbyv+1IRXaZHWyyq}~JMekq(nbmm@1cWSnFUfP^Ou5xF( zzmYot5*%6v0Mlyo-$sjbsfPapR^feo_YZgo6nn#u3jroS9dCe4Q=Oimg3I%hL1yK} zDWG9(#S~MUs0+oAKq%xr@Rjy2x~@o?Jk^w#9GC(sYJHMWqL@!*ERKIVl!%M$!Fyo= z=XbY>X;nMbujLP{yBw#hgUSFodWqLOPlca0_+zvH*dQhLLIbEIUb5r})+ndt5ay7r zb+lk5Y?UrY3ggpYVHoCi)Ep=M_UP=5eiBJ-Am}cVk*(4#OF}G|Kbt+l^nG!-lU>oZ z2p-E*2h9G@Xy4MyCFXcWV%*wyMxO+N`9_j>MeSnnFiD%+2-_`=+>w zh9fQ^{ECTaVp0E@*vQ?PbS%swFyEG1F6?RYQ#@d5`*rL~h;ZxfTvWWwy~Q5r#j?vb zFwy#tF5RjplV?|$lbsu15RRkQz6D^jqCv5uHGQ&NSOFkKz0SXutc~B}x7_9iA18r5 zOHUEmW^V4+?e0o4lV4M3Qmm(%_!mFE$sDj6C2)MU?UWw6<%t?neyLzyZcaw1oq>gL zES;XNQTGn(abApZ0N-fV&)Zu^md+7>u?GhWF{52wySCnl;I$~TZ!Vt9ps}F6e?B*p zlHD`p=TAXvz;NFGvhApfO)!7Z{|Os+9W|@PvHB|P-pxkSNnb9rLCtP>@BL$-=sv-%E)Wf|L$Nuyc6IVIzu`_sl4E z)(o(GcpVaW>ei<633Yq<*uWDRwwcq90RO}`cZGvrd#oEI(U`@vR;3v4LT*! zh7Xjsu;%W;Ms@j?tk^U-@hhBiLH0N1!{ybFJ8L9Rh%4UqYx1r=xK-=`Yk&UE1zg~C zz_Wb zDNjsnyB?QjTc0ouO@F`j-)&#J?V>}B`tGOEbs}Mq)`z(~)Kqc)${ zGlvzc?Yq9M-mu&R4?Q(Awj`{+Gt^^7SK!WFl;F-)3QzJ*+rOJO!nRK)GQAr>C;7x? z>NbQMFry=}_X3Y$tBR2<7;c`jSPjwuJhk=9^N7zO{KI$te#?LW1U>Wi!I;B}9iE^u zCqCxUJ9^E+N><=00>JZ6=?QO?Y&L@l17x05g3RkHy3@=7V1CG}Uwy8+@G(16#=4BD zefk{$4g++^IcB;U0aUi~L~_}p(K8~S0TqhOAVH}t>gJKr!-FxR1-HS+^5E|F{e_#& zlH!+FDGDun0$7muPmTI5^uC=+|O_CZD{f1VJCO*ehb>}sR380gh>~z zJIlALXgA@JDf08rk8GW&T`&ZRYpe2(dfq>><&2G609#xLzL{=SqhNZmWz_PfBJNVZ z^hKgB;pf%^hFuRQ&iD!tg{3Dun^=|nR57Ev%BNv^>G?X9zDI%p+$4rT4~p&d@ZkgF z*sBr%u<7LXcXf6lUoXnZ>*0@|sJ-N>1|$KO%3-!ub6 zR_|$v?{d#N7f}9{?Z072;_(_~lv@CNA0<5pyN{B@5R}^OEP8DZ8ke<|&{X9HPi)&^SXhUk z2B*nJX_l6NT3Je2@xTFRJU6j{kA>e!<<-N+1xni`EZ_sRQR~@aZpIMsNW?B2j;o)+ zrLQ#X*|HYfUpT;*=XV6?USH7fBA+p3jy5^7#F_(Dadpb-Clnt(x)Uhb!!xG5ft+rE z3>nx^eHlQQ_5tz^4Cs=UAEurn4zS)cr6ehAyFVArneukO@upaYF`xKThiTdqX4n%q zS}zc!gD^r_TB$TbK8Lg?J3|y+%UoItHHhB&Ksy9)J-bT!_#h?ESv-FAU#yo~wQ;%4 zLkOX~b(SNu9w}v5j{Iv8L5)G{IyshK-NFa*4*QO#T(7r;vC#;V^5mYGb=17{eBq1G z%`|Y?Gq{f&jvAdamPGBWMD+kEk2KGD5M0rgHPB%&-IcZZo7qPn2 z!hw8X>zJN_tfy=stXItery>c(4#c|5qM;!lRh9?WVTbvWVRMA;f>FIp6SMrs!|(OT zrP{s-l_x15L`h@E2nP{Vis#-Q9R1)Lgm}%Z!=IlS3PLyEUY_m1$JYIZj80IYklS}A z7(?GtbnCsv2-hTT|BI+`=dQD@7cXAkut{H;r9SVv_8*@W=v0TM&kaXyHtfy(Iquwp zs|;Q>bYB{J)7;Je>Y$WBj@R5Fx=|N-<7e`Fe?KB#J{tJ?lZqGh8+G~6GDHwL-kca7KPrQa@dZFk5^#ni68A?R&`QF?$Km0=L_wo?ccec4uWs>!}hG`|Vf= z`Xg0MG78+F7ddDCPT4R$fuy|0%Boh;V+#FSjf?^Kn-ezk7!5u#AFUr9+VufwZ_+z@ zO9AZWm`$^`+O}=)Y44AhNo7oGHpIF1QoWA!s*sMUJ+Wn+2}ip+n-suc=4pLl9IyE9YDkZ)o5&gs1RGO z;1Qcr&On<`8+2mtZ9vguj5P9gz5NcTP)q`5OBFxZA_edUzsF-*WuSl6+}Fp{|EQ3$ zR$-H52BwkZG=yYPRSgf-M=?P;b+YMG-c5Y;suEvd0VF`Bkum1OCc}0M#Q3jzvRRWN zgWaG!Tdh_5*{Z;%tub$ZI$SYVymKoW{p6#r zw|$nq42ruU*H}?^nN`bvC-ec7YkczRAzUS0zlh};1fcaj*rEHNA9v4y?2=y8i;UZp z{m#1={v5Dt0@`iWS1}O8{ld4dtA3{lwr)9&yVx_|L5!*H_)$9~-uTDz(qGC@^#hkp zDH(~=lDo9&*GSsqXk(ZiUz#7n!h85u*0XI|R}bbs&i#PQlPGLp$-j@u!M+UOt0j;| zF!*@gn{=?xnLy^Z@90tw_*C;yeb$#&f~p;8!pej-PqzGb2~3cj(e;@SL%}-zK~&so zzuOvMxBBVTJ)8)6zoYtFS?lq}r7Mdmobi#|+3@%WF6@?K6mqBASQtH>6s zGqxe}jM|kEy$!*WzfMZmpY&KaaPGVGG0#r|5z}XKK$%MLvxIbQ_ctq^|P;QRmZ}T_G>TqUHO<_QDaXi0p)H22BnBA zu;$07Mk%Iye{LkL6SGt&W2(P0`VRA2{Z^a>xK6=I+{*KwYI-+?f&L2D7HpuN+Q^f- zhdOkegtQbrBX8L0bjdT+`d*G-mg}emCn8)yY})z*eiJT@Miu$a42n|yGhb&WVSD`e zb~nF#MENWvZNp>0G>{<@P1TgyEOl1lIiD(9AA6b(l-!0`PV^0DwU^ST+^P80LOwxD zic;0sVag4%&6W2LjN+Kh#lp*US)YM~W+)ck1;;>yplTu4OWOx_&a&XL68@Wm3Ov~J zqoW`2u`D16?F?AcGhRC*r-B=F*GOlI*p1Y8&0oe<$_ zkloGhZpoUp>l;tYLn&hKWSWf6GuBA8KZa|tskF{LcL=PWz|sBIgy?wn3?l6g*>{0J z5A!;AJ_fnKMDI|)@2mC4)`Od5GcCtP;A05i%#2J1kL7VE7i2pM=^FNXYd=5~a{qTL z-b7~OSJzDn>QAcY)S3HU{J<82gvf(0)qRjCe#G!Bbx+Kr>_gxo#jqnZDv(iJRZVGW zK0~3r1GZL>Q1`|HZy(O~C_%~8h1)~n9x)ZX zDOioZW=fW+%{KZsSX2lq!eV2!!so4~o-4OGYGW}k+>e2Vt&nv-b*Poy_$0nuDCETG zQED-BqGZk;M`oRN)2f$~T_g*hX773JNUOs_h{B+SyaOgp-p+>sM>xL*+PMPF-J2AE z5OIKCC(i)D1Ws*t+l!k62F(oMjl1!%^>2xbmM@bfkO6eJ z4$FEb{*O*}Z|PdftAPd@d9#6V)Wu0>jXw}M(@{T#ljp%m?wt0{dISC_e~XKHtFCan z4Q?|C=oWyO37?VBJrtF?lL=*0MeDZ>8l4Uc1p;yH;aTo2z^$N^CYRPj>Wo1y{afN5 za*6%WB-a5L>x59v>o*aJ%&->ThU7-aRBqDUbV#>AIuO%Fnx;CRAPS9SGY8sp-dFVShF*rgIu| zJY1UU=7#PUNxH4)U3;YA!m%xGwc)~AS>zHHSU$`2_0{I%g1W7Xf zbNTv;h@`@D{n@1zP7!V0$sgj62@B=L$2b|cGip`<{x9|uyjd;ILN0wMH>4?&6!J#imAzH_ISWC5n*K=(fSROK%M?1U2yE{{z&r_ z=Mq(QLG5MxU&lvf{i~`cb1(8S>Mft}N$8%@*8Uy%nitbK4-}GH(8#_hLh|x-ZPiwc z65oL*W7xb*o1e(?sm3*vsv+fQN4`CI22vXu)}t7h6KzAE&vch&g)tVAUg6G-2PWT!z6=WhLe z$48(B+15Dy>aX{RJ5*4{+hWS*djVghzDvDu#@LpS4lsd5=`jVSb?v!(Pu`vnBO{fr zJ^-<(^`XbD5B&(@^)EVPIeh3Un%MvP6Y?|`HaJvSEp~7C$J2MiY4{L6W`d-PAHCM8 zLHX|Nq&ET)>Wq`Q@#Tf;)XSP4zjG$Ksi`;p;2FD1#5f%?5^{stqSIz_KTCxiBwoLe z{=MhebJ|h~4|~xqANazY7<8`9)-Nmt0R$$_0jv@QgQc0(CeDy)dT}Qc+Axctvhz@h z`7hzO!JL89KXhncFc=zTFre8}zh!8yLsL4yonViNLA!rGBHi{SJQPg(S}8aW)Wi3F zH7?;;DIz2GQQ*4H70ucmfWmqkQk2!N1qZl%0C{G=$(Ivb&vH(@`k|2P0GcNS*_qVo zv6mfY^`7Da82_==^`Cw-fiC1gup{$;=hS36n8!PC+H@BkrSdL zN#DX24=4eB{AfJ2ccdZ7#k%>}^_t3jaN~pH{#)r1u~FCi)r4CzS(*;oGkFa{{_1A* zzyJa4r^N3}(I_dgsee|gax;J@gJU7XSBJz_=#8 zZ;R8uk)c(FB@8F1wPJjw`!CyydeEPUfv}w!9j}Cf8J%d$B^BHuBM#eVWN^bD3xDsm zE@O7OV&FHi4eNTWsN%f#h})RgYiFY^Ooei%BxbAA;i??#$s1cD=kuZd^stihsf>+ zIDH=CxO?RKb-d5F5zFyehcnoxi~X}+jB#EGtNU!K&SahJcfjjC|BtDk6LDyqrKr42 zGJeH*k$4PELpB?f;SZkQOBXC84m9JV1vhvDE?iMt;iq?On4z~xBK zi7s1rG+C#2G%(zr73kd)d&d0j2wgNU_`fCsV1`x~a(U?gXC_Ks2o$-G9N<%DO*n7C zSc_dmobI*(8At=l00H>`;F^uYL2dLpbVWrLXhToIIj?-oBS@>Sj~^84B&ENA`FV;< z`BQ-TG;qs`B231yZ&XUH3i$`Umv=RGX{*SP7s=QfWiQz+B0`fA#I~o$Rx$(dTG~aA zv!?gn+yK&mKpgO$F@MeF_{XR6O3Q=uwFVv;zMT-*M`6`!j1rcd#>_HMSxef)PlW_! zC=&*=>dvTAO3|ee^XQ{Mbb8h)^6EGm_1qIjMxE5}9u9sSwV(?(yyHjRXve=ph)fp< z*-mo0BA(didO@SA?QKUJTBfl)$ON3U6X~SA)v8I=TtCqy)A!#P6UH+P>9$nre-;kI zb7zgD@Q&-8$7>4K$ep2>@1>1r5@Bwc&uaN5(rNV`y0KouC>?N_{(&j|A6z%F7hLnC z<`;{}kUxA#bX`wsTc`W1a;U}syy?~-!J~a03He(KK@2V2@!rq-B6I*{=&RH9yXBNS zUij}pV!yE*4CG|#x^TB+-l&=ehSdOPc?NGUUNIXWgC*^OpM9 zO))Of-r@NJ=-4Hod-gU3xJh|F=%N0q!`$W3E}Z2g4ie)hS9(ejOD3On5wo&%Iftsx z?`X_k2f)Tn)a((!DY`jsl5!|Xhrqogp@D0s`3pcKL{t&*lpN;Dz^m3C_*lpFyt3f* z+QZ*p?b7Ehc$R*@;A?3i-l6wfdR<~e7RbB9QPV+FwRXSH?qvMW*aH{1Td6HZ6)M61 zD*j{`Yzg4@@;_{kjMGPe3~>gikZUo4{9pDcDu#j0-ud;rBy!(PzBzzpHhO?B15l(? zWX!qYsuzv+KA6-iXx$-zd}Zjg8Vg(V_0X$upt)CeOm!+xm^#4j^L{JAL-YMJ2X>{E zvnr6TXw#xFTq?^35onfu0-m>&oHv)?^sFfoOpA$qdixQ)*|Em*tSip{V^q*BMMr2U z==5N(8~vY3kNz%7GU9}SjW~L7szh3~nv6Y$1C3ulR$3dmqZISosD7}uQSJ`!?%*#S zEt%c$bf{vMOo*qF#B)*^qlEVJ!uGH$P~@X9a$>x+Da;iqj)c`$zR<}KJQFcI=X?RkR;wAUS%ivKPC+1$r)H#o-+u&T}#;p`nHW+i8+Nd|U&#*Dg z7Lbohs9h;~@z%(whL>epsq1#|cgvo{KCm#+9S2Eg7b&}X)d+-j*ExSF>h5nP#sTPALfdDOFxv~no<(kt)MPsO@f#-y9Ce@Pl(rs$7}I;sw(lf;qk#cm zScmniT@;PUqBfLW_O|>#*6*&Tsl7vLjzhfQ;%{Gu(w?_Nu%NdomUo?O(hr-E>tVeQ z7ckTF^RCNvhR`P=`L#x8HWssda&?pH5q&8b9(58mGV4HPKNA^ z*$q9TC^f;}IAgx}VMbWP1BkWPx`kEO@96QK1BV$Phw{T$MI74@xQyc)>~)A~_8odg zXRnn#N?p`0tVD(!Rn1StRL>L2j70!xT5QU4dkWx`GU$WanQ=NjkFD-|)wOoT^~wXh zeV~G!NjVrSI0w*3)AOP$LZkxr_fPUeUGLDOOX;jH_dIBfUKnlLou4yjJVAJSNO|PMdINahvigYU@}+?$8=f!Xi~c z@3KFMNYKX|&TUQ*C@BFRWQrU-vx~{9t)B8K_Ue3o;?I9uB{~i360n8rx89QOwJXIC ztlf7MJ0i=+5LUYw7MZuXw_<0MTUYTGdnatFFo(%?ujL%0wi{(aQA=)vzgW>DOj9u{ zS4X7r5EWwttc#2gb+B`C_VD#87x~*-0>#pO6Cr(Hx(-=^AWa-0z3W}Q*-pNPwK4$6_NYaf%&*`(u~qGk%%A*X&LXOhT&^@8DC zRQ3u2fr)&GM|~Kg_czJV%g)&IS^9(&scTL9Fbb1g_xvNicKZtzkMbz(81tJVK#83R z!DQ=iA0`#+%zX8v;GvKl!owT3fX&`-B5ZXn@Kt8ti^ff|IYAGxcQ{rCG6I*l9l{UM zq-db%BfQTmkZ?9;?F+SSTVVPf`}TF_>f7i1o&z=fKewf3*abkPAbQQy-dg{&?CWKK z%6Yu|2GB+D1>{}J6Qs&k*2c4dnnEWcruv-{!13?w00a6l0NGb1v@v!0|K~pq80r|9 z+qT-R6qEN_W-}aNau#oFw?}K`GNiFZmCg0G@H{_YY@ZQ68=O``Cy|HBid0&DjqPlr zWOK+8Rk;27j7hp#Mb%3{#5TnG_YEbnXt0JCQjQtIA^?sM2$^6uvn@A|s0<^KuUfot zT52FcYsip8tFoFPD}?pFA4!-h7p(iRLe}fbqq+ zk`0T=IIU`W+3M0TctG1|0VtRqS%PkM@ZV<_a;4)j@b8qK(8N_&|4M^eGfQ7Po*JIR z8808Gx?wTrIC-dsvxkGM%a!D=2*ege8uDf16Afzb8E*{qQR$c}YE%DK>TH-2 zp}KbGhO9m|S4T7vxwkgJexSF{esjyYb*o%-ny_m{uAq~>moz3#gNG+{4TP*)nixw@}x zn&Tmt7TzuyrLT;5hAecKt!TkGrs&W<28Ihmr zd)%M@=&M8lR)8;+^N@3&YU7}18OWS=Pm6Y$Mq75FqeKh3xPMd%leVAfwX{=$S zPKl&Q_+%9rVLz#ENxk{LO z*DZ80uY8Hb>uh@V(2s>wOJW73#f<`R=46Ua&f{XGsc2=?DzypG6a|yerA=K=2h$l8 z5`I6K0)C=hjTLYxm#^7GPwt&0@-&k#%$RUYG#;{8XZsRULdENKx-s|vJ4m$d$jvGa z4Ju>w`R;NUm7C}@q_)IycXexeH4gm;+Q_&e69L_-mhiT2IDMI>t34s2kk(81kl~Rs zMgLL(0r1$9Ua%Nl474^;Vv58E)NooB>RGtDb4t2A*8^NpK(tLp1WYx_H;Mad=$yNN z(a((q$k$PB>b8 z`K`VN0hew7k;RC&1aP%;`kJ9nMdA?Gc8h-qb`DgIb~tHmLzKPd@JzwMK#S>TVr@|p zmY5U_AWIL-nS}x~_c*A7IFLOxiVeqE&3*YA>Huyp*xj(>)w1TxS&|_7VcQpHC$1UT zBKlW|)>&b!HJOGO6RbZA{4pEq>0HGSzs}{aD;aEN*ZH2dcxZVmo~~H)Rv%+setSBF z5G{2D&zR44k|g*&-(Aflr&oP1cJcO^x`4Yd5?BuW$){SY0F}Qs(nr>|Va$VaZ-!K3 zPW7F_4SnT6W>82G{;{~Tan6Oxg^!Ve@#y3=A$9@S(ltr6#>>QesZ_ccsT1G?z8OjD zx(+>SUzNOkVSgo_zoLW5|63(sb~C&uM$IS|NcB4jv~9sSIp+)b%(3XPQK;#)l`Df5 zhb4VTSi}S*Fl3q9=iRtY3|T#Kff zEPX^tTK#$9;hV4H5~;(a^_g|c>hOokHD9M^QRLy@Z zw_vE5bkY0K5C2CL5`1|KCqe6F2%h{}(#46MbIhN?=xoh@EthY4ibjk(m*Lx?(DxU~ zSca$-CNyeRGCowzQ;luUunZQYu2hH@Zlk)l81KeLE4RXQl?k?<#n-UR5pJ&p%*8G{ z{es+S0*98G=9+^LTE%HOM%`8ajK>psab5QY-N}Bhkz0RSji~YOC`;H*`cG$_e)%Q< z31v^n8S1a`{m-q5>s!>u?IrKz9wZUwgo2}#k)L(%E zTV7ng_@weQ_M}ofb}m?@e_E)plK-aTC{7Ekb0k=C@>2vUS@Vw20&WM7lAIOa{cTb; z`-$BAnk`$)SK>{;hRbHDccsIhWU#gJcr ze_aRcShJ68huu6=;Bff;qeVclM{%J}X&KuA2h>gX+TAU<5~I?xlpR1*}r+$9r|YBcjsCqG%!nIM zY7^>$t{f6PdWkxeycIY(iYp;Da&S)l-qt@?y}sf52l;E%N;ub{FCbe-eRD)+=a^8%Bgy`6D3MUmpDP z(9O#x{ayRnYq<>u#^{2X#S42A z4vZs)=z{VJ8ID5p`uP!mVos_&rEnXS@H?e67YMB!IFp2k6eqvA=Es0W(TZN9irdDK zqb5t19UMP}L{5CDrLyK;^s`l5(wx;uWFiZMxz#j&onu$L>Gx;TRhlt#svKHbrI{3x z!SpA=bbbnEfQB2cxCID#z$U$Q`;H#(2?sJ> zka&%UZW9aJvq!Z)%U)#+Ac3);gr@a7c5G4Pt!S2qF`-Wv%XyYsY6>v58apD&^A5c- z_bX`2yx3pDy$`AAWYax<2`*c`+p;6+B z={bncZ1ma;O_eu$e$*#*lw6K zss^f_MldlQh$5&Ab*<%oe+}!0iN)1!moc*xYl*@<172{dVJK!6x0G*vjPCJEi)d z;frjTE2cD=`&I4O;rvam9y@RfKNLRGZzQ!7($H90>ss!*e4=9Eb~UipCG(Vc=cl5z zTl7hUW8(8X!UtnwG(+C)ru(~4+FJTLL64z0M)#Vq(wqcsiXi<^lF!KZ@`5Ar=*L(I zj{+RWr1hMLtl~*&r6|~#?5jPz>EE!ihJmZjmpIYRnW!XwzZ+6#hU`a?J7@n~3fm|l zo8Tn8jCZ!g)8e#`o{xYG7|_PkGl4)mn;hZcAIJ;@8x=HxJ4<;EJx|!e4{S`>jgC;H z)KQqZP1%PT{B#vN(1CU!`YXW^Tl*Na=9(vR{4)uY_4_*WUjKV{E>3yB2X(F=S`WE4 zNj_!5^zOpNNa#L!i9QToz9Lg&)FQB=z=mZp2TK0?28*w1k1Hi>7zb}CvTUSHmI!m% zE^LMuuc9Wuu!0MTf4#J3O#bX(;$Y(L`-5*)=G)Nv)JbJs_m6OtAHfrH#`<1$~DU7Q~i85;7Xk79q{@m5Qv-PPI_m(}Cnny&|+ zK5EAEJ^IaIpBmU25<3~1`|m7;eDQbpU?ox@Z_X)F6TDo4mcQYmP~t0mXOP2V>Q%CO zRHVMagIV`u2uU{KE9qp?Y_&{v*q3DTy_h+@N-?-&KAT@V&D?SfYR`}y`#z)ht?cn$ zkO~^JsWZmV6o~8znyXeZHrl*eL`u4PuCaO38CNA*X88NNX^byeza<>lvTYSqV;!Eq zWI>k&=QuJ`qvIZ>Sl;k~NfyJH>Qb)Ok6)Dv%prJtow+BKHC;b>SxgeT?|dB7!Z12t z%x!k!ta{!^qXO+rkGV^}nfJ4DD;@u^BM&f#s!wbv-;K_BliS#P)nj#ew}r(ywDS*G zg-BQ=pa+gNI;3sAYgxSLC(dFv^-&H4^$B)X?W6|1x3PfWv2IlEN!Cbpjt^}EjW&wL zDaykyHB(9x`0Gsl;@+s6UNuh6^~w@0UaCI2Y@Rax_T${^TeuDvW~=SN8_4d;ROHK4N=QjA%vd*q3lKQg^AEyX_8tW4;i}0Wz6~fiL`j z_1RW2G*I^6fD91b4(q9@!t+{8fuF;H)I=G zNea;t*Boxc-$)H&`R^r_tO@X*t~~Wv<~DjwHA8E=*O;_ASV2UG$tS_M-7R+RAdFOJ z&f3I$#j@JZx6LNb3=38W(!>NQ9L@I&Sy<15gFk$;%IxW45>@7jd_jSxO5gAC;2s>m z!X{h^e)B9VtItN9w!$YY5>tO9T-`JR`2aM@yQisBiRNz;6sAJ({%!9NA=hxl1bu zWG_T`qBcBrZvj6V)Qd9tGkd4vSjzk4oa5@NByg=)7GDc~V6i|`6OA&$pSBHG0kVe& z#H{b`Y)IKSpIpqCAsmc@HUs!FVzXOV18%#=_6&2IC4%GUY(57GPcCyZ$o^+j|nf<#~Q zFal31k)S|U_Q>W7_GieS3D&P$n9d@DN`!bgkm@%h?qO@HXa&nqW&`Qe5r45u33C(QFZv_XfF?b1tG%^t@yZ6% zRG3NsH}uZesn7dlQUj%HXtA+$h5zO)p&66#vI3)C%43~JfujJ)T&psZh4=1%&CjcG z8!|0b^U2;?EHAjq$7Ir+LXDW8_|k=!k3%(6dj2S{wh-;~2#~q!*87KI%&=`Wsw{#F zjnBUQJok5pOrIa#60YvMISCcv8EF{{No4&_P^Vs>`JS2uz{EKDk%SIX!qqM~@4=fD5IZleUq9QL%ljUY#MsVxsYSd^ z(vb%Aid~K^y(GQF$T;?gGvWl-VrQqsmtnVCzDvu|Nj6J?;`VNr38se)@(QNk(5s@Y z=#5m%QJ8;?>YhAhdv7?DKo7Fu63G_%(e48uNR301guxO&ej%Sj{z@DqU z>rF3{938w)tN6bU(!))+l9i(Mmu~hiL?z=(Jwr~OSr_0U%I#&K{_{y3EOjq%1Y3s` zh7J#^2IrI<5*@xTE124{`9KMJ zco)1=R`jAkvggL1DXf{AaFD_R zQd+(hy|HMYr}||f=3}%LxNEA_TlPgaJ>3eIfn`BH+)dsggB*cnVL8pFX)*O1ApO-Y zt&FmZ2`i2V@>X-MvzwGC2b0bNIvr{to@7rLCmMXB&zPx-ans@RQ}sl#N3zB~>x8SB zEVg&*9&9hu3@2j|}nPko2$MKolPJ{2479dR0CA1aFi=I^~ssgv(gun}QH8 zs!7+qFO*~o__c)iU$N~MY($Q%nNxM{vUV>0A}F0DnB2{WAC*p2=hCJw*Tg2)^*eD< z{jm4LV6KF6|J_Lv?T@frA07XQ?{D&lR(cI z3G3%J3}!`WdCL6k;Tnahs0_- z5?n1P$j6x8s1KwWO!Q1@G+7S)e~)E0 zk(7o^>tGs6RoAoO1RcLBPuzlyum6CcrfN{3on3E(Bv@(1G;R!M^vajk8t&%L!b80h%`+=>0MAllM#{rpzxYAkt+{;w+vPecX91tF}B`d_KF z69k&s)V=(_T<%br*G0aP@q`j7Upy{3SXFB!_DL+2nfHKZg9rj z7+wB$4`bT;wo0FJWXiA~5{&#@3yL5nFnqTH(3Vl5?S0sr^>K{)rMD$b350T)?6Ri4 zdj9xDUY5(Fw`^Q9zQgq9-2^V}lR#J4RH^Z*%2Q$+QT>AMsO>2P1a2 z;`n5ZA!t*Vo2g0ERWj?<_OrOh5rXB(kaIP8ztgYN=WEZ&$aE?7-$~1AVQxtM;nCX3 z(iQwN)y_mWt7F}0h4vmx z50^jv^?R`WG}3xPScs~C@Wp<$XM{&w1B15e{CxryA4c^PHFLpJ%2R24+;cTFhVgNu z64fu6Pux3Ll9rrG+#V36)xOkC;4mBfAx^f4EytFRFgadinl-7P*Kx+L{DY{b03Pq| zGqMh|$5RP>BLoR7f|h1~df1eTKHP13LCga05IkJf?&y2k2D=tefc2c*91dq?pT2u$ z=<`G(b+u#Xis~a(`O7=IgZtw-+j5n-7Jypmh>t^95-n@jjO`WUayD9;+a^C9w_AG3 z95b>f?3uiVG|O&8^j`3M^<=e)@VPIQ#_DLtXEu3#B9UbhF;xn)8!qDAi`Nl}88QOjxFf37gz9#lTK~8s z{mT=Nyzq=@*6Xt3U&T%whk^F-D}x@QPKL?OdAK}~c81R`Jznl(U~eYFjfZh2l(OZ@ z1D=Oizd{q?$D4AML$3_Vu{WC|??PSb+z3OA0Icx67)v3MI=fdU&qNKtrBT++%GY_u zT_BY#DWMavO|bkPms`xbjZoHDeB>_`vZd+pRS+wc<9e~u@H->PZ92KZEZwpgs6|ZO4{Ri8vH`Cn-oMJACP#VqhceV zBer+uiEM^4@N;cSGUAG(Fu`m7HOw%(Z(`Wz#`TSrnw2 z=CsR!<2a})^svQ%Qw7szkchF&H2%;pL7<)Fj@N`XR^sF`SZ&(BQ43SBekwd<)JGC} z8QGBh@$*Dh7|qdSEzz9waY(vJ=^A?*Za|!H%LTTH7mfXX~b>fv*4t_ZD0G@ zy^F6xt76(*6rE^474{A!n-bh$n!-(7DJWECt8Y!a2G5YIOmzZTh@f2JXXPT&T)EBH z^Ij^j3xBea;{3V9T6vChuA+sV`11zJR5OCz`n)N-II-kc>`&y8SQmJ*%M8E7Lo8G~ zp|lI0*-MLWd#-e76W&+uhwXmz9DuHU`n&R1P2&-gV0Dd*rZKsL`F6!Yeue6gD z*d?2iy3DZkPrT3Y;CNq?3Re31md1Vp&P^QCGW!h9*y|(q^?btmb(_Y1EJ)Z#g;DBR zrx;WI5N03stibz?Zd3gfX#VT~tBYj);DaK~Vd~o$;W0mM5gMKg)OMCvJt^soKAeYePAn{P$@vQf zc_v*@V+A!Y5kpxZZG#h@70KK-0d!)P#iZHUMy2?xmaA8~E#jTcMbwKSoUn1e@)@!XDEF*g7Uw~T_B)h0^%p1) zAul8t{b8vm@zy!S=`G#NE7B`}4`_D#o|i^AGAhW#vB8Dt@?13x22|yeDcE}ie5t+( zRM=?R&bGOXd?Q)+z2$UQ+~^T?&O0N`IXw=^VOV~`=z~&#vA9A?Wa{oUny;?+J*3>l24>K)oK!ARwBL|b!{4PQe_ z3M`L{saqXVhgQNw9H}$BWyV+B3-pH#OsX8U~1_+SfT9l zuY1joVbtKlCQ&l&X4V1k@6T+Rn*!_QY2E(U+=j#HsA6q>!+Pi2Y9dqBbGPkPVD-Dc z!^uNax^~DYuQxmg2`MG4?n;;-grCSVwP*x#Qu_F)Jk@u(hl?E*k@37ry7j9!3u%p- z`kT%P`?aoo;aXPZ2g|pXQ!QxjEmIO#A>%`*jeW0ka7?<=2z6>Ro*vh6Il^zSyd@Hi zb7qA+;JKe+Bmaqpd>iGU5#ER04Q?VgmRVi%jpi{w)m90q$q zxPr1bplVzRt4A{VA4!Q_MviH1C!k=LLgCk3sss%>z>xsSR4G&mhD6{iYC;F3ZW*LF z3DJ#4?2u&cLK-W5uQ>G^Dl6}M)k}~d8-7tD6;9(hB+s|E0z@8;1W`mfDO(i}o9M}- zSkvT&8pN>CzZoB(aU$N%^41(T!j3X#`jheeL8Rjy0trFLB6^K(3(VS1uG}?L;y$CJ z?-$vrtofhK@ytII?i9$+*I%n%!R%vynRTx0(KstRkIlP$(XpBFVa+OkY-#8=(H~o5p9@UxG zxX)~rsZ|4S6Qg{MV+J?jy4K@|LSszzL*$t9hdEQH+YA^Qm};c_sQ`Mbb3Z&sEn`_< z*&F!%l-rx-9Vck46tZ_jyuBe|Pvh^3Ro^I_Nc6kU!#%M}8i>>;XAj+}RMLkmS1FxdV2MQ+jAX32iC^l!fNu!Bqv>pn8s;gVdNt~zE?eRohCeQoK*Ww$#Q!rZnpZSvP@n8a5@1E6 zlXdxEWk@HG2g!H}<# zQugq67)In99`q#tSu^81Gwh|3ZRoq5Bgu+3k=4LcEke8dA*(p!f+vrvnOwA2uFYm7 zf>eY3pX4JA6_+7?~=Y=4YsD@Z(0&fj1icSBx{H;{~|HV5ki z4|Y6^#F<_$)uN@*fxz<@DvvVRU29A+CWtSnS5g90Bi=fxT_seX9x;oy&rWCNkPDC{HP=t6IK{O)ZEoOm-O!W>|AK&jmQY)A#F z>-@){z4%neX5DbP(GWFGi8RI5=L} z@>o9fnGr*j+FtSAITiWa%*b>(*+zkgnAp*9fb3m5(a*LAE|`+f((-Rf7i^LrBmV}j zW5c~B^M&c*=T?z$JAxfUfF7-}&21RF=}Z|9s6l_yOA_2aa3R3j3)p3uB3{+>ky1M% z(zjV8ki44d-JXhLW2TIlh9e#7epY#a`kUen}Kqgvs}I0 ziP5>tAXtwvR6#b47SnGxWCKdGf)&dOX)y z#H=|hVF4|koXk#lRRQ4{Tg?iGQj)Bf=~6`M8#^Y*dC+l&XBBlY4AI@Jv5W26Lr@Rn z(v&WujcSOK2!807-wdiMZ2alm5sq5+nY6O~p zR@@p`XhL_vpHPv$phT9&)x5!1Q9*SSn{+Os`;;fExjp4+ZgDa9dCzQmN;C~d;U z!;in8rIUPi7SiGrCgwt*(J{4$m0CJ1j(9smFJIO6Iw5Pz7A6WKF*c?25v9y>lGba*#q?v zg*xqfZq~V!GVC{&!3(JFqeUH1N+S+31k!Kz_`#n`PPPR}7Pd1tB5(Xv0Er|o*llxV zL5fLLWd^F6hd&kSJa-SzYe1&&uzYoKP^--tMCx8ofR)oN(=E z8ml2~{bSKk2nYLddZH}+JnDcxE28f*--_R)s28-FCmkog__Q4bS>=>KyvI4= zqy!XJ13KB-tr`TO%S(+{2MXQZ&zmsu#dahn>5~!sOy)Z;SS%8yXBzend~tX!gM-`YecI;7jy0GC!K^JoCUeKu@tCE77b$vfS!!VA?0Prwow(p{JMzgzB z_jph`ljTteYYxCA%hWMTYCIppO-yOhkpyy@Vk+#LZ;l1hg8ZInGrun469QjGyVT$H zVJT(f3i-%&V+qzn_N8AfTZ#upIp1CQW4$iY(^3G1sCRz1xs#1LI&5(u;jV;K@uhx9m>k;~etC*RVbi5Rr7A)?srp!*%{~~d*mLysOr+drwl{H4g4nL^OYry~c372~36w)Bug}kHIh7yjNDtK9) zQ<sG%(?zP?^PkZ<7=z@#)`W|lWp4`=CWYmo=$MJK&9^(l&T1jpnkF3dCQ#s@d zb@!V4m(lV}%B{$x4+o|`O6)s{19gPAH`z(;#5C`@e!UW63=QKmOa#g+0~sde54jWH ze1Pnx(Hv|k&3*tnNJa)&`5`R=?1NcnbI1?ZIvazDhOTMi`mveNj-WQBtY4mGUfCbo zy>c+eO59;nV&e3C!bAKi)i=H1vjI()5RU-&hs%YH<2iM%I@ z61FSn)1%&CM328wj2lSxN6FnLdi0yqu04jPodYHsN#3rNC>0O8C5Hanth>dpdQ+Lo z^amwN?*rxHHg&K`vi5zeDu#bYmOS5R0Y2zn_x=Z!6t@Cj|K`BnbwKZszI7Td_oC1l zJ*y3zDE{DsG%31sZ36%VKqw4!bmS7TLO25q5IM!&=y6|-5ydyn(e$Eb+6Mocq`9VD zhGwUfu5IJeqD2CzD*U}FOED-@XFw9k@X4seJBAfFf+(rjctftfyxeeQhnf$yKzY`10#f}B0D#56F~_nyt(El;z2$?Lr#5g#=0Xf zvOY&QC;YZP-9x0jINbkeYn}68*Vt};hArsz@{%o8ENk|o?XbQM$j$@hpjY?-(**zJ zt!EjPn)6g-SExlOA3b4xZ6AL90mWPL2G*x`D+R1-Td!D>#8d^3H_F*w9DJn_UZdjKmoe{)#U)i(X&KIJSU4 znD?i2ouDFyG8q!utxkizKDnmgldamV=b>k41Cyo<=3B~0DZObLMg;^t2p;`Q;#EMJ zAyzSfn`k5VblVS#ZC#u2WA<#8L9z6?)^8~q&$Q*;bmANDkGTu0Ge+PwEAnDpN)krv zs{*Vz-hiE=kcTr&Cv52zrmcCR_=gezj31Ip)S2^hQ`rocJD$`5DsD~?V|s>MRIS^m%Ab zr*?Z1H-ia9RD-48-hO2E<9EQhy*fN7{&QpF3oWg84H+tt7C#}Uk5*F1gOWroIOI<^ z`WBwDj%wJJMmY*dPKH#ce!Y~TB1iU(BXMPXi;>GnV5^)>{+w>6=&MVS4B_)zn~yKC zMoDSJM^~4wa%honB$0G`5n7Y#8Gp6SyL4O>tWLIPMhvmhaBuZ%tlWJSv{_^!SX6vA z^=c~t5F-_ldDL$%_SrdkDQpg;SPdNbxwr8=XpJq{V&Pb=J>~cAseJpM9xEB@$?4GZ z^GB6rA~1v2y%s|7C&X9(W-pvqES&TGeXdIRHBE>uwrww=Z4dKzn}*U4Mmwa)wA-_B z-KHiZ#@NNzlXt`tEyY%Cd7R(B;IGoUPy`R(Fuc0;S!HV@-k_D#iEZrWDuYn9z{&$= zNHL5Rv2`t|_$k`ky8TS=gLyeJVM6T#t?P>OPnL$mE`_dbAFiCz)#C`i%01y#%|iks zt8Kq47}Gmcv(5)sJSoieq-mF3z405aTp(%ZuL|^TC0UTXR6N^MfooZI*!l3K@6vL0 z?fk;lRynKYovknsdxz*^Kz?;HOFJ#QCp0r`x+Pz{xrRHN{S!UE6=ry{Hkv0yh+bE7K>mS2nFJ`k=H%BG&p(t?N34I0OjZ zzFhFN4(?j&O!<9J?!Et|$>$H)7HpL6T|FLfQ-{P*eN0z(+30wq_%muiz~enp%$N$G zU~5&9pnZ38RU}w&>wV#jAJ9&E7!OHRk3?uLv)yS~oZGSl1tI#d*O#EDAq0}S;V7`e z^eOOQT{fTNq0z?YzC*L_zN_%G1N$r1GbH@Pc!Tj<-auE~RNF*sFK@g19;1T+r;Uj?|j^Li+HL zAf;P0Z1QU2$HJHx2f@*2F8x!e2HE@VtG=SI1~aY7FP_3v?4!Tmyz^grp@B3p6e751 zR(*jmB+P&G`PxR##wPs2(YZ(Z)E6Dg=om2LCU}-}xPs}U&j@JQ#p zzy0q_Jy`*&88gua6QHul z6ZJ)vj-RtPRx(zl0Zj5WqyjCLHq##HU3O=m?j73*ZqN7+P+dXRco5^GU#%Iv2QSZ)C^O%!wZG zKu7+y+7Cas+^^v!rAjY&Y>xF($ZRYpEv(Nu%Jr<+A`}LJXugHbo$jmLkT&{O9 zw#6coxxco1tZGWz?+w8ekx-|IudmF&@@3Jgof)0Tujawb1b8i6AJs$9i9ZlW|wiG~Y6 z&$$|U|8;ep?G%8X7gKpyy*_X4j4IhCUP|z>i^=;fLlw-|l>)N~f*q~Mzc~HN5MM)< z*YR1Ky|iMj2b5m3{(b#ZSam2VNuV5xKm2Roh$ymydxoloBIlFJqBt6~GL`7_pIqWi zFXu{f=t~qy3NH^|D&9;732I~+^xAb&44Vqlyk*Q$a_=< z_GW=yC14`&<$Pmt90tKTAAgG50Mn<&=TE)@_rR(O$cO2~j5U3e+V zb_<#0I-%5*OMPJ?OL`=8hsELRnpWIPT*6tMFbT-loT<+P~L{Qs_fV^RR3P8`W0ae!GuFuO) zjeOMGrrUNedBvYMj8~5A-D|lPg7nR5=ukYgGULd4CZJbek!u(J z#mi<{Iw$|Rrh07?N$nV9ts?UhYloB=^QE*1N4a^fG<(EP-fIeSp^9%us91;-(vWzb zrwLW{Yng$ZrJ)v3!e3r9to@eEO$r{DijVlDjuel&xI_!fa2;if|SGlEqylcT>kT$6-Yx0>>^yHo)+_oveJX{pbV;)gkmDaMZ^Qb zS<9E6Bsb&+{v65KHNr5VTjU5e}icG8_gq_D*B4%6U2&L zIOY3pv3Sk#v8?1@*9F+QMYs$=JKA0Nxl&Bq-s+fDQXP=x_EF3B30J!q$mU|8 zFDfw6_{D!4>1?s~6C7kR0URFnw$)sl+q1SI)hek8=xw;lE!Joontx_W@QdYXULgK^JllU8uP)TgwvIeFU`P|(=fzb?BNjKLHZMb=$|X{&5_cstI&4``>$tSh z+>B*v!T7l{pU#tz6y;`py92$JnV(n zT)&TSlC_8bm|(CA=}VOq(L&-DpAMT1^pi>*csj_4z9}b;p5x%MqhRVQLHCg{JV11d z0rjv9qhS_@O(oe%SyH2u(2@S_Gz9W zb7j~2k7>@V*U4_wMfO52tU@MvVHFuTsM;%3uFl0K?xdRPAqiOxXF7ynGvV!Wjyzn~ z7RQIv*8814T)yrTjYM)7UC(D`W6`#$rummmwB4gZTA7jMRP(x~n0GX*|2a*bVhF)2 z_#b4b8P@f+J`1&q#NKwtbw_L7_@vLAEa5slc3+aG)ne2|xS7wWRSBkPuB+NmMtAb0 z7^td>Ok&|U%MUg^eZG2!{s-97&Zi&O_xnD&xd!bh=DkN%`*##PhKM#0#d@!ovjxL% zbQ3;n=k3Z=sC;>fm9-F+l#)#Ey&n#ziSqRAqE$`+V`>edZ31Ln?FTHlR3H%g5vHAw z%*q7Q0j1cEZz3XR?jHK8Xkd$uZ8|mnar8G;g`$YM0vaEtGk|Cvbsjp6LYjzvPc(p} znc%0(GenY&Iw;&2RLP@XQw}cp4T9`EvPlplcW(n2`wG4w9)RP`ua@=L;uApy@mMZ5 zQP(2A>)E`h^n0Kpn7Fw~-U_Lsv{JKo^8>bmhecWg&c2?}plwq*QlmTXK>V z`yBdZ-9QO^*|o_KSG|=-7Ue8&ixtWYRH31c1u2w~K_-O4H+C;qKE!HfZ}5*n>!{;! zc|z?ng7xsAsqTVQVG(peItSDky>$b9i^uApUaOgHlOun;5Iz#81xorj)ys2RL0om@ z)$`K;>R;sj@~eaho?({HM7&*|GOIJ{|Rfk3Ju zQ9ZxrS?2hKt4=#Ikf)p1S*5$LC|HvuOk7rvIaRbDj{QckMoE)+N@3(S8ZAxu{ z2g|YVJdI>vJBuW>7xxsf*Wft2zW+t|F@DgMDgUh?V9Xljz^}FxY1tYQ41H)Si|5U( zN5w#WSaF^6P#`TX>7Q(UoxIVW8rP39WxXHApa;aHaBsctbB${t!Bo25MAv8K5`f=8 z6f8}*F$3s&vj%&U1d7>UboB)a754s*pfADk8Xj@;4HZ81_xIXB??HNK_=nsBuzbSi+_j!*FY~nat{$xHO=%^Jr zLgP1~!xhvec78-VR+w;`kW{&s0?7jpkBDa@qu!o^zWv@YCgmyD{Xm)e$;%sX6sACx zkXRle_Sk#;b{nkeM@-gDG=cq_nOhx()JE(&>7}UGm*w*%>XLZWWduWx3{`KPHd4Dk zHdeqa5&{-zBvEd8QL%jNDq9Hc!+J}JZI`#$^1hcHFE1B}eac~?*@^7!ryo-6;-UZ~ zY~4x|WcN!*rhmUTXD67zPQ;?d#?g*?aw*CY>>+1p$;Wt232{zFTAmeLT8)iL7WSr3 zj@^mI0^}L`^NX7IYG+)folL>kp5l-&>eREvRMN~o*u>gS}cEVczxz?le=Kv zyg-fVW{MjhR(+Mp5wTN!0FZF9<_l4q-e#dBXHvRl>Xj^iuwG*>KAdT@O;CxhmfaSc z5p%T{;NXgDy~q;k1ADD(939@;8-BF*LSc#0s9Xrf?45F7`GuUiW9J@%tV z&pH3x6Woa(5Z*eJq6+KeT5Q^vUKgZQf^;pX#!bW|EEKb|s~W7{+?78adF~myY3vGN zU)}oJ%UYgE^zM+EV03~z50VJ248HMuC%_lJ%;2&6QD*xnfO}RSo(0`WWXxDq%{~{4 zgd4g)&_!(eK~~YUXABmlcs~Bna!$Sh9x>_6x4oG!BR|ATFbe zzB`>mJ|`uPG>pe#j9>)7aYerdW%;i^V%f6eqKZj-Y6A;ZV*YvMgy{l;gB`T?2}dQP zWAlAezr^t6L%OnE>i%kTBpBJ+#01MXmd8fz<_!nAu?+$MUU{553hxxWFf^}t{V+)t zZ>|7}i$-!Cj#WZdOPpMKR{5hJxi4WGiUe zpB=UQJh&}{re0BVwA>Z%^@3C5S^&4p)B_JH<^EPMX@Zx120)Wd0%IbXtI-rYLXL}R z1z43DjK^H)g@9TbUL>AM>i#QJstLg==khBVlkxzZ&Zh)U&_sJJgey0rI4v1}{`y>J zS|8c!`|7S@C&Z3gNUuliJ0pyF`n(~WBWVRX!CD^1t%Wgl3Co}gb2BT1zEIuB1Sxje z{|s|dPyYk!ncC)`VFbC z9i+rPYMAJupwH{BZN2cFfakb()*0FY5k2UnakI;2-@ zZclSWR~hG`ReK&v=52^HWDFS6>*35xhwRnX8<#e$-hDNM~>B3q~G>KLDA2}Ci@t=gbsPmWXTuH@DlZjW1^AA{D3@S@^>cNU?nWn(fdk z&FA$;fm3aBC|2meJCNaUXX|4b_3C8%laq!S{V5NWDuGd#`fD7C4WrFpjiru7a(P4^ z1)<+AwX-kp2cHJ=>Tzkz%`*ntl-G^@m*a6=t8T&M^`t5z{ToSCeR>$haJ>1Pwd;*fV+{a=M`a znZFe9NeyCuS7R9_B2vUL!1F+1;d6(VT&LrKi~%d0a|xz}wBbzBE6}i-+TDwPairXv z!9%nFOZZE=ffWqehSFU3Tj7H@dGuZ#FsKBPpT%nxsVbk1VM~kHhDx_)xn|3g7vjc6 z>Nf}{L;#d(?+n7HJc2n<$&2&_!P$5B%`?G=;74a}JwTG1a~f>FMn=2d+mmtw0v6yX z$8@E@8>f0m33eDiqMNT=_ue~_6x5?0y^%b6atUas8)>&SEBpr|8%}P|?Gkqdxh)K1 z_Z+wD27w&$N`$G^=2a5Mt@pk?9|`Sx{IH)c>ZneR&S))1Z83?N30UsS`H zcOOWZBUoT{-)yEpxB&?LqJGtP3{r?`2}Jq)6Soi5E6kJ^I?IXMy4LaMn|AH8(xd?n zm-cUg@D2G}E3PkHGdHgNICd~&;twIrK3bTdO(ms|=-pQ-k)sOo7YlT0eRgLy`*$+R z-qRojR9_QbrWQO3c=2_`MGVROULKOFZM5kqaX(hyWWLS>!(Hhr*h1xtzr1Yr)saw? zujg|BTX`lKsO7tVSHQd5w`l&sS0gg7SJ6{P&IKS^9Ty{WQMoFcf-=%z1d_V25(CgD z$7`s97wqN^ja9j#KRgZ{Hg17mxoid`Uar2GAu}V5nz+^bOrn7rcojQ*+}(eD2>zpB zW(zkYo5C>x<;n={`qhGdi0tx5P{U@m$=m#E9Q2LA$1xloH2C{yf)XzpruA=~b3Lkd z@@-dND1f&7A$#%O zD!4RmWoPH)W5$Ak#e&E3lD!j|NSlL{-PxJE`ZTxr$U(Y2o5X@e+MT+V@s`dzr;)j3 zcRJQE!Jm(UWUp>74je#dvu%48H+u5WHmUfL zPp14JrY(za;6W1uW+qUnoH~0QR#oc;m7_9LhpO;(g<^5%utj13J85|J= z#A8S2&CtKnlC(#@&zN=dR=++^wa9i@6eD%cChYT}Vs%vYa6ssaHuUi;3vGG7uS(h5 z&q(6W+i2GF>u&O>mL$>=;io6z4 z4LX9f<#LZTSht@smx}?_LgEwtB9*(Oa>`#&wvO6Hb%l=panTl_9CjoWI$}1Lk;kVC z*W_E=hd59S|53S|P_;z6v`*=_x0mXU(h}*XmC6r76c>1IxMburSuz$I!ml<3GAZ6Y zH`1eI>W#|qP1WsK=MW)K4qI9_gTG|*@j#(EZ;PGl>d5i=;j6`{K3URWfdZ#3Por6R z|C_HQJ)}6)I~6d`_~Sv|^~=+3gWn<7l3*7n3E>r#yKhFA^DZvyd^=HJQbbBt zt9#L&i7an>o1#a3N;S~}i!fI};`&|{8*{P; zSmnv6KBOxzcC!IesHJg7eB98$$H04H)HkM_d@d^;M6;1FzN3>*M?IpDf-bK!Zd$|t zHG$aex;;`fH#Aws@Adwi zYa48sX=}z_$NcmGtf$FU70e;KOiLnv2xbCXZVr@69`_y1fj&tgAxP74OT_qQ62>%1 ziOyCn@BIE;c~>GM4F;Ty+?XLH8wp+cLeFixZSSSg@$8kejj!k%&W3X-&vn8v)^3bc z{=PVpvyXzkaUlApNAEOs>NP#Bark1bi!Yo=eFQSlNg$$?0>M)Yd>re|#0>m!@zo9b zbD|XVVukWc%lGf6b`oalB)sMRw#rkZbn_hX`l@0Lk2ZW7=B6=~G$H=>0gqxLIQo6Z zO=cuz?j_FC1-Zd}l$fPS){T{8I86~B-Y0Xarc?>)r9d!7@r=|Rh2`czhIRfXZMh_2 zF0X5tIw_IlDv(}#2$WXD+%+XXSIRMMKc_i6ymQ`_gZX`lN!>8;_lZlEi& z_1O#oJaYCqxKM-ybn6gil;G4-l`zc#db7dTi&qV#8^?mMZED%B1XboX0kF6TZa@@+ zst$e@u9_*~+cI%HNl{OMGjX-P7m7#>(mOEmsO_0nmsKO=07)pFrkVJ+K12So$#iuH z(fr=vhnLJrJa&h|C!1?PyT$nHax%~gS{kvgcmrT7`0|@DV-Tz-J zFE7&P<3kO2R$$@|w@_>^KYbK?du!l9H(SfuN_kUcT`2zL>t}b2i4&e04@3wP z`9&CdhncwH;VJ}V)vsD-nv#E!FXUL8Nd_Y}atpL&Tb!#cdz}b+`>!Y`h!nDDjnYR( zbwXku8FZ0CJ`fHIE0jT+ep|rYh-Gi2z2wG`FZ>PEoVcxrl&aOF>Z*u7i5={(gN5^j zT#J>tCc+SzbxC`TCz61g;8m*&Xa-&c!l&>z?6+BgK0NNSl~3x8U&+jQn4C9lC-qN% zwckE1b9YkA#kGmy$vIyj0 zA9o;)p;EPPRE%yVPl4`h>UB!|Y=gK7F~Dr+Ax)pQp1p_^a_MTwO9EBF4j7wlR`*R~ z36(~9iJVFg+1ZCk_m%mYs0;`h^DDj;9Mg%EAZSbgslbAcU-`VS{hldM^3ey%C-2Wm zPSI^Z3221(`VNJL>a?tOQ!JK& z4n89f?|w3&q^Tugk1~B7)&ivJC;Q|fjg?LiNoT~vA6h3HEGNyolR`+-3Lf{`T;??b`QC9(bxI&@hp!aH2!+(lqFGQm2Ey+bW&6f(#*er~%|o z82}e(NG>+{)wISWgRsW>O=Kqq^^40ofvER}|MPdqxiF_!>^D}fP3xYS@kpXUAALyv zL`?ksm>lCC#>$3n3V;_>6pRWmGLHs9@kB42K^5ztf1-xl-w(srto|4#Sq6W~p5BcT zJ5cx*Bflgq-{(khD#Cz&!_m*kkc?#Cv1jH&*(2nKKrpa>rj$I@>BqvfCT4%CskXUY zl0b$q9WUNXVTAgT@1*f?di^kwDr0`0YE1QVq*PY0Asyly^VP{1Qbp&zOPk!$A+90T zp=^W+CkJT+BLj_j;gq{-$)(yriS|x3@A9tZGVa!IE@BfUV&Wb$ld{ zZyaao2ud!4+Whww9)_V~IwhJ*{2${tIFi^XIT=l}l$CKe{A~|o3IeR+b)UpCZr=dS zG%h4!I;2uBrGniW^L`(dxPwxBL4{$JEROU%hxNaI+mw@P5sLse2*nvO(D^ z+j>}$8yClMK;+r&sz@3=Tb`$nM?0@${9{HLmLTZ;8}A`B?v zNf9y61s&nl#8q8ww~5I8vL0_KblgU#kc%8 zY-xsL%aJkI*9a3(O-40D;YnSB93`H}7_>7Yh=*wgQ|DbzX?{W`ow0Q1WpxP6j_wa6 zpAP{#tW$ZBJz;F~2E|dY?=Hb*mR{6N)g6dfu1&zJf&2E`&+J4mrve&fiz?=Z)g!$46gng%*(uvxjNHxI4iPmA4H- z9{&o&5`Sgbr|Vt)xFOKat2l2co_A3?OR z#A;lw8XhSl$3>-(Wm$})U@HZU8{*fWVH5LN9QwdK(9#)VUrE7T+SZ-RkaocT@RVCD z%KqDZlIQ-U;YJ2|;Nkq(cEgLP|PSy1N^WbO;>kkRl)@T~gA>;m{nq z5$WzmO5)I+v;F>_=bhj4j=VG1{4v+eT+bh#jeD=PSKaZs?|bcgS)uXz?S!0M-ku!} zR{LDr_nv5$UBK0o(Ks0C1av))scS0LwcPN9!%8e0Do6; zP&~1IIJ+2{s?f75D)Ef)(4fM-OQBP&^rwzpk7QEcG}Q=TYCHeJh}VLcW-M7KqCmKL zDp{=bxB#zJ+?#4m`85?h*x2I+l-&(iw6Q-PBB#CZ`A@z@?`N*$QVbF_s`YfkUQ$JW z@XYxs<{Ld0WmU|AfIJ4qK&IQcU9s1CfWW=!FF)m?uppM9Lo(Nzq zJ>3`8qo32r!)R#A@V@#%S%m|qVFOW7Lu)uAxYYZ*30I9DUkn^c6Ek^8Y7D*4p~}mK z^VKKG_oLkMgaV%-Bybjp;~%953WpI{6@hAw`?&b76kp1S>Y-H90HZ?^S5No>lz^Eqgyzy9$(N-3Pjnr!M-L>eVRu5{68 zexo&P^;4Wby;e!$AE>jS84Y?guCzRDeQnq!N9dk_4wHMc3yFFf@dCypySu@BCFN~P zg{@};>^cS#bmO=ZT!o2{&VSTw0sLXGsy2I^GQB!s;F0pujq}WH`tpH8U0vjy4j<$p znsdE1i(mNen`9|t+B4xUIwyn{|jpOOQZ6|BaH zQx*C!h38!z0Ev~e7XjOmObXZxP4pYrF7>BY+No|!JbwB%iS9yBBZ z*8CmY)`AwT>xG7~fM5f%@uwdx=&?qrhQ7Tk2tgK2WMyZ~=BtOzDcg|6n??c|)q|JPdOq9xPamA-;Yh#zdVv-$AO!T!FwkIdbK#bOr&Cf?mdY4plO@|>z6jBWPao!U= z=&VnCg&1C>?~51HeR<;MHf>~-J?BsUia^W`cVKhq6!?)SzYVTTqPZFS#7rvPq zU<>D_+idI0NTcD#jtjlH*}GYAyIaawzg%$h# zdZH-Q&xR+N@Q9z|;BmTm?e}owUwwhB=y)eTtrDgVs|m1|%ez_1Bm4%jkc3tikg?b` z2fmaC75$oY)*J7B|NNleY=o!IZ;BIG+3>C=??6J?4j{<{TBZldiV^{?_pjBrjYfS< zfVgYkmuq);d}_DD3=gjO;*B=pCy%jsX6(ZEqgI1xxTSi&%^FqNH{)|3hY!af zV1^%*9_H9nL(`%(sH)RRrqDkgY~nSauUm!l_#v3%Z0FS_*IFxG-c_@NJWHK|<2VEq zaG=m6h?A1jish$Lf^c+xlrW&f{f%jCH;6mQM$kGs@mNQJF9Bbo1u+5pqiJ|F!p}#` z-evIB0zu@=bl?*riO|`KfeDmSZ;8Qz_)*4{6ch_NUKcZR^q^tenV@RqBNF6}WNmy9 zkTf~X$(8WrXROAxr#)0)TAr@SLw*L`FH?!@=fV-w^L=IZF^}I9Ni@EN`H!z_`tZ{c z%pES`P_-F1-J`lkDMb`@kwN4;hO8G!w0f{)mnRr+ABA@Q0@cJ`g?j}7F5 zaF-qmvq9+R$DlFs_#Hi=2n@b9p9?j=2C0g3zd0#`Zqm1;k~#rC!W_lSQlQ=470;_t z;M62iZof#4rduDc)|;E_+~#WFq_mfb(2^|t^BSsWs2NsA;hso%8xkkykS~{xP zly+EkPE{k}WfQ#!`-JGYlXQRdd#m0rk~U8N&`1t1erB++dZH6jj3=}5Ooc>1#kNBF zHt4&{K@F129fZ7l@VAXh^@b&Mcx&clqs@bh- zpKa=E;^y1L+oiL+mwMkd$n@lK7SXO(uB@9&uF;!6U$>1>z&v(WSRxqYL^mM&z84VR zJ*~Um=Jf5!Tj-)Yt(R|Y(r!Ki+I-@6mw$I%a#LMaLk-Wm`=vPN`<+@qdx{28+dO?5Qx>oA1|57bX509X`yPyAl(3onSqT-FeM+1tF60h(c3f8Ba7R-Mwo( z-&urAaLvm8N{;jMG0Q^v!KTY`!28pD%k1k~!lq86#F_}KVt;F|85%81klkYvDCZ;G z^~u}q#q-45cwg4Z=IfH%ZRE%2&ZpzeC&YK}`0gTr)bZ?_R?3pr`)%!1)QUEF(i{gX z7X%)7>q=_IU&7U;P0BndT7V;!nrVP+;zllp z-*Y0@Uwb{z4%|uharDdVXOtYwkTy#GpiX`VB#y*5;5t+u12zw+Nv4W!co5C(C+#M` zAssWO|1iUacz|tZ27FRJeDS$NpDc89#kl*WWa_Y}dce=|b0DlTGE^a4Mw>_#^_zd} zi}N6J6_DiD!tz;srU&5K`{7MEn68!13hY(`4&pF(%OQ2jq+ZV? zu=VAn&YDPl)6KYu5u(t!9$NoQmerLZPH&RRPlpi~m{NJr{7RoDHRgB?l_^MZ~YPp)ad zp%a*JXs&(B$B!|_q#PS(#WDFPa#FnOpp)?e{W$mw6kD-A&x52O z=sS*zkS*wKeS~3e1HQIU8n)zjPwQpA(N~?UDBqI>JXT*CZ}or!8#Y-8QFJrPgAQLe zFgdILPTdY2iNUq}NJCT)L6-XQs5N^6lUyzBk+ih{aNrDTZoE;70&1#8T{odL9z!}) zOsbh4xdAmDnOW23R2?{AfcawYa$C}Nrt%9B?DYtCdwY!ehyZ;=u3RI-W{p$lM`U8E zyOTD0VtOqjKBDr=CK-o_`kV3XphiARF{8Km;V4=PUrXQ5j8*TERa5h*fv5>joklfhaYCg#|JzM)Q0xvm~d zGFcw{OQ=L#GaH%WgB*E;8B&V;LP-wltW)*iU~RE=ZWd;lI45JuF%(8N<)^Rplyx#* z?(?r@xTf@Fy2c5)AfZw%k%;Lp*7{^2KD6yEp+e?gv?d+BMh535a&ZLsB;wnSEp;H4 zh%6(!&t}Q}*@WsRtF$e)>lQ^1Vpp^E9%2qkwDo*4Bm&6$gX6D@Wi2FuhPEr9j^l78Y-1V1YL15mbPlQ8pO}7)OBC`& z5Jr*;6|{18NhRrPrK8zc1}5WHJqcKvVBa*w>=P@AcVl6f{{4f;5IuW#CCU%~GR z#kWhtiSdN~ZJVF*@pl;?I!Vvwc|pFtuVnnmgsLRqo=9FPB**C^8}Yuv69=M;E*F>E zlWE@kw^uH^w!u3W``$My6HVg&Iy~>ydoLp?U#)DPX6qRlR$4j+sP!h6)E@R$FYch* z3m$H!S~MY^y|n2WFIL^#l3yh5L^{&9NdWycL_(8U>!%uI4$NU1Ls7PRV*l1Gi(w|T z(O&=Lj5&CoL&iWknV*BA_Zv!YRBS46{uL^Icr=nJpMU9h4dTXiHx|@+_eu2u<_vEW znUBG9?*iDWTZCjAPSldNAhkxDnME;c%?P0iFtL7^R1c!OCHu<7LoX5luLxek6vXCnA;vO(Ri%v1nXtld~bN~ zOB{Njx()jO?dr}3GQs*^tCMM>2pJN{?NWDPO0@!hXj72 zYNfx5^x@Chu9s9LbMI51urbX${aB{)Zw(;Zc~B|3x)+wEG&Y1OCszEKgA<4Y4wFW+ ziZni^j8R6h>qq~8U>$8^4UYvdCYYRBzH_>Id>#3ONs$hWNB%N zz)Z1-_-&?14OO0eQvYd^b}VcpSMq({x_=%v;H9`ggRE8%4xMBpke}bFosq9AZetQ+YJx zgPK*g-8lYa8cMlQIW?iU3UOR-KuaCk+-vRp%Aa0Wn4$IMd#YAC(_U*ME97pu;hE}6 z@P@%cxvztIKvlbqgc{8|s`bEP^Dixr*0CCNW9dptKLtx*ir{YeBhk@)X)`XmrebmJ zy1po!J>xBq@8Nt3NJ2GGv+2)$q0YuOgPG5VK7nM`kOJrL=6={vrWJP)BMCrZ;uE}4 zPWmNpXtGsq*+)z@D9st-(cA-$-|m6FlUyh%3ab8cO(l*wV~!O+n&Rk#Cz)yfQ#X{y zptd+mzqa`N^)G>tkK&n520y%CsB~}Xlsyt#ZZOgzfPQ*19>zm|R=rpfs+2$PBRh%_ zOZBr=#LlgRT1r%Bc-Ti<%R=geVfjX%^U);Z7LjVAkp31oxpa$lKaHOqX?U*Yr@Dyc zI{H+@pl=FMPMFzpk~^H_0WqcM*63?rLVJ+`?Us90LmUSGe?cW0>E*F}eGr{>%*Qag^t`4&c1~4Q0BUm^Q zP;M#RPN`rWx(6O#@HvN#+q@7J+Fr*v!>ik@ZvUy+1i3V`5jj`3l|X1L25_wplmIx5 z_tUE$GlZ0H@?lreOJA=;H{jpAsIM32GNk4`iMFwCwwMW@-sW{cNvLFA)D!exui%Zy5HOvKBXuVBs`qvVUAbV4sA6J^*RSawmj8jms29g@dxGx^#Ng6YvJB`crCP`=RN z{CIM3q;c!1JhE2T1D3#f?WOcg(Fe~n_6@V)^sVtXy;moa<_jfs(#6cyLH!AXPU?!P ztabh1K-pr_l03_A`5bf4-;WLT#=he6iyj+h6Eu|n6!dwZi$)ZnA=9MoUllety`*TE zD~>qP&5QQK$}a|NGnHio6Ehm!$J0q!>$b0vk%p9+LlP^wu)MNP&Zi#Z(J zR8IVwWZ2f@sQ;vBjN#UsT%`M>v)6|_+%o){?4z9R=`4-10jJ}y=>Ce6>e`00d==UPp(h9GYlXR;%4jT>K8vwCYZdwwtG##?X*0uKtCIhIJy(O;fZ z*$R68Zh+b^AG2CXDW+;RuodpLk~(i~#4miG07UT$R>=#;sU!$DbSR&~XnMQ=VbCpI407ioOhn&L1m1$TO`cD;$BbG>9MR-KHz z#Jh37xvXHTe-?DTWD!8+>8W@CfQF@vgc70c7#mvoQ>zWb)1LCR=iz<(cTOD$KO>_u zOr^e2c-*l?lo12lISUT?_{7u zUDA~GerxaJqtc+-VwN!O=w~`EYjtl49HclOGx$Wjh(unpNxJq9>fr@G2P$8!E2nvt zqOUb$?WwIc7G6#3QW0KToFlIeAXj4bVyHF=juz&gC)h)$Z0_>h8=ZC5+~m2)N+^@B zu%(GGv8DYyi->gfAyzi@ncu?o&8fEk2%VuOCmD+Ja^G98J$FMP?gwq8GFga)E|&U- z;poo`DaemP=*ng4P3-sie2;!o*kWB*!Y?t=)@0;C@F&l3!5XR2(#0~lfIm4 z`YSMI?=$NgZEN_Zzfm;0?nAY6d3qJ&dz*Qv#MFX1(uhkec9GIr{eFFOl`UPO-gHe$ zZR{;H;jy$(LaP4LV8%!+rFZ#9A8bt@uUVMTJkd1Ab^;&|N?yDax)5j0+HlVxDAJ6; z=ejI{_N`nHUH4~>hd3rW_)d#Vh3+HzTH|Pd@a-U0ThhZG%j-3Lfv!FlkkuEvjhR_A zcsF<>d*=fZO0%`h@K{eCrS|%EGSsB4JHh(Okx07;N;SaD>oB(u)(XZ&Zf+m?pMU;CvtJFubPj( zB;ah<7}l?$Uti)VY}cMB$zkt~52ac&H6tL7TPsR;2F*q{OQ~-*uxk&rc)wgNH{%Vn zPI6&A^~gx(cS9cV6>@kqU}xm>VIsHv1Cw%a(5u2_H+i1!!Qh2UXUdQXzCF(+l}U}Y zhVuQ4(~4g9+uPJPl3P}kbpJ6gy+!3^1H=?U1qs&kwxTDQq^inq`tkM0C#iXjC{YhWzgTu>`Z>y9H zn_0o!M8byN(NDGMqO`OQEI7blkCL%y2^4&y-VNmn!Wq zj^d$MnU=6f*)Rch8=QmJ9W}j`Evu2ljqcxsxfcWGaV_|D*UrZu7Nw3{CUKvB|=DSSJq-S@2daMAPCr&P4}?s2?0N(iuA2I`%o7CHOlc< z{%kR{rqoCX?Nr|fmLKbNF|wL{LFyy)-ceZL0Hls#oE)EEB_~T)Nl4pBhwNT&Yp0|za>rbi;tM}#xFa;b-a~GG$`C>*(}yru1tBzi!alf)fvY9E*LedL>3tzc0B z2vy~!UOBM;ylyM9ifM2f>*>|Eqs;tu%Oc~9$B>9?bh0o*D~0>}^{Aq-t<5&FlW~69;lBKSEOk1D%m|8R*m)7B+1&O6v4jn2 z{{lKHscvPOXNS%b448c4L88EC7&IYZ&jBV*uB?OosB}(SKFzm}0-{1?lVV?qh7rU@ z>$8i28d5DuZa5-7byT-)hYGoiTUvC84;b1>0te+(UK|m%ah^5Xe%ado9RjaR~kYl8D0#~NfDDO)+QE@)Q_l-wRKd;e6s8Y z9WOw}IS>$uQi;8@0exM(LvH-q+m^T0p@&}|ot-v3|As~}Z4MDXlXT>`y12rgKcx

    2m*FTDuZ&k~Xbg6Lgj{=~#tsu^O(8&cQ})8kM(Txvy-48HOxm<9UQ;&9sS$ zmd&2_(Qrc%wR_m90SkPAmHSAp)S2Xhe3T0fFPJ$~8){@~WoCMX&pop;C+ly_^0srh zL9xv{r>e1%Knk9CuB`Zp5ijPc#S{*a#7tBN1104bb+aFV9l$lnv6|V^>JJ8%rs_B8 zCiHFXNBKxBSJc^_6(rCoe$ApQ+b@yS5?fhc5*LQ8g=)wH*E8mYel-Se{jXjlEepHl zCvjF?z6@}1w6Kx6WQfGFlV90C93P(54ztv^R4C=JuqAG&KOTRjMk{$!ig?RW!SLr! z#sUK^^iF~V`?J5_lGi4Fy`w=O)Ho)V3qB;w{AfX`x}#DAXKFmM2S*~Gcwp}M2 zkA?SLtg%L~#k2hOt>D3&xdqFYYA;_<35U?A(Oed|yPj{uCJ8Inim^)CBH_l{-*sNK z{W-p{ZNcbJh~@ek{i433>0uS7*`T54oV`I&ryg0fYv{}HZ~!yaU4)<8&q2zu7_w>G zDdOAfJ@e>#k$2gekf@xlEMryV;AjAZyPix&sEa~*R+RBP zv$(dPqiS6DVaVwhoo9a(i0;jX;^xT3;Qd1{SY(N5L$|&$8l$W)(|!GEXOCHzX(q+1 z1aoV=-En_-UwUPzrhsn(jdW2*2F@KE7fNLI(rtA8YAIrzh;2eZOlrF3G%+GnVvFiL z_QwjqF!blD{1J{ROp{J?Xwr6~GGPpZ@%q{#9HV)W-Q3pFo9j(DwMi2r1A2O^jRqt( z$KhqA(nYHpt^53t9H0=I0NKHECamf%!$bEmn;MAcaXM7f6GBlZ25lA0}sryqpln)9<UY2(zMtL(@-kJr>bl4$I@l!38UbG`!2RUerh!1CG} zQAZ?UQe~>&LcX2$hxmUQNTQ3g_|gD!J$uT61?CRgs0>H|OUr?_=UV5@|G54h;3xp| zYRlH>iyIO1CT(|Ci1rydIv2^+6NDCO?4g@76;i>JV*Qb6nFI}>JU-dkMp91UaA9Nk zez0dPniVnS+>pR$WcH!ci7n(^!?dyN7gx>_Ndn+5`Qcr4qYBuXRMto})iLr@Sw2CF z{ApKuLj$?HkQJ#tDp@rAo;+`9{wZ|mB_oNwj`&BLdH#&Cw#3+GK`!6@-@FFeXvyjL&S-b2e0jR#y_Z5H8^8 zy`bb_W$dzAS7ukx3rRWuIwa=I9+Aj9??gHn&CY9nJ%ICq_$MgIG_L#{s-r(cJpo;T z%;z@vKj|itmXR4_Z$Mn`C}(&nV(WXJkh{MBb~s>30|54Z`n733oZ|9X8vTY6>(G*x zfK@~mJ{9j%S`vg}bPYZ7Obn~h6-ZMFr8V%gB2Oxc+jy;Gk9zjrLMsZ6^ z%sgGwZpzuWVpP%L9qs;yO$( z4RmMHKF*?tQ#F0!W1Dy(Ch4`;&XeI~l`L5D6Jylo)pf1A#PGLjy{8X0x?wNTqj(Ck zGf+Rszb+BHSb7K%(#r_PxnuH~HZ9Vc#g$VHM$CO>N$ecY2IJ3NRZHuCXfGW<5&^XT zZ*QA7&wb8yb%I^#F+z-7u6jMXqCA?jl7O1DTH)5wz;G@_(3Dj=Pna}GuTB1XKa|+* z@{g^8TL1%1y}|zXZZy%@!52~FSjasaB@Z`a%aH&%)n3J>8}5BK>+dmFD5x>UwNZh= zI>nCj)b!4(Yz}BS}YN>Y~IGN>}M-h1|_VOub5PWV>j7a^X z|E0m6iv977Ro2W_*46j1ob*LQRHmyp@=cO&?FxeC1WEeqxoyj+G26f+PveX~wBM{Y zOJYa=VAC6v!pT=-WZBO(Bwb%#{KlLPl)JBDFcef+%Ef*W!qFi`m|A%)IZlwD;jBvc zl0$l()vZXV5_V{f*|KlF`L?1l^x(&0!&hMwg=^bRQ^c~s8kgId$t`?goBrpmBqMSn zDzavNnTB+dCOYUeCRAzRr8q(@PCPghiD0MDjWfdHIA&>AIuDPkz+?DrAHmXsk+*K*^9>OL1 z8mLi>y6be6EbcfjaGgRA{Ta2{zQsc!ONCD-S!?sa-8JfHvRz$@?b7_l=)5pAamJ5> z84AC9Elcx^QDCK2BAc^lc^_p|)$C&PK-iQirqzE}zh)zjYij4G?++5YP5zzxAChM-srR?d{yp+b*!Y~!ve2aNuD9u}htiz4m56c@^zE3CO94r;p z&C`%@FEatA zNdc*sNHi!bOVqB{N46l;C@6?ycn z>xEo$iPv7@72B>n!K^OV{_%P6ftkYmC(dqRTV~Vo;o#1NX5l|2*JQZj*16#3&^qR} zn!700CNf)+@yV|(^ufnxGo7f2s)k%&_N=(H+-3t9g&7O?({62Oy1Gb1obKzl{#h;4 zdwzpgJgI4S`TS!f5`_l3OsB-4Qm zp3(AMOCsK{XXp@8Y3XJK?J%zorvixt!p zD=u;2|H`4HwD3{n-P@yH52CZ&_J#jio6^?fRb(Q;?fn&2w7ZY)aHd?ETAJI%gdTAT zVtrSG!(pm~;#&GNMPfGNM>3c`yU;dA?~VW+|8J)I6Bm7?$D zZk)jLRjsyTeL=mJdg29yYN&%lb@hQtoK4EGywFg3avY>io_^y^azg$9l7-YbLx|B= z0bPolqg?!@kqkso|Hku&(l}#LuQCISWdTl*dy84`Ut@_VgX6=efy8@1ARG1VK;>jv zfA)1*nO~ro2>ohOX*LiwOgk&WD1h=vsdN|P*^mETYL$PNn!d6DW*|sbFf=?_@%-Wb zMc3g0#c@1FDo#-oVOcS7Q+y7U{k9*lRuDNtLgwONpua#s9)`mCImT!rY)@p|f2)*u zrcQ{XqW~vU8dm3}1%5)*#|VOCaV$PtzsWbN=;*U#H?=zPS0Xfaa?L- zzzSzgV5rmuJ+BdW=0qY2PDTL7Hl?82xq)6^&poVDmkGG#j!GJz{W3AW^mjdlR{KfL zFS>^BL=WtpHcOZO3JJAMY`T+(GkiyN6HPuqUL^F+P2)O=mZwNO8zB}&a_4tujes1? z&;u=2n>SzBlRS1`sJhsbHuxQL==00>?Eahj?NXrRMk^PqaDX+G$Rxo8hHjbjht~%O zsjU8GmdjR}0nOQb(O6LnX;h#G+o)@P{zq>ysKD6nq42{fZ)2S)?~zkf0CF6|N*JCs zXCh78RnYnay0$3>t-L2r@^N6Fb-r}7zI!A*XFPak6FGoWTzDQWo+@~xdVfo%gW)xl zh~y z+6NM-S2Lx2$q!TK}z07m`I{2hyzYq`__|5^oj&{_GC^>SS246vcIGGT8yue_bxRciOqb0e- z2J$kW#+)Zbrv3w{4>n|{=u5<<@X6!P`1BUi5FN|(@t2L?9!W)vtP|ZTi&2|wz%MXp(WY% zMqsSh^ER;_Y>8KfQ-LQ>t^*0~pw*9ey#T97$rPv>H$E+uyT|9+50rFU;Iv=)Ba~>R zm)nG-vIfR9@n^O)i~`-*lQ81DNGs3L{yw2l1`giyiS?&mvl2uD(G|I}k?F7j`2r|P$hI5En zeVnC-T1ShBAW3>Wtqjoj1e)_p$ZZMEzpu@ZS0SW96XG1_k51zZRYhF}|p8wUQYUfwOw9NZ@ zXwv=Bh}PGzbZnU!jS(G8q(f%ObCpb4cGeI6R7$?mJVZ0Ve6y8^th6Xql*&9Pr{zi1 zv$%Z#yTG2p9ML9s4}!2KG8(DU-mWXqzMl_?Qoh~-33IhvrCeai-9x4KD6N0qGwCXB zgPs-_wxm)rqM#7d!vmf{=xp=ks0d&ngoBgl=llBwCNbsRX5uNWQFWylD1$!UT@xsSkk%84J5%=%z@4mC)M1g zF?21%h`Gi}P^G=(*+t$?^7Cqt+*nC(vEpU<>?Z=k%YHz^v7FaVmEayED3xUP3#3R_ zDtXs|bBIS+_D7lSwX=V~Gbg;0uVYq~7J6NwERpNJ$(D??LTX!%cNaRsSKBKb;hRJY zH1_T$%~1=cy39G~$JyVF%7cA`qBz9OIV-f}qUd^N=kO8h&)R_D-m0;4eHecB{Y@st z0g$GQ(cIoy@q9?AnSqY~g>CyDoR!fsI8f~u#~&VLPt^ntP`n?xc%axr538=6Q3P}x z|KOBG+$FO?**dKjyS=@<>Chtm+s~)`QGmVxtjS-28^@*yr0+H(?l>U?@dhcg5}o~B z=~EABfkv|iW{zF*mt2A)yFX>CQ;~F5v^UGe^<<+bUl57yJBA&ss9>^Ib<0RP>vk$# zQvczVJ1}f>Zu$r5x}>iL1R>k{W+F-)q5Wt%(5%=dA(ccBfQC|YffsRL=-bX?Ex`sa z{7buxP5+Ri+2M0uY8Kw%q8=IX=~o!FB}!dYy~6pygX8JFGRvGTt}XjEe+8L(J! zzL^gDlGw)9OjeDMXW#^zVKGf55g31juhHWW@E#BF2293_+y4GV3Dh-|d0u=;4)|qF zpfIK*PDtlGiXj}lkwX_|5vj|^Fh-I?a*LlVZcx_el^{o&S?AXaUgq&tw$S?K#? z87maqFR8WtQf}Q)@kMK=cP{KY8FDT=*;lo(C)c=w14kX?$O~~<;5akuRH?1N?rG>= zohk8*u!5wokBtsc#2k*4zrckzGAm5K@=sbys!C=?b?Y8Vh2TQJx-wC-ON-QJTW**k z(9BtUJNV#Am;!^@wh;?O)d^78h#wBCR zo`pSWLw$O&2}y)bexVQVkh|y0A&CAPEzJbIC#JFn`W_aj*1d1NIK1#$+K*79~B*??CynJWB7gZv=EDuysaPeJCZLm^39^R!O!P zZRTPS*-0(QNh1kM3$Oz<{GLDzh2C3Grg~fQ3%2bX(%%|S4*#tiX;^GiFjCCm02qjm`Zq2Rl1);n<@bi+MvN7yVc*>T+FAVq(r#;&DhCA0K#nshB=H z?Nv2|;iE+>GmC_6Ia)I)GMM~GAod%>RXKc+h#xIuEDdt0nYG&i+ii=EDJEip4Y$IB z*%#YDYu=?WzBt7kpj_b*niG(dm}~oP;@4sc!5ZJs_2r_&L}AEblQ5hXaj^^qr&Sv< zaK7DAa_FACQI4uTISDnwoGI%dxwC+o$`wW)6p)TNl%Gnf1{~dz)Z!~!JP+R@o5!2) z9d8&>uQyZi?|}K<)G1t6iowS#gh3j0K%%+&bXWL|T&zE>VlB zGno!S(kUf(-WR4~=!j`dK!{4N<8uyG^;nn$p_xO)p0=fXOe|N2N;}8rI86O~$f;?I zEczJIo+dn(09u?Y3YKn;I_l$on1(MW(zYpM!&(8g)V{pmYiZ!o^Ocr`Wfmy9{OSjz zrXMh)^hU*nY5BJevyAY4`cV;E<0KYshDSFz*mGk`?1vY-_H&2VQhzD$6KebW_h;`Z zdNKqu!trP^vPI=YajJa)cXDM5HC{Xbn*(}K?f!Z3%QnaN8-7Rl zu6(WZo}OG>C5mYT!#F3BBA^CoS=c$Jd(ACB%qHPIJwZ70Zi=}G4oP6&FRqN?6;W1_s8lTv7`*C2QD%1(!A zq9WVKW;8Kr_x-#1Q|);qJdse{P{IU<>0gE)Kc_12TagLPEvm&(K1w;_IEIh;pH%1F z%fF&HKMH~xcm&CzjIG}AmY5$j@@U~bxD&|FK&}%3UmAbp8C!6^`rOmQ&!Ct)ED14iJC^0|!QPUB&)#a_|iyz}t|i~9mSXm{ow?FO+1HZNH#`aZs58BM;(^viyNx=A}b^UqW1Xad1*qUiOpL)05#p2f@NgPlRbToQ}C$CsV#5I4z0C4GUVk z-m4e6P-@cNnyD!F${=LCOFq;Gl4UYe=FE_7PLhDH$F4Vn+qBPcW^^#qT$ws``CR{$ zBgX^tmYseT&jNNl;V}h3wP&k{y)7z-j^_$_0h07fJv0GSTR1>a;-!uU)Aw|9a6%-b zEWOdkNZi<e&tI%e9 z79WEG(NH$*U3~Mw?d}9QQNB0DJJXGM7GC*Eo98()nM|_oDHh3bk)c`rs!92BFYV1U zbk-$ZNv^AmzmHc$DM|%n5t_x`2c$?F?I;lbx}-6To#8TXjMb$K7sugMWb9V$18uqK zX=tv;fKj|7E`Fh|yKa5u#M=lQbHtb$a}Nl0szCJZ`5w<1 zkez}B5@FY~a-z}?gF;MH7B6x~n#EC$wVNs%b)dtXU)EcmPZ|cYG!Hjujf8o>FQ}{A zCga?&b1^JuGNUi4sPsLlMjHmf$Ms*%_$kYvS#UC9O3L8Dc@5i|%9YhOr%BTQ*#W+a zl#d=XHLiq-{6l`OZ9b!?V|Um~J}yAWDEq~%>3H5n@{c*FKIj+)T{5$Dn{=#3U-I)| zn1B8~6LW!SHr)1`3=eEOX;!hbeF()R)*Yi#zbl~KrAhV9o?l5Pm%#tGo^Px>or9osKrF_XZ z*rXTk0jhHNPz&6+dqO!*Oc6dlX$8nX;uj^p)06lD5B5i^Ejt#QuLDeU7_UEvnqiGq zz&$}C(zGnwOPNP_2s&79f6< zj#?`m?@d+^Tz-G!(>jImU_`$6#Zq=;1GV+;<56}>(=K^Il_g>uAWA~t$RunsR9^id zOAfKUf&OdWia@Pw#7SoEvULc3*qlx_2XfhjnOlCN%ASuap{+5Rnj9Y_2QL?FWb(}+ zqhBgapKeXdf65+Rr`3J{Ih*)bvSb<9^n|}{>Pv&^Wjr!*vyFJ zsAT(iBSk?wXtTQwb~#=f|820I?)ZL%rpVTA7HaR?{rr^oQ_2%+v0RBDv|spXet4xP z;4vGFXj9bNljT?n5L9n1^J{dMsNZAgSGR#&dilPnE%C99I*TG`FwqQyf^ahkf*4ZH zlx&eY<#~V=_n%^)*~f{nxfYfQlOW@1Mpp=3mP*y z-$se`(yC>!0RlDZr=QWaDJWos!INu~H+qa$rb-dx!~10va>XF^5f$?W?-=SR2R4oh z7o^eV6MuZ6HAzrl5{E~HPCWF7uOzAiL7X`!2|sQmA|#HB?tEo0Kdq3Iwo1HeBxUIf|0);^}z9W!ndgzO-T3Ri01pBgW zIZvj8y-_rNB@Juk%gcx!EQ$UNb+IWpBEe8$-v&GQ8a5jDwyYj?y=^lqh6-+sV?Cwd3!BxSQ&Ar`QOuWpi zW+Cr0fuKR4_@F|87ab2|&885ACF@pYQ{lO9u8P)R?Pcb}oDu7o!ohKTf!GN4#h#V} zlg0|9c4szO4oC7lGWV;YL6~zpWZm##I`L5dLhTC}u z>%jr<4Psih+QIZ5>JhPtkjj+>q3yFmniG@O~{p-1FM@a0ZRAP2>Svd6PVpfAs!1o6K#)M8+7wo@i_fU4E=+F#&HQvnWBN{ zB_l?L9Dg!?FAE_V-mLFwfJCwYLBKusn5uWolq((e&PvzPw`7$yMD(nxm2O~ftZ5({ zU&NXF{F9f=UAU06t~y=J>+^Ms-!$;v`$oK_MJue=8xl>rVF)Qb!p7s zIqVQfWuBLK#n=#^SgE&@Y#A|7J2eB2Fz z$8!07W>K*8e=6tT^Nbsxd4HLxzUs(NE=T<4jZ5*L6uCCQfcMAz|i!;lsp>BASWaLcdP2;lk+d|7XL`P z4aePs1R+$KzK!$$xRZUu&%s+8eXwDD!QcdJ>?7?LQOtw#l3C`_g zCN~nA-);9zi)|Rffof+F7?paE#5d;#Z1x4jH#bW^6Z-13b;AYeRsSrTLgo zyr6xkB+`i})9?gYe9&(n#D>XRH8R0yup?yo+S&pOW;aBk?TT=6;l&8D_n|ON3yf+W zpOK?UQyKz#O7~lGgVd~`AgGH}7jFKhZpUZc7L>9X7r@#EPo)h;?T?p}f>$?o4R?rW`^i@k~@EX|^ zgNr}q9<>!Pfp@-UU!6}WVbcDj@83OKn0=@z%D_q~b~+y*1eJ0~Y3OAiLi{P;7Uz0* z@{LOpiao%$(2Z4`wp@J*dxc7#TMlBLAMpib9E(4)-=n3?Z@Fd5tVR5r zPtI3GDdjrG4K61 z^=x?*AM$9U7lN!DQgE0*N_s>QYrd#zM~nz8DQ)=Aq2AgC|c3AUVjiNkA9mr$$!PkU}16%;{9k5lP3Z%It8V zHDdcVQE4nhIN>%{e(IZ|Q_h+ZhTVcAFX$A z{iC3h<1L#ie)#0YEO$m`@Z(^)K6t=ZW@sp9o_KtRsaRFXbD}I-W=?*0;~#mNQ;zO= zRtS5Bz6P@{Zd5O#O!jq5z4sqV2$>j51#f~ANwB=kv*EfYC zGCMG=JwGDVDx^b4EUXmUM8S_twyrw`3+0=LbpiJND%pg7# zXZGs#CpSD|;0rCAV_~uP=2wq0-A_cFkAY}yPu|5WG#}k;DGwhATpHP8`%-z$tc>1A zOhhB^QsF4-4woOyt=Ot&|4egRF@V#IVzd&6YxSwPz?+kH^mh$qjC zsUcDRmO9Zr9ZQ{9XCPucB%X^w{(SCqBDXr2`Av1eFpg_TDZWbq(U0y|(_A&7`dd2e z4#{lqWH!x|D_hDVQ0#Cij8-+;wXQ#{H;O>ZeChkXC1L%DZf@0Gy$ARP$h$0^j(m>k z#Y$XVto9jc6p+I<#vQ+_YE{7oBR*`uq2?RXtB-p3vzrl)okO0e>I%S`n4hYliEi7` zxYrbo!+zceO}T3rsFQxpFFnZV$HtS3q=9Z22j;KFo#jP!;n}Ltoq2GCl-WjHdb^mV z^*yb?;?3^#bV_XFEs#hBfre~G(pyMxnSTPwIsJ6_nkrV}Rrtr#>K%M@PRb?x?kQZM zvI-v4#M#gHiL+nWGa5?OcPmXXEFf^#KjJb&1?&=OKq%0=&lT{^~(uXrX?9iYeDAPuJmC2BD&r|+1S z1y&14e_xFjV5sh^-rys`io%LfaiW>iP@*3jFNfTyq8rYQ$R%{w87XNFa7PyNi&t{L zov3WSt71ui`$O$xVR13EfK%Ii8Y{{wHy`x%o{1Hm(o5BgBOO(uT7I4hTi}HS z49jnBe2Xv;!?z*cY|zTg2q^J=mpoae(V`F3EIGaGRG@n&Q;s?HM?vd|K<#F155Fdm zn~sIOB~m*rb1xuen6Q;f^|1LAOR;uge1R0SU5z*UrvOLS+gy-i>P!WzyyY0!upgTw zlTsfx+V2zLO+G_|{h>+$8XLV!rJr>0WtQM|mM-b!!6#|2KWkaj_-b;K!Jes{)w#}6 zs@h$tX&@9+&0)6Mjm;;y4j-q+SD0yDs32^6y!#nnbHJV{Kv;>HI5Zu;VJnQ+WIcX& z?JIKy?Ig8ar9}_ypytZ80V>frEeBrFb7CM29c0Q^xN?~yUY^v}-%l1WNv`{(a;vHH zop=gUsz;f~%ojBX^r!Z;$Jx2haM>y?MQma@UFT{M`pKRNr)IyIDv>xpNy@3ulQC*b zf3PF60pyg%#{mWxOWE0f9CV34Uz^@tl*+id%(9cUw@~qPpiGD(Zy+P?F8@t`ba1{O zKru}Fuv_HIK(70cwZQ^bd-yYni{wxv1BKo48I8)0&{F6{pHCm-hclpxYVd8ZfK`5u zjC$l&=90uoda@&G{)Z&R3|8GsUaxm)FTS~isnTJRXQ=8tfoyzCqKvPH-y_%D@3~Kryds0Zdsj2;| zS^Wvu1TwhsfNbmg{EbTgW0Zm*9(~Sz{2(N`g+ZG5Te0a$N{HqgBcD0HY7BnEOPPXt zn@#^QkNv>-MZe-=Nfr!^-CF&C#r$%^YwU|Jq!w5VqK0eKYhYviq^#MxZEFMeb@Scf z0jEHN=Je5=3-(%DrYL)242cdRtJgMJhBow^m=i!0Ucs38mTO=GIs)=0%gL~j7$Y=C z5Xj~X&$CH7_!na)=w5Km2N*?44-TF*m(YZbo&SgtHpg6JFHabgDv84^2$FgUN8He1 zz_CAZ7$D9HG}{V0X&&ABhwn%;c+PG?ZX@YYP5*l(vW z<@*<=c`%J@$lB>{0)87&!K`z$eLlul#~<=MT$haW0h$uaA@y8~ACg}$Sa!pqARL9F z*AyEV3h>hqzlM`k2Ue<+lQ+8pslmTx$)#}&lZ0L}#e5P#8xQ=6KuapLgrm^&p!)tu%So)q-fJ zF^`j89(~T4DJr&gb`q*^dQ8H8PpdL2D3?7Wb2gfiPf#^+H*cHBPy>hynEhzUPwA-j zw9&SK0$K3LkcqIV8`w{>9N$HBB4fjsyV#bCC`_HJas4y0Bji2om9tUg`Y%vVUq^8u zvAo{utTG5se7hH#P`a0QxnMRyV0HU6Y;a*bVz=UD87?V`5|^dpQkIu)b9*0?3$FM1 zGd(wK?l7JjEmZrjgGM0dy|tT4o?-Z>BK(JjpCaASZkZhaS^CkdaTtJ ztofm3DVtVE;Khh@ceY-9!oc<@VS%`IJuT=I)?ubqxSM|;Wd?+}vbP5y@SsgNT5 zlsB6{0>7M;n|}7s4~E(*8hNd<)vm>!^cYz#16BT=^lyKBIdy=KW#42EF1{+=!O*CX zF5L%N)pj*WR+`06xQHNQ9j7cH#R4H0X)pMD%^i}@1SeheVk-KVQx? z#!e;)TsNbexM1rrpa>*t)(^#l+Hfo_r*#l}1 zbfnzV_&+%Z#fp!9r#ix;5J1vx|5omtbKNV$6}}WFpTQvKEw!0~22|JDf8M54AQ5!AphRgr+>Zj< z){ z&*%E@KT)M@O0=XKtDJR6!V`2p`z}yayKn5)aD*UqDb>I1jIt=bMeyBGHo^xR(g#s- z1xsKZZ;t0VGZrMys_`_ivk1=o7bIFEf_XsURE}oZmOT1T_J%! zd~L-%1SOCvAE2lByH8vAO5H?=cvjAD>T81Q`b==Gwfb58B@T3P zVu)1E?eQYb=HET41}92<0P>}%6#yK7Uw3E3QE3T#?5GOxDuIQIrb>S3+0Fx)M4U!g zh$+InS2*XtjYa&6dH0WtrmZK=J6%}MvT;dV>ty%C+8I^`OWthEWz7k84z?-?DMT|g zPEUAj{D!YmnQ!W7h(a1KYBC02sB2GDtPCwu&R=bk`y^?*?e6FhC;i<`KlDC+x6pu* z^wZ{g=SPtfa#*)h$5Wo+Y+&SBA?BdAf=8V`g;8UpK-p#RXY|lj- zLEc|4+O@Xm!J}%B3vRjn&VELSm4p-saFXA^HNyB(X<+wD_`BZ3#DVn zm(AKCw{BGv!|E?`Xxjh&tyJSxnO#0sN`IQMSGVq+P-|Tzq^{+l9kT(zL89(?ZqK=S zl^1_czD9t_yVgxAXH@;P?3_4|oGf1n{#FSbQrS$;p(>?kc?ch@92x~$jKLo0=-95D ztN*M5V*T4U!&GsAv10l3@5MTr|2_;HHDW(;{TojrPqe6h(O91Dv*erIRt3_$mi+U< zq}kGm*pq4&&)T(C~i7%2S9*7=KB`d=@in-rL5uK>_UB?l78?>HqK^7l9QM8g`G z=tJ&#r6~kRf=&Gt{(oXy{dI5ud-1<3@c&{3^j05g!OnZgnHUSTt^#=f_Q-jK2K}IS z8KUi<#CJ08mgI3Z#eK0Lbk_CDw-+Y+;{?#yh}yjcnW6-MBRd6vLm;5yv%k|jfc9x3 zd87q^*<_|7mlHx8XWZLQ=nG_+=Sy$BTd!7|00pG(+x?%69gRmQ|Ow>@*${)O`n z+e}V7!hp>sHC|MI{NCkxH=w6Z=dyG)`=OMvC(;ozOaGVgCVz_N#!&b?xcQL;f6PkzANQ!Ch;k};_6-ebqU-L# zngUdYe1G=$dt1-<;m)kn$FC>*6N9!W-Fo!H`Qq4rEZRhJsG$dau#Q3{Q zeZRYLmk2Y2f^~Y-+@P59pD*b1}vX#n*hf8+7I;EmL<-K+aQI(k>hKH#;Z%Oo5nxDjd;`; zId*f?G;Uw!i|$}Y65iT%`HPwLn7Azkxi*@II~n&CLg=C z{Yxu6^IX=v5qvWDBZ$LCl}qZpHSO=)g2R4F&MN^X?KTe2*^OVmIh_OM;1SgT%+6$) zPlc1=OFaYbMA9jpuDwS_{6%OwCWyZ@tn*zULQ7& zk$Ehx>)uKURnC+QCT1A+V_cu(?+!=F(>JozUqDOG0k~4ndhh&IMxXP{U#m)ClY$3u z_A_>R_6It3)p7>_D=MeuY`wWvg4zB#(+T_DSosrDJbvi_er% zyvT|4Cl_WxSXXZ$AXRGiYe3Hk96K&bnENTg%W<1p5gEEZhBCo@4l@K()p%%T{hH5> zI~I4WqXPQCztlZ(&=*c5@-^im=5M$+JqI1`yz3)JFDq26uR+dpZ> zV|rF#))5FHKr60;rXPGzG0rm5uSjL69f=m_Znxjs>2znFcQ;z5O8fdaw`~U!b-(sx zhL?Wrrm0Mf-_+78wd@-3*!Wo(_qbl(V zKjoe-M{|I+XnJ0ZTB04$n4 zMA?M!>bn`WuC&hi{2PR`Fc@Erp{5k+I82(xfxBEcGi+sPY_s78>D7@TYC9N&t= z(kJ*YQ*$Ae>Yu^0`B!M9MILKD4oBHS{8EYTCsZC#uZ32CKFDKxgqE~iRA2D8l05!0 z()~zV=qI>vr|S1=xCw7hD8}JbCr|L3P8Ff!na?X~A`PF{T0i)QUTuWQ!BMy`<~>h6 z{FB@ZuNY-rv$9G%^2Wcz+CflgUGi4iV8hMIp>^?jU|wNd=Ci#?7rPifEBmY-=aZjU zuUKdbZkA|@ju&+^FIIJ#hWXroROk&qqL?nc_I8QLxyr+H=6QSkCl^on_Q0v}YzvoW z{$>GK<0h!zEAYeuaalsWTzE&%qeF@p~P zit7Iw5%_$7ZAcyowa!i2`V_-b>tgVI2LQXRqdh>0yaI*-_@$r*+1fC@@at?NNa%k4 zBCaqlN}|qjtA4QYW*Km5kX&d> z20x4oU5=3xm~}HAXRQk$&rc+Y-Z#l)rNrPmi1)`>Z&jE17>@R3m821?VrIMz-bM0T zrM3)V-%goWu4l#YCjchKMa-owp8JX@#4Ar@G5peRWW2_v&+Es<;XiiyJv z#f+h_&$y1G8IVN?XHVw37?W~QNmV|CTV63!6MW8{m}QBxQtmNiom5z9Z*Rws*@6|c6UdGqSEx`8%&jne0Hc!y>r1Gc;=Dn__y^gU1RCr+P9#`t1HI8Px>n@UkqcYZ~krB zoA=@iG+;0TrC^TZ!Y=>oy{dK3>*;H(F&PL2UgXrExqJtKRZfy>fRu|_8N|vG4eue`b-QO<1XWrlQBZ z=SMh(UlXNpNJxxSotTj%&S7gG>YDp8~wYcLD?_R|P9>bB{zZ4Kxac-(6Ziw7dKOO)5w zL|hh2@aBb=eWuVZTN|&|qZ+UCT6+~MhDN%e)Za;L_vpPSm z%=jTU%1(f%i_)jT=FQ_^=h4@8}Ij2hHZ zCALZng6JMUd3$uy9HZa{ph=!f8-iwLl(S3Il6HVODP%S@er@6UUEZI8eDOCE>wCYh zZi;SK$Ua7*9g?>T-2L~=YQep&>V12Fqho}-hp!^=$DYy(C(fdU+p3(``j-e7h)>a# z?HGf9oesJV0kCK!{J0~;YS$P1LT&EpCf^f@fBHyG?cxhLX)H4EH3!yf7n7HHBDPXq zU1L|35!66M;9;zo3Z;;a{{EKD`NlNASyx&s>sx9F*Io%lfA}XyzX*~ic1JI_qble5 zJFk?Vy-j57%d(uIH;i609_z!G5Q5$S<(gAN)=cQgNEC3us>a<)*p;hU8MNAr5jyys;Bu_tK?f}yH5dUQSVxd8c>_D7tY zZbpt{%+P|{(TfB#Rb;oNl&jLQYRfUPFv zFfw_jl5+Q4I}6ir$|{t5e&f?yaf_4$7Q<+N`&KZp<*2c>=15 zCu!gZ2^N`OdV<`Zpdo;``vCiUqX!T;I{?^pN2!0)SVj#Ek*WfEyW!n2(90zjA8j!^jpMHbQb#+#2@&MqL7=Eta4^!)XZWLP)DQwK(b8<=+ zdZ4yE`M%MkW^Qh{zuqR&==6br1_e1A1NCe-jIRCZzw&y-e)mjFWir=Pkj=7!b~~Kt zbH}reAFReF;=@fZ}zgO0Yl4M1M_5ga`%PtYIk%aGV-T6`C2mX(eX(m~(az27iCl98G0DqvJGclY0a<{7)N_7i~kjJq~}_uGut zEbaxJL?Oy-O%?V;<)$gXh_9%X{Ge2^O;!A!2QAvzt5LZcyMo5(5_Slly^8r+AME zEDVAjjN>b?e$>RhL(=R1>KhO@3S@t5QDCGH7(}{!kd@Dgmb}iBPReANQg7oC9#S|a zWs{_sc_3$dLcZz@3<%f`*T=_adL7wWtdYJd`IGGtJui)1q!7}o!u8u{W_ z^mV7>RA#|gitN>x5@txse9Ahfqz8z#`x5Um<0dDH(xRF3@OgWVtUYV&y&*$P{U}JDmmw5+InEO(YEFnl&-lSLv{Q>q1@J?B#?4Tb zDw3yNk8zCjjpc}$B;Q6b@H~{<`lY1UQc~-sKW2rbjhxI;$B_c(uQGUDlRTfH*5Mqs zi>LsxmM-_6s(ladpVbGtNUJ+l~sYSFX`(&uSfNr%1zfhRJfoY|1hP zd7@aSdxqh|6%isYz_$v=>a0b(6en6^uSewT+zr4VC7sMICX$>jH-XxCqcgHfD@(ZJ z^9ObJ7MBf?F+jD>US#Ru%zrgsqYG4yi88bqBIndjN=b_|Tpaizwe(+R(qTn3 z8A|BwXo2!Ud~TQq4&)o8{)C2`THLOYVJ ze=vojM%-k$#R_TqK_FO0XX2-N<#VOILOR?e6+}2*AIEzxDTVs{Pga9}U3XwJTUWdL znO@=@H|{W}-6-?X3gl`Fv86uCs1}XoV(N-=B2_wn2+>M@@^*2_etTEd&;vL=^4h*y zKLvM|m!8XU{q7OSFqMnz&&znMa{%-`+}NISmz?mi_kac%e(ra*8#5FOMFns_=n?5n z9Ao~t=`6G5WO5IvKhzr0sftGgSIklh<&XW;n($Lg@@?net4?z4?B>cXSD|mF+mk!P zp_U68`04hzVBcxsOysy8aT1y(YGGwf_XWYW_XQ4Yk&wnewn(7;>083!^q@NF*y~ml z4YFTty1PvP1Af)@%`=DX?Zh+7k4ScMZMNJrb2@bJ$kK1PO;BhhvVH=$_(1Jg~mR5M4u$^<+4(MiV)Y0dcf z++=TFV3W?0U^y|rdnWZy`{~_7tz@)ax8DJKC)x^vCJLIWv`HZ{t`Hn~+Vl29xhgiE zS8BPbk5&w6tp~n;QDmkzSpu?gg;haf#6czNOzkblO}v^({xkFFV!>x6yuR;F&g4Fg zlq*u_*=I?)V~)?aA-4Ny&8ZOfE>IzSUq&~PENQZAiEXV7)k&#$ zo%F`kOPw*QNPX4f#H1C)Q>wi5_di0|aZ)~|?c@KAE*Y{DaZ z6QMR<*xhSCgnS-4JfnE|IWxmXIa8oAH!w>qopcQUyRLFVKxKLE=w0*7Y##N+Swtc# z207K2!4!jw3rmr~?@~@}i}Q&&>M?3qg)v#QMk02fad9p%UopZPde65eL##r4`Cq;Y zc=NA30kbHI+bJoKNx3>MTb;>|d+BJDDg3$eCQq}r#K*_oD)LY#8tEjXRk z!1_;p>$-dL6dlFnYYDll>Rt?%469`fU2pc=9%0*4&TK0p55`w_8`Qelc7l){)Z|IW z_q`!ilV#k<1IOD3a&DWCbA<{diKAUcwW$mi znA+<%YI3MQgg^KZfKKv{rdLf7z&ya#$4jcJnc2-K=E`~Zu7&9&+GXEZyja`t^kdp$ zB8I&{dVi2fjS;qJTz~U~+&PuCttr#VpK$djqaR9s-l+3+x_AyGw8e-R^x*oWW%c_b zqnQ0(sjfxJieor&K&?X5#))VK#BOZH?G1SHbydZnyYa>bNV<8Pi_iHhuHTrT=%jq@ zGB52&h$Yr!4k3C)dHWjB1s5QpKl%WY)pr8wfI=i%)$aqsHf3n#-{ z3r&rRq8$ykVw>M(9Sq;Bm}9wE7U0r#?wuLf<9RtyfXW&wul@uxW~x@OGm zc3tnvUaO8ebanz1ucXtJg;zwRH3wC%kN^X=LV-P9h4jfM%Dmhq4!O8PW@_>8G^gYa zmZzi1kf^>j;evr6r2r{VEX*knLC`o`6Ju_2Q}D_DNYjRs`SwcT zLhpq3Wrc1Gl75Uxsyigib77HY&<9!9r+%X?2YxwFBEj|zzq!C;js1hfgc2sqF~TP$ zK5k(Kq$Kv0i5ru~YK!1G#KaV9r2N+FWbP6fvek2VjawM}u8vkBf-1spK;)58O1#~> z`;Xo{c^yb1JJ77hs@K$UAH$}pBL@ka-sPB0y!+DtXP?E}JvvILZk!3#Fo2k=C-7ay zpT-|Hgf$G>B_8e|Dq3>~3lZz1m1+grTS*`6U(uyKQKg$K-!~8`?(`MiE&a_IALFQc zFv?Tu+N@ht?5?TxoNH~}H&gp~{GIaDKXX>id8H}`oeJzevGthW=KbPwuNde28};Ya{!C+_i-d&Pf#kWBxp$FfjU!jF zrU-j8X+6hb@mdB*W+u|<0?oGEi3^K}1Erl?ZF9VIC0+`R?AI8gvvcG?8!jGSLegUG zm)0bvKO0%YzUpC__g&XXqa@J2rh-G~_^~0K2O9^^D(GP^O=d5bo6-FH2kanomJ*M^ z{qgGawG{1@akg$>EM6z;oW9b2Xs+pbLkI<)y2{ABL7@mdlkRY}VX;kHv8-a2(P2O( z{h47Hf5zb_`f{7i3Sx_ynAa`tGB0%vHrHjv#%pTnVl~FoX=$`ijslH}(4{kR3+r?B zJfr8(ABBqOCS+Rb*OV#o+9d?5)5%R+F7W0=e#1co!T3@Z3EDk%T?a$ljmB=FX`_KOy; z_t;ak`idEXv*~aiTcGBA6)^?8-d5&X?vg#w6zYBR;&(I(b!Dw@qC}-3OQAq% zp*Tg07I#8%+Tsu>#oZ;iyOiQy972I&!6_1gyA_w93GNoOc;(CPzPscxkmmMNBU5^MWnN1ZIGMb0ZcndVU z3<^{Iql@zdNcEHzTn+^(`Gv(Sv$_3qt8!1>QzV;4ORXJm6cVJ>0C_bP=+_#GHdFNK z=rr-77>XC`z<^j~u-U9cah=|HxCtEMW|8;+K%*mD_*t?k=+oKP;ntUY8v;1L$Fay; zp8&LQ^-d+U6MI>gC>_qPO1xwBXJ*gJn1CP{>1%!4B#Y1jCyEc2)~-odm*IiBQP-g zREcaUtL4!Ggyz0ELuN5{Lpdx``->_xU9P;tjI&rxE+Va+tl&I4+ba7~159xll>4%* zRtfR@&{<9ePmJN~GXf>U!nK(k*GnOcl7mo2U%t8&}9!*r!gYWdE> zS1R?3rjwIXLD5O*tGe7^BPC`GF0eYuIn3DWP_b&(ZzNY%Nfos*?5og(TWdoPlaem? zIKu3?t<=t#(|yJ@?W$;me0&3G)xSHuYhaWS`LMNa(b(J|sV+kv^hVtAAibSz8hhSo zQDn@4^XAu+%~72aP_{4&rpqWSqirwBqERE^4et2$hDkd*Sh7YRG1VPbatDntV3B_dP`V{f|fn|Hg_{2Rv5!^)~kKBsdPY$_1q zGBat3sFOR2Xuu=s-jMBAo*F4JO?oN~RwID9TYqA2s8>!+u;wYI)Q_v*_yTIjqAW7! z!Z(;TqNs1VdWS^?_T6!n3UJjI;i(qa{9bL;Br(-i=X3)Jga~6!C6Ygv=RH=g>eB;I zp*~u+`$Chc)k}7k7BE3IK^W1$nFBLo3V>a~&`fcM&6vp!n(f+}ugN#EYrKNj=obG!MPnr|hTdoX%D6R!Dr(?_5b{b^6i5 zXlD(kCxVWY(XYRBxZm6m1E+(#7-ca!mr`u6MI zx*WecWzdI!CXFV1GP4eJy|C+2;Qn>y4>xUJSf~~CTb{d^YOMMi24FV3m3;nDNF-L~ z*CSS(a_8F)C`Y}OZr!I&5J$eqv~AiL-bk2*zH^Xmjryg==nx zBZ8gY0g(ZoO=WR+{BK?#QpWU!ggaF+H*xi6SJ+hz{R%Iz4kX6b6!^wq@4F3{3Ac4b z9={X2rlId%y+8E{%#lCgQ?lH2+ms$rH{dhhji~Z%DX@lDZR6tLSLBCh?(&2ZP>Ld+ zNo&R}xb^n5{`9iZSBhyo_>!{p=ML1{?N?9AJY6Leh^sSQ8YnisT`_@sj562!POq}t z$H(o>CG!j71Q8lB^3pcz(sNxbk2jO2?x>ImdQGyawOXT_%JPvOTJbv$8|)xl19`%_2#UF| zkC+u*j@sIjB^pPr?6E5CEk7V-@``}mFObkz_)`Q*qSXR`RH|?#>;rO?{PMLxBB1?7RIGZ+D*~G`vW9daU4apK`)}>!hR^b44y7 z%r0Yo`}y|QHL>5tZj8;bbwl6(EL7`^4xX>b-m?>H@+>H_mi?EtlE$QbXL@@u7SwAS zVn79Vo^5{_cZzYo^}-z&|6{k=%eiu7rH1TppF(VN8>hWAQBQr(`u#b#MtnYIq!GU5OsWn$MIQbNGl1n{}hoh}|dMuW8dp9OD^y|zKF4J>(n zf+Oz4pLktlXtj%3Ao`4k_^-1Gqe8#tu<*~=6fHJXp+o>Jw0 znC&nK1nX7&F(Ng>i}otltzhUP$vF3JPgC)zdXf`I_^(^}kWhiCD|QqDviTK4Z1A4% z@3%GNF)@x1>alm#@&EV&UmFO!Lc+YkA0(}e`1O(bL$v?A)#w+6a6bHL`SVhDDZLIW z^&d{+fR7X*?FG z`}1A#{&TLVy;(M_)^fRU{-X$D3x>B%~=w%bI0_PoOi+T;5}^F}2tYq9UDB_6GRHP)+d(+t7mrvvU}IR8F5z1Rb; zDu_%Ess_aBO9fq`^U^T>Lvp%?1iwpaurY@LQL)GSKWC5b;>V8J(=I|Y{@@u&1@9&* zk-iU-!0|W~eJS3c5d33WYOb)55;nxBFwQOMnB6i{vls(DSZbzwEO^0RRytVfLYkpF z(<57VdlOAiAP_M7=@I!*?IG{KYyN-Sc5Yq_iTkH+Y+_1BqAqPlgYM#*C1V{d?3>x{ zWKdDp21leSN`38;X-w5CV;X zVb7!jw)3VdW?+`+Wjj85ZK9to>Qt7q-uBV7Bwi48VRd9#@}D~wB`wn>gbE*-OQ4jh zy8f8|PA+b>>6a*R#k}(}c?827G*+40=reoDmvS}+*%BI=Z=Sf)>SaHbi61Q;+_{nb zrNY|bgh=&+n)CuHCZUPrU#?D*v8pr*zR_oWf&`r-{z#`Q&OmiWk=I?%PH0zeJ>G;) zRqNk^bm*ICmai!0s+)J-TP6djp(4!XO?{MJ3=QK6cb6}?fUTbR z@s&jXydD3ecK>EQCTs1#Ww~bvdhSuC%MY$VFTM^Tj9RYGj4}-8#^JepURJ>z&07dy z?jj{ogv>MJUO z5LK2hEhGLavN7DXdPk+pnyHjwKnFSt@q{?M)nVu{iLRLSj}Eq!n>LtNI0zv;kp&V7 zP@{7J{C;#+;jIF$vDgR$WEc}t0?Kvh&Zn|^RqVYGA44*X=A8CV*AuyoZmJv)>Co7r z%1MV=EibTsK7rErz76fN>i=rsvUjaWNcZ3bcwTQso7op3g*_Lput*6GvG=$28+1OmF?KbP1+vg`iU!S0*W z7CB;rB@bs&3MS&07VgnSdL!%EkDmI!TF$rNX@nD{401;ghh@97d~3Ek!82*Q-VKOi z;&lvAJ*BHRy9*t zShR?u;UOgG37F<=1+|imA;^v?#a*V?xe_N41_XZ+Ha8w*j4l7VRi5xo1=vs99k|`Z zk-t0re)cW#MUW77l)G4O$m;LOHyZ80IB0^Okw~0*V2o{M~Ik}{v(tFlExf8@c)P$Xd)ZRQi8Q*~ZJc4|%#FMF>)9Ng{uA%ADQ z80%=4U-3LuHYE3^4X84@ujk;YN#zO`!4)|p8(->~9V_!Wm^{2FA(t>$oq_tcjPb3& z{-n**-CQb{1obcvkRC)9hW+Khf5d^l#b6u+3IYB1zT@`qxFScCl1Nz06(DtwiiS3~t?xBO#e@UF{ns|U}4wzj-i$k^F z4|BM@-wZsWqT|JN>M6yV17oYz{5++as{1-f0z{fS`DZt?Ovxr5>tu27GAn+qL|8Z7 zETgSpFMsYpCT<~F#N2eo$rvy!T(M9>4xp@B+H2zFTS8#+vy-ih_3QWW!9&qM1&c@tI!{rDG5CqpZRGoWtk{z} zOgr}B5}V&Yl>ZRR&VXgl>H}odc}#J^@iIP*VKOn0vC!yJAOJ+hC*{B{f#MVNaUz;~ zs|igIzgR?e=AlGK-~71h$;Fu>m4}(NwFwop`s3xUy$B)y4(#g2Ghm>ZZv#;kaLl*d z9A5;}!Swc-$>zASRcq%mDz~TcsD9KR8%+E}F=yoZdL&CuStZ6U4w)ZOVUK&A9Cr=e za}f)PQQ}lSc^BzRO2h{C$}?u9=tD2ZyRwDLK?(F<{8C#jOfpU*3$RzK>N4I_d%M-k zgK&<@tr@*tTR*IZgO)?cqJV3`&c#$UkY&2S!T^62lj&>)Z2_v@cjoy^L3A+_c{UKJG3MqEb^|L7JK&vhBl)R2h|A4)u$AqzN1_BkVA0t9_n2tB* zS_31&0Pa0YhNgAdIOJA5G7o3A|6$<7-4$_b_R4MB^@54MSf-gs0Hd^Q`b#2kSwQwz z9VK|sQD0+aH(lUao@>fuaIEQ#O~ja=s~h&(-K%Lsx5BROS;;XndzV^@$JuZn~zS**F-iLsy)z&=aG)u ze$nBcvGD!5bL+^Q$G<%u+c?1UM4nihov;QLT#TeE4lL-Ce=)uK90m0LgPsVlB1U@B z{+r7=WPj!v4zW|53ER5yv^eR;;^)hevVJOJ6`|ZsY^vF5$bVBJoDa=yvsHkaC_`mk z7NRMng_DNQ*p5Vo@d|yTi?UUV<#JW8h|_{oBDumfTyCe`{rBt&hJNi(XCKp<3ehUk zcOWDCHNBbSII?uiETMQg`2)nd;;R(gvl&e_2%ixQgw>( z9vG1L;Pe>wlest20PnT4|IiQ2kk=|t>80g$V_mS*6IHiwZ-yB%*Vs@ZOgQ|ecZyqC zFVYpKpzUq@T?!Jpo6(CYI@wy^Lvy2Jo2<@h>=56ZWkRH3=gCYg@p_iwj7f9DP48cb zQbo?zgW!GdU)HxSA&CPg-toP3(IfScDriObDS{n09cxXgcmqABeVX5?0zAf2$-uP+8Zzoatb`GV@3!*Lf!EluPN_4kVjK51ls@!OuGWBi++#X3#8%MH7Ffum#6V*LHcPV#R{ zpIZZpbU;Zmdie`@MfQk4E*mv?oz$uK7T@T^1`=J5YzW^Pn>0=f#1cCx0tHbP^){Id z@q#p0u}SHj-ouNTrPUz$knTUnJE0`_?;65@X~66W_828rbz0OPZ|g%w<~u85R- zR;NnPQG;inW2Sn4MuMsEr=h=!Qa`g;YvYsdDrvYE!3T!Vk%8-zPEApjhqo-!^j`UG zzAQWc5?*$-7Vy}(maQ~a0C&Zvtw%mZ$t7axK zzXtIb!n|f9a>x{^T>Y2R+a15XKKwV0uhwkrVnGoe@+l#no+%4db(CJ2q*O~oTIktZ9)GPlv$G5}t!u!f&)F(QI; z2L&kEmcDp0VV%?$>9?Dk4;dzL+rxR)Ie_=sYJZ+V(ARy~j~jIQlWLXym* zr|=}ALU6kBzD{4Z!=3!O;3K(bIpHY+xj$vP05I*5#1TP9cZ1@X=mlEYzJjl75sp>O zkg?VW>6@!J;A#Hkrroe;^#1gEi#?1q9b-U5Rxv|Ta zH@{ybgF#beo|kNsF4dGAb+XI=&iuPkFGrE_Di*Mp>>T*v_Y>>-z~Ix-&O`=e>oyy4 zju9+sR(pg+G?Bsl6~*COgz-GIaGrZ9B(E6I?yW{*kKlZ^hP`3aWVCsF(CNG^u>$@# zOygfz_v8j93oy@SWxmO{gd)`c3c5J2smWZt2u@|=An_0J0A>p@Fd|htBqjYLc30b7 zs;wgEB?FwDdbrA>A-}q>o>81O4iZ@2*Rd`+I~#7ds=!%}V7s~-n-T`LOw*@@{8-tn z);q>~wDo&mASpE}mYRgFq|bOs!g~b2A?3Fn>$SnKhRuS~>u@ql>o722`b;CQKLI}; z>Y+_h(!h?{hyg@m3Ojg-Ntkt+w4Y?;T5M1x7w+ozRC>x!+B%;>a5EPz2;6lydF=WE z_1NTeLv6n~62*(hCDH(HKve?xvygH<%g5|s32t+w{%1*WHOMA3B-Jn7Yyd4H2!|Y* zTz1E6)8p

    $|cKuYh8W@Ex19$4giHbDX|?GJ{M)zx-ENE`1rQg)8kK9%$HgIj}mK=mY=g0LVa+WR_}L#|6T6& zzmT=;hH=yPZ}+Up*E=Kz1yP-^Tjt$4r&NI1aw`5Zm4FP{x1!m+L?DfhuT1)r?%qE? zHe9*9*$QQ>PUG1w)kEW%MQdok-BacPaOf#IVXAX{n`JdEriu`D2wtib%Ey)eQA!9f zdZ|RdghrhVrTIQ$EG9fvpt$Vm<1=h6?D4`u!#o|sOcN|hfp5*{EzPDc``6p*$DHWwptiz3C zXjvtMtFy|kwLH6)f2ix`AI<+uGrBrSzaO5^QZZ|-2W~4pvMtv49^7!|Omu!loA}D~#n#c5 z4wZP(1Xjvf=VW*eD24tvFM}kcn{gnEyWREPGp+jSwbMCg1)6eEp+EfFq0=gS;{z70 zUfpEsLCu&Hb!);X3GjYE4_@WB%6*GJU{;^bZKVh++9jzZyd8(kQb_MP^Bmy{Jf%Up zAC!RZ^_^i~ve*RjH|zkqlKiSgLtpK{EE>+}BW_8eYGWR~DV7I#WSD>8xy?I5ukS;0 z*ITsn*cJh6GIO%UtLHM@ucHM6obu+>q3^9_c$S#_;=-q3F#$H@_l(0~C{Jun`)qs)v!S8wA5rRYj)J28tpT1l))1 z5L%lX>Nu|Xz5`~1--Yu*b#rst@ai6YfwX;sw?HMvi;6!uoUh-9xla#9VZhY2LzC>)xK76Edo7(#+NC z=>Dq6p4Sb^%&G?Q&`2(of1`09A6YZAS4RL*vt{Y!L0YUhc#Et2>xjV7opyA{q9ZG;m{2gQ#n(p{Mnu&IfU4i@t{`wViC)6)%>)!L-aA>R=suW zd#oRHd#u(IpeE&e-g;!E%jjSEz<#$jgRE}4xbeO0r_bkJHA#{~%9!bSjwzGJFm#n> z9rF9Gz5tn^!JF;%WVa=2{Lt<#=+|)li+dU%B0|v#!GlbxJuJstznLTdEJaHGRvu-r3HxjBJSs zvKYZ3bEu0QT}G*;_I`bqdLs>Vr1KM%Z-mxxkhruzma8yA3I9e#9BbpRAdTfp*)N^e zdoNbkvcGmg%pfXgi!(7Yy@6&S|% z+^CS(mFGj3<;8_)LvKV@8)o%{E$*x1IC8GT9znYs@)=ebnRDjpos`wn42F$_mNwa5 zia&C@DJH@K1MHH!-@J358huCio=@}UFdrnQl8~XWOe31>JNR%GU)bVp(+%3zc#vyH z5z6)@WUwwiCd+ewwN?#N*nUj?o_06vd~5~^3duxT_oB0QDs`dx$dhzk^Mj^hYo;Vt z9~D!Zj7WoZnTDDHsC1W^m~+`ev%A#Xkp;>3I7*epqlMZ=&tWkf*tls1_pcTIBOb1l zlO;KaR6^9Qsu7)pK+N#GB7CK8!@Bk}tQTU_EW#YmJ+5y-?#PizKcAMdOW>wlrh z$QC)~cZZ6vXlr{Fz!QB;Gu{+@zrspbebMCi;{{eWKjz%dW;ppXu~!&!MnaCG_~d@Q zA^>p)Wk$0s);{5uFX0^YjxF5LAHaa~9JUnW9GSh;s2=p}2neuy;HgPyB0mdjcsTm> zS(ZMT7E5Mfz6B_|2|3#3Ln5B(Bk)%{{5?9^4PK5uEX=TJez%InC)okYA89Y5QFfe< zDsmN%dd z@5HEm7Tf@oopct9%A?8{uIO<5p{v4h}6;|M_6myqm|{(&LA~iX3l+jU}f2n zaD3!;2?534MjNTz58739-;anNcope&!WGa>Gu7YNNMV_6j%B8{`U(c_6PfszT;P|R z%mhw;lZ+2YnsPVH$FhItACSt$;K)+gi`>CWoTftC zc`-I*5HTCy_k{Gwm9Pcy}eKICc}j@v)3qk&wuQRmZZtw%PQiHd~ zZx5i96sV}x>5=C@qJ0DGFf`#`s5iwUYany#Wc4h zQhQX>WJ?bja4>hG-f!}-#zpx16pWl}nX)e<(`C?XQ%q;o$x113lQjsP+U73T5T5Qj zv%j2VUEx=Ylw~VaFR82_tpCtPV$aVKnISGNv(9D55#K*2cvOYCSz~KU~Y`;ozHwvZY7ijU;`_DRE!(V9$IqY;0~tK+pbuPJdiQ z>`(J>UBuZ!_vPslWjKzJ!laL^m2ODDXGd(| zzUm_C}0^Y zAidBQ6V2}2HBPbSu*1wD)5{EhnKT^Bv7rt8g5768)X#j_LQd~GRq2Rl?cl^F@LuEo z@EIPMK=F{T`Avv>>@;o{ZP4uqK6Su z<0nCuzd*`M@oGtGQqL5YwSE+^_hWJ&sYeN-%t;U&|H~o%Uv}W%BWdyn4?i{PDukq- zTpartXv6U>-jHmL$sN2tdEclX%5$WSri0k2iN9d^|GeS-D-1H+HeJ`tcF(%}ps`#Y zFyIV%h`r9>EMf$gq?3OGzLE{{J3Rd_N*(PFtT8Z2?-?;`iPi_AaSCtO2d-i8Y_ z3a*G_c$a)Ee(D8SX^Sly#PcV)s%jk^clm^4#Pq1V_kZbaf6cJ{-zWbkfxk*1B%OH@ zX0$ue0J77g;@(;DzoZhs29q8FPF89hdGb0QMWz+-*>q2n+5-}^UbkyL+>VuI#5J6o zas4$X(f`Vk5!L+qewx)VY_r4e7tCmWc`YyJJ`vX3)+_rxKjs~+kkb>X!k;_Z>cW-$ zrl$%JNtP~UZhP{bUC6zOP!IM9k%sm71Xr2LUlNfa<`~QV&obLhZ|5ZBujoWTbkiC( zTn=#9&%iTuO3PsZmN(G{(jmVtXt%Qt*E+1erz_d&=oL<5f8Y7@ zZwhlyqQ<>(mdcvz6@3ZAE6ZL#hi#gM@2pTama4Hf@I>B~!SmlPhEuf$ zRS9=J9erL$Vi=9BbbjSoP4D~TgEj7}t+K%Y`!}z3iyBYbI~=%3|3y~#*Dp~xKaK>x z7ay_K9(J9X*X|8>==i2#DbLGr+1E2*+&C=;9{);|^!~9U)_5W^ihc6!Lp<~=BwjzZ ztc2F5Ak~rF z3!~~t*d?#H(?c>8zVGa9erZsB`%?sTH)~rSaAgu)4`dXYf$|(FSIP>aswM6hea^-v zB;K(A??1Iod%pho~@*s*d1(Ku8CIP1&_$&dhfNBoif%v&RWo9o&s1CmqqWeCFFC9QY zjCwaKUO6pvl3v-0bOzouKLUuj<%ZP6`aS@-fMRc%fMOWaPlOMJgYN_xfUVt|+~^-& zvpN5nY9V>vWrOTHFe`jz6-#IVzaomgFPMh%w72#C?4L*249EHE@sn;(Ql4d@-o3V( zQ5AHYpnp@jR`VvH%X-3uDCjW(9Tgc4obwt4^h8ZvyJr}?&erhR1CHC)``Ad*K=tIw z#AF?9M!WqSb0|rd-uT9)_~RIpv$%?HxJKi{V1x=^dOu%ndKCQT51jn0xDh21*U*+q zBP!KPefe^|2n9z$LHsY$ zYmb+HIY_&a7lNZ}Q_GsdCvrPeyV!)kG##!zd!-j9=zXic=I-RM)NyjR>3t;O5ioV$ zF!h20CKYsE2}FWUNw($HGPNrqZUyHoJ)ZKall;5ur+gyyN((-35OQv2A{;dwWR@sIhh+__#+RJJ@X}S?sr0=)n;@Qe!TD`{O*FDjAUT6c-OEK} z^`jbJ^{2zcRWx^^w*K=*ofehjS|&r!W3Fey)=UgYmt=R8WyzRB+6R%e@jR7tiqWDm zH7ud%+Lrsouv@KImdC-PngDoc6DM2Ml+LYZec9wN% z@=}^rYEe53IRC4seH7+T$8!kU+x~(pxU3UWh&Yu;&%Tpa{Z6}#81r8k8BYGrL!JhS zmvm^X4j`TqRfZH$WAZt32@_U}D2yz9k?Vgl7j-my!p<>zIJ=Z6PdcTzq`3jorHC(m znmb?&sVoy-b?qdtW(e`JY%e@nbPTeM!>eIoEaa6j(lsjx@R3x?u~N-*2QHB88yp8b z&qpe2=akC9JGR_Ni0ZMkmRr5}%4xw@saY2iM~YGAmk~5h4{#%Hwu}hEu@v0RErrx9 zk;~XlaZ2Y;I=5xOq{I2`q0iHHn-!UABL+x{0xb(42NDx4{Okt=Lj9;+} z@%1xDxsa@UWo~+2FmGIm9)tR1$@Qc#%1u4(6cy(e_lY=`VdZOb7W1NoinxuPWRtbx zaGWJGF?NP8{|NQega9sfSPZS(T6Zz}u!SPa?7!9Mnzu~f!nt*6du3DTvn5|xw_bsY zq~TXta|AJcXUOAcvu;vmJ^W^(Eq!(ATRYDShbZa4dT4$Otuqq8JvZ`Rxz=4ME75Zn zz8(g)_1Q|@wOg=UtM+0}NVdUwyFt%43S#ULi&*5D0XNws04m6c9m2@(M{#S7xAFzf zONU*L7GO#zHc1)}N7W#33M}~_N}R!Eh3I8^RP-#SO4PBFTp+vmiHOHVF_5MhB=5qG z=t~1rkX)G!$sWIJp1-0ddQBYhj3MqTGh*;~SVPdUO}EM_46m(ilzs_IYsQFN+?DHH zW!HYHIh0Ormern}=)Env$WBLJMSEM7?vJA2lMB0JVcRAl-EhcQt^3FCYqpuJI$rgO zHyUN(i|6RjojP{0>&7peTW;16J`lRxvPqTOgzD~o$tcwNaF4$FWlq!P!!MDp2=8s| ziQalF4C9D|CTg&@knN^v$^XI42C7_G4t^s%%qUULeTN|{ z=rBy`IbJ*_M&NP-a9Q{$VK(#wYLD=GX&ABB`&;JYAuBQ!*XhfG7m>Mu$d|1zU#R=D z&M#kJWv~(pp=R87l1J<%n_LvWB*p1&thGSKC}=t_X{m%dL`Yv?AO*?&?7h&$|Ma1~ zmkt{XC;gdHjNf(yEOc%RO!j~7yYpL{^1|zKq#Ww-zMU+o22!#WgDy&Y5@I!+b~_ji z+pZ3!SuESel+e(-?w79C1;2@bZ#zm*qnl!XM#!}}J%rn&J-SiZhsm=4hVX}Zu0l(n zBn^u-?){5~yk)c{tZE)=>%Q%sV4&l66j=K~G!)|AYL7Uw`sg#$;EI$CW{y;xh>s)c z2LmSbehSCJKQ3m!76v8d#Pr~t7m3Wz4NbT5-;rm9~3yrQtssu*YxsO zBH&YduT;Du15j*3jg4tw)X-rt+)ed8&`H8pwb=Q^W`7q2Z-*WYTNCx7QmkM7v2 zu4>ZLXNe@ULr^EsaPG#nYV(6!j?zs|iQ2DqKl9GwJS@?C!Nh-v%*hlZn@&EO)-(=3(4Wk&Oi~r1J+OtVYT{snzANw;5Wz za=%HBKVe>nD|A49EfNzaj8CYk>gSs3*H0Bz2vpJrB)4N_=-NszLi4Q;qLdJZG4I?m zC;WwLHT<$!f_GW(0W!nPWH2>EZglE2)K@KrRacTu-{@^HMfLj+UO*}s?O=rZsc*!H z_yGbCizZ(<9CCuU}oH8&>9Sj1;1H9xvH>*=CZCY~}yY2y_jD@#Dr8o{aS> zp|Kx|1rvqNGB2tt!>ecaN^oe*O!mP5;buJ>f9II*1zz(iarhIQs+x9ouJ*8bA=G=x zF>R>-ZH#&1S~VHWq6OPdI#bUG5%=b1xGL9(aXN;c;l*i9L9BYiEYv9IjoXmWw7~K@ zKve70TF@TX$|8JuW-rX_eWhh72&w$=W6Y=aujvNsm4lG%)MQpPqSNcRRrY%GK-T)> z;Sk%h?~8e;nm_6>ehcj>w(}`(9u&{%^`Km9K)q_=`y@zC(D)3<1#VOHqgx1gzcAGL z>@q1^_1?PmlU+e|>u;ijh4E)nyH)98pBZWIK5Hc@WJwvp@zV?-_!m>pN)jd?bOIQ) z;KR>zkO>^3BEDNTw_gg(?9;jZqpd1Pwr<=Xk_WLJMWp3GSmTl%=I$)?PPn&;E_%{g z=b(i>Fkd|ld4UIwjy!8%0PR|?;-?#w_Uk8%J634$HQ-)3KGvjY{S)O?#v1gIFE1k- z*MBAw$Vo#g$g6o@p`zhCa@dllr>w|r{p)@RXtS=rmiQt|ZSR&kq}*IUb`K{Th%QHV z6|1Bu#&tFq9=9cL3!Dh_(0tjdS5~%2Rwq&oDzvq__ERMV13pFTyfQmeox1HEJ(x!8 z+8UH68xzhV899f(d(7{E+0|@u z&m-d^?%M-7RilJ@^sSq(n5@%DmkdGj1W%DnexWbcR+`sW>d+I(q8~pe1*E(O76yynSs)UxK=_YPNJ!MaOLVQCHzRyKGYx4-TI== zZ1^V#>~-Y_Z7GKErG)%zTHANgFZqxl_y z%aeR2?{kp%r(tnmZbYZEP zPXF+Q=<^si(~IhAe$APuvEV6aJZaezM7cW`=ty&(AI}mRIJgG6zoOuH4T6_*FS=)eOWIGq#9J-jPuxuZ>7*O03sR0 zBR86_DVSCAn1UQqPo_GJ#Q7w6E6RNp=b;jUVKmOi-W2`92clN>m21{_Mc6qwNa(w2 zRZVYTb_gDlY3xZ6HE1qn4zrQ7vBpnAF64@18j3ChYr%Kgh)b1hf;@CPpmfacHtd6i zOB!v!QrNFOE=TJKqI=BZr`aw_K#0Y|+8JWz!=92PLm+Y);ro&*%QE4xSwC=5nbWTP zh-F0dW0Lhmssr3|eAkSV1u1J9aG&LVWX9lk@rj)+L)X%{7P8!~6O6YQ-+C0=My@$Q6I-bu2A;C+*tW99Hk~+oP~|V(zy!2(dbHj zVis@j*0F1f%`-ZIMM>juTc)k2FZh1{MqJ@SHP2IsqY0_pbH}qNnQWT^>KwXzhyND znSwQ*wIq-}3SX}by?hvmNlg6r9atwZi@z}bXk^tPC%sUn#@Jk6%7dcpCojPAe=j@o zFXgm*^Q5R!MsbMH;uVq*nCm+3Z-)7*HpG<29Y1K<)TGIy;TwyHE8xBVY-@1D`;(#e>6IUU@-oIan{sjlqCl_+# zl2Q3*XtCN#DN78J3gLLg)hAtj?DR@zI4P#Tw)M(<;}HC6wApu2`w4Tw4otv z6Rn)xsjrc31_P4ZdwOmj>oOMabYTFg3EojLul-D<+zL#PeQIsG&r>xXf-R(^`ul_6}#Z z&jg@plo_zoed(yB%jg(qOPmygaEWRVF^r)yAr;Ff^kd#EbTlpyG@b=F(==>)H zfi8>tTN4uQe>5Rs=g({ns%SOc2gk7Ic7~$>@D6()k}4&*b$-RC)_u?HiAo|0-#MX3 zxdMozYSDL2Gn3z{f%fxIq~Q9wjcK6}=3x=2H8Xm`SYdQ}z2B*X4kl~25G_W_8)`&+ z<<6*oIco0oe&H8%zklluzdOxu_dsC17uiS&EkoX2Lh zAJ7(AjUz9k;lf-zxyHKinDui3XdXm@^WIc@y#@u@7(R6RlB>voHqX~<5!$zU6y6j>R=RS5_l*KRiG!X%_ne_A5TfW zO`5Y$Ywv5b^urKAaMDvlnG1?ZLBq!6Z?Ey0t%6)fYqRt(=b*w)t2QuM`a0le8=a^T zi^NkrQn%AbacyJmqqQmCa1tGJ0QgyO^^xiA_^&dc2!Z2G5lGC1`F~1j|H+x)X2L)h zcXjt8Job|;N?fpM0!6)=>(+dVLF8R!wmN9;$?FXU+zq1vj#+D$#Fa-wwMgIeoMGDj zqg!PM9wpH3aeKY+<|4b5JCP6yh`ctKw=oZF1c3qm`P-+<4}es!D_gAS;5ja?Kd9S+ ze<_UZrt_n(RVKP^$IT;y8xEQu z6UXQbh(O#f7B%CT8>qFs-u=&14I|#TwC~1)&xw0s9gefN_(G1}krC5-xbQZ@mNi98 z7qX&Rf=#Ww@3OOR^KU5ou@d`eR z=>Q`J39vN;QKIpmc$8x_SbJEWN0mA#U%rTpGT0E&DCq{~B~4>DqWdTatYWYUB=qrF z!*5(Z5!wxGILP<0BUJw8{z6*e?nlfS#C5%NRQYdrufB_EFN|gun3=Paig_NA=El$p zQ+0a7V?&7|HKqR{wM3IXFV3kDtf>;QL8}R$}T^P5QreclrnQ)#W$Q%YrCe#NT^*XuEij zXG6wNMaxVG?}u4R-f6Q?-=^nYIY36;@SGOO^!96l*k%oeX9d5TJG!mQwlChF_Ly5M zUNN85WYq1;0IB%q2&lFC!U#=ZY5bp9DeV(rYTmPBla5TwdAP2J*rHX^J6 zzp4?ih6NVRhqLMqOkKMj1>IN@#nW?U<)Y7my*LvY)>?x#I=7-U2O=@d>eG)HbpSNv zd3da$TRKTR7IvsVic5XnL<&MoN*g_$Ag28hmW{JaSQ`V-*qNvid;DEK#$(Hh#-mGX8F`!~axGUp%G|;vle1G*YGerTM<=nG?N|1FYs-v3)-$<`YmJs=m`c zIwKRS=6t0dH@3WwSI_kG_XiW4#UKq@SWsGR*5%vlP1$M!`R=I_uN1d<#$hB+#2M6`)B=$RK0EkiPCm-*^#9m<>!`Sz zFKsl05Fl6*5?qoHBoN$!69|%EA-KEKxHpyn!6Ag;7OZiH#$5w6)@V0wjWzE2o%i?7 z%$@b#`DXsTYu)*$*P##V^r@;{RlD|no@evjh;oK)%?_II)KGhy*}k zVsY|aageuBcbG=v@`HVx;rX}x-66HPuZrM!EvA+)mS7%$ZVzeYBf*;N&Oanav#L43 z`MSsRO2vQIELhGu1k2BAYfK_BDcw!Rk^hDKV;e-uqXa~b&`#IK!)m0(v?$KOwx~Wv(0VK=J#gFHPk>rrUhL!_)q=WWrD%D8V`OK%KrSUh4rodf;hs zO1#>6%%)~GM}*(giBGdRj?d&Yw#r|QRa;?eTzr0>gWoa!`$f8^v4Q>|FUZ?2Te8z+ zHarNIc(#qkd>zn7c=Umyf(e^XI^uB5hW{BLwt|v}Vb_k4zcF(_U!#OM7a8)oUO_|O z;gU$G1$VwLr;g?_8ae+?so}^?+chFLa{-)8n!YJSx?_6qGPvKzWkqHFZ2kDYn<-gj z2ubs~FL~|vyU0$GEEgbHp!TNmqqnaZ6JnTkIGlOZ43A){;a}sd$%NNPVAP?n+WuNM zn@-(B_sH2q#h`8{TkO|rT}Ou0r}dWYXEf}@Z#I`ab+T~vi3iB!w-uc42yWHj-7pnN~DABS+D7)h;qz^bE{uJyaci7R!|p4(9@dBL|t`^7AF`^e%jasK!A=m_j5${#*|7hufR%jNU@ z_$Wn>l3lGh%bTY1vGey65o{vb?IKE3okfZ~GOl+EQb*pQGN_q{asNrW?BAR?2cySr zpo!Ux{mDj-C|Q}8_g{T}^HmmJTHVkeF3$P&Gn|dBp!uH;-{0%rXZaVpGmq@^mplG~ zGdN@dgk_)1C|ec*w*MPj*&j#u9#9JsSFJyozn$H`bMz%}s8y8_Pj+*iRb`3s=Rtq? z%=~`?HUK~RL&ATgpCll}Z0AdVQ3Q_ahc=QcWSx(JRE?_U|H}^keW(7%#{Iv4{{OBA z7CT-zpc`2Ce2+S5uaBoPfC3m|HzyfTM1VE2^yq5gqJ66MNb)X%N~mB$o2B!w{`sx= zVAp2@H{;<)Dj`omB~p+**=Id>N|FNUM*EI^Fh1t5De*a8eA%|u5t*KGcaU+j8tr>F zM|*Rf%kE=#z7cAsqYi)`z8)pq($<^s zeHAemm~FiziY7BH2gRm4ImoxI(OlrX$CuzH5VGhxp*fSeS4k2ePToFEtZOJ;JGq~SQc#6UioS(yV4Sz z@wT#+3YpcApsOFy%xWjD5S5h_sk{0Z!Bew6dFPw}Eo$FXMT=LT8~h>>K6P%eJION! zI?{Pz$$_HlebC(?ipr`cFN^{}mRr(4XgH(b0Jk5OfTMQAoW?|R@`kjhA)w&Cj-fd( z`)R1ynKSwlt!xA$q~dzYUr*C~X)w*C@3UQWEx*4}l@yH2$#fU z#Ww+yejZiV8srK#78CQx{;`dD`^4y9^z-Kve(X9d&G#hDVJ#QEciheDH=ic0B`oQW zP}sCLUAGVST6S?5^Z=B`%?NLm*;KWG?@C%t3iN1mn%w8?U1H>pA#jgGKE;jD=>yMCk!|A%XXY97p59t>hFATa9}0Wfj6ssCiRH zThZHhri_>t-7)O9T9}G`MYZ!uBBvY{D7uBRKN#^K)9b9ch!z7vckk_1`?{k!_@Ps_ zT`9JbzS~Zun8S092Z`-9<>zfC1lw~$%Yz2sLxPl;^}VL4qwELF@SesNujRSBkQ#R% zltC%@G+KHX`82KqR=|xyP=%P#5ZCd5UU=`V7?8yRxDB(+6Ka8Q+8|`>!EpK7&)I|h zU=eKoZTm0K@a5Fwc2>K*B(Tm_@93c2f%0Pe;4xn}=ldA)I=LnM0FI~W!rv66A2sN0Y+pJYys zU#|e^T**y7atZ4(Cv?U+DJ%cKXs705c91AOq5~SbWqYHW2z5Pc$ThiXTc3CiVHls z)R@PfiuSu;gjMGmO#sO}7{93LPm_w{G`rJ?TphQ$OCH);pOQ6z6C2%hMv1Vc-?9{p z?fS_IR5?S8|LFzOZ|P78*>Y;iq--X)0$O-UT*K&f93 zIO1ur{xzt?>kV=!kRGfzKmgNpUY0Z4=Bv7QXfJ#X5`fK8sc5-0gZ z+tNHK2uw4`Yj|ct%Rgw9>YOge&SQeSSr`&wyXI5!JrN6{XB7dRjLsg$U;N3t>jbim zdzWct3D1HaMj0eFlX;GPZPRIkes3(KoTZ=;S7E(c3Bh0$eRMA6jJ9B}=(&D(=*^0( zS>vGRTW@!NgV|?4Xz&Z3=aK?>!$NelD#8Qd9B#b%mRz+K1tgmnj!#?dr;9*M(!EvB zRmMx)X{zfzbAeG5d4eks_r0D;kmJqu{%bvs@*fz-O8~SfeYN*6B!eT!S^;tv#J+5y zfgNA!DM?R^&~-!x7ph6<)QfWV6Hk&CEd)SpRy3?9Ly0!plvQ%Agd%@+C6dc2HlNao zQaA7pJSlx8h8`)GS-4B%K|hv#-w-#LA$AALINCc4(xBXG)%MRd)X-888jIRd%sfcu z)905X6y-E;haQBV?SL;)<_|AFqUJmCqDmPWN2=@PI3ZfXaSJe^_D3iYq>EYwaaKk|1zk*=^11-lg#Q@F1!qiv9FK;*cW{= zicV{h>`wGf1Qgch19DvUJCgw)T?2F^<+QJRD|jRBXWOp~2@l$1h=trf3q=|5=A@_{f$$dTn#0EE6BbaqSq?Pf;>DayPj9%8}2S<{0{FD7B%g<76AXLUrZHh5*kaHq^j&1|vWl49YZ8U5d>2F@9p zbKgdeSD%R<5O4p=!nxgDAsNPo%< zI7bdG!~mEKAWvlvORL60M7+lXWzxNGVP`ETB}9JLac8XoBNbkq(1B#ZO9$eD&3K{R zn&|F>tNq^AW2&dz>u--c(luMWRwSdv!iljmuxWfQlXHu_HGXNUue0!KB$WDjajR(!{{@Ub_|bkc`*`9Zkx8n6qrT zqNAzNrz+(*K@dqV&5Xm1&y`YhAF9Isy1-L~7Q7=eumm2a9u891t2%g`^uWSyYZ|k4 zH+bP@#iHdbn35Ju+PVx#Vk#cPX#~t(4rqy9)+~q|&9%1NbnlhS`(Z10cR)7A391&! z_O5sRz=WY@LQ%nM#BehENS6(-)B40Iy{0uLuz=?9OHSM6S;;fM(C5!Ht~M4#F4_&| zkH@cA+|tgyL(Pmyip9k7NZf-GCsOP^9*;XTqJ#D%7;I0s)EaAP?j+8Q^t#La^Q#L7)6UlVm9=O~s9f25{kEr>5D~XYF6sD=E`bF%cy_KfG%VB?0VlN=Jls!- z_FEZ#mr6YBO?*X%*#V1>%u9Rs(xIPKv+{6>G2L$^&EET{Gx~zj6Xg^AgO~g z%RF1383E)Ql137-4uyjbQG1S1 zn7~oO^t>C24aQLp@ayyv$Na>h#?DS*yyzACTcPQW5xq)W5Zd==NHc6xFxPG(AZ5(M zIEm!W(e^;OjUBe)CfH%(fUe(jMk|3o5kqi{+&}p((c)-T@|41VF?vU0) zB5_P!CT7{M8q2usZ@@<9Es527@nS8l7rJ?t@~554njAORs5^efOH)BsiTqA```#-* zA73oLR;W!6dsKdrMtfbo@Y~3!B5dr4w1gvbUT58R>1OZRUm=yb6Qb{p2C)+}aQt?^ zYuA7J{_Sjvg33HztgJ0x@t0PY3dqf*{cXa>ncNo1&d;A&Uw6yV-ubBd-eiJ1ei{i% z!RNs!Jmmn}F}V$$p|Bq_Tt-6!Vz6(3CU5UXgw3oYTW_Y`;7tY*G(ddr zbXr3Sn=Y&Fe%h3%u@_m1|2KU&zk*&brcjvDcx(LSn(f$CxJ$|DKl? zoaq+XW|MR}ms+Z_r7lwUCQ?Hgav&B}V)V>A4x`DGfZ`ye1Afn^@lhhItRt44+vE~q z0<$j(BhlVx|Fpsjy0W=Am-p$02kqW^(7a9tX#ftwD6Fpl zW;_uxR|=mod!+|w7~*UHc>Y$u-l$`|NK$#Z>0JYJL|1*sE#%eKa+de7Wb_I}WarDI z%->%r`C>HCCWOAUch~&slFJBJRPosDA?2QCm1W0p%eA1wjF?R;>$gU#sIgB!lJB>CA)I)1$}wbYH#qE_lBk&Ah-1=j}_+d+G> z@SeCiuGZ^aep>Gxa?$fJ9V7LxE|{7D(@Q^;FdFu$o{kz@gu+N@WlK&g$1*mPL@o)2 zp`i&UB4u}h(F5Zi27siLyU#(e(Q|lp32%;*aHQj<59;i$*Xh;!2^K)%K`$rw4Mo#U zE|Ics2~5N9GNYOLI)9EsJvisynn-ZhypWR}tjVk3LH6}&#x+Yx^Lch_bpK+4ow=>B zQ|lgA^I6HlH6Gg&dzI zkKU4YT?KG&DC4x8p0+tol<46poxx2>911+LQ58;K4*`J>hLQn0d0UdTR4JNpF{Rc-;_d`~%RyOlRcsoDcT_CpM%!!ys5xSY8COy)HUTWA zIM*up-p3Vhvs$?-zVrw;Uc*>YtDBSghaa4vbP}bjFyknM>Nh~04|k=lnc4BvL7WKs z{uHDDqiwT8VoGAM@^nrs{86jrtB|Mp#CPJUT@)sgP||SYe(>1|;iZvYql@^y=3Y#n zup29nI6nZ*A~q40EASQQPKN5Shh&)h3q8G}yBALdt0@6|ZS(8JSc3y%@u`@PbiIm| z3*kG%3P5hI*w`?S>L)}?$aKqT;6QC_%SR2E98c!8L45jfJA&-;Z9K7Z$FpAPQ<^{n z;}k`o67@h9>)wQt9RxdyNKHyXO`{I$E{jJWo?fxbAVeViHj$MX=In>3Ajy=t#i6cO zM3W2^Szj^mnouvu!U<{feD6<&V6e>A4u04OjLr=h;9p)6Qjx?r?T?*_9Om4R(qGDW zxO|{XYTTFaE8xg*neiy!%^lo9kKdA;hLH4&&WMN*#y1A2oPh&YtbZs#v6(2-k&tG9{LnN*9oGi%%01240+oI>r(^nE&rO-&jcvH4oVwY{BV;}F2THu=CMRyLX zbV@G>76wBU_BB(&%Cw+`?ZMf931m}9`-k+lh?`EOTTF(Q&nv+7Yt8lm8W7`fqL}?b zp&oWrN@ereekhBei%nuoY@pc;Y8=90-??1O&Ir5+wQ>%P;IS~J+6I7R&dArkzn}Mjgmhj=!G|Va z<<-s1GDi*q#Tul?2|&&>P{~@V(K1bVx);y&CR!HzlWs@XE+SC z___b2ol$u33~+fs?SrA(n6JttjK`WL9%7*GI9ko%u#CqZP%~nQ-ADJ$P{Ut>GeGg~ z)`|LIVniah#k{gzzWTQ9(Yr`Mb)iFuVKh6we0y{yZ<_nVypB;Wrcf5g3pLHeY9OKz zawR*AB)^*u>b6elVV&GXT&Fai@F}F(Ams`sXGuu~hWe{RAU@}73so;jTk2XkUhz2m zan4x!a>_48%ZvO&x8qE#kcbz}9=Yv-X&VxCU&)pGkFk&pc)Ru^4_L+s*F`&(Z+j}c zHexFGAQ)45;cUuT=dDI6^ED1_)RTpvkJPH=J!>>FCW@pq963YV?#nsA}sO zLf7%_6!81_#yk`nyJawN)}tfY*{n!N%RO{Yb2@1RslY2lTI#MaBf&$|(2cZ#-c-vc z-uYL4%Cm_*Hi&DM@}hYf2jZz@1#sd<>*%P-=US*@sFx)Iz~5BY&Rz5l;Vm|K=x><~ z3R3?{1|-%k@BItWn&h=y?L51+kxWKM-H^HxhXBIJQUg;up36UY+M43GI?__LsGSZD zdEYFl_gi!Ajwa{{RQ%#tPIlYyr{=5(VX78?9gAu`hxokx9h{`vz0F6X!G~XMe1kwl z0pNo4r1L;xiNE6iSkW@>UV{XRDWz5#f8}#uc{uFufF0GR}{V>cqO}Vw?2HK zxg=z8@m_VB7ewL~;TDIGAFT!x(KH_PVe*S!60%4oV~|i#Th15TAZkVLK*QC6)O&KY zz3)GP>;WtNB9^J@f$w;h;A=~Zci-f3`sHbBXoF1wjG5uV?uM2?49ew$TIGztrW@br zfuhW*c>hp_dhVEc6}6NA4Lv3D9G>D+P8Mh3ypTzW7T-yE%z`EMm>Q_zQ7h+urR%2E zXltW}N_9V|KDe%E%zOAj`(3bg3WL6dd8qX6)Xoq!_x=~Vsgu;;bCl}EpnYLdQhp5s zb>KH6AfmHp_F!x%o^AIKvHt5TP8W-?xD0^EJ3(XI*F&8RYViAM( zC5!TnogdLn)oDxYr9Nk4pko1o+KmE{dE;gTpBgVW(#pj`E*_+bLo4N5lsUd23e=JS z7-4Kz@p9$b#6!H@hKt>^&4#o6O{fiwwG5>__9~e#zMQb~hU&L{iV@A9egjv00y`u$ z?T)S5e(UkBwQs|VbUq~>{NHJq@z7qX7VV8b0oSH_o1sO%40$`ezgAOV;e|dAiA=fSYjheGjoC`4>z}mhM_cD zmp-H^$PBCT5ry`9qmcqOAHLAo@7uP<$3E||;+BG!X3g{=dh8q6^vYd+ zchkJ&aWS3$c7iQGs9V8}T4tWCwm#=H|H-b4$4@3Us_N}C&ZA^F<=eDG- zXb&i*`3u^Up=Xo~vkP$>lSaNGWBe_*QxBJ19`6m?&3|-QvAvj855722yrM9z;@2RK zFA+QPi(MT0Y$}dI&5Lic8-Dd}SDcY@O@xWQd5Iw!Bd0#pD zFbwu?F04?jnlv>IJD2mHCuC1)l@+e83(EYLh_WJHv#q|)G-+)HnZiO z^P{moFa_bPJ&%j*fU{=k-FUcnvG8uck>?o1N` z{=yq`*D1S0OU-tV?tcPCp>A1c?=7+C;ynAhuR0o(y84t_qgrb;(EpQd?9&9X@Cnh& z<8Xl1eXk0G5Xtw_cBWp;Is;aDWZ_j+JRuwSW0|Ok@&n&~U3{(6U9W^Fs)=RNl+9ln8lRk~UKiU>3OJf@%!v#+W8w!~zY2?fKP(@SI2Y>-axZSpI{ z+gP~9N<~sPf5ipk6;4@`HW2J4e5a1xAKn=;`4OoY;6n#YzfQ9}ru9gzau`lTqj{cI zxQrQFEZ{bB_Ry?U{uH)iu(*1%dNQahw4JQ=+X~#ItCJtY4di|-)Wv2TP>ns%`6}ay z03Allzdgyv)4ku3`eaKVi3!_%B-rat72+# zzpBw(fBj}PkV^BU$jg2bfC1OET_>3|M@ygq2^*e>w#6qa@(J^GHx1v;AkOHdBdxlh zigQD6T@rP6I{H4KWrmG>c>H>T@7zj}&RPoVbN0R=hCeBBy8@rh>qq=fg1`z*m3`~1 z{0y`_LxttHX=)Q+n z0PkC?y>$LIya74^_buw+NUqV!7*6q!LnF-hy5STZZ|(ZcvUZ9vFnif~z@M-}*zD@J znrWiGV-uLS4H7UG+LeTb0f*~96y{{ZADVn-t5}_v zS_QqbzfBG5@t%zXv<&L*;T*SG=inlA+-OTXrYKtNiu7aL&#>Ci0egPSep*$*fOxoi z!s*XqI`fI_#c4oep~@SO<1>=Wu|%jpENFr@gb5^>8g$m`eE-XKG9OuT_eKOm&AE zGahhPGK>!(cw;TN#icUBE#o&A7Md+ z@;SY*Ep7~qsY}^UrSHg3Bxx)4IqZd1Zfb*cWcMDAcvzj=)^AV^I`%db=>&iNZAE&V zu{p|DY;^<*S>tfWyT{TU_=cMRtLzEUyhBP5YUNjcxv$5coKPY*1MAjbJ|z_Sf^FYtk{umn2+~ZSD5!$9fZ!_piQcYkND= zn)jUTc8z;(*zfk+ONG0^_3SmxtwXcYV;|XIV9Y#)X?u|iIM=617$4@qltHW?Vy<4g z6|!OmNW&bI+<6K}LRvN9>yZI#kM!tu`3Bd`)@i-G>>OWPBc7|5=Iz@1k`qq9Pt43T z6zE@lX>nCoZhh?$o%2)%(4M@8z95b;LgsO5w{{hk+R_v@Kc_63ebl&??;o1%Rs+gh ztMR92viWpok&uWRy$Oo>NDiucbuxzIPe$NQ|=%ojgo$|Z<0?> z_~-2sRzlcnJ1e*M(abD_TMEN%WG|3r+S-|rn{)UAhmv|;AbGj#W@`ULHMM!k6eLm# zd=?O`ZGJw?#zj;$_4*7eLEp@HvqR2p{8I-n2;VNyNOKpgdLMvKF%@ODHnOhkK6ja} zOL8M2pXprDY_hApuuwA|s@%*>6REdY*e^V->Ua`pZbuStnOL9fHh0S{ zqD|Arc~Aekvs#sn2VP`jh4|I6djH!?JL1mT)-$Nr+ZDj4}{e|k)_=ekfdp!YoXD)GoE*+1ANI3+j8`m`nlTh1j==;s!4*E0}K0)HP6DTploI zYrvd|ZMGO@9d*oABD@Pru)tLT5|peTOg*9R4ToEpFefG@p4C%VGQj-}>jnA6xvkru z0?vFdOvggALkdxR#6HBz$!Lw3P%q8CIz5Xfz@7w~g3dhq6yT7{y8Y>`uqh`}Amc2} zuA3v`bHRogl?EEl5&GMV*Iftx-H6-XS(f0caEMATa!AFbGfzE~t*KdbzfV_*Y&&RV zn^Fc1fG(cVGn)XGj4tVGWVN}%97@`{I4CRnuAsG(zMBsv5!QC*Q3A9JxQW-^2Low_ zv<&eD3=1^Euj|7mu8KJkH7DEU$u1a@@J;VULa`>l>GTE^9{p(nXOTD$s8SkD<7Z3s zj%Xo`$`+$%=T}gRc_@XW`O?^Pa~(=vx+!5-%d$``N-YY@0lo!>hos`y+-|l9X4wFb zTq_;4UK|?#rn+pBfhe(pR|q*XIDYcpuy$tPY~eQa55n?Yyx+B?0(kH1HtXvyTPs>2 zt4j79C0~Fkdit&Q-f-)oUTJ@PbA@G!;P_;a^u4Kg&i1eBNkxi{5ZI%6DI0gE=i43? zZ$OtQ0t25abqOfl%XYh~OQjxpF~7e2H<-auM{Nc`VwXBrllCf|6+hi&o-0Bs1vOG3 zP*lz_3$oBs9_%=@W%XFirGg40jn~DVmWK9gRAp}?zPX7T1$DApK_O_UOnG{wl?}@r zB!I}{A@FWPq6gV`A)F2!Rq^vAZ7QLoUSJDe_il#pAGObmYH2fD&S%yF$wiHzY4quM z>JOs9_>@7So757e5WU(v+qZ~@Us?B# zvsPp6tzY>GdGF><6+b&xT!-f^B=vfoEZk0na0>i%wc$lO9FlCkpf6LPfDY2aP> zTH&Njjc@jH-+K9tC^b+UKDp+ptMN@FJ5h!g#v`%E9(Dw+g2Q@gI!3HyrOiq=Nt_0i zD>PNMZLyU}6WtlP##)8X=fh|&W>13OQrZTi(rc(DPBZM9NlvC0a?WMWR<|Nv_69o* zd;wPDZd>2!L#cY>07Vk(a~_t|B%f}%Qg+Upv?U1;-H#szBmr8uV$(6;{HwvdNp+DW3#su+S7q1gw!fVu z%Z=tK+-e;hUJs{bl6bcZ+c+w1^8U#1>-pIzm|&}+iD#jZh`J#v)5zMy2(C9#37T^n z$YXNb{x&Dn=A(2spZpTZlE~OoS?TUkGgnzQ-HSuEazBlAAxewSsTJ`;?D^!kxG3^u z$?~DEn_sWS5rOm-wT!qr%5(}sVD>*U4;t9MRuEex{?^;}yTxK@cB$!D^jj)Cp()l8 zl$VDtU3Es^%?1(*71taaPkQ2YF3r!5epyNbmmP30tup*f8SY_mjz57|BK8fcUChXy ze{=TGWa;dF9^7P=p`?AP3xjq7zM>spNRw_VS1owm8lk(k&3A)vFw!>}HE!)Tv6*P; ziEcirWs7W}%RwhY)4Cr9%``4P#uaS*lWib`>KG7~aCXSdkXn<*arM)vI;h{Y+4CqL z`FgX(k*IeysB~vT2EjP%!93Gcy+$FD8RioFuF7a0uDo7%8~)CV2J7GE%A{;hd*4W^ zX9erubz$CXFZB1r{2~X3%E`m{&f0@l?0Y1Qr?*d42cINI8O7CQ&|8Js&u|R80c#;N z=$Oz5QS3SY(9t7!QRolQ0N1PGo-BgxSKWFXCnxh)YkSum5nI=I@j9L})Nikp88VOP9e$#omP(8vK#CD^D1r)J4fbXtnj-*&MLij>E8Y3yFSeA=gvo;0WaX- z>Kl)p;#u)pemRM3mc^ZsQGutey9hQ;V(5^0_MvuLkK8WoM*4 zhO>qY77@{ma>GpRE4;(Gc;7^xIs4rX%tI9;R?SV10V)RS`itVXco-R7^XWezOXW=T z{4|~bz|uwPz6paO`{zOdUi*Vb>{DBE{1%w@3*Zo0VR?5~!`@ClP9j?S7$L$1Z;SUa zsPxv=l(Ob0TYmuFU`^s)$gxqifojaGC0b5e^!1;*>`#O zqfC*l$lmWOoAyn{EYAUn0h|iK!y)Wee94xprCv#y2s1GSVXdmPl#LAAV-Zqjq&!9E z4}uR@0q&yvwu8d_C@gm}zt~yZJNMO4e$9JSTd_vk5UZ;2g;p&EjC> z*wKlm>X0fS#^l^6-5}w&FKdAb9EpM+4ph@J@pA=2O2Iqcqm^sI(uQ?=IZSB zKa@Q)s(-RQqWg(}yL|1|-P&hU*l(0;SiFKcEAzy2R4c0c!<8dOPW?wg}u7#uRFG8kDbgUd+DI zE{b9)3tGFPIdOr#-%^RUE5XVnueo>4M6_h&qGaqp2Yc`&f^vQ1aFhmA!xiBNKp8#P zyy7_^AnFjmh|N5S-kt)L+0(x4BBvHjT+9SlQY1~q^to}zlzAtKdr6P%IdEiHeydgw z+lcR^WOw2RI~+d(d9ohU@NjL#TV=L;P5orU>C2Ng65Rn!{PoKB;- zYv*r%8?XceY2;ApMLh3RZp)4Gn3W11F4OZwxYvnTCeHq!>z`{j97L5y@Y4eB;epb2 zo5Y7sY>xU~7xCKWdX(WwRIgU;=4$NGW+_Ge9QO%nRZHg_%w8XwI=^%5FOE!cfBLTI z!W1*_Do2Jg>ZFNKRw*k$vH_ydkf_ijfh8pTUHt?KM{yo5vHMC>RPSB`H-uNln|)fI??i%bfif-bDq0&@X6h2wrla&4yK634e?oV zW^z`)y z>U(>couN9VZkeKtH+#L&v(M=2^u?Q~wu$5|xXHKUGw#S^eQUGnGv4x{at{&xBj$vi znV!c@#INJD>p{>~D}*T9tP={e=F2K(SW?mH{(6!6y(9ac5=+iJRkoKp^Q`5Yywe|5rn?*=s z^WXA0pQZnhdCDF{^*1F;@7KNivKhAlD!zGGDH3ia9a-rYi@a9aSRID3VYJo=g-=;O zEx{*ZLI)a|4LTo(o`2M^!b>ZGY}{ym*`33Q8j6=3CPGpLUUb1aqcT8kj;I@h3Y^hc z7H919yqfTfHF1D($$SqIbAeCmEI>f%1g1_wGQ%ejquEp14P24|oIMTK= z#@xiO89CIcSgZLljoh1dZo3k1As6$8Q-{_R8~)wIv?Tu|j02jMwkPEGHV1>k4&BZ$ zqqXaS0+HCG1&XfI^gJN-&oU1=9}yCXo!%%)X(nwlgEE~bp9zT>zX@U|sc;(;00LIJ zH~Vu$C3mKn3+7!0{EB?v%kd2tyZMDm!D>Mmvg0LX<%~{2oOv=6hrnFb_E-C>Z4wsw zLC5MU%%*E`1KU!3f~}Xyop$mm?3{9D1>D$np1~vJ4QugdvV~X(S)fO38*MyUe=Nl> zgt3+db!o3ig7L)};ELm&he6^r%C&1I`^CGC=40{W<-SqT`kxt3QApD~`8ZirpjrFF}){^7H!igsIU zz1p6;Dz*9e@VudyYkxoMmu6DMPAaAWk{JV}X3$%%(e=@n_Zz*vX#{1602K`t4zYOFeLfja~ zT?Y;~Qv3oK2IE6qC7~SmQYei#gbsS8V_63ae*(dVe^VCy8pY_a(5WRd(_C!LJp3>R%LkD!0*r~Zez{eAKE z^f4KS$2p*~xeAqP$!D^jnf>yg)Y{PP@nN>#ltbVjY;a5x5Ron_DU zZ~yt@f0JAP<8#FKJ`gKg`r@`a-E#JMcpkIz;|q70muQE+ea@M-!~dfC$$x&WuZ1{u z5SYYvD11mNfkwm^(ZdRshs-;y?e;zUGk8RTd^2f2oL*}>-G|#LqtNBNy=w!UtM$}M zpGE&uob@02Po}uXyZj#WS!iG3ibuJ8mlQE?9{cq76&J#9NX*Kord*eQOr47 znb$tSd4Gih|3mlpzqt4cd1?rQS|LmrVaI_CifJb4fCucZB=A45MSs^kVDM%(0K|~y zoGZ<5NO(Yl5p~i3wmtn{yLQCszMOh-75$9J71aWR6a4hX!zrwpE)OQ^hwedB*6wyc zK0E(YrJZhM_TSTZ7rS2j6M%@TD+;Nfa+o0G;>+fssNY!ocdiM0?{ZP(MuzqOl$ra- z1Aosv5cM0gYI$$k`d(5*fG@-aixNA$8UQT`nXL;GHEnc+i9ETmx%@wJ-Jte7=0uEYdXl5iac%Xzbcph zpRGz&(Qy2{03v5UTZzh10k8Gg^GQQ@8W;qTMSDqZ=u|AZY!$)(X%brF;!_H=f7nzI zI?Zs>&d`oAs5Z~Wy3&n?attnJX2bkuSG6)*XaD=oc=eeTLnBAae{QnK;QcC_4`5y* z_-?m($WQ5>r+p&^cK@v@V?4?K@$aERbuFbtF7QT(<7k=t0=I}jyhY{cG8*r{Ut_k}?N1aNzyVBk|8`amJSppN6^1zc`(S zIOd&fEqtuZvHj;i{r8Xf-@E_Y1OFfFfi_&(#b4#O#p*h=k0r(1`S!q5)(_h3Jj2G=@yBdsLd3cA_2%>=f`M2wcG_bi2H;~it zIW?VetS5@>eQVHoBd&KJly_FO>%Kn{#!{q#^)K^{1A`kOJ;2~ z?|Ub5gZ_7?muz7`k$u*0X%B@1!Q{{~^r zJu_o$^O0D`^G^@up2v%8>V|_MR-rTYI>QSTar)&phy2FII(ti>U_5-7Op_7X^s`mlE@bgs(zq*DoR~lbJtT_l=`d5t+_i>&b4g3fnOUD$OrbPfn!4 zg5TkIOQ^4(*M3w=ulXITy|Es(p?kldTEI#co`w$Qd-ak5)T|O?^Zc;w%t`m(JthB+ zU=#3sCJBn~0h_>F%Du9;di_yUK&iM#&lM-_WiTp(1A^7-Q_H}yd$zfaH!U*c6dnPy zGhCAbM|8SrRr-q6x(DUv+=A)FEbQR5%DlDmLW{8e0kDLWrsvu#pXrhivM(?HFi7bb z5egZpvRWB4#kygd-jTD(L?n&Ve11c%M>M~2ssUX zKn%TJ@_RJ-zd3ki=01q#SChxg!YvF_kl&eHY@%(>W04x05N|utS6r~4Ahor zg9Z4g+;*CGciH_WUfYe!iSFBz$$pYyRA}UEVzo79ovM~J*6=wf=K*2AQa~#Aji%xJ z-4aQEAbMH%7f%^HJ64U9RGJDC=cgNKTv+rBkFPzs9IWM*g(uiIB7SYPU=A^}adB$O zF25lxr~=O69}r(^=yY=(-Z;eK$Q`U)U74e5B=fOkic6%`=tts{ua&#UD&A)ckavqKScs%K`sc$gd=cY zOWU{uRd>22`OBJZS%NPPjxAF-QQnj9eGW!g0rF@2x3wgT=n#pYBFlrY`6j7>cQp>1 z%#9C@^5QXWK_U|bwF`Tq?+W!Y$k({RK!HyANq6+T-%X8--2(LLp1Algf}U&^Pf8JA z<~*j3O0@(DlRaJoZN~#MTPKPjT3)+;K-W0!`>mZ8 zMXwtTsG-Z$cLm+tCA#WP`#>57;7-7+TY?s=vB^J;A$Z|^n*+}u0n`*g^Yt02`v-a? zPR47-509?tS@`y*Wx)08`z4h8d+YOrHP6C^E5*mw+=n(owfcN6iJ(>9ML$JSc1?1T z4Ojki0z7|ad%_EXy9Xv8N6dclMi@>$%9u0sH@*|ilDd!Z+h-t&)~j>UGyUPVlLHh; zmgBR9n*FGzII6f~A~MVnwZKqQ;(nPyR-c>jqJGx6a^?|(L#M$Vcd)r61T|TjyBXxT zybc|dwvp<*ev#(@H?LP)R3Ff#ky=rlt~f(rPA&Ae#O_Q7CE3a0M9iGWdjCw({9^m{ zKp%lq@{`gZ=}$WYak^luQ5T*?xda?jPL50(R0OC=&$MkSysdCzR1iy`#9d#MIy7!) zy+Hvv0yC9b#qVv$6>co0^)9gsVYB8lvygM1$DmKdavudB#g5U9{y`>mkNzL_-YO{W zZ|fE%BoKlIhhPB`T!RNo&;$(<+!`m)xNCyD1ZW%*q;YNBp@HD;jk~++`Q^XAQ|Ekp ze|2B(%YC?yT}4$>z2=&0&N0Ur(^+W`GeDHn-;TFb+gcePgG+yDaH8_X5Rx%p*I*%z zeK&=9jr3u&nW+(6A|$P|o6Ahr$F+H4i?}EqjfQIg=_awQA zVExv~oOsxnjF!s|;Vk9nBnBvE0X@)r-!JRIfM)x>!<= z3y`LIa@R~_S`hyNuLhkf^gPAcI3qE*v0W=sXjSOl%LOs&C(yRkG!BzVyP=;drDxUA z{QN&-J04=wJ6@s5C%(^|&_E=;w_G@0S(`5m*{vM2q&`k(9Goy4gcPAP*RELv%&_1P z3&D;&+aeOYTCe5s+>G0iLaIJQ8CSI$$1fy`Bt49c`^{}){LB;F!pEt3+cG!FY0@<} zr=5IapP^q4X0LhTKn-mkF&rs#v7)AUT2KKRq;1)4qpvV@TKr)~)x1uLvx+^H$11ud>WrSm*-zcp zpV2mTcTYN;6-wUS2*Mn2;PU1qkji)HUe%lY@WhrsKrGCgM7KRQ-|Q#ufRcY3iES1m z4G{qx=|Jio78UcW*3R0E@;X16y)m1zO;`~vXN`mL2XZghQoj5=LL^DH z&;e{l^*1?Mn8B4q-=CLkiTn{&?onnUru|e$`r7^t?hvn&nf((|2Spc-jG9m1gqPjB zwXjz*!Ba1Y@QT_!33wJg(U1-SzW^PxudW?J3MZra#eNNyO?| zt$Xh9Cp2u;G@gt_xQ2*p=!+7n{bg`v=DhbIZ6iZS`>E$<68H1Vlv3pL)-%ivYdPcB z8)tMx>$z9acVF0s%(j+rc|2Gz>*iZQpXM6R!jW_N$~$^&_5mSu#^J9K^wzv!b zITMeP965Q9@(dk>RgyL1EV4vZ`#T(~W}Zs9J;F}QKuVz8ypEdIrvaj#5z|632{KBilW9T>S^%IJH5@$?QSa#CU6}d-Y zo@3g<{Uu!I8Sj2TRdV`gQ%j=nPm+VZ z+b4uPLHETD_flGToq~hkx985Gm^U4hs7>>NzH(~Olh1|NljUiup(C3@-lV3-Syr#c zf|UHRk!Ov0%wEO%iKf4B^iLmt4&o{q=@m45nf$ragrYYB2O2b>wijQCWT;rQj?lcS zN!=*{myH1q%Hm+DDz8wR9H_UOT`Q9sv_g%c`uDLp{Q1jw{qrWizX_@5g7`eqX%#3T zZY5{D3i-kcD>cqLD7lJg+Savt7&Ys$L?8VdUu5o1>H#(p2$6cXJ}*G4_kJ$^U=MFMx4=^O3L0{ zQifPLn4K_42N_wUrE>E0{}f~AsllQUaWZ2Kp7Dq?bjO!1(rJ>nYQp@4X;^X zrMiY}Xu{^(j7?`=ZbXHytp?NV8J$|RVX?~J>lZ+fp9|c(Ya1#2!hpBChbww#P2rZr z4fx+`cp|;XVOmZ$*Qk#7Jsf02;PvEcr=iTMeCbo8`+B^M=wp`8p z8h3~+i`*zf@1gOuk{|~3xdBVV?IA;ynZ9&G)hexDl=)wvRdZ{B0l!5tGeojZFC_h! zZygVae7as_lrfc}Kuk4%Z-LusmNtI(D+FNW?u|3&v))+*X7KYvFEdIkRL~2;U6ei9 zb`&dwY^2uD#hH!TC}Xy(qP>S)cNinjv_61;?WsjMsx{JA1i8F_Nm-*Z+KUydhf!jo zO&N{6l|=e_Z&)wO125mtJBoK#%dOzVa-i*l5hv{Bykfv1(RORyMAB1j4*p8BCn@yQ z!1VS5{8`y=undn{RTyoZD_jjDsiD8yB*TW}-AawO+YfGq7xDm}~X2;pT*)-(a z;E_rIJ8{gxl9YMD<)K!_XH2(9yPjqV&*~Nw z6pGM1Rq#!|i)Z5qlJN#vl~sr^jzIa!EAsIdl3z$NZ^bmO2kHt>0i;s8_A-@kJ~iY- z#RYUkU7AyAr52awrye1PzN~nM_Zlw=rTT6~8Uixa)%`zjZ#5F_Tz<-6@^&nKNW=C* z6Am$XJ^o2n0x`ThQtuG*WvoO{Nsfv<%~J;dwAG0s=Y9PdW2npCrx}sUC2@K(@@;5) zxMt+jx^i0cc>Tbnj}Hn@XKCbb*C+7JD}nKu&siYppM9`Tc&(=@DE)fCB#JlTgRhY1 zUnOwy&IpSK^;5&^DGVLDXl#^Or^)0FO3Kh`S#3t7<4kh(7{SysHLkXDhkqTLa}0KR zm6yHP4ik~W%!-9$Aycv-&4jYqAI> ze~IFy>J8b^7&Srl(#IlfKBlJh5c+LDz?+<7;=-R!axDOvBvvr7s<w_mS0h@!um^0SE$|JkDvzgi;IH9SNK=Bk|jKtg4n zh$)dE5o8WSwe9z}7-7WTU1?YF)g45?KC<^IP4hw_M`hj}94MB5h5JW`?2Xom5h=#o z$qL}MaCK-`HbSEYZ|=#3U8UOgICAVA*gM9cL`B3{Pp6qZzFhfnn1S=%+A6uisi*d3 z$KVOHz+-zc$fi|h!WB1FYJdFfDegfCd}Dvk{&#MjN_P6**NxS&YON=sCPS$9mM;iJ zRe)L2`$7&QXQQ%*HsNBtx?P>e8kJ_Ge9oA*)hO~hc@}gP+bzX7#zU+obw$rj<$@4R zx-jM`r|vA9QskULDr(*PBiIC!QBJ13jUgqto;FANq&m99g0D)uq#z_mg(ll_mZW+G zgPqc%j`bcz*lA6M=ajVY9lmyC&S=&EYLPiOK283gsJ_T}K<3s$`mAV}rNKWU6ID&X zhNI)cwhVBjLo)v)Ijvzw5*5utvsV zlxM}B6}Z}lBj19mA06dWN=JoAuziNs4dAfaFrIzos^JF@x?b%zkTvUTT0}7EIVH+* z<)&&ikVjm~)12KG(fm>Sy#M>>dd0d`7c+D-J6@0@a!{35#h?J~@a zKQh1zT|4 zD5&N96vaNz*Rh+$dEIQ$<#zJ|v}k#Jl|5cRXM10;*+$`H=0#bd6@+o; z<-BGeEo-n?80S8R*cq5v-MPw)q^Kk%UPuV*xR`Wtj+Q+0p*cxtN(BSpCm z!pG|-0m0E=3KQw3({UR>g;X3T2++0jpsK zhSc8?CSlTqXY4FF&E_O)Xh0-fWTMu<)VgEV$~9I21qC5*X(|jxJmEK*y;)Y$;A`z zg5_+kF?}?MouY~%#E4*c>7CG#Jujp=OqRvKbuMFpp>)^jmxZFR{dZwhOYfR}b9!~A z$)#|4_dikm88P8PPwb}`b(u(8&aq70NRr!nerd8~<-)LG-d6jhzw zt^(7ZGZfC)zIe~;+aH^d{!nJK60WTYNIoQz#(`Pkhf}nEA)E4^apK~-BL4WHb8|%X z=Ib9d2i8BTLRT7{;$aVYcnYt28hzHbqD&u#L1|_OqSaHGzFB(pC}Qd3p_`w8uvJ?7 zN>TBvFBJagXNX;LcXZm$?fS!A3P!IGZikSNTiG!)pO7<-P`2RCN(E9KZoOHi!FotC zt#A$R@6H<;0zZ@2?y-0QjQnfbpDK0OCD#lzqDq|FSPT6msRfF(>-;}H!v?cRlLn{1 ze_;ia(8u56rHt~4hY0mmU>X^8;F%;zRHOZlD#hwfP6lP!hIP;jv878W{;4CvWFc&s zpzUGke`*bFHtnM^Gzl7k7wK!Wc<@GRht*vrwNv_Ah@@jVOuOHHc~L3tXTDGK!_60F zFG-SxhJihnqVe&~j0(vx_Vt*M8*S2kWh#bz3A;C#xJ$nvWG0|99@sMF4_CE4HS7+J z-Y4{m-Z7AGP{j`mjkQl4rFGK|R)x+%5ZTrOEV5taS;Ao@f`t|ikH4Oscy8*ay1nsK zGv)hPItHsbJ)3xl9D2I?>2KQ249qA-S={mMd;wyr1^0yD z@bGH^+}t{#DtFf|`$#_jI&()ma`gEPV_3D8{O#EC2A8&9OlH*Ti0)<*qx04K{XNXz zkWlOQlpoLy75u=8i&8M5F~lYkW0b6;*E*XH(}$Ub6b z%qZEVO{Sf@RZhIWTeonpvB7VdWBjo`V7AHv88ivVO<|Kzs=O9m#V!1xDf^wSt7u5w zW03#y&MIbirGj56=bOpW)@%qRcqTE-OJ=>goW5ZNlVb)=KaRs=dE*(eDA{lp&T;Sn zN{#tp*_{858k_p{EGAu0(dE*M*>?t{Va*?D8-0G6q2kL?m{6-&qbds}m1%-@MH*}C z1n5SU`Y{qpDn99Gv7fh^mtT|Dei(D!t(uEv=#rbjOaSV^s@hDA3#->Pkj)jdP(bwv zb*@OR&Og&c40^X*>u}TPdukMf5K6}jhf&i`MrbtM0`|#g?IUV4IilSjF)GQ4>jky; z`wQKnJ4KdNR_wK}_2hPOZYco!lW&GIukv>R{51X>20(qyQdXVl$TSbb(H&E0e6cTF zF~8QR2E*kl6xYfGCM@o(S5VhV-@Gr@L1Xu0S?97c0y~3mN9jYewViF(ewtR!bwsk2 zvknVu)x>&*^piOY5_)eXkbqU?O?CY>CDv?$oPA8c@+VZkBD2;R8}#lprA09bIWhXG z!<_MqEg$g zwe@j*Fz&XQLy+Yge*DE_D#*WG#}%W9tiyXld7N7;s9TXYv_6lYE0zY#S@*8+mCt)r zEBlFX)}G^WnQUBaUULZaw=_M=U8+hyJGQYhM^lLbcmlr&ekiTxCQCKh^-&rZ)=!n_ zH1xFBoO7&`F8F zBIliDPBswAPzmV;$APU(%=}&t*C6cEtFcN=*8cTn`u=o75Aqy)#B{8#-G%9pu9e2! zQz?u?I{Aw86<=-EeQvpO>vi|SWlffM;onUtPXH6M`&<5W6wgdwJW8ncBp5ciS5eN8 zP7RkLWqZ6EdwO-j7S}CA_EJ$fo6>T24pT{g;1;b<8!!!q2$OXe6T+^N0Oz-AV&~z+S~ zJmRFZC-ozcZ-(gzN9lRWZN(%V({qyTYm&xyj~sQTj(woJ+QM&!N|l{KfJLNwkjCZ) z@28m~8oqcSQ8h`Q@RiM!zS+Znv(pWWp)A%{?p1QxSr^xv@5G^e=Vkk*&?!YDf5rdD zuCwDdxXr(Lk4#SgNRh{FwCMy$_v4=8|gw_ai}PTFuZYG@C39cH&2gXqHg? zvKCPp{{n)lYKhNyOah9XM2XF3v8Kf4J?Q#D1VY7MD%4?;MqawDj=n1g( zW^!QlC#z)tU#c&2(+u;|ahH66sgM(#__@J$5h1I|E_WD{q;VOCX2Y|Y{^`~PFV*8i zGYsy1WF6kAl^&YZFjE!wT@|L9ZJhA!8Qa~knDo6A8(!@(==;6Ewl#x9aPu&Cn!u&z zP!T7s`X^;%lyY zKMWWEV_kWCXo#eu)D~q|Hs{~h7DI_|X@j!5XjIofVJujN@Hfyay0!8fCvsAfvlulm zW@I?k`PmH!BM$S(!1;8OAH0WC-c` zY>Rda@EJ}WaqPpH@m6D8Ou4~ zxJruIpQg~oIx~bm#*7CYfH$XOjf)WwYCk3UQ6wDAV0-||*RqutBzh@QWwR6aE}$_GnJyUWJP?_P2ce^O8i!vGT>ZwzICE6Esf3EVW^nt>>UD*4`}v z+sLcxz6SPsJBq2_W`CaTG3L9GTd;_3?sI3as3T7vquBQwcva7ylXbUC*J4ayW_X!W34c*o zpLD$z+&wYK>aNODW}Wx`N4c84=3|6*BS?mXRh^tHCU$=*2yv^A5ODRgs`+?!F_7cun)#4Bqz;2So^tPR)%8QL z-$fcncvh(VjG^LlGd1G2FO>=5Z36EL81K z9cwgU*0G3?D^wGBLo`JGEZnqP0fVj5j`_=WKxglUsg4O zM_A4}7A&U@w*>cie}QDK=B%E~MlHBEL=*vAVJ1d$q6`;s0Blw|{->)32%q_u1(FEY zYP%~T6LQQBVC2bS&H-=*BAvVry^Jba>&Costbh9OIGMI3je@^T_yV0=I|hl@^)6_d z02R3(t753y-@=F0_>ffbedovrR*4b!grCi*?BTyvS!<#4kAO54)HiO;C4#8z1_IAH z#HZi2GdHXpCa84d;;X8of$kF2RPWIXP%VcskpU`fmE|KYejdGCQUp)#R!}+Asy=T~ zr#%2f^%HB7)vG9@^3j=y<6bGi-}AL8_Mtt^JC-ijYh%18lU(9Ci8B4aw(+S=w;`Ka zfmQng2^`_$BeOzLGvx7>v(}=i%2(QW-1r-#;VPP835+yPPio^6K2xBoH=*U-3(dYP zR!rX)y^ zYAwREiGO}_Y8C3QtLUHMH?$4Exktrl897q+kJ{{ronP&z{R66!Gv#=W`)!-Di$JtO zM!d{3l7y?Lq~gv+30T4@ScVBz1xozG^?fJaoy?Z*1F|9;c0#cK`}MMa`t<4PrNq$=WpqQ343G-J zKl1m=>6{m{E@IG(l3GAf{bl;i>r5D){eWd1ZvhYn^TL$F#3r4@0RUjPv zawlV(>%FBuFbYr6!svg_5U{8kUH}Rad25@7^2vut7HIETUC&K`*~)$H(EIMw5$_Gf zs*TdjD>`nODIBlUk3`5yos&b;Boc|r{~A;PkTG4WT%*M*%U*e8Sod~n)5NXXM<;x& zr*VJlf_#*Xu1Ve4=MATI>tZ~#Uc;An(IWNt`w(k%>=W8ydjON89r z^bUWiTdXRj)VTfd$2@Kc;_Tf98(gp9_{wo=@rS!mgn*b*9EgD>S@r{^LumJhC0mPw z5&lE3H>oOh(EU=);_>v#FeAWY0i7))#=W1dZCRy^Za_BKDXtfM^VEpP*UkSCFq!ARjeB^xGAZRGH`lP8`Ayd$tu&rxb`ByVShFQo$Ea=x9&nUDl3aJzr&l5!lP>%uxB{{M z;07Gy7L>9i@nS6gcFZp{FlO^#dl{-4l%(D*Lp2IYqqaveO_R;3jI|n}JzjWF>-80{ z@~|CHpvv5K9Z%is!ta{iuNEN5L28dnQ<;YHVj13kmJ?x$9#--8cBGb)czOY-yOu9l zo~lymKSMk#o$P>9%~@q6bF>G}7X^lXiKa>q15+nS_k|$=V{rJL1HP1g&h@LSPh6EX zpSYh#9dSicg7etW>Og&1JYZy)&~*APtCQGCT%0z0Gk)kMm%Z(-)=rK+*@QX)eUQ*= zjY=ZCrh6`vJI7A-vm|vKH z2?E*Q$`EUfI!BsDE8TK0#jubL&A>ybW}P=*+gcA_)_$2oHuwgrK0 zo$JUWJoFbHOzG|5)?OVd)|_D(S&IMOuz#(&L(|5DujsV$d*vP?^o$CX(vIqAk-uZ- zB2w75Or2#Ff&ILL8{>MGy|o~9$%{xl%irU|u^2*ATunr-!(|Z!_mQ0+|MZEg^{(n! z@3=yzd|R5cAH(f`B5d)Vdkv8ws;>C)st9oW{GSZR)TKdL1k7&E;RBVU{;fAw2f zC849z-Va3d!jepm#D1UFg#CD))j^c1FHrGvnVHL4oicM|0%Mle#w-#wr6KW}i6@cL z=Ph;8+jnDh=e=S2pD$)fUtk>Sw((Nq&NmC&@#crbDC(IWy9XQu?=aMA3!UnS<+g=7 zy5rCt9W1H_S%i{zCsXr>LtqGBkO?M!6hL2?YeSP>KwHab@S14ZYTv9A z+*89OL>BudMpX>a;I&Zj#jvZ-$B~z{NF=D1b7|pWZ;<-9c}%L5XCm3W2xOB=_!P2! zyUd~VaMG#WvUJItoN^Og6Ns{KJ4sEoYnhLZ7Xks2`)W&6b5RVDUnN4FA`z-+_&516 zhG+qA_y>`s)8VmEmt#jb$XyJDnk)~6jT*-odd1kF`IlAz-8x$nf~a->Mv74g`AaK@ zKhwZBWMA?uH-sxWjbJ48-!gZ{<=YUmLM!G6&^R7zO!}nVgEDTjU{%>NE4-h1FHm{I(g#;B( z6rNEnzDkc;QS?742-i(UD)hUeNkl1W)+Z~>Z*UBWyN*Ue6rZ@qtlyaa4nC(&aoOXF z4+mSeN82aR0OVc*HWW6=?}u)jBH^8H_@DzP2WoV8#$fK1F(!vD<|3?Tk{1)w( z1xy=V6hYo7yH}2V1LxH~W@0qJeJ2Cs- z6TcDx6PB0WXc>dPm2VhRljrN!n6|Pg11SGnr~%5j62G1R-$wQwD*NwZwk3(z-v#9H z1!g>hbY(-qMQLas>NQEr1xWWX;LuOfF814O&UV^g^{dbEJX)%mp32ma;ny0&O?M#{ zjbRDJ+g)$Jj!67UMBO@xDEfOxNghznTE#@n?T|vAI6*cB1fjk|3|gY z{|99n|Np=A|Na;F;DIJ|+#j~+b4&k#Xf(3%FdVD;Khggmnn3xteA+d_P zr`NFxvY15%y1uQ%I18?T2>!3R16vHj)cE8+<8h|c`|ZeYz(tDd zk?~YLd1xG^5FV|0d8J8g)v{bpmf^m;VYaaTCt!x-BtNzF#>-{yamS{85%@DE#T-&x zwwbca`XIe|@72|TU>!SW8|1rfHT@eVBYgN3TcV3dXW+gU($kY%%p3Nf3a zIU3V{z!m`Lr%g(qt3_Q#E%2fJYc5)c5AhPyPht|G_gNVa=%9?ntz#9qM8@6mV#`Is zW5VJbVM_mF>-{2kh98a(Jtk>gl+eRdjEzTi9S?nA9RG4Dos`FkvZZ?ADf1KiLuM*L z2ZthrgX~*Q{Lk7MKa8E$*6O}Wl5{x?F}KjbOM&f6LFu})^Qt-_#)Fi?5lp*$#>R$M zY_Gx-_HA3E8R{Ph_wz91-LgL1Jhd?qv$JQ~M~xnfPP!-o7PG)1rp;mUL3_&l$-F`q z3w@4#nr{vs9WMEN+H7tz!yIDy+k{7k!zWDi8yoNl8odnixmv{auOmBkenY)Foi4Rg zp9V#gzNrDdnO7XMW-589`{Oo#@t*8!;F|VJC|PQO%vcGLy3xJaX~9$ZTV0D;ef}yp ze?r*5=OgZ@|54bIZz>E3Ta3HQMmGMg>zp}-oKd)50KUQO3uO~R>ctHeZr7^)6yi(O z9?f@a4($8W4!?e`Wm}MSJ;iCX>fOvfg?vS>CX-eMI=-U8B>r5$J&*XX@%X~V({>(S z>V{iiFP`iiH1P{qxi=1od6yls^&bvOubUn=JglqM6bseGIKPwZ%aq6Wy!1EIcdwfK`ahj8(=!biIQe4wGnepC z;iUDup>DdK&@gts$FW;gBjhQSJ)y|^DX(qWnz<_TZ5hW|GV6xTDyq9Jz%1%z1~6F( zNYZJtrcIw(boJQUK9EP0tn7Wg#i@@HVAFBySygQLkm`v(uu^{8axzi3$sW;uwfs5v zVz%1j(JxBme3tC6`C;;wrEqY5v|O=;>vPy*o?YxrZ)~bV56;5%Qm2iN&E|q-`+)E* zHi_7F`yxu8eYIdJrzPnYd_G{>)~V~K?~SLa_8TJLeT5E zC+fQ)xr-TDU=?M6eN%wQs9xmrzJ9C_BaugV*&2-VF|m6fuh>91Q86jP+V+EdjuI5_ zwnP`ss$4XT$WinftuN1`ybeeB9s{Y=cs7dX$Wf+UmnaS4dp+k-&5>=fw2F;Cyuv}N zrg&sTNY*#Ah^89~A6-ISZBN(r-|YCOsU~D288cL;Q^VA0n+7{bYkvsMoC;aG`&s47aHD3&cPuJ@D zU@z(vSKjYGm_;nujo~*2BF*Zu-+LmkqAo~DN*6lVLQTTaE9MO4=VA4y5PIPeRC23t zFF=pQGsihrZ*rJiR_cg<*67xF@1N428^<;ynjd0w7jB36MDJ-iOpSOmUceF#S`H-( zmO@+}BBL!!>rn(Z>we5!$920bUYrpt2&C<3G+)2}h5IPX{x}LAnK2F?YaKkN0LNq9dOlj6~YoU4|yY#8g+MsGmgSq0s*!$bkXoeHXdqI zjlCFlYW;S8K|4nR8a1)Av-#p&jd^vl>!Uy@bTz-IVq1F8u>nC)S_n2BO1E5NNWF!a zaruKRcLD#mRNU)r8_(T@mV0K4S&&H&02TfBCrdZ3)j!`s4ob-dswW052Uzwy91Rbl z)may=VbJ?*j7+odp<+|Iy1kT=s-`#8pXppqbqj0!&bR2+k_HH>+%LJG)4kbnA3n~(6ODSqPxr<*C_GvoFBCIntsD3CaH6~^ z(+1{gf6B6uD1RWJ)D@0v)bl*QRr1ta0aap_N(FL%> z3{u%BJRSk++o8UNG@*o=hT za=n@%eAKOCMQa|E`X0~>hM6rbfi{xj14@NG!_o|6VD#?0^Ek=$g`I#XuEBJ0)_8)s z`ryQ1!!{{d_GP&y?fnt3hwyO!Qoy)Lv$*xp`-=042IOMHgR1F7_vFD6dt^aahV;s zY~}Q8>3aPvX3_lUVt$Llc777z7S&EZZD0vBaJoIEdM#UT+Wk`tXCqz0lC;bdkGi6+ zPBV6Id5q%s_X}VS^PSRMKvb(s@uAyLH)SAqaQH{2o@Du1eH=Vj6^6lt-ru^YoVqU*4mjp*~olv z*(qG}=?`Valjp}T$wUjQScLx?m;pp~6lyEqd7}@3SX_11L&c~N8u4?WG&K1PyB2yp zeZ&pquCbg=eM{oP&PQ@)W%F^t@@0`*tp<*jn;#*&yLmWw5V7b3v5>lr;9i{xY4ud( zJpCN+fuB)NV4*PJ{zbQupy5~5kd{r|h3wtH*L;)pxYp(xW?U!v44S`iG{MJO=*sIk zWUGCXHuN66Kt=sUo9RwEnRihoadTv1FRFPkitwC>I`-HaGbp zs5YYMihuNW=%@gFUfR0350wQ~B@+v^S~gd-_Z| zH8_5!H!MYobk41}?R-1KV?>mA6l34FvcD%i7K7w{akRSg7OD^|+Mm)e(iH-@M5A_Q zTfp{zel$z-do}b{^byt~RJVUc0}|B!ExeCwME6r>o=T=6A%|1C9O`91)SP=s);`1> zW74%@v>V}o?{y^DBF-1L*+WK zS5Toyr}Pz*b^qBZ>*gF6G%4%P4Grkvo3=w=#M*6=VWO`;W_v)wVbp72X!l)E?}{Tl z)PrB=zAqqtb*1z9_D@8!pR_+IoB+qvS&YghWjYe+KqLl!*jg{&&(1BMlKSf)uv9fr zF>#*?yJ*h6n`D&iYRBX~7E5%ZsM<%NcE>*n%{Sr=>xFHgg{!Od80{Nb0n zL<>`pAZCQ{Qztvz6QGB|5*=<0dgJ-|0`NZcu!=a(@OHbUnBK1VxV8{PNzZFByDwcp z^6#L)uhW;US`{`gdtU8XbxB30e0yL0XfxZqNX%pgcfkSZ%9CGuP3%85%6T|`%r?^&5}dhVXrd<%GSuRA8CEA57@NLZ`F z4VLo>;xqsu-a&LV^neY;61$_-wl6Rhk^wMOlLsG06(Xe_Px0D|u-^!2eg;kXYishv9zwm!9a{HDH> z3&3%5EB(M$l2dX_>enfT-IeSQz56IWWt=bSW7S20*EN>9x953tN_C%hIal)vE$G!s z01kK>_Nt4(>|u@ov7V_5ZebccTKvx-hYwoNL#;600=qs>Tjr1sT{~QrLka&J^EBfdDK+$L7$u`rAe{Zc`{=k0ymtc)w zXqHOG4tVSaXUtbUqM23#ek!fVHVB8Z!&Y*N{HO2cI6o&s(|EKadV9w>>+KRFGVXh5 zo@2n~@fi{RizBO|M$T}SAlse%(w2U@a7vL~18{X`nX#J{jE0N^IOq(I?W#GXx^%{5 z-o8e-rEV?uev$@~XqCsJS>>OjlfjJx%w%3NiOKf%4QnWYB%&U448NNX{;}P)l|&S8 zp>J*8p3THtT^Rr62Ve|1ba&Pw1(K_mCdIy=hXmU|{v?C@3QAe9;0dFZv}kNe$vt5l zT64gz1$Gm&sm3j_Y=b^qbG6QP*U%B)HHN@0?A>p(A@RG(ydI2!0(Rr-i}zTkW=iGp z+~_@;vBsRGxLw~7JmBi;a0L?_=0EGzEE+U}YKb!hFcBw7VC=LJlLC!sJrL0hYT~4R zbBNJheBb{N!f6)OxA(PEr0BBRGRx(q&UwE71F6R>5t(H{4W-+&*pJi4rp$`oM4!)k z;mA{+CT*@tPHj2rc3cK3oh#Y=MBuX(fWLN>kudlWI2))clJ34eK}8VN!rEWTD*g{YX~rf+(|1S2GOx9p#N!?1YFZl4a?2aAMB$0D& zF#7=qf^i&RsE0x+G~ow!z1t8@=g@FN2o(H5rg$updl@Z1X-)E1H8Ry$W%&SE0AMt1lM=dq@d2$B)p-M0fBuJ6sM_o@vg&UZx^nJV#Nm7qJo&9|f1NuCTDbVt%$ zW?x6MBO8|$trMWTl~r}oLj@)(HNJ)zd73|Lmb>KO3x!3(#rm+s{<%IK7%kM$&fC zCre8M`e$8!`@J~ljo)K>*2&J!1E=@;*9F4FMn^MTQODm-jme~i)b$$MupL;9STsCw z-&dm?`8eBm=!8fIukJ41MW#h81%bqXY69W>2XF{5h!F(R(aYeHitzGr)|1jNV;fCK zQjNP0cqoqy8Oxx)DT^%LpzDx14c8C+y}G#Hn9E0s_V9pHnm^jg4SMVfuuf>WPv*UC zlXNo*fB{%~0h(gcg2_(``x=YGqChNoEn=bt5YiGM7lyGutz&Kl7Ty#|O;_!yZ6|R) z$J~#z!Q6SmL~J2!O8#F*BiQh;*c)(dB1@dbw-GxpM6k>0%+yb9Jyl5?HmSrRXoXs$ zDa&@=M9dm=2a|CFP@_7xyniLWMQ-pUeS_lKhohRtn29DAFX2mCR`oijHShROk+G4|8erRHQfeqr@?vV{ z?HmBY)u_NWx^_um$Bs%sKoWuciC4;T*pKQ!@ahK)(;0XZ%YVa~@i_2aa1aiUv5p zgEt-$QYdmlEL94(o%)YMzUDJXxH$|BIuKd8kL{B|x(inFf(?YL`$IkkZbz&~EcDHT zNxDb8`j628A4B_DP3xg)0ZWLZasxp!w{oa3=t8+qqxMgZr0;JdLCJ+o^Aze)cRYZ4 z6XS%!k z2n5mhbR#fWigwr=Z|r2wRGHrx=HAEgzHZ2qFnyU)r5E$q#q2W8bpo`s@=)&^vQi0< zJ9G@@<4!lHDfENFS1t=W=ac{rI^UJ|;E)A;8i<=pWa#x@~G7*V2vTEBX$<9wo zN`1~2>x3+IGt^8+s#V5JUoJb)-|maL`Vr^iJ>RVa_G$~hCWDd=Glyu#{I?m_KX|<( z(htDvErq7Z1P}~0-4JHidL2@W9n87#YsL1TScQS+vXf8}T((u9Tv@||Nj1|LzBw3U zRz63A&kroHA!e{oh{4&%qEjL%&^L;cxPiAZP+`Xojj*7cam`a&hGiwI0f2GsO9@?P zp5V;HyIFNsL6ERV04E~hVDRInHe@W!$Ll#JBbft1^Ln*3`k7wE4zn&T2%`8P|52;y zJ~%!Ppt1A>(8cN2dhawnl2flA#ZW!8RhT_$s=V+HA#)Qs=^#5G6##Tn16ZuBVN{P8 z$Fvsdz^@2FtHoB(sOn=y?e5kb$f*NRROqnQQV z@`+ir_u=NwQ5$8i83E5LqT^FQV92gh->!T;dn&-*DAf2rxGAOu{Wa{H!HxBwfA`o>b3#N98C2{s)t6kostyHdsq>$;Nuk>7G9M*@|OXlVvDrmXR+35?pv@J_dwjazW zoQ!YxvgQ{YSYbbK7IlQcT?$XZNHMmpQb2TUMXqND=Y7e6>!Z0f_(00`P2d9NUByz? zN5cN-G2{Q1m~X77Dy$$wY@+Wg!V|;&)iqx@9{tnI#gKR-M&?sbni~C6VIY_0t$I&#~#&gDmuFi z;IH&}iKRW?nu#{oalao#&fIAx1KMZ@bZ&V1@T!r!fAMiaQF&LtKb@QQUz&bwuaP8z zg19-UEUmo^HAQ`rO9Q%>4C9c9;lol4eK~> za3`q3*Sw1k1+58t+=%db2vOEpXDLhW)qnY^`(M}+vz0ON`RxLSrs|(|b*m=X!+H0P zy){a#eC8P@uWUW2#s^p9elnj6)8&f0e4%wH)7{L4oL&TZa7rY#+PXd4G<+CHA?#9r5KnuK9ug~^ z5hJMTq2yi#i4Cp?&@&IAEfEOtH$%~KuO3cVFhjiaS-iZ0j}cAhUZyq_9KsO>P2B5@ zqoQlRl1naocfx{i%~f-W)$I33CYWro;DjqSk*H)Je4o0!`inW;e%+Wfhqvk1IEBfA zv<*KfF>JczsivzZZ4*GXxkBT5Xk_o-m0s3X2MAG8k$66)J3KyYqXNafGjRm$zY2EZ>$SnaX@0fU}$=$ZOQ8P%9aNi6si2i5zw6!FoH) z0MVfEUV8uHd6}7@ZicR%p0{a*v}#4>PG$?VuZwzQu$G~&H9ufza%rJ`=$@~ra6Cxr znVBmSh;LB)>#8AZ8+7NUoK`b?E!pM-A6-o%%*xG1$@qyFD6Wz*K|N=CUN@eHhGC=6 zr!MO~zTc|3K9V9YO{7)8T&1BZnb9O;KJP%q(o;9*b^HnYATD?hw>p(d8fwGN!p zlCW@A$?g<3z|x&3mYy^^>+0%&T%Q_Y7peRR=z zTi8uW1={UostDuK#&(ogb1ZkiYH+fGcDd||V1+u+vdwp0GXBlEEz+QR+|l%7T$cmv zTnl5vI!t8$bq8J{{{qzboYEs6o*`f~XQpyep_3l}C++=1FS`Wi$FfK*AUU0YXG6mU z^-;yZ&eDDK8oTdjnXrp9(Q7vX@=~`0<_<0;iD`n^+?ETGI)a8{9wXpcWN=QW#e#{x z3D9f>pEQNX7#tww5Lonw(g9nE?_yX`)|6q@V_8g%nCBuruiuvM$kc#*hhGx2l+x%0 zJbAPD=N}9y`Z^9%zfP?2$(OAT>n2_|BhjO6jw z6YpNqe%22eE>foGxR8Ym-qPbCBAH=Nb@E956TybDW-C&kJ7Ae&-=xXC(ti4w&Bx*6mn@^O%B zJ^lU;aLA%4^+D%v*%B-GH7Bqx?0wA^LOA5N^!8J^(q{Ar;Y28`mHYxKkN@%y;)p;N z3T*3HSm=vHuqpaZdZIi#1JsX`^Q+B`ZScLX4;50+d9mC@4gB*BhjUf_Gx!FuGiQH5 znB+WeTzzh4z7(4|8EMFqiHV15Bdc+vr&mD8T>reuVfyO<>AER^*NOkz>xdizj|=AH zHqG_H{8W$`6ZXL0i|wZ^CiyO-SKL6xbIhc-jOV}3QZzdbqv|oA)cc;u@!|qVALKwT z@Splyg|$2GCtKEArN0Bd!C1p{ao@95Ix}J11fz;%+uHM_y(I?7{2W4m3IafR^(K`1 zAW#AI4B*BWsk5|6!hb?|+wjm(SdKgQ@&Z9(Vkj(1)jYh1`ibstD<=+K@%kT3`##nW^KN@c>%`}EwYFxtA?CJcE$O2a z{v$HZKISm)#3vq}a{Jimz0rBv{^)hu;kQ6wI-uqCzYCShfemjQzEZbnwmU|X8I05Y z#3gaHD`&Gz6v&!#WEG=;ouk;CKGK41_&qMzPfuER1JET)*WWt7Y@lh1>mwzu&E-TFUHY54 zk73V-B)*T#Uuzj}N~orPJU!^-e{&tNIb>(yUPeFjIN$U}Li**)M?TRX`(3Hh%aqf} z>VsOwQmxH%t+*Oi0tJNnrH%sL+l}M!&I{cY=d)na!fR`Nq2d=BqA2WNtR~e~uRP|k zy)L+)OBZfoh8B~yuzWMvPq9Izp3z--zH*hV1fY$`YdU5{c+AW-3>qQ7r(K1E`4=rE zOuUA_&Q7LaT;T;5tD!X0>*O_Ft0c_<+s#6#*X6>`HyaXk=BoxB=f#cRC^^QJG-iNg zy4Tf%uzzQ_X%tOxTYcecRMHN;p%Qv$(x!thwCf&0)2B(&!pq^&xu&67F6-r1;BXY& z>5{X{RY6)%M0zxlQYOW(QN%Ni(H1=K!oVV9p*Lht@((EP*L#pW=-A=)xGs(R$IVeg z{t(W$YL!o>i%quA7T(}=DKa}66}v%m`=5yTkq%9#u6Id&1d_r(J-$Cg>uR1RBAM+s zTamwin}gxLccnns#MQR-HUUID~Ps+f) zbbTCxW*7TVb+X}q{r>#9_GU-d9>+BE)Z5l7Y+I}h3(m*?m+yN7M1ZrUFER@eEDjEzPR4@`3_t+ewJ|LF4sem=#q79*oxcf z1@rS(mSN4u?|i67VriSuto{)1jl$=eM!3$W$HUG)S&L+Ucxudr<(sWCX;M%%gsx`1 zH(?K0I*S{Uw!i-v(^cF)PDVXd%cIK`F% zRSdio@vB1o;qtx4fHe|N_A8#nbq);KcVqug*27HagmNr68@_uoe604qs2`|rp`0jS z&s<&h`E!5cp>uyOtY4|5K`*>zB5N=Rz-1}h_9hx>e_6i%0XD`Klr9^JN^YMxI zsQk8d^Lq&NCX#S0jl^san9$mLq_cKGe<8RYK5olTSTRI5wS?9zFBMG82TYnBV&bVM); zsYA)S`KFnsl*4vhqO&+26jvEpS5_SqrR#h}B}C@F?MS;w2^8P$+!ntxHuWjzKf!mu zogkD|kU^#ULZl;i1ipheEj*q^I`_E^2WEJ@QAHxD02_1={d)$Jz3IIJ zi-pk{+)t20PqGOK%9PifR-^%LRFMddb*bLY&*)*$cDIK|b7t|hAB$yeELb}^6U1^5 zpbX6Yb6KF`&+YtV24%FmVX%@@x=WUZ{+8K7u!>!cy58>*S2M6Vv*%{{2N_sr)=17| zF6``)>{k85)b&{_!#r7`Dki^PPUi!LQ`xju?AVc4`5d98ey93(xbiGl-iJ8xaQWn0~Y*k}z zUQzyzA1sz2f*`0!DUYtdXskM{;^WknE)XP=a$h9rD7JOEh*O?9X`4yBF^GRy$a;?2 z;A9`vXBYYQ zfUj!@6KOHcLzhs5|db)&U&PuL3czy6_k4%kc;noS7N@nhzoC7V9B2< zc-(KiA4%u`YM&o=7_JS|_rw@zA@Q=C4kT9A1OtUMNy{$zjETJK}Hc zu?3PfQnPM>*Jce@X=b@su`ab_RS$;&#PM=z3H&<@2c2;iP%sa?YHfqLkW3XTHYK6)^@$1tlkr` znX$C%Tf#_n5&7h}#+6=c%j+22ao$JvN8~)Z-;nPh=EUQvw1jcSa}cHVDn)oWfuHmd zV5U%qS&Kn$Zq4P0ES@pyApCCb42ILbW+8sAZ$E?YainzzE{qr9$-?N?iK?98tn3HD z(T?|4ebo)~GYTwN8ab`}jZeJbLR7glix=JrGL=i!UbAnE8x`z-rJ#0!LKZSkJZIyw z`YzVOkYA&zS|+XJ=`PZdv<0@hvySy9xFR3}ex{t-5l_$xP@nV3&y z5a%hQhpz?}3+03yuU!NqizI@f5r`sL-{F10yF}+Xiyz4;+~0bt-TStTns%OZ zo9cSh|L~itbA3#l*9s)G)8r)RY73mVm`M0=U*d*jlBB+T|A@^@(_$v3*OhwRrPYDM z%2q#1izoO4?V~=;j0CHsPKj!Uomi=?d4Et0*BHkJ2DCA!`6>GCbct2-e`$Je2=Qc$ex#i$+mBpQt2w5#NsPieo=?fHtp~q~*ow zy{`YT+|w>60%m>Y@G(Jhn0R{zx8qm&2ZP%JRoJC5hSS(Btq#m1{bRpKNY;Hn`0HW> zKAgH6iTnD(;ZW$!?^~9n%4A{dwnr&8MPUVXfwkmiO8%<-uM>+P4TOvCx89G9`P~c0 zzSFY>s>e*>MPfNyLkp}Z^8#8L^AL6cy-msMF+cX*J|s5wVJh8>4TF)M=GDiTO7@3r zBo|`ajq@pb!90A_Dc4U;8Ze+e^&H!T5|8e7yq$EvWXJ>?mwek#EsgQuDTlHJ`7}k` zM2#lAJY%0ODv2q^Z(r8_{A@V*5ym~!YyiqTWzr$&$59^`6S9y36ARn*7J4g_rJ?%I z^AwqRu|ZC#$$N zNC+0c6(@TeU zo|W1jXDCqWP3r7PqHbzJ7C4ELdZx=*l|E?pokj5Bh|zy3JRC&d-=miMIKI>hl?xJo zgbe4tBY-CGbx*dxvM^tetsBzHI?$=egQ;zp$M}e^L-XK(Ub{2FZqcburRKTA`De8UD%}3GPRURKjVLMWV*3DzfgiWt85DQ!Pm5UX&1Nq^gBM?jh zB}YR8+01@!QuI@+lzcy3L{)N7HzBh&!OUq)RfS49zP-4ywfl}t=oZl%6wIvG;s7P$ zt&b`4X?VUPIQbKL6w*^)xyAWvsv**~X2<|qX;7bsTS&3j(wbHWfI?i8IZ`Dk9`x0C*u_9z-9r+|DXnQEJes*7AeSf-=qx>YY6am=vU zRo62bVnGo6TA-KFU&~AI_e@xZq2r^;Nwv#ot&_gHJzvREf4;S*xH@G=?!2 zLd#T=FJf*^KAq|$QNJDGn89!E^xCI?`PKeK+nmriqOzK4s*uwL{6i!zbcE9HVgLLpO>?D|$-` zJ0==oOB4b>IFF;ePKCdCxA<;|L*BhkJn>V1#0i59M3d8~eyx?bkAwq7r8R{r9rLB( zI;w#2LO62+tpq9!NpxlD0?oB?X0M~WEfy$qKrJ2ii@%RpKeZ+JeUgt-cXYm$GEJ{M ztcolRJqa~)oLb{Np6l^-wpXEN8pCJr$%!PJ02ji{jHP%cVh!L#5j%iBreZhOQhq(jJw#b;%g}j;Bp|RuD;LrHyp%jO)4{KLTAO2 zQBBfehj}oY0?2HqN&N39yb)phfKx}Ko5R(gUQ~1#J`Jf(=6WAL>}wV^NayU#yGO=Y zwdsEMaT7%+$N2eSX}J~2W79@O)w3|w>9K!1-f_LSkb)kuw;=gSlCu@vgaDD&N;m}( z{v$wKzK_}hnrkS>_@-QD8QU4Sx^$JIZ5)r)$dXnfVZ^E@$8U&LB2$_sD6@K`ke^?E zBUBk?`l1zEe0yJjR^_5;eX?#p+I8x84qKz(W8a31zT%<@ynfOc*D!;_Z`<{im#_Q^ zHcF*NakXPK9Z=d7m14?@J8hZEN+Ua1M}D{pYsbJRuQg8B5rlF$);Rty#w9Qa$Gm?Z ztOx2bAr&krK<$J+&Nog$3*LIB4FvdWB!=X@duP-0cnU)y{w35lax#Q6fi~) z6=*9iNltFKZ0(sCOz(~|^G|TmVo%a`R`^c%QSU7ETGH&V@$_m$+(grk76`o821A}$ zaTrz}3igS@iQAwg{f4Yr(_x>(i#R0=i6_^P8b(X*?czvRVxZ+?L)Y=eel-Ue^tT?kzX#A=Eo2pzAGZ#rIh=*x>iR{SmwI@^tmh$|gP_oN8-4_=Ep`+|!VouX3 z{Rs*z3)QNaZszQ0QVQ%p^of5S37uuuJ7hR$#|KFg_%w|WR^LX1fRIISK7B9!T%@eY zwx#7%Ip!cH5K3cAWfCi8w(x$fz4r3hOEyFEZfoLkQhKMvd(ryPa7JcxAH_u z@Q1gsig`!T@jT?l`$#X&5|Tr3_%vmWYPJ>qnRs~ObknHaytI%$Y%F7vPBSvsE^Nn1 z{XX7fl$7CT&PJj5lw>>za*3x3TDj~nb5{|@>P7xZ4tibQTY%DpxG+(0v&jK4W`dDB zG8cLZAf`8X+QuW?umvvC{;Rl96HmrcctP`PbEVCKB$L5S%W>Fs6!KR{jR|GX!<$D` z?W`G(mp?ulyht*LA0wjKcU{+$i}+DQ6>;j^)FKgkhhUX&?yqKq`$=UHoUu}6u`nG) zBo0TIYebLu>({H0Vkz3Y1Ix{5K#2%CO0>`7C5?Yj#Zg0!aORiOKggF`eSFdUEk1UF zQ`O+^XalWPg}be$ZZy9e!Ed%s;xoO2=Ps9IM=}UK$pH=Zt8_%FUTVP|m0I!Zl=Ima zaKJN$Z_p~Fy1DEjAD&IfnVTu2sQr4cXrXtzH0oHwE*_o3O|3ivu)+eS&o zCc0wvYA(}m%8zUuF$fy5FMqA}Cti_0@J-4Gt3fj{`b(Y$itKdr4N+`=Ag&w|E zGZ*=gd(22~ye5G2iy9YC;X#qfwdNp4KEw)9Mf8%ox@M^`H=%rm)#ruIPusM9Wh!xU ztqVstKhn|xnDX2mRCH;jW-z&hny_tM%fWzQ_S(gXgoHFR5)LtS@kQ!)=^Fq1&vw5P zXLyh32(a?cAJNsqP~BeGZGJ(M{lcLYqeDpI2tf$K;73h;G%9(!AlgW^yM5 zx97FiWBqwcMx1=Q>s}0y-Ak_B?q38A-7MAqmK!*z{U(h)H-IRrEB!XgQ97g6g5Et) zOxGloK%^{}C07UovoaTsurUrxfocj&*1lhTxJHX;I5@Ros?XsRm4rw`V&b)sv}Lb++J-?eC=j|g&R4AToEsd(0Mlb0 z4gV@fmC&^Ji-+SllHv2B`2uGpK@77SDENYrM4~U8&D~Gr*f*wdki{(IL6O_=t5>3R zQ;H52JjzdGIFyyL-Ye|wP7SYcV%?BRZXaHP%9}R7P9L<#M}CXu z_G0q$dJqZLIFHp9@M}W(;$;vMV*$Ur5>un_@^z8h;I|nDdcAVF9M*KoSdFXVy-CYb zvDdCn2I1Y+8i$3Iu+pT-#-2XW#JfS@q(Zk(gT_0$N))ACq8M!i{FUfVQto|vpr4nj zK>mhZ57$dR+COyua?t!Vd@)lYqOiLgte#p`(3-aJ>(?z)^&Z%ohHHG4Nfdm7PJlbF zYJ>|0f>r)LO<_-mw(=ENS(d6Zt;h)R_o(7YLUW8CXt62x@l@9D*+}mlB-qY2?9P^9x$9a zdJ=lusS(HuwWl#R#OXRJ=%?cdN`*}hLg5kB$?Yzij3C*C;mn$5W3bYQ=*3O$ErT4t zV@3uE5ggQQaPkx^a?enDY07g>!{<9Q#+h!JsI#IWP5%X_pSR(!ldg$qR%PAI-DZ~# zjs>Z`nOtzfwANh2k1(|^b;T`}F2E=XiJu1Kj|r6{v23i`Le-8|m?;FxaomK5Z&O65 z?=fcK2I<4tzQhI2pa#>L7v?}3vHrkDD7DJ}29Tm1G*g4N!N^G(*I=Mfjj3QaQ~cVo z12_HvNaU?_MTnT8tMW|O@mpzqE6szzrX3a>MFllqRl)j^;fw()Ep~T0Z9lUFk;U7l zv1SoX*F5vIA#!Y$U{rO^gSY#&@M-r$s)h8}4aEcH(BG9=Z_{x0#IuD)nZj@mF_`_7 z&HnHMQRJ{3yw+R7Ak;2CZk^^)Et#Coeaw-F^qKNieGl?IxGq1t&Yz)w472d~2;8*$ zY8kU%!^1b>&|(tlfs%xpn_gVv!bhzY9lwB^7L4U{H7BA%tA;BW-VCU$i>1_sK^NS3 zCigV-qhjuCA=U-&!(u>DL@Sjlt+pAZ$GJWm*9x<>p(!_{dB|0^L;U&v-KEC8Rr4MD z6Kd|v1zzZn(N!ffWJu+|t}-+|&9$FP!+Z{Xq&^jYl9}b56=1pcGRCy;lDSjt0d`0} zB!`^kpErDEuewvicJRBpDCM(00!B}69x!@rhRf|QwY-q!vtKeE@lyMwf>w3`#iS{ET;mqWd;MD>-3>L2eCo#d z*`0LYm$?fhuNG#wIF2_C8cKQ*O6o*8Jt5dZ^#c9y^VO{N-6bp!rFL>@f36rzkh5!y zXjS6z45Gy3kz4Uro~Mnof9CCFGI3a?lbV_;p4Wbco$RGz-sP_AHaSx^8gQ0yT9x1a z+9+_&rBKdkN`59c%-84*XA6xiKc6gdT4>su0mCX*9c?w&FZ1q|Tf($ZlMN+Gct&;L z^v8Q#_zR|FGCc(wJ{t`VmkZ~Qqg!rKdp23yT2r*8amAW4r}z)Bc;sBhDl8fr$M!Nd zZ?EibU{lEo2nAc(`obE7AihmE4}ues$Ecwe^=^*nLXf_DlE~Ry_sff4ih@^q8!2gw zdA)wL+E;rtyOCJz{cCm&ro5Z8ox7|)_OFM&csR$aMun8RzmJgIXEGWkwRsf?Uph(B zRXkbrtFGr&9Pz>c7k2^5iQqTuv$N0vxj7RHl_3%mBGXz>nfTA?G};>-g=K@523l5~ zyYSHvmZanM_7{%S%b4wF8Ov* z9TGS`DF&J%q8!81SC)kXU}5XYB_M>mYFd{)ILHTLqlG;;1o>k^HEzmR10yeYpQ{E#<4`cpK3CWvJ}u7qf1Jigoc z=uE8BvQxw)xLhnJX7)?91d0BWLudKOcbU=!F1B8MRO*`E8X_qG00>}YKj_y`+Evwf zZfM%jo*l7qvfNafsw*xD25rwAG4TDH3(Yh)FzDlND+n-m&@O?*>HM70;+?Pl3ro-8 zHjW+yK}ik~n-U}bunQk!M%_lc&Q6%i2SBwK;^%1x#*yV(^MLrR*lMfn1>=W?^_S#w zU&Hz5d9biw}u>JN8Fqlr-`O?OHH{}uUSm^&#Gn9&J)HGx9@0E^PHE7 zbJ&Xrn`{ZTN@JE)TLB?r3pbUPAoZz{ZF!KI_+5=O2i0NUub{G1arxSQcvmTABn+pO zRbFurY;#6f^5FCcWF{6DG}$)-q)uJ04G+ihyhN)w17VfDO*YdlMD21v|`|3ek)Y z52$LwUqY)nY5@0FMaRbh$6zRiUY533iBZ2%X#!u8Ih<=4GQv6z-g;G988-M50f@|^ z{K0$oV^(cqKN>+jZ{5=RFKp7@!NdhEZpWa}R#8@5-D|+%j;0y8!qd6rWciP>wu^H| zyx?8%W0O?Wu_P=p%gG_%ak2cotXTf3UOhC3r&@R^4FlOTb+z~j+bLj+Okbt=({{x{-S zNj?V!_9Q#SQmIg!%v{kZ`p+3AcI+gmE|+SGC-Og!X-2Mbhp|y~z)Uz}mPnr?*Fb9= z_Lig$jA$SK8k!iWcHPV99;bu!Ofi4M%b(jMF_?&kQ7(_XPv&&r8~U-}$(AfGlTGOX zT=ce*3SF)>tiQk-K(qyZQkU93R^(a8rD0ulcuZutgHuw4S#2k;M%oEX3aX2BM`fks zGOBOCQQ_QkG;xLxmtYXo3{MeHUZgfuh;)Rte@QgW$SU&*9KW-A>rpoL4s8XcJk(H3 zbJli0Ecdedf_?nc(Q&1VHM{b zve{0#+2J-h-|>bN@C~w4y)n~JXjKKWjd>3TLYXgkjf&Rr8TlO=jJDW%VVU_c%yyIH z^Oo*1Wr615@84d;AoxBoGu_No9g*cyk*0)CGLQc)Y!K!nNU&)amy+k8(mvS>Y(M2F zni89eH*KMB-KubdTJs?dAOnAq&eR3}fgc8h1e`~!j9_J$^))WhHF)m?5HrvZo-At1 z47`|Bt5+3FE5Q?fnTMSY8klO?aHA_I>N}jA$FDVC781Laoq4W?tw!GafA3l}$0YFS z*L?S_!fQ#C4Gze_v@D0(^g#*4zlOk0Sf38~Sm-#8L*h&&f34I#Cg$|?JG#|SkMfEH zx%&;uPw+l^Nq!6^P{^9JpX~(6gzDE1>hX`hhMHY?yae1_J#N-F;~K{dVM_3kZwV$Q`-Pe zX*(pL1--G{%4{KJG0r8eX8P-P0ofzvF5IpXEdFdfoumRu=#9xCWxAfrnKeK5X>cGo zMcp8J1U>r5wry0IOlbaf2Di{3q`tTRB7-3)v{&;#MHT9;uG~0Jb?INOkh8=6K|R+6 ztM(yiuSUfrNY6TpI^pTPDE62%MnrYtsNbrL-fuC}D)BEx*j^nzDE6B5nd%wrypLaxd>Il%>T8XUb%rBX075v~FH9x#O$x_od0%1IZ0fb(;Ys_w!5)X`km8FP4*etO&Qa_E-%fTFtfY?c(C_j<3+FFON#vG8w0yfS`le)YZ z1$y|LF0pJ2wt_c+RHwD~1-64)TJ3=sH(@1D2EI+7V93BFLu zhC-Ju>3co6u8u;jvz1t`2kC~!O*G$)b^_r(^yo9JqG}^7eZE?aTBq(?IEOZZcn8#T zYGS}<)wNM{KTaV{*!7_7$o^Jw07~5fWb{)C(?c#Jq^@Hm$b#6dNMxuS1rqbsc`e}{ zxL*46Pf7lHJm8pcoISnIz9$GLk{K6dK#Eb7QFBjWIau%OqD6>yiO5hiR-7)&g9N2; zr!aTAnNFb%ZF@3zcE4y+IgB(ahhrT!_)e{!hPt_)X1<^w5fVv_87?Jyuc2NHUB*?j z#2CT)PUVa(pFA4RMG7rQz1H81oNcO0!0rR@YLcw}-Ki?KrwQLeIE{}Ob*fhg`LSvc zs`Tzu!)pTv9e`Nvc}-#G)rW@4Iwje<)fbJXU-`X4@Vh&ud)a1yrR4dO0}ks1NW6J|Hh29?H-U_y21fsTRn=j0 zIerHAeOn{N@1w8vGxW4BAUP3@pGSzR-|(kbs4ykg0r1!teT z`=GOnyH$U{Xyu||GqH!r5n8^giO69lA;~j48A#?$?5OX42N-grug`Ya#6VEVxeCbY zfPwO2-(`_hMi;PeHyul%R&1HRag_l>O+)=+45Sf`H|3LKsO;wuWIr0PJ#t00x$G4Y zNw_d<_gt_Z?}Elq=PH`+)+Ku|n8fWw6H|SrC+do2T?EL<=)%SE6wD1;V09B11{6|M ztZ?uD1ZBD31RKqWgoMuOB1;(ki`XZ((QzAbzjEoP{Uwc!~RWzIu zr`c2|2F-zHqn8yNipP7YQu?v_ZUL0BMx*ghMxzv^9}oCmv!z4cXUErNr&eYb^cCpi z@>7_??dvWF7~YCn)4oiI4W-WDsyLvOV1i`8%$;W)9o(Rk!91<#nwV6g1!m?!ZYEpxyX`U1Bw+AQHo*8u9)k%__jCncS znfI>Z%6{FZFyR(XOXe6q2;~m}-l-neUqeqfe=r?;UmyYQd%>*;5gKiP6RRpqRFdN# z2QzmU?5CLrxVSTcE2R~5V@4Z(+-{oo-o^#4&HRc}iSYfoY9L2w^NQ;|qYixU+G6>X zWEvgk;=5@5g|fckd_k=7VtgwoEdf2Qt`UmczglYPQyL89x2Ci4t;;~U9q-MEIE6-e z!fbKB=F175_VQe~Ce1Btx(4~pMtm{RoB|&M62i{EhMBMZuVJ=0aVd%S5KWZVCbA5` z5X#_Hr^?~Q%)&h~Ea#1DDgsQv)F0{7?W9834mzXi6>okw_*Vq@*)H$WL*nAy zk*HDWcek{Lw5ji(CqMBOTPB!FoC7<2^znCM1sbfoIxbRf!%1Z;(FJV=o7X)nke?Y) z=Q)IHO*l#9{kqS~3@{zpWV+-vQM_$x5IehEnqdrg?HzyK`P9Rw)Xsx12STiJ;>o#T zwcn68$tv`41D*i1@{`HR*Bp5cV?M{^#X-fPq`etY|9riCVe7Qu_FLo(IBnet zGv1xR@VdpBLRDXtrmnFn)tZxyQncMcb`Pq7SBbAf>6>f3)KXVS1p8u*ff_$1Hk)gm zrmJG+UUP^B(^s0JcwY9_rjmVG7p+99!w+m+qD&_#MV5xn@CP0}BFtAxxC2ltLJXJm zdb$h|AauDLa{XUp`&a&p_LS^ws2l2)LGJ(m|k+Nb*4-{%} z@e5d$nE7K;E%&v4WJPQ6Wjorl%M$?#!P;VS;uh|1Ey~9v&skB{q7ULTp7?)r9?Oph zU%rVD{I;>R4>QShy6mMr6?=!nT0RN}J2h;CcIz1(>&vS3pNgpGy|zh;ibHygi#v-pIYu~m0-#~b;A-UsbO4x#TS`-LtEOvH4G0FGGn4G~F_?zS4I=w|5-_j-i=w57W9%pw9h^ts0Luhp7>f^uU|}=R7ZZ5o|2%FnhiVKH_dps=)7ONWVf4~ zl4rMb!)AGjjjxE1Og8;zDk)N83JIF9?n8sZhl@UW`xL+~*XsT1Dw%!bGci!fbTxgRdBwG`(EQV8nv==qagnRM2$HhQ ziYJ9{;K8kDmHA~Ed9H;OQ4@fxpxIbS81CnZ!TN`! z7E#Et!utc~f)2w;V!-BR3x-w(&`t$ezm*fjt_nU&- z>(f-nA=S=6%5|NOQm^4oLk;*;J9p5ayu(O%gt_Sa*dwGf^Co+Y1czJ0TLua@DGV^{WbmM&Hu_#VPxi5@1|ZRi~I;Fe-}x zPGKug>JxVlH{ra))#q3$a!{r)0Ak+|SDlu-66hsNxZ90&Bgl6B?<<=Uj!xWC6C zthiSlf!(-?F$u@@U}@u0e8JZ4<-C1u{L{ba>tEIQzg!X6A7gYH^%vU$@MP0m7wnYf z`3}=R9CDvVo44B?j+HfW9yT6S8q?2auvlFW+2dIP5P(5H2|KUMQP%(MH~;PaF9sjh zHzXP(7&h;fN}`Cpwf?xzDGt#6o^+fQ-wK~Er2p+}oFtwP|4)8~g#|801v~gN9)kwe z-Tj;tjNls$3iz7n1?Ut_|iz z&FUg<#;p7^Ly7;w=X^jm@z65xWP)K&FF@TPz68-bl_rd%H5dF^BL|`d5 zzQ-$XVcTFG2iSJ)eqRPV{KHrNhnufOUPR5u7OUyje~|8tYoKUc_L%K9j0(M#nbj`6 z$h~c~@;V`4r5Cv|_n>N&hRpZYH@ zC>$5g5S`CqIu$LcV%c^H2}V?Q!8)MuK|$yZ={Hfod2|^tJyYxN5{t$xq31SzT2BPr z1(i*75zl9Qr!{{_ZJs(P+503m(%h@x zS4>NCsf2_ifl9}7yBJDEVJ+K#F#CHMT?8mhU+YaaXGolvst$ELxvV<30sBUW5CnMX zL7=XKsq@>#L1_a+$KLOi!!_c-jINl?s5IN95W}~^ZgUoFbaZ-JdATXqkJ6C@8x7mA zsFbHU%1E!H6udhIjc-zZ@A1+bRpukpScSMe*Y4=VVJt=Co^OSRNc81eeUJC9 z@gWwf4GjI-q8}&%AD4Nafh)@Z(#%$nf7fGh!4~|U4t%I;CwpF7s~XkmumbJYHbD-`0SuH+s6+vT~(?i z2aOG~N_P&eSPWJ;>r?&+AXr!LQxPsLjmQm7WH~7#0GqBzE`R7BiUCLKUyJo-^~G(ZSKZ!u*5R8?uJU!yECd4gq)@z zB^4_kTV-ybnvGk%M+i#ngw@2m+$NX04{NwA+O_CJ0(OmCF@qKSg@!kLKGWd+oyUw5 zrF!jOC_@P!3`_$1Y=>`$kJ}H@gKlUTH!^4r(ec-YCh$recYjFhwcZ2*p}ckPqu7Lv z0QyV`^W0h#;(MTb{28rmlUWcBDdRaP@60Fmv{x_ZuUq^Paa`us4$s#)(({?30hEZh z#G~GFef&u7OXPf*yrti4OUt#2cS`vS5)q~{46uqn9Juf}wJ&~{`Mg)rnrFZzpetZZOWY-E~xg*OCi{R5s>XMw15(l4jFVo4NI$Cg?RESCI;_L74m-lu{9LKqA8?HhwOH^PYEMgs ziX5qR>({6C+=TnuVtW<&P>izekZJ$gM%yKp@U9&=K;d!C$8AkuDF?e zA_K#kA10G1gqkhd&nVOi_CAKBn*1!H8cy~VIY~Q=!@_6|O$jbhNHoy4Oq-u*C{_!M zK6n+fh4nREl&CxhTs_qL_2ct+6dWIVd;H5oMS;HuJl z=zkVffJ7~G1qt}KNKV@)vtDW0J_1*tzRJb{w-Bi&Z8R+WR@~iV?)T)5TC_%%S2a=0!>{n za^U>e{MX*2pQ8%aum@SRKJC+5IjFv}X{_eFXIi>Hi5WawDCX3H%@@-I<7pwwTm?@S z37yYYGsT(iMB}XI;{NoEh5zED7W(X)&q`>9qJBTA7i*sM1!^MD)D84f!B}{!a|LO6 zO?bq?$TWKQ+kDYt1#T?GuWmrc+t5-WGt550D(d&uj@HYKrUVezN(_tD+L{a{pLwf! z(pto*&Hb(moD*gt*sam8Hy=7!os}N4q3<_Kjl=`Fnj;BhznK&DVvFFbr32M?NKZXl zZ=Ra2Yq$v(EY9QHgv**(4`meA7x5_UVt_3|uG7<7^%`nkB%0WIx|$*oH-(AVq8)EO zrPmOduXmm|PCRT6iH~6PR$Wj1XDc^t81IM>#pP4jMPBGuG`V^~W{v(-rSo5< zJO)lans58;FE7*F@GbO}*a0wVcC*Nk7?*F)lW?VzJ2DR$P;yGa9OXeElWVU})T?Vl zKWuiVQGOom93Qav2&X?KZqz~Erp#3v9QB1PZb&Q3ZItjWewMKD(;+^ex26m2kDgWQ zdN{19KB6YvQ_07GY#Lt0{qPdm z&}Vo*E7Z-W9NWqel_MplB4&TS)KQ*SmYs3fpt-z z>sFe6>Zg-WuxhbHj;25>3(bpehLdu<4sRyT*0IfiYHZf9K1WF`UkHAisSuiWO1Yq_ zoc}{tue4=bM1i6V(-jJlNftmy)1a?YOtnm<8Tr+FsQHHQo95p2v!4dlK1|fM@KHU-qez zYz>A$N5>Yn9S(D9#%@=kqx^~Pd!E1G*p{u(ucQrbc%OL0YFY zXd0g+a4!J6maK+w`_RWL)w+Ctry=%Q$Z4`=PlQw+aH;PnYu3~AG^FKMiflnW*rYDb zl|;x!fzsjB1gxlBKK3($d|!#*-W(6>_4FmA$ciCPS5s~^m`ka{9DaRuMvDwWw2&b$ zS1$B3SL&GMW$0iFsiYjWM4Q?^$wowS4w@imh>3O$_a;EjqbL1y4VpmEA5g?#(yKHF zF!tNCRb$H^)(?1x%L_w*0UEq651}4(RJ&~ZUB^^R7%Co^wvvyJROgMcX_da*Xj^%O ze~F@T8-hi%sKgVS98EMyhl#~8!s;uchj^W>hT?f)bYZBhXVL1efJVbF#5sxy4zzGW z*v{FN6iRSJG_8ug;Mc;^$roga$jP;AzdGj`a0BUrMRatBQYMj}?(7VaCX#l$$~oB) zmm4f#E{>g1>Cl81KMIt?np1j&k93V8&8mQok#ghgAwCzFFW*R9zg%-AO3Kmoj;s3g z8ESpDV{+wbD1Wi6w(Scn7yY7LDMrRO)E!E+@bQj#?+LlxAd~5#eE}il5%j$`r%|Op z#yHiYI=5N44nx5Lm}|ltOCEYs$-_yf7^J9swSb3MQ@Xlq$cc65#TR+;z;FsP^ZK-FREPkct!Db@AKJcHz8F zcD5}TUL^{0Kzrv?_3;;MJ8^f0o4@J2Uusim9^AXyKsK*3#V%I4%fluwK&Q6yJUO3K zgJ$o?b$6)T({p>KEaiDOXOqBlSAs;#mg%l|5*{imZ|&7vBQh~`Ef8xcO0%CGBkC zS>m~NOMJ|AZz|#Z19y0^6k^OvS*~P$h$}>m2%V1;h-p9v{kB$Zb4pp!@_q7*n;t>Z zf;ie#Fxv~5fnT@mOIvcIXf<$V>*QIl2F328aqE>-Ui>@vai7G{A?G(uyUPAG=MI#N zhl^u1(D+348@je8M;%g~7AG-iJ{L4+E${QWj1-RQA661vGw1nUTNmFb0W@ivYC=Nx zq=Oe0-1mp0BATqJ<*aVry8qnOyM%-(T#5CO%=86YT&AyWPL8!YblUj)q1%@j4g0Ym z@#Y%1oXRw+B!`(7PaK(!4{I*OwY1Bz)xLZ+9ouGNbR4enS^W01T)WaC6|by-8{g{16Jrt0f)YRt#^`eo9n9;sDYQW*T+^RvwDof}k($U>mr*hKD(BmPRWqBv2nAD-f911hd6X|ka*C7j3cI$JI8G4jZz0?h)C&jW z+rMaZJ=;@u&Gv+qWaR&FG)}dXI1pD=F@*l~7HqPUVn4^qk2;z|DEZ)-#%}(@=x4U1 zwCTv(sC+AvhlznN5$ZyQu+OR=(ug6hN*0XfB}uzIY7l-mJIncNgua1^n?MhTOZ(dV zB_&3O>Zeo(VFlX|*>WwPP!ORgosRBpZ@X9G^26*QsS7E4g5`T?WQkN6c}2olmnt!< z2>)|Fy1l}>@o}>mH3Dsv1SUW~;*c?Hi?%EW7-`Mu2c|ITvYOZJFXkJKn@Id|E0Ewm z`rVf6fbA>Y$kVQbk;Yj{7vsqVCyhX{7In#PF6gD>=crdFxs1W%i4udWVNc+p3{Mwq zsO>J6CAG=H^ONcp!~R0(*%L#531XICJFZP=?19!v|2$q*$3r0)?$|c>^dKqdO@R~# zQyVKuEIL}dY`fz{vbiY1#hXhUQ%rp!YJ0{B^JGAnpRiH^MI{g7A#*9GXJLU7IHvJT zCiYG<1*TdKz#FQ;!z7p@6)zc=I5+odrF9V? zdk=412>G5wQA|qH%xTuKU$_@s`R+5swQq9XhJVo&OpgiT{*k?$lQSSVzDxQ3R%&-eQnkE#@+eDYx+QVm#lLbs~CDc8JQ=S|t3dnslPKZ`3y;k8DE2>Pu z&PlUc{vMtahZjwdMb93Z&8dj~{aGA-=Xh6wUKLHL&=#{`yJk>bLmX{vtvX(2oI65Y zl3z(uq!r_LG$$An&-Wb#s6@OBzRa|Nmk>T}!!@1Gi|nd30ONet=DN^Bea1#Ej{8H( zYh$-W4MB~`NnPajnBvvSzOrPs#$+|W2K+^BLBrQLQi28F{swl~)hDx(cTCRVNp&-c zo}&3B0J*6n#u{7b*^*p?afysBaUNcn!+&~!{YFWsZ^2^(bSA5Lg3(12K|QxaF>0J zr$a$3Gpzv_KVj-WZJA!b(F11>@GL15A$Y5ghGwi*-X-L| zz~9?HL1}bqt8!4c_~#x?VAx0QFx_h3qr(qc@}*!45q_AK9~qHOZv6aNoP`M@(|(7ui_j=764A83B1&n}r6)nQxDxhs92Y#Fj#V z?Lb=COz|i?pkTw5C}HH|M|Gc{jzM>V_Qq}#kyFg3qtgN1Zo0;? zhgGao;!3y*se8FU*7P|L(cO8*U5Q*`$~-mwjcVXD(z)Hnx9JsTB>~!})d& z{kh&^V@zfkkE*uw%kr@rfhHj0xBWUTsiHjeICfNEo1ENV0hV!3Ju@Q<IIRbddWWRk(@Mb5St&pPR%W+mZYAfd&J0e9b4se_j}z_g+VL4X+)e6b_f2q!o2)B zGt?at{vX;qD4Qb>3hRv4(^?Vy{n)1J)O;8?ZTD?lY{my;OV=bz^M{K`X0Xxo)ZlBB zdKo>~2#vOq_|K;+-1UbdX z)`Z(KFqEYD5t$v-a}863->C?R)_y2>d9jXP5XT)_x*I@Uc*uSE@cHVadQjIBZ}Ej6 z4UC^nVPG#@eC?OL5~f7K2WC4B6Yf7Mhc|$V1$BjEnAt-I)|bgHA?tasu2oIvzDK9k zKyk2Lk|AM&o8}#D3rUGq*fV{6H@j*;lIeH2zHu@d`YKg-DkScyol*YEt|U(XsO;4! zE$+Ch(`?P6F|Vs-1oED{i&TifF8>-kq%6%Srr0Y>Kwjr4=8*~u(JbaFfCHfFba3lr z%L$tgEI5>-Lc5|7*A0yhO$vcWYr;T3OuFbYQ)=8LP5XE6P5VUz_xh69pAhpHDYKtB zBw#O4^@MRGx2Fk5P-n|jc8wM1nAkg}aqSs9#vvMqjemG)a7LShys=nUQ4V(qzlt#i zK|%-K6~r+=i6^6!7r?zHICB73>Z^MO{{?<>E1wxp-MJ6ll!XcdxD|DmSrC_PM90Na zsNC>1kO?&vGR0kwAd$q!-wa61J@tt?Zd!FqtDXc)O{+I6Cr)o{k}1F zLtB$hRdPc}2#r&7WRV*j=q>#asl(dp6dmmnl)ssOQE;GS;rT=@X9}BGs0G_WvP%i6 zffaZ33RwM|ZhYp(*9vHZqr4S${L&<9M21jJGp@Z!4p|&bE%?il6{=c>5=vpFU7q`K ziOPmrV|=&rU0qMH+G4pcku&4JQ@J{G|1buwXVcetE**I>*mB9fAK2d>l|9nj06Cu4 z7(ZN?7^i7B#+Um}AMw*^!1`ST>}2;cH8kk51?2CN)~}fI8PBrBdL0#`Q+%wEv~ zd^CRoms~49!ImmX{Zw%`lMvn(Tgf0A*1$QdAN!!ouiZhuruwA8QxV=fyBJ5Dd3Kt+ zAd>ZX|NUruE@?+ncDrl^v>BG2r|(0c&oE=b^IZYSZVNnh+0H0`?x{kk|G*_!r2A0Z ziOQ^O;whvG$&78@%}O67HL$x$ycn0fld@|(xeP9<9+s)TAosQ-dbHQvJF#aykBfUo zwOotA7yXuZ#GO!q121&oRhl%l`3L+nJDTfaC&u1+&%q>4O*FN7lXZyeen`KTAyPTc z_x%J7Kc@n&@7awqS)*tzsLcyOZytb-Fd7Z;{^1yr?#_`OFkJS4VlnGF7v% zCTbJsWuc8=()evUkXbv`+e9LE3d31-;r5db>{)<3K8^%9utv4z;CcDld7YNLPWCfo ze;)3%a8%ZlJZxRdzSloLuWG?mSmdPzKH$;w*d+@c2$(;`;8qQ9=86nW9Kb?y_Ged# ze9q(}Ni{-QO@ZOo9Bo1Lo>3*4&uObb+cP(M`kh)Mmg;B`ZCZAYDqN`;eAW?4W4NN2 znZ>)45B0bx1P8^4Wk|azHE|fibV_}raM5OzL^kL69oyCkv67t~x428dKobIxCTjeK znD-sEwf-ZtsLoUBL6 ze<-2kKGeiuMY8M23)rH+h)=>2)vfU%l6@z%=j^=d`k3Phf}{%u@1vJW*35?s9ia! zCsr59w+4R>O1_vPQ1qK70?h_X4|Td-H+HSAA)N+`mDc@2pH14&9>d+|OY0skxnPw9 z!7s&@<`4=stj^IwxqZ)AkHW|Znu=xBH$DOCKnk|F-8xMm|s z>Dq1(?u|efoZ6+dEt63z?&1M}qpdC!8kH?Z!Z=m4_wyOT>ksHY9|-~uAr2F!q*HZm zKNDUmk@ncv=|75!oyT$C*Fpwjl}hXJ{M!(@lBrT}>(I1ev2|x-LPS2w1cJ2{7Q~j2 z3YC$k#~f2NmCs_uRH;>R=vs7WWc0v56dh?2QxbaG-*@8`Qd1azmB-Dn znxB*I_Qx_D6vSInvhBq1{uPV-V_JK-i|ZwAp@?IY)LQ2d>o9XyE5NikZNI6zn@Gh| zV4NOjRQfD$=_qRlBTNB{LYH<5Ly;F8X_~I-B!6l>S4<$>+x5Cy9>`I~ ziDT8yrN+D7zIy(OJ}9!7|G0GqtuHAHQz|5CF%BD7%Wer~s@MUX#U?!)A6nnnK-GPW z#d@5bwtT~>C!qEV<3^R__-cYyfN(93jKXt&PKwEO^}7$#-@hDK@@@q4JLtrjgA>8yHD(Rg$mdca^@pZEMYy=_Ij}ps60bx}wFEfu*94bY# zlDOog4g=+qSrxhdHR5Jnh=@fmKW;+m2SmB_W+D7mCxa0MzYpEU-I8_mt(>t6_LUGJ zW$kyvY=K2e{Q&D{AQvi7e;XJYI%U6j>t?sV(PY^ls_K}nrPURZE&Di$E~hzP);_r) z7*f`OhP@~3*nN6$tK&bRjYq{!qEzkx5BgmmS-A zfSF9QB{ZAB+uCAhZ|3EcQslchyhIj!+my&djH@^HN(T)a>CU)u{K-Z&Us+(Wd6%JY+fM=-U}=pfM-+V1Av1~3BIcbm2X{L03kqlNY@x$H*! za`ztPPwo%}v7kOJu%C4~Z^)uC)U7wNb`BYcwJ&d43y$;(qHs<~vS!k0nusAenM>}O zV0fGba27cKgs35Sfw1|pMX)c`><=KE^hVovRl}ONDyv~KgS7AnT7`6B-6?a|PThEz z=d5qq@vD;WKS2@?c~u@!@v9LZT4p|2F_CwL6$)+kd!upCzC`a!4lxDWEh6$(@$RK| z55YL{Dmi^5qfLXa6*q^*8*DsB+be3zJgoZa3PwQ~8mTUEyATi8xEC7b?hA&#kXz@n zK8nje#wN2u-r^AhOBLPn1{+b0iU#s=9ama`Ez#Fp+TRpL(DL6ZynDzy?@?_3F5{Yp z7kHIrC`%|-f5cz!ORiZUxobcwv6S}w*`Z?qm0iZN!002LYCKFOm-TPE^HN8oc$s%G zlY#DJ(Ln7+4+VxHO2-$p6*}?aj!3J$4#4|lo15v58^&8|k;w_#rVxp8YSxogTX{2$ zgMG#_*qbt^Tq_o6SP5MqitIu@yjS>qPzNS39*#2(hk0=6w{yeP4wL!=%`YC9^?V_O z-?&cSXz;ik+LBIF{|kTh9{_FAkJ0Dqc+8AG^9CZ z=PUG(2!784m5sE62Wb&2Zh_&-nNC$t^)KK4-w*$vcmq#F47U!hd=CUbp`$qD58IEPxnR+Z*&}AaPI=agX}&pk zo55JdZ&LmZe%};nnah0pXQkw6T6f|DiPKmX3V?ImF^J^!kL&2w_keBrUDTi4Y!ZXy z;qsk{cCB|=8h%4tHD~JifOepPBY-XRK1tlMILuaqu{f{v!8U}R3 z8j4YE793?u;v#we_&iZ>sEV(ub#&fuK-gIG7prva9)KfPk{^4RXAYVGTaZ>gr8gi4L@R$u64u9ek%ta&O+ zYo+$BosRBn-mRDjouj*_C3PM;x{feY!DC6N;H5_*Q3oCl8sBj04Z0h~0z4 zq3R~`Lf}ZQ10}bmrXPQcKhH^f)O7y0V92iB2pzY4iy&$46M*!<2VbOCu}J6N=}HFr zpBP$q0bph{BB&h6^2*b2Z+QXjUtN69OTj1+{0MRzs7^r~EsN6O;8&1rCqf z5_=t}fGuV2$xo2;i@*$3`Xc9wBL^|oa?Yr@YzVDAFTr9c6s5*YeyyHF4o=`Ub1qtdPeT&(pxSNC43nm_4P?4 zfm`W^B;mcu-*DbFGe*$)VweH^Fv{TWhsMd6?2rImWUGxb{(7gPrHsI*pgd}eNmt?5B?{=_ z@NtiR%gIabJFgQI_;FieTfH}I7*Eq`9=z_b-gIZsp)w%3a_w~wvIpkHP|^H~2s6N) z+D)#2OVqZ)l368f>xGUhL#=9V_X>B1ipmjO>fU|6k3Wr0$U;d{xvSe+X*#DDe!Anr53 zKC;MT8l5&e59(pGop%17A3+XZ^}Fq`cnEjOV83dS!t@`jp;Zw2!Y_C?+zvaQ@oQcm zS6s8AnZSL_bx?C+G1A>p7n6#P-x<#Xnt1jpv~XQfhyK7Tca|=a{cl}@ztO)KOyHRl zx~dC|JK3u0U*A++9)0n>>a|~eb2SX|Yu22GVF=OKH-)jZXu|CpeG81Mj(GfT_RbPZ z={7$Sl*i5J*RNZz+$gzD`W*Q&p*P-#M(o!lQUBb+Sh+XLCG__PloByu{RYw`b{7%b zqy>KKR26iDh~^1ol7#zj25wDOh*_#)9l6}2g-&Mh#wfEY&=SN3$fz4$=DFvKBp%Yh~Rs2$AHn6$E8?jx3j4 zwMMn4KZrLtNA(?hr&F`YS77snm2R`P!J3f=D?(+={rMr>44##UA|isLAHp)GYaW03 zOONTl_B7imYK!&I7(ml9^KA9mT0$YKk|eiQJF5&LXTI>-p|;k^BRn{9TfX`l_lp`| z50W-W47%a-gPr61k)9B^;C#Nm@2>ESBKL?Etr~v+)`4Dt5H(`kI5)`+;#KKa>1npS4QR`k^a^ z#N=pqR8s#|b$C&mdQSxUu&*;g#-78x>Dn!iA#^&Qaf<4Amq!kdH9k*+JPXQ~4-C#O zYzB<$^H{Q*&`GlKLs!jIjY{;(>a9Ed`^)DmFt=h3S5J1=8sEsm+#ZaSi7Kq^aoSr4{i;Mfs$Hm1E}g2>TeVwgrjBOPxAXaDhMgwD`i~;8-de=-JX@#fRxP!jo`n%@B*?^$rZB^Q~I^BCh9@Ag< zbWp~lzqY=B4-;KJ1?l%#F8^Q>?&Sy5A~26syiQTR&o6eBW7iM+A+!a^Sqg(=FenIq z1opO^kMcRh$BK%=--voi8V%0WhV}q;>{Jr{yKcD8`LAThR}Y$T2b;|q5q+Ev$64!* z=bdMxO82wn@+X@JUMMb_3Fl>!JW31Eu zRwP6*9+=+5gX=ZQul7?!Ac!UbM_4ngK-Tr;iMuaenjyyvWw{EFv>d( zMmTp69W_F!awkm)xy0iE=?)ce(uA_qLZ>MTw@d0*qQIQWbqudoXjG{#GAZSO`2LVs zn#sGO+}H+~%T|cO%TZd*^gSvJwhx7$s?zXgb`-7W)3BZXkYD(7V*0PYw^4qRIhVa* zWy*CrTGr$rX5CX`zdq5r+YV8=Rf@oh-x|x31pD0yb z2GI|?_bj(<=<))(76pxYMvImOgll-eZlc=x0nrD};ioS!D)J-b(%yKCz6}cOOYUI= zmatkSE0USNRD@#2pn6n0#%!S>-)DrHSWW#Jgv!jn)DvwbC$wR+|24khI$|hAjq6kz zz=wdVGHkhQb8WQV;WLWJ^_`kB$`fBLX<@mOj#u`|gP8BaGNvGP0echKR57yINwzQo z>-h^UzP$h9qx_l9eIEaxPzI(Iyyy>=1IzA93e-uQwZmjqK4n|4IN(ExZT`7K5)r@= zgJ44#7M+;OrkL8|W+AfHeq4J*_b_bmKty#AMDDejjzYHa8A)C+e@QD%4BB(cf5&)t zbNCp2u5wS|GDr2{Rsw86Jiuf&oYCi4kSg4M>$Dc`#w%8y>;$oK=QAR1tln^R|Rm#;YIARX*fZ<)gnJ3%wL9ucO$E@pIl!E28LGFEOM1OndT z8s>e6b7MQptVd)#d};^O5F>Q#q@WrB7HMye%CCez5#z*nUwv}I*T}WMn2}ll1|A4i zUmuezTSWEoJx?qM3gX$h13jd1>aSYK-~GB7d|gf%VBWiYIh1&g?=tuRNUOqt1hZgm zHh|soeNc^MU85=y_ZPYKIoSIXJiwE174*LB1k7Y8SLvtYLJV10M>&5kvNZHzo7gWS z|FxVfy`$A6DHxFMtqc4$Yr`?XTNe#LA|=@PasK|)vz_+Hvs86&O2by#$!pZ#WJcd7 z?SbFpP@siBxBs%AO>UM78{y{6;O5dJj5Q|R8_Ik%YlW$&eS%-1og&KXuRxj3(?jWVWby}ENb8?PDYtqSGUOC#(N?be7-gzA15qZfIanIxPJkhFqC^$P z0XXJ+1~#9=;DKb3D%<-j1?{JG=-yWdCe`iSi?FW>SA z$iu>DW0&AS5=TZF9`~|L%6cBp;Xd)-Y^~297cFs}(tYN=QD?ST^s(TSyXD$m5o?MW z?R0Bb86CX_FeaimyPRIaGIGNEeQx`x?%h)?JZZ_U5 zAhw>$Q4EUBAKIqeI{(_^6BVGi-)wL#q5Yl+UH&d-z6+kLEG&(mZPM{DuRFx5tm zt=7&!_>Db0ZSAfMyng=<*^H&i@wUvpEeygP4KSpz;?Rjf(jf*9{UC8uqK1PVR)+6{ zVXTVlc<5WSNTG0Sj?JH)vg>=2+R*aR0s6nMgaP45YT5?HV{;C_iZ%EA07zzqfP*M@ z`HisaL=BxKkk;b)ZE(#frt>r2?PEmN;_JCra+>=1omj7+@jeSU!fLT#<-HOWHy$LF zbSVS3UtQj{opomD`JLJBs~6d9rMkXkAMn@-9jtC*0%7H3)8QxEx=G=2L8&KfOQMY`B1q;hN$y$%3!fEk)#l(0z zkU~yx9(Ggn;B#RC4^8#z7{lu3)awdJ1e>+N{PC;hehA;s**}!Yb9CV}b>A{r? zQ$wq_KY|XvO_RATa+YJ>%&`pD`Q`$k-O|*5lVK83e9R|3bz%SJFfQPYmE(&K&1Eku zZ6hw)ecJzeDcccNyAWDCp&k@=)hXH*{OZ!9<+9v@65$>M zpMgt)uwwB5M8bu}z)Q2{PuMICIk?EmGwjb{S^|V*5>kc6NXOpFw070KVU(VzbMgFee!XPf@e!9X}$Fof`T;LL#0k_&7Mf#fQ zSONP|;S+R>;dhBoIHjVHQPD-rZ9n=T7DQtozUJb(dy z?S6z~?5FSFkX%W1^n&=|zQC~E?9$LXhFyo2NWhSX0!Cfbaxr1RPZ{w;>54Y@$BOFkvsJ)G17rchbu9k)aqWN z?c(!!_$@BFfNf)zp^7+3)KHR_zDl=aZ>q;Cq?SjR&22nyD%4tq+BFTsqV>ZWX~RXi zdU5ke`++}!$vOp+da}h)=;I=WLm3ubFP|clIA2d+IW{mzm5&`k}8b0TBW>*wyV}C{5;_@t|%s4DGH24`MW$3FLeN6xrNLV2*0o!cd`Eot0*3_+eoL%w5LgXvgfMMj0b6b-YMqkawLNgmM7^@ zF6S^|4G&Q}yYy4af`oy)&R{_?Q5=dU(~$xbq*Mv7UA zcp`yab(wZ0_!a(e-=o8k>hE>v$E!@{e&#Mg^w-V&->iU%0Kw*)SP>0d)%$z<*z4A_ zj3_xU;y-P^j!9IT#TFq>;4r1Pl5sPdFudxK($%Zrx0o^E_m6K6O8rry^~012g~~eP zU60P;cE8_YU9;Pfm(b+Vmcimo>_q#2ySu;oA}Hmz+Y>Y|3=-diA_k_xrS2=4U>?x^9T=^o7d?lA`{NKl|e%nL!qtY6`#$3#!jiL{cQ`us-yPVrJ&{4ny zXh97{GqU|1-r;foXdAH|LRV${XRC=>HW<~@k(6ws3XkneYqzw@gJl0{6VtqMI2xGB z0#_sd>g!x_-*SH425b^Z8gBo8dTzsAB;)G7&fbxTArEK*J^+k{XG#A5eyIuRVIxpS zG`|OY*_T>>I7=Kt?rFNz*G2P>#w925GcY9)L(l;R)e*~IuG|u#X)rpxd|_cYCqJm@ zcP##T`bx@}{oh6sVEI-4rM5KMdW?N18rbHucfeS8=+4J!)do#_y72b&?57T`I;d`S zT0s5YW{zZsT(k9Z=}I`fOER(@bg`S9^-u5O6>26h8Epy8W}y+J5}3avkHfwNf)Qm2 z;1K`wbEQ3!n2}USJz|(TN`re3H$|8^y3a0q9rw*eweQj_pADoq4IZ)J5dX7N2!6yp z>$Y@nl~m~BJ7dst8$%weW)?BGtq-g(MCi`I z;2Sox6e6~!6ylXoLm=PC7U1#;v<^q@TjKMM##Yx$eZBR4U}@1oLmc1b>ld-igc>{# z1glSvOT-MH%&-mGH64tt4t~D$4|gYn$aduW@dN6OH|z#)TuFpV4@X8ds_ppA}hQ7odkD@`u|DA#k~W`-t~7-|+qV z3S81aCt=t>Y!t{xj$|*-QhIOe^YD8H96oiqEuTF)Xu7z>!y)mCAbFEAl7^Mq&1P;s z$%(5sohrKm3mFAsg+gT<5b_2|ww$h7F)l0yWBNkzL)Pyw{O&3q#3UXBK7=kcuKCkh zFO2w5IdObnqW}bz_6RE34SnH>@P~&l28-}92w3e1@Oxc_vp1*T9|YkWJvx3TC7^`Q z3CE;YrTd^__=>gr*a)IV$9{Xl>}4lIoRG`y=h0iQ?|+Tc{^C-v^7a`V9-tNW?RyXD z&sN}LIUaq>pCvt&Z#6*vq+a?F#3dVUOFT>fkTPcV3CN-Ko3)?B2xx5L`59{-2<5c^ zB=AJjugdy*h0x_NJeWCUz+XnkJn^)8C~^P<+qIF+E9x`UucF+sh^|* zJJ&&_J4;{}T@Sq_kQSV)jM{l^b=}c3t+$y!#Q#dmB&aDN_o@Qbv$o$n7N;tJ*Y7ln z{OifYQEGK%-whnWFZ?FVtma{l7yhzl-*{1f(pBlOw?qf%M|4fX5|hdVE@K{5P({lL z9Qel(QR&20?!ANBQE*euRp;Sr7xQFrQq_jtn6|x+OjFt#DLe=>8j`CAuW}=N!31?Q zUy(jDa%h6MntVCwz{xujaBn#InqW#*kOXmk-Xk7QgTmlDQ*C@?aQ&ud6!A`aGYxT| z^?J%pEA|GZeD$rsbKP}B;1wn&?ff}bed|LNYHnCuLSUb=Tj~*~JOIn`u z`pLXJN4s&tLB2|MX~DCoOhdpZXLpiqXLi}6FWc3AJyBw2H_o|u%+l<^r_<8vb{IS8 z!V4Q`qvCm2oyJPuhY=LlD4wK_l3Kqkgx4V4ay{53p4sap%TpgtSb|?pQfp&(cGet8 z0t&N7x;?C|kG$ZuLqR!pRv+#^W_bWgs{-V^{u?w>s3834D1!3xeO%~ zQ~i$K9Axqu8dt^jsiV_lLKiz+M`)Sb6GakU6+&<8u5&(kzs6%4aj~sPF7s*On-`i* zXXiV^3n9JvHNQmMH;Q`;nK=^Oj5Hm%h3X$W%aIQ~mEBxds4R{%0%@_JlM8XUEiAn@ z{M!32B{Y9{djORT;bo8=*RA9aQ{nPnh;d&2aLgyT>9oF0_xCq8Ul8yWc@$DxMR?L+ z+s_jY8#fXWHZ3-aB~6gfowvTMgkR%d?R!X>eB61N^TmHS*f^~K-9~h;EH_tjFnUaZQkn;-v0xyHT@0s1T<&{rt2W#J{2?1&x!GAfyef!s8rOOI;&`#%A?MJ)7 z6`80@BcN!)S&8X!-P2YmYhFs=Dmt|II+v%Zvh;VO=vD%CzxQvLB&@C(Ff!=F4>nmk+4 z>?Rk8jY}>^Vut(bk958_m6|y{eY+IbWiwwzg+n{*Pah)ay)Q@8Mq)X5NgITFs?9?- zRj$Li=1LgCmV)wx-Lx`1L?qV_2&He*w+yDZ{gQ1PySKvmd8|IM;eDZGqS`P+ru^8E zj%T;OSlJ^tvdBb@xN?74q52V3xjV;Pvitq0s0}@1_3GVKaAcY2Z5AFpN?rx#5LWBJ?>pN@h zwZE(X`m}RL=8bz6PZ)@=Y)NV`0=4HINwO7_aY(g8OF+5VwQIq#EEV^fhpv?Ck= zM}PTBsjUH_VR%>L*Lu_MNY+9G2JVS+RCi;8Oe?z0*c>fkrKxf9Ob$^z77RtiwPguv z`^z~Teiy=%G{%wt&hg2le*}W=PqELba7slRuScV@+M;-^J+nKc?Yoy?mJ9HG{Z>ii z&XL_oH@|R_-7B^`Dx+)3JbEs+0`e_qYee|6WpwXJv7GnbN!UQFm$EJTs`qZ&(m8C_ z?`~FRj~@FFeb>jL1x)60y>0gpN%0lp=V3Z4aKzDK7Eqf~4@bXuTJxdT9!AOh;IKct zO2>+b#Ioo4`K4dfGzK9nm9Rt$ebz39^M}4f8J@JfFbNsrpuR6cUxv;zjvvKM2;WJe zur~~=_uTW}XK*0DNEuS+Hq$1bq)?F0(7yFH^_Q6}|Dd~a9Fo3J1fu3fK@JoQKDV+X z6TMyE{Z5%^H4MZAadtW{>WM1qzzF~6A)Ph4l8yVTzU(p?{=i?UN|Yrk+C%U30$eT4jqS{0f25a3s!C^?fJ{szqB-@Y4dZ-*};>b+rP3y5# z6cONc56T}28A^x@aJ~tOb5lJ1StKaaAtZwF2yuTSD`-CXIwwAr;eDQ%(#}Ws119Ap zzemU+TN#v^274`6Y2K=}cp_)8(vQ!2f%t2(;R_F}sah$lO7zQ6(lm1qJ?W=PgAd}1 z?c>{D)Yfye4gEbb(|+j+sm2-9wy`|Qdrr-PRPr~EApZ@2pC%jKdc$x%dFC@0`|>E&lC zv>9>3+sS%jKaV(jPVGXaLnUs`1o0)$X*qlxhGAEU7gCNyMLTh{&a%iSoId#3uNN6Z z4$LhV8dKKUdJZg%3D<(kl!(nGjkURLn5(FnkYUxIW}eG|(LNW9U|6f3%kSvan4`c#s(xs4%zZ5fK1jOgCZU-Pif681&x$V^i> zg&BGtr~;MzqQLf|VWo-+S(se*p5NEk7alEKu{N~R|NBuT>cds^LUPQOy)JHC>Sl7m zraLk=ohjyeafP(n!@Xz%FJxHyqhe5m*{dRx#k%riNX;#qG}3^We2bi@qkmEuNjEi| z)Oh^iZs#%x%XZ?xG4A`AqDULf#%cD{T%h5gB<~NOadnAW9oZgA%LV+melq`3N(=^Z z=IWjNq~}kg?4$C>ZF+z5#U!jPUzKYn7K7YyQCi zW>&1>ZT+3V8EQ@so{9FWiRXo2GC#ux(oswp#`KpQRc37K*;Rz)nPm~WkWTd%VOtU$SP$S)0L^ebfA4&G9PJuy7Di0e%oUn zTOK1tKf5*W(|$I9$?h9ZZnaBMqsvQhA3E_66Sqm&4hHLbd>dLwt_Z|rMxzk0?h0e_#jPjq|Kc9Gb2@=b2UAg4Z1>!vN))}H)n&YsRJPHlM7h%>+Ws1 z;7Wp`O)3Ln+?!3@MXU~WA=(Na%S)(O3yfO821}X?*8L7I{9nmeirmi$3MHR<9>fE_VRAQpM ztRI`Rcph{jndA<=dX(`wW*|5#kLttWu;Y?w9S^zK_`zMufUA5)&-cyKsB3l4k7Sy7 zROS;+#h}eg6V0YgSKBQv$B|fTBj6en^S-?xbnqNI;_@}{=F9Ig4f;r-qVm<)WFq7o z(%#cwVjtA(w~`Ftx+KoMp*?1Tjt10Sa=hxVd0+=7S#WyYUncd9CcA26OJS9})DN$& zKak0&W%5eCVZ!z5G7I8L-~?8nc*NTzl}{wM2!`zhumve8947AX$Z+s2+2nWGUGyjQ@jt%e!60f2)$rAjGSshJ%q1{b29W9}cxB ze2DJUl#W;J6sx>#N8B(6=DmgfPQoEgLspU-x3;rBd84Hr>|64^%kLds9(LNlxz=MJ zgsDn}@ z+o*nDtcR(Z*T-v{Dq=cv(-@3u3h9y*!!o#y0p}lNdItyQ-+nP&q7h?&6-VhYO_YOR zgNXzZlt$VtH2|j{S~;pe#zw+C;jq zr5Jk|G^(n2gi%lC_XoSb>f2(xl4ZdlBT|^JUy%357a4kI4UszuC-r@Ys$M5INV#t* z2s|_7(cy3^WO{=_K+#8H=vf2uq!%yAtDdo!Il8}XNKK!>Xgga0eL0p@FS1p<-51r28*Ks24Qk-ObbC3v)mbqWa#~^>rKs;f}&C@Yl_J> z4c|Dyd7#H0cEOR?bThRKPbbjXX6Emnu63Y58ccbpg#Ns4k_f167!H^CuH&EFk`BD= zq32!zg`3T++RyvYI>rOD5xh$J1|0Q{yacUzUT2@`nBm&Kox4wvzLbutYi?0U4ml4| zfgY8Na!gF7zH-3TeM_bFqbfVkk#cLa2%o)m7Z_7VMi#y3+3-yRKDu>l%&`Qho+$V}FE(3Q8-K;6V8ifylR5(mKgT-Gd2*)fia zuRb-+!(DMG!#Oo&z{9X*x%yrcD_ndBL@$|uRC5uF(uyk*h}kDq|%&C%LOE+L5zJ4%wVmj)J&8Ng&Byr`o8s(9;b${vNF;ycWhdkX(UHX zvIK!#A<%vVverNh_xLP;P3hzL?#S(${q!Y?mc*WSFvMDz0u#dg1{->q&B@YqJBnj5C8=vLm> znAW}PdFCrV$3i*O{pGPlsn%r!i4n&-r+9hooC&U0ip&O0zk1wykg+6(a7*o*S$^~+ zP`G@3my@Y!Z`Fj|%i^@8Zv0kH%~3>D>JpJtHE~$>C;^|l;m-DVklb9CwE>pH*Bo#X z64aSm%4|_MKaxlT`T)y$$fDJ`J80p=Gb#7yl7o)*{NfcNVQA5|i8p(dwU`T1oN1!& z$7FeX@laUH=hO5igb>|w0X_fO$i_aZL}aEBa~Fq*RC+7bsl?EEr7q9+TlmbPMh|7` z#}J5(nF^nlmz?Fo^;5y$n zUllfQV_Y;8-E@A>H1vZPWG3{!=dI6N0PHkE9C{?cR*Stb_^NrX{%h2m#>21)PCw|C z|7rywHI3Kn$m$e#>pvz)u3H!S2&F3jcXf%0988q@!_U(ybXxH89HyHzdA0HtNsg7^ zJyM}wNaOd2W02{?7PerJaMfv(p+~*dLUApo3OVX;Z$fq3zD+gi&r#7Sag9>ai<^;e z*j3~Ob$b;~s}Nnt=P?pVP<6f8TK4O!+i+|VZcA71pGS6c!>$RcN;5qCMnt$pA4qMUgvnN(_98& z`jEV@{voKRfJS{KdTycUutXsN7?qIAP(L=`u7qr;IoO47=+3{Fb5W=c0k*C&dL}@fWjz;XbU%1EDvSFPAdk>i^qv3mjg2P_AhK-GV;83P zBU6G65>W6`6>!F1;WPs@9qP5$$i2i7&uwbst|f{<6@H!=@q#(EgFUIdMkgH{mBW4E za${AIn1Zg7K%QloDF>;*$4B?1yp15su5PtKdOJT}c@JnDbM|x;WA+#AU8Rd)D)beC z$I^#*M7Smd2w9WaqW`k#Ph92`q>0;c z4S#;3umGdCR*ybXhenxq<4C6cZ&Fq$WOc>PgzXdeg3GIC(~UGSguclaavzEis`zxs zHEn3pqzcetLG*5ZV**}M*q^cQWpL13B8DV}4RboW04x(qb|O{QsYMIwdYKHh>?1Ymamei8a zjS2H`Uv1EAhy4s#u6LF0+dY>a9pkkv! zy3K5d!nQICoRI)6@IXMEM?nSc9)Sa=kb3AeL0=T>4^G$nR3I>U=L+ zz)EWz=u}DBbmQ_rcKsXxm=6~;0om=!(_k*xfF(4UEDd53Fjaf1tyaz(S#|W4E1SbG zJ!1rYjgn~0;Wh7~7TS!m9x0XHho}BIBW!Uq6NePos zuIg2fa*i4vT^>@4VW~fG`So?BD>>SlBKX%6MxpTztE-|1LQ)yv9{RHfmj_4IFD!b* z^|pTdRdm@$9&KbgZ{CZokznll*25mh=oc@ay|ytlXu7%4-PbUgs}i~~vJuA>f74?n zj$LXf!0hd9yj!mkS=?YbiZ}A%ZTUUD3M&!f@J{OTwTW22r0?Og4%7Et!kmZ;cPZmj zwcS6Sv$ktx-jWmE-w;mylDYkQ8r;j|3ydb4Y)5^M`apy&;3- z3%r3I)CGd(rE-oeTb4I%m*Oq4b=A!OK3xIqfo!OlCjyzpx4J-LBelO88wTs>1|npa z<)MLawzkRI-JEsAtz^62JAYFxI}mD{C6V~S2G;B(hR}} z=Bd{S7q-ay^OHLGh}Jj}A@+B7`CiDGnIj#vvPw_|GYEa;67_nZiUK_f+A4f z0o?hTZ}rjmpVkPMta{u4I`+o=s9b@Db&nwlZUk}@^fvQxl z)Wr+C6@MP+vE0<2aZ{ipBe=?iPW0|fSwAn%BSZ`SuTc7TIr`s8=3jEn|NHa*rg!$_ zA3%U5$|}C|Yw0Yx@C8B+K;CVpTd%oH7TK^J316M2Y@1J~(@EC*%*!{Bz4hL>pr#{t zzpjc4rFaI-8YvbwNg7x>U2|^wT5`a3}#opjs!(z=v#n>ffNLrfBY>-w-R#! z|1LFCN6M4KJ;Fca34HqS!L844FWb>($MwB;JkCDf&n5W#T(!YPJ5Fcfyvco?eVRsa zSDH7sP;d+hhJKJ20UDo|noxST}H3Zi}S6xR{SUOu_Da);Q*J&{p zvw-HVy``3Ady#1b-3HnIO@lByB0@wuZpYVwhO*A@J-FSb)9Mb7iMlUW05D16E9Q&+VcI=HI^{)nlQ$KE$<13hU^ zh(hunP8uGEQU?(mR@ygK(8xg)?g`Vb)y*tjd40WgPczsb8JAsm+bm*I+Hdi4e9*8V zqTQS!tB>0qT$Q3gbCc82;QFMBOJIVk(ip;oq{1s%?|ek@_#jIE>rhIcd&gsx&g-GK z4dL;~iy~do*n=16W@Op*YQWpwlQ0Z^dybY9C1lC*CiPYM;6m41h$V!d!u2|Wt&LbZ zZL@olup<`PT@z2Zi^z|1ILk!~v&&-k4<=E=YL$Jn%I_vvW7az~4IiPyatoJ7$xHhi z<*QVEnxCkPGUoUD0_L`?Uyrz%!zll7x3z{r}b(n}=at?G$>AAdDfJRKC zzV==EB~akxmcXu(W}CpmtmWvE6GkFijCf z_6M@MjjunBy&0jCO@Kta4hpLU)G4>s21fPI?L1m&fR^-gQ8@Y@Wt4od&+6A0S8NWmI6Ud9qC=>Jo_Xo) zdjn?q7P_45j`C#ivP!|P^@>;X@Xy=+vsbZkY~H7({n_rGlIgD0ZCsD%aQLp@-ErSJ z%i!m?8uBecTgaetJb5ofP8FdK@?PQW1hh;%u%PuN6~G4;oAfdMA0!g*g}e7X*LM)! zK=*Vl2ZhfcH~?xynz8pA$%;?N3phOGJZ#K%Tu)Otoc^Affa)4A6lO06t7y5Ne8h%zs;OMa4x7umw0;4Ywd?$)A}pR>is6N!ZH23 zvkXy#&S1qzYg+qH*h8t;5kKZb*`mlDC<%$qtb<1M0V*j%-{)$=T>lSp)WL1NnM9+G z5FTpn=i1GpXty#ZBCd*i)oQ@3vf?~U_GS}4ut_p>{dCm?1^{DLm5Mi#gmg)Hjg|OZSvkJN%ykEMESESuT{mczZDkWdOISV-JR$4Bj3JxKw zAoaZ6gmm0&4cqM->0m#H)*ky=JYSq!KfW5a^HnsGJlxrJ3uqomTgMsQx&>O48a*Ft ze@0S{FC*HOEo|g$6=~AVHi=GIS+v{)bAE+^UyK(Hlf}r znJ6_ftgi#;`E2+5rHochZMtU;_A*2s1I=m}>qDAvH~7ca3%XA;!mpZ(E?ejz8l`wY zikdNBrzsLy=l~{b8BRX|VS=;uW~J6tDovXY7$<)J|w)2E@>CyrMl4~@{=Nf(E+wWV)IW5ec!{TA#VjbW%t79wY4Mp%B#4Z}i zL6hu$xJeLh(q!xg3g$-2Ktb@6Ki7a%54yij(BzQrlXx0I*k2v_gsX;z{b=9p^FytJ zE7@r49coXLVi9?v0OR|troJ7zSy@wI^af|v!Hq!Kow5Lj>P<)Cp$!sSwffTpE8`hO zGggh^oX0b_)^25(o6ygfB$}~tf9Ef0gMHk&Mh`EG1^$<#>OenPuh*1r)!js%GXX7m z)IllTBRSxJm4q_d&+lsY(V)MUlgJRcwgj;#?t5P%Lla(P4!jDwGbzj|?j5>#R~`Ct zP9>q3@l}|}d6_7gYKIBZK-GeU&&M;yXUP21-isCU0s z9||%S1?g5}-pk;$XOxk2Ka{NdxvbGTFCoOSpez3z5F9Egd7)QxS#0}&1I-0(8h;;h znj?=Z;s~IELc@v@@5(MiKXi_8n?4CH_~gACjyB}ivd#*>Tqs{WIm~&0`Kfs*uOG~R zm%s`w6*5Oj0 zp4iTFud@;t>5olaktmNq3z(|(s0LmA`WoY22)5bw~>61m#d%^He zF0W-jnaO?={DFFeGvDqD1}_VD8lBSwGNns%rVM-hIi*BC; zf)VxARWgNszWgbGP@zog-`(vr_@VHdXCCSAK_+@VcDD0lv-D7cb-j9uGj|Jx4t`** zH}hd+tvPeC$hWkfL5Pila8o>Rx=AFprnl0IoRya88s(#79kq<{t&kuet+9=sOUJyu>?yA$G%uQ=E7qW%#;*xa-JANc*h?A+@ z?%bg9?Yjb6IP_m+olO+E!`+wNfs!(J4E9A^&r5|5`FWrl_iiE+#|uWvTA-s5ZQT^m zOUPzN(daT%ro7Z?&q~b(#C)$0w<4M^?&H@WWj~WWUgu9V!^Une+x#W0cEq^C-f&1w z)P!JBV9!%3&*0yFM`TIorHxBHhYxbFpR~tocaX}?VQ`qqJg=XutzyYH`k?1qxVEg~ zU6~b8qPK!_7P5;{o7ggS9eDN;hv@w`tFKd7buF+PpG{0RHZBxus#5c$ zC8v?J4GMEMvLi+0B!-%PMt?@qdL7ZPI702L@Twq{XFDuU$fWE9h+EY6BPi|0wb%eg z;rihwv!P0W8eX>Zu3UA^<`|{cR8K-YZVX2xO>(Fvdry4@sf1Yi;Z(x|H;ml;)%b0h z?nr;4j+pLtCq$D(fYA)0kjscart$&GX6lJ*x*0)baB!W;VNlAYu-FcN`q+z^wntY%>T)^r>)~6 zf8|?wYX1ql*V~9?kumJ0DtC)Mp)br6hIj8N`fT))+4G4YI#wK=ga>im0HH((`QDj+G4v0LWQ*ZSj7B_R;lWKaw{(URO6IiZIHP z2&#FH<-3yYL%SFy7OIJtP~-h>eN6pqpp12`;$yeACUeZqQ?)oF)a1hr-Vxs|CCKM+ zi;h@{YCT>C2g$8p50d#*Zj12Yy>9I%4Y0xLy=y?xxP2L6-Jjm1+L(zYjW>b3kd$Q7 zDEa2udr92Rxg?HN@chwu_P9Qt;Gi&;eouq~_<=LVp@d zM7p_&Z6n<>k|H@rgP|tHnD8A5kC(>|AJ`HluSeX1KY8$Oz0m2;x7Xcyv3?yj>DX%@+F+1(u~H1kjOjjNf9Tn}5yA?86ygq5EG9wxxt(p=ruI53~qaekl; zoN2@Jr2U4^L{>XwU&^Y%TC2C?9U0SImt-0&e2PK($#@Z^<5OttXi?YfV!6R;*uj~L zQEW~mL}P-2`4`zee}$xRo}L*YtYm76Q{0aqpe9TY%KSj6kDH}+qH}}^9tMX>0>7DJ zD=^_-EYmo3-r66}E{r_NqA^=z);BC1o@0X zZ1(!cUm>)j-FkW`s9A^V)#~f7Be42YkRZs&duPPemh#J=N0fnHV>lcBPSL0NYjRIbZsKA5@u*=~}bkjq9;kA=InwitYqE=6uSU>XvTMFIj& z9y-%i#ubj`zGHjM&5XS{|EUp`aNM^}3oqL)F9Y~u{?PKhut~<41tW&4)=G&tX29^4 zzQDO{en0kLuH}RrV~sTy6sPush)NS>lpsoZNR`Kt8(?I>`-;aDdM3kv?`y#OF<7@3 z+l7y{mFY*zh>Z#V@u5*jvElwAN&_%wFE_P;wRc8lMY+}h?9=6a>^9g>_lds<)nI}6 zLsBIt@|kUx7iD7-i*@sLePrtR-|g@8J;zC>yb9BNe+o3jIztU6<>f|dxox(t3?_Zx z!nNrE>AcBlgyhEGdT(!)76@-cjh|2fRPi)Z)B_zh`Ks*0Ke%by+BL}X@Udr(%3<{VbUsBBI| z;S^{GUL07wIqU2@aVZBioWFBM$o&*uPHHe=I?Yuld6v1naWeTS(}jVmC8H|W`P2x* zIMQw1nCIJ)w2p9K0b((TD~042lx6Wg>qE&)3C=ta?uXl- zfOJJGmjr#HubR%?cvrH?gC@sL(Dhe>-HjpI%6&uRAOe?T zc#;&+f5zNqF@ecbZI_*Hw)e&4#eP&2L3O;WjTJ`$7pC(NNG(!E zzso$mxQFbNSl{~T0hfsbC<>jkDVwTce!lNO_rvqYa?!DSQzuH{_38Y#$Qpx&S9-wl z0N#@*6$H@u864C|48@eJE_e+UKv&RBxB7!kh!(?@#lq$#;uz5+JI}L%nAB{fWf5nR zMO)>oSBXoE^11JHPg&MgeHHRx114n1+6hV2r8i84-l20NdltshOK%8Eo$|_BRre-pn^Z%;49UMQDd~d{>1tpz4@>{k zNdTr)mRcNLEEZa>qFib3hJHy=bKv%DSdST%NNH&`)o(# zSsD*R)?%aCs1_aBz7M>4PN1Z~9=x?;v--2!Tl%9-i=NG95eT#}$B342G|E6F>X&qY z#%HC(v_VvGSQ(s4QWqsxlJYyRgoVmxuto~HbFoGLbQvrZcyifxnEzUx+6AWsNQnkEdz{28e2B;9y3TM%9!fXDPt#QJmeiy);;qoHF znm`X)J~pBGZWF&O^grKot^Mxt2MihFLJ~9Npm%wPuQWoRAS>T|Kn_KTvy5$$IPG;`o!)89( zwBSxL*&nJ!$_bR)k>zbrg_de!`H-~ZOz(~|`-A4CxB~UadL3}u>&z~!WFgR^ibtdT zGQLDnv)WHXlm_;inOb<;Z8={|Wj`yA%@K67yoB>W;p!#u|EkFFXXCwUF?al38ai5` z@h~|aSh-~i{&3c8^Grz^n8aeDcCk=%Yn9)rKWT{C$>cezq^EN3*XA~;&CWoo4u@xJ zOXP@&!57Up1UKYy)I6{)u9NN1fai8GavCR9QY@Eg&P;`cLoQEbR7d)U>@NF8**lUXQ8mmbzo$HdSE|dV2Si)|HsqeWR zRc#yCok7pZDNJ%vW;;}J&LXPfFCjZ9j8Hne+XRo=IQj8;XRvhd)ZaMux?8Zs!64#t z#rQ_OgCg01)&t~=EPqJn@q><1F{!(RKm)&G@?(+v{!WX zSma3v&;kk;p8x2$`D-svoGu#t5EG-S5;C2`K?;*-AWa4fi%fS}eT3TXFJ0ez{XK{n8|B_^8(5 zU@NykJ0Ns0vvj*OqunRmC5A`x9{`P+1+lwKe@3*8$K(K*bTx@Um6-viaA}pvMQ=ZX zTZ54t=80ChEX|6L0c`95OkzH)iu#kX&7s|CBm6+qGXI)g4&wx6y!O2YTiqv3V8B=0 zURzqe#c|So1FfaPTb5gp!!9Q;UU!!z&9O|(BE~|*;l0eRdI-GTBT*Vjoi!sE0!QdrteCuDzlrHqnyFgA!$L3(p>g|2 zl;Aeudco~!DS(2R1qacsn%dN~A^AAhu36?7DXHhtLd(HsctcMZozLG5r!r%c61LOw zz>>#oj)S}h+Z-n-gwUeP1B%cj!GZCXKjti_}Mw$(lJ`C^ySjq0^@g_ z6}HV#g^WeZ*2Gwn+1i`8bnVZ%9=TT~ej8K2*=Ra`io)!u_eB2odOs$YSueR&r^?ic za7Yq!6{8rWLMr$w=tY3ld=XOgdpr$P<(E<1r(bLy1RY+(@TnJN8fh2LKYsZ-ztq8I z_mRIu3aao+NURuC$b-Z8gCo{GHQp{X z!TlRJs^-cxKx`d-+uIb{c@14C*tVFBC9YXfY=)Y9Co#o`B`9zUS+qMuJR}O9oyNMJR zS9?ofu1;)5X+4*9#rKJ+b++|lTk=^gN!21n%(P~MrdU-Xm5J6Ceu9sr&1@mqo*G@wWYK?lkE~z_yQx)a8!#RH(HZL4=7VCo!q- z0Hq$u>{RD!YKJ~cZh(DcEd;dFZOOwdGMjmj^-WsTYLz-pwDFs6oBAvKff{X>`h(w4 zTA$x>JKJ%MXK&&o)W&u&YYucP2mH3K{@TS8a<#c(z@Q_qIUwk!Jr0PaoA>J!1^(g} z%H~h--=-fim?`sNte^?ak%MM0@0*#Feq;x7n%1rv&LQD&ZWb@2+Qk{myKJKELo))x z?4cxraDZzndHSExnScU`e;~Y^)|^H8SdLrlwwhXE5iOgh`^bo!>ulzPvm*DDgr&x` z=V>(X3fE{^c|lzJ*C8JWwU|u{2852EfBdu}|KWEm)v#r42+8r`Bn=OZGNj1zh@}xY zR=gZ_3q=+GR%^hvn9aAjMs}_KF0GLxlaF8Nyt9o53PJ_#jg~phy-jXlRQrw@Kfv1| zzzenZae#$0Q-k=ZbHTB0&dw;V}K=k=}GD`pie;ce77O)n&kntB45kWw?wNUP z9FbJBzue5%y@Om*&AMq+o|)!c>WQI`1gmECMu%u^GzPfp0CkCM-jX$_Nvm7)3yHbh zn132}+b7o^lL{62zxMt8x>xcUCa|ydr09SWzyPNpVx9FMM|FYju2ee{nKxwWd-w>Z zfrVS3@(t+AsV_6TWlXln;}QS?erkswBBn+Z%$n==fU%N^^WR@K4kUKD%b1Y z;^jn^&g-|`rj{?&LqbpC;Fd{*D^@kK=%Hs&Rxe6n%0sL)R1By&5VGXI$R>+!%)+(Y%q>eXUylHVv@rXxp7>hqD1 zmR4@JNWJ${@7%F3@|?jF!kHXlsHx#TAFXeXn5>86J_XC7Ei_`#7ih$1c|NM#5#rGU zq-N(b4Q;=v$Q<8f(@&2%SC=JJBbmf2eNsKp!shhl&h}opDcMuwH#%+M*;mmQ_>N2Hi%a0=?T%ANL zpQqY=j}~q}lPa_f-3%=Bdg0xB^F#EmH#D}D{#XhKReHs_hrvuPK4kes(MVNh#;%%%kqURHM21`{RDpZqTK; zcD)6VZA@|Q*BjaM-tR9RSZAP}ohi&~3z<;4bd3^Q|h)1|Ee?#B>ZQWj+(D1 z%dE(KjPS-JJ&(S83`@Z+UpnDF10ahA<_>dEopW}bu=Di?otCrFa%K1k3-)f^(1oI% z_{E0TT<{KXWPjO!yX3z~n&;`l#})ZxF!qo=frQ>uBh36XLDqRGVPiITveaBjJqg(Q z*Okx$f;5t(WNeyTRF_IrJ;r|1@yYzbzG<^M%Z7=QMRoh&FIR}m?@U~wNO)WRi#vdZCc%ZB-gQK71cvVzNgLkzTDj1V!Y z3IGVM32MlMm`@*^k+IL-c@^W19MRQacYL%S7$!1Lo#bhmq~1lJQIxYRh7Z8IG0$`Xhf8tMa2<~%G4}x!JlVM%}FlYb>SJ2UV z;RZFU>~Dz2?QRc%k6HtT=};K@5`fm#8a@DSK(u392jq<&i>wEaL*E-JY_@tbKhoWFNpy+2|wAtRqhk z6E*U4R)z9B(|`QeqE@;;6}r7UdLIG+arXOpkd7$GK6d*Y;Qj_-xlFGk!ESfi0Id5Y ze#3Ko+m7oR?6iC#8=xuWvOzf8(fwa=q}%H4_?PKN0E7D8vwD9cYNotV-Q-2#9;g_j zcfTQ9Az3r7!!OhU=)gNkNYb~cEV@Z!E&Ea{|wUL zinjZz5OoB04IekN`5({04@{=pPkJlj2?OjNPp$yk%MAd{e&wuiY6Xi5lo*b9pX}45 zpM-Qg>?&fZ{v=H3Y>Me&E8NTE4D_9;RDLFm%1SI#JFJ00%`SclkxeMD=ql1sh8)Htx}J^T!{y zZMX!teKR{L?Hi_0%|&m=-R&a-UI&1-nId-M7CjyDWL52z|Fx^Co)1#%^Zq+K{)K1< z(1`zWZ}M06xz)XL%K(OzZc7qR;Q`ZDEn!h0I(rysAykyI_chw{O?GPe+cXxoWX4bU z?dQLaYeXpf)zGiQW`qHsm^5a@mdo~63^?f}9mzwG8>@xTL0ugjq&aOneGZD3EXI=Z zULt|;xf>?wqQ;JUXonlxdx$q=k_0I#{jxizJjU|%qwnd(u|iJAfcb^7B5(3!ymfdw zZw2888;@rv086Jbt+LCu!o7DvnvEJyi~D%s<`?1W0JbQu1OX1S80-XQ$gU4elaY*O z_5YPGJ9BCLsqQbs;28}tU*~1$-sJy5E@O-TAeU;lO$2)39iLhOTf*CuJjHTfYos`H zk-Ia%H>?8p)`=PM`b(#8DmJ-6-&=c;FmuboiCSZ5oC*F)+JCzRcg#=im_g{0(9UT}&t zu!KZT)lTFXBTy6<_}z?B06so@9Z`;RT^Q68tgVT)s(`_%rhgMV^#EKy&PtL{w7yr+P9AS^n^J)CeD!_CZMtpu-8od<@?9F6gg zfOt=VjvGK{F8p>VHFGxPsIfebm*|KT#pFqzeg|nhSlX|qd(w(b%32r)P1p8!@#OTt zRb$<)UpgTN@z%}5S}OSW_~Glj@Z!bBer3|6rZU`^eg6XCdq5NtE@c-nk0bIJm?2|B z+mfVMrsm@Q$)jk1u+tSuIOZgguJmI>{U2rOkIDh;>g4*5auy57)n_EU!W40(Gjjc? zY)*QN2+XII5|NM@7@K^-f}*vz?d~wz5TshXg{JyDp`d{6?XLE2AV;)>%*N406M-wF zkQh)W=sjQZCH*1Z?Ap96Q`2a)zt}D|VSn8PV9QrdT6(!s3nh#%)C%gi@V;P{aEije z-bM)J*Fq%;d@e5BVm;Y!dsuNQYSOGl0vvc?!=`|j48&gbVGLhXWF{>O93{@bxV}Dm z3ycr{^ysQmq1bqSoxEs8aS_?s*=V%gZP4Sy*49Z0R5J|4$&L2iUuvu*G1@MtY8JuU zUip)?48YB#Uo_nh^qLMPiVnmGB&}vd@E@zqY5D`iys1M2jtlNsfjjuDG%K&)Yo0iI>lj8&g0w1EU!3%Y;(KpFEGDLO}Nl$($ zG+8Wg6m59DZm<9G|`y z^eOjyI#k9!v>Yx2J(yFr53jq#QqIdpGRgRVI72^R%Cc(pMn9PfSNcgA*#NMbZN;7v z7W1UHO5_5*$;exG3)=lheirgcHka>i!#`k^!7{~)=}LvoNe>r8nhf=;9C^Bvsysd1 zb8bRwAdp~d+0k41Op%q26B@h_>omd4iROpAlHXU4`EAy@o|k!Se7Idq*QE{l6W!H6_FJNZwPEc23cnJyqjVJ$j-~m+4-OpSj+zFh7ck%GnClK; z>*Xg2iBBIkeHZqH$7R1D)5IrcB5sr&ZfQ$v;p=hW!$YU`5axGGx#5(LGmN@-b<-AV zP~{Bjw@Ra;|3% zRBo5CU`AAY*%Onmgq(^}w3g3z-03Xcv!`Pb%p}do* zl!#Lz@JHvjs28LWaDc|9OofqnQRScoyIVbEdF}9(`_(e&zTA_qh zA2}2UHopUcV#wB82C^*}XKA`Ud-6ZOOd4s~SK5!jm*83%A>g4YmC+?p;VQGVy2GhN zEuf%_p%n$yc*XVHRdCZ-wv77>`|n0cu<{h;=|JOA^6h0VYB=M{rAv~zW;c@)O}`8z z4SG%c1E}vumnz1y?66*d8|hCjsHJp1M4I2#$BbHiW(ZmYit)Hbt6G4|As#TxLe%$b zi~w%?UE=r70M6&u%jLYUs?meJLU2r3JvLF?l@n;7Mzldh*q$9u%TRNVF~@F$?2lN8 z9HEqNcqdwr>U=NAQwuUUZj~qO2lNv8Q0lHjhnkDK|1vS(eTSj0qj3i0zhsA+#f^5Z zqGhG2RY<0m-!S-GWbsw zx1gQO6E;$|u$Dyss!9Km+^vDB{}=XPYCOwCGmImDR#gR{zdQm~EM=MHN;x1y0$o(ek|#M=bNGWR*dK>JbjbNNo}? zkyU?T=BmK&ipaD_w?HHj=EaF;5W$Ledz8{!)UC4cH^MU!7 zs2>7hMp{I>0V{IE8km-jgVU4r9fTT$#;*vp6Rm*XfS@HN&%GWV3^AnzZSntN&ydJn zxHqE?7VYo~-WICR>eW7Rbe5HeMpkXxk>94v?!QG8L}$xm3U^atv`AsFK6K`k!Nqoa)WyZCfJ#L9-Xoz0Qyz2C zVDJc7QJQ=^h5KTpTvmj-G49G9jYMx5Z$}3Tam|%^kMX=mYKv> zinJUm54I?bv-b60li9HSHiDpzw)XO2xZA#Mm=}LNM8%tmgVKj&C13+vdW|_FHQFeZ z^L!W3zaYcY(CtIA_O|f%JO;Y8gO)ycOlq?W{{^xCE!&()-~Q#;ol?54jcqn#%N@0H zU$+6;=&?cDSA|hX-vlj>ejhi#-~0}=>iJ_AoUyt}I7_mF{D_b0D?W)|Z;|dYcANn) zW|>5P2q-mfb1X87c%^FHeWl3jXjboXs2G#ifWqRrg+NaVgiiP4k%lhQH$mdRPxBXDrq?A~HkwJ)zr$g= zJxHMtLsmOYxY(vmo%)4Q-t*B0Zn9Sm-(^#}QxdW-G~{_winJ+P@>IH3HH+0x%LtL9CV(MFd2Hxiw8(Dh}6NO_I=kN881w>*Q;j|hFgDh zSgVOkd;;@IpL`5CZZqWXzKAOTXF9M3i$I{_01996rsUPCWH&)0zXkNg8qhq+LuS|mL zMO(_8nnfwj{_)7#WZiNE+=8(t`a*wV2)E7{5hpVTZ4fX@SUl#u^;y`Ox~E0HSJF$h zMnie{t$x2^XPsn#>l~2-D04g-r#EtB|8-%w$ z#QGfOkjnY!QU7DdK{>}(v%g3M~Qnzb1qY+zQIJhr>fX4?hCZZcTHesx3#2lv_DP>R|`Xo zp~~r6*(2pb0L`;BHwQq1z2=e+-dcJxsm+l5SIhGssP7z0h@W;9dZzD92a`Mw{kUPX zB(+fk6LSWuj2Uly<@33J+a`NstEoL3t6KQ^!ViqG^j?WF<=^E~+n}v4O{Grm zMy@JD#k;Ae)AdYG>*aQff8n$}G;370??B?-Gl|kyP-1!*&DVaiW-3y{K!;var~g|j zd|u^Sz13qur&Ud~K!R3)ItX0d<%j*0W7y>wkFr#as z$B8E7sUElD&pcN8H2U63g8kO}QXk5DB{EIgyt$A3Mf&Q9@4ePuXT6|++zDw1H2t3y z9g=ehU+>6SbZ9|4C=*|*Z)j`x&?MP@J@hbEzcf%4C!ibkuASLkHODDd$BYAM(P=MB znz2C6dm`1rpKmWX!eRSoG{eh4tF8~iGsbsZ?_Eh}SvMlyRF4*Y`1KuBa^h0;zTDsQ zL=ZmiE+GbVtgfU0^5M#w;uERUd zWzl&ErIz-D*DvVTMr@l!g5LfbLv47|&x--MGxPLDWRcl-e^JGAddZf^AhS(3LVg#M zbzt+X`D1}RFg;minzY&d8&p@}q)}$awFEB&EPv{(h^^V4mfKz9Wl>h+8LHUhEGm+$ z-1p8aGh^kkQImZN+?Ey!-oPxi&B(eo-P)Q^(RLT(8xh5g(*wi^_Y){0pwZ2*QenSe zHt4ygXE6nJg7cvpFSE)hazpeMC9fYq@v%v!qd(do-L_6}t-+P_{5J?_u$p;l2j z|MS0llT_)$wa*Z9Ug^tB(1vQS^5G={a{uXx2wGLXLK}JW&Bd{uv^@aS;R8(60|c;# z#8C}BUtEAyr;@(vVZ0FCE<7<;+9M+~C*TFl>$~{19hZ$+qK96@H#2!z4@*^mO0dn_ zN30yI0oxM6UEJUg&8!I<&gvxn(aE627GcWpOWh#2GDfxxNDk$zMf=-W7JZG`IOmZJ z5RS?qi|4(0|Am`e|)O< zB7<*BaQEiw-4aHs3IgL#?a#+PFw3XHfof3utBhC&TA&m#hqvz>2y4 zdH)-QIxufe{`(xjE~U2?>AoKl69gSC-uU+ZmEq64)qB(H;Oei^6sN5Xty-BxmrD0j zaSSQUbSY8nVM6`w94PLu-7OxEq$+&>Vm4h5h)iYS^L%d~9~XxP`d(bqS4y**L>Dw4omj%YE!qdeQ)|eslr;ryk;jRnR?{j&Yl_YEJj>*jj%s#eQ1E%^ZHXLM zW8eH;HzqN)m$THG_9L^Brb~@P^OI)gJ0@u4t{+f%@(MHWa^BV5*jWhHKyt#HixYW$ zoshK5%PKAXDo(rY7XMaPgIm|l8VmtDr$G0$-p%Swy>!2|MqhFsaLad0_|n$fmeRQE z80#F26ZszF+q7TlxAKHRN7Go)II|a>8W^oU)uI#XzH)`N|F|;(Pvw7jnVL?edOH%d zIfJ3ckqODMnwsIBppJ^6gvo_}aCo0ieCef@?yeh^T6{>sd1L=M+& z0lo$vMs0Zbf7hue5BU=Ulf?5|Oys6p;SiPZo>w|m->aR3h-bA}G0w-cb$Z+|^ey*<8K) zL;O0Ng}!NmkBh;pdBonj2*edT8NHdz$XaDd1*uO&eQ>jl3~dOw2}JX{2+z6xoBwE~ zirOxc4?m8G(%hyGprcYHBI?+$K^aAAPUkGZynV%9k$@7$8l7-V2dU-R4}e*7pzzT* zp;PyO-*vP;W&%kvk+{bXn#P2lr@Q)<2+6KkVddJsjtQ8hNw&68ntqelq{wRamoIcc zhMTJhRhEI>8$FARzROwwDlBW2kMH~6;#yJfF73CvDBGAL;u%4A;!^Y9WO@&TgfYc7 zQ3ZYkE#CFRk`7nPHM*Zos*_b$dNdp-0_x9OLyb*9px5MKWMC90Q)9*QM<7t(%$B~beNRhm`L4)l&YQ!~Bu$wi8 zAT(x}0$D%Ya+rN9CXd8p4&y*l)8?Li2p+kTCELEpTR+pMq{_&0{`TT;2Zly#-POA5 zSA7M-qvXeZlxcwL50ya^mp6YiVsSV1J`)BY<(~u_$P1e@$jUD0PSjdcxl-^r5M_Nj zlAW~L${@63{Y#4y7v0!Q{y<1=$rhXHKoZ%RGkOGQoHM#*k!L&l4<`GDU(52j8^Qrs zy?0%9k|y2Z z<>`jhXi>+Ddnz|6TlA4ns1I#hD~3f_UrxC;s)d|e1D}bo_kHxs<4AGGUr}7&G(lyn z3ochPr7SvM=KZ0x#WdVwM`eN9a?MYPZXt95cg@MRDO4n=2j?7Q{JY5Dl%WqGMF?oZ zQL0?^e@J>aHzHRC+V>=4@2W$_y8vSk<2uL9u152MIFJ{FT66=*^WJ6L62&MQgO^t0 zQg-wf$C-ZkI0>=`%V}<5GgPz%KBF|CaCN6`w1UK&*YJpiziEh9H*E=@Ir?7qa}s(; zbMH;+H~Vcv2=u?VlkR*0@LD%MPaUS19wTr{il%g9#Czc;fLjyE>{3jshZE5oN9nb| z>HN#?VL#SaXD69IU$ml98cqP-b8}rM-=9!uS;<^hcS_a;cVvY#H{f24sCYb*ZlCj$ z68lKX(fSviw%nNqx4}4csFAPD{YP`Fr52bWwWbjGZVklf;n*yeh@u3d^Chp-(_eVF z@`gb~kJKp_F}gjfibJfij8qX{QmgMOIb#!bTi$jLi86dl+L?aH%Y8b%7@>c@2Fe2S zCxeGAE(YgB;?&(CZJL<4RMXay$Z+>g!k%Tch%3YQmgZ>lBVTo`psfuC1a5Q-oGygN ztsEtAVrb7)Ov!iJ36JIQK4(P__VFA+=Sy_O5(#{ac%f+yG#?KYT6h+v#I_rw01dP0 zkX_O()p$2oNWK~*zI^K7@+wh-AG5qzYXZ4=dWec<$hpK=ITK}ZFpr?L#QNJHmvT%G z40?76yu$j{r-#C57%6|Cv#Wo-O_E_P-8hPf<5$^>4MHGbS+0AR6ZSJG^X=`QAZL5c zs;@o6q~1}SZMY2l1pn^hRfP@Lt`eQY@;)j-qz2iVYPoHV^|c1yBehWdPLzJyD)i|_ zFK#H{rnyhyglSIE+^3V+7-hmfphl%oI!B*(U`&KfzK}X4yl@UJqGASx>2Cy1Cy zt4Drkqy4Je>gNwGXoAa>(mQw}8Xv1L<)mqIrQmws=enD;iAc4#kWt=KRP1S#k7al3 zcLN=+;)#ed3kBLeKfaKk5`Cgx7Ors(!Zi5lS*{0c1Pzl_^RF)DEUJ3|IYWiY#F`O(r|>8(ZqE>8rqFl8*Xy|LOm0e|q{-ca!_WlLXYZ^1<8MDnVL5DydXd9;c5y$qeT+{i}~} z8KQ7#XgPMtKPJAF;kT1cUiGOn?Rj1OW^-Po`VD-ziwJ?ptM~vIx~|iSvjz_*VP>re z%^%&$?IB@d2ge8HB~>WP0oqs4|J_6QzxxUQAMu|3HPWNK{o}RZ$#xKWN}p854+O2s zh1(4#pa$!3KOD6TY+B}Ux=yo1VK%O|S#V?PxW6BY>Au?AWP*^ZTbshUWpvGwwz0MQ zuspHo)w))t-87#0anJki*_3V67%w-x{2J26$TPT|uT8TN;f_PtD>6U;jdr#_9q)6R zUo`Gkucv;dgLDPU;C(2Fd5&$B0V6lCBc95n^hqQzn|@h;UwGgy8Ad9!pxhkj@;isP zNu=%N7xEQ2-8kUKP_Xh4FU?eKkk$1P-sgZp1jVkuFDsFdlH3*Go6AtOzjvOkl-%e1 zcznLzz1BJ@i_h(FJsc%w>3oeZB62a}_eUpEM=VaL+T_fh;e5iW?c%da$J097OVabs zm@&KlVV?MUNp2_)Fb@Zs`)clAOrVEvnI zJpT8I_ZipkkMdp! zGf@p5@!0%o5gIl#f|0qgbUJK>Pee`yPwzn& zS*VP%(PFd5+!XE~Jk~(7i$?tTyf(%k_tRlsQwUA=LF@aZe&rvetcshS(u$fP!a{!} z!|lj|dK~D=$5-cJl|RP=0}n>dvxWjroR9}nURZ1bl#n|NHZ}Y#Jf(*mj1Lp?rb>eF zoR(RY5D|}O#!gcuB0cCk-{mm`o*D49Vrkeq?>7zTj%&5`Y617ty6xgtvCFFuUqGzr zb8qPf`noX=j+g%!PeYQAm{oWMYn-8APYQY&F4%wAeTTTh@kLik_Y+5@9OOFjthl|v z_4OLc@sOTmO2gGDL#+@In{qU1tceK6w<;%|_9#rvQ1V3qxg>1%kSYX-Hq?sU|8|n5 zY;3k(ov2R0UdeB7<~{bbhTS4p0bcm;dcbMs_v*_N;6o&1!C{~znB-v+iE!L*J>{ms zOUBX5EI?za)P~I}16(#>G|nE@qB;I(QQ>mxALlcmjkBQCjDY%lpRTrHi_) z5PD&|t9useD$g((RUvbA{Gy=CX_|VTzF1y~(TR>H_*7Kx?z7LuZx-+}%9`6Hu+Qr^v)Pk>~p>b^IWYi+f76z=Qo9y73N|t0xubv~i|9?%eXk`7+Ok z-h+}-7m@AHAJ&o0tXFMx38LUVolW5{$WNZ`neh0&E#E3?`8%Y|i68AZ2r`satNS0g z??*T2d>Tt%xvz$#jkN0USLF>~5oB(Z?)Ip3hOsx>eDy~yvt>7gsff?}As%Cv{c~bM z)i&glx{Es#5qxKi_V=@pxt|eX#?dHS5sqhC}K?7 zvA?O)eM|u#kDN9~zmFD@^W^#;^H|wS`Fl8X4I=fUFX2CLhxW!2PzkfnDva)RYvev% zGWV+_St40tRvFzu4Sd4|XS(TMwdUe!QJHYv$Qnqr{Q3oTG0ryhROe~NE8vWhYHV>-k!V6T!U*C3IUkcaSAaT zmVy!k&|o(#{*1PM5a6`M7Y!TI>w~uM!}gOYr2h3QfvSf;yp9hwT!B4Gd{oXE>4>ef z;uEaW_hHS8uk{@xIMq>;bA;@yZk8%-R=EGU`t*~#7UO;wX=oezLPVRj2ab3-?wl=J zgQ~)@zPqc8e29sD&AjsiL(z9yvLLR_vN&O`qr5yeWAvF_6c#T|sKejG7TK?sZ^4Qv z^E3cMw}wD) zQ4x=Vx6VoORY;_$38ul!Y*>92;`K1xI*n|n1NSOo7)+BZC#=ibv$*v$Z{aJm9dG9HV7+9o>9sk_ffpWGNYhX* zpaBoUNrE%4Qh(a;+$l*>SVRN6%H1eHt*Qk)cWTx0&m=?hN&N&6O}e=awET5I7~L90 z;dwR8U|tUUA#6KJqL72&FF6^~tSY?171qtrYJ(O0L9f-2OKu?Mm$dQ?5iQ| zP6gvIb-~!e85jXYy_Ff_+}T5Eyo-yI=M3pTILCUZ5@dS zVRz62Ls-AGZwB}vX&9*-ka$@ zN?DK!<_so97L}g8mFUl0+}8>9cpHI`T~fo6VWk-LHxUq}?E_8$my4I=p!Ncr#hHf) zh?8WznP~oC*v(smagDhpb9&4d1DQ{9?1vhtVTQ52sDS-h-2QvYP1EcQW*s>EnAWfu>$qxmxHE(zI;?lvx|;~X$5#AylS!#q zb?lg<{G@`q*|CHL{1&zo&k}T�fu`Ew;gHi#05EoMz3gdqK+JZZ5B zo=%U)=~itP`WkmjWb9XhLK@W1Kq5VG;0VUM>JAW>{6n<&j}UJqZdWQM{sqCu0m7ReybO|yGT7oBM;4<-6COyiR>X{qX zHJ~fimad}-KG#6JrzmVHGP9M<)XQ*_r>rW3LX_g5w=LhcE%TapTtBD70WrUAs5q97 zp#5O-aIl_S*04P^o|c=HI-d2Wek>i9>55x+YMsXph`-TMy)^%k0b3m7EA zC4=g9jNg|t82AK$#b|B4Fj1bX^CfvWw_v46-h^3HD!&wuEKYoasKG7+m&`%NWop+E z$8{NUPNIEf&JJW>Jo*W7%;tqZcp;%Eubd=cS{$t4$5-@@Su9i~CaPf_wy-_MqdN?V3Xa2l zQ14Q@J-;YzVEPrKBN{{dQo*&Hf-+V59GrOvn&>ZO^|ftMysC@5V-hJo$lab9H=|`p zN9bOtX$ou3ej5cv;B!FxY}{{5+z>52J5wO*Sfhf?%lvfdE>JmNo>dg#8(y3whb=Ld z=ED(;_7!wN&03M+N6D=4#jZX%R!xbRf1?H8c#QQ=J<~$6QY>Rx(ufk-&^5Jm=(%Z& zy0L5>#IWoTm=&YaudJ{Z#r%DcMO8%dExmXdBn`@70(172sJG_Lj>o+0=PIvPHLzcX zR3$gyXyw2)8rVYJ%9N@~YUrk?R~p!P$7fzQYN!gJj+WA|Eku7Ju+OYhFor2GcNN6> zfvljWl!Z776lo3WuhNb2PmQT72ztL(*Gn921r-6a3^iX6WvTu!cZH@iV`Ty%dxy6? z=~1~<$u~0w)C#4vk(DR=f zn|Z1Ov!BtTf>n{aob%FKx&H{*v_aEC(OCMS& zUB>H(5+P$uP7JNhPAd4Q`}@tU0!)syP#m0N2F~g|?VE|xvW5N1=3fN|e$CKgP{h|y ziY_NJSjx#c#^(Tl1W$)dVFHrL5`< zq3^I*LAf=(Qe#P}=A0^Tjdxy(Y<=3B!SB?Dg_y#&1}DF$PnBh>zVo#W2g1r$&5zF> z9`3WL!`5@FPMQWwRmPTl!{wo*L%;38=%7w|2Jhs#UL;{$zg%h7?q^#EVhiiat_dMM zs0KHA5tmp2$ohD}2aS%C-j)RrFyarp!{1K5&zcd?x!&As<6TJ0DT9zw>7yZiwpldQ zr2QKH`m+Yqu~wB6QQnY8d}2iDDrFv;WZw%yPQe(-xfcgh1<2qoSAjMwsD%|I1l$1L ze3*g--clzMv~sw-?2V<0I*a0hsJ4D|Gp=b;F|YU`8c%~Yi}M|xjuv9?K8lSlkA$z{ zOO0_le}BKmuW{vRE1N|{dybiz6oryMaByu?L&rnr+=JJ1M6);J8MmmZseiDv^D_9i z;ooH7U-%YQAV#aY{!J|Xl7JTRDO-^gj(Qm=!A6w6GaX4u&}|;~>h0V{RfFnE-_$+W zSIH0WY6&N$=U>}Z3?PYp2NwQL0(f5cp1EmDERD}fThZsP)W~q)vj$QMa$CP2=)Zd; z6o1{BtEQ%cv`);ABcAhV07JOD7v<}hgz`Vg5)C7>(}@}?i4=GQRCkm(bxE0dE1%KV z1!lr5-c`s+1;1zn9_p^-VlB>rHmmh?%E#20e)~{Q)J6(A1Q4?dE)G~l(lJjes$fj7 zPf+(J!w}nRD)v@zBX$>n25Lu{#Tyr@KnY0c+$!%JEMg@Oy>~UFHkriB%9ypy*I7|# zyzzGaWIt{w+2TA$mZi8rNd1t0b!qJH3%sATvZF&qhYrp-lQpO+6@gS_g_&3EqM4-GFKmH$t9M^%D+lv>3?sm%(`B=i?w0!~HY=Aa>hu!KUp%EN4{33gA2X1p30{S97m6zhhKl4= zEYO#;Dao(DRmviU(InhtWWnSw1}m@n4cnPY!W$NBPa^tu++*3=PUuAz_YL;Bgv{os z@C9`t<}t^X(R7T?L#;rI)86e4=|(LZm&$X9Mxh0S8gpE|KUQUV97Iqnq)XYtPjm1c z`X5wVUw26)%D?}rr@BGo<(|X%-nNM53uw{6(LIlfFo==o2c1 z6(hBkHYa0)bE(uYC~8CeWJ#lCs;j@13}RxXh#v(Bl}pwZqVCBRfEKKoMGA0nNzXLihtjY`cU!OUY3vD? z85_ek9e!3wT75sCH>bMj=gzb96P0o*mT10(-`n^Ly&5rY|ts_RM&#VGWHtN59iBs_E?c*Hei#?vHi-rJC>}IDEtJU19Vre zS7iLg0_;gIEAN1*BnZ$=p*FAfEhBwGrdPf7MnWsji9pioPLuTyvb=STo^}2@$J6*z z?I=7)hk^U2Q5WLrw8hS)qDOYsJ;ZfWroqC2JM!yA);#J*`+BH_1bblnisLy1o9on2 zTkh*n@M0aF`~Ik&N8`}IZ3-$ZY4?nrL&v`IRV_C|cp3Mn?n&LL3|&6QAJjz9x3%sY zD{M?ocn+sZK5k}exkW~cL6V-Fi*-Yzk-R;G7TXoH>=U)SF*EmSt+@ z$tz`5%5eNgrj)ZB>c+%Ge)iU~L~n1pZ;CMs*lRqmmQqsxbFV>t>+Ss047AvGJ>7XS z^a)nVq~V%n(3)NfT}dC+gmSDLLh5+g92R4Pa=2Lc;kc?!!sTX$nzNS+E6;cRWAQb9 zt8dyZJ#VonFKDqn_4k!4UYcADKt!T}@^|--x?XIvSvAYu zUbS5^sp@J;FmJikAqZoy3^ucZcQMjg?xJXhL0wZf@@po9^m(Nqq%@K>;(m;6RujU6 zk;)n4RJVa-Uk-ZD@@q`lqAo$Nly<6~t|%8G)t)_H2IMkQ8$wFZSG5fA2w%S7NA}!1 zz{Xm7e9TrghF(Q%H{`oJ6OW@fTVlP`Z>4!`nsx=luCP)J*jiKTmWh`6<;f|vP3gXx ztM8GjGm^p}#BL}_fU^SgGOQKnnbndpxMC{l8>`afj54-EN;jH~dJDX*5t5jvtj@)S zwMj`5maw?sgxTKr9#R1*IE^YFv)2(SC_W6ZdE}KbmrYh{R)t!9q_4{Ux}vF$X2<-w z5~AB&V#k6Okk3@FKB?iEa+GTw_BTQ{{`4qmTVF@0k~j&44KJI?Ek&!!)NHl2YP3N; z#I!jK{4MUnYl$FMSm6z2`z)GbqtsJ4clE4!@)}ua-|eW%5mSq|;;YoR)5yyKjU$o) z$sQcL#XaDdWlyv#+;r`-{LbuJly$lWZ0MEtab)4@o1Z5us@7v2EMhw$FlD@XFN=3h~OLxQ~#_tT$(^vo_oh z%yOIoo7OGPo=9KX;9$!q&wG?$i>XU^hycF!T{)sgr0lnLybT<b)V@bG~aDKE3YLMhsQPHl}bp zM8wu~58kk)p%)FSVOMwCma#&PN0MD-nrneZrSjv}fxhdEn*#uG0aVD1Gd1 z_=|JD{GycjCh+3Iuao=x&z|)|)J`3wLo}Cjt)Jv-?`3b-4m416T6JulDXO}Wdu3Z_78YjQ3MJ72 zzf>moMh6~PxEBsAmCZk_>v0yZ3+neyBCHyu>OmV&FnvQF}V;l#|)WrnDK;6XCnpX!r=bV==Jbm2C? zJj(AnbsUrxfeKn90}LRTi4}QuI49poc7=2v?{njaZ$Fp=A0XMd$%eeT7N^fjX(*Gm(T>iy#C9lHZlK{> z%HFd}E1b)Tw!$kSj(Of?SSw^+hkjz=dn3R>VNK*Ut--)muEPD>UqEOyrY`-hpdpkc z4|V`2bBIT4!1j@0w!Wtu_I0Q%9qRN7P(6;+^rw@d7q2 zD87!iE&nWl(PP8Kfg=&!WUQt?J7`m;-%5? zSLnn+!Dl&(QV-|*t=6$xHvpe)fKWCaypex~T2Q%ugAegeqI7X&pgLa*0dzQ?Uz2IN z)bf0(2xO$i=*)aWqawP%aFj)nd-}?ZNc~SpSD zK}REB-pFTaEwszXxhZ<5s73uX*gff2Z#|a*F+;#}U7bAdrt6n6j<7!&zv|Bn3u9|* zm=NOhlmw@oT9+=RxyMII ztr3AZDz%`qBX*pAr^FrsZDRcAT0~m=j!OH0JIhy_(+{nBHB%mb3;3F@hk?)y2nDUEiMp)CMj`Ke+!6(~zS7^tQ;spc)a2Ay0??MpW=l|KT zRm=|s=#gYTOP8Y;{`hM5yr`-!n2bZS1#yy}tl2szD6*5MQ3|jelwY|&l)u2D z&dWj3SEJ}#^-g=B27_1&@=kPr*U~HiL3ko^VI|y6w9QRz&*9JNv&b1QAdE!cPSvVl0y6vN?F zfZ!;)lAu-t$EUtI4+%hCbFr^GDfjOt6L+Z(_aA4@4xc+V zItR*NUN~j?w-z}lp9e|He3SLAu3zUBzhcUkCXe+bb@3KOHI2)$w@O^dmR2HGLQb|| zQNb>-s(Z~*XKTBTt$Ni95vIr;e1*r>C-J7gXri$Qlc_+mq58sbmb05=HNQxU;Ph6IZO>B3dgfXxp`Vo z!@qvpCgQM+m!&@61UG*kzR8|e_9_c`8Aq(7#P~oFpDtP1JD!GCcRDZ~4^d=Pl*w^G z-_`w3{Bk1s8|EY9+Z8$WJ$)$TNfHkwSU^d4UDY)*`HtwDwBte{B@BBE_K2OOglD}o zHiO`>cxtgj_*2pso}hyMpg4kpHCJm{Y&#_f zVm5lW8I-uF)xY-H(Msl&xon4vRor(bP!YC+K{a%}vE z-g6$Yb@50oNcEt8m~vKtl7Ltw)8$S`rj~Gz^;%|dri6jGaWS(c;1i=2ZlaEr`B^%= zD0;h3G#RWK$Of1;7+`&+GxNEB2a9;32Xs6tNwmAzChG-h1gCO|tpxwo?4VVZH94!D ziBK^rFJCBO`_W|4x40wv$bTw!kC~y90eD zuBEKb2AMwQoxZE}ybO7Cgjcjd97&Zq0ZF;c$PInEBJI>ZM~SYTs3{)bE3q+jEejmf zt;Qo?hPPszZ)+lvEmWHlJ^}^N6AiHz4`M6&NLTm_ci@LJ$`JOg(Z5msf4bv^SQ?7bd+qJ%T>bIgM1M2VLx}6>lU&VK_@3WuUTN z;ybg&6-w2647%NKYLK|USNdI75boAuC}*ra?Jw5w(yyo0QA_j+o4%bDlS{*LVWEbBLY8uB^)M10_J^X~nZSva4DYYU^3x6c;Sf<`Z|wnq;o?$7dhqY}JXk81RMT0=?Lr8=g5$ zox13Y$+#Ro%o`N~Lcvh`d6I@4-Fs-5f)#lIOtdHNxC7_Kt0jxWjgLsUaD(fc#o(R# zIXK!>cVIK}hT!QVT{`NSZ)(8)2$wN;Eu%az$LMNtu7=5o;%5e(pxUhYYRC`~9nbeY zk|VHh=03bTF2wnq_vrx%_f3Gw>9lkX+*t5>>24)AI|IJ3U9(0+uKkCebENz3NZU7e zU?!3A_5Buu%hw<4)KMdhP(d3s@P$iq?A9!Z zyGGmW1t2k+zmV9-3mTiM;!0>!dWAVl?AMsMQt9v&HyMkPWS)N=A?zXKUBlAC3>x_M zk|eKp*h4ggGJE>mClyWh5T=ShueVw4wJ2(Ta&;P695hwJQ`8o-GVgeoW^Mj$VP_I6 z5<{KSkMGKDuaGHSJ=X{h(AoUa&*$~8rwn`vz~I?1RIoUDjmLcK+qyXc3x}t&BTCbX z1QjPIQQurCvgCiNpP%)DFhk88to_j{4){w>QUc8QVKGLwD@iW2$b%nnzI6Z+q@GNo z&V&)lUEu3qi2`E(^%WWNfTXs+R1BF@vx;TMxZMtBwKu2RL3i3HD_rH66(Lurb?&#j z%hN+f1s!6xTWryalYMM*Wp{uiB*ct?1xW_OBM`(8fX?2J|K@PZ=VR?gqcBnO3)cu8 z`_F^+AH1Pwq&;i^{L8&p7`Dy~MjrKqo2tJDBzi#$_-u3_Y=Ktn95W+xSZ8{R~^*zYtzFS}YOL|=f2m$?_pu&+; z(D8PrRmKs=|L^t?@Py>W#jOVJ{&>W7xfpzf# zxaKqGc;*=69`_^3z9;(mC4jZ+`N}H{{b4`nD^swvG%BN%G3n=$N#8ghZl&-3Zl%H4HaijXp(>QMi2QwJ`fnc&ul=%~&-wJPvXuS_^gD}~= zTcuvk0!%6lf6-i*B{N+yXQ@W7yY=C_Oi28y?drv&f79C@bHcXK4}>vIH8GrwCLs`ATuF z^If4y%e~o4=4UYv*AYJ-CI37dZTC7#`T>gbbJ=KH@jIUo0y(t){5!?`iwyq52Y+D0 z{x|5#yfw0TQ)`Kk#G&Z8xo3g#&p#hx0NrH#ydyJ4jkrsL%0p8MNalG-|k3$&`#$=@qXy_Q?F1l(~GO4xul=&Bnd31d?Dku@60uxnSUjjjC2Hy~CWl<7fa?6pSkQ7-8xI zphrd4)fKFvZs~uo>OYGd8Tu&iG%g{9&u+2axf?)Ua%Nlif>t*wxsq@ImRfyN146#I>zIOW5H&st$W8ad%eW=Px1e72zaw)7$;Gx0~@9R13SN8PWo3V`l%>~*8o-e8dC!82Iw*ae?Z&V5(=4j;BwhTY;O|ZNy8A^%fv+_2dUA5jcy>ZH9h9 z3ABO)xG>gqzE$ous&z>r;R_VPqu{v0pG(7A0TAy?6*C^lD}7>0vdr{Svbd(EUkWr& zWYtFZmwJ8ME7Isl0P*kFn8*H!jJ(p@7ZJb=$%{>**JSTg%KAE5OtP&iG~otqz7f$d zU7>iNGy0S*Qr+XO^w}JgCbrEkI(dlc-~H5og48$Ub#niDl14eG^k~?`p63zoo@8%m z7IJis5BTPp-#REE%ipM-qDIRL%4lyA8z{gurW(?%-ieZ zMgS0X+ndYjHpQ*SH)|qJ6OpyR?$GoOj^7UAJ0GLAP4_5Bcq&L6ai~Z3vKse}n@nHT zY%a`biv22>Fto`HsHY|oe}7ZU#21s(oL3-TFWon#vnBfTSV5*hK!j@4&s}wz`HhGt zZI1bv+BOepy}9nqFG1V%kO?CtrWa)>*?wE~JZ_z#Q{&sP%i<~>Q$C2}$-ZH1kIlh4 z02MNt@V?u7x2+7PDK{2$GLd2- zMarNYs*KXqIw0Gq2p7Aliu#rHPuTnCgHzI@dx_ZcqtqzHC~%xQ_q#8#u5BAh)XV0- z??dn*^wISjObHA#p**%C0ktf+YkRBgeq(h0eJMdli2i~8*^)<8*%%e`O{_wbP6-+j z<-t?Ron+!ZyOf{Ch{Fny1gvO0(Upo;Yc2a2u@fFKzc9mlm>s$n{7tq;nXgD7uWW;< z0M`_p5xv3azpJp$u}YBOuec#2dD!On8>f^d7jX$Y8)c#v8W({@#;#Y#8Zs2JrZ>a~ z;VF#CX=dCODX=lZWT{Y?kiwqnCHp{8IH<9tBrNjZm(vxBd^iNKPR1x5@}9eL7&E>&UI%@={Rk!mC&?}XpqvzDr+P2f*)1p;Kz6uAoTAZ z)H+!5+Dwut>U?wl7g+eahsri7MOjY%yY%T&+ri;DT&vDwdD}&EWtfw0Y9&$$o-7m* zM%vpWkt9z`9M*^ml6_oaR35iZM8U|Yp*w*ZWCT&M^Z^}7z@>#vlgjf{w{XI-DeW@_ z_}JF`B}!89b5wsA^+olGhSAe{i6e;b4HCVDXFBCv$mxJVCKRHT zBg==I!*7!|8HFwC@S9}31!W*1iZo6;056@KTvmPQW98@0Dyi|UA%b8|f#M*AG4wgC zwdQG?3DsLbd<~yO5&Gfs#KBlHFV}o45E>O!#MbH(a62nN9sFtasnj{Ode0V%(zMe3 zv&p(2t@z^_PC<#x$uB#GEvcgEyT!{@ecgS3vkS zoy9JnH7z>enlMuBymrk)w+tp&YF^F0a!OLvt;B{PWSJpsH4~9ZZ8d&VEyJGb%5BVD zJF_J(2#cK260H%yey9vio*mh$!OdymO1ii(DMI2;3`ekS&Sb-vH4p0$ z*74Z*B(dI4PZyB-IyADg3N=7%_r(G33j#!m+0v2kvzsH^PI(BK)Gs{FX0+bX0KPQ& zP@d-;A%%Au>$#A|AzaRoLU^sUe0k!?d67;^;95D|>F72iXP&u}t3X7uQ3*5(mvV0? zIMh9jYPzn7D9QPR$2ZU<&SRJIOFPGc3nI?9{}Wc6S=c926G+zIDjNbE!McYHRM~?`q_{YAT!Y1!tmT|EqGa^Fr==}60VAd4<|lF zeuS@V7%s5Qr3KB!X>IEI2uX()0JOu$kEKq9{RN+Ka*z^HJ|_nW^lXECk3F%oMYvLS zjikNA2Bd?7z_A5=ob~Tu(!A!Idm5N{11-SH?It1x1bns;&7d_VD4Uat)SZRxd6>>y z3Hlr`##LYUOxbBz=6d5+i_pmwX6GtHIma8Nf;C`>j^AOth=9=a`pQGjcs2!1SiPWW zI`%SF4uo&uvlDzSfyH;(+yjQQlS&chDAgM$;{A%3t8mcTqNTyGERItsZ&@(F5_pBQ zL<)c{{y=iTP~TQ?!o5fp{g;;_(q=P=>}% z%hF5Vu>LRg)`(-$!sPNWSwzfj>?YHrMwaihlfoD?W3#LOBS}jA#wz~dULs;dznQK^ zP=jRJeknI=w8Q!J5~pF)<@09dcheX%DUGPbk0XfEU0pJt?)`>XtGA;WX(t3^z&lQ zqV2qM=AcV9gTu*tgx^BZ&ii0SsSgg0;Px8Pt__~y$p_`G-B%2Xe5H)TBIp)^*}^YE ze&+U}K8zX})oncIXE#~hen(TrUMSC+d5C?Nk45HN0Q51RKK(u4%CrIC1eLY5xO0ga zuXNpA8Q%J2ykyj=%g&I!Lvl%wxs%k5iNUB|5m5lKirTsmKj%K4Ge46j80I>&Pgn~| zB)hFeo{OxBs5OsX= zzxrobhN35Ob!%~(g}m~9R+|-3vFq2cQ3;JDh*=^wDRoR4Gt)kI4SWq|3gIee`YxnX;gJUT--d(u%H+*AeL>725>IT7 zipa_g0#1IV^O37Jh+f1`D-62dV_RsSk~g0cpw`s&*Yv+`LV&_uI%vU!L4pRTx#ePZ zR{BRwk8L$LB-ZRW1rR7jhvNQ;oTsyoQ>+N+NNQQjaqXB06uiMVKi-8eyq8f{Z1bxf z(L@f-r`=aeUHhn4W^|-nX?jIfK&92D7&y8;`3S&Q8=G=)`b$xX%DQeyUUuTNG!NNL zO#Q%f6?h)wBt<<{XU1CQond9vY46wVqNWVW2vZ=EyS~J;STY)Im$(IznxOL{dy7}+ zK@34i%O21|w$M2zvA%e+ar3WGvOSOlmBO_d3i@JDSxcxscHW@Y{Cp_dis}C&bP+$U zXn*VMee7l1O2oQ+y*3kV2F)AZ9$U9%Hw|f>6MxOK=kv_50A#W2l*<%!xKhMEj)YGftvnG z3|g36yzN#54uVhRY0BFj>h*AZ#jQlkQnK`lSGx(`aEs#TSk*9w!CH((sU%-_Sr8M# zU2~f>=k+qxaDcm;=533z9IPw1zHH_9y6&U0!QA>B4+_wo3fssE!JA<9=&n*attsDn zy37Kud2zTB?Hr3z1wHLbR|Gu}Tqp_b=gz&8>-i*ZtFF~mJ-{HnZ01q}O)GG8mI$xy z%j!o%>&PBt5_|=ZtYubsX{KmSaTWN*ISXcCU_o zdd%p~!ZtkdJ&w1b5W{8dR}1mU+~SRTIG#11d6=aWa{9T#z|qn({OR@CI&SPnt9rN5l+xJ`Z`$+*VRdd?0y;*l`%&P{DPOMO=a}M2xV<5iVwP6i`-Fe0 zZp|?>m(Gif5mZfVH&ZuW7L-0H<63FZzie3wDH}IWV5HoTHtdUEk$SPF=28>i!$O2b z^;Y)m9kS#)R`TlRYya5IvV+Cg-4O!1XIAooLZ^M9qmreOQ?8W)oSnTEYOC*`{qMp5 ze}7%a@rM>oYV0&94or^jMI9S7d1hs$EZs8*MXUiDImcmWsIb-(&o9#tpUhr>NbYF# zt;q~RG08;|%)TGnw6Rc_zi0~OpGaBKm@20dZ-%xV)|hcA56Vynp>|nq&w>eKf#WAj z68wb@JjCV-nbomN>bMi!e$xa>*Z~RII(3YtQH!qjkBc^j7zAq#@ykRlG1$v@;U5n z=0U9Ebyp~rO1=D!nHU~K-*N#sX+oWs^BMM5(c|C7Ye_yl_(3|sh3T%ptkV06D?))h zmKn-55Zo18@+RF1k^b~UHYcl;doX08PNK!0f>RzPuurQ^tw&2_LbC2H5}=pn!L;I| zBS5vp6WJ4P-;6UOi?+OcWa--X_h8gNjq(qFv)Lmt~w{2y883jrs%m z=o7E`I6UkiIvx(U<_}txZ&E6BDdOfA-K7O<1-}$|-C=6Sj@8M%+{jrO&2#HV4ds}W z;*G!x6)4+5Kc1R2#$>M3V8Ab#Ue^O)F>_ROmak+TJHBh;k9FRMlqXh*z98{L5r_9= z_$P}{BgcJVQ6^Yt)vi+)8V@>^1D(dMTF@JwRI#B%mxokBLX`TR-N#m26%tP4b7g$m zBo=(ZS1Th$c*`ARr8;KPZBn`-U2@Zd#|R86>~@^+A43Gn5|5)llonHIg}gg1aaKX#qQux$!39dSdqSR zjH_U=e6g99n5VfjZIh^EI_El7nrcFYk^c<)L*C`BMU{CVg^2;~BgQ!FlR`pVo%?M# zi#(65W-zmmAT^IbmNdhh=FPL2Iumsp`S9+Z0qd0~>7tdhh5#>gewYJ{E@L$lSs?cm zo|^_-VH0Q9tyu`se);%kY_APf!eFv|qKi8Q(K-ao3M|N2ZxjgK)f{~Ujo#CNNRqTC zM9}X!ld$7y=QwYnd>5oxRE}0g2t8`?nMdpgVxNBYRE(BJ)*j z&T=n7ET)`%H}{@ep$RaK?xYHqZX4$q2HA9>&&qVeLFzb1wU5|4BLWg1oFQfBjo#Gp zsDCj2hVQ;AVc?^l)_N+z|L}>K?j$5N|&gJl~*g|Jq1i@R<(kQ zuQRyGF!uxp#LHyirrfn30eS{I?Nhs8kqEHY#D|~NXw1VRt@y2Z_n@ZmWRCCKAszDh z3H9~quFi@pJgjsv(E*|!MEx%!CWhW;iJtbwhbm4(z~y%%<~*#G81>yVBZn%IP)K9a zOOUv;!sj_k&${?L7)$~|gWl{)NxT+bJtEI*yHfk>&1)?G=_ETUXRX@J5=e;h3mlqy z4zZD*xiqBAhr{2yC^t2lwqo)^UaR=N~>E;MV zQgAF}8aw)2E?r#*p+Sv7n!W_fwR*+sB~p|S6#X}}{ZGP5$H9#Hr;&8nub{zub6R)- z4EgG@BB9@&w>r{9_yNr(plJY(623S;EFe{$_F?D4V4-}!3(WG%D#}v~Q|4(r$?@eb zk$LH6B+R_2O`KB7Ujl8rYnJO6OM^LVUUuEw6tksewdVQ(CB72Q$5G!xa(wkJT{>9a z@tKhjLs*u<15MVIE~t-sh91!vYetzf8n#})vohi(#Yo1(C1O%|XI-lEF?DZ-E&}uD z#{X3UaYBzIXn^<;A6A-K<5p+)X`qvKQav7)cVlez0BPVe1Wne3-Z@Z$do~{QQM#7aK)CA<*7~HBs$yGvlsN_ zR}Q`lp_=(>!A^oD%eU7c(Y)~f;r8aW%1e%n*yJ^UyihWfc>T7BKb@1Wk~45RgKnkz z|L!WLej}y(#QbQw`KY+vdCfC3YLbZ_a-^!dE_zFtcL6kEX0A(QsYeU{^a)luy}##~ z{a_^?J!o1NPx=PzW@EvK87@N?+ zR&_^lRa($wwW;V43yxh2&arf$Bwf~0*0)w=yAvd}~ za>o-j2hUq32`WJ8d2!upZnP3f&NcBw1hf*G|OgLwD;`Y!d^ zL@@u5p9PzX*~VyJlH~o}Ane>6_wgI3dA4=1@*K~cXxClusG`8ohEE_RbgRG|-T%V( z4zE5&D{s!Ydhb7uh<|sw{7WdmS)IERk!sC?6Cl4kVRHD2?T&|mHs9i;NLyTx8e!18 zTZJmf+rr;DE`1XAcsw2P<#-#w%dG_ex93n~ZHp1(`%6OWDGLSSIivqlBmXDbp_lL| zov%{<>TDV8_R;uwmgPH^&e!c19)~REzG%RoAoF!o2sCSze$mEv<@rHwIwAes!5Yzs z*@iZO3~%`sb;!`_Q84$OD6u4 z^pUB1Ee!G^)E$0X`xrjl==<$xkG#9S6?*f}A`*4WHHBqtf6Q*SbN8KC@Q$PeHT0jb zy(>K;aoagBgH!8KD@3!`!FP)LWA@wq)(wBCz?`q(@kjP+upj$!cE%K>2(7l*s>4b6*K-O%m*wp<{-qoBj@p!;KkpZo==w(djS>suV`vTA@{62hNNj`?n2G94|`(9crWa@2?Wu1_Z`J4gW^5Ln^ z;KjtF2|Wrvyu&TBuTPhOX%O4+{5z6{-Ah1ErW1GOceMSizUcP0K}huS_dHN-_c$S# zls+G+L0arK3g6@r3%8ZrmLpQ(F6`qn zqh$MIstWlVBQ7M3ZC-bSJ2`%SceMw;0PZ5Pipk#zKr*6EM|%JvA@Ra3@Q)YHmW{&i z>dAQf?fs}9xD~aOkL=*T`+ zAqbHQTPCT!`x^?~E|}jP52YpOE515~Pz8kl-5(+a5eIHbbn{HH4NX6HUQ{?8cM1`5 z=FzabyRUJu>uJB-S1x6_JJHnl`3;aq;dcOAf#*Mo(z(DkZQi(*rXL5;@wO8$gVo;B*X7~8u&0} zf1ekjbuF5d?pnUl`v^Z=6qvvgz?-}3TylGRdpl!z3!T3I!x;5XpIu$lW4FTp%SJ)t zANhur%`Hbs%DY@&8(A*8E%^9lI$pG4GOkyORP`u56U45DE9VJT2<@! zWMws4b6B5V-i;q|McSxrl|j!*4TU6GL)VLW_ez%E51To6s^@ZP^7eaKJ=ca;c6W{# z>7O3;R7Koh4=*kpW2(ZlpI_hviMTmS$bhAKecPUVmb?Xoan6+aD^N9fG?5Yhd58wu z7kvva;{*>Q-fGvXFzlcIipiSzmwIxF6mPe4Ys`k?e|IF`eyTTEIc~F_(071(y6SU z;Iq4JW-9$in|}v9nPl>`%Zf0iG_{KW1;A?pnLqqxYm=lNZmjeP4+-DqKOpyY?q8aT z&h}fq1E?Jk>03~r%yaH1>x&&?Yx?b0KFN$DY|acfD#Qn}uun91!vK}wYDaI~YuBM? zpK{V}m5$Mwcpk#8GY~CTMyFZ5yIOnT{`=eN`&eijC=&EK?86&Y_X6E>wc-d}uq~8M&BR7H5@vVj~ zLA|0AnKHD6$_(iPC3ZU1>JyPrw5Mbi@5*%#X#0)dJYV5X=t92{Pkop2T~DAbOgBFq zEJXjqWR+(U5bo7}2y<29(RBpXu^||P2DYu|23$ap37KL6tnuQ@WwfNJGo4i%!A3Jb zBiQWo`9kJtt_-<$Ag?BB%Mdv$_YD-&ac2m|>mp3C%w#n$=B%3$r({Fm1aHx^f8kl2 zmH4EYrK^@|ld1OB*KW3TwQG*wa-w(CK<8v~n$ijp8S6~iqkMQwAFH`08^rTNDqpqftu?$+s4Cy9Wl6msF+2l#jdjQP$c@|w*=^WQ^smSDO_in)QBOs+~?OMI! ztL3=ve1cBSToGir5dGD}&SbN8=!4_p@?G4v%X^}vi=d%u=&&v*qqDTzu_!KU_M}B+ zmS8{q;uGwPqz?WTT}neS*&e$+w|Wlj7d1g-OJre--s)GvDX;3|2wy7$xzxe3eWsGN zXuJ^XnJNM+E!8$$tu!V zRI(*Tu;rvF{8Zik1C_4FqX+W$u4kvt+nsu)^?V?&;#K-9H0+r%$BeLkW>v2G-+LWO zj6$&g=5#ND{<6k>aOy2aK4|i4KR>+cV~Hqo+aJ%}4HJssd&cJ>JFZXq!19i$TGG>v z9j6>+;uHV|NJosRiV8UK)+>b~de&tO@A2abh?_Uavpq{oDD8@ba@>!5PM?Lp_hjfK zj71~sYw$J;&M#N*Z+8q0&aZ`ONY@C^0J^N9d!=b;x?=iBX?;fG)6oJ%PEty~rRCPf zD+jT~{UBnRKQyHIP#=d)DQ~@D zi0aAKEx}h+8c+2p&hD0Q{=%TxU~Tv-mt2FAm$$QQ#y)J}`NGAoe4cRuVt;+F^P=&V zU=N)N;(lipqbX>4Y8!A1QVg8jA`ZA)IJeB3pSw(Ak#(br&7TDy61s#ilCr5+U zxma4K3p_hKnLgAo4jsITkGBOXr};eKPRjs902jW-7~|{9&`cdx6(LU2xLBUw0D7e&}7yHCxF z85zp%Z4u!sR~}<0C@8-08Di@3MWUSv>TLgZ8$ICl>kJOThX|~2XcXOLAzo~^z&^CS zJCn~s`;^6YT@plV3SPNi@@o6WV$)1K=L?WLI_1Po>KUYa4ny zh=3Y5oGxTTp-=P+a+VAnuOjXwo}W(Eg}n9Uibwr$Cf(8|xzM&F*#V!y82DSb`VASH z{cW_TM@PQ*8CCu1bwf`3ORYQzySL5NB#Cg+8w@SD?^z!sIppdn*J+WID#jA?p}brv zf{sjiJQl7)F^HsOdptT3$8!u+7F$)U+u}f)Q?bk zqAiicWiwvKiARw%kmdJwAJ<*yJef|7(A>62Ex-L+pK+^ui-n&CT$&a?5bFa_)jLNC z{(!Sic_H-!>@wD4jOl+$5?2lihk-kOf96E|Xr7Ww7^|bD9S{80Jppdpi@>Mk24EFB z8K}q&QdqAkvb%rS_wqok{Srg#b!r-(IF_@)-`H&|=cZ1~{*^RhBw(K-_Eu23t76=1 zSuUj4rPZI6l-D?4rTk9qW>m(PRBaafm7ASDL5^Y8;z<+X>v(!v2za@=LMma)=w4{n z{;5Gt+L%Nj^}DAHH6db(ec{qZFiAEF(U`1e76C#r!Z3-mvMiu$CXXD2-7je6f2zY; zf^+n6<>p7DtI=%yerl^+I=U~&KRf^X_DlY^&&gJcU?$qZ5G7nq0b#zh=<)3r9 zJmlhTjrGRwR#$^rKWc7P7AQZ-KlziPR2t8j`gjSpes)DlbINMSfI#gfWd4#6BDudzvY#cp%w24q{IC=MFzYMv?Vk>$N%ZpV? zYMK;ZJ6~9D_-m}kXU6v?F;D(mdEkgbzC^74$MQx%rRzN0OF_Vz_P&7iM;(PSby}8} z->FFFxEZq(CXUX~T>Bfq-DVjWm{DmIosZV_g9VfE=$H;e%vmV>9{&g%?<_XDI(F${ z^|@r6huWX3-4r!L^0g*j#?VxvgUT$MftpuSR_XFZvyO1gQ%IU{Xe!GOcN_X3-6SEk z=x=|r9Uazm*Rc9rlvh>=hbQbrFLRZ{(2+z&JNn=ir7FR@v~g3DI&=xmIh_F zNP24WE|~CKIv|M?9Z}eejFB7PS$N_Rx)AI@Y|Fi+Tb}892;}6dts}o8ijsr`wx>NfW ziQNe9sYd3wi>QH1+6Sfmki8=AcG;x@vUh z(Wl4%8TuQGTmd@t3({{%XNf3hl^d*-F`4%3Q4)bUl=atY?9zNI`;1fWo(;N430&nf zh|{s=@nF8mw;Fch&k*jYqsOxj(Qe4uMI3a_qVYPtT=~MSG>GRb5U-+0mk}gV)(C21 z(fk6fIM0cW{dfvZd(;0B&eY^Q6vy8Tb&+Wn#R-=waye`aU z%9Bjc<%mo(|EOtr+b-Ej=JqVZt>9?mgS$;8iEy^eW#OPb3Jav43o&*CYdv+(XqP34 z`OxHIHWlLQNoyEG*r%yOCBk0_=?%lFX?{E%<~<&Evn)VdGA-@aLy; zjNcOhznGXWJ2cKP-;K!&4YQBjpely&#gN zfhT|69EKv^@ZNk6A{oA}c~bCLx2G<1TP313e*oqdilqJ(x>&-_0D9icbI_N^_)Xv& z9)4@9VD4bCC$6|>rkVkIrg)jkR5gaMTJg)oiy#DC&o!K$z~`mFEbbnSNEzJ4A6MZT z$#7Qv$fesN8I)18uGz3v!8x(}C!Q!7!er5<++!nrlhyau0pzMgWvXN&l-=)Ui>DAH zsETgB0wWaNTlUOeoc z-Xd|meNnygC}-0Dmh1f?lz(g7)W{m^VWtnu@Z1kFk78)i*t2%pWu(=~04>ERYT8TB z0A74dC-qTm&pgQW!FI10@MF&beUuPOmKg7nrS7t-BUh&>6v^uHS2lo<5{L0g*9P98 zRiKTsGU)3V@TLWL&9vv~h*%|UoV{2u!-Q%Z%n}YT(Xa_RN_bkNHnc9naM6pmAxzN z#6VxK2Ob&71PW#y{5pHQXL_uJVu_FPgR2qGzfAZw@f*l@}hcT z)v{rs(sIa>yr4zJK^)*<83Sx2GjlbfFI9ZDw76jg$)#~Xgt(40kw@#5hqz9C^e`;W zo^O{ChT~9XYASCz>;F3KZ2zMAR4N+Wd4UwbnsLga)6HxGE3(db4ib8A!JKvK2dsO# z5;zrNmPF;Ek|3ptr+%Ql($>&)1tX-y(4e;k?(&SHmPh#m~7fCX`VCL{k^}dk)Kfm zOmu#}JGF;rZ#IBsl!8qAL)XRL_&4c*?(WQsl(*gSLTWTXdNCh_>yN56Z!$iHd({^0 zuvBfEOTpVAMtmc_%@wqUS$zra-XRh7rrt-fMFk=^7)Nk2-iSA4I=^molW~iFe>KQEG#-#xPH++QKJB-0_pM zfHNJ%*jPr9vf^0}(3f5Fi%7{Zk0(vQ<11^YLzhY!B2v1fmBAVEX9V|g{68#Qigu|S zjbIaXWy~*D`?bjZ#h;kcTHvw;KV360KsT~Q_FPdL0tyUkt3}zHCRXe=<_zF&GcJ3{ zO(M(fOG-`CD)G>GI&5v8N~%L+_t8jC>CF=Pq?jBa2p}p7pOqMta=%~pyR7drQbLpA zRV#zIZKKCQdG-*<)EI3BC<#IlbtOLf(k>omaZX(VFusMjyvU^nlNr}lB+C6Mr&la6d1A~szg14Qs**?}Klm~S| zuXWGR2(kbD#Bb4liIE}~^v#`)1V&&V9B;|VblZ%|fV#t=uT{eF2yh<7u}qY5Jmu%T z0>}wN(FP+ab`f77cT_1fO2Htl0{1FLLk)rkaR-jFEFT=mT(R@M)*-^hMCjfT?$m_< zQJub+OH1^XCJHc3nZbJwEA@VEX^B`Sp{$Sz0s=b#>NI69lreL2lXUi5tv{xV;JY-> zm5snq6b*M#;ZW`vooyr%Nl1c{*;7bLAGt8e?fe;~N`JQ}MBt!_jAl)_BJ%}n=C95E zB$z(dbc;B-*LWNtoUB9z7-B1uWAZ88e#yQw;jIVz98j;MJVR(OPB3bLi@rph)isoO z$Rtr_O?5)X>%N{pEo29M^<<1(c)~LL8aL;NN$l>t0usXfJWMyvgjZ#Wpmd|*09$!G z0{eN)Gh#(;#;iB%d(QeQ(X>94tyRBT(sIMRX}P$222P|~`0D>Wz+Qh8a<5-Fj@!#~ z&sU)&g@X3p?e-h{o9YDg` z$-+!*1NXDzEW83GdPm4ae8MOUpHpb+05XT(St!q-i!kf{%DeJ==~MHoLdLH)e)NEU zG-X##_$^4oCl=EMwKuosJU<9!{iOnYol@6rJaoOf0-9ml=;g;CR!oiNQk;Tu-Ohw? z!?g<1B{a(3?apTHH8XU6I;18_2w%!+VR$G|5C&E9l^kCo9{+zd4^^SW`XzhSYtNSBLl?+`9r5Awm&>aJt z!mbniMEkbnZZ5!EU@W#bK)b%X>^m#$wwlM5B~kKQ%g&^3MbM95s@8~dgXG6^;f&_W zf!0802Av|qc`_{w)4vkYBG0p@)SrCuw0tGY$EX}lAeGqgBEL}1d^x8PB~Jjm7&s8r z1?^RMT^wDR*px8Z)T%&@2(aWlwxP?alxnDH3{$7#+;XBUctxg7z%#5ABSu;IR|K|* zoOhn$NEK^}CQ^Yz@sovX=+vU;8i5uUg%CB?RPOXh;(JnJnlG6Bxe5HVYL!r>zt$S@ zJQOCit7boIs83$<`J@{ydIHzFs0Ybc&QRqufMPAFt7(|e9L4(GOxJBJif(bGk0cEX znap1 z{=8xsRHRQz^o2EMAbOl4a&+w<0bJO;^8}4B!FNiYy?ZPFNCfYm5`Q=+`ZuBf7S z^#E-Wp;|Go(WpL=kmyh%aI$Ioh>v98J0#Zh^UWURwrKy$oM@CIBokLd;=+iVbEwC+ z(5-(>GDIcu#D8<;mXj0j@>=4 zNl|y=WFCGnDV6t0b+6^725CVP zHaOx@H)(=R8$P4O$ud=^Ls3|SW7G2{jO*p-d@E{ZdR%ZwF=X{r4{yM2xDUyC6%uim zKV8?)Np5Oo8qSxOv3q^_X73l025FGHX4; z@^5b^a2tLre*Og#;;sMEX3@i>CYei+wv`6{?+*Jd)o6&IJ0r z0h}F&*SuwTY)}6*y9=EAS}bS|`~`Ay$PgCbcqB<-gvSl9yDHZPAJylqJmY*iHto!C zB9#W5po8YSJZxPrGZ*$Azg`+vjElpND0P+r4oY|RfMs1Hp;!#lAt+H!VpH*P_jC(? zboX;y)}}Zf8|}D-oa&AUvd=1N>6WX86PP5 z_$TuA^%imrGj}dO{k+?!UlHM_6CXaRZ|%>_j=QOvONd)&g3tKkHSj7jQR^9;q<=}S zdaIrOmh<}^e2{BxCWr@~?c@LTHJ+&8E1bOZ4|?gZmX&OwD)4>h@zGtzg-Lo*OO7qX z&FR7qdb%P$26w@}P>E6qrW!iv0tYBT!QPl!41q7?hLr}Bg1ye)OR*6NzH$Prk_Rnl z?t6Z9%4=`Kj}n?AQyY4M3DHpb+j4O!de(l_Gur-ZaQ(yf^S_DEwCn#6q4gF&zbEMY z1}YcrfI6d$bK`gRA?on(5|+yoZHLw22}bfYH4PfG;@*T^j|5a*(D&_h9xfw%-2&z~ z=SIa9VJUN6u&ePNRNXM!(>amfNiMb*&2~VPKCHL7&+>?`5!RFRtV(!Cj;5X2ZDoN( zFulzHBq%JgHBB7Hn%#HUP;m)*@RZ)SVg=)svw+|Qzwf&t+kN87wq z)%f}u#ke+_qC5DCh$o>q$MYqM{zR4C+(isl&%-ruM#BeKs(wkA^)B%k1SO_lbEXbV=nhXZ70jHbDXryM!7#I- zMRg&opa;Z&v4t$dBu0xv5))aom4z2{Yh0-xC@+RUJ&C3B6ioLe6Q9~m!ClL^xKygq zI9qH9!D{GhO;kEaAQ07xGpND)w#!Hzm8BG9aDnygTAy%?@e6)mr)o=X{DkO)&z_#J zJgEgDyyx?%(pKB-^F7eDFrxl~EBM#(^$SJD!~#RD^mp{fo>$bWVo#< zLT>^B(o3kJM5LF1QiAl~?eo0*?!LRv?(h5aJC5)DF9#*}ea&^vTr=mKGZU6NFZ`-3 z1e{KZZFX7?iajO{qZ7uUjtavv06Ku^TcJ?@M`DyQzB=R07rV$AGhK%jAAmq)2b*ZV1<7LK3_aS*-RZhXKzcDnQ9!(eV@WnS z|2ZnxHYy6}JaB_-ts-TmHG6F5P3&n0ev}uZ^+WFwZBD&0_OepSC{U?+Xw5TG)#ap| z*CMAQC3hckBj!WFtmTqfa!H;llg<5%Y$jn1yY>wq?TA7@dcMo7-+J^Fwbcko6OUBy zYP%N(oXDqHCMyik*ISlb@4-QY5~8|S3W@Tix9jQT)LrQtCglw~JBx&7*ef2#dP#p8 z0rE2Jhi;l*5T9b;vHa`FY>W$kr^0OYBjk1aO3eD@$rM%g8yy|^*=s*oVnw=GqcokoD>WUV+&4Z=%@p!K3|dAJ;$7XZ8_9G zUuucKQ3RibQ&KsCoeuk%&)%Egi`d+C306uK^E``+<$Zl?rHb|5{rz_JX8NZv)3~Fu z^W*ci;NzCFmf+*d`1*(F?7yV_kniPrX4Ao0 z>_Y91)OjfT@SPz$kw*4LrFQ>q`niVJ(Aw9cm#$n#-&y6NA9{ON;cYBu45dO$e14;1 zZj1y^)RZBfNeZ7jl{-7U>FKikVwxuWPNH*5f z2lOLzr)k>5((ZF{OL)|MMMsXI4{kr;)@KgdQR)5gPEnJ$!agE8V7YE}6yj-sg>{Dl zGZQG%Mzvi6Pv!VJ%ufi+@gAI2zb5?Qh5q%?HSVScJSMbjP&KQ%@vbt&*j`z!*{sGo z8buFseyhumFkeZadJ9Z=H>E0F7E#1FlQ)4UYd9edBIm}c825y(gIO5@x;&Jh&eOiap;2r1y5vmtoC_SKxbF zwHu|!OhzUxigmgI(%;^I%j5EjU@zqq;YYbP2PS@dJljDV#oK|$ZA}zw00L}>#Wt#k zZaIo)%O*@8t`4JD4wNR&;; zY~0xqZP{hb&(O$oUT+lAv-t$F$KH-AjsC&LCtyDx^{$s8t_y@rs=X;Vu>kR@go$Gez*q6vFb5mp*ymY>@bZFo_Xp zJVr9x6>&zREBW#rur(f=IUX2w$>SYb+}ZLm?)ZDEON;k;yE=kHB;Rc|kM6Q8u6la* zAZSOmOjEX9!4!S)9~5O0=kK~3x*R&*vMl6#l;$rW zb2e~{yD2&=>l^!)bIUTl(wmsu@dd;!vMF}!NdcubNgKW0?DFfp=chC& z!be=+P)F7hzJx9PIUiM3)t2tTK!WG#(EeIx#x=8pT0;%EACmaj3g-JHKa2*4`AjxD z5>&mmKi~9@zVK&Nc=++kReG@E2-?GbZL&@Tk8B_}Of^OzkVzwUsaa55AThZkPLlZt zAvobjy{zQoQP z_qV)G;Lbc9InO)NE<2ag!3FQBp}0JcJ{7k_Zwg3!E3EQHZEX9nJD~7$W%6Ji56-12 zD><@GvX*?JuuxbfOVoyK%TeH@S~zN%kK7p1=+PnWxXo8JoAHT`5$qoQxEm?7)829z z<&v`^XD9D27gwpGjhL+gF;p8iSuvNz-$kg%et5e9FUfK>bkTESVJ$V>O`J4{&5o4= z*zbnyx~1!*AYZV0KNfP$hVW@BQd8L8WI0twLni+o{kZhe8G#}w1EFrz#S5#Z+WBl# z3Un+p3%KLJMN#FX!{s?(s@uwjE36>T|Mm5w3i)HJ)N)0HkDZ?NlED>*#VJ-TKex$| z9_FAu)Rm;;tS&`Oe^V2Z*_eys@t^Ja@+s~O8bxJ@8!{A4#Te$RJ-0U%0ourmb3mka zzZQ?{lh$R&>v2ED_n|%mGPJjMYB0dD)U-DsTpem7WLao!dFZi0)sg5;w z+UG+Xrl1w2mZ675y~-44eHBEidRR_Bi==f#kp2D#p0$Wiu8w70uF4)p+;jPbksD2W zY>x>F(~g|~^P2c+B;~W(p`a*;ZJw%nYSZKJIuWQNtMzo&tlq3tkFJo1j_L8TJ&X|M zeb%vvlW5to4Kv6*Y&*|tUnn~nSe~mhmT`plU|de(&|mQfEeoKy^#k!7(7ntg$Yvo5r0^7o=cv@?ANxLY&f>+KInhW zq0hj4Udp&`T(LUrn(#o!E`Nc=XkEbu#{Hqy~Qfct2cip{a)+GZXx?6I|* z66Xumcy~j!=UA<#JbFW=z$67sVz`!{HNLCm2lDI3{KQ_VYYuNrI(ka&Q~fImUyEJ1 zAB{EX+ANHe+jg;6X|%KN^Q$9HPIz3XHbQkE3%NYh`?{QE{ZCqJf_g^nP3aXFd9;j} z*Sg2m99kUn=H^HZMWA7v!Sg)0p{|LC2zZnIF%!d+8MDCMVp6qh%vHc(U8K4))TlU# zIe2-ER=U9U_PFWAx;WDIv&{|j>S(^lrsja5qRbSn4&m-MW{~pLEJ-PTFT}%K+IUjG z7PKRKplyc%LDNS@sV)ojPw_`NXzhwQ;hJ#EJFD7*;qbOfN34xrG#mQyBGOYQ4=w67 z?C&(IQ>G(3F)GOIF}0Cjaa=!kVMwYpAFyaH}_^r`Poh(ulO&YJe zLAO`?ODtq)54TMmQ=a$N7VoeO3dFW0pXN+kk9jmIhV33m-l{Vqv`cI^TV?H)3ka1G z!wQkZjfWxkCW-(Ary5}(^J_s(mK)J4l|R3E@$^B zX|Fbsvb=vgC%;|IKhL7z4gc+I$L%XCBWS3^V|93wRmbJ-FAapuTOt7^9rhEDjIn0R zdXd2MnzP<=u8FwId-Ns+ub9Bz-EDA^LELjG$tw7SMPyI&!D;aJP!TvMo;}m68&;iG zx6prHVcc>`tEp}v-&6OVw->=gBs+7(kBCTy;c@bY#+{~#7kvYHiQ#R`!>Cg%gZB8uW;E|O5d~wPgXky z=b5U~gNXAgU(+Fz;|^`SvfLcp0ZZR|p<@ZZH$~R>J_nb7ioKLS*zkM;o&Su2IS^lwyVF-# zMjy<>7jV>fc-;3yi^dBTgtJfaUA}H=hj9XpL&s)IDzti%s|qsCN4Fz(EDV||ztf`O!9Kc7mU^X4uqj61{8E(b%a&$#Rzi;?iWuIGbN8 z5zz)5%%22D%C8n}Xjl^TnC-De13o_Ph#fseh`;8k!>-DWiR^o^B}lWc$cYB{=||Sg z?<&-4Um#7id6TJ(rmf|w23`;emFNXJ%{`6IY5%X0-%`R%CHO8&UEN6}H%ZZI6w+^H zJ!DT^akx3&08d{TxHes!1~96AL@wF@{&M2QL|^3=?s?sBj_FH**Zs5QqUQp{^#F`q zU)b*jbv5t$SGbqcGR?(oNY5Wt@@Ev`DtEIsA5m|)eWM6dENZ4M1w+_-mu%VGB~*^3 z=HJ~CcYPF2mT1;bGLt)q_i`YFEQyLlg$$&Q6yIj7GvfA{7J*uy*!g^MyhagV%B*_N z?aLbTbP@Y8ztSuZ!hYMAEz@lk=Cv5Rq%U^XvtKiud)Zo2BupEp)y*ccQsHzLDpWaY zb=R=GS*0Qs@nfx|i7XSbutX;+zSNU^>2NikIT3E}@6D4O!p6>x81zZLkz}|#bD=qZ zVgJ=+=BIkw+oDcz9fo?EY;Jztp3)~mn|h4YCnb%kNDa4U3RP(!4POMb>`>GoXr}59@z+fe*Wtm>UG^PIHXl+pQDdPzGcWEj zG{BJ}59Xu{IoH3wo~_a^;d_icDbEo4vuihlzQh5^v~}}<97vP1=wikV9qYVyx7OSf z3mdmTPa&c)c0PTCPxkJ!j~jTC;rJp{oV$l7c5!2LyWhJ*z}deH+bjkeiFJ?mS>Md7 zLDbn0PJ^QdmQ?_%5KnJ5rCq9-B`y{c&nh}2JfL(xMo$PnVbJOgL!C^k95}$+@|wqY zW?d4X(Vunh4>7u13s73_Y~D!G!SdDbhi;#K>Zj5D{HE85ySG$!SN?ipkpbqN)^)0- zP)eax!(S`j!+CmYI4jU6>nxEK0 z$38)?_I&;xbk9mUrI0=RFKQKc{Tqa->q**t=Cx^hNOOjedp5WK9+RC2+tcEp^I>-{ zuW#R;>&aMs@+qbh1Jf8_=@c<&Z>hbYQeWkVU`GFyrGs?}>BJ*CX+D~MZiKzMxxYwK z4MISVd+-@TtRTKvw&Hzhih(SH0QXmM5l2!jA*yfR)hm%k^%l{W-@T$wseIM0y#L^K zzQt7hePyVxQDT<8Qi_&UBQMNL)&EB=)j9Tl9c(5 zSmmmz+ixzE^GVe{@!Xbrm^+PqQtF#N;{Q;kv{c)stC{FzXJPP1p3acRW<2=*)s5YF z)J&b`0k8yuG2kU@V#Ze|m~>8;xA6tKsuQ;q9pze@^vXKQ?m(ry(5b`DT47#F@g|t@ zo`@$3;dBDdqpGj^nFl?YL0_)_5kvX8dCuSq)%aYlk-FxBzQ$@|L%9V_7t~Wczz_Q7 zRLm^slc!(Z8)A>`VUKn6YHr9Ot;4cy0PX8lpnO#)b1r9~^`MD~Gu{0HvzA1!_CW%( z6lQe4sJPU&Y9D20#|o=HWPPp{`-VLbL?l9eIgA5}r=w)m9&S6Q8k;Bj!`^F z`-aiXfb>?qS~D-#Ms@%p*d6A`NvTgS{PNSf6+Dav`|jO?U_XpzdOYTh>U$mj?4Fvo z18pz->6!eo8#XR%F_IxWrrZhUbtWO|ROUtlkvQh#2t^j#yI`xQAA>iWk7#=`PGN=_jEFkYrp<)NbBFa^fEQ^ zBS9)WfllJ6c4&6eL$N?{0s@lm$%A66avCHi_B`x1sy8c+%0~vP3m(Zr8gQT2;A~}* zF!kby)a;H2i=V1+>4+@r)%H2V=3)0lMeI5gsft9QPqDizZD z;W9P72t{_W7cv*Bbb_ zNt7q`>F)Kt)WDo=b#Vs@MONAlE9(-}WJY%*hk`OHiNN9OXwk$w_GawuPoZHOJH88) zBGCP+Q)SjF3={$E&O-Kr<>^dVZ(j|HmifwtZuQBx5d{FLsjP}<3(X}26^3h%pPfii z_~nxtWg;fpvs^Ll<+3`ZAK>YyG;uOL$1IuJ0*;GF@`TBmAbSN~-|AQNvm9R5`<-t` zHgD-7KMcj|m5pt9KPb_!q&+r;obkqI**7ei&`vNES`-@%{%BMAix2V3%Qp{81F#n_ zM+@P_ua0bKO;3xsE=|4PM7OkuzzE11&!%(ZbA`L8=3;SgbxMs;tEJjQV+e*x*jsz2 zWUNH`EUk*fbGyDnqNI`?gb&YbeEK%LnO$kotyXNmIe5k&cV=nVB?66-aGawo^Jdrc zE7FIpa}p_P=9;Z(`D$tJgAGaP67FMyB|VXb)en^**&QNy-r9ii4EKjkd&(Rx-xH_E zdZI1ICDYD;5RKL|_$)!R1cK(uzH5P$27I?`nq z6;>_eq&03k=!fRyeRV^_cx0q?`S(PXNXz}<>FW+z`e5FMW>Gzs zg>(k5Zj{X^@3BDa^ypX7Ow_B}#;V6&Wc|E$(9csUydvz!B6)t$wmX+1{+~s zrI8z$+W(;60{Cl#4loNjS_?wCqnEIKR?>+X|DVK_y-ZR$j!#tOb z);sxjFcirAK!0mtva_ww6zaIoSu0F8V zF4#yGhtbpse2TJKPxbZ@$e8WCXh$;bJO;@zfW?{;^)ZV6=>tP zqD0-X7)Fr)H~(|wl6y3#!9YS{S4Pmh_7ksFlg;c!NDVycYkSl@+mJH%)ob-Z)}|)8 zeuA2tV7F0 z$=Xx|8sO0H_#?02MY;IuHh;r)AJFx=(JQVUmyfMHr(f@?KwjPLo}DiKLZ-MB3ygGk z^OmN@h-MkDWS`)=cMw(9y2DQF^nBPx1&PhNtC=9G{f zEFx7`HUx3EnAMTPnKM8%-elC^Ms&4=)udS&!Ev{C2rfk3Na*m^VZ9;bWau5=Dv z%H~qm(l-l|@_1NLmBILQenfX}@@o+F`Wi@2(D3YZ`}6@2Y#C7T*A!V{mr*(KO_eD` zVLiv}&4ACVja*xMjgMISlm{nglI}!Xo9>O8ApnkVT6?w{txe&#WCu|OYAO&uk=@aF zz}As9Grx1AepRrCCHLfN_KTv+MscN{+fHh@WZgRW7%$Z$R><_y_s_~QS6xVb8E(Y2 zlU^jO8MHq8a;kf!xF%eCowDjcPMw;vR99vLMp(aQEO%;NY5SwGbK1DIW;kHp-9@or zQ)BH2s;!w>N$RGB=VOzeQteJ-C120E$H>C7k??(>zu88mp<|ExWroD79xntOe^?4i z7m~K1Bn{^0I*)5fbI5vgbR|TuAwzrd!fNWQ-$Nu6^{lKkxl7FDb9+ zOc3bB5vAVeETVEgUL*k}suR)x^&2M?h#$Uz(JwNoWZW+Fm*wWss;yZv(m-WYw0D8BUi%s>#L6LAhqg-JD4LVbX;f1@xsuZfTP+cc zD%7W=puWu`GvP9o!o#9S*Y#E{;e{#Bs#TUb zVynyZS9*y}o2`1wJ4G)-mNQ9G*VcIyUdMKShBIBVGQ8?0XNtCm=S`T%+?l^_&6VU8 zX?+`8b9-zXzqsZuMBsiVJbUG6exxbu5nVrx=kxtl4NNpxk26;|Ipk079gw{IVsq!t z;lL$mAP=}Ktl&2H<9=qNx7G)97lnd)ifIzR1dz-nzEFKsYHDsDt$a_oQVXRw>J#Uz ztu6E`j$dO!M2ONJJ3KYoUVMm_8DPy`;V8Q1T-!tGT(RjsN=EM`+`PX}fjV$d=d&F& zceu18^Q*nOwhjMZcJkLNIw2q1)lKfl$TH07wgm;HF6n+4Fbnv&9J?f;AN1vfJn6d= z$(&7B{>&W}tL%vrse`Z)R`~&*OQK|)j=P^w0t&NYPPUf-nAY!h?rkAI{jcrOK{mZ| z!=w06MS^k3EB8OLxBq^bm#HZ)@|?K%wA>VW*M_E(HC2 z+;G{}uLyH2?ySAoJfLB+86Eyt*#mE3CvnM%r+&rUH6YpvAH+x7&lC+?hS|8uST zKwd6+z0ir6^vZ#3d&r2AtyR8Fx8U{=)sol4FF` z2HUJL2$D|=`;X82>vi^#?ny-#h3scF4&?W z?M~c(Fa!Uk5JR0LqlC>Cs5b_P`u5jMFsx(K#u8pdsgjQE)tyn(2YhA~ELHve8dD9` zUFO?jNcHwbWzqJ46xKgOWdALfm(_|7g@8VYw0La{Qhm{^YoH1+0F%LcX*E-xU*t!Z zm&N2U&Az1|;lDkx*gG%pdtyvV^jJpF4f~tH-+mmHzw80{)b=&43GY<@ZdV>Q+{;p9 z))+UpZ`cRblINVJ4*Cavgt2epJaD%3g_v3=j+j-H5FiW7~8?B6ywj9K=~I2$L~7H z4Y3$1zduqzkzSiMxoH9b1aheWcaVaSP~fh_7lLik6%PFN!IhM<3BQ>bakDXnI>^ti z=G9hth0fNXvkBmOJ{=P(wv7J#f%-4d|L=NE%|0|=4eNvpkDv?s&GKG4+d=%7KV+9m zwp9D#)5(_WXik$N?;U$>tg)G5^p1m@Tp!KPj1-;+oF#kWggxKZ=*(vyvFn{j7f=+P z%+x1TE?)%7SW7tnlfC`7ZWVI=db8qyNjz|)OH9<+1ah26o*wM!k(p;hGH~TIO?TG0$b-0S-h z@I4{(tbLoakuubkXTZ6%!w$s#6$$vw=Xj~d@<9nRt`{5nI;tW%r#7L&3KxSi)5hSn zE&GsP8&^ntpPwR1$Eub?wPH#bMW0aaO-q35^rt{j&%^zSKn`;OMvzK)jh?P5u9`lu zH$FB0Z{HZO!hFhiqTy131F@1RHGoo&#s4d}_ zC-J|vvgI1YIXfAEyh<7t0pkhVGAnA6VkWjI_BSZnnXzoow`qvyD+-t^pZBVTj(jS- z{}%}Vk1Kn*dC7Tg$X8=f8Ze$Q?@dL&5MTonJ0GlSK49JCGlMp|qM7F!%-0RM|9%Vq z`&#;4XaD$!|NZITn}k0p!~aV1@7#tz3TnuPM8|U-Tj35(^`z+f<8S_S?0`5-V;Xf{ zJqwvWxIJFr4vBW{p{(eFq*WAIp0_TnP-NB@Mw0^6*9`#UD5v{}OB}csdar*_g!)xA zJJ#=$5YLt)ht(Cr49V8p6aT@u0sEQ2AqaOi;?z@uRd>%ekf$Y!xvYJ=f0OtcgRp*Z$J9Y z4*n-yZbvc;NZ>V20Lp6Jl)YmyNw}rVA0{>U$~}!Jb_v7F2z5V7bj%jq@_wV zEdeIsu8Qr?`mcJ>owic_?X3g6!kvVN;nNOO)_kUZ*i8iojd(cUwV9CmB;;J0Lz>Dz zE%hNCN%9-y!wtYcj+x34!Bacd0ORUCbkZCe-Z4ET{o6|$I5u}KG#y<7Yx)g+tGLY8 z0GE2&$F|Yn7I;zc9}O2ZyQ`|MXZsxMNWQ+y%-TikQFOxrQ{l<1b6t2_p!k23Fz3Bka-=f8C2Uc6@Q=61^}_2fe=>=a^a=@+5yB@Z zOXFOUS-_Fkv5ua*m^)0J(6sT9#BqU6H3$69Tim1iF*ZC|JblBzr;lhpi&0|2sGhQl zS>Nut09~$Vp^!{~)2HzFPT&8D z+4+-k`6re8hsFHwzx~73{qbo2KP{-NOBVnoUe|uq<%P4xZiWH(mr;e6YC|U1O(%&< z&dlOQ#ZNM)>w(zHY(C-&KqE7l$Pe0wza3e{=5Eg@@PM6hj=dJxk}zth)e6B{EGqW)7-%dk;wwJC7+at0c0(5x<|)teeNyEHMRMrf;7jTj#lt(K|nF z1gc7cJ|17aWfTF7gZPWlA2PZGtj`v>i}!KftDT!fy{9@l2DMJm$;zfg_FJ$S7LxlD zx2K!nf!`(#W$n6h0!w+O6E}v@)0<;OXgG4kkwWS)e;;k4JSh3bM3^k z+4cL=tet8-4|<}euR@F`O2@NyQP{t~iz=Ul-87Y*Vk|ed8g< zhVHND-kJA8k4TQm-4Qecf$6@r#0XkqMlUW+6R43Y`Hr|I5oHE_z8`b&TF*5?ikP>uFyk#@OIWoJ#&)4vih~)HUW;+qln98B=#$EMpUOZ; zuX8P`SR36Fi*&2Y9)Ba!v_AuQk*McT8opJ5JMqu5F`Jnz$VDNYHckCWZ8 z`ji~uHP80to`4d-DpS=fnE*)zo}Eb%tMekvjR7(m)4}DdOk4{NWn|e)ERFLab#oO% zy5ACY(;aDfO`Eo#5s$k}92nEDBXFCn(=X1UXU9XaEqx&OOzkY!nk7X;QQQaag$C;NHMot|XH?E#F{p;O^jO z5Y!ZuG6D@+A2{Au6#|?`6Go-?>1dk;a?jD3Dsq6AmElyxAu zvcd-z%?0a&+dDfFh0lWY_6EkJN_+i&EFJ=!j!}WvXN0waJNvQ$6{y_5c%EqM3$Yz} zsys1oo}wa0&@M#?!s=GFuq;;`hxEqrOQj5Z_%lki86yW4oew1yBM?=&_w*Yrn|b#r zZ|2yDO9tauXZ^1|1`il%>+*GQ*z1AfZ2KbL?QKdtZf9puMeHY*?y{vCM)CSQqh<;? z5gSuozsjRq-MInY-t)5;(BlG4lb-R_t+f;*2#E^RZ$T0k->xv|tE{DvQPfiCT|tSz zD@t8oi)>0+E~dJ!Ou?R|Z1dg5GTV8luRJiZ*a8oLs4kTTc9256;0&wKv94gR7OMa8 z_F1Ta%=Z90^Cedv11WxGutwBkzpEB|d=!4`v@7pKiTrUSI5a3yfgmt*P+0$Xc*oDY zCRUs^9Hg=LMX_le-uD)4EW*51cak^FTWtYD1zle>5Xt>UBa9kp+TUb#fXgXw#E9F{ zicXC<2{+Yz28t%l)H%N3lgwf>9^DJs$Kc`eAZ9-*zdh7 zPEMV@Va9j6eXe#Aw7|GaHDlvuR~!)}W6gcc2RAk=<{7I*dmM0|hiH1c7(QZI*tT8T zGMW8SbZO5v|JB+M(Vs1|Gt~txRr=I{$CwQ8u>));huNznB@ z@(>-zDKzYPoXx9oDkrCXEyppp-htCCXx;!x!|aR8N=+WrCy6?bVmEAx5vIopK*nK0 z_VjMuMN5MQ@1G~(K|_smokez`e`|)eUCe5FSXHXmDlln4Tx%axid%Tfe#6*jY%a*9 z9T;dEQ(!SUw&Lt(ncCXLc+6M)TJsN6Y|17UD}= zJlj`6OqfmH4DG_j`@+Y%w?v=Un+os=GplleO0;m+!)R;UiL+-D-TJybSqE4u1OnnZ zzD|m={qZC$Mq~4d4eyU#stC7OL}L;q7pLcI#zgo#UyH`OK2k$c0Zwe56N1jOo*%n( zW!1Oh$Jk1^5Sy^-TF)c-XH?=12m3tprxdH zsp^M?t{bg36JQz`{#u(xeZr%8+~8B^`=?V?#R9Std$PTXWoeVld*xn3{c^l5~1<$F7C^%cYpiI-m~b{Z7-O&<5fgdY3kQhTWR_j!B{iy>;zzlh>7K9aZ(A-{O@Z*d zjvP}>7LZolV2<;BsjF4p>qH+ydfBSUM0)&CJ>?P=KM72QvA?rcG zQ4{M_*p@Vul`{||=0O4~wO5iwF-aq@;%&w=lHa@t9XoYA$Q6U1n#GY*#dG3)m6C<9 z?`pl)xn9rsBo=GHYNX{I0LwNH3qv?G?PO(gEm02Jz>nU<&W~IQr0TFSwmxHI8=Lzn z{7$^B0M*GUFM$R{mhE!7dbk@Sc}8U-=zFv*p0ISF9mwOca+C^DF)VB7#y$VM#JB%v z)MJSJUm2pO$oA{aA+Tz7lldtWE$@LHw9KW9h}LLV-p%Z|=Cp$6#;e84UK}Q=Be5G2 zBdvE+>&T@x!cr2z{HKyBGOZm^Cb`9C5z4umqz*z3<{@y#WwsNTTQ9a1r42z}gxgX2-k(t`<;PVG}NI zm&P0zP~XB=SBNlEcDlWWntWjB`eBMrVtp%>W016XrO@uWMLc)oHWg?q8;vY(+H3#|c%L@(Ws)eUHwo;`% zs+0v>$9=?5dNG@D_0#mwEh^-CHQ~r0mfM83lxLJqQ1IYlHYlpzob;$dn-FLQJ2_cSHy8e2O++Su*a($YYT>X_C8w-Pwz8jiZ zOrwk{u0@HF^`zA{@fKo2RX&H}?spoEQRYM_4(iYEmynJg6gB^h2T_mm25RQGr2 z(Z#Z|iuVa$l!hkMf0}>O4bXLfQrnS7XRwf#O!k?lJ(W2R0#dVrd2)3eKDnI{#o-Q3Y*8mc z2p7PcYl>no_w(Dp=*z1A5~uFw4teSKXMDD{;>vCD=dFvYk~m-oKFbt!3ojcVoB^J0SqGlPmF7gdpFns?dr_e5>3SP4&+t2#yPX4q(s}Xz(}=8m zNhRp!Ypt_i%LEKFM{}8nzaiN`OFjZ^eGJ6OaAe09Gegdpu3`568r!4UALvq!v3nG85XKU9}hclqAU zN-)7TJULwHHT<)z?L034P!CYKBfs}NyP;z3-4lg~_i@sLX*GQ!_*m=Ay#D10C+u9| z3#mY`=%!;c2$kiO4^L#%y~BLhpA+_V)e7=fo9qOGtU*DrBj-Q15CneoTFKndmjog* zxawn(&zPO&@Qm1{$BLMp@_8VxrE{kZzbsYvJ(hZ-{pj7lyrKS_?%KYLcXtVU3zk%c zvbEezdb%sm8w!gpDh}Styt`U|(ej-Kq1a;lX9ouQ5&oyi5#nxev2da>9Xg!*m)d|K zzxS6bsm*90(|kPM_5GrC_uw_%=HCLanh4?oe2SUV*6{eN!>A1>*@zLLL!M|AD+eH` z2Up#{30EknGzlANjJo`mJhGmawoFC6M}u58_#cm6ciSJ`4;$0mM(@Xx}D-*NQ30_1dw`KHF0r4 zk9B2Sy-i zO{G%rM^niy{dZ-fPi9g8pel$gyoE)&p0vNEgG#|g=1S3^Qh;)F`U9!kHDXKeS~B^3 zSHx`($J2_2Y5x)m-nmc&tFAVVb#3xn7y!~$=xUHR1Q8v=-LQ)q>c~{fSj=lebI2E{hCnUePBvLEVgqj)?@&Q1eoS>y^ zKETtTID(FzjG=W~98SR~cw_6hff+mFXRQU8mm-P|M5k_y?7zf*yZdI5WkxqxlyGIa$vK!5WotWbM-Kfm9ChbpUSa zpKrbxUewvSqqa7+@{|vtKSG@wY}e1U{4NO>OL5Lx0Oiw2E%zAt?R_`7!BBLfR@D~Z zdz3+ubSbfhd>yZwAmBv)9E!!Te>tFmZ%o2A4?>6}9cf7Ws#7(+!*TBr6d>re0^%63 zwJF9dkT~U{A9?Y+1HatXQveiAUpf#5f_^qJznk(DCILydQrVML=gIvZ?c=l30s?kh zUV1=%bWTrYOio$Fn>q@IFu+MAexEUX6Np3@0#3RfA0$=3EXSG6dK3j`-|c$vX9Czu zf-Jz9fbMwi82dwx&PSoYhMW~w1yAD}-tpIM(PAkuD60wdQo{KLbev7Rjub&pGMn$~ z92?KOD&yDtadVF2ARyigZwsmqyK5Xp9!LK8`|jh%+qbNL(HJq3VQ1bO&L;W64V1Br zE8>c2;GVnu&#`DNQ^6?+o_GJ6f7L66yB)EOAI`o2L?sS$}qOg>Vrg!_A zRXr)AIKX{EF7L0u^s&JMrci(cf>kuJ}G~=Dw#|!mR8K2hiw5+~8(SvaREA z9)S7Ka@5rayzknsot}6>d*VbA2B;u)z58jxul?-x)+%QVMi(yC|2ZOiSbXy*m%nJ- z)WN?&m=teZ?YG;^Y8w|q_)5*t=3UdI%0si4*mPbz*Y|PQhXzm*IC5f6ZVd!f2>A(8 zDffjC1t?mMi07A!`>xIz$v#TVE7u|6A>4zOiH9Aga8tu{zg5qPtK<3C#+Deja|n)L z_{x-?*>fV%*QR$N#<_iIH6rl~R{iGZ6mf#JKT2rlRO;_K*WF zJ=fpwe2;C3tsP{$`sJ16Wm;}AdYuzPNsnwgPw?k?n7z<6NRY^|q1BP~50^W#OE`Md zzR&$HPCOA;YAkg7kQ6oj-g!u}hug4#_PBf)9oIT}nLE8YLke7H#fBQun(t0|v#5xB zYa(Wi1BT3jAboNkapiR#xMOr|+g#ZFU!GPTnGt)lxV}pa_Z!Qy8ZIp)zk8g-klJ6D z@^}9W)2d(|+TVrg!W`v8Gq=gUHGZ?q>3VQ*9qD9~JDesV|WaJz{sRo8}{DtJ=hE&Fb)c!=Bdjp!Ml`Z1T0h-Mt?l z@tf&K?02V)WeVPQ;8ZI(6E$A1i=DCZvvV}Pgk?v<-3-i5tdPj`WP_#*3n8m0- zvn$j0TgB`>`*rQF`pM3$thT`KZ%hY&cFcTkYgZK$>n{@$M6^rYWT|)R6;@eqWXs--W%lS;N(Zr zKK9~;k6VJYDo`1;z38%!LC3}`J-2(z_AasfGS{}}^HytaqHqq_SWGs?;%#5T3BcSy^>Cn_u7`*;7H^Di@1zz!E$)$-*F z_0-XNtt7MlPv?>8&GtSWN|#cc1{xCbjN8A{D3TNF$t~c0=x*Kk=J<#@%r$wOnBJo} z<~Yqquae7>W-Rj5B7bbsh0mssn6+_t{BX;id)uMAyhrs28Wj7C!E@Xfovt$R`#Ma|KoyssZ!AI(kr5hrI&>?NC-*0D~X|N2F zjZv4+zp0TK6svPR$(BuI4e!VcCeCukQ2UE7P5$}a<(!;nx=?K7y?*c#oqeTFCcHSd zGkWHvS*`J_+U!`=SU5Zv^=&fY#;wV*uA$Q81A3^|pP&OjaX=?5g3eW?dr>$^(JOHf z^cN3G`@1_=O>Cbw&wpY6zVe7}Gx!=_H10(}#lgvM>nGHUm=T-n&Q$XMcqu>8CSPuQ1%&7W(Ynp7QF2dN+w3pS`_w z*<>SVdasCQPMx|qSN@>b<7cBu9SR@6w!WEl$L zJv-8yJ180XFyQT9Mb-l>({J89p4S80#0;$yCkUDa7L$*J=4FJBX*=wv$M6t$m-ER;@5>w5eQjx1a%33&ZnjBL|o?cMbo zx6(1$&DGx7a<_^r9)&%Lu@c=k`&=^-8WMb9PWa@U@d z7rl0!?F^;mO>lRU&OJQvG<(;xLAB22rlG8qCojB{f*)0!Pg`2-Tl^CH<~qIo%}zVi zn+*1fqLDSGQ@hkUzt!E6PF6CtZHjPp)vW>!C#A;z-rksz_)m-Kg?VrXU#xmV@gd}x0|*3N%)!{NbGTCMlV_7R%s ztUYX*gfbUqvct4`P8=(a)e&$C(qxxCUovQEq1wRzaW;Sc;HXByr<4)8kqg#2N7I=a zQ&pCdQU0Oln=!{31}AEaw++=I$9?VWjCw$qym+x?ujG{M;Ck`Mjs?Sg=LlR zx7vZQrBAz|HnjO!yh2)c#^O^x)yj<17GtgR=J951A6m6;d4e_gWPRV*Vyc^*lWbF_ z%jEvyyzsS_do4IDntwGqJVSA0H?SjRo;;gl9c?)%d)L-i1>yF~FRi^~QfupHK6ch$ zeBplO-o_RPH9fa+V&>;G74SiR9?f7UUgb=|5dO}n=LA^W4&pP#oZeGb{e zV0xg#V{&S&aH3e#A>exuSEcFe{aR*B3zD^v99oHk6UVg;LI>_4c>!3C3 z_|`D%&}`wxai{qPEVVi-~A(sb6R3@jVrxqiZ*` z4%ycpe%8dgC*Y&c%fRnlMxQ0t>bcA@U~H6|8(e=u$MG>RM^nN+UZX$eR;m6ra;>r_ z&30mMxNE47@0FyN&(F&azMLC_@_&4V&pnINtW7aZcU08BG6FT1@gl%6X0LXG>J1jP zCN(#?lW~D6&-5pbdB0YjonhIYcy0Yi`a){VmX}$Hb5$urRl{EbTHabR%{y(2xfH6t z2YIn}Xi1e}qZWI{wOt#|gx*(LuU?@&s12@QnXLWdsLW^KKN#rJd^Rz;UhmPmfY_90 ztQ_CQHY2s{zV8^?yJh;;4b9wEv7^lVZMC5EuUI+yCzBRPi{04Jvf-Fyt^9E5Z zu02~ncNWS9T|b&`abh4y-!*w6{ZYH~xt(nRCoQI8b2t_}49OL=gxFz%P^P#-YW^3K~*#p%Ynm6$MT|TpG+p~8}GC{kV1Fv$( zid#gwyxa!%;p?7k=PKqH?jCY;Vx_x7?ydxov8J4hQY(HPBw+}eoxe$eGa^&B4x1KO z%w)-BTWBj>U>GFFz?G>$W@>D zmS0yDzSS&Q@KW03X;Aw2ckumUzPHR=ob^)H){)R`LwyIS4a~vWLHZH*o}XHLk=bv; zXf}2+pXT~jPS$~&o{DDYSxdal#+0tUHOeh_mizZDTT5mZOkZ{F%fq3k&bG8a(UBK( zelAJN$+WriNV2Z&D^02HSw0IFE=I+t0y|@U^h~?h{e2K7bmG$yOi%zvNbvuJfW1D^uj^PTQo@-F?Q!pgeP{8r{YFgiE;BD~v^sXT*8BR$mw8sYj1$Owc>*8#58F zkt(UkH|%oC`KQ&RTW|7ZCA*5|wrzfR_o*w$VFwNBV;XtTyZ4oYqd@KgJC!~@l$>V| z+Yy|I;s{r-D+N>CQ}!+8z@3}Q2z6cg_O(9UZqt!W=)Gc=;*QBL&Dyw@G-=iDWIfb1 zJXZ0tVeNf27wAj#B#b9z^NbwsVE&p1q#&!fC&{*uGr; zwAmK;=hip()Gc)6T&GVQ{dQw|F(V@tRTGlOHCfKAJc8ce>>^YgYtayJDD>vPT~dlR z9p;OtW59J`?`wUdYoe|RdF-x~EELe^oO*2bRyu_tEcp={qDD{xzS)c@J^6z56O#4LKivVot76=dTl_U6Z8v z;a}O1Nv`rU0m4E2hyKZNo}5-4ziQf$Nhi={CUtaY`+eW}CR=%}EyoY3(1(6(l#LB? z;pzxXvau%&QU@_F5$ z(qxN6(M7bhH3B-Cn6SKIH(d(Zoa!>Gq=h1}SbJs1aQ@B91o2^W0kwdfta z5E^_XPT^vcUE{t;@sj#0mw*b`J2+I*I2@i!PPy5>$;Vs4>hIrIL4U2+e00^~r^#iz z)G;;$Z7GLapXsNm7tL=LS-cSP^CO4Do+|sNX&ZgX7+Z_ls@;$}piO7@{cUVWL(14A zMgH59%H5qUQOX{oF7M3la=tv6us%EW!da(VIt~wg*xXJWI^BL)#w;-ttgTA2wjN-% z@Qh9}|K9o}cH~X6Y;5ycwrKf%NuW>p^NEYIblaD7dQy}wg>9#QIAUIrgyOK)UB}k$ z)N?Z8?Ptl@m%1rMq1T%w8+AjZDm`k#EVdrIs^x~@8?j>QyUFBCGil->i3S%sO+RL} zdGDAXaCuA69x<5_E~XFK1N{#+iY-Y6i5-2=S#b$rJASP2w*G+gu=A{aWX$IYJs(l4 zw)+hh$tI)aUItU2hpjsW{Ue;(56T~~oQx=%TDCW)P-8POb*LK&Hc#eV-&%%6p zmWkR2l?6CWW8Z?_;*h8mF5$^SCM|24I`vr8(qd1R$t8(-UmY!GakIE{Y3Zl;$-BIN z1dBzXGyVChi$NC??TuAP*&p3oTliNc$7=%^>gl#nmLu>=Yh$`2WFMJ1Ai@AuZTYl=rCQ7+u%UuvvlvO;YInGm^_R0lJb-Q=VtzWlMXwS+5;~n%8Xl$8m zRgrJE)6p4?SDUz?7*C%RbhM`qi81Zsz3C%@1SW$>jLtwbZmD2bJTm zCiqUMsk?!Djx3T-N$J4AevN739<}$Qc`o&>RqpX9GY8qELqg_xIVz_vHmF7>qQDjD zb|M^h0>clJ!u1-m<&MKykBDXdo1mjIcAlU8844^bugXh%)~?}}{+?Q-)gQE1%_c)u zGJCX6^~t_3N&WrfPSn?u&buHN3#ED}>B}tZ{rG3-Zq+Kn2k->E0Nk$mNGh_X{e#5t7z@nXzLrSGk#kW2a-Pgs^dx@J&$@> zsr6c0)J$t|qo0hap#fWbm+oJ6&whdXj62qV+^cz4mh?tGo%y-7T7m{Pt&hmBLq*oN zc>!(B=-rrZ4L_$oSv(d>lRnZdcH$YW{p<$~(+yMEeE*!1*JA=WlR#FENQE zp*Qqu`ot7*o)qwp9l03VrBm494r)dP;#r?Gykl(gcEkle8I5}j7Gd_rY;2WL3L39D zfZ|O}{A*yAHpW_Z%dEJIk)2hvJ#M-ucjlM5iN@^iH*TX~`YW~uICx%&xGm|(`lMaE z>Bh$V&@a0`ylSzh`(zy>G8|%RZd%*BRxnbIFZ{9&I&PLmkcGuo3^U3zgM@C!06}c$R zy;BQcZ{(j2+m+*>5TYH#_EI~!AS+?xUd{nnUab82`}bQ-W@!TN3S|Xfk}(Jr95#KJ z2}gH;`O63z(%Ka+pz7yc)3x;Vc?_IR!sfGN(>a4lBX-uI+s3ocr`sx&3_>D;%o)3YHH8VEkQqh>5WBFq^6ql z3PxwpUmLSzz1`xBa&nB>Rrm5B%6O{aZPsX$_cnD|vuH+r zk<3jri!@hb@`bYI*+i0Rtq?JdhfMb(=Z?|$~@O*#m;DR@mB zn{4*!-?o+EX+lU>1gnsmoJk~EL%4eK{#8_)e@a2P_=h zTdEHTyN7$ezN?-SS|tKU@4!`P|hdEb{eBl@Nwa-Ays9hI|Oys3w_B<&kj z{(7DBt!^);?Dq$+Qh5(5%}#1Z6?{NwKG+{WGMl;ZG|HD=JZZKqO3C=#U%{saMyhgR zHD1PAB#1t{=l!VHyiBm*wFeDnr*D&V01GbM+)@lI?4-v-P86`x-K1a)ts&gTXGwp#G^-=m+-k*T`;7lq!JZ zDH$_Qnb%M3zL(sRm8}=#U-o7;B`YfL2*Jk$FqjC`DE5~PF%4}+*y~2POPXh zBtwb`)A~hl0Zg_P<|-ThFWW6Mx36uRxgf%CG|Or*y;Yz$HYHeI3RD55w}_;5eA0;5 zq_gP%_-3@z{O!k#FfWB7yA1j8S#qlha@j7qZ4|N-O}caXe_*7&!T+D!dPTB;lbJIa z+-{5I6=^l0IWKv?f)^pVFQlY-MS?fX1R5p&n>LU^TY3rH0yN3l`cjNfJ!k1nOpC{} znrE|S<$`Iu{R`Q`w!1ERHFcu7B9Ml+*~sigVYG-hlH@Gu=^J9s+cW2SW^P%yybTgK z@ATnxK1Ua~d(9^-6&KFCP9)0w_-m0NndY=Z18?npWhNo^y1!2EWZJN=qXTy%mm4usYq;+#H+O`8c7|DV^IvZzQ@z%w@qY>Tq7zK8Z^??slWO zeGx9BaZXdcjW)6ewe0mY4$X?87(8NiL>xYMt&_O@^;=}eYW#2#eTerc~BjuA^Jf+e9j`$ zZkLb5qMQg5cqN)@>|?&roFfgEx{4V)34e~mF=1MJ5oP!zbs+$irkx|k+`bjrCN}qv zDU+Fadc{3dr25iv@dYhpn+V$V1PxLEX_O@$`qc2B--!9^TF~y>oh>_&H9DDt;V2u! zwkhE>?TmrZP4r72!^XN6UK!AG>NT8;b(5K&@NPjDPNmN4IWIgm)}5R6x11~M&p6&9 zVmxR*?be2ToHyF#a;b61ebzTxpwqeKCR@Y7#JJ8RbQQBpn)|2pI6c>qk^QbM3;v_6 z8Dl;X3*JebW7=+?K5ZRvoL^A9EITV5xpZXaj6rW()%)*teluc@3!kOk=iYFje@*17 zb&1-}i>RxH79&aLys_Z3(o0V8Jg;4Fa6sYqOADCsLgHDKMG|wR$F&+ z$2ENEI~?umU?peiF+MOBTm2|ZjV`B0c8dRt+mBBsqT{WIty{g9{$}+v_so{d-+NE& z`m&st|8mldCfwfn{ai}$*;u#f9@O^^1EaQz7IU2}ed9wm`%(qX>N87Sv~03idNdrm zW=v>MU)yijx%Zd#iO*Fr*qCcoW+o-Nxc&S%))3Ru?JhCR(*2`$cdqgKP~WN4Vkg8% zj{DS5=GEJw9Sg4+Gw?F?&g$h2}Xzs$YOa$s6s z(JjzkkGtE>tt?}szt~ur;*!~DTZN5BnfQoCl6}e5&%2F!*5vM7KwX(}e`_7L@polg zvo?kC-sxdGEiU<(BYq*MxbkDO4sWLm)2s6LHak6~-wCsmdG0Zr6DcjiX;7a_+oPWU z2qk^}@tgMB-aoGA&kQcTX3=~0XlC+7b*_X!D6FCAO5H@})pKz_eqHoBX7>RNYe;>Z ze`V|%!x>b7DEuI8WdYAt@ri%M9>zpEPFE}p?v$rRv!SG??)TE7Pn4xb|0Nrm{p8c6^u$BNImZQ)jgTTfN7Vw_jxQbErL!I9Pk z;cvI*Ms zJ}a1@%QdOsd^u&T5EjDZ?|Z-TeO#X@y-8}TC0=6x-NRIj`1 z`*)szdzO|9aHa1TA0#YHdZ$V6r+X+Rqib59+n{_d3^8KzEJDgX+T5-T6wiD@>|MKH z5%g0@vJuuJQ(pCncSGz|4m%AG1RvD2==@joo4HKvVb7P*L5`9QQf+!Kva_!U+kO6U zIZ7wr)mTgYAsH)RSWxl&qH$a+zj2$80C2Fzsk3!eQ}h>8@(e-8+y^<4 zOSA3+Qw}l_*0T>cHJEybOlPFIF3gsmdt>lm+D@R`9=Kksg84f1--c9dP{v9Qglyuv~C0f#c*?uQLt5w2XG>C9XF%3Bj8jN8DQvCoUu zu^#C7iP7=mId;Fr*}Cnr5sqK|$K=c^LhN~!6mL!s{D_(jihsN-crj1T1vD_D+E|Z7 zu=q%6#HA(_j~KRn4=7nTQxGI;jGnJs$5z#4Jzms!Ag-ljNeY=G{+_n(I6(-;yXH@4 zHYcm+k9?8Om-Rbjo7U~Dp?wfOk^CVz$MOBGKvZzgQ{V2X!+FkcpNJ^!r(@>3ThUcG zlh_!E7^yRsR}hmZ7-;@dYLM+RBZ27LFB0P~^z!?fw4$k`N9@x&!T(fjD71-n`+mz} z;EByQZnkaWg~>K;!#e2L1#ky~htLv>-X1htw$1GK`ySi-6eAzdtD$4XhTgn)=$Jnz z{EbUpGyHjPn}FED(4NcPbM@%_nfVF2gaO`zO>USsO8u}s=o_SUBZQm)1Qo8`8bk%3 z2^?S(n`?Y_(xvIvgY3oe>&zU=`(1wexp-%%(+W@Z$>r;KDI|p3{j!hmS2`5lcG11S z(s=N^a^b`WZn}fD?-twrL?6YnA8-0@SFuOABqkiit(7J2+u>1V_r5G`?z4PCahIG( zjo#Rn526kd))ddF4yFk-RJWHJR6c1RW9w?Q9$9?*LE_iz$eIubEB7wGvomlV>F`u69M|j| zX>bZiEBA>HB>!r%o!n#Vein^D2yff29*N$X5iBtgzYr7mP*DIOf zYGC@JQ~&&Dia;g2xq8+*iK~Mx#_nx?vXR1an+Y&57+n(3vc)1 zmX*rZ7PTa`(5~e-~5Q-r({c-DaVS zjy;S_Z)p0G`F^4k_Nma{BP{J(OU>gcqc*Rxm)zaf6&BJ5JzfXpvo}}@X(7nCN0TGh z*p!Xqe&!Xt$oqMFgKSH)ZwG|6D_@UBrM}rC)O$w|g-&UlFK60LG`lqTU zWw061R8oC|X`TO5=JfZ%&X*mW={3yX(NBnsy1o2){k@!s)Q62zt+5e(K2ol>@QAR# z3~KDHvKtpcM*8jhR~Ck^8PDv{=+p>4wT?XdrSCz!=+yU*yzo}Nl4}2T?du-Fk;%J* z^b2#_57IxBa^AjQX_qrYUr+a)cBT}aVx(H*MpU_Jv}5TnZ&l0IJQr~BOyOKJZ*P#% zq1{>ean+CL7_R%69`jXfcX;*5Q&ufax0v~$um3MqHEF+)=hh?N;-$KB&HO*0ecDc- zydB@Q?Tix;Z@ok&9R)$wBxCKxt@(+0YRY~S)!nUX-A3KG7)P!Y*{ao5$$5JOr zKs!PD#G)OgK7MRd@f5!d&DHSnhXQVE1n7$pg>?^V7Lo@X4xA_dGYk2sfe`yWRhDMn z=r7Jk%l+DzE}nBOy`3&!@SbNC5^t>SlY6Wo;-IhWm;N;_^YxV0E&@WxWeQ{h0GZHB z#u&&G{eMG{(c?cB!B2Xca9ve9ut*yF>>a1ZHB>v07ecEoVKa9-qOdsUZ{2XR=qwka zUYOPNnq{Y|=X3h`?bR97IbU_J4s^A5J$D<+7E^nl?$ojvLd(UOmYnJ^e!fFP=VLFo zn%=>Z@^k}*FD;X%WW@#)-doN5+AJL+mpi zgx({AvSzLPp4&1^VGg71_GQ-|4rQ014>5;KqvF(_tpV4645%~}3XZUil;4f(elV>T zG96K@T_`;gFjl75VYZ8m64%T@-4>8YY z(sF6hfl1MB6PBGziiA78dgalUFP5!H>)(H%JI%wYdapsrvo*5P{_K7}(=K7$eo^^? zf=Z+F`)W82*qc~d4Bkn&dn1eNh$o|Z*FTLvcdRKuEmF)$Q#9s@9JsPs2Nnwgb7>y9 zc+*9eU@?- z@-K@x7&b1wKuhPjRcU;kC^Z2Z>O8pgHKMAn$mVtUBTk8Pu{xRcMqBot!X8P-*fQ$h|h<^zSijEx=Rlh|J(d@ zpN_He@kk-VbLFW5^85ARi%onLO3jCJ9r6MZBVv6DT-)4DXTR*9bqKbsdYo=7BA;(K z8Q*chmuXAiGxretfU{xbi8yveCjSMvQ1dM7;mBK+{_z40mU_)X#%&qjxNB}O4OOSx z$0d&DF5Tqi57{!C#xb(%HhCD(*+e{VIyl1}8hrYjlzZG(VMGdxahq6D-d;7wk;#OC>5kd{ z`?Gb*a=8sLtP=O7$}=+_k}V;u*HmD9Sn8Jou3S?rEqQ|+Qj$6hf;48W)UcM{yqj*p zO18||dg}guJ?n&rihA0G$2=?BSrpCtOE=qBXXe|@NimP-g-pvP1%Jp~%JWbw8=4$z z)```*{3Ve5B(ppR&aYrT@5zUkoBQH6JUhtrovrNtl#2aG$mnB7cZ;$ZRdF$1V=0;t z5!-mdZ_#v>ncRXB^7oBj+AI#=kFZ6#7B9j_lAoO-7xAtI?Ncu@8XEM?m%*$-+O1LA zck7R$4rI_KpZjR1@|lY(8MFl^NbuXy&TAC|Da#%C5wGj!H#-??+!nl~7c%Ouvs8Rq zwzAl{Lp@{~_IN89$8{28HF6=sBFM(QkBfJHo@U@ZI<@`4cf0b(L00Y~zZ$zU#-jG= zw8B^z>I>CqLL#-ZpLe|;X$$UK+-p#@C}oHm2@syotVuc$7+YxC<}^EPQjlfU)DklN z2=?CHVwGHi@7gV}sEv3mYdSMHGZnlKtj@#MjD&)@HG+eKp$miD@r zjt$JY`;fiZGK+l&)nn)joMDTO9ht&Foflm`jeQU4*q} zNs&&?BR<1(J*`a6QwjY)?GE4ns@)!ia6YkLydXBO#H#wMJ$ccPRS~kvPd2Xq-_QSK zT1s~Hj|;>Jk<}!!QvTyC?|(4=eu|$Ow|RX1AN&GG@3rh>wF$ER%t`#5It#sZPYM!W z4vEafCE0n@^z%gt>XMH~>;KM-e|0^^OkkuV*bf-VuViI~p-1y{rjx^34@%5dSt?xn zuwjw5v^RGj4bsxk#?~6CZ-Mz6`m!kv3?anG!-)Bts3;@16w2HdX$}5su5XJxgET-J zA{n{mke0@_CX9SSyo}=FG|5wm@0nUeC2v$etoz%e^*M`M*I6Fu4TIP6^0k+W^n5ek@VXzJy;XAam|)2Vv<$mkZ03!JCwjP2*dqE^gZBiN-c7EqKNMT{^@Z^zP2Q%6$|1K< zmWk*OCLtj$b#^`5`vv2Kw{&k9;_W}RDAfFKRPWVcPuo;8t5ZFS^}X-V8l$&ujqipX zmvD-wU8wket!+cfZl7y$HzK-TZC06h-Yx#h_D$(g&7v^@Br4$GrZ0KFq>)E@)j3AbBP)1)XmcO9l&rRAD95_e zM7!YE1}8@Fc5E`bDM+B3Do$5`GG5R(#{OxIw6tXu!sxCNBexRL25o0;fV5$R@$%q4 zl0;kDf=9q7SOo_U$s-L>`lr#3G+LNPU_x;42ah0+4kPy|OG`B7NnSYiw?N79#(_n{ z8^;A}w1G0xmQf2(aYl-fTLtN8%Lslhi8e=DD__w!Kr&)%NYVzz$Oi!dO9FIYKUPtJ zG4f+Rrr}mmfintVp8$VFFk+Zg0;YwruH}I-q+kZt0%Reu59q9XiGjycg_{;-TWdQ5 zTNP_0QVET=W#pCxKjVdPSAK{2gxv4Wnjp zCkWvQLU@7@o*;xL2;m7rc!Cg~AcQ9f;R!-`LJ*!1geL^y2|;+k`C_yLCIsOLL3lzC zo)ClwnFO2%hX?1u;lX)ucyJyZ9-Ie<2j{`z!Fh0aa2^~UoCk*o=fTkjhe3ES2oDC~ z!5};sga?E0U=SV*!h=D0FbEG=ABG<|9KwS`cyI_04&lKeJUE00hw$JK9vs3$KzIlU z4*}sJAUp(whk)=95FP@;LqK?tw}3-_1kMZLLB0VF86zCBE*(Z9tHpp)G%zWYv7I%> zfi2r7_XT4{+!z?6C5FS$MiK7Zsz`8RBn)>Hk*E-cAcn(CIz_k(s}jabgoJe){{tk9 zFM>mk2@d%rA{pSmq=+bovNXez2l*@_3Gfq=hZ}(+81Va+tAYs-g5g{vMX=RpO^_G~ zqudmcsEAXD7!G426ya7U4EO~?3&6U0icqUihBH%)2@u-=HeOH!{M`mtu!yYy8*?aP zQ6-Mp4zR(CBA^_R9pJPV=W$51ma3`CoyVye?$_9$495jwU=TPbNCHXK=H)J%V=&=R zOvl>6%G{Ay0#%cjJB>DUqJT$Y3{uPQjLfS_=E!l68j1QPQlMPBi$ z0#QUfb0B6Du!0qiVOyssec`A|nH78j-3{ zw~7^2A&W;GEwHNuic?44!$a99;2-3T1O&pc%MFTvzl9$HEF!yrVV5ivv8WP9Vi?rb z_;*EtG>}-T)J+WXDbR8Yrznutz@fDn2_z<|rN}K_Q3z~;VD5-)0yhL@v}Hvhk4KzA zVV8>(@rZp2P+|hwh$00HyX2&ZMJ5Y?*0CgWM%@oX_DYxqKucjbBpVV)%({m%aZnZj zQH1eyE3ATL4}m%0hMN63_<2uJkF>M#dU&%RrJjqq>a4 zTLWQ)g(?qlT;%~2h6sp*|ACI+#ek!TL<}U>Ky}(yk};?-LV`zZ4cOuc#i^qt24ZW# z7FZ}^t>Wcy3v}RFKq5ylbuetDh9cnaE_eltI6h#jJruF15=UeZFl^a~A|N^2$Egj8 zhENZMINOIRRX7(6m9^kdS&JBwx>%Q8Fr>&BTV0tuK0-O*hM>&qitUrdBg&d!*h(8k zJYuE8t^lC29ULm#k?>1BGsZ9dp)w!VDpnXKvI^W76bW2T>&U~A7zTB(^1FY6giXRH zhGL3@LH-FUVnV6{WyH{jB#_io3CKU;)sIM3Kn6fyvT*DWlnGo`74mq*VFFu(rHDsP zRd6v9j;q{~_+#pb%PRn=0!*wbAl4EwOw}Q;sLDzjyJBj{~d9}hJoF6pa@7tQJ}2~IJ8wkB3gd z6i8ukJ`@h^c91|)cUO?Y;4y)3A(%rV+rSM$ndN1LA&*C#OJQe$G9EdGaakH1+Rh$>9MFCQ@jsiwrW(6t`W)2#2<-Ncg4d{g$06q;nW& zy23CJ69Iv^F(@*;>`ckSk=O`z_4_^ULfdh~d}2SONEj4%q0K*>Z9qGEaA-%51oDqp z$q+>(Ge>M2*dZtrxU4GV@rY~#hBar3cw|%s+OdQ~JC-E;QdPbcRl(&eBn%VV26haJ z1g@wGIXEy01eyoKZqibOBj%S#i-DYpu&A2tDuHM@5Cdrv0aCTH-viMK7Ku$zO$(?J zN4)r^ZW_PO+zN3-$rKE0FchUgCa6LC;&5nRoJ8xWXSX;X57{bYxKIL#+gc|{AhG-I zl!=6VJVY5*k5^bGUTR>6pp3R+xCDy4f=6N()FTi%hH?270_q(gnM0~7gI`QSA|PfM z1{x6vv>7+XpK^=~wxoc>=0V-}kymMGV;_hd26`h1NQ7Y>8ATF*GdMyp5(A+cg{YH9 zVkT6T`Ztp!B#$U^z_2o-$m{Pmhk$xZ5KwOk0_rV6;Cf4Fi1Y{dFy#>-m4u{?S&1N^ z_7nuvo5p$tflWt`hV;5u-K-3|iV zoM`?GUIqZVbwBD=cGH24ICqJcnTaln9V|d?&{;E@ZW_( z6kTv*P=;HPGI>BEOMy`jeycdMWz&X%Ee3)~gi#NGzx!GOFrwH3!}h>YM1`?JbcZh2sByoq>?n26tkfA_A!1@LPmPrf+lTT5GTVa{NPzV5t z35aQ&bZDI;$q_=XLTE)j2)<2p+z zBK~H=gkVH*1lOKQ5sW%{LKmlb_$^vs!i2L(w0_5pL7Bp3eO?8S*g&xJKp7BIOTl*)$=0-rRya=e3 z7lCW#r9t3Yc}XlA`y%%8+=LAsr>wC*m!3+!&PMR#+wvNE~CZsz4c# z9Lu=03<33Yldw!Zu;N*U+%^fz#3qCtgEECHERzQ$F(ImTAzZphtk_W7Is$52Ct>-I z13%O~j|mL~icP%XjvM1oS;j?YQb1x$!5TPaKyp%s0za-ZpTs?2+x96#;-w7LNJv;F z3O5Ms7?j~wq)Z-=B-&t9fg<24@e7(y5MDv&Gl9Fo9nAO-i1_{w3?flJhCAZ%9}uBl z15CvPG#C=mNY%rV=XzzI8V1e*5h7Awt&vBBb}q3r5~pO;*H)__t|WP&!HkGTszIAP z;!3d*20H185UKjG-%=?;Fru&mr=E6GCy&Tl;Mi3NMa3bLN5#FJ4~ zAe?i=kpOL1BcQc80)J4Ba4vCQQYIGi6!?RJz*7*;CXvzL#-I$h>?!bo*t`#F>_$L` zR}j#`3xR9CCn=U;AEr18eqRI6G{yrHQcYw=xIro6;kR8@!y_^x9Pt$KsL)5eYmb|R z{}mpQ0pXO4A|6>i!g+QCx#JWF>{$!SkdPkXkDwAu1avGBm^f|>%5ckiv^fW+YjTLqyAxQb_kA~*&y*2^MBnE@|hBAdKEaTQhq<};QgA+YvKyobOM2>*^>WL#Z z_K*l=NIc6cYhXet6WI)I49ajTERzK!-qMFtFVc{yz(EHa5abRvAh2IjCJ|qWBdDnm zuuQzKj~j#{9zK@hn88*13Gs*w1$UyFA|4qhLGCyLg8JbXD2hVmF`QF?jw2w*9Y;V= zKLdkz3IxXy2ze#85bPL~d0keQRRD=B1dgrFQ3NC(Qee<&lLh%sS^7a?1vO*53hsE z>oc%z44uV5kUNWk`;syw-`jG@ec?j4lCHZQYb=_$sC~L z5hSLEF?q^JI4y*(XMwa3XNL%KCm9fba3%t8dIbK4VE#a8CzwCnAe2d5(ZW>_i4!mC zTLomiHuiXd5+j1#Q40k1vj_OH4IJ7F!I~Z+(?o`X8-*g%%U*jmK%xW;j@_4_2uMa{ zptgJj)V)otI@m8MBSNaPY-qr1Lmk%$at9D_Us8sIREOZe0E}=JiR=V72xYuw)ma6R z_#8ZLCMYA4V;YxCAjlm;Kv3^x#(QmoCVE1qiMRK0gHR@Mh3S>WC=nuwy?ArwJ(s{|JJ5z2soem*CUh3q(I}F-Vu%D89)SvhaR>pa_e-xB;wpe7 z!G)^FC7w)7h$bYDB)CwWz*U0Fia&>g>Nf$$n151{_G*wgiDN<_D1;J1V(X$5rSf|~ zg?1CMXvAw4?1ltIv_Bw_D8|6C8xs^E$#_SoichT3*bgZq;T*(DpCa&z*q&$*T%aQv zB#>0Mt?&*4zpsGN8N&G^wh`*>(#wa^5vw5*842#LHHu6V>oj(s1v++ufZFa!c*c~B zC?YP~F|?V4bqs_|6B!C_6pDb$cDx!Ov6)cc`61?+L?*;r`M*mTbA6@_SV!q&@6SZw zTT&&_cHq)SL2&#NWoU!B?h#BAxNH#T#-St`*TzGG?>E6&C8Tc4H?gf;VM(UE`iFx< z)mv;aRf!Q=gX2~|G|&PC%9fx@6_+h$WppwvpcF?JSY{n6HsK38_*Dm{VHL~?4c=+O zAWw%k2ps~)gqv1kt$;?yUqZ_G+a;tp5rAS5UIw_84^$||UF!&T30GJ|kms1C-(3vNQyw>CR(X@th!ON#ji(vT6{ABx0)bCcX8ioXSP zW!z;yiAlS#dcw%9uAvG3hPh4^{AcB&(&glT~jE~dP z)t?YSK-wLhb=d=fN6r%YSm|#OMl>5 z$S_xZmOxT?HC^r5qo?OmxfJkvU%xX_!H(YVE3VD*% zo`fwogaH1bn(J!ME?3boS4L8#botsSz&&oMw<;#SGXr4aZX8|hN!W7N6Gl?FwaRMG zVtWE0{&8l%+LOyGLNNQ3=X7~<6r)rWxyM~Fj2Rwteeo&aHK2^^G}_t_+y<@%evP$j zaOE-f4rc6q$>6?VyUVuNf8%1N64C(Njf@Z!;^GJF^7HX?fnEYZ&?AK4;lk9A1O#9@ zG%IcdHwu1K2-v_D>!rX=#FvynK7;uKfpdLCjt`$ovYOc1Ua=A8<~Byzn%G_DGC*5! z+t^(}THB*+kcQk>oNTTj4fSm}^$iUZ1P);%OLZ{xi{|ncAfNOA- z0h|#mh#|H?e<+s#*sujh#0lBP4MUx6Ug&Vu%7o!Q!Tgde+gMIlShm+UM;Yp4rjz@! zIr=iUg+9uX+s4{}8|kQTam5_Tz4Cw_^pT#Ot)8AC(gnZP|3yn?($k|om+N>;MaNj*Yt@m^|~TSCc_i9>*SGoyc=9pAh43yKwCi&L;R4q{BH%xCSkSpTLIMBgunf@V z`j>$P+aUF=4NSO<(P(3HBsSYxmM8Wee!Mkjp&*4@8Xff7SdBI8m`xh8EFM+dF0TTKCVL}C+ zoFn8C??zccf^Tk%7DgIdqb!g%CsD>%u5j5InCo*P4egfs!#}+e*s<@YSy{@dfHDxy zj85y@AaP%w!u;Q9j&n$Jd!#MOKwklAhvdW*vh2W1V=#}LLE0EtqpsMZt!a4iCydTo zf|p03EI}zsUf)0oZJ}?u@`)76+QwGWMBf^7+cLKthz{6)z<`=_tD!)a07{TFxO@9> zD^Jot!6FmL{&o4m3!zcg@1M~m=xPMsRNo0V9Cwiy$ZhVLrorhk2HV5z}bP2NR+}fI1KM z8{km{uv^>UQ_xLHDB9m0IPqlTCSO6{0=!RzvW(32jX^OGPJ@-!Y48ptMlDW0P(R?r zF2aN`D=`>9=1oZFLHQ76aLN+6cR(!nDH{XqYnDK8<;DmZ^AAo;TLZVG{*`k`l(C5| zjR43HK+zCsp^7bYfVYL|W91G40=GKu8Nf043Fet|m>MC#wKvAf8Js=`^-g(xN9@07 zK=&OO2*V_J4;c~;-0N@2^m0)Jqrtcrlff8a{CrqN!o8(l7Y@%MzhNs6Otm-81tmqwRnuW{FgUvKn9 zx@T#+q!kVolvwJC`p=Y>-C!}gGRVw8*f7^C6)uL9^hN*xJZL4}-s}t@FFf zc{-TadG{Ot`)>{eJYvn;zxV+i;q>Wh+>F{$!(S|Q5!Urq z{R>}7s`THk#-bVfXptWyUs~&@yq-P#RC{W-&c0l`w%u=zd^wt?Fn@@?>fGL=tR1ZC z>N7$YIb+`)uUlhU8{2sMVjY+1S*N>79D`|dGOh|Lcir=MsHredYb#%rJC?RMy!oP6 zs^d_Q=iUQiZkdjT8doRQ=RM}I9gLH`#AfA3{GD_{pYy@`~ z>$mrob>4m#is)jZpQ`NnBI`U8Rr1hr=BunT_l`^Z71PI`u5q5Z?4!fFd#CuU?(NT+ zQ5ne6C$0<|TNqDdehV0L?>RdjJ4mbev_j1z${;zb|1>P`^xplSKI~_|bK~@wpP8`v z_1>uiTMcy(fA#Slt}cp|6jHP6KmQNMgHxYSCj~ushwr=F@JOrp2TF5Gb2+7}&weQr;z_Rgcl=JxJyOCj1TT6xyjt4%ADae* zCWf{HZ~PKswlIC}pX8N6#yH=lfAA_%T%@iqS+mDDN%Q!{O^J`h9sCBv!(Tj=rLBIv zCGxG{@C;I3TXuiu=KX@=uU|7K*hN+s4y zJYG5p?$PG-&O`SPRWBi|S{F10hn?gPah;o*WZ&je*SGe|75%$!Z+vDBDEpkz!lUx* zqsC~(ze4Y{BX@Bg^m#UIRF^D~H(fked}n|CP50nOf4RMRspd1}|7GFS&JAv7BnqYz zx9z@RIN%j9-spVBuW0v62Gbc?lO6YAEY1UmCuIWZYK^WwKKj&R_s9FAdxWG?{~u-N z09{$L?fclaZQFJ_NyoNr+qP|VY&+@L?%1~3NnZLpxaW*}?z``ey;jv+vsP8@+ErtX zwa56)e~o}o3b3>Mo|DZP3BV2T5jIB^O{jS(^qOKF*t+}1${iHWwHQ0^V>15Z*1WBk zuJP^7=T^|^ry5!>5K6ySf6op%0J;JQGzJhIqCUnxQ`!zxr)b=^pTSGG^+XN&(Ya9>R)+1aZIe7baq zPl)bXQ094{al_v23vyrZCaVBgp)oqY933GGuGsTaRRLO#SV5H@AY$X_?|mvP!PAE8 zlkf9veIx;tr>{Sz3w@QJ2mEDO@Pai7(@k*=CtWdc2>9{kZZi><@J!|f z_Ju;ovFqrM5dtkxfaTYB2l0(F;p@+c`DF;W71YxiB-Kyc!T1bqlL0BUY62?$#sw&m zK3=dx=!{?KF|-2)WVPZxLs0agtygBY2U0rOkUlXP^GtI91}s0y%t{_qw}#mSO(lKP zmhq$djjNb9Om)UN)gDTjYceyWPNpbyJ-_O68%N?5U<8{_2$@TAEHWcXAUZ-Mgodb6 z3MEmF68n9S8u*6tw9v;}R)uFDMFs#^Vl5tK>_%?NT9~XqU28U!I5Hk=I%qL}n7bbuPn^I7yqC5w_K_W;^;*s&0L5zIOf?Pm* zYnWhU54H{k=a6!>%8$})PAq=^+8_&;M8G+k5yElF$wT3MG~0BH!tsX?kpGpUmq++r z*m!*pIEEED+U2i=4AfXITHU!?mS35yTbgXu-L*Hc{O*^n`MRBRA1l)q#TrPJ5moP6 zpRFI(@`a=-a)Hn$@s$Fw2-1vl03$VIouTQxlTqt680JJ16Q~Um7%j+XOR;{du>vdf zFsxmGi=%`}L!!()D%m_o*)%7Zd#Hd1K9=Ul5wBTk z?J6>WAFxNWr2u!Jy?IHDrjxAkRQpL)=!%d{ivI zU9BS>UwcoN_oo@o&){<;*+)Nex|?8BCm~51FcyL~Ks!Hw7C@FIz{_($Fx;ZWG;iQa zM;)PfIF+I!F?ZL>k3wto#liOlIN;@VcO3Z2T$ibDE7P%JP$)*;_fTznQFoFTO#4wG3O0UglOrtTK zb5ryeXI8dpIVPFgCGM{Cox(rO>|BW??;cpOPOOFHkO1fvP|7gPAn75Y22{@ z3%p_K4pdt_WwIT^;c_znOJqS?Z3kF9+kQ3kuQbHgYZJ|Dp6pcDPgIo9k5h*3K zw0l+`R$!{zp`^4CI64N;l%5QbZh}u&$}gttv!6Htyegu*DA5yCBEo zpObCni8QNz|2ormTn~f$@K8_c3kYVUxz%+`w2^A7;nAS%b0WHwqoV;pMdZIU=i7SKp#?| zA`B5om@BAsI;m}O>qaeV0WkaFl-!`t7dUQrZn zQUwM}!lIRFED2MZN|_>zX$R`jTFv_A)a?9HEN1O)4Hcw;D`l7k7EC3Lm_KhvrimfV@7s zET_b|nR3x-_#YKo6CI~e^7)N=;6U;eqQlbfr+uUyNI?5{&BO^Z6vU1rD814OMG)&J z3pbn(&~PggTLTo{ii+t@h}zCc>C@99i+$%V#D05a6U+W#*)jB{TKN0qAf^kC0cH z%4tbYrkav&qRKc~ZHE(J;cILgfwMny1_DOX^J)w9SyKv?9jA{p+J%dGSQ(j&aGAyc z#1-X-t5K#V8BQ5oTaSLh6PBtBp1qq3&>eG6Owx9{Uf^LRG?mSv7nf+bt<{e=tco!L zD4$y`0d*n(k|jxS@&waK;ZKpfChVZTMePngqqxdp#$ZCnMYMWyS z)SJXomJQDnLZC^2!@fLl!YxkSe<6tE%@s@_=0F{##8`qGW)7^i7gpvt3VdsH{ae=A z@}QNlE0~OAggBr^z*Au1`*97E<=$Lnyrfhds8m?}0+oBV;k`U$ZoR#>o-Jm32hFYi zDndayD5EtW27-$Q0VabrSSA~=kgQg}`A{*rp5I;Y4(&M*F#5Fvn4|`8<*2f+_w`%- z9`v~}UJAg5h@*Y8z5Q}4hxa$On3$T~+P^NWaA0UMr2LedrpH4pX60y;+466it_^Po zdvydOEocS>@Ew^55d7z&=n0bIwh19qg5lqn!+i8A7V)KRHyGS3ytiiI zxtAe$ryMli!KxmCzqcGZ{e&o=^kcg)tp=JunHar&dH-H9+qPp@$hxd$;%r@Bd0Yt% zN@cJq(qlMVio2?ej(t_8MUx(eYC~}YLS4?&{pvP);V$`f2 zQ0cIv6Z1&Ai+7AT(gZn5DX=m;qi`Ze4Tc09dT9Q!`9rV>4#0@GT?t%?%s4Ch9C)<- zLZW3t7ax|5i{)3z@R0S_+08Q?2@p*SDc;$o@|67Z!2r+L`wRRiF)(--wsV|P7c<3h z6WPg>oDn@KQQxEUn+%!I_V%OZB~;cJQU>hyEPm+6ZnXuA<+Li{PU(1(i-|qhLZ?27 z){NR^5_a)?W8^siq>E2nfw2Ni-ckQINvEt9PM~KN0GGKGaYQ@BT4ovmESRF0+zy~36eDT4p8SwG^Ki9u)K-n6QcRpX$WUoBoqlN| zM1cx^-wEZEm z=BNbBi}6QN^ON@*!Q;t~48i;^-6WI=<5RLSjq$~V2q;ZS@;C?SP^`@-^S-Auj}Q=r z(o>W30nEg=gG4arWeHx96bJOdF3-j#se?+il{3&PmrDg=giY{C`FTCV^iq;&wp~~e zj@Ln`lQ61;3<}LA>w`%l#hJ&g^?yHr8e!9F zqCH>W%X=%3F+P}75xBE4tFk(|n>bo{vaPu2aHp_f!W!VN1-?2vT|WaNNfd@YK0vj7D{Yp5YPf(1z6w~aG#Rd*wV@S$iA zF=Z(3_`ch~EbQtS7MCbk>&%YJ;Z_#JZdeT@0#QoZjJ%%2mNY_zl(qwsaBbyDrDVjxsqJaTrptQa3=uY!cLW!4^tXTCU#2 z0Be`Trk0$ZXCZ-5qrZ za=!3hRlX!tOR|!}dR#)teLp6(?WFJaF5Rp%LldtEEDZFxF)H{BsZNl%g2kQe2zcF1 zR?}QiM6j-iXcAiooi%!%T7x!thaEi7aWt~?)Gn|&%b!}xWM5obu+`X5jK_%(dqXac z-i$^ooLdfBgwETOrqfqC={($^48e?R@+O^4?r4MTjd%yvQH!BX67$wGYN+WMj8iwVbqgi1qr6ddJZvZ`9OE-Kf0eI9O*%%zJx)k zHNf=7t}?%{aJpqy=#5)jS6neIHz9f?mJ5)3;s`3Xy&mj)qPyiW-uD?jOyFgIT(trC?_ni1 zdVzjqY`h_DzgU1cIk2EyeYAC%r{j;+K2%mXA&S@J-5tR#!Al~FwJZV5G1 zkc>mMbmyABS7Iqeo7!_rI5_(Iy-t*fD5Zo?LlNo+lSE@8CWUUi0|CC?(kLFIk)KEs znpDv>JvYCkqlH-2m#knuF7e5IOQk463LYyP;~ixpN-{<$50|sn+}BokO%2A*2pZ8A z9VawP&{B&31ud8;M1dbb7Mv$Zc;ee2k9Rp76OWoms4A&30~V>^QMA-nBu|9{cACw8 zJ6?f=D#P7njI7;Zqv7;yFnhT)=w?}4(%({=ndu#`=VR^dycd(Hiob|OouK?N`Lkl$ z0{H?r7+Zs=;*-c&d4&~UYkWMt{ucZ~V=Rj|M}Lr_`DTr2PnFq=*Hi4M9)hi!pVv3y zfrxSvRozU!ibJOZmsk^3;*P_*;_xA1Lv@A9QK-gJ$F_p1uG=;!=S4)TLJMs%4BaBG zoRI^0ogq_CNS^^QE)7CLdKnZMFnm3htg5a?H7gz4+uzFrO#p#1WFdwngd}ys6W~}OG>3`4nO*|AqY9rP*eUTR9O7>X z#N+w~e8PaQLsz*4T@Nl?2#QPR2Pz&>w7FlQMDtc2_R>Mzql1JeXHgdpK6!?W=b4zz zk{&#pPc-%~i&uD?#>!~$w-?N_%6kuLZo|iU?ZD%Xqme@_9#4;(&iEyl*&QR21e_Qf z42x(9{Cc(`cs(7n4Zhe`SVoF1>0a#Ra}S>|=>&(eMxf8YiW{$>{IeB)SPe8cfn0IQ zoF9vwjVNc8lU(-As^=%iQ#y6jx-66%(jM9`cg}du279MYs{(C7nw%W zUSWNFl}IBTB`NnWcJ++Xjxh5$KUszuCK+)uhs^c@Vx$aq=}34D)#-6}AbxR7xwvYn z(9)uN^?26>8E{nMu&jBkP`~=Sce&X@SMC4A?dTA)Ag$@@s;%Ex?Hok6Y}ma>5ob52 z?Rk(;JZE zthR4AuTncAIWHV{3U`7LRiPlLFGeNG{2E-ck=z5F%jV|bY58Xt+ozPmHiZ z4+^cYGll8$DK(O?$sy?HRbGS;=gJGAwafGagJ&WyTul1=DsgHDz{Xf8cB{Dr9cB`l z8Z2Zxrjk%7$pH)(4K}Z+A5?CB6`jR>()u0HwVoT(8J~urTzcpW$pum%2!0tYW12oe z!!dQb=r)RPQ=oq^u7^5vaEA-K)eH$G4fUf14K1W36j%ZZOl6#0erTg^LXb6rk!4ES zBp4vpQc=Ooqx4V+Qmut5ZEP8sC;TFUt$tkm|7*xY7U81s!_ zWW!a~w$v3>ae+m{z!tkDq`+?{SxA$(2XbdVU9%$`-ZbB``F0DmhgSBuCw7JcGRBCy zI?Gy!=H`_&m}@7?H|LPqucj`;4@Ad*8_RUXM{JhVuSR#2XOh3sToBVPmT+t7o=!S) zy<@NLHfg7!b0@BXGMEFLViR*@OY*KYbS*q_jkGnqDryJ;pRVoAn{ z*cHa_^xHBs&n=-S=F%kY@(z#nkPCG~{1_PN6&eQ3jj_;0-AKRPp@1ht%aE=%M@KJC z!?{GQoi3%;+CYPKt}l3U?*6c$J~7;66DX!>c7c*hS#43HdNB~Z@v|8UkAs!@0$2sXsCde#!hC?_(1}z4FRg^DXG*aq zG1N&{9#ETf-bQg;7f`V#M#yv)dUTZ$%y*i=Io_R`TY3?Ep(&CioXjYyj~(-OhF})J z!|xU=lVMDr;cXL0GtF$e7W0-eOTm!jJ9OKHtDdvp>Kj^J+Hcev=@!ek$gil^V}?$q zw^W9zbc59ANEIdgW4y8(fWIN?;yrS(##7U8Wxxty&Kq>8qG&0x#z}!r9pCC7NZTeu z-2yKSyrCtlADaP29Po_=xbGiD4DchHn{)eB7TMi9EMW9Dkho|=&PrUeJ#|||6YR$k zG#mBkw}_Km4GMU;g<&$x>CB?miZSsDxSvn^@eyI(zP&?N`jeY`%VhbjQpIt7@(-c7 z%Os9znT)Z4-7be{tVvFgxts&0i2{8}uVb+e)+|6@Xsphu^b>@F9%BSTg7GWg>G#^M zy~*<%GfX-P9-Y)*6~iomaypsf%g#ei6-ZUpUzhGezeh@}1s^a3e@w>F+8;_ECH#rfL%@gXREsEBBG}GHfo#`OpqCtuA zUhL@_lI(j`>2v+~{yNLe=XMn3vyDfw{=N#FRNYygt<4K9%CwZw4%kIK*OOW1YE`)K zzD0zZo^5pE#vX{@@czn{nH*c^;1k*>In^Eupv~@{Oo^U;t1Deb?jx5jUNi`BY;dhZ zszp}q%)QUw9#@{mRqGjVe1!0bJK;QLN3s@M)_hzZMcX^PY;bPkGRr@oSjmx6vMfeXyiAt4X=vp^uKx1~qp_D$0<5`~ zNQP;7tdrJwla69DfWC1xW%5(#al(bqX&KE{5pmDYB+IAbW2ht7C3J5CcG2E7d@a^) zYC_e+;lR_0nAlQ`-O-y=$AQ08{-e@6;)8eV>LoltEER^jj;R=$@&RHsaryQ*2qU&P z+os>;C)#?=78K!TOxX≧nRk13L5?<+`=SLf5%Zz3oqc{%Q}3<166kuRFh# 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 YV0bIj^=bvKO~B~n%a0ssHN#r|-)rOgY5)KL literal 0 HcmV?d00001 diff --git a/docs/requirements.txt b/docs/requirements.txt index 9416da80..915a8e90 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -7,4 +7,6 @@ netCDF4 pywavelets astropy https://github.com/MAVENSDC/PyTplot/archive/matplotlib-backend.zip -geopack>=1.0.9 \ No newline at end of file +geopack>=1.0.9 +viresclient +hapiclient \ No newline at end of file diff --git a/docs/source/_static/cnofs_cindi.png b/docs/source/_static/cnofs_cindi.png new file mode 100644 index 0000000000000000000000000000000000000000..7f1189ecbaa4fc54339102c546aedc105c8844e6 GIT binary patch literal 113834 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%0A#e`yWvjJ9WPK&f!4Xe(s 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 z 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 make creating multi-mission, multi-instrument figures simple, e.g., to create a figure showing magnetometer data from `Solar Orbiter `_, `Parker Solar Probe `_, `MMS `_, and `THEMIS `_, +PySPEDAS and `pyTplot `_ make creating multi-mission, multi-instrument figures simple, e.g., to create a figure showing magnetometer data from `Solar Orbiter `_, `Parker Solar Probe `_, `MMS `_, and `THEMIS `_, .. code-block:: python diff --git a/docs/source/lanl.rst b/docs/source/lanl.rst new file mode 100644 index 00000000..c7f4004f --- /dev/null +++ b/docs/source/lanl.rst @@ -0,0 +1,46 @@ +LANL +======================================================================== +The routines in this module can be used to load data from the LANL plasma analyzers. + + +Magnetospheric Plasma Analyzer (MPA) +---------------------------------------------------------- +.. autofunction:: pyspedas.lanl.mpa + +Example +^^^^^^^^^ + +.. code-block:: python + + import pyspedas + from pytplot import tplot + mpa_vars = pyspedas.lanl.mpa(trange=['2004-10-31', '2004-11-01']) + tplot(['dens_lop', 'vel_lop']) + +.. image:: _static/lanl_mpa.png + :align: center + :class: imgborder + + +Synchronous Orbit Particle Analyzer (SPA) +---------------------------------------------------------- +.. autofunction:: pyspedas.lanl.spa + +Example +^^^^^^^^^ + +.. code-block:: python + + import pyspedas + from pytplot import tplot + spa_vars = pyspedas.lanl.spa(trange=['2004-10-31', '2004-11-01']) + tplot(['spa_p_temp', 'spa_e_temp']) + +.. image:: _static/lanl_spa.png + :align: center + :class: imgborder + + + + + \ No newline at end of file diff --git a/docs/source/projects.rst b/docs/source/projects.rst index bf5fe337..20396f9a 100644 --- a/docs/source/projects.rst +++ b/docs/source/projects.rst @@ -5,9 +5,12 @@ Load Routines :maxdepth: 2 ace + akebono erg cluster + cnofs csswe + de2 dscovr equator-s fast @@ -15,6 +18,7 @@ Load Routines goes image kyoto + lanl maven mica mms @@ -22,7 +26,9 @@ Load Routines poes polar psp + soho solo + st5 stereo themis twins diff --git a/docs/source/rbsp.rst b/docs/source/rbsp.rst index 79e8c2c3..f9b54376 100644 --- a/docs/source/rbsp.rst +++ b/docs/source/rbsp.rst @@ -56,8 +56,13 @@ Example import pyspedas from pytplot import tplot - rbspice_vars = pyspedas.rbsp.rbspice(trange=['2018-11-5', '2018-11-6'], datatype='tofxeh', level='l3') - tplot('Alpha') + rbspice_vars = pyspedas.rbsp.rbspice(trange=['2018-11-5', '2018-11-6'], datatype='TOFxEH', level='l3') + tplot('rbspa_rbspice_l3_TOFxEH_proton_omni_spin') + # calculate the pitch angle distributions + from pyspedas.rbsp.rbspice_lib.rbsp_rbspice_pad import rbsp_rbspice_pad + rbsp_rbspice_pad(probe='a', datatype='TOFxEH', level='l3') + tplot(['rbspa_rbspice_l3_TOFxEH_proton_omni_spin', + 'rbspa_rbspice_l3_TOFxEH_proton_omni_0-1000keV_pad_spin']) .. image:: _static/rbsp_rbspice.png :align: center @@ -65,7 +70,6 @@ Example - Energetic Particle, Composition, and Thermal Plasma Suite (ECT) - MagEIS ---------------------------------------------------------- .. autofunction:: pyspedas.rbsp.mageis diff --git a/docs/source/soho.rst b/docs/source/soho.rst new file mode 100644 index 00000000..1df92070 --- /dev/null +++ b/docs/source/soho.rst @@ -0,0 +1,84 @@ +Solar & Heliospheric Observatory (SOHO) +======================================================================== +The routines in this module can be used to load data from the Solar & Heliospheric Observatory (SOHO) mission. + + +Charge, Element, and Isotope Analysis System (CELIAS) +---------------------------------------------------------- +.. autofunction:: pyspedas.soho.celias + +Example +^^^^^^^^^ + +.. code-block:: python + + import pyspedas + from pytplot import tplot + celias_vars = pyspedas.soho.celias(trange=['2006-06-01', '2006-06-02']) + tplot(['V_p', 'N_p']) + +.. image:: _static/soho_celias.png + :align: center + :class: imgborder + + +Comprehensive Suprathermal and Energetic Particle Analyzer (COSTEP) +---------------------------------------------------------- +.. autofunction:: pyspedas.soho.costep + +Example +^^^^^^^^^ + +.. code-block:: python + + import pyspedas + from pytplot import tplot + costep_vars = pyspedas.soho.costep(trange=['2006-06-01', '2006-06-02']) + tplot(['P_int', 'He_int']) + +.. image:: _static/soho_costep.png + :align: center + :class: imgborder + + +Energetic and Relativistic Nuclei and Electron experiment (ERNE) +---------------------------------------------------------- +.. autofunction:: pyspedas.soho.erne + +Example +^^^^^^^^^ + +.. code-block:: python + + import pyspedas + from pytplot import tplot + erne_vars = pyspedas.soho.erne(trange=['2006-06-01', '2006-06-02']) + tplot('PH') + +.. image:: _static/soho_erne.png + :align: center + :class: imgborder + + +Orbit (ephemeris and attitude) data (ORBIT) +---------------------------------------------------------- +.. autofunction:: pyspedas.soho.orbit + +Example +^^^^^^^^^ + +.. code-block:: python + + import pyspedas + from pytplot import tplot + orbit_vars = pyspedas.soho.orbit(trange=['2006-06-01', '2006-06-02']) + tplot(['GSE_POS', 'GSE_VEL']) + +.. image:: _static/soho_orbit.png + :align: center + :class: imgborder + + + + + \ No newline at end of file diff --git a/docs/source/st5.rst b/docs/source/st5.rst new file mode 100644 index 00000000..7033b5ac --- /dev/null +++ b/docs/source/st5.rst @@ -0,0 +1,27 @@ +Space Technology 5 (ST5) +======================================================================== +The routines in this module can be used to load data from the Space Technology 5 (ST5) mission. + + +Magnetometer (MAG) +---------------------------------------------------------- +.. autofunction:: pyspedas.st5.mag + +Example +^^^^^^^^^ + +.. code-block:: python + + import pyspedas + from pytplot import tplot + st5_vars = pyspedas.st5.mag(trange=['2006-06-01', '2006-06-02']) + tplot(['B_SM', 'SC_POS_SM']) + +.. image:: _static/st5_mag.png + :align: center + :class: imgborder + + + + + \ No newline at end of file diff --git a/pyspedas/__init__.py b/pyspedas/__init__.py index a8188891..3360b1c9 100644 --- a/pyspedas/__init__.py +++ b/pyspedas/__init__.py @@ -1,25 +1,25 @@ from .version import version -from .utilities.data_exists import data_exists -from .utilities.tnames import tnames -from .utilities.time_string import time_string, time_datetime -from .utilities.time_double import time_float, time_double +from pytplot import data_exists +from pytplot import tnames +from pytplot import time_string, time_datetime +from pytplot import time_float, time_double from .utilities.tcopy import tcopy -from .utilities.tkm2re import tkm2re +from pytplot import tkm2re from .analysis.avg_data import avg_data -from .analysis.clean_spikes import clean_spikes +from pytplot import clean_spikes from .analysis.deriv_data import deriv_data from .analysis.dpwrspc import dpwrspc -from .analysis.subtract_average import subtract_average -from .analysis.subtract_median import subtract_median -from .analysis.time_clip import time_clip +from pytplot import subtract_average +from pytplot import subtract_median +from pytplot import time_clip from .analysis.tdeflag import tdeflag from .analysis.tdpwrspc import tdpwrspc from .analysis.tinterpol import tinterpol -from .analysis.tnormalize import tnormalize -from .analysis.tdotp import tdotp -from .analysis.tcrossp import tcrossp -from .analysis.tsmooth import tsmooth +from pytplot import tnormalize +from pytplot import tdotp +from pytplot import tcrossp +from pytplot import tsmooth from .analysis.yclip import yclip from .analysis.twavpol import twavpol from pytplot import cdf_to_tplot @@ -27,9 +27,12 @@ from .cotrans.cotrans import cotrans from .cotrans.cotrans_get_coord import cotrans_get_coord from .cotrans.cotrans_set_coord import cotrans_set_coord +from .cotrans.tvector_rotate import tvector_rotate -from .mms import mms_load_mec, mms_load_fgm, mms_load_scm, mms_load_edi, mms_load_edp, mms_load_eis, mms_load_feeps, \ - mms_load_hpca, mms_load_fpi, mms_load_aspoc, mms_load_dsp, mms_load_fsm, mms_load_state +from .mms import mms_load_mec, mms_load_fgm, mms_load_scm, mms_load_edi, \ + mms_load_edp, mms_load_eis, mms_load_feeps, \ + mms_load_hpca, mms_load_fpi, mms_load_aspoc, \ + mms_load_dsp, mms_load_fsm, mms_load_state from .mms.feeps.mms_feeps_pad import mms_feeps_pad from .mms.feeps.mms_feeps_gpd import mms_feeps_gpd from .mms.eis.mms_eis_pad import mms_eis_pad @@ -37,6 +40,7 @@ from .mms.hpca.mms_hpca_spin_sum import mms_hpca_spin_sum from .maven import maven_load +from .sosmag.load import sosmag_load from . import erg from . import ulysses @@ -63,3 +67,52 @@ from . import secs from . import kyoto from . import swarm +from . import vires +from . import cnofs +from . import lanl +from . import st5 +from . import de2 +from . import akebono +from . import soho +from . import barrel + +# set up logging/console output +import logging +from os import environ + +logging_level = environ.get('PYTPLOT_LOGGING_LEVEL') +logging_format = environ.get('PYTPLOT_LOGGING_FORMAT') +logging_date_fmt = environ.get('PYTPLOT_LOGGING_DATE_FORMAT') + +if logging_format is None: + logging_format = '%(asctime)s: %(message)s' + +if logging_date_fmt is None: + logging_date_fmt = '%d-%b-%y %H:%M:%S' + +if logging_level is None: + logging_level = logging.INFO +else: + logging_level = logging_level.lower() + if logging_level == 'debug': + logging_level = logging.DEBUG + elif logging_level == 'info': + logging_level = logging.INFO + elif logging_level == 'warn' or logging_level == 'warning': + logging_level = logging.WARNING + elif logging_level == 'error': + logging_level = logging.ERROR + elif logging_level == 'critical': + logging_level = logging.CRITICAL + +logging.captureWarnings(True) + +# basicConfig here doesn't work if it has previously been called +logging.basicConfig(format=logging_format, datefmt=logging_date_fmt, level=logging_level) + +# manually set the logger options from the defaults/environment variables +logger = logging.getLogger() +logger_handler = logger.handlers[0] # should exist since basicConfig has been called +logger_fmt = logging.Formatter(logging_format, logging_date_fmt) +logger_handler.setFormatter(logger_fmt) +logger.setLevel(logging_level) diff --git a/pyspedas/ace/__init__.py b/pyspedas/ace/__init__.py index 6c4b1f86..7a590e83 100644 --- a/pyspedas/ace/__init__.py +++ b/pyspedas/ace/__init__.py @@ -1,6 +1,7 @@ - from .load import load from pytplot import options +from pyspedas.utilities.datasets import find_datasets + def mfi(trange=['2018-11-5', '2018-11-6'], datatype='h3', @@ -82,6 +83,7 @@ def mfi(trange=['2018-11-5', '2018-11-6'], return tvars + def swe(trange=['2018-11-5', '2018-11-6'], datatype='h0', suffix='', @@ -146,6 +148,7 @@ def swe(trange=['2018-11-5', '2018-11-6'], """ return load(instrument='swe', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + def epam(trange=['2018-11-5', '2018-11-6'], datatype='k0', suffix='', @@ -211,6 +214,7 @@ def epam(trange=['2018-11-5', '2018-11-6'], """ return load(instrument='epm', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + def cris(trange=['2018-11-5', '2018-11-6'], datatype='h2', suffix='', @@ -273,6 +277,7 @@ def cris(trange=['2018-11-5', '2018-11-6'], """ return load(instrument='cris', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + def sis(trange=['2018-11-5', '2018-11-6'], datatype='k0', suffix='', @@ -460,6 +465,7 @@ def sepica(trange=['2004-11-5', '2004-11-6'], """ return load(instrument='sep', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + def swics(trange=['2018-11-5', '2018-11-6'], datatype='sw2_h3', suffix='', @@ -525,3 +531,7 @@ def swics(trange=['2018-11-5', '2018-11-6'], """ return load(instrument='swics', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + +def datasets(instrument=None, label=True): + return find_datasets(mission='ACE', instrument=instrument, label=label) diff --git a/pyspedas/ace/load.py b/pyspedas/ace/load.py index cb946046..ddd3259e 100644 --- a/pyspedas/ace/load.py +++ b/pyspedas/ace/load.py @@ -3,7 +3,7 @@ from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import cdf_to_tplot from .config import CONFIG diff --git a/pyspedas/ace/tests/tests.py b/pyspedas/ace/tests/tests.py index 116b3ef9..43f4548f 100644 --- a/pyspedas/ace/tests/tests.py +++ b/pyspedas/ace/tests/tests.py @@ -1,14 +1,21 @@ - import unittest -from pyspedas.utilities.data_exists import data_exists - +from pytplot import data_exists import pyspedas + class LoadTestCases(unittest.TestCase): def test_load_mfi_data(self): - mfi_vars = pyspedas.ace.mfi(trange=['2018-11-5', '2018-11-6']) + mfi_vars = pyspedas.ace.mfi(trange=['2018-11-5', '2018-11-6'], time_clip=True) self.assertTrue(data_exists('Magnitude')) + def test_load_mfi_notplot(self): + mfi_vars = pyspedas.ace.mfi(trange=['2018-11-5', '2018-11-6'], notplot=True) + self.assertTrue(isinstance(mfi_vars, dict)) + + def test_load_mfi_downloadonly(self): + mfi_vars = pyspedas.ace.mfi(trange=['2018-11-5', '2018-11-6'], downloadonly=True) + self.assertTrue(isinstance(mfi_vars, list)) + def test_load_swe_data(self): swe_vars = pyspedas.ace.swe() self.assertTrue(data_exists('Np')) @@ -44,5 +51,9 @@ def test_load_swi_data(self): swi_vars = pyspedas.ace.swics() self.assertTrue(data_exists('vHe2')) + def test_data_dir(self): + self.assertTrue(pyspedas.ace.config.CONFIG['local_data_dir'] == 'ace_data/') + + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/akebono/README.md b/pyspedas/akebono/README.md new file mode 100644 index 00000000..419facd7 --- /dev/null +++ b/pyspedas/akebono/README.md @@ -0,0 +1,45 @@ + +## Akebono +The routines in this module can be used to load data from the Akebono mission. + +### Instruments +- Plasma Waves and Sounder experiment (PWS) +- Radiation Moniter (RDM) +- Orbit data (orb) + +### Examples +Get started by importing pyspedas and tplot; these are required to load and plot the data: + +```python +import pyspedas +from pytplot import tplot +``` + +#### Plasma Waves and Sounder experiment (PWS) + +```python +pws_vars = pyspedas.akebono.pws(trange=['2012-10-01', '2012-10-02']) + +tplot(['akb_pws_RX1', 'akb_pws_RX2']) +``` + + +#### Radiation Moniter (RDM) + +```python +rdm_vars = pyspedas.akebono.rdm(trange=['2012-10-01', '2012-10-02']) + +tplot('akb_rdm_FEIO') +``` + + +#### Orbit data (orb) + +```python +orb_vars = pyspedas.akebono.orb(trange=['2012-10-01', '2012-10-02']) + +tplot(['akb_orb_geo', 'akb_orb_MLT']) +``` + + + \ No newline at end of file diff --git a/pyspedas/akebono/__init__.py b/pyspedas/akebono/__init__.py new file mode 100644 index 00000000..fa0279e7 --- /dev/null +++ b/pyspedas/akebono/__init__.py @@ -0,0 +1,344 @@ +from .load import load +import numpy as np +import pandas as pd +from pytplot import store_data, options +from pyspedas import time_double +from pyspedas.cotrans.xyz_to_polar import xyz_to_polar + + +def pws(trange=['2012-10-01', '2012-10-02'], + datatype='ne', + level='h1', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Plasma Waves and Sounder experiment (PWS) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + datatype: str + Data type; Valid options: + 'ne', 'npw-ds', 'npw-py', 'spw' + + level: str + Data level; options: 'h1' (default: h1) + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + tvars = load(instrument='pws', trange=trange, level=level, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if tvars is None or notplot or downloadonly: + return tvars + + return pws_postprocessing(tvars) + + +def pws_postprocessing(variables): + """ + Placeholder for PWS post-processing + """ + return variables + + +def rdm(trange=['2012-10-01', '2012-10-02'], + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Radiation Moniter (RDM) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + files = load(instrument='rdm', trange=trange, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if files is None or notplot or downloadonly: + return files + + return rdm_postprocessing(files) + + +def rdm_postprocessing(files): + """ + Load the RDM ASCII files into tplot variables + """ + data = load_csv_file(files) + values = data.to_numpy() + unix_times = time_double([ymd + '/' + hms for ymd, hms in zip(values[:, 0], values[:, 1])]) + + L = np.float64(values[:, 2]) + INV = np.float64(values[:, 3]) + FMLAT = np.float64(values[:, 4]) + MLAT = np.float64(values[:, 5]) + MLT = np.float64(values[:, 6]) + ALT = np.float64(values[:, 7]) + GLAT = np.float64(values[:, 8]) + GLON = np.float64(values[:, 9]) + RDM_E3 = np.float64(values[:, 10]) + Energy = np.zeros(len(RDM_E3)) + Energy[:] = 2.5 + + prefix_project = 'akb_' + prefix_descriptor = 'rdm_' + prefix = prefix_project + prefix_descriptor + + store_data(prefix_project+'L', data={'x': unix_times, 'y': L}) + store_data(prefix_project+'INV', data={'x': unix_times, 'y': INV}) + store_data(prefix_project+'FMLAT', data={'x': unix_times, 'y': FMLAT}) + store_data(prefix_project+'MLAT', data={'x': unix_times, 'y': MLAT}) + store_data(prefix_project+'MLT', data={'x': unix_times, 'y': MLT}) + store_data(prefix_project+'ALT', data={'x': unix_times, 'y': ALT}) + store_data(prefix_project+'GLAT', data={'x': unix_times, 'y': GLAT}) + store_data(prefix_project+'GLON', data={'x': unix_times, 'y': GLON}) + store_data(prefix+'FEIO', data={'x': unix_times, 'y': RDM_E3}) + store_data(prefix+'FEIO_Energy', data={'x': unix_times, 'y': Energy}) + + options(prefix+'FEIO', 'spec', True) + + options(prefix_project+'L', 'ytitle', 'L-value') + options(prefix_project+'INV', 'ytitle', 'Invariant Latitude [deg]') + options(prefix_project+'FMLAT', 'ytitle', 'Footprint Latitude [deg]') + options(prefix_project+'MLAT', 'ytitle', 'Magnetic Latitude [deg]') + options(prefix_project+'MLT', 'ytitle', 'Magnetic Local Time [hour]') + options(prefix_project+'ALT', 'ytitle', 'Altitude [km]') + options(prefix_project+'GLAT', 'ytitle', 'Geographic Latitude [deg]') + options(prefix_project+'GLON', 'ytitle', 'Geographic Longitude [deg]') + options(prefix+'FEIO', 'ytitle', 'Omni-directional Integral Electron Flux') + options(prefix+'FEIO', 'ysubtitle', '[/cm^22 sec str]') + options(prefix+'FEIO_Energy', 'ytitle', 'Elctron energy [MeV]') + + return [prefix_project+'L', + prefix_project+'INV', + prefix_project+'FMLAT', + prefix_project+'MLAT', + prefix_project+'MLT', + prefix_project+'ALT', + prefix_project+'GLAT', + prefix_project+'GLON', + prefix+'FEIO', + prefix+'FEIO_Energy'] + + +def orb(trange=['2012-10-01', '2012-10-02'], + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Akebono orbit data (orb) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + files = load(instrument='orb', trange=trange, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if files is None or notplot or downloadonly: + return files + + return orb_postprocessing(files) + + +def orb_postprocessing(files): + """ + Load the orbit CSV files and create the tplot variables + """ + prefix_project = 'akb_' + prefix_descriptor = 'orb_' + prefix = prefix_project + prefix_descriptor + + cols = ['pass','ut', 'ksc_azm', 'ksc_elv', 'ksc_dis', 'ksc_ang', 'syo_azm', 'syo_elv', 'syo_dis', 'syo_ang', + 'pra_azm', 'pra_elv', 'pra_dis', 'pra_ang', 'esr_azm', 'esr_elv', 'esr_dis', 'esr_ang', 'gclat','gclon', + 'inv', 'fmlat', 'mlat', 'mlt', 'bmdl_x', 'bmdl_y', 'bmdl_z', 'xxlon_sc', 'xxlat_sc', 'aheight','lsun', + 's_direc_x', 's_direc_y', 's_direc_z', 'sc_pos_x', 'sc_pos_y', 'sc_pos_z', 'sc_vel_x', 'sc_vel_y', 'sc_vel_z'] + + data = load_csv_file(files, cols=cols) + values = data.to_numpy() + unix_times = time_double([date[2:4] + '-' + date[4:6] + '-' + date[0:2] + '/' + date[6:8] + ':' + date[8:10] + ':' + date[10:12] for date in data['ut']]) + + km_in_re = 6374.4 + + xyz = np.array([[data['sc_pos_x']], [data['sc_pos_y']], [data['sc_pos_z']]]).transpose([2, 0, 1]).squeeze() + xyz = np.float64(xyz) + xyz_re = xyz/km_in_re + r_theta_phi = xyz_to_polar(xyz) + rr = r_theta_phi[:, 0] + th = r_theta_phi[:, 1] + ph = r_theta_phi[:, 2] + store_data(prefix + 'geo', data={'x': unix_times, 'y': xyz_re}) + store_data(prefix + 'gdlat', data={'x': unix_times, 'y': np.float64(data['gclat'])}) + store_data(prefix + 'gdlon', data={'x': unix_times, 'y': np.float64(data['gclon'])}) + store_data(prefix + 'inv', data={'x': unix_times, 'y': np.float64(data['inv'])}) + store_data(prefix + 'fmlat', data={'x': unix_times, 'y': np.float64(data['fmlat'])}) + store_data(prefix + 'MLT', data={'x': unix_times, 'y': np.float64(data['mlt'])}) + store_data(prefix + 'gcalt', data={'x': unix_times, 'y': rr / km_in_re}) + store_data(prefix + 'gclat', data={'x': unix_times, 'y': th}) + store_data(prefix + 'gclon', data={'x': unix_times, 'y': ph}) + options(prefix + 'geo', 'ytitle', 'GEO') + options(prefix + 'geo', 'ysubtitle', '[Re]') + options(prefix + 'gdlat', 'ytitle', 'Geodetic latitude of the magnetic footprint') + options(prefix + 'gdlat', 'ysubtitle', '(120km altitude) [deg]') + options(prefix + 'gdlon', 'ytitle', 'Geodetic longitude of the magnetic footprint') + options(prefix + 'gdlon', 'ysubtitle', '(120km altitude) [deg]') + options(prefix + 'inv', 'ytitle', 'Invariant Latitude of the magnetic footprint') + options(prefix + 'inv', 'ysubtitle', '(120km altitude) [deg]') + options(prefix + 'fmlat', 'ytitle', 'Geomagnetic Latitude of the magnetic footprint') + options(prefix + 'fmlat', 'ysubtitle', '(120km altitude) [deg]') + options(prefix + 'MLT', 'ytitle', 'Magnetic Local Time') + options(prefix + 'MLT', 'ysubtitle', '[hours]') + options(prefix + 'gcalt', 'ytitle', 'Geocentric Altitude') + options(prefix + 'gcalt', 'ysubtitle', '[Re]') + options(prefix + 'gclat', 'ytitle', 'Geocentric Latitude') + options(prefix + 'gclat', 'ysubtitle', '[deg]') + options(prefix + 'gclon', 'ytitle', 'Geocentric Longitude') + options(prefix + 'gclon', 'ysubtitle', '[deg]') + + return [prefix + 'geo', + prefix + 'gdlat', + prefix + 'gdlon', + prefix + 'inv', + prefix + 'fmlat', + prefix + 'MLT', + prefix + 'gcalt', + prefix + 'gclat', + prefix + 'gclon'] + + +def load_csv_file(filenames, cols=None): + """ + Loads a list of CSV/txt files into pandas data frames + """ + if not isinstance(filenames, list): + filenames = [filenames] + df = pd.concat((pd.read_csv(f, header=0, delim_whitespace=True, dtype=str, names=cols) for f in filenames), ignore_index=True) + return df diff --git a/pyspedas/akebono/config.py b/pyspedas/akebono/config.py new file mode 100644 index 00000000..2084e2f9 --- /dev/null +++ b/pyspedas/akebono/config.py @@ -0,0 +1,12 @@ +import os + +CONFIG = {'local_data_dir': 'akebono_data/', + 'remote_data_dir': 'http://darts.isas.jaxa.jp/stp/data/exosd/'} + +# override local data directory with environment variables +if os.environ.get('SPEDAS_DATA_DIR'): + CONFIG['local_data_dir'] = os.sep.join([os.environ['SPEDAS_DATA_DIR'], 'akebono']) + +if os.environ.get('AKEBONO_DATA_DIR'): + CONFIG['local_data_dir'] = os.environ['AKEBONO_DATA_DIR'] + \ No newline at end of file diff --git a/pyspedas/akebono/load.py b/pyspedas/akebono/load.py new file mode 100644 index 00000000..966b318f --- /dev/null +++ b/pyspedas/akebono/load.py @@ -0,0 +1,73 @@ +import logging +from pyspedas.utilities.dailynames import dailynames +from pyspedas.utilities.download import download +from pytplot import time_clip as tclip +from pytplot import cdf_to_tplot + +from .config import CONFIG + + +def load(trange=['2012-10-01', '2012-10-02'], + instrument='pws', + datatype='epd', + level='l2', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Akebono mission; this function is not meant + to be called directly; instead, see the wrappers: + + pyspedas.akebono.pws + pyspedas.akebono.rdm + pyspedas.akebono.orb + + """ + prefix = '' + + if instrument == 'pws': + # only PWS data are available in CDF files + prefix = 'akb_pws_' + pathformat = instrument + '/NPW-DS/%Y/ak_h1_pws_%Y%m%d_v??.cdf' + elif instrument == 'rdm': + prefix = 'akb_rdm_' + pathformat = instrument + '/%Y/sf%y%m%d' + elif instrument == 'orb': + prefix = 'akb_orb_' + pathformat = 'orbit/daily/%Y%m/ED%y%m%d.txt' + else: + logging.error('Unknown instrument: ' + instrument) + return + + # find the full remote path names using the trange + remote_names = dailynames(file_format=pathformat, trange=trange) + + out_files = [] + + files = download(remote_file=remote_names, remote_path=CONFIG['remote_data_dir'], local_path=CONFIG['local_data_dir'], no_download=no_update) + if files is not None: + for file in files: + out_files.append(file) + + out_files = sorted(out_files) + + if downloadonly or instrument != 'pws': + return out_files + + tvars = cdf_to_tplot(out_files, prefix=prefix, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, notplot=notplot) + + if notplot: + return tvars + + if time_clip: + for new_var in tvars: + tclip(new_var, trange[0], trange[1], suffix='') + + return tvars + + \ No newline at end of file diff --git a/pyspedas/akebono/tests/__init__.py b/pyspedas/akebono/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pyspedas/akebono/tests/tests.py b/pyspedas/akebono/tests/tests.py new file mode 100644 index 00000000..37be8e5c --- /dev/null +++ b/pyspedas/akebono/tests/tests.py @@ -0,0 +1,37 @@ +import os +import unittest +from pytplot import data_exists +import pyspedas + + +class LoadTestCases(unittest.TestCase): + def test_load_pws_data(self): + out_vars = pyspedas.akebono.pws(time_clip=True) + self.assertTrue(data_exists('akb_pws_RX1')) + self.assertTrue(data_exists('akb_pws_RX2')) + + def test_load_rdm_data(self): + out_vars = pyspedas.akebono.rdm() + self.assertTrue(data_exists('akb_L')) + self.assertTrue(data_exists('akb_MLT')) + self.assertTrue(data_exists('akb_rdm_FEIO')) + + def test_load_orb_data(self): + out_vars = pyspedas.akebono.orb() + self.assertTrue(data_exists('akb_orb_geo')) + self.assertTrue(data_exists('akb_orb_gdlat')) + self.assertTrue(data_exists('akb_orb_gdlon')) + + def test_load_notplot(self): + out_vars = pyspedas.akebono.pws(notplot=True) + self.assertTrue('akb_pws_RX1' in out_vars) + + def test_downloadonly(self): + files = pyspedas.akebono.pws(downloadonly=True, trange=['2012-10-01', '2012-10-02']) + self.assertTrue(os.path.exists(files[0])) + + +if __name__ == '__main__': + unittest.main() + + \ No newline at end of file diff --git a/pyspedas/analysis/avg_data.py b/pyspedas/analysis/avg_data.py index b85e2425..57d905ab 100644 --- a/pyspedas/analysis/avg_data.py +++ b/pyspedas/analysis/avg_data.py @@ -6,13 +6,14 @@ Similar to avg_data.pro in IDL SPEDAS. """ +import logging import numpy as np -import pyspedas -import pytplot +from pyspedas import tnames, time_float +from pytplot import store_data, get_data -def avg_data(names, dt=None, width=60, noremainder=False, - new_names=None, suffix=None, overwrite=None): +def avg_data(names, trange=[], res=None, width=None, + new_names=None, suffix=None, overwrite=False): """ Get a new tplot variable with averaged data. @@ -20,38 +21,41 @@ def avg_data(names, dt=None, width=60, noremainder=False, ---------- names: str/list of str List of pytplot names. - dt: float, optional - Time window in seconds for averaging data. It can be less than 1 sec. + trange: list of float, optional + Start time, end time. + If empty, the data start and end time will be used. + res: float, optional + Time resolution in seconds for averaging data. + It can be less than 1 sec. + Default is 60 sec. width: int, optional Number of values for the averaging window. - Default is 60 points (usually this means 60 seconds). - If dt is set, then width is ignored. - noremainder: boolean, optional - If True, the remainter (last part of data) will not be included. - If False. the remainter will be included. + If res is set, then width is ignored. new_names: str/list of str, optional List of new_names for pytplot variables. If not given, then a suffix is applied. suffix: str, optional - A suffix to apply. Default is '-avg'. + A suffix to apply. + Default is '-avg'. overwrite: bool, optional Replace the existing tplot name. + Default is False. Returns ------- None. """ - old_names = pyspedas.tnames(names) + old_names = tnames(names) - if len(old_names) < 1: - print('avg_data error: No pytplot names were provided.') + if names is None or len(old_names) < 1: + logging.error('avg_data error: No pytplot names were provided.') return if suffix is None: suffix = '-avg' - if overwrite is not None: + if overwrite: n_names = old_names elif new_names is None: n_names = [s + suffix for s in old_names] @@ -67,93 +71,134 @@ def avg_data(names, dt=None, width=60, noremainder=False, for old_idx, old in enumerate(old_names): new = n_names[old_idx] - d = pytplot.data_quants[old].copy() - data = d.values - time = d.time.values + # Get times and data + d = get_data(old) + metadata = get_data(old, metadata=True) + time = d[0] + time = np.array(time_float(time)) + time_len = len(time) + + data = np.array(d[1]) dim = data.shape dim0 = dim[0] + if dim0 != time_len: + logging.error('avg_data: Data and time length mismatch.') + continue if len(dim) < 2: dim1 = 1 else: dim1 = dim[1] - new_data = [] - new_time = [] - if dt is None: - # Use width - width = int(width) - # print(dim0, width) - for i in range(0, dim0, width): - last = (i + width) if (i + width) < dim0 else dim0 - # idx = int(i + width/2) # redefined below before it's ever used? - if (i + width > dim0) and noremainder: - continue # Skip the last part of data. - else: - idx = int((i + last - 1)/2) # Include the last part. - new_time.append(time[idx]) - - if dim1 < 2: - nd0 = np.average(data[i:last]) + # Data may also contain v, v1, v2, v3 + process_energies = [] + retain_energies = [] + for i in range(len(d)): + if i > 1: + if len(d[i]) == len(time): + process_energies.append(i) else: - nd0 = [] - for j in range(dim1): - nd0.append(np.average(data[i:last, j])) - new_data.append(nd0) + # These will retained in the results as-is + retain_energies.append(i) + process_v = {} + for i in process_energies: + process_v[d._fields[i]] = [] + + # Find start and end times + if trange is not None: + trange = time_float(trange) + if len(trange) == 2 and trange[0] < trange[1]: + time_start = trange[0] + time_end = trange[1] + else: + time_start = time[0] + time_end = time[-1] + + if time_start < time[0]: + time_start = time[0] + if time_end > time[-1]: + time_end = time[-1] + + # Check for empty set + count_in_range = len(time[(time >= time_start) & (time <= time_end)]) + if time_end <= time_start or count_in_range < 2: + logging.error('avg_data: No time values in provided time range.') + continue + + # Find time bins + + time_duration = time_end - time_start + if res is None and width is None: + res = 60 # Default is 60 sec + + if res is not None: + # Given the resolution, compute bins + dt = res + bin_count = int(time_duration/dt) + ind = np.floor((time-time_start)/dt) + else: + # Given the width, compute bins + bins = np.arange(count_in_range) + ind = np.floor(bins/width) + bin_count = int(count_in_range/width) + dt = time_duration/bin_count + + if bin_count < 2: + msg = 'avg_data: too few bins. Bins=' + str(bin_count) \ + + ', Data points=' + str(count_in_range) + logging.error(msg) + continue + + # Split time into bins + mdt = (time_end-time_start)/dt + if (mdt-int(mdt) >= 0.5): + max_ind = np.ceil(mdt) else: - # Use dt - dt = float(dt) - timedbl = np.array(pyspedas.time_float(time)) - alldt = timedbl[-1] - timedbl[0] - if not dt > 0.0: - print("avg_data: Time interval dt<=0.0. Exiting.") - return - if dt > alldt: - print("avg_data: Time interval dt is too large. Exiting.") - return - - # Find bins for time: equal bins of length dt. - bincount = int(alldt/dt) - if alldt % dt > 0.0 and not noremainder: # residual bin - # Include the last bin which might not be the same size. - bincount += 1 - - time0 = timedbl[0] - maxtime = timedbl[-1] - for i in range(bincount): - time1 = time0 + dt - bintime = time0 + dt/2.0 - if bintime > maxtime: - bintime = maxtime - new_time.append(bintime) - # Find all indexes between time0 and time1. - idx = np.where((timedbl >= time0) & (timedbl < time1)) - - # Check if idx is empty, ie. there is a gap in data. - idx_is_empty = False - if not idx: - idx_is_empty = True - elif len(idx) == 1: - if len(idx[0]) == 0: - idx_is_empty = True - - if dim1 < 2: - if idx_is_empty: # Empty list. - nd0 = np.nan - else: - nd0 = np.average(data[idx]) + max_ind = np.floor(mdt) + w1 = np.asarray(ind < 0).nonzero() + ind[w1] = -1 + w2 = np.asarray(ind >= max_ind).nonzero() + ind[w2] = -1 + + # Find new times + mx = np.max(ind)+1 + new_times = (np.arange(mx)+0.5)*dt + time_start + + # Find new data + new_data = [] + for i in range(int(max_ind)): + if i < 0: + continue + + idx0 = np.asarray(ind == i).nonzero() + isempty = True if len(idx0) < 1 else False + + if dim1 < 2: + nd0 = np.nan if isempty else np.average(data[idx0]) + else: + nd0 = [] + for j in range(dim1): + nd0.append(np.nan) if isempty else nd0.append(np.average(data[idx0, j])) + new_data.append(nd0) + + for i in process_energies: + # The following processes v, v1, v2, v3 + dime1 = len(d[i][0]) + if dime1 < 2: + nd1 = np.nan if isempty else np.average(d[i][idx0]) else: - nd0 = [] - for j in range(dim1): - if idx_is_empty: # Empty list. - nd0.append(np.nan) - else: - nd0.append(np.average(data[idx, j])) - new_data.append(nd0) - time0 = time1 - - pytplot.store_data(new, data={'x': new_time, 'y': new_data}) - # copy attributes - pytplot.data_quants[new].attrs = d.attrs.copy() - - print('avg_data was applied to: ' + new) + nd1 = [] + for j in range(dime1): + nd1.append(np.nan) if isempty else nd1.append(np.average(d[i][idx0, j])) + process_v[d._fields[i]].append(nd1) + + # Create the new pytplot variable + data_dict = {'x': new_times, 'y': new_data} + for i in retain_energies: + data_dict[d._fields[i]] = d[i] + for i in process_energies: + data_dict[d._fields[i]] = process_v[d._fields[i]] + + store_data(new, data=data_dict, attr_dict=metadata) + + logging.info('avg_data was applied to: ' + new) diff --git a/pyspedas/analysis/clean_spikes.py b/pyspedas/analysis/clean_spikes.py index ad4f8421..1a4601f2 100644 --- a/pyspedas/analysis/clean_spikes.py +++ b/pyspedas/analysis/clean_spikes.py @@ -6,11 +6,8 @@ Similar to clean_spikes.pro in IDL SPEDAS. """ -import numpy as np -import pyspedas +import logging import pytplot -from pyspedas.analysis.subtract_average import subtract_average -from pyspedas.analysis.tsmooth import tsmooth def clean_spikes(names, nsmooth=10, thresh=0.3, sub_avg=False, @@ -42,72 +39,7 @@ def clean_spikes(names, nsmooth=10, thresh=0.3, sub_avg=False, None. """ - old_names = pyspedas.tnames(names) - - if len(old_names) < 1: - print('clean_spikes error: No pytplot names were provided.') - return - - if suffix is None: - suffix = '-despike' - - if overwrite is not None: - n_names = old_names - elif new_names is None: - n_names = [s + suffix for s in old_names] - else: - n_names = new_names - - if isinstance(n_names, str): - n_names = [n_names] - - if len(n_names) != len(old_names): - n_names = [s + suffix for s in old_names] - - for old_idx, old in enumerate(old_names): - new = n_names[old_idx] - tmp = new + '_tmp_data' - - # Create new - if old != new: - pyspedas.tcopy(old, new) - - # Perform subtract_average or just copy the values - if sub_avg: - subtract_average(new, new_names=tmp) - else: - pyspedas.tcopy(new, tmp) - - # Find spikes - tmps = tmp + '-s' - tsmooth(tmp, new_names=tmps, width=nsmooth) - ds0 = pytplot.get_data(tmps) # smoothed out values - ds = ds0[1] - dor0 = pytplot.get_data(tmp) # original values - d0 = dor0[1] - dn = d0.copy() # final values - - dim = dn.shape - if len(dim) == 1: - # One dim data. - for i in range(dim[0]): - # compare smoothed out values to original values - if abs(d0[i] - ds[i]) > thresh * abs(ds[i]): - dn[i] = np.NaN # for spikes, set to NaN - else: - # More than one dim data. - for j in range(dim[1]): - # print("j = ", j) - for i in range(dim[0]): - # compare smoothed out values to original values - if abs(d0[i, j] - ds[i, j]) > thresh * abs(ds[i, j]): - dn[i, j] = np.NaN # for spikes, set to NaN - - # pytplot.data_quants[new] = d - pytplot.replace_data(new, dn) - - # remove temp data - del pytplot.data_quants[tmp] - del pytplot.data_quants[tmps] - - print('clean_spikes was applied to: ' + new) + logging.info("clean_spikes has been moved to the pytplot.tplot_math package. Please update your imports!") + logging.info("This version will eventually be removed.") + pytplot.tplot_math.clean_spikes(names=names, nsmooth=nsmooth, thresh=thresh, sub_avg=sub_avg, new_names=new_names, + suffix=suffix,overwrite=overwrite) diff --git a/pyspedas/analysis/deriv_data.py b/pyspedas/analysis/deriv_data.py index cb736ab1..f95f6ce0 100644 --- a/pyspedas/analysis/deriv_data.py +++ b/pyspedas/analysis/deriv_data.py @@ -6,6 +6,10 @@ Similar to deriv_data.pro in IDL SPEDAS. """ +import logging + +import numpy as np + import pyspedas import pytplot @@ -35,7 +39,7 @@ def deriv_data(names, new_names=None, suffix=None, overwrite=None): old_names = pyspedas.tnames(names) if len(old_names) < 1: - print('deriv_data error: No pytplot names were provided.') + logging.error('deriv_data error: No pytplot names were provided.') return if suffix is None: @@ -55,13 +59,7 @@ def deriv_data(names, new_names=None, suffix=None, overwrite=None): n_names = [s + suffix for s in old_names] for i, old in enumerate(old_names): - new = n_names[i] - - if new != old: - pyspedas.tcopy(old, new) - - data = pytplot.data_quants[new] - data_new = data.differentiate('time').copy() - pytplot.data_quants[new].values = data_new.values - - print('deriv_data was applied to: ' + new) + data = pytplot.get_data(old) + data_grad = np.gradient(data.y, data.times, axis = 0) + pytplot.store_data(n_names[i], data={'x': data.times, 'y': data_grad}) + logging.info('deriv_data was applied to: ' + n_names[i]) diff --git a/pyspedas/analysis/dpwrspc.py b/pyspedas/analysis/dpwrspc.py index 06a2c9d5..cd126d8e 100644 --- a/pyspedas/analysis/dpwrspc.py +++ b/pyspedas/analysis/dpwrspc.py @@ -6,6 +6,7 @@ Similar to dpwrspc.pro in IDL SPEDAS. """ +import logging import numpy as np @@ -64,10 +65,9 @@ def dpwrspc(time, quantity, nboxpoints=256, nshiftpoints=128, binsize=3, # remove NaNs from the data where_finite = np.where(np.isnan(quantity) == False) - quantity2process = quantity[where_finite[0]] times2process = time[where_finite[0]] - nboxpnts = nboxpoints + nboxpnts = int(nboxpoints) nshiftpnts = nshiftpoints totalpoints = len(times2process) @@ -76,20 +76,20 @@ def dpwrspc(time, quantity, nboxpoints=256, nshiftpoints=128, binsize=3, # test nspectra, if the value of nshiftpnts is much smaller than # nboxpnts/2 strange things happen - nbegin = np.array([nshiftpnts*i for i in range(nspectra)]) + nbegin = np.array([nshiftpnts*i for i in range(nspectra)], dtype=np.int64) nend = nbegin + nboxpnts okspec = np.where(nend <= totalpoints-1) if len(okspec[0]) <= 0: - print('Not enough points for a calculation') + logging.error('Not enough points for a calculation') return tdps = np.zeros(nspectra) nfreqs = int(int(nboxpnts/2)/binsize) if nfreqs <= 1: - print('Not enough frequencies for a calculation') + logging.error('Not enough frequencies for a calculation') return dps = np.zeros([nspectra, nfreqs]) @@ -99,14 +99,14 @@ def dpwrspc(time, quantity, nboxpoints=256, nshiftpoints=128, binsize=3, nbegin = int(nthspectrum*nshiftpnts) nend = nbegin + nboxpnts - if nend <= totalpoints-1: + if nend <= totalpoints: t = times2process[nbegin:nend] t0 = t[0] t = t - t0 x = quantity2process[nbegin:nend] # Use center time - tdps[nthspectrum] = (times2process[nbegin]+times2process[nend])/2.0 + tdps[nthspectrum] = (times2process[nbegin]+times2process[nend-1])/2.0 if noline is False: coef = np.polyfit(t, x, 1) @@ -120,7 +120,7 @@ def dpwrspc(time, quantity, nboxpoints=256, nshiftpoints=128, binsize=3, bign = nboxpnts if bign % 2 != 0: - print('dpwrspc: needs an even number of data points,\ + logging.warning('dpwrspc: needs an even number of data points,\ dropping last point...') t = t[0:bign-1] x = x[0:bign-1] @@ -184,4 +184,4 @@ def dpwrspc(time, quantity, nboxpoints=256, nshiftpoints=128, binsize=3, dps[nthspectrum, :] = power fdps[nthspectrum, :] = freqcenter - return (tdps, fdps, dps) + return tdps, fdps, dps diff --git a/pyspedas/analysis/lingradest.py b/pyspedas/analysis/lingradest.py index 9333deba..3a90887f 100644 --- a/pyspedas/analysis/lingradest.py +++ b/pyspedas/analysis/lingradest.py @@ -1,5 +1,7 @@ +import logging import numpy as np + def lingradest(Bx1, Bx2, Bx3, Bx4, By1, By2, By3, By4, Bz1, Bz2, Bz3, Bz4, @@ -41,7 +43,7 @@ def lingradest(Bx1, Bx2, Bx3, Bx4, len(By1) != datarrLength or len(By2) != datarrLength or len(By3) != datarrLength or len(By4) != datarrLength or \ len(Bz1) != datarrLength or len(Bz2) != datarrLength or len(Bz3) != datarrLength or len(Bz4) != datarrLength or \ R1.shape[0] != datarrLength or R2.shape[0] != datarrLength or R3.shape[0] != datarrLength or R4.shape[0] != datarrLength: - print('Problem with input sizes; all input data should be interpolated to the same time stamps') + logging.error('Problem with input sizes; all input data should be interpolated to the same time stamps') return Rb = np.zeros((datarrLength, 3)) @@ -152,9 +154,9 @@ def lingradest(Bx1, Bx2, Bx3, Bx4, RcurvB[i] = curvB[i]**(-1) - print('Calculations completed') + logging.info('Calculations completed') return {'Bxbc': Bxbc, 'Bybc': Bybc, 'Bzbc': Bzbc, 'Bbc': Bbc, 'LGBx': LGBx, 'LGBy': LGBy, 'LGBz': LGBz, 'LCxB': LCxB, 'LCyB': LCyB, 'LCzB': LCzB, 'LD': LD, - 'curv_x_B': curv_x_B, 'curv_y_B': curv_y_B, 'curv_z_B': curv_z_B, 'RcurvB': RcurvB} \ No newline at end of file + 'curv_x_B': curv_x_B, 'curv_y_B': curv_y_B, 'curv_z_B': curv_z_B, 'RcurvB': RcurvB} diff --git a/pyspedas/analysis/neutral_sheet.py b/pyspedas/analysis/neutral_sheet.py new file mode 100644 index 00000000..5f06adef --- /dev/null +++ b/pyspedas/analysis/neutral_sheet.py @@ -0,0 +1,532 @@ +import logging +import numpy as np +from geopack.geopack import recalc as geopack_recalc +from pyspedas import cotrans, time_double + + +def sm_ns_model(time, gsm_pos, sc2NS=False): + """ + This routine calculates the NS position along the zaxis at a specific x and y location. + """ + # convert gsm to sm coordinates + sm_pos = cotrans(time_in=time, data_in=gsm_pos, coord_in='gsm', coord_out='sm') + zns = gsm_pos[:, 2] - sm_pos[:, 2] + if not sc2NS: + return zns + else: + sc2NS = gsm_pos[:, 2] - zns + return sc2NS + + +def themis_ns_model(time, gsm_pos, sc2NS=False): + """ + NAME: + themis_ns_model + PURPOSE: + This routine calculates the position along the zaxis at a specific + x and y location. The themis model is used for this calculation. + The themis model uses z-sm (converted from z-gsm) for the inner probes + and the Hammond model for the outer probes. + INPUT: + time - string or double format + double(s) seconds since 1970 + string(s) format: YYYY-MM-DD/hh:mm:ss + gsm_pos - position vector in GSM coordinates in re (pos[*,3]) + OUTPUT: returns Z displacement of the neutral sheet above or below the XY plane in Re (zgsm of the NS) + Value is positive if NS is above z=0 gsm plane, negative if below + KEYWORDS + sc2NS - if set returns Z displacement from the spacecraft to the neutral sheet + Value is positive if the NS is northward of the SC location, and negative if below + NOTES; + Reference: + The themis model uses z-sm (converted from z-gsm) for the inner probes + and the Hammond model (default) for the outer probes. The algorithm can be found + in ssllib neutralsheet.pro. + HISTORY: + """ + # initialize constants and variables + re = 6378. + h0 = 8.6 # 10.5 # hinge point of the neutral sheet + rad = np.pi/180. + dz2NS = np.zeros(len(time)) + + # constants used in hammond model + H1=8.6 + Y0=20.2 + D=12.2 + + # calculate the radial distance + rdist = np.sqrt(gsm_pos[:,0]**2 + gsm_pos[:,1]**2 + gsm_pos[:,2]**2) + + # Use the sm coordinates for radial distances <= h0 (8.6) + sm_ind = np.argwhere(rdist <= h0).flatten() + if len(sm_ind) > 0: + sm_pos = cotrans(time_in=time[sm_ind], data_in=gsm_pos[sm_ind,:], coord_in='gsm', coord_out='sm') + dz2NS[sm_ind] = -sm_pos[:, 2] + + # Use the Hammond model for radial distances > h0 (8.6) + lr_ind = np.argwhere(rdist > h0).flatten() + if len(lr_ind) > 0: + # initialize variables + x = gsm_pos[lr_ind, 0] + y = gsm_pos[lr_ind, 1] + z = gsm_pos[lr_ind, 2] + tilt = np.zeros(len(x)) + # check input time format and convert to doy, hr, min + for i in range(len(x)): + # calculate the tilt in degrees + tilt[i] = geopack_recalc(time_double(time[lr_ind[i]])) + + # hammond model + iless = np.argwhere(np.abs(y) < Y0).flatten() + if len(iless) > 0: + dz2NS[lr_ind[iless]] = ((H1+D)*np.sqrt(1-y[iless]**2/Y0**2)-D)*np.sin(tilt[iless]) + + imore = np.argwhere(np.abs(y) >= Y0).flatten() + if len(imore) > 0: + dz2NS[lr_ind[imore]] = -D*np.sin(tilt[imore]) + + if not sc2NS: + return gsm_pos[:, 2] - (-dz2NS) + else: + return -dz2NS + + +def aen_ns_model(time, gsm_pos, sc2NS=False): + """ + NAME: + aen_ns_model + + PURPOSE: This program is to find the AEN(Analytical Equatorial Neutral) sheet in the + magnetopause in different time and position + + INPUT: + time - string or double format + double(s) seconds since 1970 + string(s) format: YYYY-MM-DD/hh:mm:ss + gsm_pos - position vector in GSM coordinates in re (pos[*,3]) + + OUTPUT: returns Z displacement of the neutral sheet above or below the XY plane in Re (zgsm of the NS) + Value is positive if NS is above z=0 gsm plane, negative if below + + KEYWORDS + sc2NS - if set returns Z displacement from the spacecraft to the neutral sheet + Value is positive if the NS is northward of the SC location, and negative if below + + NOTES: + + References: + (1) AEN(Analytical Equatorial Neutral): + Zhu, M. and R.-L. Xu, 1994, A continuous neutral sheet model and a normal + curved coordinate system in the magnetotail, Chinese J. Space Science, 14, + (4)269, (in Chinese). + Wang, Z.-D. and R.-L. Xu, Neutral Sheet Observed on ISEE Satellite, + Geophysical Research Letter, 21, (19)2087, 1994. + (2) Magnetopause model: + Sibeck, D. G., R. E. Lopez, and E. C. Roelof, Solar wind control of the + magnetopause shape, location, and motion, J. Grophys. Res., 96, 5489, 1991 + + HISTORY: + + """ + # initialize constants + h0 = 12.6/np.pi + + dz2ns = np.zeros(len(time)) + + for i in range(len(time)): + # calculate the tilt angle + tt = geopack_recalc(time_double(time[i])) + + # calculate the position of the neutral sheet + dz2ns[i] = -h0 * np.sin(tt) * np.arctan(gsm_pos[i,0]/5) * (2*np.cos(gsm_pos[i,1]/6)) + + if not sc2NS: + return dz2ns + else: + return gsm_pos[:, 2]-dz2ns + + +def den_ns_model(time, gsm_pos, sc2NS=False): + """ + NAME: + den_ns_model + PURPOSE: + This program finds the DEN(Displaced Equatorial Neutral) sheet inside + the magnetopause in different tine and positions. The routine calculates + the position along the zaxis at a specific location. + INPUT: + time - string or double format + double(s) seconds since 1970 + string(s) format: YYYY-MM-DD/hh:mm:ss + gsm_pos - position vector in GSM coordinates in re (pos[*,3]) + OUTPUT: returns Z displacement of the neutral sheet above or below the XY plane in Re (zgsm of the NS) + Value is positive if NS is above z=0 gsm plane, negative if below + KEYWORDS + sc2NS - if set returns Z displacement from the spacecraft to the neutral sheet + Value is positive if the NS is northward of the SC location, and negative if below + NOTES: + References: + (1) DEN(Displaced Equatorial Neutral): + Xu, R.-L., A Displaced Equatorial Neutral Sheet Surface Observed on ISEE-2 + Satellite, J. Atmospheric and Terrestrial Phys., 58, 1085, 1991 + (2) Magnetopause model: + Sibeck, D. G., R. E. Lopez, and R. C. Roelof, Solar wind control of the + magnetopause shape, location, and motion, J. Grophys. Res., 96, 5489, 1991 + Original Authors of the FORTRAN source code: + Ronglan XU and Lei LI, Center for Space Sci. and Applied Res., + Chinese Academy of Sciences, PO Box 8701, Beijing 100080, China + E-mail: XURL@SUN.IHEP.AC.CN, XURL@SUN20.CSSAR.AC.CN + This source code was ported from the original FORTRAN source code into IDL + The original source code only calculated to 10.05 RE. In this IDL version + that restriction was increased to 25. + HISTORY: + """ + # calculate the position of the neutral sheet along z axis + H = 25.5 + H1 = 25.05 + + dz2ns = np.zeros(len(time)) + + for i in range(len(time)): + done = 0 + xgsm = gsm_pos[i,0] + ygsm = gsm_pos[i,1] + + # get tilt angle of magnetic pole + tilt = geopack_recalc(time_double(time[i])) + + if xgsm > -100.: + d = sd1(tilt, H, H1, xgsm) + ym21 = ((H1*(H+d))**2) * (1-(xgsm/(H*np.cos(tilt)))**2) + ym22 = (H+d)**2 - (d-xgsm/np.cos(tilt))**2 + ym2 = ym21/ym22 + if ym2 < 0: + #ie[i] = 2 + continue + ym = np.sqrt(ym2) + xd2 = ((H*np.cos(tilt))**2) * (1-(ygsm/H1)**2) + if np.abs(ygsm) > H1: + xd2 = 0 + # find the equatorial region + xd = np.sqrt(xd2) + rd = np.sqrt(xd**2+ygsm**2) + rsm = np.sqrt(xgsm**2+ygsm**2) + if xgsm > 0 or rsm <= rd: + dz2ns[i] = -xgsm*np.sin(tilt)/np.cos(tilt) + done = 1 + if np.abs(ygsm) > ym and done != 1: + dz2ns[i] = -d*np.sin(tilt) + done = 1 + if done != 1: + dz2ns[i] = ((H+d)*np.sqrt(1-(ygsm**2)/ym2)-d)*np.sin(tilt) + + if not sc2NS: + return dz2ns + else: + sc2NS = gsm_pos[:,2] - dz2ns + return sc2NS + + +def sfa4(aa, bb, cc, dd): + ndx = 0 + xmin = 0 + xmax = 50 + ndxmax = 3 + dx = 1 + x = xmin + yy = x**4 + aa*x**3 + bb*x**2 + cc*x + dd + + while ndx <= ndxmax: + x = x+dx + if x >= xmax: + ndx = 0 + return x + y = x**4 + aa*x**3 + bb*x**2 + cc*x + dd + ry = y/yy + if ry < 0: + x = x-dx + dx = dx/10. + ndx = ndx+1 + else: + yy = y + return x + + +def sd1(til, H, H1, xgsm): + ct = np.cos(til) + xx = xgsm + xh = -H*ct + if xgsm >= xh: + xx = xh + + # calculate the radius of the cross section + if xx <= -5.: + rm = 9*(10-3*xx)/(10-xx)+3 + if xx > -5.: + rm = np.sqrt(18**2-(xx+5)**2) + rm2 = rm**2 + + # in cross_section areas above and below the neutral + # sheet + aa = 4*H-(32*rm2*H**2)/(np.pi**2*H1**2*(H-xx/ct)) + bb = 2*H**2*(3.-8.*rm2/(np.pi**2*H1**2)) + cc = 4*(H**3) + dd = H**4 + x = sfa4(aa, bb, cc, dd) + + d = x + if xgsm >= xh: + fk = -x/np.sqrt(-xh) + d = -fk*np.sqrt(-xgsm) + return d + + +def fairfield_ns_model(time, gsm_pos, sc2NS=False): + """ + NAME: + fairfield_NS_model + + PURPOSE: + This routine calculates the position along the zaxis at a specific + x and y location. The Fairfield model is used to this calculation. + + INPUT: + time - string or double format + double(s) seconds since 1970 + string(s) format: YYYY-MM-DD/hh:mm:ss + gsm_pos - position vector in GSM coordinates in re (pos[*,3]) + + OUTPUT: returns Z displacement of the neutral sheet above or below the XY plane in Re (zgsm of the NS) + Value is positive if NS is above z=0 gsm plane, negative if below + + KEYWORDS + sc2NS - if set returns Z displacement from the spacecraft to the neutral sheet + Value is positive if the NS is northward of the SC location, and negative if below + + NOTES: + Reference: + A statistical determination of the shape and position of the + geomagnetic neutral sheet, Journal of Geophysical Research, + Vol. 85, No A2, pages 775-780, February 1, 1980 + Author - D. Fairfield + + HISTORY: + """ + + # constants (in re) + h0 = 10.5 + y0 = 22.5 + d = 14. + + dz2NS = np.zeros(len(time)) + tilt = np.zeros(len(time)) + + for i in range(len(time)): + # calculate tilt angle of geomagnetic axis + tilt[i] = geopack_recalc(time_double(time[i])) + + # calculate the position of the neutral sheet along z axis + y_ge_y0 = np.argwhere(np.abs(gsm_pos[:,0]) >= y0).flatten() + y_lt_y0 = np.argwhere(np.abs(gsm_pos[:,0]) < y0).flatten() + if len(y_ge_y0) > 0: + dz2NS[y_ge_y0] = -d*np.sin(tilt[y_ge_y0]) + if len(y_lt_y0) > 0: + dz2NS[y_lt_y0] = ((h0 + d) * np.sqrt(1 - gsm_pos[y_lt_y0,0]**2/y0**2) - d)*np.sin(tilt[y_lt_y0]) + + if not sc2NS: + return dz2NS + else: + sc2NS = gsm_pos[:, 2] - dz2NS + return sc2NS + + +def den_fairfield_ns_model(time, gsm_pos, sc2NS=False): + """ + NAME: + den_fairfield_ns_model + PURPOSE: + This routine calculates the position along the zaxis at a specific + x and y location. + INPUT: + time - string or double format + double(s) seconds since 1970 + string(s) format: YYYY-MM-DD/hh:mm:ss + gsm_pos - position vector in GSM coordinates in re (pos[*,3]) + OUTPUT: returns Z displacement of the neutral sheet above or below the XY plane in Re (zgsm of the NS) + Value is positive if NS is above z=0 gsm plane, negative if below + KEYWORDS + sc2NS - if set returns Z displacement from the spacecraft to the neutral sheet + Value is positive if the NS is northward of the SC location, and negative if below + HISTORY: + """ + # initialize constants + dz2ns = np.zeros(len(time)) + + # Use the den model for radial distances <12.re + rdist = np.sqrt(gsm_pos[:,0]**2 + gsm_pos[:,1]**2 + gsm_pos[:,2]**2) + sm_ind = np.argwhere(rdist <= 10.).flatten() + if len(sm_ind) > 0: + dz2ns[sm_ind] = den_ns_model(time[sm_ind], gsm_pos[sm_ind,:]) + + # use the fairfield model for radial distances >12.re + lr_ind = np.argwhere(rdist > 10.).flatten() + if len(lr_ind) > 0: + dz2ns[lr_ind] = fairfield_ns_model(time[lr_ind], gsm_pos[lr_ind,:]) + + if not sc2NS: + return dz2ns + else: + sc2NS = gsm_pos[:,2] - dz2ns + return sc2NS + + +def lopez_ns_model(time, gsm_pos, kp=None, mlt=None, sc2NS=False): + """ + NAME: + lopez_ns_model + PURPOSE: + This routine calculates the position along the zaxis at a specific + x and y location. The Lopez model is used for this calculation. + INPUT: + time - string or double format + double(s) seconds since 1970 + string(s) format: YYYY-MM-DD/hh:mm:ss + gsm_pos - position vector in GSM coordinates in re (pos[*,3]) + kp - kp index value + mlt - magnetic local time in degrees (0=midnight) + OUTPUT: returns Z displacement of the neutral sheet above or below the XY plane in Re (zgsm of the NS) + Value is positive if NS is above z=0 gsm plane, negative if below + KEYWORDS + sc2NS - if set returns Z displacement from the spacecraft to the neutral sheet + Value is positive if the NS is northward of the SC location, and negative if below + NOTES: + Reference: + The position of the magnetotail neutral sheet in the near-Earth Region, + Geophysical Research Letters, Vol. 17, No 10, pages 1617-1620, 1990 + Author - Ramon E. Lopez + The lopez model is best used for distances <8.8 RE + HISTORY: + """ + # constants + rad = np.pi/180. + if kp is None: + kp = 0 + if mlt is None: + mlt = 0.0 + tilt = np.zeros(len(time)) + + for i in range(len(time)): + # calculate tilt angle of geomagnetic axis + tilt[i] = geopack_recalc(time[i]) + + # calculate the position of the neutral sheet along z axis + rdist = np.sqrt(gsm_pos[:,0]**2 + gsm_pos[:,1]**2 + gsm_pos[:,2]**2) + mlat = -(0.14*kp + 0.69) * ((np.cos(rad*mlt))**.3333333) * (0.065*(rdist**0.8) - 0.16) * tilt * 180.0/np.pi + mlat = mlat + tilt * 180.0/np.pi + + # convert magnetic latitude to position + x, y, z = rthph2xyz(rdist, mlat, mlt) + + if not sc2NS: + return z + else: + sc2NS = gsm_pos[:,2] - z + return sc2NS + + +def rthph2xyz(r,th,ph): + """ + Helper function for the lopez model + converts spherical to cartesian coordinates + NOTE: th,ph in degrees, and th is latitude (not colatitude) (i.e. [-90->90]) + """ + FLAG=6.8792E+28 + FLAG98=0.98*FLAG + PI=3.1415926535898 + + thrad=th*PI/180. + phrad=ph*PI/180. + sth=np.sin(thrad) + cth=np.cos(thrad) + sph=np.sin(phrad) + cph=np.cos(phrad) + x=r*cth*cph + y=r*cth*sph + z=r*sth + + iflags=np.argwhere((r > FLAG98) | (th > FLAG98) | (ph > FLAG98)).flatten() + if (len(iflags) > 0): + x[iflags]=FLAG + y[iflags]=FLAG + z[iflags]=FLAG + + return x,y,z + + +def neutral_sheet(time, pos, kp=None, model='themis', mlt=None, in_coord='gsm', sc2NS=False): + """ + Calculate the distance to the neutral sheet for a given time and position. + + Parameters + ---------- + time : datetime + Time of interest. + pos : array_like + Position of interest. + kp : array_like, optional + Kp index. + model : str, optional + Neutral sheet model to use. + mlt : array_like, optional + Magnetic local time. + in_coord : str, optional + Coordinate system of the input position. + sc2NS : Bool, optional + Flag to return spacecraft to neutral sheet distance. + + Returns + ------- + distance2NS : array_like + Distance to the neutral sheet. + + """ + + time = np.array(time) + + # validate and initialize parameters if not set + if model is None: + model = 'themis' + else: + model = model.lower() + models = ['sm', 'themis', 'aen', 'den', 'fairfield', 'den_fairfield', 'lopez'] + if model not in models: + logging.error('An invalid neutral sheet model name was used. Valid entries include: ') + logging.error(models) + return + + # check input coordinate system, convert to gsm if needed + if in_coord is None: + in_coord = 'gsm' + else: + in_coord = in_coord.lower() + if in_coord == 'gsm': + gsm_pos = pos + else: + gsm_pos = cotrans(time_in=time, data_in=pos, coord_in=in_coord, coord_out='gsm') + + # call the appropriate neutral sheet model + if model == 'sm': + return sm_ns_model(time, gsm_pos, sc2NS=sc2NS) + elif model == 'themis': + return themis_ns_model(time, gsm_pos, sc2NS=sc2NS) + elif model == 'aen': + return aen_ns_model(time, gsm_pos, sc2NS=sc2NS) + elif model == 'den': + return den_ns_model(time, gsm_pos, sc2NS=sc2NS) + elif model == 'fairfield': + return fairfield_ns_model(time, gsm_pos, sc2NS=sc2NS) + elif model == 'den_fairfield': + return den_fairfield_ns_model(time, gsm_pos, sc2NS=sc2NS) + elif model == 'lopez': + return lopez_ns_model(time, gsm_pos, kp=kp, mlt=mlt, sc2NS=sc2NS) diff --git a/pyspedas/analysis/subtract_average.py b/pyspedas/analysis/subtract_average.py index 25913878..703cbd12 100644 --- a/pyspedas/analysis/subtract_average.py +++ b/pyspedas/analysis/subtract_average.py @@ -6,9 +6,8 @@ Similar to tsub_average.pro in IDL SPEDAS. """ -import pyspedas +import logging import pytplot -import numpy def subtract_average(names, new_names=None, suffix=None, overwrite=None, @@ -36,56 +35,6 @@ def subtract_average(names, new_names=None, suffix=None, overwrite=None, None. """ - old_names = pyspedas.tnames(names) - - if len(old_names) < 1: - print('Subtract Average error: No pytplot names were provided.') - return - - if suffix is None: - if median: - suffix = '-m' - else: - suffix = '-d' - - if overwrite is not None: - n_names = old_names - elif new_names is None: - n_names = [s + suffix for s in old_names] - else: - n_names = new_names - - if isinstance(n_names, str): - n_names = [n_names] - - if len(n_names) != len(old_names): - n_names = [s + suffix for s in old_names] - - old_names = pyspedas.tnames(names) - - for old_idx, old in enumerate(old_names): - new = n_names[old_idx] - - if new != old: - pyspedas.tcopy(old, new) - - data = pytplot.data_quants[new].values - dim = data.shape - if median: - if len(dim) == 1: - data -= numpy.median(data, axis=0) - else: - for i in range(dim[1]): - data[:, i] -= numpy.median(data[:, i], axis=0) - ptype = 'Median' - else: - if len(dim) == 1: - data -= numpy.mean(data, axis=0) - else: - for i in range(dim[1]): - data[:, i] -= numpy.mean(data[:, i], axis=0) - ptype = 'Mean' - - pytplot.data_quants[new].values = data - - print('Subtract ' + ptype + ' was applied to: ' + new) + logging.info("subtract_average has been moved to the pytplot.tplot_math package. Please update your imports!") + logging.info("This version will eventually be removed.") + pytplot.tplot_math.subtract_average(names=names,new_names=new_names,suffix=suffix,overwrite=overwrite,median=median) diff --git a/pyspedas/analysis/subtract_median.py b/pyspedas/analysis/subtract_median.py index 379e30d7..74f6e277 100644 --- a/pyspedas/analysis/subtract_median.py +++ b/pyspedas/analysis/subtract_median.py @@ -6,8 +6,8 @@ Similar to tsub_average.pro in IDL SPEDAS. """ -from .subtract_average import subtract_average - +import logging +import pytplot def subtract_median(names, new_names=None, suffix=None, overwrite=None): """ @@ -30,5 +30,7 @@ def subtract_median(names, new_names=None, suffix=None, overwrite=None): None. """ - subtract_average(names, new_names=None, suffix=None, overwrite=None, - median=1) + logging.info("subtract_median has been moved to the pytplot.tplot_math package. Please update your imports!") + logging.info("This version will eventually be removed.") + + pytplot.tplot_math.subtract_median(names=names, new_names=new_names, suffix=suffix, overwrite=overwrite) diff --git a/pyspedas/analysis/tcrossp.py b/pyspedas/analysis/tcrossp.py index 28dfb445..267e6e1d 100644 --- a/pyspedas/analysis/tcrossp.py +++ b/pyspedas/analysis/tcrossp.py @@ -1,6 +1,6 @@ -import numpy as np -from pytplot import get_data, store_data +import logging +import pytplot def tcrossp(v1, v2, newname=None, return_data=False): """ @@ -26,46 +26,6 @@ def tcrossp(v1, v2, newname=None, return_data=False): -------- Name of the tplot variable """ - - v1_data = None - v2_data = None - - if not isinstance(v1, np.ndarray) and isinstance(v1, str): - v1_data = get_data(v1) - v1_name = v1 - - if v1_data is not None: - data1 = v1_data[1] - else: - v1_name = 'var1' - data1 = v1 - - - if not isinstance(v2, np.ndarray) and isinstance(v2, str): - v2_data = get_data(v2) - v2_name = v2 - - if v2_data is not None: - data2 = v2_data[1] - else: - v2_name = 'var2' - data2 = v2 - - if newname is None: - newname = v1_name + '_cross_' + v2_name - - cp = np.cross(data1, data2) - - if return_data: - return cp - else: - out = cp - if v2_data is None: - if len(cp.shape) == 1: - out = np.atleast_2d(cp) - times = np.zeros(out.shape[0]) - else: - times = v2_data[0] - store_data(newname, data={'x': times, 'y': out}) - return newname - + logging.info("tcrossp has been moved to the pytplot.tplot_math module. Please update your imports!") + logging.info("This version will eventually be removed.") + return pytplot.tplot_math.tcrossp(v1=v1, v2=v2, newname=newname,return_data=return_data) \ No newline at end of file diff --git a/pyspedas/analysis/tdeflag.py b/pyspedas/analysis/tdeflag.py index e115787a..51e58b54 100644 --- a/pyspedas/analysis/tdeflag.py +++ b/pyspedas/analysis/tdeflag.py @@ -7,6 +7,7 @@ Similar to tdeflag.pro in IDL SPEDAS. """ +import logging import pyspedas import pytplot import numpy @@ -41,7 +42,7 @@ def tdeflag(names, method=None, new_names=None, suffix=None, old_names = pyspedas.tnames(names) if len(old_names) < 1: - print('tdeflag error: No pytplot names were provided.') + logging.error('tdeflag error: No pytplot names were provided.') return if suffix is None: @@ -72,4 +73,4 @@ def tdeflag(names, method=None, new_names=None, suffix=None, new_data.append(data[j]) pytplot.store_data(n_names[i], data={'x': new_time, 'y': new_data}) - print('tdeflag was applied to: ' + n_names[i]) + logging.info('tdeflag was applied to: ' + n_names[i]) diff --git a/pyspedas/analysis/tdotp.py b/pyspedas/analysis/tdotp.py index 7053218d..a092484d 100644 --- a/pyspedas/analysis/tdotp.py +++ b/pyspedas/analysis/tdotp.py @@ -1,5 +1,6 @@ +import logging +import pytplot -from pytplot import get_data, store_data def tdotp(variable1, variable2, newname=None): """ @@ -24,25 +25,6 @@ def tdotp(variable1, variable2, newname=None): -------- Name of the tplot variable """ - - data1 = get_data(variable1, xarray=True) - data2 = get_data(variable2, xarray=True) - - if data1 is None: - print('Variable not found: ' + variable1) - return - - if data2 is None: - print('Variable not found: ' + variable2) - return - - if newname is None: - newname = variable1 + '_dot_' + variable2 - - # calculate the dot product - out = data1.dot(data2, dims='v_dim') - - # save the output - saved = store_data(newname, data={'x': data1.time.values, 'y': out.values}) - - return newname + logging.info("tdotp has been moved to the pytplot.tplot_math module. Please update your imports!") + logging.info("This version will eventually be removed.") + pytplot.tplot_math.tdotp(variable1=variable1,variable2=variable2,newname=newname) \ No newline at end of file diff --git a/pyspedas/analysis/tdpwrspc.py b/pyspedas/analysis/tdpwrspc.py index c4c1b927..0fff8869 100644 --- a/pyspedas/analysis/tdpwrspc.py +++ b/pyspedas/analysis/tdpwrspc.py @@ -8,13 +8,16 @@ Similar to tdpwrspc.pro in IDL SPEDAS. """ +import logging +import numpy as np from .dpwrspc import dpwrspc from pytplot import get_data, store_data, options, split_vec +from pyspedas import time_double -def tdpwrspc(varname, newname=None, nboxpoints=256, nshiftpoints=128, +def tdpwrspc(varname, newname=None, nboxpoints=None, nshiftpoints=None, binsize=3, nohanning=False, noline=False, notperhz=False, - notmvariance=False): + trange=None, notmvariance=False): """ Compute power spectra for a tplot variable. @@ -72,16 +75,56 @@ def tdpwrspc(varname, newname=None, nboxpoints=256, nshiftpoints=128, notmvariance=notmvariance)) return out_vars else: - pwrspc = dpwrspc(data_tuple[0], data_tuple[1], - nboxpoints=nboxpoints, - nshiftpoints=nshiftpoints, + t = data_tuple[0] + y = data_tuple[1] + if trange is not None: + tr = time_double(trange) + ok = np.argwhere((t >= tr[0]) & (t < tr[1])) + if len(ok) == 0: + logging.error('No data in time range') + logging.error(f'{tr}') + return + t = t[ok] + y = y[ok] + + # filter out NaNs + ok = np.isfinite(y) + if len(ok) == 0: + logging.error('No finite data in time range') + return + t = t[ok] + y = y[ok] + + t00 = data_tuple[0][0] + t = t - t00 + + # Only do this if there are enough data points, default nboxpoints to + # 64 and nshiftpoints to 32, and use larger values when there are more + # points + if nboxpoints is None: + nbp = np.max([2**(np.floor(np.log(len(ok)) / np.log(2)) - 5), 8]) + else: + nbp = nboxpoints + + if nshiftpoints is None: + nsp = nbp/2.0 + else: + nsp = nshiftpoints + + if len(ok) <= nbp: + logging.error('Not enough data in time range') + return + + pwrspc = dpwrspc(t, y, + nboxpoints=nbp, + nshiftpoints=nsp, binsize=binsize, nohanning=nohanning, noline=noline, notperhz=notperhz, notmvariance=notmvariance) if pwrspc is not None: - store_data(newname, data={'x': pwrspc[0], + store_data(newname, data={'x': pwrspc[0] + t00, 'y': pwrspc[2], 'v': pwrspc[1]}) options(newname, 'spec', True) diff --git a/pyspedas/analysis/tests/test_twavpol.py b/pyspedas/analysis/tests/test_twavpol.py new file mode 100644 index 00000000..b8752c7d --- /dev/null +++ b/pyspedas/analysis/tests/test_twavpol.py @@ -0,0 +1,112 @@ +"""Tests of twavpol functions.""" +import pytplot.get_data +from pytplot.importers.cdf_to_tplot import cdf_to_tplot +import unittest +import pytplot +from numpy.testing import assert_array_almost_equal_nulp, assert_array_max_ulp, assert_allclose +import numpy as np + +from pytplot import data_exists + +from pyspedas.analysis.twavpol import twavpol + +class TwavpolDataValidation(unittest.TestCase): + """ Compares cotrans results between Python and IDL """ + + @classmethod + def setUpClass(cls): + """ + IDL Data has to be downloaded to perform these tests + The SPEDAS script that creates the file: projects/themis/state/cotrans/thm_cotrans_validate.pro + """ + from pyspedas.utilities.download import download + from pyspedas.themis.config import CONFIG + + # Testing tolerance + cls.tol = 1e-10 + + # Download tplot files + remote_server = 'https://spedas.org/' + # remote_name = 'testfiles/thm_cotrans_validate.cdf' + remote_name = 'testfiles/thc_twavpol_validate.tplot' + datafile = download(remote_file=remote_name, + remote_path=remote_server, + local_path=CONFIG['local_data_dir'], + no_download=False) + if not datafile: + # Skip tests + raise unittest.SkipTest("Cannot download data validation file") + + # Load validation variables from the test file + pytplot.del_data('*') + filename = datafile[0] + # pytplot.cdf_to_tplot(filename) + pytplot.tplot_restore(filename) + pytplot.tplot_names() + #pytplot.tplot('thc_scf_fac') + #pytplot.tplot('thc_scf_fac_powspec') + #pytplot.tplot('thc_scf_fac') + cls.thc_scf_fac = pytplot.get_data('thc_scf_fac') + cls.thc_scf_fac_attr = pytplot.get_data('thc_scf_fac',metadata=True) + cls.thc_scf_fac_powspec = pytplot.get_data('thc_scf_fac_powspec') + cls.thc_scf_fac_powspec_attr = pytplot.get_data('thc_scf_fac_powspec',metadata=True) + cls.thc_scf_fac_degpol = pytplot.get_data('thc_scf_fac_degpol') + cls.thc_scf_fac_waveangle = pytplot.get_data('thc_scf_fac_waveangle') + cls.thc_scf_fac_elliptict = pytplot.get_data('thc_scf_fac_elliptict') + cls.thc_scf_fac_helict = pytplot.get_data('thc_scf_fac_helict') + + twavpol('thc_scf_fac') + + + def setUp(self): + """ We need to clean tplot variables before each run""" + # pytplot.del_data('*') + + def test_powspec(self): + """ Validate twavpol power spectrum output """ + + py_powspec = pytplot.get_data('thc_scf_fac_powspec') + #print(np.nanmin(py_powspec.y),np.nanmax(py_powspec.y)) + assert_allclose(py_powspec.times,self.thc_scf_fac_powspec.times,atol=1.0e-06) + assert_allclose(py_powspec.y, self.thc_scf_fac_powspec.y, atol=1.0e-06,rtol=1.0e-06) + #pytplot.tplot('thc_scf_fac_powspec') + + def test_degpol(self): + """ Validate twavpol degpol output """ + + py_degpol = pytplot.get_data('thc_scf_fac_degpol') + #print(np.min(py_degpol.y),np.nanmax(py_degpol.y)) + assert_allclose(py_degpol.times,self.thc_scf_fac_degpol.times,atol=1.0e-06) + assert_allclose(py_degpol.y, self.thc_scf_fac_degpol.y, atol=1.0e-06,rtol=1.0e-06) + #pytplot.tplot('thc_scf_fac_degpol') + + def test_waveangle(self): + """ Validate twavpol waveangle output """ + + py_waveangle = pytplot.get_data('thc_scf_fac_waveangle') + #print(np.nanmin(py_waveangle.y),np.nanmax(py_waveangle.y)) + assert_allclose(py_waveangle.times,self.thc_scf_fac_waveangle.times,atol=1.0e-05) + assert_allclose(py_waveangle.y, self.thc_scf_fac_waveangle.y, atol=1.0e-05,rtol=1.0e-06) + #pytplot.tplot('thc_scf_fac_waveangle') + + def test_elliptict(self): + """ Validate twavpol elliptict output """ + + py_elliptict = pytplot.get_data('thc_scf_fac_elliptict') + #print(np.nanmin(py_elliptict.y),np.nanmax(py_elliptict.y)) + assert_allclose(py_elliptict.times,self.thc_scf_fac_elliptict.times,atol=1.0e-06) + assert_allclose(py_elliptict.y, self.thc_scf_fac_elliptict.y, atol=1.0e-06,rtol=1.0e-06) + #pytplot.tplot('thc_scf_fac_elliptict') + + def test_helict(self): + """ Validate twavpol helict output """ + + py_helict = pytplot.get_data('thc_scf_fac_helict') + #print(np.nanmin(py_helict.y),np.nanmax(py_helict.y)) + assert_allclose(py_helict.times,self.thc_scf_fac_helict.times,atol=1.0e-06) + assert_allclose(py_helict.y, self.thc_scf_fac_helict.y, atol=1.0e-06,rtol=1.0e-06) + #pytplot.tplot('thc_scf_fac_helict') + + +if __name__ == '__main__': + unittest.main() diff --git a/pyspedas/analysis/tests/tests.py b/pyspedas/analysis/tests/tests.py index 119bcd36..cff7c348 100644 --- a/pyspedas/analysis/tests/tests.py +++ b/pyspedas/analysis/tests/tests.py @@ -1,13 +1,13 @@ """Automated tests for the analysis functions.""" import unittest -from pyspedas.analysis.tsmooth import smooth +from pytplot import smooth from pyspedas import (subtract_average, subtract_median, tsmooth, avg_data, yclip, time_clip, deriv_data, tdeflag, clean_spikes, tinterpol) -from pyspedas.analysis.tcrossp import tcrossp -from pyspedas.analysis.tdotp import tdotp -from pyspedas.analysis.tnormalize import tnormalize +from pytplot import tcrossp +from pytplot import tdotp +from pytplot import tnormalize from pytplot import get_data, store_data, replace_data import numpy as np @@ -24,12 +24,15 @@ def setUp(self): class AnalysisTestCases(BaseTestCase): """Test functions under analysis folder.""" + def test_tdotp(self): store_data('var1', data={'x': [0], 'y': [[3, -3, 1]]}) store_data('var2', data={'x': [0], 'y': [[4, 9, 2]]}) dp = tdotp('var1', 'var2') dpdata = get_data('var1_dot_var2') self.assertTrue(dpdata.y == np.array([-13])) + dp = tdotp('var1_doesnt_exist', 'var2') + dp = tdotp('var1', 'var2_doesnt_exist') def test_tcrossp(self): """ cross product tests""" @@ -69,11 +72,11 @@ def test_subtract_median(self): subtract_median('aaabbbcc') subtract_median('test1', new_names='aabb') d = get_data('aabb') + self.assertTrue(len(d[1]) == 6) subtract_median(['test', 'aabb'], new_names='aaabbb') subtract_median('test1', overwrite=1) subtract_average('test', new_names="testtest") subtract_average(['test-m', 'test'], new_names="testtest2") - self.assertTrue(len(d[1]) == 6) def test_subtract_average(self): """Test subtract_average.""" @@ -137,23 +140,25 @@ def test_avg_data(self): d = get_data('test-avg') self.assertTrue((d[1] == [4.0, 11.5, 10.5]).all()) avg_data('test', width=2, overwrite=True) # Test overwrite - avg_data('test', dt=4.0, noremainder=False) # Test dt option store_data('test', data={'x': [1., 2., 3., 4., 5., 6.], 'y': [3., 5., 8., -4., 20., 1.]}) avg_data('test', width=2, new_names='aabb') # Test new_names d = get_data('aabb') # Test multiple names avg_data(['test', 'aabb'], new_names='aaabbb', width=2) + dt = [1., 12., 13., 14., 15., 16.] dn = [[3., 5., 8.], [15., 20., 1.], [3., 5., 8.], [15., 20., 1.], [23., 15., 28.], [15., 20., 1.]] - store_data('test1', data={'x': [1., 12., 13., 14., 15., 16.], 'y': dn}) + dv = dn + store_data('test1', data={'x': dt, 'y': dn, 'v': dv}) avg_data('test1', width=2) # Test 3-d data - avg_data('test1', new_names='test2', dt=2.) # Test a reasonable dt - avg_data('test1', dt=-1.) # Test dt error - avg_data('test1', dt=1.e8) # Test dt error + avg_data('test1', new_names='test2', res=2.) # Test a reasonable resolution + avg_data('test1', res=-1.) # Test res error + avg_data('test1', res=1.e8) # Test res error d2 = get_data('test2') - self.assertTrue(len(d) > 0) + self.assertTrue(len(d2) > 0) self.assertTrue(d2[1][-1][0] == 19.0) + self.assertTrue(len(d2[2]) == len(d2[0])) def test_clean_spikes(self): """Test clean_spikes.""" @@ -221,8 +226,17 @@ def test_tinterpol(self): tinterpol('aaabbbccc', 'test') # Test non-existent name tn = [1., 1.5, 4.6, 5.8, 6.] dn = [10., 15., 46., 58., 60.] + data = np.array([[0, 1, 2, 3, 4], + [5, 6, 7, 8, 9], + [10, 11, 12, 13, 14], + [15, 16, 17, 18, 19], + [20, 21, 22, 23, 24]]) store_data('test1', data={'x': tn, 'y': dn}) + store_data('test2', data={'x': tn, 'y': data, 'v': [10, 20, 30, 40, 50]}) tinterpol('test1', 'test') + tinterpol('test1', 'doesnt_exist') + tinterpol('test2', 'test', newname='') + tinterpol('test2', [1, 2, 3, 4, 5, 6]) d = get_data('test1-itrp') self.assertTrue(d[1][1] == 20.) diff --git a/pyspedas/analysis/time_clip.py b/pyspedas/analysis/time_clip.py index 22e2d146..ba55164f 100644 --- a/pyspedas/analysis/time_clip.py +++ b/pyspedas/analysis/time_clip.py @@ -6,8 +6,7 @@ Similar to tclip.pro in IDL SPEDAS. """ - -import pyspedas +import logging import pytplot @@ -37,151 +36,7 @@ def time_clip(names, time_start, time_end, new_names=None, suffix=None, None. """ - old_names = pyspedas.tnames(names) - - if len(old_names) < 1: - print('Time clip error: No pytplot names were provided.') - return - - if suffix is None: - suffix = '-tclip' - - if overwrite is not None: - n_names = old_names - elif new_names is None: - n_names = [s + suffix for s in old_names] - else: - n_names = new_names - - if isinstance(n_names, str): - n_names = [n_names] - - if len(n_names) != len(old_names): - n_names = [s + suffix for s in old_names] - - for j in range(len(old_names)): - if old_names[j] != n_names[j]: - pyspedas.tcopy(old_names[j], n_names[j]) - - alldata = pytplot.get_data(n_names[j]) - metadata = pytplot.get_data(n_names[j], metadata=True) - - if not isinstance(alldata, tuple): # NRV variable - continue - - time = alldata[0] - data = alldata[1] - - index_start = 0 - index_end = len(time) - - if index_end < 1: - print('Time clip found empty list.') - continue - - new_time = pyspedas.time_float(time) - new_time_start = pyspedas.time_float(time_start) - new_time_end = pyspedas.time_float(time_end) - - if new_time_start > new_time_end: - print('Error: Start time is larger than end time.') - continue - - if (new_time_start > new_time[-1]) or (new_time_end < new_time[0]): - print('Time clip returns empty data.') - continue - - if (new_time_start <= new_time[0]) and (new_time_end >= new_time[-1]): - print('Time clip returns full data set.') - continue - - for i in range(index_end): - if new_time[i] >= new_time_start: - index_start = i - break - found_end = index_end - for i in range(index_start, index_end): - if new_time[i] > new_time_end: - found_end = i - break - index_end = found_end - - tmp_q = pytplot.data_quants[n_names[j]] - - if 'v1' in tmp_q.coords.keys(): - if len(tmp_q.coords['v1'].values.shape) == 2: - v1_data = tmp_q.coords['v1'].values[index_start:index_end, :] - else: - v1_data = tmp_q.coords['v1'].values - - if 'v2' in tmp_q.coords.keys(): - if len(tmp_q.coords['v2'].values.shape) == 2: - v2_data = tmp_q.coords['v2'].values[index_start:index_end, :] - else: - v2_data = tmp_q.coords['v2'].values - - if 'v3' in tmp_q.coords.keys(): - if len(tmp_q.coords['v3'].values.shape) == 2: - v3_data = tmp_q.coords['v3'].values[index_start:index_end, :] - else: - v3_data = tmp_q.coords['v3'].values - - if 'v' in tmp_q.coords.keys(): - if len(tmp_q.coords['v'].values.shape) == 2: - v_data = tmp_q.coords['v'].values[index_start:index_end, :] - else: - v_data = tmp_q.coords['v'].values - - if 'spec_bins' in tmp_q.coords.keys(): - if len(tmp_q.coords['spec_bins'].values.shape) == 2: - v_data = tmp_q.coords['spec_bins']\ - .values[index_start:index_end, :] - else: - v_data = tmp_q.coords['spec_bins'].values - - try: - if 'v1' in tmp_q.coords.keys() and\ - 'v2' in tmp_q.coords.keys() and\ - 'v3' in tmp_q.coords.keys(): - pytplot.store_data(n_names[j], data={ - 'x': time[index_start:index_end], - 'y': data[index_start:index_end, :, :, :], - 'v1': v1_data, 'v2': v2_data, 'v3': v3_data}, - attr_dict=metadata) - elif 'v1' in tmp_q.coords.keys() and\ - 'v2' in tmp_q.coords.keys(): - pytplot.store_data(n_names[j], data={ - 'x': time[index_start:index_end], - 'y': data[index_start:index_end, :, :], - 'v1': v1_data, 'v2': v2_data}, - attr_dict=metadata) - elif 'v1' in tmp_q.coords.keys(): - pytplot.store_data(n_names[j], data={ - 'x': time[index_start:index_end], - 'y': data[index_start:index_end, :], - 'v1': v1_data}, attr_dict=metadata) - elif 'spec_bins' in tmp_q.coords.keys(): - pytplot.store_data(n_names[j], data={ - 'x': time[index_start:index_end], - 'y': data[index_start:index_end, :], - 'v': v_data}, attr_dict=metadata) - elif 'v' in tmp_q.coords.keys(): - pytplot.store_data(n_names[j], data={ - 'x': time[index_start:index_end], - 'y': data[index_start:index_end, :], - 'v': v_data}, attr_dict=metadata) - elif data.ndim == 1: - pytplot.store_data(n_names[j], data={ - 'x': time[index_start:index_end], - 'y': data[index_start:index_end]}, - attr_dict=metadata) - else: - pytplot.store_data(n_names[j], data={ - 'x': time[index_start:index_end], - 'y': data[index_start:index_end]}, - attr_dict=metadata) - except: - print('Problem time clipping: ' + n_names[j]) - continue - - print('Time clip was applied to: ' + n_names[j]) + logging.info("time_clip has been moved to the pytplot.tplot_math module. Please update your imports!") + logging.info("This version will eventually be removed.") + pytplot.tplot_math.time_clip(names=names,time_start=time_start,time_end=time_end,new_names=new_names,suffix=suffix, + overwrite=overwrite) \ No newline at end of file diff --git a/pyspedas/analysis/tinterpol.py b/pyspedas/analysis/tinterpol.py index b8a952bc..03426eab 100644 --- a/pyspedas/analysis/tinterpol.py +++ b/pyspedas/analysis/tinterpol.py @@ -7,9 +7,12 @@ Similar to tinterpol.pro in IDL SPEDAS. """ - +import datetime +import logging from pyspedas import tnames -from pytplot import get_data, store_data +from pytplot import get_data, store +import numpy as np + def tinterpol(names, interp_to, method=None, newname=None, suffix=None): """ @@ -50,7 +53,7 @@ def tinterpol(names, interp_to, method=None, newname=None, suffix=None): old_names = tnames(names) if len(old_names) < 1: - print('tinterpol error: No pytplot names were provided.') + logging.error('tinterpol error: No pytplot names were provided.') return if suffix is None: @@ -61,16 +64,14 @@ def tinterpol(names, interp_to, method=None, newname=None, suffix=None): if (newname is None) or (len(newname) == 1 and newname[0] is None): n_names = [s + suffix for s in old_names] - elif newname == '': - n_names = old_names else: n_names = newname if isinstance(interp_to, str): - interp_to_data = get_data(interp_to) + interp_to_data = get_data(interp_to, dt=True) if interp_to_data is None: - print('Error, tplot variable: ' + interp_to + ' not found.') + logging.error('Error, tplot variable: ' + interp_to + ' not found.') return interp_to_times = interp_to_data[0] @@ -79,19 +80,23 @@ def tinterpol(names, interp_to, method=None, newname=None, suffix=None): for name_idx, name in enumerate(old_names): xdata = get_data(name, xarray=True) + metadata = get_data(name, metadata=True) + + if not isinstance(interp_to_times[0], datetime.datetime) and not isinstance(interp_to_times[0], np.datetime64): + interp_to_times = [datetime.datetime.utcfromtimestamp(time) for time in interp_to_times] xdata_interpolated = xdata.interp({'time': interp_to_times}, method=method) if 'spec_bins' in xdata.coords: - store_data(n_names[name_idx], - data={ - 'x': interp_to_times, - 'y': xdata_interpolated.values, - 'v': xdata_interpolated.coords['spec_bins'].values - }) + store(n_names[name_idx], + data={ + 'x': interp_to_times, + 'y': xdata_interpolated.values, + 'v': xdata_interpolated.coords['spec_bins'].values + }, + metadata=metadata) else: - store_data(n_names[name_idx], data={'x': interp_to_times, - 'y': xdata_interpolated.values}) + store(n_names[name_idx], data={'x': interp_to_times, + 'y': xdata_interpolated.values}, metadata=metadata) - print('tinterpol (' + method + ') was applied to: ' - + n_names[name_idx]) + logging.info('tinterpol (' + method + ') was applied to: ' + n_names[name_idx]) diff --git a/pyspedas/analysis/tnormalize.py b/pyspedas/analysis/tnormalize.py index 8e05c076..de9474fd 100644 --- a/pyspedas/analysis/tnormalize.py +++ b/pyspedas/analysis/tnormalize.py @@ -1,6 +1,5 @@ - -import numpy as np -from pytplot import get_data, store_data +import logging +import pytplot def tnormalize(variable, newname=None, return_data=False): """ @@ -26,29 +25,6 @@ def tnormalize(variable, newname=None, return_data=False): is set """ - metadata_in = {} - if isinstance(variable, str): - data_in = get_data(variable) - metadata_in = get_data(variable, metadata=True) - data = data_in[1] - times = data_in[0] - else: - data = np.atleast_2d(variable) - times = np.zeros(data.shape[0]) - - n = np.sqrt(np.nansum(data**2, axis=1)) - - # to do element-wise division, the magnitude needs to be repeated for each component - norm_reshaped = np.reshape(n, [len(times), 1]) - norm_mag = np.repeat(norm_reshaped, len(data[0, :]), axis=1) - - data_norm = data/norm_mag - - if return_data: - return data_norm - else: - if newname is None: - newname = variable + '_normalized' - store_data(newname, data={'x': times, 'y': data_norm}, attr_dict=metadata_in) - return newname - + logging.info("tnormalize has been moved to the pytplot.tplot_math module. Please update your imports!") + logging.info("This version will eventually be removed.") + return pytplot.tplot_math.tnormalize(variable=variable,newname=newname,return_data=return_data) \ No newline at end of file diff --git a/pyspedas/analysis/tsmooth.py b/pyspedas/analysis/tsmooth.py index 6a65fe7d..50bbf6ed 100644 --- a/pyspedas/analysis/tsmooth.py +++ b/pyspedas/analysis/tsmooth.py @@ -9,9 +9,7 @@ Also, see: https://www.harrisgeospatial.com/docs/SMOOTH.html """ -import math -import numpy as np -import pyspedas +import logging import pytplot @@ -34,28 +32,9 @@ def smooth(data, width=10, preserve_nans=None): Smoothed data. """ - result = data.copy() - N = len(data) - - if N <= width: - print("smooth: Not enough points.") - return result - - for i, d in enumerate(data): - if (i >= (width-1)/2) and (i <= N-(width+1)/2): - if (preserve_nans is not None) and data[i] is np.NaN: - continue - tsum = 0 - count = 0 - for j in range(int(width)): - idx = math.ceil(i+j-width/2) - if data[idx] is not np.NaN: - tsum += data[idx] - count += 1 - if count > 0: # otherwise, all NaN - result[i] = (1/width) * tsum - return result - + logging.info("smooth has been moved to the pytplot.tplot_math module. Please update your imports!") + logging.info("This version will eventually be removed.") + return pytplot.tplot_math.smooth(data=data,width=width,preserve_nans=preserve_nans) def tsmooth(names, width=10, median=None, preserve_nans=None, new_names=None, suffix=None, overwrite=None): @@ -85,44 +64,7 @@ def tsmooth(names, width=10, median=None, preserve_nans=None, None. """ - old_names = pyspedas.tnames(names) - - if len(old_names) < 1: - print('tsmooth error: No pytplot names were provided.') - return - - if suffix is None: - suffix = '-s' - - if overwrite is not None: - n_names = old_names - elif new_names is None: - n_names = [s + suffix for s in old_names] - else: - n_names = new_names - - if isinstance(n_names, str): - n_names = [n_names] - - if len(n_names) != len(old_names): - n_names = [s + suffix for s in old_names] - - for i, old in enumerate(old_names): - new = n_names[i] - - if new != old: - pyspedas.tcopy(old, new) - - data = pytplot.data_quants[new].values - - dim = data.shape - if len(dim) == 1: - data = smooth(data, width=width, preserve_nans=preserve_nans) - else: - for k in range(dim[1]): - data[:, k] = smooth(data[:, k], width=width, - preserve_nans=preserve_nans) - - pytplot.data_quants[new].values = data - - print('tsmooth was applied to: ' + new) + logging.info("tsmooth has been moved to the pytplot.tplot_math module. Please update your imports!") + logging.info("This version will eventually be removed.") + pytplot.tplot_math.tsmooth(names=names,width=width,median=median,preserve_nans=preserve_nans,new_names=new_names,suffix=suffix, + overwrite=overwrite) diff --git a/pyspedas/analysis/twavpol.py b/pyspedas/analysis/twavpol.py index ea98bb5a..d757d4b1 100644 --- a/pyspedas/analysis/twavpol.py +++ b/pyspedas/analysis/twavpol.py @@ -68,19 +68,25 @@ Care should be taken in evaluating degree of polarisation results. For meaningful results there should be significant wave power at the frequency where the polarisation approaches - 100%. Remembercomparing two straight lines yields 100% polarisation. + 100%. Remember, comparing two straight lines yields 100% polarisation. """ - +import logging import warnings import numpy as np +# use nansum from bottleneck if it's installed, otherwise use the numpy one +try: + import bottleneck as bn + nansum = bn.nansum +except ImportError: + nansum = np.nansum from pytplot import get_data, store_data, options from pyspedas import tnames # these routines require numpy v1.20.0 or later if np.__version__ < '1.20': - print('Error: numpy 1.20.0 or later is required for wave polarization calculations. ') - print('Please update numpy with: pip install numpy --upgrade') + logging.error('Error: numpy 1.20.0 or later is required for wave polarization calculations. ') + logging.error('Please update numpy with: pip install numpy --upgrade') breakpoint() @@ -97,6 +103,7 @@ def wpol_ematspec(i1, i2, i3, i4, aa, nosmbins, matspec): """Calculate ematspec array.""" id0 = (i2 - int((nosmbins-1)/2)) id1 = (i2 + int((nosmbins-1)/2)) + 1 + # Using nansum() rather than sum() here results in a mismatch between IDL and Python results. res = np.sum(aa[0:nosmbins] * matspec[i1, id0:id1, i3, i4]) return res @@ -183,10 +190,10 @@ def wpol_helicity(nosteps, nopfft, KK, ematspec, waveangle): for k in range(int(nopfft/2)): for k1 in range(3): - upper = np.sum(2*np.real(lambdau[KK, k, k1, 0:3]) * + upper = nansum(2*np.real(lambdau[KK, k, k1, 0:3]) * np.imag(lambdau[KK, k, k1, 0:3])) la2 = np.imag(lambdau[KK, k, k1, 0:3])**2 - lower = np.sum(np.real(lambdau[KK, k, k1, 0:3])**2 - la2) + lower = nansum(np.real(lambdau[KK, k, k1, 0:3])**2 - la2) gammay = np.nan if np.isfinite(upper) and np.isfinite(lower): if upper > 0.0: @@ -196,6 +203,7 @@ def wpol_helicity(nosteps, nopfft, KK, ematspec, waveangle): lambday[KK, k, k1, :] = (np.exp((0.0 - 1j*0.5*gammay)) * lambdau[KK, k, k1, :]) lay2 = np.imag(lambday[KK, k, k1, 0:3])**2 + # Using nansum() rather than sum() in the helicity calculation results in a mismatch betweeen IDL and Python results. helicity[KK, k, k1] = (1 / (np.sqrt(np.real(lambday[KK, k, k1, 0])**2 + np.real(lambday[KK, k, k1, 1])**2 + @@ -247,11 +255,11 @@ def wavpol(ct, bx, by, bz, ---------- ct : list of float Time. - b1 : list of float + bx : list of float Bx field. - b2 : list of float + by : list of float By field. - b3 : list of float + bz : list of float Bz field. nopfft : int, optional Number of points in FFT. The default is 256. @@ -319,10 +327,9 @@ def wavpol(ct, bx, by, bz, endsampfreq = 1./(ct[nopoints-1]-ct[nopoints-2]) if beginsampfreq != endsampfreq: - print('wavpol Warning: file sampling frequency changes from ', - beginsampfreq, 'Hz to ', endsampfreq, 'Hz') + logging.warning('wavpol Warning: file sampling frequency changes from ' + str(beginsampfreq) + 'Hz to ' + str(endsampfreq) + 'Hz') else: - print('wavpol: File sampling frequency=', beginsampfreq, 'Hz') + logging.warning('wavpol: File sampling frequency=' + str(beginsampfreq) + 'Hz') samp_freq = beginsampfreq samp_per = 1./samp_freq @@ -352,8 +359,8 @@ def wavpol(ct, bx, by, bz, # If there are too many batches, return. if n_batches > 80000.0: - print("wavpol error: Large number of batches. " + - "Returning to avoid memory runaway.") + logging.error("wavpol error: Large number of batches. " + + "Returning to avoid memory runaway.") err_flag = 1 result = (timeline, freqline, powspec, degpol, waveangle, elliptict, helict, pspec3, err_flag) @@ -363,19 +370,28 @@ def wavpol(ct, bx, by, bz, # Total numbers of FFT calculations including 1 leap frog for each batch ind_batch0 = 0 nosteps = 0 - print('n_batches', n_batches) + logging.info('n_batches: ' + str(n_batches)) for i in range(n_batches): nosteps = int(nosteps + np.floor((errs[i] - ind_batch0)/steplength)) ind_batch0 = errs[i] nosteps = nosteps + n_batches - print('Total number of steps:', nosteps) + logging.info('Total number of steps:' + str(nosteps)) # leveltplot = 0.000001 # Power rejection level 0 to 1 nosmbins = bin_freq # No. of bins in frequency domain # Smoothing profile based on Hanning: - aa = np.array([0.024, 0.093, 0.232, 0.301, 0.232, 0.093, 0.024]) + # aa = np.array([0.024, 0.093, 0.232, 0.301, 0.232, 0.093, 0.024]) + # The predefined smoothing array aa is incorrect unless bin_freq = 7. For smaller + # values of bin_freq, only the first few entries will be used, and the values will be + # asymmetric and unnormalized. For larger values, out-of-bound array indices can occur. + # Now we generate a properly sized Hamming array (not Hann/hanning!). The code below + # will match the old predefined values for bin_freq = 7. JWL 2023-02-02 + + w = np.hamming(bin_freq) + tot = np.sum(w) + aa = w/tot ind0 = 0 KK = 0 @@ -426,8 +442,7 @@ def wavpol(ct, bx, by, bz, ngood = np.count_nonzero(~np.isnan(xs)) # Count finite data. if ngood > nopfft: nbp_fft_batches[batch] = np.floor(ngood/steplength) - print('Total number of possible FFT in the batch no ', batch, - ' is:', nbp_fft_batches[batch]) + logging.info('Total number of possible FFT in the batch no ' + str(batch) + ' is:' + str(nbp_fft_batches[batch])) ind0_fft = 0 for j in range(int(nbp_fft_batches[batch])): # ind1_fft = nopfft * (j+1)-1 @@ -516,10 +531,16 @@ def wavpol(ct, bx, by, bz, # Calculation of the degree of polarization. # Calculation of square of smoothed spec matrix. - for k1 in range(3): - for k2 in range(3): - matsqrd[KK, :, k1, k2] = wpol_matsqrd(KK, k1, k2, - ematspec) + # for k1 in range(3): + # for k2 in range(3): + # matsqrd[KK, :, k1, k2] = wpol_matsqrd(KK, k1, k2, + # ematspec) + + # A user suggested using the @ operator (shorthand for np.matmul()) to square the ematspec array, + # since it already deals with any leading dimensions. (Note that only the KKth and lower slices are + # initialized at this point.) -- JWL 2023-04-20 + + matsqrd[KK] = ematspec[KK] @ ematspec[KK] trmatsqrd[KK, :] = np.real(matsqrd[KK, :, 0, 0] + matsqrd[KK, :, 1, 1] + @@ -574,10 +595,7 @@ def wavpol(ct, bx, by, bz, # Print an indication that a computation is happening. if KK == 0 or KK % 40 == 0: - print(' ') - print('wavpol step', KK, ' ', end='') - elif KK % 4 == 0: - print('.', end='') + logging.info('wavpol step: ' + str(KK) + ' ') KK += 1 # End loop "for j" @@ -598,9 +616,9 @@ def wavpol(ct, bx, by, bz, # End "if ngood > nopfft" else: binwidth = samp_freq/nopfft - print('Fourier Transform is not possible. ', - 'Ngood = ', ngood, - 'Required number of points for FFT = ', nopfft) + logging.error('Fourier Transform is not possible. ') + logging.error('Ngood = ' + str(ngood)) + logging.error('Required number of points for FFT = ' + str(nopfft)) timeline[KK] = (ct[ind0] + np.abs(int(nopfft/2))/samp_freq + @@ -627,7 +645,7 @@ def wavpol(ct, bx, by, bz, # Returns results. result = (timeline, freqline, powspec, degpol, waveangle, elliptict, helict, pspec3, err_flag) - print('\nwavpol completed successfully') + logging.info('\nwavpol completed successfully') return result @@ -664,26 +682,26 @@ def twavpol(tvarname, prefix='', nopfft=-1, steplength=-1, bin_freq=-1): all_names = tnames(tvarname) if len(all_names) < 1: - print('twavpol error: No valid pytplot variables match tvarname.') + logging.error('twavpol error: No valid pytplot variables match tvarname.') return 0 xdata = get_data(tvarname) ct = xdata.times if len(ct) < 2: - print('twavpol error: Time variable does not have enough points.') + logging.error('twavpol error: Time variable does not have enough points.') return 0 bfield = xdata.y if bfield.ndim != 2: - print('twavpol error: Data should have 2 dimensions.') + logging.error('twavpol error: Data should have 2 dimensions.') return 0 b1 = bfield[:, 0] b2 = bfield[:, 1] b3 = bfield[:, 2] if (len(ct) != len(b1) or len(ct) != len(b2) or len(ct) != len(b3)): - print('twavpol error: Number of time elements does not match' + - 'number of magnetic field elements.') + logging.error('twavpol error: Number of time elements does not match' + + 'number of magnetic field elements.') return 0 # Apply vawpol. @@ -693,7 +711,7 @@ def twavpol(tvarname, prefix='', nopfft=-1, steplength=-1, bin_freq=-1): bin_freq=bin_freq) if err_flag == 1: - print('twavpol error: There were errors while applying wavpol.') + logging.error('twavpol error: There were errors while applying wavpol.') return 0 # Store new pytplot variables as spectrograms. diff --git a/pyspedas/analysis/wavelet.py b/pyspedas/analysis/wavelet.py index 3c05c1e6..1e6e143b 100644 --- a/pyspedas/analysis/wavelet.py +++ b/pyspedas/analysis/wavelet.py @@ -10,6 +10,7 @@ http://spedas.org/wiki/index.php?title=Wavelet """ +import logging import numpy as np import pywt import pytplot @@ -49,7 +50,7 @@ def wavelet(names, new_names=None, suffix='_pow', wavename='morl', scales=None, powervar = [] if len(varnames) < 1: - print('wavelet error: No pytplot names were provided.') + logging.error('wavelet error: No pytplot names were provided.') return if scales is None: @@ -69,7 +70,7 @@ def wavelet(names, new_names=None, suffix='_pow', wavename='morl', scales=None, data = alldata[1] if len_time < 2: - print('wavelet error: Not enought data points for ' + old) + logging.error('wavelet error: Not enought data points for ' + old) continue coef, freqs = pywt.cwt(data, scales=scales, wavelet=wavename, @@ -81,6 +82,6 @@ def wavelet(names, new_names=None, suffix='_pow', wavename='morl', scales=None, pytplot.options(new, 'spec', 1) powervar.append(new) - print('wavelet was applied to: ' + new) + logging.info('wavelet was applied to: ' + new) return powervar diff --git a/pyspedas/analysis/yclip.py b/pyspedas/analysis/yclip.py index f65bcaf1..006960c5 100644 --- a/pyspedas/analysis/yclip.py +++ b/pyspedas/analysis/yclip.py @@ -7,7 +7,7 @@ This function clips y-axis data. To clip time-axis, use time_clip. """ - +import logging import pyspedas import pytplot import numpy as np @@ -45,7 +45,7 @@ def yclip(names, ymin, ymax, flag=None, new_names=None, suffix=None, old_names = pyspedas.tnames(names) if len(old_names) < 1: - print('yclip error: No pytplot names were provided.') + logging.error('yclip error: No pytplot names were provided.') return if suffix is None: @@ -72,4 +72,4 @@ def yclip(names, ymin, ymax, flag=None, new_names=None, suffix=None, data = pytplot.clip(old, ymin, ymax, new) - print('yclip was applied to: ' + new) + logging.info('yclip was applied to: ' + new) diff --git a/pyspedas/barrel/README.md b/pyspedas/barrel/README.md new file mode 100644 index 00000000..d91410da --- /dev/null +++ b/pyspedas/barrel/README.md @@ -0,0 +1,77 @@ + +## Balloon Array for Radiation belt Relativistic Electron Losses (BARREL) +The routines in this module can be used to load data from the BARREL mission. + +### Data Types +Each Payload returns seven datatypes. +- Slow Spectra (sspc) - 256 channel, 32 second accumulation +- Medium Spectra (mspc) - 48 channel, 4 second accumulation +- Fast Spectra (fspc) - 4 channel (or 6 channel), 20Hz data +- Magnetometer (magn) +- Ephemeris (ephm) +- Rate Counters (rcnt) +- Housekeeping (hkpg) + +### Ballon identifiers +Ballons have a two-digit, alphanumeric identifier. The first digit is a number indicating campagin, the second is a letter indiating the flight. +There have been seven BARREL campaigns, each with anywhere between 1 and 20 flights. +- 1a - 2013-01-28 - 2013-02-14 +- 1b - 2013-01-02 - 2013-01-09 +- 1c - 2013-01-16 - 2013-01-26 +- 1d - 2013-01-04 - 2013-01-21 +- 1g - 2013-01-14 - 2013-01-27 +- 1h - 2013-01-19 - 2013-02-11 +- 1i - 2013-01-09 - 2013-02-16 +- 1j - 2013-01-01 - 2013-01-14 +- 1k - 2013-01-05 - 2013-01-21 +- 1m - 2013-01-06 - 2013-01-12 +- 1n - 2013-01-08 - 2013-01-16 +- 1o - 2013-01-09 - 2013-01-17 +- 1q - 2013-01-20 - 2013-02-06 +- 1r - 2013-01-21 - 2013-01-23 +- 1s - 2013-01-22 - 2013-01-27 +- 1t - 2013-01-24 - 2013-02-15 +- 1u - 2013-01-26 - 2013-02-09 +- 1v - 2013-01-30 - 2013-02-06 +- 2a - 2014-01-16 - 2014-02-04 +- 2b - 2014-01-17 - 2014-02-07 +- 2c - 2014-01-20 - 2014-01-25 +- 2d - 2014-01-01 - 2014-01-01 +- 2e - 2014-01-27 - 2014-01-29 +- 2f - 2014-02-01 - 2014-02-03 +- 2i - 2013-12-31 - 2014-01-14 +- 2k - 2014-01-04 - 2014-01-12 +- 2l - 2014-01-06 - 2014-02-03 +- 2m - 2014-01-11 - 2014-01-13 +- 2n - 2014-01-18 - 2014-01-19 +- 2o - 2014-01-26 - 2014-02-09 +- 2p - 2014-01-30 - 2014-02-11 +- 2q - 2014-02-02 - 2014-02-04 +- 2t - 2013-01-27 - 2014-01-17 +- 2w - 2013-12-31 - 2014-01-11 +- 2x - 2014-01-04 - 2014-01-22 +- 2y - 2014-01-11 - 2014-01-19 +- 3a - 2015-08-10 - 2015-08-10 +- 3b - 2015-08-13 - 2015-08-13 +- 3c - 2015-08-17 - 2015-08-18 +- 3d - 2015-08-19 - 2015-08-19 +- 3e - 2015-08-21 - 2015-08-22 +- 3f - 2015-08-25 - 2015-08-26 +- 3g - 2015-08-25 - 2015-08-26 +- 4a - 2016-08-13 - 2016-08-14 +- 4b - 2016-08-16 - 2016-08-17 +- 4c - 2016-08-21 - 2016-08-22 +- 4d - 2016-08-21 - 2016-08-22 +- 4e - 2016-08-24 - 2016-08-25 +- 4f - 2016-08-28 - 2016-08-29 +- 4g - 2016-08-29 - 2016-08-30 +- 4h - 2016-08-30 - 2016-08-31 +- 5a - 2018-06-25 - 2018-06-26 +- 6a - 2018-02-09 - 2019-02-21 +- 7a - 2019-12-29 - 2020-04-01 + +### Examples +Data can be loaded using the wrapper functions for each data type: +`pyspedas.barrel.sspc(probe='1A', trange= ['2013-01-28', '2013-02-14'])` + +Full example notebooks available at https://github.com/spedas/pyspedas_examples \ No newline at end of file diff --git a/pyspedas/barrel/__init__.py b/pyspedas/barrel/__init__.py new file mode 100644 index 00000000..7c114e1d --- /dev/null +++ b/pyspedas/barrel/__init__.py @@ -0,0 +1,57 @@ +from .load import load + +def sspc(trange=['2013-01-28', '2013-01-29'], + probe='1A', + downloadonly=False, + no_update=False, + time_clip=False): + + return load(datatype='sspc', trange=trange, probe=probe, downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) + +def mspc(trange=['2013-01-29','2013-01-30'], + probe='1A', + downloadonly=False, + no_update=False, + time_clip=False): + + return load(datatype='mspc', trange=trange, probe=probe, downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) + +def fspc(trange=['2013-01-29','2013-01-30'], + probe='1A', + downloadonly=False, + no_update=False, + time_clip=False): + + return load(datatype='fspc',trange=trange, probe=probe, downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) + +def rcnt(trange=['2013-01-29','2013-01-30'], + probe='1A', + downloadonly=False, + no_update=False, + time_clip=False): + + return load(datatype='rcnt', trange=trange, probe=probe, downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) + +def magn(trange=['2013-01-29','2013-01-30'], + probe='1A', + downloadonly=False, + no_update=False, + time_clip=False): + + return load(datatype='magn', trange=trange, probe=probe, downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) + +def ephm(trange=['2013-01-29','2013-01-30'], + probe='1A', + downloadonly=False, + no_update=False, + time_clip=False): + + return load(datatype='ephm', trange=trange, probe=probe, downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) + +def hkpg(trange=['2013-01-29','2013-01-30'], + probe='1A', + downloadonly=False, + no_update=False, + time_clip=False): + + return load(datatype='hkpg', trange=trange, probe=probe, downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) diff --git a/pyspedas/barrel/config.py b/pyspedas/barrel/config.py new file mode 100644 index 00000000..2d6de4f4 --- /dev/null +++ b/pyspedas/barrel/config.py @@ -0,0 +1,70 @@ +import os + +CONFIG = { + 'local_data_dir': 'barrel_data/', + 'remote_data_dir': 'https://spdf.gsfc.nasa.gov/pub/data/barrel/', + 'defaults': { + '1a': {'trange': ['2013-01-28', '2013-02-14']}, + '1b': {'trange': ['2013-01-02', '2013-01-09']}, + '1c': {'trange': ['2013-01-16', '2013-01-26']}, + '1d': {'trange': ['2013-01-04', '2013-01-21']}, + '1g': {'trange': ['2013-01-14', '2013-01-27']}, + '1h': {'trange': ['2013-01-19', '2013-02-11']}, + '1i': {'trange': ['2013-01-09', '2013-02-16']}, + '1j': {'trange': ['2013-01-01', '2013-01-14']}, + '1k': {'trange': ['2013-01-05', '2013-01-21']}, + '1m': {'trange': ['2013-01-06', '2013-01-12']}, + '1n': {'trange': ['2013-01-08', '2013-01-16']}, + '1o': {'trange': ['2013-01-09', '2013-01-17']}, + '1q': {'trange': ['2013-01-20', '2013-02-06']}, + '1r': {'trange': ['2013-01-21', '2013-01-23']}, + '1s': {'trange': ['2013-01-22', '2013-01-27']}, + '1t': {'trange': ['2013-01-24', '2013-02-15']}, + '1u': {'trange': ['2013-01-26', '2013-02-09']}, + '1v': {'trange': ['2013-01-30', '2013-02-06']}, + '2a': {'trange': ['2014-01-16', '2014-02-04']}, + '2b': {'trange': ['2014-01-17', '2014-02-07']}, + '2c': {'trange': ['2014-01-20', '2014-01-25']}, + '2d': {'trange': ['2014-01-01', '2014-01-01']}, + '2e': {'trange': ['2014-01-27', '2014-01-29']}, + '2f': {'trange': ['2014-02-01', '2014-02-03']}, + '2i': {'trange': ['2013-12-31', '2014-01-14']}, + '2k': {'trange': ['2014-01-04', '2014-01-12']}, + '2l': {'trange': ['2014-01-06', '2014-02-03']}, + '2m': {'trange': ['2014-01-11', '2014-01-13']}, + '2n': {'trange': ['2014-01-18', '2014-01-19']}, + '2o': {'trange': ['2014-01-26', '2014-02-09']}, + '2p': {'trange': ['2014-01-30', '2014-02-11']}, + '2q': {'trange': ['2014-02-02', '2014-02-04']}, + '2t': {'trange': ['2013-01-27', '2014-01-17']}, + '2w': {'trange': ['2013-12-31', '2014-01-11']}, + '2x': {'trange': ['2014-01-04', '2014-01-22']}, + '2y': {'trange': ['2014-01-11', '2014-01-19']}, + '3a': {'trange': ['2015-08-10', '2015-08-10']}, + '3b': {'trange': ['2015-08-13', '2015-08-13']}, + '3c': {'trange': ['2015-08-17', '2015-08-18']}, + '3d': {'trange': ['2015-08-19', '2015-08-19']}, + '3e': {'trange': ['2015-08-21', '2015-08-22']}, + '3f': {'trange': ['2015-08-25', '2015-08-26']}, + '3g': {'trange': ['2015-08-25', '2015-08-26']}, + '4a': {'trange': ['2016-08-13', '2016-08-14']}, + '4b': {'trange': ['2016-08-16', '2016-08-17']}, + '4c': {'trange': ['2016-08-21', '2016-08-22']}, + '4d': {'trange': ['2016-08-21', '2016-08-22']}, + '4e': {'trange': ['2016-08-24', '2016-08-25']}, + '4f': {'trange': ['2016-08-28', '2016-08-29']}, + '4g': {'trange': ['2016-08-29', '2016-08-30']}, + '4h': {'trange': ['2016-08-30', '2016-08-31']}, + '5a': {'trange': ['2018-06-25', '2018-06-26']}, + '6a': {'trange': ['2018-02-09', '2019-02-21']}, + '7a': {'trange': ['2019-12-29', '2020-04-01']} + } +} + +# override local data directory with environment variables +if os.environ.get('SPEDAS_DATA_DIR'): + CONFIG['local_data_dir'] = os.sep.join( + [os.environ['SPEDAS_DATA_DIR'], 'barrel']) + +if os.environ.get('GOES_DATA_DIR'): + CONFIG['local_data_dir'] = os.environ['BARREL_DATA_DIR'] \ No newline at end of file diff --git a/pyspedas/barrel/load.py b/pyspedas/barrel/load.py new file mode 100644 index 00000000..e812f11b --- /dev/null +++ b/pyspedas/barrel/load.py @@ -0,0 +1,68 @@ +from pyspedas.utilities.dailynames import dailynames +from pyspedas.utilities.download import download +from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import cdf_to_tplot + +from .config import CONFIG + +def load(trange=None, + probe='1A', + datatype='sspc', + level='l2', + version='v10', + get_support_data=False, + files='', + notplot=False, + downloadonly=False, + no_update=False, + time_clip=False): + """ + This function loads data from the BARREL mission; this function is not meant + to be called directly; instead, see the wrappers: + pyspedas.barrel.sspc + pyspedas.barrel.mspc + pyspedas.barrel.fspc + pyspedas.barrel.magn + pyspedas.barrel.ephm + pyspedas.barrel.rcnt + pyspedas.barrel.hkpg + + """ + + + if not isinstance(probe, list): + probe = [probe] + + if trange is None: + trange = CONFIG['defaults'][probe[0]] + + out_files = [] + for prb in probe: + remote_path = ( + str(level) + '/' + str(prb) + '/' + str(datatype) + + '/bar_' + str(prb) + '_' + str(level) + '_' + str(datatype) + '_%Y%m%d_' + str(version) + '.cdf' + ) + + remote_names = [name.lower() for name in dailynames(file_format=remote_path, trange=trange)] + + files = download(remote_file=remote_names, remote_path=CONFIG['remote_data_dir'], + local_path=CONFIG['local_data_dir'], no_download=no_update) + if files is not None: + for file in files: + out_files.append(file) + + out_files = sorted(out_files) + + if downloadonly: + return out_files + + tvars = cdf_to_tplot(out_files, get_support_data=get_support_data, notplot=notplot) + + if tvars is None: + return + + if time_clip: + for new_var in tvars: + tclip(new_var, trange[0], trange[1], suffix='') + + return tvars diff --git a/pyspedas/barrel/tests/__init__.py b/pyspedas/barrel/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pyspedas/barrel/tests/tests.py b/pyspedas/barrel/tests/tests.py new file mode 100644 index 00000000..176856f5 --- /dev/null +++ b/pyspedas/barrel/tests/tests.py @@ -0,0 +1,16 @@ + +import os +import unittest +from pyspedas.utilities.data_exists import data_exists + +import pyspedas + + +class LoadTestCases(unittest.TestCase): + def test_downloadonly(self): + mag_files = pyspedas.barrel.sspc(probe='1A', downloadonly=True) + self.assertTrue(os.path.exists(mag_files[0])) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/pyspedas/cdagui/cdagui.py b/pyspedas/cdagui/cdagui.py index 940fb1eb..390a993d 100644 --- a/pyspedas/cdagui/cdagui.py +++ b/pyspedas/cdagui/cdagui.py @@ -3,317 +3,198 @@ A GUI that can download data files from CDAWeb and load them into pytplot variables. -Requires cdasws, PyQt5. - -To open the GUI window: - from pyspedas.cdagui.cdagui import cdagui - x = cdagui() +Requires cdasws. For cdasws documentation, see: https://pypi.org/project/cdasws/ https://cdaweb.gsfc.nasa.gov/WebServices/REST/py/cdasws/index.html -Notes: - To start the gui from the command line: - python pyspedas/cdagui/cdagui.py - To start the gui inside the python environment: - exec(open('cdagui.py').read()) +To open the GUI window: + from pyspedas.cdagui.cdagui import cdagui + x = cdagui() +To start the gui from the command line, use: + python pyspedas/cdagui/cdagui.py """ -import sys -import datetime -from PyQt5.QtCore import Qt, QDate, QCoreApplication -from PyQt5.QtWidgets import (QApplication, QWidget, QMainWindow, - QGridLayout, QPushButton, QListWidget, - QGroupBox, QCheckBox, QMessageBox, - QVBoxLayout, QLabel, QLineEdit, - QFileDialog, QCalendarWidget, QDialog) +import os +import time +import tkinter as tk +from tkinter import messagebox, filedialog from cdaweb import CDAWeb from config import CONFIG -appx = QApplication(sys.argv) - - -def show_my_message(self, title, msg): - """Show a message.""" - alert = QMessageBox(self) - alert.setWindowTitle(title) - alert.setText(msg) - alert.setIcon(2) - alert.show() - return alert - - -class cdagui(QMainWindow): - """Main CDAWeb Window.""" - - def __init__(self, parent=None): - """Inilitalize.""" - super().__init__() - self.main_widget = GUIWidget(self) - self.setCentralWidget(self.main_widget) - self.init_UI() - - def init_UI(self): - """Start GUI.""" - self.setWindowTitle('CDAWeb Data Downloader') - self.statusbar = self.statusBar() - self.statusbar.showMessage('Status: Ready') - self.showMaximized() - - -class GUIWidget(QWidget): - """Main GUI class.""" - - def __init__(self, parent): - """Initialize widget.""" - super(GUIWidget, self).__init__(parent) - self.parent = parent - self.cda = CDAWeb() - self.title_css = "background-color:#AFEEEE;\ - font-family:Verdana;font-size:14px;" - self.button_css = "background-color:#AFEEAF;font-family:Verdana;" - self.clear_css = "background-color:#E9967A;font-family:Verdana;" - self.initUI() - - def createMissionGroupBox(self): - """1. Missions and instruments group of GUI.""" - - def button1_find_datasets(): - title = "Find Datasets" - self.dataset_box.clear() - self.file_box.clear() - mission_list = [item.text() for item in - self.mission_box.selectedItems()] - instrument_list = [item.text() for item in - self.instrument_box.selectedItems()] - if len(mission_list) < 1 or len(instrument_list) < 1: - msg = "Please select at least one mission and one instrument." - aaa = show_my_message(self.parent, title, msg) - return 0 - datasets = self.cda.get_datasets(mission_list, instrument_list) - datalen = len(datasets) - if datalen < 1: - msg = "No datasets were found with these parameters." - aaa = show_my_message(self.parent, title, msg) - return 0 - elif datalen > 50: - msg = "Number of datasets found: " + str(datalen) - msg += "\nOnly 50 will be shown." - aaa = show_my_message(self.parent, title, msg) - self.mission_selected.setText(str(mission_list)) - self.instrument_selected.setText(str(instrument_list)) - self.dataset_box.addItems(datasets[:50]) - - # Missions group GUI elements - self.missionGroupBox = QGroupBox("Missions and Instruments") - - label1 = QLabel("Mission Groups:") - list1 = QListWidget(self) - list1.setSelectionMode(QListWidget.MultiSelection) - list1.setMinimumHeight(50) - list1.setMinimumWidth(400) - list1.addItems(self.cda.get_observatories()) - self.mission_box = list1 - - label2 = QLabel("Instrument Types:") - list2 = QListWidget(self) - list2.setSelectionMode(QListWidget.MultiSelection) - list2.setMinimumHeight(50) - list2.setMinimumWidth(400) - list2.addItems(self.cda.get_instruments()) - self.instrument_box = list2 - - label3 = QLabel("Select one or more Mission Group(s) and one" - + " or more Instrument Type(s) and press:") - button1 = QPushButton("1. Find Datasets") - button1.setStyleSheet(self.button_css) - button1.clicked.connect(button1_find_datasets) - - # Create the layout and add GUI elements - # row, column, rowSpan, columnSpan - layout = QGridLayout() - layout.addWidget(label1, 0, 0) - layout.addWidget(label2, 0, 1) - layout.addWidget(list1, 1, 0) - layout.addWidget(list2, 1, 1) - layout.addWidget(label3, 2, 0, 1, 1) - layout.addWidget(button1, 2, 1, 1, 1) - - self.missionGroupBox.setLayout(layout) - - def createDatasetBox(self): - """2. Dataset group of GUI.""" - # Datasets group GUI elements - self.datasetGroupBox = QGroupBox("Datasets") - - label1 = QLabel("Selected Mission Groups:") - ans1 = QLabel(" ") - self.mission_selected = ans1 - ans1.setWordWrap(True) - - label2 = QLabel("Selected Instruments:") - ans2 = QLabel(" ") - self.instrument_selected = ans2 - ans2.setWordWrap(True) - - list1 = QListWidget(self) - self.dataset_box = list1 - list1.setMinimumHeight(50) - list1.setMinimumWidth(400) - list1.setSelectionMode(QListWidget.MultiSelection) - - layout = QGridLayout() - layout.addWidget(label1, 0, 0, 1, 1) - layout.addWidget(ans1, 0, 1, 1, 15) - layout.addWidget(label2, 1, 0, 1, 1) - layout.addWidget(ans2, 1, 1, 1, 15) - layout.addWidget(list1, 2, 0, 1, 16) - - self.datasetGroupBox.setLayout(layout) - - def createTimeGroupBox(self): - """3. Date and time group of GUI.""" - - def button2_get_file_list(): - title = "Get File List" - self.file_box.clear() - dataset_list = [item.text() for item in - self.dataset_box.selectedItems()] - t0 = self.time_start_box.text() - t1 = self.time_end_box.text() - if len(dataset_list) < 1 or len(t0) < 9 or len(t1) < 9: - msg = "Please select at least one dataset and start-end times." - aaa = show_my_message(self.parent, title, msg) - return 0 - file_list = self.cda.get_filenames(dataset_list, t0, t1) - filelen = len(file_list) +class cdaWindow: + + def __init__(self, master): + # CDAWeb connection + cda = CDAWeb() + + # Defaults + default_start_time = "2023-01-01 00:00:00" + default_end_time = "2023-01-01 23:59:59" + download_box = tk.IntVar() + default_dir = CONFIG["local_data_dir"] + default_status = "Status: Ready!" + + def status(txt): + # Change status bar, show wait cursor + if txt == "": + status_label.config(text=default_status) + master.config(cursor="") + else: + status_label.config(text="Status: " + str(txt)) + master.config(cursor="wait") + time.sleep(0.2) + + master.update_idletasks() + master.update() + + def select_dir(): + # Button: Select dir + initial_dir = str(dir_entry.get()) + path = filedialog.askdirectory(parent=window, initialdir=initial_dir, title="Please select a directory", mustexist=True) + if os.path.exists(path): + dir_entry.delete(0, tk.END) + dir_entry.insert(0, path) + + def clear_boxes(): + # Button: Clear all list boxes + mission_list.selection_clear(0, tk.END) + instrument_list.selection_clear(0, tk.END) + dataset_list.delete(0, tk.END) + file_list.delete(0, tk.END) + label_groups.config(text="Selected Mission Groups:") + label_instruments.config(text="Selected Instrument Types:") + + def exit_gui(): + # Button: Exit + window.destroy() + + def find_datasets(): + # Button: 1. Find Datasets + msgtitle = "Find Datasets" + + # Change status + status(msgtitle + "...") + + datasets = [] + dataset_list.delete(0, tk.END) + file_list.delete(0, tk.END) + sel_g = list(mission_list.curselection()) + sel_g_val = [mission_list.get(index) for index in sel_g] + sel_i = list(instrument_list.curselection()) + sel_i_val = [instrument_list.get(index) for index in sel_i] + if len(sel_g_val) < 1: + messagebox.showerror(msgtitle, "Please select one or more Mission Groups!") + elif len(sel_i_val) < 1: + messagebox.showerror(msgtitle, "Please select one or more Instrument Types!") + else: + label_groups.config(text="Selected Mission Groups: [" + ",".join(sel_g_val) + "]") + label_instruments.config(text="Selected Instrument Types: [" + ",".join(sel_i_val) + "]") + + datasets = cda.get_datasets(sel_g_val, sel_i_val) + if len(datasets) < 1: + messagebox.showerror(msgtitle, "No datasets found for these parameters!") + else: + for i in datasets: + dataset_list.insert(tk.END, str(i)) + + status("") # Reset status + + return datasets + + def find_filelist(): + # Button: 2. Get File List + msgtitle = "Get File List" + + # Change status + status(msgtitle + "...") + + file_list.delete(0, tk.END) + all_files = [] + sel_d = list(dataset_list.curselection()) + sel_d_val = [dataset_list.get(index) for index in sel_d] + if len(sel_d_val) < 1: + messagebox.showerror(msgtitle, "Please select one or more Datasets!") + status("") # Reset status + return [] + + t0 = str(start_time.get()) + t1 = str(end_time.get()) + if len(t0) < 1 or len(t1) < 1: + messagebox.showerror(msgtitle, "Please set start and end time!") + status("") # Reset status + return [] + + # Get all files for this dataset and start/end times. + all_files = cda.get_filenames(sel_d_val, t0, t1) + filelen = len(all_files) if filelen < 1: - msg = "No datasets were found with these parameters." - aaa = show_my_message(self.parent, title, msg) - return 0 + msg = "No files were found with these parameters." + messagebox.showinfo(msgtitle, msg) + status("") # Reset status + return [] elif filelen > 50: msg = "Number of files found: " + str(filelen) msg += "\nOnly 50 will be shown." - aaa = show_my_message(self.parent, title, msg) - self.file_box.addItems(file_list[:50]) - - def pick_time(start_or_end): - """Date picker.""" - dlg = QDialog(self) - gridc = QVBoxLayout() - dlg.setLayout(gridc) - if (start_or_end == "start"): - title_str = "Start date" + messagebox.showinfo(msgtitle, msg) + + # Add filenames to listbox (up to 50 files) + for i in all_files[:50]: + file_list.insert(tk.END, str(i)) + + status("") # Reset status + + # Return all files, even if they are more than 50 + return all_files + + def get_data(): + # Button: 3. Get Data + msgtitle = "Get Data" + + # Change status + status(msgtitle + "...") + + file_result = [] + sel_f = list(file_list.curselection()) + sel_f_val = [file_list.get(index) for index in sel_f] + if len(sel_f_val) < 1: + messagebox.showerror(msgtitle, "Please select one or more files to download!") + status("") # Reset status + return [] + + if download_box.get() == 1: + download_only = True else: - title_str = "End date" - titlelabel = QLabel(title_str) - gridc.addWidget(titlelabel) - - my_calendar = QCalendarWidget() - my_calendar.setGridVisible(True) - my_calendar.move(10, 20) - gridc.addWidget(my_calendar) - - labeldate = QLabel("") - gridc.addWidget(labeldate) - - def dial_exit(): - dlg.done(1) - - buttonc = QPushButton("Close") - buttonc.clicked.connect(dial_exit) - gridc.addWidget(buttonc) - - def show_date(): - date = my_calendar.selectedDate() - date_string = date.toString('yyyy-MM-dd') - if (start_or_end == "start"): - self.time_start_box.setText(date_string + " 00:00:01") - else: - self.time_end_box.setText(date_string + " 23:59:59") - labeldate.setText(date_string) - - my_calendar.clicked[QDate].connect(show_date) - - dlg.setWindowTitle("Calendar") - dlg.exec_() - - # Date and Time group GUI elements - self.timeGroupBox = QGroupBox("Date and Time") - - # By default show 7 days behind to ensure that there is data - label1 = QLabel("Start Time:") - t0 = datetime.datetime.strftime(datetime.datetime.now() - - datetime.timedelta(7), '%Y-%m-%d') - time1 = QLineEdit(str(t0) + " 00:00:01") - self.time_start_box = time1 - button1 = QPushButton("Select") - button1.clicked.connect(lambda: pick_time("start")) - - label2 = QLabel("End Time:") - time2 = QLineEdit(str(t0) + " 23:59:59") - self.time_end_box = time2 - button2 = QPushButton("Select") - button2.clicked.connect(lambda: pick_time("end")) - - label3 = QLabel("Date and time format: YYYY-MM-DD[ HH:MM:SS]") - button3 = QPushButton("2. Get File List") - button3.setStyleSheet(self.button_css) - button3.clicked.connect(button2_get_file_list) - - layout = QGridLayout() - layout.addWidget(label1, 0, 0) - layout.addWidget(time1, 0, 1) - layout.addWidget(button1, 0, 2) - layout.addWidget(label2, 0, 3) - layout.addWidget(time2, 0, 4) - layout.addWidget(button2, 0, 5) - layout.addWidget(label3, 1, 0, 1, 3) - layout.addWidget(button3, 1, 3, 1, 3) - - self.timeGroupBox.setLayout(layout) - - def createDownloadGroupBox(self): - """4. Download group of GUI.""" - - def button3_get_data(): - """Get data button.""" - title = "Download Files" - file_list = [item.text() for item in self.file_box.selectedItems()] - if len(file_list) < 1: - msg = "Please select at least one file to download." - aaa = show_my_message(self.parent, title, msg) - return 0 - local_dir = self.dir_box.text() + download_only = False + + local_dir = str(dir_entry.get()) if len(local_dir) < 1: - msg = "Please select a local directory." - aaa = show_my_message(self.parent, title, msg) - return 0 - download_only = False - if check1.isChecked(): - download_only = True + local_dir = default_dir + dir_entry.insert(0, default_dir) + - # The following can be slow, especially if there are multiple files - self.parent.statusbar.showMessage('Status: Downloading, \ - please wait...') - QApplication.setOverrideCursor(Qt.WaitCursor) - QApplication.processEvents() - result = self.cda.cda_download(file_list, local_dir, download_only) - QApplication.restoreOverrideCursor() - self.parent.statusbar.showMessage('Status: Ready') + # Get the files, and/or the tplot variables + # sesults is a list [remote filename, local filename, status] + result = cda.cda_download(sel_f_val, local_dir, download_only) + # Show a message about the results filelen = len(result) if filelen < 1: msg = "No files were downloaded." - aaa = show_my_message(self.parent, title, msg) - return 0 + messagebox.showerror(msgtitle, msg) + status("") # Reset status + return [] + else: + file_result = result count_no_downloads = 0 count_tplot_problem = 0 count_tplot = 0 for item in result: + if len(item) != 3: + continue if item[2] == -1: count_no_downloads += 1 elif item[2] == 0 and not download_only: @@ -330,114 +211,217 @@ def button3_get_data(): msg += ("\nFiles loaded to pytplot: " + str(count_tplot)) msg += ("\nFiles that could not be loaded to pytplot: " + str(count_tplot_problem)) - aaa = show_my_message(self.parent, title, msg) + # Show final message with results + messagebox.showinfo(msgtitle, msg) + + status("") # Reset status + return file_result + + # Create the main window + window = master + window.title("CDAWeb Data Downloader") + window.geometry("800x600") + window.configure() + window.option_add("*font", "lucida 10") + window.state("zoomed") # Start maximazed + window.minsize(800, 600) + + # Size of grid + no_of_cols = 2 + no_of_rows = 14 + + # Create columns + for i in range(no_of_cols): + window.grid_columnconfigure(i, weight=1) + + # Create rows + for i in range(no_of_rows): + window.grid_rowconfigure(i, weight=1) + + # Row 0 - just a label + window.grid_rowconfigure(0, weight=0) + label00 = tk.Label(window, text="Download Data from CDAWeb", bg="#AFEEEE", font=("Helvetica", 10, "bold")) + label00.grid(row=0, columnspan=2, sticky="new") + + # Row 1, 2 - Mission Groups and Instrument Types + window.grid_rowconfigure(1, weight=0) + label10 = tk.Label(window, text="Mission Groups:") + label10.grid(row=1, column=0, sticky="ws") + + label11 = tk.Label(window, text="Instrument Types:") + label11.grid(row=1, column=1, sticky="ws") + + cell20 = tk.Frame(window) + cell20.grid(row=2, column=0, sticky="nsew") + mission_list = tk.Listbox(cell20, selectmode=tk.MULTIPLE, exportselection=False) + mission_list.pack(side=tk.TOP, fill=tk.BOTH, padx=5, pady=5, ipadx=5, ipady=5, expand=True) + cdagroups = cda.get_observatories() + # cdagroups = [i for i in range(200)] + for g in cdagroups: + mission_list.insert(tk.END, str(g)) + scrollbar20 = tk.Scrollbar(mission_list, orient="vertical") + scrollbar20.pack(side=tk.RIGHT, fill=tk.BOTH) + mission_list.config(yscrollcommand=scrollbar20.set) + scrollbar20.config(command=mission_list.yview) + + cell21 = tk.Frame(window) + cell21.grid(row=2, column=1, sticky="nsew") + instrument_list = tk.Listbox(cell21, selectmode=tk.MULTIPLE, exportselection=False) + instrument_list.pack(side=tk.TOP, fill=tk.BOTH, padx=5, pady=5, ipadx=5, ipady=5, expand=True) + cdainstr = cda.get_instruments() + # cdainstr = [i for i in range(200)] + for i in cdainstr: + instrument_list.insert(tk.END, str(i)) + scrollbar21 = tk.Scrollbar(instrument_list, orient="vertical") + scrollbar21.pack(side=tk.RIGHT, fill=tk.BOTH) + instrument_list.config(yscrollcommand=scrollbar21.set) + scrollbar21.config(command=instrument_list.yview) + + # Row 3 - Find Datasets button + window.grid_rowconfigure(3, weight=0) + msg = "Select Mission Group(s) and Instrument Type(s) and press:" + label30 = tk.Label(window, text=msg) + label30.grid(row=3, column=0, sticky="nse") + + button31 = tk.Button(window, text="1. Find Datasets", bg="#AFEEAF", command=find_datasets, width=30) + button31.grid(row=3, column=1, sticky="nsw") + + # Row 4 - Dataset labels + window.grid_rowconfigure(4, weight=0) + cell40 = tk.Frame(window) + cell40.grid(row=4, columnspan=2, sticky="new") + for i in range(3): + cell40.grid_rowconfigure(i, weight=1) + cell40.grid_columnconfigure(0, weight=1) + label_groups = tk.Label(cell40, text="Selected Mission Groups:", justify="left", anchor="w") + label_groups.grid(row=0, sticky="new") + label_instruments = tk.Label(cell40, text="Selected Instrument Types:", justify="left", anchor="w") + label_instruments.grid(row=1, sticky="new") + label_2 = tk.Label(cell40, text="Datasets:", justify="left", anchor="w") + label_2.grid(row=2, sticky="new") + + # Row 5 - Datasets + cell50 = tk.Frame(window) + cell50.grid(row=5, columnspan=2, sticky="nsew") + dataset_list = tk.Listbox(cell50, selectmode=tk.MULTIPLE, exportselection=False) + dataset_list.pack(side=tk.TOP, fill=tk.BOTH, padx=5, pady=5, ipadx=5, ipady=5, expand=True) + scrollbar50 = tk.Scrollbar(dataset_list, orient="vertical") + scrollbar50.pack(side=tk.RIGHT, fill=tk.BOTH) + dataset_list.config(yscrollcommand=scrollbar50.set) + scrollbar50.config(command=dataset_list.yview) + + # Row 6, 7 - Date Time + window.grid_rowconfigure(6, weight=0) + label60 = tk.Label(window, text="Date and Time (format: YYYY-MM-DD[ HH:MM:SS])", justify="left", anchor="w") + label60.grid(row=6, columnspan=2, sticky="new") + + window.grid_rowconfigure(7, weight=0) + cell70 = tk.Frame(window) + cell70.grid(row=7, column=0, sticky="new") + cell70.grid_rowconfigure(0, weight=1) + cell70.grid_columnconfigure(0, weight=0) + cell70.grid_columnconfigure(1, weight=1) + cell70.grid_columnconfigure(2, weight=0) + label70 = tk.Label(cell70, text="Start Time:", justify="left", anchor="w") + label70.grid(row=0, column=0, sticky="wsn") + start_time = tk.Entry(cell70) + start_time.insert(0, default_start_time) + start_time.grid(row=0, column=1, sticky="ewsn", padx=6) + + cell71 = tk.Frame(window) + cell71.grid(row=7, column=1, sticky="new") + cell71.grid_rowconfigure(0, weight=1) + cell71.grid_columnconfigure(0, weight=0) + cell71.grid_columnconfigure(1, weight=1) + cell71.grid_columnconfigure(2, weight=0) + label71 = tk.Label(cell71, text="End Time:", justify="left", anchor="w") + label71.grid(row=0, column=0, sticky="wsn") + end_time = tk.Entry(cell71) + end_time.insert(0, default_end_time) + end_time.grid(row=0, column=1, sticky="sewn", padx=6) + + # Row 8 - Get File List button + window.grid_rowconfigure(8, weight=0) + msg = "Select Dataset(s) and Times and press:" + label80 = tk.Label(window, text=msg) + label80.grid(row=8, column=0, sticky="nse", pady=6) + + button81 = tk.Button(window, text="2. Get File List", bg="#AFEEAF", command=find_filelist, width=30) + button81.grid(row=8, column=1, sticky="nsw", pady=6) + + # Row 9, 10 - Files + window.grid_rowconfigure(9, weight=0) + label90 = tk.Label(window, text="Remote Files:", justify="left", anchor="w") + label90.grid(row=9, columnspan=2, sticky="new") + + cell100 = tk.Frame(window) + cell100.grid(row=10, columnspan=2, sticky="nsew") + file_list = tk.Listbox(cell100, selectmode=tk.MULTIPLE, exportselection=False) + file_list.pack(side=tk.TOP, fill=tk.BOTH, padx=5, pady=5, ipadx=5, ipady=5, expand=True) + scrollbar100 = tk.Scrollbar(file_list, orient="vertical") + scrollbar100.pack(side=tk.RIGHT, fill=tk.BOTH) + file_list.config(yscrollcommand=scrollbar100.set) + scrollbar100.config(command=file_list.yview) + + # Row 11 - Download Directory + window.grid_rowconfigure(11, weight=0) + cell110 = tk.Frame(window) + cell110.grid(row=11, columnspan=2, sticky="new") + cell110.grid_columnconfigure(0, weight=0) + cell110.grid_columnconfigure(1, weight=1) + cell110.grid_columnconfigure(2, weight=0) + + label110 = tk.Label(cell110, text="Local Directory:", justify="left", anchor="w") + label110.grid(row=0, column=0, sticky="new", padx=4) + dir_entry = tk.Entry(cell110) + dir_entry.insert(0, default_dir) + dir_entry.grid(row=0, column=1, sticky="sewn", padx=4) + # dir_entry.bind("", lambda e: "break") # Make it read-only + button110 = tk.Button(cell110, text="Select Directory", command=select_dir, width=15) + button110.grid(row=0, column=2, sticky="wns", padx=4) + + # Row 12 - Download Only checkbox, Get Data button, Clear, Exit + window.grid_rowconfigure(12, weight=0) + + cell120 = tk.Frame(window) + cell120.grid(row=12, column=0, sticky="new", pady=4) + cell120.grid_columnconfigure(0, weight=0) + cell120.grid_columnconfigure(1, weight=1) + cell120.grid_columnconfigure(2, weight=0) + only_ch = tk.Checkbutton(cell120, text="Download Only", variable=download_box, onvalue=1, offvalue=0) + only_ch.grid(row=0, column=0, sticky="new", padx=4) + msg = "Select Files(s) and press:" + label120 = tk.Label(cell120, text=msg) + label120.grid(row=0, column=2, sticky="nse", pady=6) + + cell121 = tk.Frame(window) + cell121.grid(row=12, column=1, sticky="new", pady=4) + cell121.grid_columnconfigure(0, weight=0) + cell121.grid_columnconfigure(1, weight=1) + cell121.grid_columnconfigure(2, weight=0) + cell121.grid_columnconfigure(3, weight=0) + button122 = tk.Button(cell121, text="3. Get Data", bg="#AFEEAF", command=get_data, width=30) + button122.grid(row=0, column=0, sticky="wns", padx=4) + button123 = tk.Button(cell121, text="Clear", command=clear_boxes, width=10, bg="#E9967A") + button123.grid(row=0, column=2, sticky="wns", padx=4) + button124 = tk.Button(cell121, text="Exit", command=exit_gui, width=10, bg="#E9967A") + button124.grid(row=0, column=3, sticky="wns", padx=4) + + # Row 13 - Status bar + window.grid_rowconfigure(13, weight=0) + status_label = tk.Label(window, text=default_status, justify="left", anchor="w", relief="groove") + status_label.grid(row=13, columnspan=2, sticky="new", padx=2) + + +def cdagui(): + root = tk.Tk() + startgui = cdaWindow(root) + root.mainloop() + return startgui + + +if __name__ == "__main__": + root = tk.Tk() + startgui = cdaWindow(root) + root.mainloop() - def select_dir(): - """Select directory.""" - file = str(QFileDialog.getExistingDirectory(self, - "Select Directory")) - if file: - self.local_dir = file - self.dir_box.setText(self.local_dir) - - def clear_all(): - """Clear all boxes.""" - self.mission_box.clearSelection() - self.instrument_box.clearSelection() - self.instrument_selected.setText('') - self.mission_selected.setText('') - self.dataset_box.clear() - self.file_box.clear() - self.parent.statusbar.showMessage('Status: Ready') - - def exit_all(): - self.parent.close() - - # Download Files GUI elements - self.dirGroupBox = QGroupBox("Remote Files and Download") - - list1 = QListWidget(self) - list1.setMinimumHeight(50) - list1.setMinimumWidth(400) - list1.setSelectionMode(QListWidget.MultiSelection) - self.file_box = list1 - - label1 = QLabel("Download Directory:") - dir1 = QLineEdit() - self.local_dir = CONFIG['local_data_dir'] - dir1.setText(self.local_dir) - self.dir_box = dir1 - button1 = QPushButton("Change Directory") - button1.clicked.connect(select_dir) - - msg2 = ("If checked, then the files will" - + " only be downloaded. If unchecked, then they will also" - + " be read and loaded into pytplot variables.") - check1 = QCheckBox("Download Only") - check1.setToolTip(msg2) - check1.setChecked(True) - buttondown = QPushButton("3. Get Data") - buttondown.setStyleSheet(self.button_css) - buttondown.clicked.connect(button3_get_data) - - buttonclear = QPushButton("Clear") - buttonclear.setStyleSheet(self.clear_css) - buttonclear.clicked.connect(clear_all) - - buttonexit = QPushButton("Exit") - buttonexit.setStyleSheet(self.clear_css) - buttonexit.clicked.connect(exit_all) - - layout = QGridLayout() - layout.addWidget(list1, 0, 0, 1, 6) - layout.addWidget(label1, 1, 0, 1, 1) - layout.addWidget(dir1, 1, 1, 1, 4) - layout.addWidget(button1, 1, 5, 1, 1) - layout.addWidget(check1, 2, 0, 1, 2) - layout.addWidget(buttondown, 2, 2, 1, 2) - layout.addWidget(buttonclear, 2, 4, 1, 1) - layout.addWidget(buttonexit, 2, 5, 1, 1) - - # Button1 action - - self.dirGroupBox.setLayout(layout) - - def initUI(self): - """Create GUI.""" - # Main layout is vertical - grid = QVBoxLayout() - self.setLayout(grid) - - # Top label - label1 = QLabel("Download Data from CDAWeb") - label1.setStyleSheet(self.title_css) - label1.setAlignment(Qt.AlignCenter) - label1.setMaximumHeight(20) - grid.addWidget(label1) - - # 1. Create missions and instruments group - self.createMissionGroupBox() - grid.addWidget(self.missionGroupBox) - - # 2. Create dataset group - self.createDatasetBox() - grid.addWidget(self.datasetGroupBox) - - # 3. Create datetime group - self.createTimeGroupBox() - grid.addWidget(self.timeGroupBox) - - # 4. Create download group - self.createDownloadGroupBox() - grid.addWidget(self.dirGroupBox) - - self.showMaximized() - - -if __name__ == '__main__': - app = QCoreApplication.instance() - if app is None: - app = QApplication(sys.argv) - - cdagui = cdagui() - sys.exit(app.exec_()) diff --git a/pyspedas/cdagui/cdaweb.py b/pyspedas/cdagui/cdaweb.py index 94576be3..cfd1ef3f 100644 --- a/pyspedas/cdagui/cdaweb.py +++ b/pyspedas/cdagui/cdaweb.py @@ -6,6 +6,7 @@ https://cdaweb.gsfc.nasa.gov/WebServices/REST/py/cdasws/index.html """ +import logging import os import re from cdasws import CdasWs @@ -137,20 +138,20 @@ def cda_download(self, remote_files, local_dir, download_only=False, msg = "cdf_to_tplot could not load " + localfile msg += "\n\n" msg += "Error from pytplot: " + str(err) - print(msg) + logging.error(msg) tplot_loaded = 0 else: - print(str(count) + '. There was a problem. Could not download \ + logging.error(str(count) + '. There was a problem. Could not download \ file: ' + remotef) tplot_loaded = -1 localfile = '' result.append([remotef, localfile, tplot_loaded]) - print('Downloaded ' + str(dcount) + ' files.') + logging.info('Downloaded ' + str(dcount) + ' files.') if not download_only: loaded_vars = list(set(loaded_vars)) - print('tplot variables:') + logging.info('tplot variables:') for var in loaded_vars: - print(var) + logging.info(var) return result diff --git a/pyspedas/cluster/__init__.py b/pyspedas/cluster/__init__.py index b2486aa1..0acd40cb 100644 --- a/pyspedas/cluster/__init__.py +++ b/pyspedas/cluster/__init__.py @@ -1,5 +1,6 @@ - from .load import load +from pyspedas.utilities.datasets import find_datasets + def fgm(trange=['2018-11-5', '2018-11-6'], probe='1', @@ -60,6 +61,7 @@ def fgm(trange=['2018-11-5', '2018-11-6'], """ return load(instrument='fgm', trange=trange, probe=probe, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, no_update=no_update, time_clip=time_clip) + def aspoc(trange=['2018-11-5', '2018-11-6'], probe='1', datatype='pp', @@ -119,6 +121,7 @@ def aspoc(trange=['2018-11-5', '2018-11-6'], """ return load(instrument='aspoc', trange=trange, probe=probe, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, no_update=no_update, time_clip=time_clip) + def cis(trange=['2018-11-5', '2018-11-6'], probe='1', datatype='pp', @@ -178,6 +181,7 @@ def cis(trange=['2018-11-5', '2018-11-6'], """ return load(instrument='cis', trange=trange, probe=probe, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, no_update=no_update, time_clip=time_clip) + def dwp(trange=['2018-11-5', '2018-11-6'], probe='1', datatype='pp', @@ -237,6 +241,7 @@ def dwp(trange=['2018-11-5', '2018-11-6'], """ return load(instrument='dwp', trange=trange, probe=probe, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, no_update=no_update, time_clip=time_clip) + def edi(trange=['2018-11-5', '2018-11-6'], probe='1', datatype='pp', @@ -296,6 +301,7 @@ def edi(trange=['2018-11-5', '2018-11-6'], """ return load(instrument='edi', trange=trange, probe=probe, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, no_update=no_update, time_clip=time_clip) + def efw(trange=['2018-11-5', '2018-11-6'], probe='1', datatype='pp', @@ -355,6 +361,7 @@ def efw(trange=['2018-11-5', '2018-11-6'], """ return load(instrument='efw', trange=trange, probe=probe, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, no_update=no_update, time_clip=time_clip) + def peace(trange=['2016-11-5', '2016-11-6'], probe='1', datatype='pp', @@ -414,6 +421,7 @@ def peace(trange=['2016-11-5', '2016-11-6'], """ return load(instrument='peace', trange=trange, probe=probe, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, no_update=no_update, time_clip=time_clip) + def rapid(trange=['2016-11-5', '2016-11-6'], probe='1', datatype='pp', @@ -473,6 +481,7 @@ def rapid(trange=['2016-11-5', '2016-11-6'], """ return load(instrument='rapid', trange=trange, probe=probe, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, no_update=no_update, time_clip=time_clip) + def staff(trange=['2012-11-5', '2012-11-6'], probe='1', datatype='pp', @@ -532,6 +541,7 @@ def staff(trange=['2012-11-5', '2012-11-6'], """ return load(instrument='staff', trange=trange, probe=probe, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, no_update=no_update, time_clip=time_clip) + def wbd(trange=['2012-11-6', '2012-11-7'], probe='1', datatype='waveform', @@ -591,6 +601,7 @@ def wbd(trange=['2012-11-6', '2012-11-7'], """ return load(instrument='wbd', trange=trange, probe=probe, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, no_update=no_update, time_clip=time_clip) + def whi(trange=['2012-11-5', '2012-11-6'], probe='1', datatype='pp', @@ -649,3 +660,7 @@ def whi(trange=['2012-11-5', '2012-11-6'], """ return load(instrument='whi', trange=trange, probe=probe, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, no_update=no_update, time_clip=time_clip) + + +def datasets(instrument=None, label=True): + return find_datasets(mission='Cluster', instrument=instrument, label=label) diff --git a/pyspedas/cluster/load.py b/pyspedas/cluster/load.py index 4798dd62..229580b5 100644 --- a/pyspedas/cluster/load.py +++ b/pyspedas/cluster/load.py @@ -1,6 +1,6 @@ from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import cdf_to_tplot from .config import CONFIG diff --git a/pyspedas/cluster/load_csa.py b/pyspedas/cluster/load_csa.py index 774863ee..fabfb8ad 100644 --- a/pyspedas/cluster/load_csa.py +++ b/pyspedas/cluster/load_csa.py @@ -8,9 +8,10 @@ We download the tar.gr file directly, without using pyspedas.download(). """ -from pyspedas.analysis.time_clip import time_clip as tclip -from pyspedas.utilities.time_string import time_string -from pyspedas.utilities.time_double import time_double +import logging +from pytplot import time_clip as tclip +from pytplot import time_string +from pytplot import time_double from pytplot import cdf_to_tplot import requests @@ -111,18 +112,24 @@ def load_csa(trange=['2001-02-01', '2001-02-03'], # Delivery interval delivery_interval = 'ALL' + if not probes: + return tvars + + if not datatypes: + return tvars + + if not isinstance(probes, list): + probes = [probes] + + if not isinstance(datatypes, list): + datatypes = [datatypes] + # TODO: Create a function that can resolve wildcards # similar to IDL spedas ssl_check_valid_name # my_datatypes=ssl_check_valid_name(uc_datatypes,master_datatypes) # my_probes=ssl_check_valid_name(uc_probes,master_probes) - if not probes: # list is empty - return tvars - elif probes[0] == '*': # load all probes + if probes[0] == '*': # load all probes probes = cl_master_probes() - if not datatypes: # list is empty - return tvars - elif datatypes[0] == '*': # load all probes - datatypes = cl_master_datatypes() # Construct the query string base_url = 'https://csa.esac.esa.int/csa-sl-tap/data?' @@ -141,20 +148,20 @@ def load_csa(trange=['2001-02-01', '2001-02-03'], local_path = CONFIG['local_data_dir'] Path(local_path).mkdir(parents=True, exist_ok=True) - out_gz = local_path + 'temp_cluster_file.tar.gz' # Temp file name + out_gz = os.path.join(local_path, 'temp_cluster_file.tar.gz') # Temp file name # Download the file. - print("Downloading Cluster data, please wait....") + logging.info("Downloading Cluster data, please wait....") try: r = requests.get(url, allow_redirects=True) r.raise_for_status() except requests.exceptions.HTTPError as err: - print("Download HTTP error: ", err) + logging.error("Download HTTP error: " + str(err)) return tvars except requests.exceptions.RequestException as e: - print("Download error: ", e) + logging.error("Download error: " + str(e)) return tvars - print("Download complete.") + logging.info("Download complete.") # Open the downloaded file. with open(out_gz, 'wb') as w: @@ -171,30 +178,19 @@ def load_csa(trange=['2001-02-01', '2001-02-03'], # Get unique set of files. f_set = set(f) # File list with full path. - out_files = [local_path+s for s in list(f_set)] + out_files = [os.path.join(local_path, s) for s in list(f_set)] out_files = sorted(out_files) if downloadonly: return out_files # Load data into tplot - try: - tvars = cdf_to_tplot(out_files, - suffix=suffix, - get_support_data=get_support_data, - varformat=varformat, - varnames=varnames, - notplot=notplot) - except IndexError as e: - print("cdf_to_tplot cannot load Cluster cdf file.") - print("File: ", out_files[0]) - print("IndexError:", e) - return tvars - except TypeError as e: - print("cdf_to_tplot cannot load Cluster cdf file.") - print("File: ", out_files[0]) - print("TypeError:", e) - return tvars + tvars = cdf_to_tplot(out_files, + suffix=suffix, + get_support_data=get_support_data, + varformat=varformat, + varnames=varnames, + notplot=notplot) if notplot: return tvars diff --git a/pyspedas/cluster/tests/tests.py b/pyspedas/cluster/tests/tests.py index 10cc5b63..a0e56069 100644 --- a/pyspedas/cluster/tests/tests.py +++ b/pyspedas/cluster/tests/tests.py @@ -1,13 +1,28 @@ - import os import unittest -from pyspedas.utilities.data_exists import data_exists - +from pytplot import data_exists import pyspedas +from pyspedas.cluster.load_csa import load_csa, cl_master_probes, cl_master_datatypes + class LoadTestCases(unittest.TestCase): + def test_csa(self): + dtypes = cl_master_datatypes() + probes = cl_master_probes() + self.assertTrue('CP_FGM_SPIN' in dtypes) + self.assertTrue('C1' in probes) + + def test_load_fgm_data_csa(self): + mag_vars = load_csa(datatypes=['CP_FGM_SPIN'], probes=None) # returns empty list + mag_vars = load_csa(datatypes=None) # returns empty list + mag_vars = load_csa(datatypes='CP_FGM_SPIN', probes='*') + mag_vars = load_csa(datatypes=['CP_FGM_SPIN'], notplot=True) + self.assertTrue(data_exists('B_vec_xyz_gse__C1_CP_FGM_SPIN')) + self.assertTrue(data_exists('B_mag__C1_CP_FGM_SPIN')) + self.assertTrue(data_exists('sc_pos_xyz_gse__C1_CP_FGM_SPIN')) + def test_load_fgm_data(self): - mag_vars = pyspedas.cluster.fgm() + mag_vars = pyspedas.cluster.fgm(time_clip=True) self.assertTrue(data_exists('B_xyz_gse__C1_UP_FGM')) def test_load_fgm_cp_data(self): @@ -25,11 +40,10 @@ def test_load_cis_data(self): def test_load_dwp_data(self): dwp_vars = pyspedas.cluster.dwp() self.assertTrue(data_exists('Correl_freq__C1_PP_DWP')) - - # crash loading the default data - # def test_load_edi_data(self): - # edi_vars = pyspedas.cluster.edi() - # self.assertTrue(data_exists('')) + + def test_load_edi_data(self): + edi_vars = pyspedas.cluster.edi(downloadonly=True) + self.assertTrue(isinstance(edi_vars, list)) def test_load_efw_data(self): efw_vars = pyspedas.cluster.efw() @@ -47,10 +61,9 @@ def test_load_sta_data(self): sta_vars = pyspedas.cluster.staff() self.assertTrue(data_exists('E_pow_f2__C1_PP_STA')) - # large files - # def test_load_wbd_data(self): - # wbd_vars = pyspedas.cluster.wbd() - # self.assertTrue(data_exists('')) + def test_load_wbd_data(self): + wbd_vars = pyspedas.cluster.wbd(trange=['2012-11-6/02:10', '2012-11-6/02:15'], notplot=True) + self.assertTrue('WBD_Elec' in wbd_vars) def test_load_whi_data(self): whi_vars = pyspedas.cluster.whi() @@ -58,4 +71,4 @@ def test_load_whi_data(self): if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/cnofs/README.md b/pyspedas/cnofs/README.md new file mode 100644 index 00000000..7db3035e --- /dev/null +++ b/pyspedas/cnofs/README.md @@ -0,0 +1,43 @@ + +## Communications/Navigation Outage Forecasting System (C/NOFS) +The routines in this module can be used to load data from the Communications/Navigation Outage Forecasting System (C/NOFS) mission. + +### Instruments +- Coupled Ion-Neutral Dynamics Investigation (CINDI) +- Planar Langmuir Probe (PLP) +- Vector Electric Field Instrument (VEFI) + +### Examples +Get started by importing pyspedas and tplot; these are required to load and plot the data: + +```python +import pyspedas +from pytplot import tplot +``` + +#### Coupled Ion-Neutral Dynamics Investigation (CINDI) + +```python +cindi_vars = pyspedas.cnofs.cindi(trange=['2013-11-5', '2013-11-6']) + +tplot(['ionVelocityX', 'ionVelocityY', 'ionVelocityZ']) +``` + +#### Planar Langmuir Probe (PLP) + +```python +plp_vars = pyspedas.cnofs.plp(trange=['2010-11-5', '2010-11-6']) + +tplot('Ni') +``` + +#### Vector Electric Field Instrument (VEFI) + +```python +vefi_vars = pyspedas.cnofs.vefi(trange=['2013-11-5', '2013-11-6']) + +tplot(['E_meridional', 'E_zonal']) +``` + + + diff --git a/pyspedas/cnofs/__init__.py b/pyspedas/cnofs/__init__.py new file mode 100644 index 00000000..a014bd45 --- /dev/null +++ b/pyspedas/cnofs/__init__.py @@ -0,0 +1,181 @@ +from .load import load +from pyspedas.utilities.datasets import find_datasets + + +def cindi(trange=['2013-11-5', '2013-11-6'], + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Coupled Ion-Neutral Dynamics Investigation (CINDI) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + return load(instrument='cindi', trange=trange, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + +def plp(trange=['2013-11-5', '2013-11-6'], + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Planar Langmuir Probe (PLP) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + return load(instrument='plp', trange=trange, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + +def vefi(trange=['2010-11-5', '2010-11-6'], + datatype='efield_1sec', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Vector Electric Field Instrument (VEFI) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + datatype: str + String specifying datatype (options: 'efield_1sec', 'bfield_1sec', 'ld_500msec') + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + return load(instrument='vefi', datatype=datatype, trange=trange, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + +def datasets(instrument=None, label=True): + return find_datasets(mission='CNOFS', instrument=instrument, label=label) diff --git a/pyspedas/cnofs/config.py b/pyspedas/cnofs/config.py new file mode 100644 index 00000000..03e25a49 --- /dev/null +++ b/pyspedas/cnofs/config.py @@ -0,0 +1,11 @@ +import os + +CONFIG = {'local_data_dir': 'cnofs_data/', + 'remote_data_dir': 'https://spdf.gsfc.nasa.gov/pub/data/cnofs/'} + +# override local data directory with environment variables +if os.environ.get('SPEDAS_DATA_DIR'): + CONFIG['local_data_dir'] = os.sep.join([os.environ['SPEDAS_DATA_DIR'], 'cnofs']) + +if os.environ.get('CNOFS_DATA_DIR'): + CONFIG['local_data_dir'] = os.environ['CNOFS_DATA_DIR'] \ No newline at end of file diff --git a/pyspedas/cnofs/load.py b/pyspedas/cnofs/load.py new file mode 100644 index 00000000..45c89339 --- /dev/null +++ b/pyspedas/cnofs/load.py @@ -0,0 +1,59 @@ +from pyspedas.utilities.dailynames import dailynames +from pyspedas.utilities.download import download +from pytplot import time_clip as tclip +from pytplot import cdf_to_tplot + +from .config import CONFIG + + +def load(trange=['2013-11-5', '2013-11-6'], + instrument='cindi', + datatype='efield_1sec', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the CNOFS mission; this function is not meant + to be called directly; instead, see the wrappers: + pyspedas.cnofs.cindi + pyspedas.cnofs.plp + pyspedas.cnofs.vefi + """ + + if instrument == 'cindi': + pathformat = instrument+'/ivm_500ms_cdf/%Y/cnofs_'+instrument+'_ivm_500ms_%Y%m%d_v??.cdf' + elif instrument == 'plp': + pathformat = instrument+'/plasma_1sec/%Y/cnofs_'+instrument+'_plasma_1sec_%Y%m%d_v??.cdf' + elif instrument == 'vefi': + pathformat = instrument+'/'+datatype+'/%Y/cnofs_'+instrument+'_'+datatype+'_%Y%m%d_v??.cdf' + + # find the full remote path names using the trange + remote_names = dailynames(file_format=pathformat, trange=trange) + + out_files = [] + + files = download(remote_file=remote_names, remote_path=CONFIG['remote_data_dir'], local_path=CONFIG['local_data_dir'], no_download=no_update) + if files is not None: + for file in files: + out_files.append(file) + + out_files = sorted(out_files) + + if downloadonly: + return out_files + + tvars = cdf_to_tplot(out_files, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, notplot=notplot) + + if notplot: + return tvars + + if time_clip: + for new_var in tvars: + tclip(new_var, trange[0], trange[1], suffix='') + + return tvars diff --git a/pyspedas/cnofs/tests/__init__.py b/pyspedas/cnofs/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pyspedas/cnofs/tests/tests.py b/pyspedas/cnofs/tests/tests.py new file mode 100644 index 00000000..ab9eaf5c --- /dev/null +++ b/pyspedas/cnofs/tests/tests.py @@ -0,0 +1,33 @@ +import os +import unittest +from pytplot import data_exists +import pyspedas + + +class LoadTestCases(unittest.TestCase): + def test_load_cindi_data(self): + c_vars = pyspedas.cnofs.cindi(time_clip=True) + self.assertTrue(data_exists('ionVelocityX')) + self.assertTrue(data_exists('ionVelocityY')) + self.assertTrue(data_exists('ionVelocityZ')) + + def test_load_plp_data(self): + l_vars = pyspedas.cnofs.plp() + self.assertTrue(data_exists('Ni')) + + def test_load_vefi_data(self): + l_vars = pyspedas.cnofs.vefi() + self.assertTrue(data_exists('E_meridional')) + self.assertTrue(data_exists('E_zonal')) + + def test_load_notplot(self): + c_vars = pyspedas.cnofs.cindi(notplot=True) + self.assertTrue('ionVelocityX' in c_vars) + + def test_downloadonly(self): + files = pyspedas.cnofs.cindi(downloadonly=True, trange=['2013-2-15', '2013-2-16']) + self.assertTrue(os.path.exists(files[0])) + + +if __name__ == '__main__': + unittest.main() diff --git a/pyspedas/cotrans/cotrans.py b/pyspedas/cotrans/cotrans.py index 76830033..3433d966 100644 --- a/pyspedas/cotrans/cotrans.py +++ b/pyspedas/cotrans/cotrans.py @@ -10,10 +10,11 @@ ----- This function is similar to cotrans.pro of IDL SPEDAS. """ +import logging import pytplot +from pytplot import get_coords,set_coords from pyspedas.cotrans.cotrans_lib import subcotrans -from pyspedas.cotrans.cotrans_get_coord import cotrans_get_coord -from pyspedas.cotrans.cotrans_set_coord import cotrans_set_coord + def cotrans(name_in=None, name_out=None, time_in=None, data_in=None, coord_in=None, coord_out=None): @@ -43,21 +44,39 @@ def cotrans(name_in=None, name_out=None, time_in=None, data_in=None, Fills a new pytplot variable with data in the coord_out system. """ if coord_out is None: - print("cotrans error: No output coordinates were provided.") + logging.error("cotrans error: No output coordinates were provided.") return 0 + # Input data may be specified as a bare array rather than a tplot variable + if not (name_in is None): + var_coord_in = get_coords(name_in) + else: + var_coord_in = None + + # If the input coordinate system is supplied as an argument, and the tplot variable has a coordinate system + # specified in its metadata, check that they match, and if not, log the error and return failure. + + if not (var_coord_in is None) and not(coord_in is None): + if var_coord_in.lower() != coord_in.lower(): + logging.error("cotrans error: " + name_in + " has " + + var_coord_in.lower() + " coordinates, but transform from " + coord_in.lower() + " was requested.") + return 0 + if coord_in is None: - coord_in = cotrans_get_coord(name_in) + coord_in = var_coord_in if coord_in is None: - print("cotrans error: No input coordinates were provided.") + logging.error("cotrans error: No input coordinates were provided.") return 0 coord_in = coord_in.lower() coord_out = coord_out.lower() all_coords = ["gse", "gsm", "sm", "gei", "geo", "mag", "j2000"] - if coord_in not in all_coords or coord_out not in all_coords: - print("cotrans error: Requested coordinate system not supported.") + if coord_in not in all_coords: + logging.error("cotrans error: Requested input coordinate system %s not supported.",coord_in) + return 0 + if coord_out not in all_coords: + logging.error("cotrans error: Requested output coordinate system %s not supported.",coord_out) return 0 if name_in is not None: @@ -66,45 +85,35 @@ def cotrans(name_in=None, name_out=None, time_in=None, data_in=None, time_in = tplot_data[0] data_in = tplot_data[1] else: - name_in = "cotranstemp" - pytplot.store_data(name_in, data={'x': list(time_in), - 'y': list(data_in)}) + pytplot.store_data('cotranstemp', data={'x': list(time_in), + 'y': list(data_in)}) if len(data_in[:]) < 1: - print("cotrans error: Data is empty.") + logging.error("cotrans error: Data is empty.") return 0 # Perform coordinate transformation. data_out = subcotrans(list(time_in), list(data_in), coord_in, coord_out) + if name_in is None and name_out is None: + return data_out + + if name_in is None: + name_in = 'cotranstemp' + # Find the name of the output pytplot variable. if name_out is None: - # If no output tplot name is provided, create one. - if name_in is None: - name_out = "data_out_" + coord_out - else: - name_out = name_in + "_" + coord_out + name_out = name_in + "_" + coord_out # Save output pytplot variable. pytplot.tplot_copy(name_in, name_out) pytplot.data_quants[name_out].data = data_out # We should change an attribute for the coordinate system. - cotrans_set_coord(name_out, coord_out.upper()) - - # should also update the legend, if it includes the coordinate system - # for this to work, the coordinate system should be in all upper case - metadata = pytplot.get_data(name_out, metadata=True) - if metadata.get('plot_options') is not None: - if metadata['plot_options'].get('yaxis_opt') is not None: - if metadata['plot_options']['yaxis_opt'].get('legend_names') is not None: - legend = metadata['plot_options']['yaxis_opt'].get('legend_names') - updated_legend = [item.replace(coord_in.upper(), coord_out.upper()) for item in legend] - metadata['plot_options']['yaxis_opt']['legend_names'] = updated_legend - if metadata['plot_options']['yaxis_opt'].get('axis_label') is not None: - ytitle = metadata['plot_options']['yaxis_opt'].get('axis_label') - metadata['plot_options']['yaxis_opt']['axis_label'] = ytitle.replace(coord_in.upper(), coord_out.upper()) - - print("Output variable: " + name_out) + set_coords(name_out, coord_out.upper()) + + # Code to update the legend and axis labels has been moved into cotrans_set_coord(). + + logging.info("Output variable: " + name_out) return 1 diff --git a/pyspedas/cotrans/cotrans_get_coord.py b/pyspedas/cotrans/cotrans_get_coord.py index 26e83638..a9697942 100644 --- a/pyspedas/cotrans/cotrans_get_coord.py +++ b/pyspedas/cotrans/cotrans_get_coord.py @@ -1,33 +1,6 @@ - -from pytplot import get_data +import logging +from pytplot import get_coords def cotrans_get_coord(name): - ''' - This function returns the coordinate system of a tplot variable - - Parameters: - name: str - name of the tplot variable - - Notes: - The coordinate system is stored in the variable's metadata at: - metadata['data_att']['coord_sys'] - - See cotrans_set_coord to update the coordinate system - - Returns: - Coordinate system of the tplot variable - or - None if the coordinate system isn't set - ''' - - metadata = get_data(name, metadata=True) - if metadata is None: - return None - - if metadata.get('data_att'): - if metadata['data_att'].get('coord_sys'): - return metadata['data_att']['coord_sys'] - - print('Coordinate system not found: ' + name) - return None \ No newline at end of file + logging.info("cotrans_get_coord is now a wrapper for pytplot.get_coords(). This version will eventually be removed.") + return get_coords(name) diff --git a/pyspedas/cotrans/cotrans_lib.py b/pyspedas/cotrans/cotrans_lib.py index a93f069f..a657fbce 100644 --- a/pyspedas/cotrans/cotrans_lib.py +++ b/pyspedas/cotrans/cotrans_lib.py @@ -12,6 +12,7 @@ For a comparison to IDL, see: http://spedas.org/wiki/index.php?title=Cotrans """ import numpy as np +import logging from datetime import datetime from pyspedas.cotrans.igrf import set_igrf_params from pyspedas.cotrans.j2000 import set_j2000_params @@ -133,7 +134,7 @@ def cdipdir(time_in=None, iyear=None, idoy=None): Same as SPEDAS cdipdir. """ if (time_in is None) and (iyear is None) and (idoy is None): - print("Error: No time was provided.") + logging.error("Error: No time was provided.") return if (iyear is None) or (idoy is None): @@ -329,7 +330,7 @@ def subgei2gse(time_in, data_in): """ xgse, ygse, zgse = tgeigse_vect(time_in, data_in) - print("Running transformation: subgei2gse") + logging.info("Running transformation: subgei2gse") return np.column_stack([xgse, ygse, zgse]) @@ -396,7 +397,7 @@ def subgse2gei(time_in, data_in): """ xgei, ygei, zgei = tgsegei_vect(time_in, data_in) - print("Running transformation: subgse2gei") + logging.info("Running transformation: subgse2gei") return np.column_stack([xgei, ygei, zgei]) @@ -476,7 +477,7 @@ def subgse2gsm(time_in, data_in): """ xgsm, ygsm, zgsm = tgsegsm_vect(time_in, data_in) - print("Running transformation: subgse2gsm") + logging.info("Running transformation: subgse2gsm") return np.column_stack([xgsm, ygsm, zgsm]) @@ -557,7 +558,7 @@ def subgsm2gse(time_in, data_in): """ xgse, ygse, zgse = tgsmgse_vect(time_in, data_in) - print("Running transformation: subgsm2gse") + logging.info("Running transformation: subgsm2gse") return np.column_stack([xgse, ygse, zgse]) @@ -629,7 +630,7 @@ def subgsm2sm(time_in, data_in): """ xsm, ysm, zsm = tgsmsm_vect(time_in, data_in) - print("Running transformation: subgsm2sm") + logging.info("Running transformation: subgsm2sm") return np.column_stack([xsm, ysm, zsm]) @@ -701,7 +702,7 @@ def subsm2gsm(time_in, data_in): """ xgsm, ygsm, zgsm = tsmgsm_vect(time_in, data_in) - print("Running transformation: subsm2gsm") + logging.info("Running transformation: subsm2gsm") return np.column_stack([xgsm, ygsm, zgsm]) @@ -733,7 +734,7 @@ def subgei2geo(time_in, data_in): ygeo = -sgst * xgei + cgst * ygei zgeo = zgei - print("Running transformation: subgei2geo") + logging.info("Running transformation: subgei2geo") return np.column_stack([xgeo, ygeo, zgeo]) @@ -765,7 +766,7 @@ def subgeo2gei(time_in, data_in): ygei = sgst * xgeo + cgst * ygeo zgei = zgeo - print("Running transformation: subgeo2gei") + logging.info("Running transformation: subgeo2gei") return np.column_stack([xgei, ygei, zgei]) @@ -826,7 +827,7 @@ def subgeo2mag(time_in, data_in): mlat[1, 1] = 1.0 mag[i] = mlat @ out - print("Running transformation: subgeo2mag") + logging.info("Running transformation: subgeo2mag") return mag @@ -886,7 +887,7 @@ def submag2geo(time_in, data_in): glong[2, 2] = 1.0 geo[i] = glong @ out - print("Running transformation: submag2geo") + logging.info("Running transformation: submag2geo") return geo @@ -1097,7 +1098,7 @@ def subgei2j2000(time_in, data_in): cmatrix = j2000_matrix_vec(time_in) d_out = ctv_mx_vec_rot(cmatrix, d) - print("Running transformation: subgei2j2000") + logging.info("Running transformation: subgei2j2000") return np.transpose(d_out) @@ -1125,7 +1126,7 @@ def subj20002gei(time_in, data_in): icmatrix = np.transpose(cmatrix, (1, 0, 2)) d_out = ctv_mx_vec_rot(icmatrix, d) - print("Running transformation: subj20002gei") + logging.info("Running transformation: subj20002gei") return np.transpose(d_out) @@ -1257,19 +1258,23 @@ def subcotrans(time_in, data_in, coord_in, coord_out): coord_in = coord_in.lower() coord_out = coord_out.lower() - if (coord_in not in coord_all) or (coord_out not in coord_all): - print("Error: coordinate system cannot be found.") + if coord_in not in coord_all: + logging.error("Unknown coord_in value %s",coord_in) + return None + + if coord_out not in coord_all: + logging.error("Unknown coord_out value %s",coord_out) return None if coord_in == coord_out: - print("Warning: coord_in equal to coord_out.") + logging.warning("Warning: coord_in equal to coord_out.") return data_out # Construct a list of transformations. p = find_path_t1_t2(coord_in, coord_out) p = shorten_path_t1_t2(p) p = shorten_path_t1_t2(p) - print(p) + logging.info(p) # Daisy chain the list of transformations. for i in range(len(p)-1): diff --git a/pyspedas/cotrans/cotrans_set_coord.py b/pyspedas/cotrans/cotrans_set_coord.py index 50d8cdc9..e97c5a3d 100644 --- a/pyspedas/cotrans/cotrans_set_coord.py +++ b/pyspedas/cotrans/cotrans_set_coord.py @@ -1,36 +1,7 @@ +import logging +from pytplot import set_coords -from pytplot import get_data def cotrans_set_coord(name, coord): - ''' - This function sets the coordinate system of a tplot variable - - Parameters: - name: str - name of the tplot variable - - Notes: - The coordinate system is stored in the variable's metadata at: - metadata['data_att']['coord_sys'] - - See cotrans_get_coord to return the coordinate system - - Returns: - bool: True/False depending on if the operation was successful - ''' - - # check that the variable exists - data = get_data(name) - if data is None: - return False - - metadata = get_data(name, metadata=True) - - if metadata.get('data_att') is None: - metadata['data_att'] = {} - - # note: updating the metadata dict directly updates - # the variable's metadata in memory, so there's - # no need to update the variable with store_data - metadata['data_att'] = {'coord_sys': coord} - return True \ No newline at end of file + logging.info("cotrans_set_coord is now a wrapper for pytplot.set_coords(). This version will eventually be removed.") + return set_coords(name,coord) diff --git a/pyspedas/cotrans/fac_matrix_make.py b/pyspedas/cotrans/fac_matrix_make.py index 7d03160d..f63e592a 100644 --- a/pyspedas/cotrans/fac_matrix_make.py +++ b/pyspedas/cotrans/fac_matrix_make.py @@ -2,8 +2,8 @@ import logging import numpy as np -from pyspedas.analysis.tnormalize import tnormalize -from pyspedas.analysis.tcrossp import tcrossp +from pytplot import tnormalize +from pytplot import tcrossp from pytplot import get_data, store_data diff --git a/pyspedas/cotrans/matrix_array_lib.py b/pyspedas/cotrans/matrix_array_lib.py new file mode 100644 index 00000000..f7a9b8b8 --- /dev/null +++ b/pyspedas/cotrans/matrix_array_lib.py @@ -0,0 +1,166 @@ +import numpy as np + +# use nansum from bottleneck if it's installed, otherwise use the numpy one +try: + import bottleneck as bn + nansum = bn.nansum +except ImportError: + nansum = np.nansum + + +def ctv_err_test(vals, val, err = 1e-5): + """ used to determine if values are equal within some standard of computational error """ + return (vals >= val-err) & (vals <= val+err) + + +def ctv_determ_mats(m): + """ returns the determinant of a list of 3x3 matrices """ + return np.linalg.det(m) + + +def ctv_identity_mats(m): + """ + determines if a list of 3x3 matrices are identity matrices + will return the indexes of the identity matrices in the list of matrices + """ + return ctv_err_test(m[:, 0, 0], 1) & ctv_err_test(m[:, 0, 1], 0) & ctv_err_test(m[:, 0, 2], 0) \ + & ctv_err_test(m[:, 1, 0], 0) & ctv_err_test(m[:, 1, 1], 1) & ctv_err_test(m[:, 1, 2], 0) \ + & ctv_err_test(m[:, 2, 0], 0) & ctv_err_test(m[:, 2, 1], 0) & ctv_err_test(m[:, 2, 2], 1) + + +def ctv_mm_mult(m1, m2): + """ multiplication of two lists of 3x3 matrices """ + out = np.zeros(m1.shape) + out[:, 0, 0] = nansum(m1[:, 0, :] * m2[:, :, 0], axis=1) + out[:, 1, 0] = nansum(m1[:, 1, :] * m2[:, :, 0], axis=1) + out[:, 2, 0] = nansum(m1[:, 2, :] * m2[:, :, 0], axis=1) + out[:, 0, 1] = nansum(m1[:, 0, :] * m2[:, :, 1], axis=1) + out[:, 1, 1] = nansum(m1[:, 1, :] * m2[:, :, 1], axis=1) + out[:, 2, 1] = nansum(m1[:, 2, :] * m2[:, :, 1], axis=1) + out[:, 0, 2] = nansum(m1[:, 0, :] * m2[:, :, 2], axis=1) + out[:, 1, 2] = nansum(m1[:, 1, :] * m2[:, :, 2], axis=1) + out[:, 2, 2] = nansum(m1[:, 2, :] * m2[:, :, 2], axis=1) + return out + + +def ctv_verify_mats(m): + """ + verifies whether a list of matrices + contains valid rotation matrices. + This is determined using 2 constraints. + #1 Where determ(matrix) eq 1 + #2 Where matrix#transpose(matrix) eq I + + returns 0 if the matrices use a mixed system + returns 1 if there are no valid mats + returns 2 if the data are all nans + returns 3 if there are some invalid mats + returns 4 if there are some nans + returns 5 win! + """ + identity_mats = ctv_identity_mats(ctv_mm_mult(m, np.transpose(m, (0,2,1)))) + # make sure matrix is self-inverting and the determinate is either 1 in all cases or -1 in all cases + idx = np.argwhere(ctv_err_test(ctv_determ_mats(m),1) & identity_mats) + c_right = idx.shape[0] + idx = np.argwhere(ctv_err_test(ctv_determ_mats(m),-1) & identity_mats) + c_left = idx.shape[0] + idx = np.argwhere(~np.isfinite(ctv_determ_mats(m))) + c_nan = idx.shape[0] + if (c_left != 0) and (c_right != 0): # mixed system + return 0 + elif (c_left == 0) and (c_right == 0): # all matrices fail + return 1 + elif c_nan == m.shape[0]: # all nans + return 2 + elif (c_left+c_right+c_nan < 0): # some matrices fail + return 3 + elif c_nan != 0: # some nans + return 4 + else: # all mats are rotation mats and there is no missing data + return 5 + + +def ctv_left_mats(m): + """ + Is this a set of left-handed permutation matrices? + """ + idx = np.argwhere(ctv_err_test(ctv_determ_mats(m),-1)) + c = idx.shape[0] + if c > 0: + return 1 + else: + return 0 + + +def ctv_swap_hands(m): + """ + Turns a 3x3 matrix with a left-handed basis into a right-handed basis and vice-versa + """ + out = m.copy() + out[:,0,:] *= -1 + return out + + +def ctv_norm_vec_rot(v): + """ + Helper function + Calculates the norm of a bunch of vectors simultaneously + """ + if v is None: + return -1 + if v.ndim != 2: + return -1 + return np.sqrt(np.sum(v**2, axis=1)) + + +def ctv_normalize_vec_rot(v): + """ + Helper function + Normalizes a bunch of vectors simultaneously + """ + if v is None: + return -1 + if v.ndim != 2: + return -1 + n_a = ctv_norm_vec_rot(v) + if (n_a.ndim == 0) and (n_a == -1): + return -1 + v_s = v.shape + # calculation is pretty straight forward + # we turn n_a into an N x D so computation can be done element by element + n_b = np.repeat(n_a, v_s[1]).reshape(v_s) + return v/n_b + + +def ctv_mx_vec_rot(m, x): + """ + Helper function + Vectorized fx to multiply n matrices by n vectors + """ + # input checks + if m is None: + return -1 + if x is None: + return -1 + m_s = m.shape + x_s = x.shape + # make sure number of dimensions in input arrays is correct + if len(m_s) != 3: + return -1 + if len(x_s) != 2: + return -1 + # make sure dimensions match + if not np.array_equal(x_s, [m_s[0], m_s[1]]): + return -1 + if not np.array_equal(m_s, [x_s[0], x_s[1], x_s[1]]): + return -1 + # calculation is pretty straight forward + # we turn x into an N x 3 x 3 so computation can be done element by element + y_t = np.repeat(x, x_s[1]*x_s[1]).reshape(x_s[0], x_s[1], x_s[1]) + # custom multiplication requires rebin to stack vector across rows, + # not columns + y_t = np.transpose(y_t, (0, 2, 1)) + # 9 multiplications and 3 additions per matrix + y = np.sum(y_t*m, axis=2) + return y + diff --git a/pyspedas/cotrans/minvar.py b/pyspedas/cotrans/minvar.py index 8772c5d5..0f6ea7ae 100644 --- a/pyspedas/cotrans/minvar.py +++ b/pyspedas/cotrans/minvar.py @@ -28,12 +28,12 @@ def minvar(data): # Min var starts here # data must be Nx3 - vecavg = np.nanmean(data, axis=0) + vecavg = np.nanmean(np.nan_to_num(data, nan=0.0), axis=0) mvamat = np.zeros((3, 3)) for i in range(3): for j in range(3): - mvamat[i, j] = np.nanmean(data[:, i] * data[:, j]) - vecavg[i] * vecavg[j] + mvamat[i, j] = np.nanmean(np.nan_to_num(data[:, i] * data[:, j], nan=0.0)) - vecavg[i] * vecavg[j] # Calculate eigenvalues and eigenvectors w, v = np.linalg.eigh(mvamat, UPLO='U') @@ -41,6 +41,12 @@ def minvar(data): # Sorting to ensure descending order w = np.abs(w) idx = np.flip(np.argsort(w)) + + # IDL compatability + if True: + if np.sum(w) == 0.0: + idx = [0, 2, 1] + w = w[idx] v = v[:, idx] @@ -48,13 +54,13 @@ def minvar(data): YcrossZdotX = v[0, 0] * (v[1, 1] * v[2, 2] - v[2, 1] * v[1, 2]) if YcrossZdotX < 0: v[:, 1] = -v[:, 1] + # v[:, 2] = -v[:, 2] # Should not it is being flipped at Z-axis? # Ensure minvar direction is along +Z (for FAC system) if v[2, 2] < 0: v[:, 2] = -v[:, 2] v[:, 1] = -v[:, 1] - s = data.shape vrot = np.array([np.dot(row, v) for row in data]) - return vrot, v, w \ No newline at end of file + return vrot, v, w diff --git a/pyspedas/cotrans/minvar_matrix_make.py b/pyspedas/cotrans/minvar_matrix_make.py index 24a0b1fa..ced9a5f4 100644 --- a/pyspedas/cotrans/minvar_matrix_make.py +++ b/pyspedas/cotrans/minvar_matrix_make.py @@ -85,10 +85,7 @@ def minvar_matrix_make(in_var_name, if tslide == 0: break - if len(data) > 2: - o_d = {'x': o_times[:-1], 'y': o_eigs[0:-1, :, :], 'v': data.v} - else: - o_d = {'x': o_times[:-1], 'y': o_eigs[0:-1, :, :]} + o_d = {'x': o_times[:-1], 'y': o_eigs[0:-1, :, :]} out_vars = [] diff --git a/pyspedas/cotrans/quaternions.py b/pyspedas/cotrans/quaternions.py new file mode 100644 index 00000000..55371602 --- /dev/null +++ b/pyspedas/cotrans/quaternions.py @@ -0,0 +1,789 @@ +import logging +from copy import deepcopy +import numpy as np +from pyspedas.utilities.interpol import interpol + + +def qmult(q1, q2): + """ + multiply two quaternions or two arrays of quaternions + + Parameters + ---------- + q1 : array_like + a 4 element array, or an Nx4 element array, representing quaternion(s) + q2 : array_like + a 4 element array, or an Nx4 element array, representing quaternion(s) + + Returns + ------- + q1*q2, or -1 on failure + + Notes + ----- + Implementation largely copied from the euve c library for + quaternions + Represention has q[0] = scalar component + q[1] = vector x + q[2] = vector y + q[3] = vector z + + The vector component of the quaternion can also be thought of as + an eigenvalue of the rotation the quaterion performs + + This routine is based on the IDL version by Patrick Cruce + """ + q1i = np.array(q1) + q2i = np.array(q2) + + if q1i.ndim != q2i.ndim: + logging.error('Number of dimensions in quaternion q1 and quaternion q2 do not match') + return -1 + + # check to make sure input has the correct dimensions + q1i = qvalidate(q1i, 'q1', 'qmult') + q2i = qvalidate(q2i, 'q2', 'qmult') + + if isinstance(q1i, int): + return q1i + + if isinstance(q2i, int): + return q2i + + # make sure elements match + if q1i.size != q2i.size: + logging.error('Number of elements in quaternion q1 and quaternion q2 do not match') + return -1 + + # now the actual dirty work + qtmp0 = q1i[:, 0] * q2i[:, 0] - q1i[:, 1] * q2i[:, 1] - q1i[:, 2] * q2i[:, 2] - q1i[:, 3] * q2i[:, 3] + qtmp1 = q1i[:, 1] * q2i[:, 0] + q1i[:, 0] * q2i[:, 1] - q1i[:, 3] * q2i[:, 2] + q1i[:, 2] * q2i[:, 3] + qtmp2 = q1i[:, 2] * q2i[:, 0] + q1i[:, 3] * q2i[:, 1] + q1i[:, 0] * q2i[:, 2] - q1i[:, 1] * q2i[:, 3] + qtmp3 = q1i[:, 3] * q2i[:, 0] - q1i[:, 2] * q2i[:, 1] + q1i[:, 1] * q2i[:, 2] + q1i[:, 0] * q2i[:, 3] + + qout = np.array([qtmp0, qtmp1, qtmp2, qtmp3]).T + + return qout + + +def qdecompose(q): + """ + Purpose: decompose quaternions into axes and angeles + Inputs: q: a 4 element quaternion or an Nx4 element array of quaternions + Returns: a 4 element array with a[0] = angle, and a[1:3] = axis, or + an Nx4 element array or -1L on failure + Notes: Implementation largely copied from the euve c library for + quaternions + Represention has q[0] = scalar component + q[1] = vector x + q[2] = vector y + q[3] = vector z + The vector component of the quaternion can also be thought of as + an eigenvalue of the rotation the quaterion performs + As per the euve implementation, if q[0] is outside of the range of + acos...[-1,1] the value of the quaternion will be turned into an + identity quaternion...in other words clipped, this seems suspect, + a better solution may be to wrap the value back into range using + modular arithmatic, future modifiers of this routine should consider + adding this. + + This routine is based on the IDL version by Patrick Cruce + """ + EPSILON = 1.0e-20 # Where sin(theta) is close enough to theta + # this is to avoid mutating the input variable + qi = q + # check to make sure input has the correct dimensions + qi = qvalidate(qi, 'q', 'qdecompose') + if isinstance(qi, int): + return qi + qdims = qi.shape + aout = np.zeros(qdims, dtype=np.float64) + + # the following code will clip into range + idx = np.argwhere(qi[:, 0] >= 1.0).flatten() + if len(idx) != 0: + aout[idx, 0] = 0.0 + aout[idx, 1] = 1.0 + aout[idx, 2:3] = 0.0 + + idx = np.argwhere(qi[:, 0] <= -1.0).flatten() + if len(idx) != 0: + aout[idx, 0] = 2 * np.pi + aout[idx, 1] = 1.0 + aout[idx, 2:3] = 0.0 + + idx = np.argwhere((qi[:, 0] > -1.0) & (qi[:, 0] < 1.0)).flatten() + if len(idx) != 0: + theta2 = np.arccos(qi[idx, 0]) + aout[idx, 0] = 2 * theta2 + + idx2 = np.argwhere(theta2 < EPSILON).flatten() + if len(idx2) != 0: + aout[idx[idx2], 1] = 1.0 + aout[idx[idx2], 2:3] = 0.0 + + idx2 = np.argwhere(theta2 >= EPSILON).flatten() + if len(idx2) != 0: + aout[idx[idx2], 1] = qi[idx[idx2], 1] / np.sin(theta2[idx2]) + aout[idx[idx2], 2] = qi[idx[idx2], 2] / np.sin(theta2[idx2]) + aout[idx[idx2], 3] = qi[idx[idx2], 3] / np.sin(theta2[idx2]) + + return aout.reshape(qdims) + + +def qvalidate(q, argname, fxname): + """ + Purpose: validate inputs for the idl quaternion library + + Inputs: q: a 4 element array, or an Nx4 element array, representing quaternion(s) + argname: the name of the argument to be used in error messages + + Returns: an Nx4 array or -1, it will turn 4 element quaternion arrays + into 1x4 element quaternion arrays + + Notes: This function is here because I noticed a lot of the error + checking code was being repeated, and it was making the functions + long and hard to read + + Represention has q[0] = scalar component + q[1] = vector x + q[2] = vector y + q[3] = vector z + + The vector component of the quaternion can also be thought of as + an eigenvalue of the rotation the quaterion performs + + This routine is based on the IDL version by Patrick Cruce + """ + # this is to avoid mutating the input variable + qi = deepcopy(q) + + if isinstance(qi, int): + return -1 + + # check to make sure input has the correct dimensions + elif np.size(np.shape(qi)) == 1: + if np.size(qi) != 4: + logging.error('Wrong number of elements in quaternion ' + argname + '. Found when validating input for ' + fxname) + return -1 + qi = np.reshape(qi, (1, 4)) + elif np.size(np.shape(qi)) == 2: + s = np.shape(qi) + if s[np.size(s)-1] != 4: + logging.error('Dimension 2 of quaternion ' +argname+' must have 4 elements. Found when validating input for ' + fxname) + return -1 + else: + logging.error('Quaternion '+argname+' has the wrong number of dimensions. Found when validating input for ' + fxname) + return -1 + + return qi + + +def qconj(q): + """ + Purpose: calculate the conjugate a quaternion or an array of quaternions + + Inputs: q: a 4 element array, or an Nx4 element array, representing quaternion(s) + + Returns: q* + + Notes: Implementation largely copied from the euve c library for + quaternions + Represention has q[0] = scalar component + q[1] = vector x + q[2] = vector y + q[3] = vector z + + The vector component of the quaternion can also be thought of as + an eigenvalue of the rotation the quaterion performs + + This routine is based on the IDL version by Patrick Cruce + """ + # this is to avoid mutating the input variable + qi = deepcopy(q) + + # check to make sure input has the correct dimensions + qi = qvalidate(qi, 'q', 'qconj') + + if isinstance(qi, int): + return qi + + # the actual conjugation + qtmp0 = qi[:, 0] + qtmp1 = -qi[:, 1] + qtmp2 = -qi[:, 2] + qtmp3 = -qi[:, 3] + + qout = np.array([qtmp0, qtmp1, qtmp2, qtmp3]).T + + if len(q.shape) == 1: + qout = qout.flatten() + + return qout + + +def qslerp(q, x1, x2, geometric=False, eq_tolerance=1e-12): + """ + Uses spherical linear interpolation to interpolate quaternions between elements of q + + Parameters + ---------- + q : array_like + An Nx4 element array, representing a list of quaternions with N > 1, all quaternions must be unit quaternions(ie length/norm = 1) + x1 : array_like + The input abscissa values of the quaternions,an array of length N, abscissa values must also be monotonic + x2 : array_like + The output abscissa values for the quaternions, can have as many elements as wanted but must fall on the interval [x[0],x[N-1]], an M element array, abscissa values must also be monotonic + geometric : bool, optional + This keyword allows you to specify that it use the geometric formula for the slerp. The default formula is probably faster and more numerically stable, the geometric option is just available for testing + Testing of the geometric method indicates that the norm of the interpolated quaternions strays easily from unit length, when it renormalizes results may be destabilized + eq_tolerance : float, optional + Set to specify the tolerance used when determining whether two numbers are equal (default: 1e-12). This tolerance will be used in checking equivalence of: + -quaternion lengths + -input vs. output abscissae + -quaternion direction (inner product) + + Returns + ------- + q_out : array_like + An Mx4 element array of interpolated quaternions or -1L on failure + + Notes + ----- + Represention has q[0] = scalar component + q[1] = vector x + q[2] = vector y + q[3] = vector z + + The vector component of the quaternion can also be thought of as an eigenvalue of the rotation the quaterion performs + + The scalar component can be thought of as the amount of rotation that the quaternion performs + + While the code may seem a little esoteric, it is vectorized and provides the most accurate results it can get + + This routine is based on the IDL version by Patrick Cruce + """ + qi = deepcopy(q) + x2i = deepcopy(x2) + x1i = deepcopy(x1) + + # check that quaternions are consistent with generic quaternion invariants + qi = qvalidate(qi,'qi','qslerp') + + if isinstance(qi, int): + return qi + + # check that input quaternions are unit length + qn = qnorm(qi) + + idx = np.argwhere(np.abs(qn - 1.0) > eq_tolerance).flatten() + if len(idx) > 0: + logging.error('At least one input quaternion is not unit length') + return + + if qi.shape[0] != len(x1i): + logging.error('Number of input abscissa values does not match the number of input quaternions') + return + + # check that input abscissa values are monotonic + if len(x1i) > 1: + idx = np.argwhere((x1i[1:len(x1i)]-x1i[0:len(x1i)-1]) < 0) + if len(idx) > 0: + logging.error('input abscissa values not monotonic') + return + + # check that output abscissa values are strictly monotonic + if len(x2i) > 1: + idx = np.argwhere((x2i[1:len(x2i)]-x2i[0:len(x2i)-1]) < 0) + if len(idx) > 0: + logging.error('output abscissa values not monotonic') + return + + # construct the output array + q_out = np.zeros((len(x2i), 4)) + + # if output abscissa values are outside of the range of input abscissa + # values constant extrapolation is used + idx = np.argwhere(x2i < x1i[0]).flatten() + + if len(idx) > 0: + q_out[idx, :] = np.array(idx.size*[qi[0, :]]) + + idx = np.argwhere(x2i > x1i[-1]).flatten() + + if len(idx) > 0: + q_out[idx, :] = np.array(idx.size*[qi[-1, :]]) + + out_idx = np.argwhere((x2i >= x1i[0]) & (x2i <= x1i[-1])).flatten() + + if len(out_idx) == 0: + return q_out.reshape((-1, 4)) + + x2i = x2i[out_idx] + + # construct arguments to the slerp function, this includes the source + # quaternion list, the target quaternions list, and the proportion of + # interpolation list for each quaternion pair. They should all have + # the same number of elements as the output abscissa value list + + t_temp = interpol(np.arange(qi.shape[0], dtype='float64'), x1i, x2i) + + t_list = t_temp % 1.0 + + q_idx = np.int64(np.floor(t_temp)) + + # if the last abscissa values are identical,the indexing scheme to + # generate the q_list could generate an overflow, the two conditionals + # below prevent this + idx = np.argwhere(np.abs(t_list) <= eq_tolerance).flatten() # where t_list =~ 0.0 + if len(idx) > 0: + q_out[out_idx[idx], :] = qi[q_idx[idx], :] + + slerp_idx = np.argwhere(np.abs(t_list) > eq_tolerance).flatten() # where t_list !=~ 0.0 + + # if there is nothing left, then we're done + if slerp_idx.size == 0: + return q_out.reshape((-1, 4)) + + q_idx = q_idx[slerp_idx] + out_idx = out_idx[slerp_idx] + t_list = t_list[slerp_idx] + + q1_list = qi[q_idx, :] + + q2_list = qi[q_idx + 1, :] + + # calculate the dot product which is needed to to flip the + # appropriate quaternions to guarantee interpolation is done along the + # shortest path + dotp = qdotp(q1_list, q2_list) + + if dotp.ndim == 0 and dotp == -1: + return -1 + + # the following code flips quaternions in q2_list to ensure the + # shortest path is followed + idx = np.argwhere(dotp < 0.0).flatten() + + if idx.size != 0: + q2_list[idx, :] = -q2_list[idx, :] + + # interpolation cannot be performed on colinear quaternions + # it is assumed that colinear quaternions will be returned unchanged + # since dotp(q1,q2) = cos(angle between q1,q2) if dotp = 1.0 the + # quaternions are colinear + idx = np.argwhere(np.abs(dotp - 1.0) <= eq_tolerance).flatten() # where dotp = 1.0 + + # store colinear quaternions into output array + if idx.size != 0: + q_out[out_idx[idx], :] = q1_list[idx, :] + + # copy non-colinear quaternions for processing + idx = np.argwhere(np.abs(dotp - 1.0) > eq_tolerance).flatten() + + if idx.size == 0: + return q_out.reshape((-1, 4)) # if no non-colinear quaternions are left, we are done + + dotp = dotp[idx] + t_list = t_list[idx] + q1_list = q1_list[idx, :] + q2_list = q2_list[idx, :] + out_idx = out_idx[idx] + + # now the actual processing begins + + # testing both methods to verify results + if geometric: + theta = np.arccos(dotp) + + sin_theta = np.sin(theta) + + theta_t = theta * t_list + + co1 = np.sin(theta - theta_t) / sin_theta + co2 = np.sin(theta_t) / sin_theta + + q_out[out_idx, 0] = co1 * q1_list[:, 0] + co2 * q2_list[:, 0] + q_out[out_idx, 1] = co1 * q1_list[:, 1] + co2 * q2_list[:, 1] + q_out[out_idx, 2] = co1 * q1_list[:, 2] + co2 * q2_list[:, 2] + q_out[out_idx, 3] = co1 * q1_list[:, 3] + co2 * q2_list[:, 3] + else: + # slerp will be performed by calculating: + # ((q2*(q1^-1))^t)*q1 + # since the quaternions are unit q1^-1 = conjugate(q1) + # exponentiation can be calculated by transforming to + # polar form cos(theta*t)+v*sin(theta*t) + # theta = acos(q[0]) + # NOTE: this potentially more numerically stable implementation needs + # to be verified by comparison to the geometric slerp + q1_conj = qconj(q1_list) + + q2_q1_prod = qdecompose(qmult(q2_list, q1_conj)) + + if isinstance(q2_q1_prod, int): + return -1 + + # sometimes a dimension disappears. + if q2_q1_prod.ndim == 1 and q2_q1_prod.size == 4: + q2_q1_prod = q2_q1_prod.reshape((1, 4)) + + theta_scale = q2_q1_prod[:, 0] * t_list + + q_total = qmult(qcompose(q2_q1_prod[:, 1:4], theta_scale), q1_list) + + if isinstance(q_total, int): + return -1 + + q_out[out_idx, :] = q_total + + return qnormalize(q_out) + + +def qdotp(q1, q2): + """ + Purpose: calculate the dot product of two quaternions or two arrays of quaternions + + Inputs: q1: a 4 element array, or an Nx4 element array, representing quaternion(s) + q2: a 4 element array, or an Nx4 element array, representing quaternion(s) + + Returns: q1.q2, or -1 on failure + + Notes: + Represention has q[0] = scalar component + q[1] = vector x + q[2] = vector y + q[3] = vector z + + The vector component of the quaternion can also be thought of as + an eigenvalue of the rotation the quaterion performs + + The scalar component can be thought of as the amount of rotation that + the quaternion performs + + like any vector the if t = the angle between q1 and q2 in 4-space + the q1.q2 = ||q1||*||q2||*cos(t) where || denotes the norm(length) of + the quaternion in 4-space + + This routine is based on the IDL version by Patrick Cruce + """ + q1i = deepcopy(q1) + q2i = deepcopy(q2) + qout = np.nansum(q1i*q2i, axis=1) + return qout + + +def qnorm(q): + """ + Purpose: calculate the norm a quaternion or an array of quaternions + + Inputs: q: a 4 element array, or an Nx4 element array, representing quaternion(s) + + Returns: norm(q): sqrt(a^2+b^2+c^2+d^2) or -1L on fail + will be a single element or an N length array + + Notes: Implementation largely copied from the euve c library for + quaternions + Represention has q[0] = scalar component + q[1] = vector x + q[2] = vector y + q[3] = vector z + + The vector component of the quaternion can also be thought of as + an eigenvalue of the rotation the quaterion performs + + This implementation of norm does not apply the squareroot sometimes + applied to a norm. If required the sqrt can easily be applied by the user + + This routine is based on the IDL version by Patrick Cruce + + """ + qi = deepcopy(q) + dotp = qdotp(qi, qi) + return np.sqrt(dotp) + + +def qnormalize(q): + """ + Purpose: normalize a quaternion or an array of quaternions + + Inputs: q: a 4 element array, or an Nx4 element array, representing quaternion(s) + + Returns: q/(sqrt(norm(q))) or -1L on fail + + Notes: Implementation largely copied from the euve c library for + quaternions + Represention has q[0] = scalar component + q[1] = vector x + q[2] = vector y + q[3] = vector z + + The vector component of the quaternion can also be thought of as + an eigenvalue of the rotation the quaterion performs + + This routine is based on the IDL version by Patrick Cruce + """ + qi = deepcopy(q) + qn = qnorm(qi) + + qtmp0 = qi[:, 0]/qn + qtmp1 = qi[:, 1]/qn + qtmp2 = qi[:, 2]/qn + qtmp3 = qi[:, 3]/qn + + qout = np.array([qtmp0, qtmp1, qtmp2, qtmp3]).transpose() + + idx = np.argwhere(qout[:, 0] > 1.0).flatten() + if len(idx) > 0: + qout[idx, 0] = 1.0 + qout[idx, 1:4] = 0.0 + + idx = np.argwhere(qout[:, 0] < -1.0).flatten() + if len(idx) > 0: + qout[idx, 0] = -1.0 + qout[idx, 1:4] = 0.0 + + return qout + + +def mtoq(m): + """ + Function: mtoq + + Purpose: transforms a rotation matrix into a quaternion. If the + matrix does not perform a rotation, then its behavior may be ill- + defined + + WARNING!!!! - this routine does not conform to the wikipedia definition. see warning for qtom.pro + + Inputs: m: a 3x3 element array or an Nx3x3 element array + + Returns: q + + Notes: Implementation largely copied from the euve c library for + quaternions + Represention has q[0] = scalar component + q[1] = vector x + q[2] = vector y + q[3] = vector z + + The vector component of the quaternion can also be thought of as + an eigenvalue of the rotation the quaterion performs + + This routine is based on the IDL version by Patrick Cruce + """ + mi = deepcopy(m) + + dims = np.shape(mi) + + if len(dims) == 2: + if dims[0] != 3 or dims[1] != 3: + logging.error('Wrong dimensions in input matrix') + return -1 + + mi = np.reshape(m, (1, 3, 3)) + + dims = [1, dims] + + elif len(dims) == 3: + if dims[1] != 3 or dims[2] != 3: + logging.error('Wrong dimensions in input matrix') + return -1 + else: + logging.error('Wrong dimensions in input matrix') + return -1 + + qout = np.zeros((dims[0], 4)) + + arg = 1.0 + mi[:, 0, 0] + mi[:, 1, 1] + mi[:, 2, 2] + + idx = np.argwhere(arg < 0.0) + + if len(idx) != 0: + arg[idx] = 0.0 + + qout[:, 0] = 0.5 * np.sqrt(arg) + + arg = 1.0 + mi[:, 0, 0] - mi[:, 1, 1] - mi[:, 2, 2] + + idx = np.argwhere(arg < 0.0) + + if len(idx) != 0: + arg[idx] = 0.0 + + qout[:, 1] = 0.5 * np.sqrt(arg) + + arg = 1.0 - mi[:, 0, 0] + mi[:, 1, 1] - mi[:, 2, 2] + + idx = np.argwhere(arg < 0.0) + + if len(idx) != 0: + arg[idx] = 0.0 + + qout[:, 2] = 0.5 * np.sqrt(arg) + + arg = 1.0 - mi[:, 0, 0] - mi[:, 1, 1] + mi[:, 2, 2] + + idx = np.argwhere(arg < 0.0) + + if len(idx) != 0: + arg[idx] = 0.0 + + qout[:, 3] = 0.5 * np.sqrt(arg) + + imax = np.zeros(dims[0], dtype=int) + dmax = np.zeros(dims[0]) + + for i in range(4): + idx = np.argwhere(np.abs(qout[:, i]) > dmax) + if len(idx) != 0: + imax[idx] = i + dmax[idx] = qout[idx, i] + + idx = np.argwhere(imax == 0) + + if len(idx) != 0: + qout[idx, 1] = (mi[idx, 2, 1] - mi[idx, 1, 2]) / (4 * qout[idx, 0]) + qout[idx, 2] = (mi[idx, 0, 2] - mi[idx, 2, 0]) / (4 * qout[idx, 0]) + qout[idx, 3] = (mi[idx, 1, 0] - mi[idx, 0, 1]) / (4 * qout[idx, 0]) + + idx = np.argwhere(imax == 1) + + if len(idx) != 0: + qout[idx, 2] = (mi[idx, 1, 0] + mi[idx, 0, 1]) / (4 * qout[idx, 1]) + qout[idx, 3] = (mi[idx, 2, 0] + mi[idx, 0, 2]) / (4 * qout[idx, 1]) + qout[idx, 0] = (mi[idx, 2, 1] - mi[idx, 1, 2]) / (4 * qout[idx, 1]) + + idx = np.argwhere(imax == 2) + + if len(idx) != 0: + qout[idx, 3] = (m[idx, 2, 1] + m[idx, 1, 2]) / (4 * qout[idx, 2]) + qout[idx, 0] = (m[idx, 0, 2] - m[idx, 2, 0]) / (4 * qout[idx, 2]) + qout[idx, 1] = (m[idx, 1, 0] + m[idx, 0, 1]) / (4 * qout[idx, 2]) + + idx = np.argwhere(imax == 3) + + if len(idx) != 0: + qout[idx, 0] = (mi[idx, 1, 0] - mi[idx, 0, 1]) / (4 * qout[idx, 3]) + qout[idx, 1] = (mi[idx, 2, 0] + mi[idx, 0, 2]) / (4 * qout[idx, 3]) + qout[idx, 2] = (mi[idx, 2, 1] + mi[idx, 1, 2]) / (4 * qout[idx, 3]) + + idx = np.argwhere(qout[:, 0] < 0.0) + + if len(idx) != 0: + qout[idx, :] = -qout[idx, :] + + qret = qnormalize(qout) + + return np.reshape(qret, (dims[0], 4)) + + +def qtom(qi): + """ + Purpose: transforms quaternions into rotation matrices + WARNING!!! It appears that this routine returns the transpose (inverse) of the rotation matrix! + It differs from the CSPICE library and Wikipedia + + Inputs: a 4 element array representing a quaternion or an Nx4 element + array representing an array of quaternions + + Returns: a 3x3 matrix or an Nx3x3 array + + Notes: Implementation largely copied from the euve c library for + quaternions + Represention has q[0] = scalar component + q[1] = vector x + q[2] = vector y + q[3] = vector z + + The vector component of the quaternion can also be thought of as + an eigenvalue of the rotation the quaterion performs + + This routine is based on the IDL version by Patrick Cruce + """ + + if isinstance(qi, int): + return -1 + + e00 = qi[:, 0] * qi[:, 0] + e11 = qi[:, 1] * qi[:, 1] + e22 = qi[:, 2] * qi[:, 2] + e33 = qi[:, 3] * qi[:, 3] + e01 = 2 * qi[:, 0] * qi[:, 1] + e02 = 2 * qi[:, 0] * qi[:, 2] + e03 = 2 * qi[:, 0] * qi[:, 3] + e12 = 2 * qi[:, 1] * qi[:, 2] + e13 = 2 * qi[:, 1] * qi[:, 3] + e23 = 2 * qi[:, 2] * qi[:, 3] + + mout = np.zeros((len(e00), 3, 3)) + + mout[:, 0, 0] = e00 + e11 - e22 - e33 + mout[:, 1, 0] = e12 + e03 + mout[:, 2, 0] = e13 - e02 + mout[:, 0, 1] = e12 - e03 + mout[:, 1, 1] = e00 - e11 + e22 - e33 + mout[:, 2, 1] = e23 + e01 + mout[:, 1, 2] = e23 - e01 + mout[:, 0, 2] = e13 + e02 + mout[:, 2, 2] = e00 - e11 - e22 + e33 + + return mout + + +def qcompose(vec, theta, free=True): + """ + Purpose: compose quaternions from vectors and angles + Inputs: vec: 3 element array or an Nx3 element array + theta: an angle or an N element array of angles(in radians) + Keywords: free: Flag to allow thetas outside [0,pi) + Returns: a 4 element quaternion or an Nx4 element array of quaternions + Notes: Implementation largely copied from the euve c library for + quaternions + Represention has q[0] = scalar component + q[1] = vector x + q[2] = vector y + q[3] = vector z + The vector component of the quaternion can also be thought of as + an eigenvalue of the rotation the quaterion performs + + This routine is based on the IDL version by Patrick Cruce + """ + + # Constant indicating where sin(theta) is close enough to theta + epsilon = 1.0e-20 + + vi = deepcopy(vec) + thi = deepcopy(theta) + + # this next block of code moves angles into the range [0,PI) + if not free: + thi = thi % np.pi + + idx = np.argwhere(thi < 0) + + if len(idx) > 1: + thi[idx] += np.pi + + # calculate the vector norm + norm = np.sqrt(np.nansum(vi*vi, axis=1)) + + # decide which quaternions become identity vectors + idx1 = np.argwhere(norm < epsilon).flatten() + idx2 = np.argwhere(norm >= epsilon).flatten() + + out_arr = np.zeros((len(norm), 4)) + + if len(idx1) > 0: + out_arr[idx1, 0] = 1.0 + out_arr[idx1, 1:4] = 0.0 + + if len(idx2) > 0: + out_arr[idx2, 0] = np.cos(thi[idx2]/2.0) + + stheta2 = np.sin(thi[idx2]/2.0) + + out_arr[idx2, 1] = (stheta2 * vi[idx2, 0])/norm[idx2] + out_arr[idx2, 2] = (stheta2 * vi[idx2, 1])/norm[idx2] + out_arr[idx2, 3] = (stheta2 * vi[idx2, 2])/norm[idx2] + + return out_arr diff --git a/pyspedas/cotrans/tests/cotrans.py b/pyspedas/cotrans/tests/cotrans.py index d285ae2a..2c51e690 100644 --- a/pyspedas/cotrans/tests/cotrans.py +++ b/pyspedas/cotrans/tests/cotrans.py @@ -11,38 +11,94 @@ """ import unittest import pyspedas +import logging from pyspedas.themis.cotrans.dsl2gse import dsl2gse from pyspedas.cotrans.cotrans import cotrans -from pyspedas.cotrans.cotrans_get_coord import cotrans_get_coord -from pyspedas.cotrans.cotrans_set_coord import cotrans_set_coord +from pyspedas.cotrans.fac_matrix_make import fac_matrix_make from pytplot import get_data, store_data, del_data +from pyspedas import cotrans_get_coord, cotrans_set_coord class CotransTestCases(unittest.TestCase): """Tests for cotrans.""" + def test_fac_matrix_make(self): + doesntexist = fac_matrix_make('doesnt_exist') - def test_get_set_coord(self): - """ Test for cotrans_set_coord/cotrans_get_coord """ + def test_get_set_coord_wrappers(self): + """ Test for cotrans_set_coord/cotrans_get_coord wrappers """ + del_data() doesntexist = cotrans_get_coord('test_coord') - self.assertTrue(doesntexist == None) + self.assertTrue(doesntexist is None) store_data('test_coord', data={'x': [1, 2, 3, 4, 5], 'y': [1, 1, 1, 1, 1]}) + cotrans(name_in='test_coord', coord_out="geo") before = cotrans_get_coord('test_coord') - self.assertTrue(before == None) + self.assertTrue(before is None) setcoord = cotrans_set_coord('test_coord', 'GSE') self.assertTrue(setcoord) after = cotrans_get_coord('test_coord') self.assertTrue(after == 'GSE') + md = get_data('test_coord',metadata=True) + md['data_att']['units'] = 'km' setcoord = cotrans_set_coord('test_coord', 'GSM') self.assertTrue(setcoord) + md_after = get_data('test_coord',metadata=True) after = cotrans_get_coord('test_coord') self.assertTrue(after == 'GSM') + self.assertTrue(md_after['data_att']['units'] == 'km') + setcoord = cotrans_set_coord('doesnt_exist', 'GSM') + + def test_get_set_coords(self): + """ Test for pytplot.set_coords/get_coords """ + from pytplot import set_coords,get_coords + del_data() + doesntexist = get_coords('test_coord') + self.assertTrue(doesntexist is None) + store_data('test_coord', data={'x': [1, 2, 3, 4, 5], 'y': [1, 1, 1, 1, 1]}) + cotrans(name_in='test_coord', coord_out="geo") + before = get_coords('test_coord') + self.assertTrue(before is None) + setcoord = set_coords('test_coord', 'GSE') + self.assertTrue(setcoord) + after = get_coords('test_coord') + self.assertTrue(after == 'GSE') + md = get_data('test_coord',metadata=True) + md['data_att']['units'] = 'km' + setcoord = set_coords('test_coord', 'GSM') + self.assertTrue(setcoord) + md_after = get_data('test_coord',metadata=True) + after = get_coords('test_coord') + self.assertTrue(after == 'GSM') + self.assertTrue(md_after['data_att']['units'] == 'km') + setcoord = set_coords('doesnt_exist', 'GSM') + + def test_get_set_units(self): + """ Test for pytplot.set_coords/get_coords """ + from pytplot import set_units,get_units, set_coords, get_coords + + del_data() + doesntexist = get_units('test_units') + self.assertTrue(doesntexist is None) + store_data('test_units', data={'x': [1, 2, 3, 4, 5], 'y': [1, 1, 1, 1, 1]}) + before = get_units('test_units') + self.assertTrue(before is None) + setunits = set_units('test_units', 'Km') + self.assertTrue(setunits) + after = get_units('test_units') + self.assertTrue(after == 'Km') + set_coords('test_units','GEO') + setunits = set_units('test_units', 'mm') + self.assertTrue(setunits) + coords_after=get_coords('test_units') + units_after=get_units('test_units') + self.assertTrue(coords_after == 'GEO') + self.assertTrue(units_after == 'mm') def test_dsl2gse(self): """Test themis.cotrans.dsl2gse.""" del_data() # Try with missing variables. It should exit without problems. - dsl2gse('tha_fgl_dsl', 'tha_spinras', 'tha_spindec', 'tha_fgl_gse') + dsl2gse('tha_fgl_dsl','tha_fgl_gse') # Now load the needed variables. time_range = ['2017-03-23 00:00:00', '2017-03-23 23:59:59'] pyspedas.themis.state(probe='a', trange=time_range, @@ -51,12 +107,14 @@ def test_dsl2gse(self): pyspedas.themis.fgm(probe='a', trange=time_range, varnames=['tha_fgl_dsl']) - dsl2gse('tha_fgl_dsl', 'tha_spinras', 'tha_spindec', 'tha_fgl_gse') + fac_matrix_make('tha_fgl_dsl') + + dsl2gse('tha_fgl_dsl', 'tha_fgl_gse') t, d = get_data('tha_fgl_gse') # Now test the inverse. - dsl2gse('tha_fgl_dsl', 'tha_spinras', 'tha_spindec', 'tha_fgl_gse', - isgsetodsl=1) + dsl2gse('tha_fgl_dsl', 'tha_fgl_gse', + isgsetodsl=True) self.assertTrue(abs(d[0].tolist()[0]-15.905078404701147) <= 1e-6) self.assertTrue(abs(d[0].tolist()[1]--13.962618931740064) <= 1e-6) @@ -84,6 +142,21 @@ def test_cotrans(self): cotrans(name_in=name_in, coord_in="gei", coord_out="geo") self.assertTrue(out_len == in_len) + def test_cotrans_coord_mismatch(self): + """Test that cotrans rejects a request where in_coord does not match the system from the variable metadata.""" + del_data() + trange = ['2010-02-25/00:00:00', '2010-02-25/23:59:59'] + probe = 'a' + name_in = "tha_pos" + name_out = "tha_pos_new_geo" + pyspedas.themis.state(probe=probe, trange=trange, + time_clip=True, varnames=[name_in]) + # Metadata coordinate system is GEI, but requesting GSM->GEO transform. This should generate an error message + # and return failure. + result = cotrans(name_in=name_in, name_out=name_out, + coord_in="gsm", coord_out="geo") + self.assertTrue(result == 0) + def test_cotrans_igrf(self): """Test GSE->GSM and IGRF.""" del_data() @@ -160,9 +233,14 @@ def test_all_cotrans(self): name1 = "name1" name2 = "name2" count = 0 - # Test non-existent system. - cotrans(name_out=name1, time_in=t, data_in=d, - coord_in="coord_in", coord_out="coord_out") + # Test non-existent systems. + result = cotrans(name_out=name1, time_in=t, data_in=d, + coord_in="badcoord", coord_out="gei") + self.assertTrue(result == 0) + result = cotrans(name_out=name1, time_in=t, data_in=d, + coord_in="gei", coord_out="badcoord") + self.assertTrue(result == 0) + # Test empty data. cotrans(name_out=name1, time_in=t, data_in=[], coord_in="gei", coord_out="geo") @@ -183,7 +261,7 @@ def test_all_cotrans(self): dout2 = get_data(name2) out_len2 = len(dout2[0]) dd2 = dout2[1][1] - print(count, "--- in:", coord_in, "out:", coord_out) + logging.info("%d --- in: %s out: %s", count, coord_in, coord_out) # print(dout[1][1]) # print(dd2) self.assertTrue(out_len2 == in_len) diff --git a/pyspedas/cotrans/tests/quaternions.py b/pyspedas/cotrans/tests/quaternions.py new file mode 100644 index 00000000..7e0454bc --- /dev/null +++ b/pyspedas/cotrans/tests/quaternions.py @@ -0,0 +1,32 @@ +import unittest +import numpy as np +from pyspedas.cotrans.quaternions import qslerp, qcompose, qconj, mtoq, qtom, qvalidate, qmult, qdecompose + + +class Qtests(unittest.TestCase): + def test_qslerp(self): + m1 = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) + m2 = np.array([[-1, 0, 0], [0, -1, 0], [0, 0, 1]]) + qin = np.transpose(np.array([mtoq(m1), mtoq(m2)])).reshape([4, 2]).transpose() + x1 = np.array([0.0, 1.0]) + x2 = np.array([0.0, 1.0/6.0, 1.0/3.0, 1.0/2.0, 2.0/3.0, 5.0/6.0, 1.0]) + qout = qslerp(qin, x1, x2) + qout_geo = qslerp(qin, x1, x2, geometric=True) + mout = qtom(qout) + qcomp = qcompose(np.array([[1, 2, 3]]), np.array([4]), free=False) + self.assertTrue(np.abs(np.sum(qout-qout_geo))<1e-6) + + def test_errors(self): + qs1 = np.ones((7, 5)) + qs2 = np.ones((8, 4)) + qs3 = np.ones(4) + self.assertTrue(qvalidate(qs1, 'qs1', 'qslerp') == -1) + self.assertTrue(qmult(qs1, qs2) == -1) + self.assertTrue(qdecompose(np.array(1)) == -1) + self.assertTrue(qdecompose(1) == -1) + self.assertTrue(qconj(1) == -1) + self.assertTrue(qslerp(qs1, qs1, qs1) == -1) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/pyspedas/cotrans/tests/test_minvar.py b/pyspedas/cotrans/tests/test_minvar.py new file mode 100644 index 00000000..7d4c1c61 --- /dev/null +++ b/pyspedas/cotrans/tests/test_minvar.py @@ -0,0 +1,67 @@ +""" +Unit Tests for minvar function. +""" +from pyspedas.cotrans.minvar import minvar +import numpy as np +import unittest + + +class TestMinvar(unittest.TestCase): + @classmethod + def setUpClass(cls): + # Test tolerance + cls.tol = 1e-10 + + # Define a random data array + rng = np.random.default_rng(seed=31415) + cls.rdata = rng.random((10, 3)) + + def test_minvar_basic(self): + """Test of basic input and output""" + + # Synthetic data of zeros + data = np.zeros([2, 3]) + vrot, v, w = minvar(data) + self.assertTrue(np.sum(vrot - data) < self.tol) + self.assertTrue(np.sum(v - np.diag(np.ones(3))) < self.tol) + self.assertTrue(np.sum(w - np.zeros(3)) < self.tol) + + def test_minvar_rotation(self): + """Test of the rotation matrix""" + vrot, v, w = minvar(self.rdata) + # Determinant of rotation matrix should be = 1 + self.assertTrue((np.linalg.det(v) - 1) < self.tol) + + def test_minvar_total(self): + """Test of same square root of total of squares """ + vrot, v, w = minvar(self.rdata) + total1 = (self.rdata**2).sum(axis=1) + total2 = (vrot ** 2).sum(axis=1) + # Compare totals + self.assertTrue(np.sum(total1 - total2) < self.tol) + + def test_minrar_code_coverage(self): + """Test to cover the code from IDL""" + data = np.array([[0, 0, 1], [0, 0, 1]]) + vrot, v, w = minvar(data) + # Case of np.sum(w) == 0.0 + self.assertTrue(w.sum() < self.tol) + + # This should be not Right Handed (?...) + data = np.array([[0, -1, 1], [-1, -1, 1]]) + # case if YcrossZdotX < 0 + vrot, v, w = minvar(data) + YcrossZdotX = v[0, 0] * (v[1, 1] * v[2, 2] - v[2, 1] * v[1, 2]) + # YcrossZdotX Should be positive after that + self.assertTrue(YcrossZdotX > 0) + + # should tigger case if v[2, 2] < 0: (?...) + data = np.array([[-0.1, -0.9, 0.5], [-1, 1, -0.9]]) + vrot, v, w = minvar(data) + # v[2,2] Should be positive after that + self.assertTrue(v[2, 2] > 0) + + +if __name__ == '__main__': + unittest.main() + diff --git a/pyspedas/cotrans/tvector_rotate.py b/pyspedas/cotrans/tvector_rotate.py index 5815aeaa..ac78dd73 100644 --- a/pyspedas/cotrans/tvector_rotate.py +++ b/pyspedas/cotrans/tvector_rotate.py @@ -1,7 +1,9 @@ - +import logging import numpy as np from pyspedas import tnames, tinterpol from pytplot import get_data, store_data +from pyspedas.cotrans.quaternions import qtom, mtoq, qslerp +from pyspedas.cotrans.matrix_array_lib import ctv_verify_mats, ctv_left_mats, ctv_swap_hands def tvector_rotate(mat_var_in, vec_var_in, newname=None): @@ -31,11 +33,11 @@ def tvector_rotate(mat_var_in, vec_var_in, newname=None): """ if tnames(mat_var_in) == []: - print('Transformation requires the matrix variable to be set to a valid tplot variable.') + logging.error('Transformation requires the matrix variable to be set to a valid tplot variable.') return if tnames(vec_var_in) == []: - print('Transformation requires the vector variables to be set to a valid tplot variable.') + logging.error('Transformation requires the vector variables to be set to a valid tplot variable.') return vec_var_in = tnames(vec_var_in) @@ -47,17 +49,37 @@ def tvector_rotate(mat_var_in, vec_var_in, newname=None): newname = [newname] if len(newname) != len(vec_var_in): - print('Length of newname keyword should match the length of vec_var_in') + logging.error('Length of newname keyword should match the length of vec_var_in') return out_names = [] - mat_data = get_data(mat_var_in) - # loop over the vectors for vec_var, new_var in zip(vec_var_in, newname): vec_data = get_data(vec_var) vec_metadata = get_data(vec_var, metadata=True) + mat_data = get_data(mat_var_in) + m_d_y = mat_data.y + + if not np.array_equal(vec_data.times, mat_data.times) and len(mat_data.times) != 1: + verify_check = ctv_verify_mats(mat_data.y) + + is_left_mat = ctv_left_mats(mat_data.y) + + # left-handed matrices can mess up qslerping + if is_left_mat: + q_in = mtoq(ctv_swap_hands(mat_data.y)) + else: + q_in = mtoq(mat_data.y) + + # interpolate quaternions + q_out = qslerp(q_in, mat_data.times, vec_data.times) + + # turn quaternions back into matrices + m_d_y = qtom(q_out) + + if is_left_mat: + m_d_y = ctv_swap_hands(m_d_y) if not np.array_equal(vec_data.times, mat_data.times) and len(mat_data.times) != 1: print('Interpolating the matrix timestamps to the vector time stamps') @@ -67,10 +89,10 @@ def tvector_rotate(mat_var_in, vec_var_in, newname=None): vec_fac = np.zeros((len(vec_data.times), len(vec_data.y[0, :]))) for i in range(0, len(vec_data.times)): - if mat_data.y.shape[0] == 1: # only a single matrix - matrix = mat_data.y[0, :, :] + if m_d_y.shape[0] == 1: # only a single matrix + matrix = m_d_y[0, :, :] else: - matrix = mat_data.y[i, :, :] + matrix = m_d_y[i, :, :] vec_fac[i, :] = matrix @ vec_data.y[i, :] diff --git a/pyspedas/cotrans/xyz_to_polar.py b/pyspedas/cotrans/xyz_to_polar.py new file mode 100644 index 00000000..2a0b266e --- /dev/null +++ b/pyspedas/cotrans/xyz_to_polar.py @@ -0,0 +1,35 @@ +import numpy as np + + +def xyz_to_polar(data, co_latitude=False): + """ + Convert cartesian coordinates to polar coordinates. + + Parameters + ---------- + x : numpy.ndarray + x-component of the vector + y : numpy.ndarray + y-component of the vector + z : numpy.ndarray + z-component of the vector + + Returns + ------- + r : numpy.ndarray + radial component of the vector + theta : numpy.ndarray + polar angle of the vector + phi : numpy.ndarray + azimuthal angle of the vector + """ + x = data[:, 0] + y = data[:, 1] + z = data[:, 2] + out = np.zeros(data.shape) + out[:, 0] = np.sqrt(x**2 + y**2 + z**2) + out[:, 1] = np.arccos(z/out[:, 0])*180.0/np.pi + out[:, 2] = np.arctan2(y, x)*180.0/np.pi + if not co_latitude: + out[:, 1] = 90.0 - out[:, 1] + return out diff --git a/pyspedas/csswe/__init__.py b/pyspedas/csswe/__init__.py index 47803d77..23e8813b 100644 --- a/pyspedas/csswe/__init__.py +++ b/pyspedas/csswe/__init__.py @@ -1,5 +1,6 @@ - from .load import load +from pyspedas.utilities.datasets import find_datasets + def reptile(trange=['2013-11-5', '2013-11-6'], datatype='flux', @@ -66,3 +67,8 @@ def reptile(trange=['2013-11-5', '2013-11-6'], """ return load(instrument='reptile', trange=trange, level=level, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + +def datasets(instrument=None, label=True): + out = find_datasets(mission='Smallsats/Cubesats', instrument='csswe', label=label) + return out diff --git a/pyspedas/csswe/load.py b/pyspedas/csswe/load.py index e4b8b037..20c50824 100644 --- a/pyspedas/csswe/load.py +++ b/pyspedas/csswe/load.py @@ -1,6 +1,6 @@ from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import cdf_to_tplot from .config import CONFIG diff --git a/pyspedas/csswe/tests/tests.py b/pyspedas/csswe/tests/tests.py index c95e4a73..df3ab9b4 100644 --- a/pyspedas/csswe/tests/tests.py +++ b/pyspedas/csswe/tests/tests.py @@ -1,18 +1,22 @@ - import os import unittest -from pyspedas.utilities.data_exists import data_exists - +from pytplot import data_exists import pyspedas + class LoadTestCases(unittest.TestCase): def test_load_rep_data(self): rep_vars = pyspedas.csswe.reptile(time_clip=True) self.assertTrue(data_exists('E1flux')) + def test_load_notplot(self): + rep_vars = pyspedas.csswe.reptile(notplot=True) + self.assertTrue('E1flux' in rep_vars) + def test_downloadonly(self): files = pyspedas.csswe.reptile(downloadonly=True, trange=['2014-2-15', '2014-2-16']) self.assertTrue(os.path.exists(files[0])) + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/de2/README.md b/pyspedas/de2/README.md new file mode 100644 index 00000000..56d0a5aa --- /dev/null +++ b/pyspedas/de2/README.md @@ -0,0 +1,95 @@ + +## Dynamics Explorer 2 (DE2) +The routines in this module can be used to load data from the Dynamics Explorer 2 (DE2) mission. + +### Instruments +- Magnetometer (MAG) +- Neutral Atmosphere Composition Spectrometer (NACS) +- Retarding Potential Analyzer (RPA) +- Fabry-Pérot Interferometer (FPI) +- Ion Drift Meter (IDM) +- Wind and Temperature Spectrometer (WATS) +- Vector Electric Field Instrument (VEFI) +- Langmuir Probe Instrument (LANG) + +### Examples +Get started by importing pyspedas and tplot; these are required to load and plot the data: + +```python +import pyspedas +from pytplot import tplot +``` + +#### Magnetometer (MAG) + +```python +mag_vars = pyspedas.de2.mag(trange=['1983-02-16', '1983-02-17']) + +tplot(['bx', 'by', 'bz']) +``` + + +#### Neutral Atmosphere Composition Spectrometer (NACS) + +```python +nacs_vars = pyspedas.de2.nacs(trange=['1983-02-16', '1983-02-17']) + +tplot(['O_density', 'N_density']) +``` + + +#### Retarding Potential Analyzer (RPA) + +```python +rpa_vars = pyspedas.de2.rpa(trange=['1983-02-16', '1983-02-17']) + +tplot(['ionDensity', 'ionTemperature']) +``` + + +#### Fabry-Pérot Interferometer (FPI) + +```python +fpi_vars = pyspedas.de2.fpi(trange=['1983-02-16', '1983-02-17']) + +tplot('TnF') +``` + + +#### Ion Drift Meter (IDM) + +```python +idm_vars = pyspedas.de2.idm(trange=['1983-02-16', '1983-02-17']) + +tplot(['ionVelocityZ', 'ionVelocityY']) +``` + + +#### Wind and Temperature Spectrometer (WATS) + +```python +wats_vars = pyspedas.de2.wats(trange=['1983-02-16', '1983-02-17']) + +tplot(['density', 'Tn']) +``` + + +#### Vector Electric Field Instrument (VEFI) + +```python +vefi_vars = pyspedas.de2.vefi(trange=['1983-02-16', '1983-02-17']) + +tplot(['spectA', 'spectB', 'spectC']) +``` + + +#### Langmuir Probe Instrument (LANG) + +```python +lang_vars = pyspedas.de2.lang(trange=['1983-02-16', '1983-02-17']) + +tplot(['plasmaDensity', 'electronTemp']) +``` + + + \ No newline at end of file diff --git a/pyspedas/de2/__init__.py b/pyspedas/de2/__init__.py new file mode 100644 index 00000000..19a94f0b --- /dev/null +++ b/pyspedas/de2/__init__.py @@ -0,0 +1,595 @@ +from .load import load +from pyspedas.utilities.datasets import find_datasets + + +def mag(trange=['1983-02-16', '1983-02-17'], + datatype='62ms', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Magnetometer (MAG) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + datatype: str + Data type; Valid options: '62ms' + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + + tvars = load(instrument='mag', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if tvars is None or notplot or downloadonly: + return tvars + + return mag_postprocessing(tvars) + + +def mag_postprocessing(variables): + """ + Placeholder for MAG post-processing + """ + return variables + + +def nacs(trange=['1983-02-01', '1983-02-02'], + datatype='neutral1s', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Neutral Atmosphere Composition Spectrometer (NACS) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + datatype: str + Data type; Valid options: 'neutral1s' + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + tvars= load(instrument='nacs', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if tvars is None or notplot or downloadonly: + return tvars + + return nacs_postprocessing(tvars) + + +def nacs_postprocessing(variables): + """ + Placeholder for NACS post-processing + """ + return variables + + +def rpa(trange=['1983-02-16', '1983-02-17'], + datatype='ion2s', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Retarding Potential Analyzer (RPA) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + datatype: str + Data type; Valid options: 'ion2s' + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + tvars= load(instrument='rpa', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + + if tvars is None or notplot or downloadonly: + return tvars + + return rpa_postprocessing(tvars) + + +def rpa_postprocessing(variables): + """ + Placeholder for RPA post-processing + """ + return variables + + +def fpi(trange=['1983-02-16', '1983-02-17'], + datatype='8s', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Fabry-Pérot Interferometer (FPI) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + datatype: str + Data type; Valid options: + '8s' for 8-second resolution data + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + tvars = load(instrument='fpi', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if tvars is None or notplot or downloadonly: + return tvars + + return fpi_postprocessing(tvars) + + +def fpi_postprocessing(variables): + """ + Placeholder for FPI post-processing + """ + return variables + + +def idm(trange=['1983-02-16', '1983-02-17'], + datatype='250ms', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Ion Drift Meter (IDM) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + datatype: str + Data type; Valid options: '250ms' + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + tvars = load(instrument='idm', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if tvars is None or notplot or downloadonly: + return tvars + + return idm_postprocessing(tvars) + + +def idm_postprocessing(variables): + """ + Placeholder for IDM post-processing + """ + return variables + + +def wats(trange=['1983-02-16', '1983-02-17'], + datatype='2s', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Wind and Temperature Spectrometer (WATS) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + datatype: str + Data type; Valid options: + '2s' for 2 second data + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + tvars = load(instrument='wats', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if tvars is None or notplot or downloadonly: + return tvars + + return wats_postprocessing(tvars) + + +def wats_postprocessing(variables): + """ + Placeholder for WATS post-processing + """ + return variables + + +def vefi(trange=['1983-02-16', '1983-02-17'], + datatype='ac500ms', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Vector Electric Field Instrument (VEFI) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + datatype: str + Data type; Valid options: + 'ac500ms', 'dca500ms' + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + tvars = load(instrument='vefi', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if tvars is None or notplot or downloadonly: + return tvars + + return vefi_postprocessing(tvars) + + +def vefi_postprocessing(variables): + """ + Placeholder for VEFI post-processing + """ + return variables + + +def lang(trange=['1983-02-16', '1983-02-17'], + datatype='500ms', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Langmuir Probe Instrument (LANG) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + datatype: str + Data type; Valid options: '500ms' + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + tvars = load(instrument='lang', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if tvars is None or notplot or downloadonly: + return tvars + + return lang_postprocessing(tvars) + + +def lang_postprocessing(variables): + """ + Placeholder for LANG post-processing + """ + return variables + + +def datasets(instrument=None, label=True): + return find_datasets(mission='Dynamics Explorer', instrument=instrument, label=label) diff --git a/pyspedas/de2/config.py b/pyspedas/de2/config.py new file mode 100644 index 00000000..ef2b881b --- /dev/null +++ b/pyspedas/de2/config.py @@ -0,0 +1,12 @@ +import os + +CONFIG = {'local_data_dir': 'de2_data/', + 'remote_data_dir': 'https://spdf.gsfc.nasa.gov/pub/data/de/de2/'} + +# override local data directory with environment variables +if os.environ.get('SPEDAS_DATA_DIR'): + CONFIG['local_data_dir'] = os.sep.join([os.environ['SPEDAS_DATA_DIR'], 'de2']) + +if os.environ.get('DE2_DATA_DIR'): + CONFIG['local_data_dir'] = os.environ['DE2_DATA_DIR'] + \ No newline at end of file diff --git a/pyspedas/de2/load.py b/pyspedas/de2/load.py new file mode 100644 index 00000000..2504ae15 --- /dev/null +++ b/pyspedas/de2/load.py @@ -0,0 +1,78 @@ +from pyspedas.utilities.dailynames import dailynames +from pyspedas.utilities.download import download +from pytplot import time_clip as tclip +from pytplot import cdf_to_tplot + +from .config import CONFIG + + +def load(trange=['1983-02-16', '1983-02-17'], + instrument='mag', + datatype='', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the DE2 mission; this function is not meant + to be called directly; instead, see the wrappers: + + pyspedas.de2.mag + pyspedas.de2.nacs + pyspedas.de2.rpa + pyspedas.de2.fpi + pyspedas.de2.idm + pyspedas.de2.wats + pyspedas.de2.vefi + pyspedas.de2.lang + + """ + + if instrument == 'mag': + pathformat = 'magnetic_electric_fields_vefi_magb/'+datatype+'_vefimagb_cdaweb/%Y/de2_'+datatype+'_vefimagb_%Y%m%d_v??.cdf' + elif instrument == 'nacs': + pathformat = 'neutral_gas_nacs/'+datatype+'_'+instrument+'_cdaweb/%Y/de2_'+datatype+'_'+instrument+'_%Y%m%d_v??.cdf' + elif instrument == 'rpa': + pathformat = 'plasma_rpa/'+datatype+'_cdaweb/%Y/de2_'+datatype+'_'+instrument+'_%Y%m%d_v??.cdf' + elif instrument == 'fpi': + pathformat = 'neutral_gas_fpi/de2_neutral8s_fpi/%Y/de2_neutral'+datatype+'_'+instrument+'_%Y%m%d_v??.cdf' + elif instrument == 'idm': + pathformat = 'plasma_idm/vion250ms_cdaweb/%Y/de2_vion'+datatype+'_'+instrument+'_%Y%m%d_v??.cdf' + elif instrument == 'wats': + pathformat = 'neutral_gas_wats/wind2s_wats_cdaweb/%Y/de2_wind'+datatype+'_'+instrument+'_%Y%m%d_v??.cdf' + elif instrument == 'vefi': + pathformat = 'electric_fields_vefi/'+datatype+'_vefi_cdaweb/%Y/de2_'+datatype+'_'+instrument+'_%Y%m%d_v??.cdf' + elif instrument == 'lang': + pathformat = 'plasma_lang/plasma500ms_lang_cdaweb/%Y/de2_plasma'+datatype+'_'+instrument+'_%Y%m%d_v??.cdf' + + # find the full remote path names using the trange + remote_names = dailynames(file_format=pathformat, trange=trange) + + out_files = [] + + files = download(remote_file=remote_names, remote_path=CONFIG['remote_data_dir'], local_path=CONFIG['local_data_dir'], no_download=no_update) + if files is not None: + for file in files: + out_files.append(file) + + out_files = sorted(out_files) + + if downloadonly: + return out_files + + tvars = cdf_to_tplot(out_files, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, notplot=notplot) + + if notplot: + return tvars + + if time_clip: + for new_var in tvars: + tclip(new_var, trange[0], trange[1], suffix='') + + return tvars + + \ No newline at end of file diff --git a/pyspedas/de2/tests/__init__.py b/pyspedas/de2/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pyspedas/de2/tests/tests.py b/pyspedas/de2/tests/tests.py new file mode 100644 index 00000000..69b43d09 --- /dev/null +++ b/pyspedas/de2/tests/tests.py @@ -0,0 +1,62 @@ +import os +import unittest +from pytplot import data_exists +import pyspedas + + +class LoadTestCases(unittest.TestCase): + def test_load_mag_data(self): + out_vars = pyspedas.de2.mag(time_clip=True) + self.assertTrue(data_exists('bx')) + self.assertTrue(data_exists('by')) + self.assertTrue(data_exists('bz')) + + def test_load_nacs_data(self): + out_vars = pyspedas.de2.nacs() + self.assertTrue(data_exists('O_density')) + self.assertTrue(data_exists('N_density')) + + def test_load_rpa_data(self): + out_vars = pyspedas.de2.rpa() + self.assertTrue(data_exists('ionDensity')) + self.assertTrue(data_exists('ionTemperature')) + + def test_load_fpi_data(self): + out_vars = pyspedas.de2.fpi() + self.assertTrue(data_exists('TnF')) + + # issue with the CDFs here, 2Nov2022 + # def test_load_idm_data(self): + # out_vars = pyspedas.de2.idm() + # self.assertTrue(data_exists('ionVelocityY')) + # self.assertTrue(data_exists('ionVelocityZ')) + + def test_load_wats_data(self): + out_vars = pyspedas.de2.wats() + self.assertTrue(data_exists('density')) + self.assertTrue(data_exists('Tn')) + + def test_load_vefi_data(self): + out_vars = pyspedas.de2.vefi() + self.assertTrue(data_exists('spectA')) + self.assertTrue(data_exists('spectB')) + self.assertTrue(data_exists('spectC')) + + def test_load_lang_data(self): + out_vars = pyspedas.de2.lang() + self.assertTrue(data_exists('plasmaDensity')) + self.assertTrue(data_exists('electronTemp')) + + def test_load_notplot(self): + out_vars = pyspedas.de2.mag(notplot=True) + self.assertTrue('bz' in out_vars) + + def test_downloadonly(self): + files = pyspedas.de2.mag(downloadonly=True, trange=['1983-2-16', '1983-2-17']) + self.assertTrue(os.path.exists(files[0])) + + +if __name__ == '__main__': + unittest.main() + + \ No newline at end of file diff --git a/pyspedas/dscovr/__init__.py b/pyspedas/dscovr/__init__.py index 7da48dca..de2b50c4 100644 --- a/pyspedas/dscovr/__init__.py +++ b/pyspedas/dscovr/__init__.py @@ -1,5 +1,6 @@ - from .load import load +from pyspedas.utilities.datasets import find_datasets + def mag(trange=['2018-10-16', '2018-10-17'], datatype='h0', @@ -267,4 +268,8 @@ def all(trange=['2018-10-16', '2018-10-17'], downloadonly=False, suffix='', no_u orb_vars = orb(trange=trange, downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) mag_vars = mag(trange=trange, downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) fc_vars = fc(trange=trange, downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) - return att_vars + orb_vars + mag_vars + fc_vars \ No newline at end of file + return att_vars + orb_vars + mag_vars + fc_vars + + +def datasets(instrument=None, label=True): + return find_datasets(mission='DSCOVR', instrument=instrument, label=label) diff --git a/pyspedas/dscovr/load.py b/pyspedas/dscovr/load.py index 5b7d333c..10b1397c 100644 --- a/pyspedas/dscovr/load.py +++ b/pyspedas/dscovr/load.py @@ -1,6 +1,6 @@ from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import cdf_to_tplot from .config import CONFIG diff --git a/pyspedas/dscovr/tests/tests.py b/pyspedas/dscovr/tests/tests.py index 8bdc40e8..c7abb5e3 100644 --- a/pyspedas/dscovr/tests/tests.py +++ b/pyspedas/dscovr/tests/tests.py @@ -1,15 +1,16 @@ - import os import unittest -from pyspedas.utilities.data_exists import data_exists - +from pytplot import data_exists import pyspedas + class LoadTestCases(unittest.TestCase): def test_load_mag_data(self): mag_vars = pyspedas.dscovr.mag(time_clip=True) self.assertTrue(data_exists('dsc_h0_mag_B1RTN')) self.assertTrue(data_exists('dsc_h0_mag_B1GSE')) + mag_vars = pyspedas.dscovr.mag(notplot=True) + self.assertTrue('dsc_h0_mag_B1GSE' in mag_vars) def test_load_fc_data(self): fc_vars = pyspedas.dscovr.fc() @@ -37,4 +38,4 @@ def test_load_all(self): if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/equator_s/__init__.py b/pyspedas/equator_s/__init__.py index 898cf6fa..9c4cb1c4 100644 --- a/pyspedas/equator_s/__init__.py +++ b/pyspedas/equator_s/__init__.py @@ -1,5 +1,6 @@ - from .load import load +from pyspedas.utilities.datasets import find_datasets + def mam(trange=['1998-04-06', '1998-04-07'], datatype='pp', @@ -422,3 +423,7 @@ def sfd(trange=['1998-01-26', '1998-01-27'], """ return load(instrument='sfd', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + +def datasets(instrument=None, label=True): + return find_datasets(mission='Equator-S', instrument=instrument, label=label) diff --git a/pyspedas/equator_s/load.py b/pyspedas/equator_s/load.py index 049e90a0..0babb7ca 100644 --- a/pyspedas/equator_s/load.py +++ b/pyspedas/equator_s/load.py @@ -1,6 +1,6 @@ from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import cdf_to_tplot from .config import CONFIG diff --git a/pyspedas/equator_s/tests/tests.py b/pyspedas/equator_s/tests/tests.py index 9d2c0d76..4d4fa95c 100644 --- a/pyspedas/equator_s/tests/tests.py +++ b/pyspedas/equator_s/tests/tests.py @@ -1,14 +1,20 @@ - import unittest -from pyspedas.utilities.data_exists import data_exists - +from pytplot import data_exists import pyspedas + class LoadTestCases(unittest.TestCase): + def test_load_notplot(self): + mam_vars = pyspedas.equator_s.mam(notplot=True) + self.assertTrue('B_xyz_gse%eq_pp_mam' in mam_vars) + def test_load_mam_data(self): - mam_vars = pyspedas.equator_s.mam() + mam_vars = pyspedas.equator_s.mam(time_clip=True) self.assertTrue(data_exists('B_xyz_gse%eq_pp_mam')) + def test_load_esa_downloadonly(self): + esa = pyspedas.equator_s.esa(downloadonly=True) + def test_load_edi_data(self): edi_vars = pyspedas.equator_s.edi() self.assertTrue(data_exists('V_ed_xyz_gse%eq_pp_edi')) @@ -31,5 +37,6 @@ def test_load_sfd_data(self): sfd_vars = pyspedas.equator_s.sfd() self.assertTrue(data_exists('F_e>0.26%eq_sp_sfd')) + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/erg/satellite/erg/att/att.py b/pyspedas/erg/satellite/erg/att/att.py index df44d9ab..b4184a2b 100644 --- a/pyspedas/erg/satellite/erg/att/att.py +++ b/pyspedas/erg/satellite/erg/att/att.py @@ -1,5 +1,5 @@ import pandas as pd -from pyspedas.utilities.time_double import time_float +from pytplot import time_float from pytplot import store_data from ..load import load diff --git a/pyspedas/erg/satellite/erg/common/cotrans/cart_trans_matrix_make.py b/pyspedas/erg/satellite/erg/common/cotrans/cart_trans_matrix_make.py index ff375809..b1fedcf4 100644 --- a/pyspedas/erg/satellite/erg/common/cotrans/cart_trans_matrix_make.py +++ b/pyspedas/erg/satellite/erg/common/cotrans/cart_trans_matrix_make.py @@ -1,5 +1,5 @@ import numpy as np -from pyspedas.analysis.tnormalize import tnormalize +from pytplot import tnormalize def cart_trans_matrix_make(x, y, z): diff --git a/pyspedas/erg/satellite/erg/common/cotrans/dsi2j2000.py b/pyspedas/erg/satellite/erg/common/cotrans/dsi2j2000.py index 619182c0..7edfe42f 100644 --- a/pyspedas/erg/satellite/erg/common/cotrans/dsi2j2000.py +++ b/pyspedas/erg/satellite/erg/common/cotrans/dsi2j2000.py @@ -1,9 +1,9 @@ import numpy as np from pyspedas import tinterpol -from pyspedas.analysis.tcrossp import tcrossp -from pyspedas.analysis.tnormalize import tnormalize +from pytplot import tcrossp +from pytplot import tnormalize from pyspedas.cotrans.cotrans import cotrans -from pyspedas.utilities.time_string import time_string +from pytplot import time_string from pytplot import get_data, get_timespan, options, store_data, tplot_names from ...orb.orb import orb diff --git a/pyspedas/erg/satellite/erg/common/cotrans/erg_interpolate_att.py b/pyspedas/erg/satellite/erg/common/cotrans/erg_interpolate_att.py index 522c99b0..9b249a6d 100644 --- a/pyspedas/erg/satellite/erg/common/cotrans/erg_interpolate_att.py +++ b/pyspedas/erg/satellite/erg/common/cotrans/erg_interpolate_att.py @@ -1,7 +1,7 @@ import numpy as np from pyspedas import tnames -from pyspedas.analysis.tcrossp import tcrossp -from pyspedas.utilities.time_string import time_string +from pytplot import tcrossp +from pytplot import time_string from pytplot import get_data, get_timespan from pytplot.tplot_math.degap import degap from scipy import interpolate diff --git a/pyspedas/erg/satellite/erg/lepe/lepe.py b/pyspedas/erg/satellite/erg/lepe/lepe.py index 778b5a2c..6bfa38e3 100644 --- a/pyspedas/erg/satellite/erg/lepe/lepe.py +++ b/pyspedas/erg/satellite/erg/lepe/lepe.py @@ -3,7 +3,8 @@ import numpy as np from pytplot import clip, get_data, options, store_data, ylim, zlim -from pyspedas.utilities.time_double import time_double +from pytplot import time_double + from ..load import load diff --git a/pyspedas/erg/satellite/erg/load.py b/pyspedas/erg/satellite/erg/load.py index 7f5c884f..1c95b7df 100644 --- a/pyspedas/erg/satellite/erg/load.py +++ b/pyspedas/erg/satellite/erg/load.py @@ -1,6 +1,6 @@ import cdflib -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download from pytplot import cdf_to_tplot diff --git a/pyspedas/erg/satellite/erg/particle/erg_hep_get_dist.py b/pyspedas/erg/satellite/erg/particle/erg_hep_get_dist.py index cfc87bf1..89ca0feb 100644 --- a/pyspedas/erg/satellite/erg/particle/erg_hep_get_dist.py +++ b/pyspedas/erg/satellite/erg/particle/erg_hep_get_dist.py @@ -6,8 +6,8 @@ from copy import deepcopy from scipy.spatial import KDTree from pyspedas import tnames -from pyspedas.utilities.time_double import time_double -from pyspedas.utilities.time_string import time_string +from pytplot import time_double +from pytplot import time_string from pytplot import get_data from scipy import interpolate diff --git a/pyspedas/erg/satellite/erg/particle/erg_hep_part_products.py b/pyspedas/erg/satellite/erg/particle/erg_hep_part_products.py index 3b5bf6a5..aff1a659 100644 --- a/pyspedas/erg/satellite/erg/particle/erg_hep_part_products.py +++ b/pyspedas/erg/satellite/erg/particle/erg_hep_part_products.py @@ -3,9 +3,8 @@ from copy import deepcopy from pyspedas import tnames, tinterpol, tcopy -from pyspedas.utilities.time_double import time_double -from pyspedas.utilities.time_string import time_string - +from pytplot import time_double +from pytplot import time_string from pyspedas.particles.moments.spd_pgs_moments import spd_pgs_moments from pyspedas.particles.spd_part_products.spd_pgs_regrid import spd_pgs_regrid from pytplot import get_timespan, get_data, store_data diff --git a/pyspedas/erg/satellite/erg/particle/erg_lep_part_products.py b/pyspedas/erg/satellite/erg/particle/erg_lep_part_products.py index 641925bf..d44d62bd 100644 --- a/pyspedas/erg/satellite/erg/particle/erg_lep_part_products.py +++ b/pyspedas/erg/satellite/erg/particle/erg_lep_part_products.py @@ -3,8 +3,8 @@ from copy import deepcopy from pyspedas import tnames, tinterpol, tcopy -from pyspedas.utilities.time_double import time_double -from pyspedas.utilities.time_string import time_string +from pytplot import time_double +from pytplot import time_string from pyspedas.particles.moments.spd_pgs_moments import spd_pgs_moments from pyspedas.particles.spd_part_products.spd_pgs_regrid import spd_pgs_regrid diff --git a/pyspedas/erg/satellite/erg/particle/erg_lepe_get_dist.py b/pyspedas/erg/satellite/erg/particle/erg_lepe_get_dist.py index 0a2a1faa..7edf5aa2 100644 --- a/pyspedas/erg/satellite/erg/particle/erg_lepe_get_dist.py +++ b/pyspedas/erg/satellite/erg/particle/erg_lepe_get_dist.py @@ -6,8 +6,8 @@ from copy import deepcopy from scipy.spatial import KDTree from pyspedas import tnames -from pyspedas.utilities.time_double import time_double -from pyspedas.utilities.time_string import time_string +from pytplot import time_double +from pytplot import time_string from pytplot import get_data from scipy import interpolate diff --git a/pyspedas/erg/satellite/erg/particle/erg_lepi_get_dist.py b/pyspedas/erg/satellite/erg/particle/erg_lepi_get_dist.py index cd64081c..ecf7043e 100644 --- a/pyspedas/erg/satellite/erg/particle/erg_lepi_get_dist.py +++ b/pyspedas/erg/satellite/erg/particle/erg_lepi_get_dist.py @@ -3,8 +3,8 @@ import numpy as np from pyspedas import tnames -from pyspedas.utilities.time_double import time_double -from pyspedas.utilities.time_string import time_string +from pytplot import time_double +from pytplot import time_string from pytplot import get_data from scipy import interpolate diff --git a/pyspedas/erg/satellite/erg/particle/erg_mep_part_products.py b/pyspedas/erg/satellite/erg/particle/erg_mep_part_products.py index 1bdc68ac..cc416fba 100644 --- a/pyspedas/erg/satellite/erg/particle/erg_mep_part_products.py +++ b/pyspedas/erg/satellite/erg/particle/erg_mep_part_products.py @@ -3,8 +3,8 @@ from copy import deepcopy from pyspedas import tnames, tinterpol -from pyspedas.utilities.time_double import time_double -from pyspedas.utilities.time_string import time_string +from pytplot import time_double +from pytplot import time_string from pyspedas.particles.moments.spd_pgs_moments import spd_pgs_moments from pyspedas.particles.spd_part_products.spd_pgs_regrid import spd_pgs_regrid diff --git a/pyspedas/erg/satellite/erg/particle/erg_mepe_get_dist.py b/pyspedas/erg/satellite/erg/particle/erg_mepe_get_dist.py index a19e3557..be329f9c 100644 --- a/pyspedas/erg/satellite/erg/particle/erg_mepe_get_dist.py +++ b/pyspedas/erg/satellite/erg/particle/erg_mepe_get_dist.py @@ -3,8 +3,8 @@ import numpy as np from pyspedas import tnames -from pyspedas.utilities.time_double import time_double -from pyspedas.utilities.time_string import time_string +from pytplot import time_double +from pytplot import time_string from pytplot import get_data from scipy import interpolate diff --git a/pyspedas/erg/satellite/erg/particle/erg_mepi_get_dist.py b/pyspedas/erg/satellite/erg/particle/erg_mepi_get_dist.py index 501a3edc..91065726 100644 --- a/pyspedas/erg/satellite/erg/particle/erg_mepi_get_dist.py +++ b/pyspedas/erg/satellite/erg/particle/erg_mepi_get_dist.py @@ -3,8 +3,8 @@ import numpy as np from pyspedas import tnames -from pyspedas.utilities.time_double import time_double -from pyspedas.utilities.time_string import time_string +from pytplot import time_double +from pytplot import time_string from pytplot import get_data from scipy import interpolate diff --git a/pyspedas/erg/satellite/erg/particle/erg_pgs_make_fac.py b/pyspedas/erg/satellite/erg/particle/erg_pgs_make_fac.py index 268a8822..75ece49b 100644 --- a/pyspedas/erg/satellite/erg/particle/erg_pgs_make_fac.py +++ b/pyspedas/erg/satellite/erg/particle/erg_pgs_make_fac.py @@ -4,8 +4,8 @@ from pytplot import get_data, store_data from pyspedas.cotrans.cotrans import cotrans -from pyspedas.analysis.tnormalize import tnormalize -from pyspedas.analysis.tcrossp import tcrossp +from pytplot import tnormalize +from pytplot import tcrossp from pyspedas.analysis.tinterpol import tinterpol from ..common.cotrans.erg_cotrans import erg_cotrans diff --git a/pyspedas/erg/satellite/erg/particle/erg_xep_get_dist.py b/pyspedas/erg/satellite/erg/particle/erg_xep_get_dist.py index 491424ba..9b110689 100644 --- a/pyspedas/erg/satellite/erg/particle/erg_xep_get_dist.py +++ b/pyspedas/erg/satellite/erg/particle/erg_xep_get_dist.py @@ -4,8 +4,8 @@ import numpy as np from copy import deepcopy from pyspedas import tnames -from pyspedas.utilities.time_double import time_double -from pyspedas.utilities.time_string import time_string +from pytplot import time_double +from pytplot import time_string from pytplot import get_data from scipy import interpolate diff --git a/pyspedas/erg/satellite/erg/particle/erg_xep_part_products.py b/pyspedas/erg/satellite/erg/particle/erg_xep_part_products.py index aec1ce2e..1d39281c 100644 --- a/pyspedas/erg/satellite/erg/particle/erg_xep_part_products.py +++ b/pyspedas/erg/satellite/erg/particle/erg_xep_part_products.py @@ -3,8 +3,8 @@ from copy import deepcopy from pyspedas import tnames, tinterpol -from pyspedas.utilities.time_double import time_double -from pyspedas.utilities.time_string import time_string +from pytplot import time_double +from pytplot import time_string from pyspedas.particles.moments.spd_pgs_moments import spd_pgs_moments from pyspedas.particles.spd_part_products.spd_pgs_regrid import spd_pgs_regrid diff --git a/pyspedas/erg/satellite/erg/pwe/pwe_efd.py b/pyspedas/erg/satellite/erg/pwe/pwe_efd.py index 11b5df9e..de4fb676 100644 --- a/pyspedas/erg/satellite/erg/pwe/pwe_efd.py +++ b/pyspedas/erg/satellite/erg/pwe/pwe_efd.py @@ -1,7 +1,7 @@ import cdflib import numpy as np from pyspedas import tnames -from pyspedas.utilities.time_double import time_float +from pytplot import time_float from pytplot import get_data, options, store_data, ylim, zlim from ..load import load diff --git a/pyspedas/erg/satellite/erg/pwe/pwe_wfc.py b/pyspedas/erg/satellite/erg/pwe/pwe_wfc.py index de99b8ec..720abb8e 100644 --- a/pyspedas/erg/satellite/erg/pwe/pwe_wfc.py +++ b/pyspedas/erg/satellite/erg/pwe/pwe_wfc.py @@ -1,7 +1,7 @@ import cdflib import numpy as np from pyspedas import tnames -from pyspedas.utilities.time_double import time_float +from pytplot import time_float from pytplot import clip, get_data, options, store_data, ylim, zlim from ..load import load diff --git a/pyspedas/erg/tests/tests.py b/pyspedas/erg/tests/tests.py index 80c70ad9..4cb3d5f6 100644 --- a/pyspedas/erg/tests/tests.py +++ b/pyspedas/erg/tests/tests.py @@ -1,7 +1,7 @@ import os import unittest -from pyspedas.utilities.data_exists import data_exists +from pytplot import data_exists import pyspedas diff --git a/pyspedas/fast/__init__.py b/pyspedas/fast/__init__.py index 281e908a..b2c1a4c8 100644 --- a/pyspedas/fast/__init__.py +++ b/pyspedas/fast/__init__.py @@ -1,5 +1,6 @@ - from .load import load +from pyspedas.utilities.datasets import find_datasets + def dcb(trange=['2001-09-05', '2001-09-06'], datatype='', @@ -244,3 +245,7 @@ def teams(trange=['1998-09-05', '1998-09-06'], """ return load(instrument='teams', trange=trange, level=level, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + +def datasets(instrument=None, label=True): + return find_datasets(mission='FAST', instrument=instrument, label=label) diff --git a/pyspedas/fast/load.py b/pyspedas/fast/load.py index fae18738..3c0adc64 100644 --- a/pyspedas/fast/load.py +++ b/pyspedas/fast/load.py @@ -1,6 +1,6 @@ from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import cdf_to_tplot from .config import CONFIG diff --git a/pyspedas/fast/tests/tests.py b/pyspedas/fast/tests/tests.py index 074c1d33..67c4aaf6 100644 --- a/pyspedas/fast/tests/tests.py +++ b/pyspedas/fast/tests/tests.py @@ -1,10 +1,9 @@ - import os import unittest -from pyspedas.utilities.data_exists import data_exists - +from pytplot import data_exists import pyspedas + class LoadTestCases(unittest.TestCase): def test_downloadonly(self): files = pyspedas.fast.acb(trange=['1999-09-22', '1999-09-23'], time_clip=True, level='k0', downloadonly=True) @@ -15,16 +14,16 @@ def test_load_dcb_data(self): self.assertTrue(data_exists('BX')) self.assertTrue(data_exists('BY')) self.assertTrue(data_exists('BZ')) + dcb_vars = pyspedas.fast.dcb(trange=['1998-09-22', '1998-09-23'], level='l2') def test_load_acb_data(self): dcb_vars = pyspedas.fast.acb(trange=['1999-09-22', '1999-09-23'], time_clip=True, level='k0') self.assertTrue(data_exists('HF_PWR')) self.assertTrue(data_exists('HF_E_SPEC')) - # as of 8 Feb 2020, these data fail to load in IDL and Python - # def test_load_esa_data(self): - # esa_vars = pyspedas.fast.esa() - # self.assertTrue(data_exists('')) + def test_load_esa_data(self): + esa_vars = pyspedas.fast.esa(notplot=True, trange=['1998-09-05/02:00', '1998-09-05/02:30']) + self.assertTrue('eflux' in esa_vars) def test_load_teams_data(self): teams_vars = pyspedas.fast.teams() @@ -32,5 +31,6 @@ def test_load_teams_data(self): self.assertTrue(data_exists('O+')) self.assertTrue(data_exists('He+')) + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/geopack/get_tsy_params.py b/pyspedas/geopack/get_tsy_params.py index ffa623cc..baf406d8 100644 --- a/pyspedas/geopack/get_tsy_params.py +++ b/pyspedas/geopack/get_tsy_params.py @@ -1,10 +1,19 @@ - +import logging import numpy as np from pyspedas import tinterpol, tdeflag from pyspedas.geopack.get_w_params import get_w from pytplot import get_data, store_data -def get_tsy_params(dst_tvar, imf_tvar, Np_tvar, Vp_tvar, model, pressure_tvar=None, newname=None, speed=False, g_variables=None): + +def get_tsy_params(dst_tvar, + imf_tvar, + Np_tvar, + Vp_tvar, + model, + pressure_tvar=None, + newname=None, + speed=False, + g_variables=None): """ This procedure will interpolate inputs, generate Tsyganenko model parameters and store them in a tplot @@ -63,7 +72,7 @@ def get_tsy_params(dst_tvar, imf_tvar, Np_tvar, Vp_tvar, model, pressure_tvar=No model = model.lower() if model not in ['t89', 't96', 't01', 'ts04']: - print('Unknown model: ' + model) + logging.error('Unknown model: ' + model) return tdeflag(Np_tvar, method='remove_nan', overwrite=True) @@ -100,14 +109,14 @@ def get_tsy_params(dst_tvar, imf_tvar, Np_tvar, Vp_tvar, model, pressure_tvar=No np.zeros(len(dst_data.y)))) elif model == 't01': if g_variables is None: - print('G variables required for T01 model; create a tplot variable containing the G variables, and provide the name of that keyword to the g_variables keyword.') + logging.error('G variables required for T01 model; create a tplot variable containing the G variables, and provide the name of that keyword to the g_variables keyword.') return else: if isinstance(g_variables, str): g_data = get_data(g_variables) if g_data is None: - print('Problem reading G variable: ' + g_variables) + logging.error('Problem reading G variable: ' + g_variables) return g1 = g_data.y[:, 0] @@ -140,7 +149,7 @@ def get_tsy_params(dst_tvar, imf_tvar, Np_tvar, Vp_tvar, model, pressure_tvar=No w_data = get_data(params+'_interp') if w_data is None: - print('Problem loading W variables for TS04 model.') + logging.error('Problem loading W variables for TS04 model.') return out = np.array((P_data.y, @@ -153,9 +162,6 @@ def get_tsy_params(dst_tvar, imf_tvar, Np_tvar, Vp_tvar, model, pressure_tvar=No w_data.y[:, 3], w_data.y[:, 4], w_data.y[:, 5])) - elif model == 't01': - print('not implemented yet') - return if newname is None: newname = model + '_par' @@ -164,5 +170,3 @@ def get_tsy_params(dst_tvar, imf_tvar, Np_tvar, Vp_tvar, model, pressure_tvar=No if saved: return newname - - diff --git a/pyspedas/geopack/get_w_params.py b/pyspedas/geopack/get_w_params.py index 1bbb4476..13dd3a88 100644 --- a/pyspedas/geopack/get_w_params.py +++ b/pyspedas/geopack/get_w_params.py @@ -1,4 +1,5 @@ - +import logging +import warnings import numpy as np import pandas as pd import zipfile @@ -8,6 +9,7 @@ from pyspedas.utilities.download import download from pytplot import store_data + def get_w(trange=None, create_tvar=False, newname=None): """ This routine downloads the 6 Tsygeneko (TS05) model @@ -17,7 +19,7 @@ def get_w(trange=None, create_tvar=False, newname=None): """ if trange is None: - print('trange keyword must be specified.') + logging.error('trange keyword must be specified.') return years = dailynames(trange=trange, file_format='%Y') @@ -35,9 +37,16 @@ def get_w(trange=None, create_tvar=False, newname=None): w6_out = np.empty(0) for year in years: - file = download(remote_path='http://geo.phys.spbu.ru/~tsyganenko/TS05_data_and_stuff/', - remote_file=year+'_OMNI_5m_with_TS05_variables.???', - local_path=tmpdir) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + file = download(remote_path='https://geo.phys.spbu.ru/~tsyganenko/TS05_data_and_stuff/', + remote_file=year+'_OMNI_5m_with_TS05_variables.???', + local_path=tmpdir, + verify=False) + + if len(file) == 0: + logging.error('No files found for ' + year) + continue if file[0][-3:] == 'zip': with zipfile.ZipFile(file[0], 'r') as zip_ref: @@ -72,7 +81,7 @@ def get_w(trange=None, create_tvar=False, newname=None): in_range = np.argwhere((ut_out >= time_double(trange[0])) & (ut_out < time_double(trange[1]))).squeeze() if len(in_range) == 0: - print('No data found in the trange.') + logging.error('No data found in the trange.') return if create_tvar: @@ -86,4 +95,4 @@ def get_w(trange=None, create_tvar=False, newname=None): 'w3': w3_out[in_range], 'w4': w4_out[in_range], 'w5': w5_out[in_range], - 'w6': w6_out[in_range]} \ No newline at end of file + 'w6': w6_out[in_range]} diff --git a/pyspedas/geopack/t01.py b/pyspedas/geopack/t01.py index 0ba2ab5e..15ca0919 100644 --- a/pyspedas/geopack/t01.py +++ b/pyspedas/geopack/t01.py @@ -1,8 +1,9 @@ - +import logging import numpy as np from pytplot import get_data, store_data from geopack import geopack, t01 + def tt01(pos_var_gsm, parmod=None, suffix=''): """ tplot wrapper for the functional interface to Sheng Tian's implementation of the Tsyganenko 2001 and IGRF model: @@ -35,7 +36,7 @@ def tt01(pos_var_gsm, parmod=None, suffix=''): pos_data = get_data(pos_var_gsm) if pos_data is None: - print('Variable not found: ' + pos_var_gsm) + logging.error('Variable not found: ' + pos_var_gsm) return b0gsm = np.zeros((len(pos_data.times), 3)) @@ -50,7 +51,7 @@ def tt01(pos_var_gsm, parmod=None, suffix=''): if par is not None: par = par.y else: - print('parmod keyword required.') + logging.error('parmod keyword required.') return for idx, time in enumerate(pos_data.times): @@ -67,4 +68,4 @@ def tt01(pos_var_gsm, parmod=None, suffix=''): saved = store_data(pos_var_gsm + '_bt01' + suffix, data={'x': pos_data.times, 'y': bgsm}) if saved: - return pos_var_gsm + '_bt01' + suffix \ No newline at end of file + return pos_var_gsm + '_bt01' + suffix diff --git a/pyspedas/geopack/t89.py b/pyspedas/geopack/t89.py index 516f6588..cc5a072c 100644 --- a/pyspedas/geopack/t89.py +++ b/pyspedas/geopack/t89.py @@ -1,8 +1,9 @@ - +import logging import numpy as np from pytplot import get_data, store_data from geopack import geopack, t89 + def tt89(pos_var_gsm, iopt=3, suffix='', igrf_only=False): """ tplot wrapper for the functional interface to Sheng Tian's implementation @@ -33,7 +34,7 @@ def tt89(pos_var_gsm, iopt=3, suffix='', igrf_only=False): pos_data = get_data(pos_var_gsm) if pos_data is None: - print('Variable not found: ' + pos_var_gsm) + logging.error('Variable not found: ' + pos_var_gsm) return b0gsm = np.zeros((len(pos_data.times), 3)) @@ -59,4 +60,4 @@ def tt89(pos_var_gsm, iopt=3, suffix='', igrf_only=False): saved = store_data(pos_var_gsm + '_bt89' + suffix, data={'x': pos_data.times, 'y': bgsm}) if saved: - return pos_var_gsm + '_bt89' + suffix \ No newline at end of file + return pos_var_gsm + '_bt89' + suffix diff --git a/pyspedas/geopack/t96.py b/pyspedas/geopack/t96.py index 23ca3605..517fda72 100644 --- a/pyspedas/geopack/t96.py +++ b/pyspedas/geopack/t96.py @@ -1,8 +1,9 @@ - +import logging import numpy as np from pytplot import get_data, store_data from geopack import geopack, t96 + def tt96(pos_var_gsm, parmod=None, suffix=''): """ tplot wrapper for the functional interface to Sheng Tian's implementation of the Tsyganenko 96 and IGRF model: @@ -33,7 +34,7 @@ def tt96(pos_var_gsm, parmod=None, suffix=''): pos_data = get_data(pos_var_gsm) if pos_data is None: - print('Variable not found: ' + pos_var_gsm) + logging.error('Variable not found: ' + pos_var_gsm) return b0gsm = np.zeros((len(pos_data.times), 3)) @@ -48,7 +49,7 @@ def tt96(pos_var_gsm, parmod=None, suffix=''): if par is not None: par = par.y else: - print('parmod keyword required.') + logging.error('parmod keyword required.') return for idx, time in enumerate(pos_data.times): @@ -65,4 +66,4 @@ def tt96(pos_var_gsm, parmod=None, suffix=''): saved = store_data(pos_var_gsm + '_bt96' + suffix, data={'x': pos_data.times, 'y': bgsm}) if saved: - return pos_var_gsm + '_bt96' + suffix \ No newline at end of file + return pos_var_gsm + '_bt96' + suffix diff --git a/pyspedas/geopack/tests/tests.py b/pyspedas/geopack/tests/tests.py index 9fbeb7fa..06509443 100644 --- a/pyspedas/geopack/tests/tests.py +++ b/pyspedas/geopack/tests/tests.py @@ -1,7 +1,8 @@ - -import os import unittest -from pyspedas.utilities.data_exists import data_exists + +import numpy as np + +from pytplot import data_exists import pyspedas from pyspedas import time_double from pyspedas.geopack import tt89 @@ -9,25 +10,35 @@ from pyspedas.geopack import tt01 from pyspedas.geopack import tts04 from pyspedas.geopack.get_tsy_params import get_tsy_params +from pyspedas.geopack.get_w_params import get_w from pyspedas import tinterpol -from pytplot import join_vec +from pytplot import join_vec, store_data, get_data trange = ['2015-10-16', '2015-10-17'] -def get_params(model): + +def get_params(model, g_variables=None): support_trange = [time_double(trange[0])-60*60*24, time_double(trange[1])+60*60*24] pyspedas.kyoto.dst(trange=support_trange) pyspedas.omni.data(trange=trange) join_vec(['BX_GSE', 'BY_GSM', 'BZ_GSM']) - return get_tsy_params('kyoto_dst', - 'BX_GSE-BY_GSM-BZ_GSM_joined', - 'proton_density', - 'flow_speed', - model, + if model == 't01' and g_variables is None: + g_variables = [6.0, 10.0] + else: + if g_variables is not None: + if not isinstance(g_variables, str) and not isinstance(g_variables, np.ndarray): + g_variables = None + return get_tsy_params('kyoto_dst', + 'BX_GSE-BY_GSM-BZ_GSM_joined', + 'proton_density', + 'flow_speed', + model, pressure_tvar='Pressure', + g_variables=g_variables, speed=True) + class LoadTestCases(unittest.TestCase): def test_igrf(self): mec_vars = pyspedas.mms.mec(trange=trange) @@ -52,6 +63,17 @@ def test_tt01(self): tinterpol('mms1_mec_r_gsm', 'proton_density') tt01('mms1_mec_r_gsm-itrp', parmod=params) self.assertTrue(data_exists('mms1_mec_r_gsm-itrp_bt01')) + mec = get_data('mms1_mec_r_gsm-itrp') + gvars = np.zeros((len(mec.times), 2)) + gvars[:, 0] = np.repeat(6.0, len(mec.times)) + gvars[:, 1] = np.repeat(10.0, len(mec.times)) + store_data('g_variables', data={'x': mec.times, 'y': gvars}) + params = get_params('t01', g_variables='g_variables') + tt01('mms1_mec_r_gsm-itrp', parmod=params) + self.assertTrue(data_exists('mms1_mec_r_gsm-itrp_bt01')) + params = get_params('t01', g_variables=gvars) + tt01('mms1_mec_r_gsm-itrp', parmod=params) + self.assertTrue(data_exists('mms1_mec_r_gsm-itrp_bt01')) def test_tts04(self): mec_vars = pyspedas.mms.mec(trange=trange) @@ -60,5 +82,27 @@ def test_tts04(self): tts04('mms1_mec_r_gsm-itrp', parmod=params) self.assertTrue(data_exists('mms1_mec_r_gsm-itrp_bts04')) + def test_get_w(self): + w_vals = get_w(trange=['2015-10-16', '2015-10-17']) + + def test_errors(self): + # exercise some of the error code + mec_vars = pyspedas.mms.mec(trange=trange) + params = get_params('ts04') + tinterpol('mms1_mec_r_gsm', 'proton_density') + tts04('var_doesnt_exist') + tts04('mms1_mec_r_gsm-itrp', parmod=None) + tt01('var_doesnt_exist') + tt01('mms1_mec_r_gsm-itrp', parmod=None) + tt96('var_doesnt_exist') + tt96('mms1_mec_r_gsm-itrp', parmod=None) + tt89('var_doesnt_exist') + invalidmodel = get_params('89') + invalidg = get_params('t01', g_variables=1) + invalidg = get_params('t01', g_variables='g_vars') + notrange = get_w() # no trange + invalidtrange = get_w(trange=['2050-01-01', '2050-01-02']) + + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/geopack/ts04.py b/pyspedas/geopack/ts04.py index 87f34e0c..daa5f7e6 100644 --- a/pyspedas/geopack/ts04.py +++ b/pyspedas/geopack/ts04.py @@ -1,8 +1,9 @@ - +import logging import numpy as np from pytplot import get_data, store_data from geopack import geopack, t04 + def tts04(pos_var_gsm, parmod=None, suffix=''): """ tplot wrapper for the functional interface to Sheng Tian's implementation of the @@ -36,7 +37,7 @@ def tts04(pos_var_gsm, parmod=None, suffix=''): pos_data = get_data(pos_var_gsm) if pos_data is None: - print('Variable not found: ' + pos_var_gsm) + logging.error('Variable not found: ' + pos_var_gsm) return b0gsm = np.zeros((len(pos_data.times), 3)) @@ -51,7 +52,7 @@ def tts04(pos_var_gsm, parmod=None, suffix=''): if par is not None: par = par.y else: - print('parmod keyword required.') + logging.error('parmod keyword required.') return for idx, time in enumerate(pos_data.times): @@ -72,4 +73,4 @@ def tts04(pos_var_gsm, parmod=None, suffix=''): saved = store_data(pos_var_gsm + '_bts04' + suffix, data={'x': pos_data.times, 'y': bgsm}) if saved: - return pos_var_gsm + '_bts04' + suffix \ No newline at end of file + return pos_var_gsm + '_bts04' + suffix diff --git a/pyspedas/geotail/__init__.py b/pyspedas/geotail/__init__.py index aa496f8e..e5b4edae 100644 --- a/pyspedas/geotail/__init__.py +++ b/pyspedas/geotail/__init__.py @@ -1,6 +1,7 @@ - from .load import load from pytplot import options +from pyspedas.utilities.datasets import find_datasets + def mgf(trange=['2018-11-5', '2018-11-6'], datatype='k0', @@ -373,3 +374,7 @@ def pwi(trange=['2018-11-5', '2018-11-6'], """ return load(instrument='pwi', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + +def datasets(instrument=None, label=True): + return find_datasets(mission='Geotail', instrument=instrument, label=label) diff --git a/pyspedas/geotail/load.py b/pyspedas/geotail/load.py index f27b097b..18926c11 100644 --- a/pyspedas/geotail/load.py +++ b/pyspedas/geotail/load.py @@ -1,6 +1,6 @@ from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import cdf_to_tplot from .config import CONFIG diff --git a/pyspedas/geotail/tests/tests.py b/pyspedas/geotail/tests/tests.py index 5d8d9300..c75683aa 100644 --- a/pyspedas/geotail/tests/tests.py +++ b/pyspedas/geotail/tests/tests.py @@ -1,7 +1,7 @@ import os import unittest -from pyspedas.utilities.data_exists import data_exists +from pytplot import data_exists import pyspedas @@ -32,6 +32,8 @@ def test_load_cpi_data(self): def test_load_epic_data(self): epic_vars = pyspedas.geotail.epic() self.assertTrue(data_exists('IDiffI_I')) + epic_vars = pyspedas.geotail.epic(notplot=True) + self.assertTrue('IDiffI_I' in epic_vars) def test_load_pwi_data(self): pwi_vars = pyspedas.geotail.pwi() diff --git a/pyspedas/goes/__init__.py b/pyspedas/goes/__init__.py index 25b6b526..08850a56 100644 --- a/pyspedas/goes/__init__.py +++ b/pyspedas/goes/__init__.py @@ -1,21 +1,81 @@ +from .load import load, loadr +from .load_orbit import load_orbit + + +def orbit(trange=['2013-11-5', '2013-11-6'], + probe='15', + prefix='', + suffix='', + downloadonly=False, + no_update=False, + notplot=False, + get_support_data=False, + varformat=None, + varnames=[], + time_clip=True): + """ + + This function loads GOES orbit data (probes 8-18) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + probe: str/int or list of strs/ints + GOES spacecraft #, e.g., probe=15 + + prefix: str + The tplot variable names will be given this prefix. + By default, no prefix is added. + If 'probename' then the name will be used, for example g16. + + suffix: str + The tplot variable names will be given this suffix. + By default, no suffix is added. + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + If set, load the data into dictionaries containing the numpy objects instead + of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. Or list of filenames downloaded. + + """ + return load_orbit(trange=trange, probe=probe, varnames=varnames, varformat=varformat, + prefix=prefix, suffix=suffix, downloadonly=downloadonly, + no_update=no_update, time_clip=time_clip, notplot=notplot, get_support_data=get_support_data) -from .load import load -def fgm(trange=['2013-11-5', '2013-11-6'], +def fgm(trange=['2013-11-5', '2013-11-6'], probe='15', - datatype='1min', - suffix='', + datatype='1min', + prefix='', + suffix='', downloadonly=False, no_update=False, time_clip=False): """ - This function loads data from the GOES Magnetometer - + This function loads data from the GOES Magnetometer (probes 8-15) + Parameters ---------- trange : list of str - time range of interest [starttime, endtime] with the format - 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] probe: str/int or list of strs/ints @@ -24,12 +84,17 @@ def fgm(trange=['2013-11-5', '2013-11-6'], datatype: str Data type; Valid options: + prefix: str + The tplot variable names will be given this prefix. + By default, no prefix is added. + If 'probename' then the name will be used, for example g16. + suffix: str - The tplot variable names will be given this suffix. By default, - no suffix is added. + The tplot variable names will be given this suffix. + By default, no suffix is added. downloadonly: bool - Set this flag to download the CDF files, but not load them into + Set this flag to download the CDF files, but not load them into tplot variables no_update: bool @@ -40,26 +105,29 @@ def fgm(trange=['2013-11-5', '2013-11-6'], Returns ---------- - List of tplot variables created. + List of tplot variables created. Or list of filenames downloaded. """ - return load(instrument='fgm', trange=trange, probe=probe, datatype=datatype, suffix=suffix, downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) + return load(instrument='fgm', trange=trange, probe=probe, datatype=datatype, prefix=prefix, suffix=suffix, downloadonly=downloadonly, + time_clip=time_clip, no_update=no_update) + -def eps(trange=['2013-11-5', '2013-11-6'], +def eps(trange=['2013-11-5', '2013-11-6'], probe='12', - datatype='1min', - suffix='', + datatype='1min', + prefix='', + suffix='', downloadonly=False, no_update=False, time_clip=False): """ - This function loads data from the GOES energetic particle sensor - + This function loads data from the GOES energetic particle sensor (probes 8-15) + Parameters ---------- trange : list of str - time range of interest [starttime, endtime] with the format - 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] probe: str/int or list of strs/ints @@ -68,12 +136,17 @@ def eps(trange=['2013-11-5', '2013-11-6'], datatype: str Data type; Valid options: + prefix: str + The tplot variable names will be given this prefix. + By default, no prefix is added. + If 'probename' then the name will be used, for example g16. + suffix: str - The tplot variable names will be given this suffix. By default, - no suffix is added. + The tplot variable names will be given this suffix. + By default, no suffix is added. downloadonly: bool - Set this flag to download the CDF files, but not load them into + Set this flag to download the CDF files, but not load them into tplot variables no_update: bool @@ -84,26 +157,29 @@ def eps(trange=['2013-11-5', '2013-11-6'], Returns ---------- - List of tplot variables created. + List of tplot variables created. Or list of filenames downloaded. """ - return load(instrument='eps', trange=trange, probe=probe, datatype=datatype, suffix=suffix, downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) - -def epead(trange=['2013-11-5', '2013-11-6'], - probe='15', - datatype='1min', - suffix='', - downloadonly=False, - no_update=False, - time_clip=False): + return load(instrument='eps', trange=trange, probe=probe, datatype=datatype, prefix=prefix, suffix=suffix, + downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) + + +def epead(trange=['2013-11-5', '2013-11-6'], + probe='15', + datatype='1min', + prefix='', + suffix='', + downloadonly=False, + no_update=False, + time_clip=False): """ - This function loads data from the GOES Electron, Proton, Alpha Detector - + This function loads data from the GOES Electron, Proton, Alpha Detector (probes 8-15) + Parameters ---------- trange : list of str - time range of interest [starttime, endtime] with the format - 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] probe: str/int or list of strs/ints @@ -112,12 +188,17 @@ def epead(trange=['2013-11-5', '2013-11-6'], datatype: str Data type; Valid options: + prefix: str + The tplot variable names will be given this prefix. + By default, no prefix is added. + If 'probename' then the name will be used, for example g16. + suffix: str - The tplot variable names will be given this suffix. By default, - no suffix is added. + The tplot variable names will be given this suffix. + By default, no suffix is added. downloadonly: bool - Set this flag to download the CDF files, but not load them into + Set this flag to download the CDF files, but not load them into tplot variables no_update: bool @@ -128,40 +209,48 @@ def epead(trange=['2013-11-5', '2013-11-6'], Returns ---------- - List of tplot variables created. + List of tplot variables created. Or list of filenames downloaded. """ - return load(instrument='epead', trange=trange, probe=probe, datatype=datatype, suffix=suffix, downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) - -def maged(trange=['2013-11-5', '2013-11-6'], - probe='15', - datatype='1min', - suffix='', - downloadonly=False, - no_update=False, - time_clip=False): + return load(instrument='epead', trange=trange, probe=probe, datatype=datatype, prefix=prefix, suffix=suffix, + downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) + + +def maged(trange=['2013-11-5', '2013-11-6'], + probe='15', + datatype='1min', + prefix='', + suffix='', + downloadonly=False, + no_update=False, + time_clip=False): """ - This function loads data from the GOES Magnetospheric Electron Detector - + This function loads data from the GOES Magnetospheric Electron Detector (probes 8-15) + Parameters ---------- trange : list of str - time range of interest [starttime, endtime] with the format - 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] probe: str/int or list of strs/ints GOES spacecraft #, e.g., probe=15 datatype: str - Data type; Valid options: + Data type; Default '1min' + + prefix: str + The tplot variable names will be given this prefix. + By default, no prefix is added. + If 'probename' then the name will be used, for example g16. suffix: str - The tplot variable names will be given this suffix. By default, - no suffix is added. + The tplot variable names will be given this suffix. + By default, no suffix is added. downloadonly: bool - Set this flag to download the CDF files, but not load them into + Set this flag to download the CDF files, but not load them into tplot variables no_update: bool @@ -172,40 +261,100 @@ def maged(trange=['2013-11-5', '2013-11-6'], Returns ---------- - List of tplot variables created. + List of tplot variables created. Or list of filenames downloaded. """ - return load(instrument='maged', trange=trange, probe=probe, datatype=datatype, suffix=suffix, downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) + return load(instrument='maged', trange=trange, probe=probe, datatype=datatype, prefix=prefix, suffix=suffix, + downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) + + +def magpd(trange=['2013-11-5', '2013-11-6'], + probe='15', + datatype='1min', + prefix='', + suffix='', + downloadonly=False, + no_update=False, + time_clip=False): + """ + This function loads data from the GOES Magnetospheric Proton Detector (probes 8-15) -def magpd(trange=['2013-11-5', '2013-11-6'], - probe='15', - datatype='1min', - suffix='', - downloadonly=False, - no_update=False, - time_clip=False): + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + probe: str/int or list of strs/ints + GOES spacecraft #, e.g., probe=15 + + datatype: str + Data type; Default '1min' + + prefix: str + The tplot variable names will be given this prefix. + By default, no prefix is added. + If 'probename' then the name will be used, for example g16. + + suffix: str + The tplot variable names will be given this suffix. + By default, no suffix is added. + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. Or list of filenames downloaded. + + """ + return load(instrument='magpd', trange=trange, probe=probe, datatype=datatype, prefix=prefix, suffix=suffix, + downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) + + +def hepad(trange=['2013-11-5', '2013-11-6'], + probe='15', + datatype='1min', + prefix='', + suffix='', + downloadonly=False, + no_update=False, + time_clip=False): """ - This function loads data from the GOES Magnetospheric Proton Detector - + This function loads data from the GOES High energy Proton and Alpha Detector (probes 8-15) + Parameters ---------- trange : list of str - time range of interest [starttime, endtime] with the format - 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] probe: str/int or list of strs/ints GOES spacecraft #, e.g., probe=15 datatype: str - Data type; Valid options: + Data type; Default '1min' + + prefix: str + The tplot variable names will be given this prefix. + By default, no prefix is added. + If 'probename' then the name will be used, for example g16. suffix: str - The tplot variable names will be given this suffix. By default, - no suffix is added. + The tplot variable names will be given this suffix. + By default, no suffix is added. downloadonly: bool - Set this flag to download the CDF files, but not load them into + Set this flag to download the CDF files, but not load them into tplot variables no_update: bool @@ -216,40 +365,48 @@ def magpd(trange=['2013-11-5', '2013-11-6'], Returns ---------- - List of tplot variables created. + List of tplot variables created. Or list of filenames downloaded. """ - return load(instrument='magpd', trange=trange, probe=probe, datatype=datatype, suffix=suffix, downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) + return load(instrument='hepad', trange=trange, probe=probe, datatype=datatype, prefix=prefix, suffix=suffix, + downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) -def hepad(trange=['2013-11-5', '2013-11-6'], + +def xrs(trange=['2013-11-5', '2013-11-6'], probe='15', - datatype='1min', - suffix='', + datatype='1min', + prefix='', + suffix='', downloadonly=False, no_update=False, time_clip=False): """ - This function loads data from the GOES High energy Proton and Alpha Detector - + This function loads data from the GOES X-ray Sensor (probes 8-18) + Parameters ---------- trange : list of str - time range of interest [starttime, endtime] with the format - 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] probe: str/int or list of strs/ints GOES spacecraft #, e.g., probe=15 datatype: str - Data type; Valid options: + Data type; Default '1min' + + prefix: str + The tplot variable names will be given this prefix. + By default, no prefix is added. + If 'probename' then the name will be used, for example g16. suffix: str - The tplot variable names will be given this suffix. By default, - no suffix is added. + The tplot variable names will be given this suffix. + By default, no suffix is added. downloadonly: bool - Set this flag to download the CDF files, but not load them into + Set this flag to download the CDF files, but not load them into tplot variables no_update: bool @@ -260,40 +417,204 @@ def hepad(trange=['2013-11-5', '2013-11-6'], Returns ---------- - List of tplot variables created. + List of tplot variables created. Or list of filenames downloaded. """ - return load(instrument='hepad', trange=trange, probe=probe, datatype=datatype, suffix=suffix, downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) + return load(instrument='xrs', trange=trange, probe=probe, datatype=datatype, prefix=prefix, suffix=suffix, + downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) + + +def euvs(trange=['2023-01-30', '2023-01-31'], + probe='16', + datatype='1min', + prefix='', + suffix='', + downloadonly=False, + no_update=False, + time_clip=False): + """ + This function loads data from the GOES Extreme Ultraviolet Sensor (EUVS), (probes 16-18) -def xrs(trange=['2013-11-5', '2013-11-6'], - probe='15', - datatype='1min', - suffix='', + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + probe: str/int or list of strs/ints + GOES spacecraft #, e.g., probe=16 + + datatype: str + Data type; Default '1min' + + prefix: str + The tplot variable names will be given this prefix. + By default, no prefix is added. + If 'probename' then the name will be used, for example g16. + + suffix: str + The tplot variable names will be given this suffix. + By default, no suffix is added. + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. Or list of filenames downloaded. + + """ + return load(instrument='euvs', trange=trange, probe=probe, datatype=datatype, prefix=prefix, suffix=suffix, + downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) + + +def mag(trange=['2023-01-30', '2023-01-31'], + probe='16', + datatype='1min', + prefix='', + suffix='', downloadonly=False, no_update=False, time_clip=False): """ - This function loads data from the GOES X-ray Sensor - + This function loads data from the GOES Magnetometer, (probes 16-18) + Parameters ---------- trange : list of str - time range of interest [starttime, endtime] with the format - 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] probe: str/int or list of strs/ints - GOES spacecraft #, e.g., probe=15 + GOES spacecraft #, e.g., probe=16 datatype: str - Data type; Valid options: + Data type; Default '1min' + + prefix: str + The tplot variable names will be given this prefix. + By default, no prefix is added. + If 'probename' then the name will be used, for example g16. + + suffix: str + The tplot variable names will be given this suffix. + By default, no suffix is added. + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. Or list of filenames downloaded. + + """ + return load(instrument='mag', trange=trange, probe=probe, datatype=datatype, prefix=prefix, suffix=suffix, + downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) + + +def mpsh(trange=['2023-01-30', '2023-01-31'], + probe='16', + datatype='1min', + prefix='', + suffix='', + downloadonly=False, + no_update=False, + time_clip=False): + """ + This function loads data from the GOES Magnetospheric Particle Sensor (MPS-HI), (probes 16-18) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + probe: str/int or list of strs/ints + GOES spacecraft #, e.g., probe=16 + + datatype: str + Data type; Default '1min' + + prefix: str + The tplot variable names will be given this prefix. + By default, no prefix is added. + If 'probename' then the name will be used, for example g16. + + suffix: str + The tplot variable names will be given this suffix. + By default, no suffix is added. + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. Or list of filenames downloaded. + + """ + return load(instrument='mpsh', trange=trange, probe=probe, datatype=datatype, prefix=prefix, suffix=suffix, + downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) + + +def sgps(trange=['2023-01-30', '2023-01-31'], + probe='16', + datatype='1min', + prefix='', + suffix='', + downloadonly=False, + no_update=False, + time_clip=False): + """ + This function loads data from the GOES Solar and Galactic Proton Sensor (SGPS), (probes 16-18) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + probe: str/int or list of strs/ints + GOES spacecraft #, e.g., probe=16 + + datatype: str + Data type; Default '1min' + + prefix: str + The tplot variable names will be given this prefix. + By default, no prefix is added. + If 'probename' then the name will be used, for example g16. suffix: str - The tplot variable names will be given this suffix. By default, - no suffix is added. + The tplot variable names will be given this suffix. + By default, no suffix is added. downloadonly: bool - Set this flag to download the CDF files, but not load them into + Set this flag to download the CDF files, but not load them into tplot variables no_update: bool @@ -304,7 +625,8 @@ def xrs(trange=['2013-11-5', '2013-11-6'], Returns ---------- - List of tplot variables created. + List of tplot variables created. Or list of filenames downloaded. """ - return load(instrument='xrs', trange=trange, probe=probe, datatype=datatype, suffix=suffix, downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) + return load(instrument='sgps', trange=trange, probe=probe, datatype=datatype, prefix=prefix, suffix=suffix, + downloadonly=downloadonly, time_clip=time_clip, no_update=no_update) diff --git a/pyspedas/goes/config.py b/pyspedas/goes/config.py index d3830bf6..bb185062 100644 --- a/pyspedas/goes/config.py +++ b/pyspedas/goes/config.py @@ -1,11 +1,12 @@ import os CONFIG = {'local_data_dir': 'goes_data/', - 'remote_data_dir': 'https://satdat.ngdc.noaa.gov/sem/goes/data/'} + 'remote_data_dir': 'https://www.ncei.noaa.gov/data/goes-space-environment-monitor/access/'} # override local data directory with environment variables if os.environ.get('SPEDAS_DATA_DIR'): - CONFIG['local_data_dir'] = os.sep.join([os.environ['SPEDAS_DATA_DIR'], 'goes']) + CONFIG['local_data_dir'] = os.sep.join( + [os.environ['SPEDAS_DATA_DIR'], 'goes']) if os.environ.get('GOES_DATA_DIR'): - CONFIG['local_data_dir'] = os.environ['GOES_DATA_DIR'] \ No newline at end of file + CONFIG['local_data_dir'] = os.environ['GOES_DATA_DIR'] diff --git a/pyspedas/goes/load.py b/pyspedas/goes/load.py index cf1203fb..13dd6020 100644 --- a/pyspedas/goes/load.py +++ b/pyspedas/goes/load.py @@ -1,20 +1,242 @@ from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import netcdf_to_tplot from .config import CONFIG -def load(trange=['2013-11-5', '2013-11-6'], + +def loadr(trange=['2023-01-01', '2032-01-02'], + probe='16', + instrument='mag', + datatype='1min', + prefix='', + suffix='', + downloadonly=False, + no_update=False, + time_clip=False): + """ + This function loads GOES-R L2 data (GOES-16, GOES-17, GOES-18) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + probe: str/int or list of strs/ints + GOES spacecraft #, e.g., probe=16 + + instrument: str + name of the instrument (euvs, xrs, mag, mpsh, sgps) + + datatype: str + Data resolution, default is '1min' + Valid options: low (avg), hi (full), and various other options depending on instrument + + prefix: str + The tplot variable names will be given this prefix. + By default, no prefix is added. + If 'probename' then the name will be used, for example 'g16_'. + + suffix: str + The tplot variable names will be given this suffix. + By default, no suffix is added. + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ------- + List of tplot variables created. Or list of filenames downloaded. + + Notes + ----- + Information: https://www.ngdc.noaa.gov/stp/satellite/goes-r.html + Data: https://data.ngdc.noaa.gov/platforms/solar-space-observing-satellites/goes/ + Path: goesNN/l2/data/instrument/YYYY/MM/file.nc + Time variable: 'time', seconds since 2000-01-01 12:00:00 + + GOES-EAST (GOES-16, 2017-) + GOES-WEST (GOES-17, 2018-2022; GOES-18, 2023-) + + Instruments: euvs (hi, full, 1min, euvs-l2-avg1m_science/2021/05/sci_euvs-l2-avg1m_g16_d20210530_v1-0-3.nc) + euvs (low, avg, 1day, euvs-l2-avg1d_science/2021/06/sci_euvs-l2-avg1d_g16_d20210630_v1-0-3.nc) + xrs (hi, full, 1sec, xrsf-l2-flx1s_science/2022/08/sci_xrsf-l2-flx1s_g16_d20220830_v2-1-0.nc) + xrs (low, avg, 1min, xrsf-l2-avg1m_science/2021/06/sci_xrsf-l2-avg1m_g16_d20210630_v2-1-0.nc) + mag (hi, full, 0.1sec, magn-l2-hires/2021/06/dn_magn-l2-hires_g16_d20210629_v1-0-1.nc) + mag (low, avg, 1min, magn-l2-avg1m/2022/12/dn_magn-l2-avg1m_g16_d20221230_v2-0-2.nc) + mpsh (hi, full, 1min, mpsh-l2-avg1m/2022/12/sci_mpsh-l2-avg1m_g16_d20221230_v2-0-0.nc) + mpsh (low, avg, 5min, mpsh-l2-avg5m/2022/12/sci_mpsh-l2-avg5m_g16_d20221230_v2-0-0.nc) + sgps (hi, full, 1min, sgps-l2-avg1m/2022/12/sci_sgps-l2-avg1m_g17_d20221230_v3-0-0.nc) + sgps (low, avg, 5min, sgps-l2-avg5m/2022/12/sci_sgps-l2-avg5m_g17_d20221230_v3-0-0.nc) + + EXIS (Extreme Ultraviolet and X-ray Sensors), EUVS and XRS + EUVS: Spectral line irradiances, the Mg II index, and proxy spectra from the EXIS Extreme Ultraviolet Sensor (EUVS) + EUVS: Daily averages of spectral line irradiances, the Mg II index, and proxy spectra + XRS: 1-minute averages of XRS measurements + XRS: High cadence measurements from the EXIS X-Ray Sensor (XRS) + MAG (Magnetometer) + MAG: Full resolution magnetic field readings in different coordinate systems + MAG: Averages of 10 Hz magnetometer field readings + SEISS (Space Environment In Situ Suite): 1-min and 5-min averages for the Magnetospheric Particle Sensors (MPS-HI and MPS-LO) + and for the Solar and Galactic Proton Sensor (SGPS) + + Wrappers: + pyspedas.goes.euvs + pyspedas.goes.xrs + pyspedas.goes.mag + pyspedas.goes.mpsh + pyspedas.goes.sgps + + Example + ------- + from pyspedas.goes import load + trange = ['2023-01-01', '2023-01-02'] + load(trange=trange, probe='16', instrument='mag', datatype='1min', time_clip=True) + + """ + goes_path_dir = 'https://data.ngdc.noaa.gov/platforms/solar-space-observing-satellites/goes/' + time_var = 'time' # name of the time variable in the netcdf files + out_files = [] + tvars = [] + + if not isinstance(probe, list): + probe = [probe] + + for prb in probe: + remote_path = 'goes' + str(prb) + '/l2/data/' + + if instrument == 'euvs': + if datatype in ['full', 'hi', '1min', 'avg1m']: # high resolution 1 min + pathformat = [remote_path + 'euvs-l2-avg1m_science/%Y/%m/sci_euvs-l2-avg1m_g' + str(prb) + '_d%Y%m%d_v?-?-?.nc'] + else: # low resolution 1 day, smaller files + pathformat = [remote_path + 'euvs-l2-avg1d_science/%Y/%m/sci_euvs-l2-avg1d_g' + str(prb) + '_d%Y%m%d_v?-?-?.nc'] + elif instrument == 'xrs': + if datatype in ['full', 'hi', '1sec', 'flx1s']: # high resolution 1 sec + pathformat = [remote_path + 'xrsf-l2-flx1s_science/%Y/%m/sci_xrsf-l2-flx1s_g' + str(prb) + '_d%Y%m%d_v?-?-?.nc'] + else: # low resolution 1 min, smaller files + pathformat = [remote_path + 'xrsf-l2-avg1m_science/%Y/%m/sci_xrsf-l2-avg1m_g' + str(prb) + '_d%Y%m%d_v?-?-?.nc'] + elif instrument == 'mag': + if datatype in ['full', 'hi', '0.1sec', 'hires']: # high resolution 0.1 sec + pathformat = [remote_path + 'magn-l2-hires/%Y/%m/dn_magn-l2-hires_g' + str(prb) + '_d%Y%m%d_v?-?-?.nc'] + else: # low resolution 1 min, smaller files + pathformat = [remote_path + 'magn-l2-avg1m/%Y/%m/dn_magn-l2-avg1m_g' + str(prb) + '_d%Y%m%d_v?-?-?.nc'] + elif instrument == 'mpsh': + time_var = 'L2_SciData_TimeStamp' + if datatype in ['full', 'hi', '1min', 'avg1m', '1m']: # high resolution 1 min + pathformat = [remote_path + 'mpsh-l2-avg1m/%Y/%m/sci_mpsh-l2-avg1m_g' + str(prb) + '_d%Y%m%d_v?-?-?.nc'] + else: # low resolution 5 min, smaller files + pathformat = [remote_path + 'mpsh-l2-avg5m/%Y/%m/sci_mpsh-l2-avg5m_g' + str(prb) + '_d%Y%m%d_v?-?-?.nc'] + elif instrument == 'sgps': + if datatype in ['full', 'hi', '1min', 'avg1m', '1m']: # high resolution 1 min + pathformat = [remote_path + 'sgps-l2-avg1m/%Y/%m/sci_sgps-l2-avg1m_g' + str(prb) + '_d%Y%m%d_v?-?-?.nc'] + else: # low resolution 5 min, smaller files + pathformat = [remote_path + 'sgps-l2-avg5m/%Y/%m/sci_sgps-l2-avg5m_g' + str(prb) + '_d%Y%m%d_v?-?-?.nc'] + + # find the full remote path names using the trange + if not isinstance(pathformat, list): + pathformat = [pathformat] + + remote_names = [] + for path in pathformat: + remote_names.extend(dailynames(file_format=path, trange=trange)) + + files = download(remote_file=remote_names, remote_path=goes_path_dir, local_path=CONFIG['local_data_dir'], no_download=no_update) + + if files is not None: + for file in files: + out_files.append(file) + + tvars_local = [] + if len(files) > 0 and downloadonly is False: + if prefix == 'probename': + prefix_local = 'g' + str(prb) + '_' + else: + prefix_local = prefix + tvars_local = netcdf_to_tplot(files, prefix=prefix_local, suffix=suffix, merge=True, time=time_var) + + if len(tvars_local): + tvars.extend(tvars_local) + + if downloadonly: + out_files = sorted(out_files) + return out_files + + if time_clip: + for new_var in tvars: + tclip(new_var, trange[0], trange[1], suffix='') + + return tvars + + +def load(trange=['2013-11-05', '2013-11-06'], probe='15', instrument='fgm', - datatype='1min', - suffix='', + datatype='1min', + prefix='', + suffix='', downloadonly=False, no_update=False, time_clip=False): """ - This function loads data from the GOES mission; this function is not meant + This function loads GOES L2 data + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + probe: str/int or list of strs/ints + GOES spacecraft #, e.g., probe=15 + + instrument: str + name of the instrument + (for GOES 8-15: fgm, eps, epead, maged, magpd, hepad, xrs) + (for GOES-R 16-18: euvs, xrs, mag, mpsh, sgps) + + datatype: str + Data type; usually instrument resolution, depends on the instrument + Default is 1min + (valid for GOES 8-15: hi, low, full, avg, 1min, 5min) + (valid for GOES-R 16-18: hi, low, full, avg, and other options) + + prefix: str + The tplot variable names will be given this prefix. + By default, no prefix is added. + If 'probename' then the name will be used, for example g16. + + suffix: str + The tplot variable names will be given this suffix. + By default, no suffix is added. + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ------- + List of tplot variables created. Or list of filenames downloaded. + + Notes + ----- + This function loads data from the GOES mission; this function is not meant to be called directly; instead, see the wrappers: pyspedas.goes.fgm pyspedas.goes.eps @@ -29,115 +251,156 @@ def load(trange=['2013-11-5', '2013-11-6'], if not isinstance(probe, list): probe = [probe] - fullavgpath = ['full', 'avg'] - goes_path_dir = fullavgpath[datatype == '1min' or datatype == '5min'] + probe_r = [] # GOES-R probes + probe_s = [] # GOES probes + out_files_r = [] # GOES-R files to download + out_files = [] # GOES files to download + tvars_r = [] # GOES-R list of variables created + tvars = [] # all variables created + # Find if we need to call the GOES-R load function for some probes for prb in probe: - remote_path = goes_path_dir + '/%Y/%m/goes' + str(prb) + '/netcdf/' + if int(prb) > 15: + probe_r.append(str(prb)) + else: + probe_s.append(str(prb)) + + if len(probe_r): + tvars_r = loadr(trange=trange, + probe=probe_r, + instrument=instrument, + datatype=datatype, + prefix=prefix, + suffix=suffix, + downloadonly=downloadonly, + no_update=no_update, + time_clip=time_clip) + if downloadonly: + out_files_r = tvars_r + + # Continue with loading GOES (1-15) data + for prb in probe_s: + avg_path = 'avg/%Y/%m/goes' + str(prb) + '/netcdf/' + 'g' + str(prb) + full_path = 'full/%Y/%m/goes' + str(prb) + '/netcdf/' + 'g' + str(prb) if instrument == 'fgm': - if datatype == '512ms': # full, unaveraged data - pathformat = remote_path + 'g' + str(prb) + '_magneto_512ms_%Y%m%d_%Y%m%d.nc' - elif datatype == '1min': # 1 min averages - pathformat = remote_path + 'g' + str(prb) + '_magneto_1m_%Y%m01_%Y%m??.nc' - elif datatype == '5min': # 5 min averages - pathformat = remote_path + 'g' + str(prb) + '_magneto_5m_%Y%m01_%Y%m??.nc' + if datatype == '512ms' or datatype == 'full': # full, unaveraged data + pathformat = full_path + '_magneto_512ms_%Y%m%d_%Y%m%d.nc' + elif datatype == '5min': # 5 min averages + pathformat = avg_path + '_magneto_5m_%Y%m01_%Y%m??.nc' + else: # 1 min averages, goes13, goes15 only contain 1m averages + pathformat = avg_path + '_magneto_1m_%Y%m01_%Y%m??.nc' elif instrument == 'eps': # energetic particle sensor -- only valid for GOES-08 through GOES-12, only averaged data available - if datatype == '1min': - pathformat = remote_path + 'g' + str(prb) + '_eps_1m_%Y%m01_%Y%m??.nc' - else: - pathformat = remote_path + 'g' + str(prb) + '_eps_5m_%Y%m01_%Y%m??.nc' + if datatype == '1min' or datatype == 'full': + pathformat = avg_path + '_eps_1m_%Y%m01_%Y%m??.nc' + else: # 'low' or 5min + pathformat = avg_path + '_eps_5m_%Y%m01_%Y%m??.nc' elif instrument == 'epead': # electron, proton, alpha detector -- only valid on GOES-13, 14, 15 if datatype == '1min': - pathformat = [remote_path + 'g' + str(prb) + '_epead_e13ew_1m_%Y%m01_%Y%m??.nc', - '_epead_p17ew_1m_%Y%m01_%Y%m??.c', - '_epead_a16ew_1m_%Y%m01_%Y%m??.nc'] - elif datatype == '5min': - pathformat = [remote_path + 'g' + str(prb) + '_epead_e13ew_5m_%Y%m01_%Y%m??.nc', - '_epead_p17ew_5m_%Y%m01_%Y%m??.c', - '_epead_a16ew_5m_%Y%m01_%Y%m??.nc'] - else: - pathformat = [remote_path + 'g' + str(prb) + '_epead_e1ew_4s_%Y%m%d_%Y%m%d.nc', - '_epead_e2ew_16s_%Y%m%d_%Y%m%d.nc', - '_epead_e3ew_16s_%Y%m%d_%Y%m%d.nc', - '_epead_p1ew_8s_%Y%m%d_%Y%m%d.nc', - '_epead_p27e_32s_%Y%m%d_%Y%m%d.nc', - '_epead_p27w_32s_%Y%m%d_%Y%m%d.nc', - '_epead_a16e_32s_%Y%m%d_%Y%m%d.nc', - '_epead_a16w_32s_%Y%m%d_%Y%m%d.nc'] + pathformat = ['_epead_e13ew_1m_%Y%m01_%Y%m??.nc', + '_epead_p17ew_1m_%Y%m01_%Y%m??.c', + '_epead_a16ew_1m_%Y%m01_%Y%m??.nc'] + pathformat = [avg_path + s for s in pathformat] + elif datatype == '5min' or datatype == 'low': + pathformat = ['_epead_e13ew_5m_%Y%m01_%Y%m??.nc', + '_epead_p17ew_5m_%Y%m01_%Y%m??.c', + '_epead_a16ew_5m_%Y%m01_%Y%m??.nc'] + pathformat = [avg_path + s for s in pathformat] + else: # full + pathformat = ['_epead_a16e_32s_%Y%m%d_%Y%m%d.nc', + '_epead_a16w_32s_%Y%m%d_%Y%m%d.nc', + '_epead_e1ew_4s_%Y%m%d_%Y%m%d.nc', + '_epead_e2ew_16s_%Y%m%d_%Y%m%d.nc', + '_epead_e3ew_16s_%Y%m%d_%Y%m%d.nc', + '_epead_p1ew_8s_%Y%m%d_%Y%m%d.nc', + '_epead_p27e_32s_%Y%m%d_%Y%m%d.nc', + '_epead_p27w_32s_%Y%m%d_%Y%m%d.nc'] + pathformat = [full_path + s for s in pathformat] elif instrument == 'maged': # magnetospheric electron detector -- only valid on GOES 13, 14, 15 if datatype == '1min': - pathformat = remote_path + 'g' + str(prb) + '_maged_19me15_1m_%Y%m01_%Y%m??.nc' - elif datatype == '5min': - pathformat = remote_path + 'g' + str(prb) + '_maged_19me15_5m_%Y%m01_%Y%m??.nc' - else: - channels = ['me1','me2','me3','me4','me5'] - resolution = ['2','2','4','16','32'] + pathformat = avg_path + '_maged_19me15_1m_%Y%m01_%Y%m??.nc' + elif datatype == '5min' or datatype == 'low': + pathformat = avg_path + '_maged_19me15_5m_%Y%m01_%Y%m??.nc' + else: # full + channels = ['me1', 'me2', 'me3', 'me4', 'me5'] + resolution = ['2', '2', '4', '16', '32'] pathformat = [] for idx, channel in enumerate(channels): - pathformat.append(remote_path + 'g' + str(prb) + '_maged_19'+channel+'_'+resolution[idx]+'s_%Y%m%d_%Y%m%d.nc') + pathformat.append('_maged_19' + channel + '_' + resolution[idx] + 's_%Y%m%d_%Y%m%d.nc') + pathformat = [full_path + s for s in pathformat] elif instrument == 'magpd': # magnetospheric proton detector -- only valid on GOES 13, 14, 15 - if datatype == '1min': - pathformat = remote_path + 'g' + str(prb) + '_magpd_19mp15_1m_%Y%m01_%Y%m??.nc' - elif datatype == '5min': - pathformat = remote_path + 'g' + str(prb) + '_magpd_19mp15_5m_%Y%m01_%Y%m??.nc' - else: - channels = ['mp1','mp2','mp3','mp4','mp5'] - resolution = ['16','16','16','32','32'] + if datatype == '1min' or datatype == 'low': + pathformat = avg_path + '_magpd_19mp15_1m_%Y%m01_%Y%m??.nc' + else: # full + channels = ['mp1', 'mp2', 'mp3', 'mp4', 'mp5'] + resolution = ['16', '16', '16', '32', '32'] pathformat = [] for idx, channel in enumerate(channels): - pathformat.append(remote_path + 'g' + str(prb) + '_magpd_19'+channel+'_'+resolution[idx]+'s_%Y%m%d_%Y%m%d.nc') + pathformat.append('_magpd_19' + channel + '_'+resolution[idx] + 's_%Y%m%d_%Y%m%d.nc') + pathformat = [full_path + s for s in pathformat] elif instrument == 'hepad': # high energy proton and alpha detector -- valid for GOES 08-15 if datatype == '1min': - pathformat = [remote_path + 'g' + str(prb) + '_hepad_ap_1m_%Y%m01_%Y%m??.nc', - '_hepad_s15_1m_%Y%m01_%Y%m??.nc'] - elif datatype == '5min': - pathformat = [remote_path + 'g' + str(prb) + '_hepad_ap_5m_%Y%m01_%Y%m??.nc', - '_hepad_s15_5m_%Y%m01_%Y%m??.nc'] + pathformat = ['_hepad_ap_1m_%Y%m01_%Y%m??.nc', + '_hepad_s15_1m_%Y%m01_%Y%m??.nc'] + pathformat = [avg_path + s for s in pathformat] + elif datatype == '5min' or datatype == 'low': + pathformat = ['_hepad_ap_5m_%Y%m01_%Y%m??.nc', + '_hepad_s15_5m_%Y%m01_%Y%m??.nc'] + pathformat = [avg_path + s for s in pathformat] else: - pathformat = [remote_path + 'g' + str(prb) + '_hepad_ap_32s_%Y%m%d_%Y%m%d.nc', - '_hepad_s15_4s_%Y%m%d_%Y%m%d.nc'] + pathformat = ['_hepad_ap_32s_%Y%m%d_%Y%m%d.nc', + '_hepad_s15_4s_%Y%m%d_%Y%m%d.nc'] + pathformat = [full_path + s for s in pathformat] elif instrument == 'xrs': # x-ray sensor -- valid for GOES 08-15 if datatype == '1min': - pathformat = remote_path + 'g' + str(prb) + '_xrs_1m_%Y%m01_%Y%m??.nc' - elif datatype == '5min': - pathformat = remote_path + 'g' + str(prb) + '_xrs_5m_%Y%m01_%Y%m??.nc' + pathformat = avg_path + '_xrs_1m_%Y%m01_%Y%m??.nc' + elif datatype == '5min' or datatype == 'low': + pathformat = avg_path + '_xrs_5m_%Y%m01_%Y%m??.nc' else: - pathformat = remote_path + 'g' + str(prb) + '_xrs_2s_%Y%m%d_%Y%m%d.nc' + pathformat = ['_xrs_2s_%Y%m%d_%Y%m%d.nc', + '_xrs_3s_%Y%m%d_%Y%m%d.nc'] + pathformat = [full_path + s for s in pathformat] # find the full remote path names using the trange - if isinstance(pathformat, list): - remote_names = [] - for path in pathformat: - remote_names.extend(dailynames(file_format=path, trange=trange)) - else: - remote_names = dailynames(file_format=pathformat, trange=trange) + if not isinstance(pathformat, list): + pathformat = [pathformat] - out_files = [] + remote_names = [] + for path in pathformat: + remote_names.extend(dailynames(file_format=path, trange=trange)) files = download(remote_file=remote_names, remote_path=CONFIG['remote_data_dir'], local_path=CONFIG['local_data_dir'], no_download=no_update) if files is not None: for file in files: out_files.append(file) - out_files = sorted(out_files) + tvars_local = [] + if len(files) > 0 and downloadonly is False: + if prefix == 'probename': + prefix_local = 'g' + str(prb) + '_' + else: + prefix_local = prefix + tvars_local = netcdf_to_tplot(files, prefix=prefix_local, suffix=suffix, merge=True, time='time_tag') + + if len(tvars_local) > 0: + tvars.extend(tvars_local) if downloadonly: + out_files.extend(out_files_r) # append GOES-R filenames + out_files = sorted(out_files) return out_files - tvars = netcdf_to_tplot(out_files, suffix=suffix, merge=True, time='time_tag') - - if tvars is None: - return - if time_clip: for new_var in tvars: tclip(new_var, trange[0], trange[1], suffix='') + if len(tvars_r): + tvars.extend(tvars_r) # append GOES-R variables + return tvars diff --git a/pyspedas/goes/load_orbit.py b/pyspedas/goes/load_orbit.py new file mode 100644 index 00000000..fa8f9e68 --- /dev/null +++ b/pyspedas/goes/load_orbit.py @@ -0,0 +1,107 @@ +from pyspedas.utilities.dailynames import dailynames +from pyspedas.utilities.download import download +from pytplot import time_clip as tclip +from pytplot import cdf_to_tplot + +from .config import CONFIG + + +def load_orbit(trange=['2013-11-5', '2013-11-6'], + probe='15', + prefix='', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=True): + """ + This function loads GOES orbit data from SPDF: + + https://spdf.gsfc.nasa.gov/pub/data/goes/goes#/orbit/YYYY/ + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + probe: str/int or list of strs/ints + GOES spacecraft #, e.g., probe=15 + + prefix: str + The tplot variable names will be given this prefix. + By default, no prefix is added. + If 'probename' then the name will be used, for example g16. + + suffix: str + The tplot variable names will be given this suffix. + By default, no suffix is added. + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + If set, load the data into dictionaries containing the numpy objects instead + of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. Or list of filenames downloaded. + + """ + remote_data_dir = 'https://spdf.gsfc.nasa.gov/pub/data/goes/' + out_files = [] # list of local files downloaded + tvars = [] # list of tplot variables created + + if not isinstance(probe, list): + probe = [probe] + + for prb in probe: + + # yearly files + pathformat = 'goes' + str(prb) + '/orbit/%Y/goes' + str(prb) + '_ephemeris_ssc_%Y0101_v??.cdf' + + # find the full remote path names using the trange + remote_names = dailynames(file_format=pathformat, trange=trange) + + files = download(remote_file=remote_names, remote_path=remote_data_dir, + local_path=CONFIG['local_data_dir'], no_download=no_update) + + out_files_local = [] + + if files is not None: + for file in files: + out_files_local.append(file) + + out_files.extend(out_files_local) + + tvars_local = [] + if not downloadonly: + if prefix == 'probename': + prefix_local = 'g' + str(prb) + '_' + else: + prefix_local = prefix + + tvars_local = cdf_to_tplot(out_files_local, prefix=prefix_local, suffix=suffix, get_support_data=get_support_data, + varformat=varformat, varnames=varnames, notplot=notplot) + tvars.extend(tvars_local) + + if time_clip: + for new_var in tvars_local: + tclip(new_var, trange[0], trange[1], suffix='') + + if downloadonly: + return out_files + + return tvars diff --git a/pyspedas/goes/tests/tests.py b/pyspedas/goes/tests/tests.py index 458210bb..0b7323e1 100644 --- a/pyspedas/goes/tests/tests.py +++ b/pyspedas/goes/tests/tests.py @@ -1,26 +1,187 @@ import os import unittest -from pyspedas.utilities.data_exists import data_exists +from pytplot import data_exists import pyspedas +from pytplot import del_data + class LoadTestCases(unittest.TestCase): + def test_downloadonly(self): + del_data() mag_files = pyspedas.goes.fgm(datatype='1min', downloadonly=True) self.assertTrue(os.path.exists(mag_files[0])) + def test_load_orbit_data(self): + del_data() + orbit_vars = pyspedas.goes.orbit(downloadonly=True) + orbit_vars = pyspedas.goes.orbit(notplot=True) + orbit_vars = pyspedas.goes.orbit() + self.assertTrue(data_exists('XYZ_GSM')) + self.assertTrue(data_exists('XYZ_GSE')) + self.assertTrue(data_exists('XYZ_SM')) + self.assertTrue(data_exists('XYZ_GEO')) + def test_load_1min_mag_data(self): + del_data() mag_vars = pyspedas.goes.fgm(datatype='1min') self.assertTrue(data_exists('BX_1')) self.assertTrue(data_exists('BY_1')) self.assertTrue(data_exists('BZ_1')) - def test_load_mag_data(self): + def test_load_5min_mag_data(self): + del_data() + mag_vars = pyspedas.goes.fgm(datatype='5min', probe='10', trange=['2000-07-01', '2000-07-02'], time_clip=True) + self.assertTrue(data_exists('ht')) + + def test_load_full_mag_data(self): + del_data() mag_vars = pyspedas.goes.fgm(datatype='512ms', suffix='_512') self.assertTrue(data_exists('BX_1_512')) self.assertTrue(data_exists('BY_1_512')) self.assertTrue(data_exists('BZ_1_512')) + def test_load_1min_epead_data(self): + del_data() + epead_vars = pyspedas.goes.epead() + self.assertTrue(data_exists('E1E_UNCOR_FLUX')) + self.assertTrue(data_exists('E1W_UNCOR_FLUX')) + self.assertTrue(data_exists('E2E_UNCOR_FLUX')) + + def test_load_full_epead_data(self): + del_data() + epead_vars = pyspedas.goes.epead(datatype='1min') + self.assertTrue(data_exists('E1E_UNCOR_FLUX')) + self.assertTrue(data_exists('E1W_UNCOR_FLUX')) + self.assertTrue(data_exists('E2E_UNCOR_FLUX')) + + def test_load_5min_epead_data(self): + del_data() + epead_vars = pyspedas.goes.epead(datatype='5min') + self.assertTrue(data_exists('E1E_UNCOR_FLUX')) + self.assertTrue(data_exists('E1W_UNCOR_FLUX')) + self.assertTrue(data_exists('E2E_UNCOR_FLUX')) + + def test_load_full_maged_data(self): + del_data() + maged_vars = pyspedas.goes.maged(datatype='full') + self.assertTrue(data_exists('M_1ME1_DTC_UNCOR_CR')) + + def test_load_1min_maged_data(self): + del_data() + maged_vars = pyspedas.goes.maged(datatype='1min', time_clip=True) + self.assertTrue(data_exists('M_1ME1_DTC_UNCOR_FLUX')) + + def test_load_5min_maged_data(self): + del_data() + maged_vars = pyspedas.goes.maged(datatype='5min', time_clip=True) + self.assertTrue(data_exists('M_2ME1_DTC_COR_FLUX')) + + def test_load_full_magpd_data(self): + del_data() + magpd_vars = pyspedas.goes.magpd(datatype='full') + self.assertTrue(data_exists('M_1MP1_DTC_UNCOR_CR')) + + def test_load_1min_magpd_data(self): + del_data() + magpd_vars = pyspedas.goes.magpd(datatype='1min', time_clip=True) + self.assertTrue(data_exists('M_1MP1_DTC_UNCOR_FLUX')) + + def test_load_full_hepad_data(self): + del_data() + hepad_vars = pyspedas.goes.hepad(datatype='full') + self.assertTrue(data_exists('P10_FLUX')) + + def test_load_1min_hepad_data(self): + del_data() + hepad_vars = pyspedas.goes.hepad(prefix='probename', time_clip=True) + self.assertTrue(data_exists('g15_P10_FLUX')) + + def test_load_xrs_data(self): + del_data() + xrs_vars = pyspedas.goes.xrs(probe='10', datatype='full', trange=['2002-08-01', '2002-08-01']) + self.assertTrue(data_exists('xl')) + + def test_load_xrs_5m_data(self): + del_data() + xrs_vars = pyspedas.goes.xrs(probe='11', datatype='5min', trange=['2000-09-01', '2000-09-01'], time_clip=True) + self.assertTrue(data_exists('xl')) + + def test_load_xrs_1m_data(self): + del_data() + xrs_vars = pyspedas.goes.xrs(probe='11', datatype='1min', trange=['2000-09-01', '2000-09-01'], prefix='probename', time_clip=True) + self.assertTrue(data_exists('g11_xs')) + + def test_load_eps_1m_data(self): + del_data() + eps_vars = pyspedas.goes.eps(trange=['2000-09-01', '2000-09-01'], probe='11', time_clip=True) + self.assertTrue(data_exists('e1_flux_i')) + self.assertTrue(data_exists('e2_flux_i')) + self.assertTrue(data_exists('e3_flux_i')) + + def test_load_eps_5m_data(self): + del_data() + eps_vars = pyspedas.goes.eps(trange=['2000-09-01', '2000-09-01'], probe='11', datatype='5min', time_clip=True) + self.assertTrue(data_exists('p1_flux')) + self.assertTrue(data_exists('p2_flux')) + self.assertTrue(data_exists('p3_flux')) + self.assertTrue(data_exists('p4_flux')) + self.assertTrue(data_exists('p5_flux')) + self.assertTrue(data_exists('p6_flux')) + self.assertTrue(data_exists('p7_flux')) + + def test_load_xrs_data_16(self): + del_data() + xrs_vars_16 = pyspedas.goes.xrs(probe='16', trange=['2022-09-01', '2022-09-02']) + self.assertTrue('xrsa_flux' in xrs_vars_16) + + def test_load_xrs_data_17_hi(self): + del_data() + xrs_vars_17 = pyspedas.goes.xrs(probe='17', trange=['2022-07-01', '2022-07-02'], datatype='hi') + self.assertTrue('xrsb_flux' in xrs_vars_17) + + def test_load_euvs_data_17(self): + del_data() + euvs_vars_17 = pyspedas.goes.euvs(probe='17', trange=['2022-09-01', '2022-09-02'], prefix='probename') + self.assertTrue('g17_irr_256' in euvs_vars_17) + + def test_load_euvs_data_16_hi(self): + del_data() + euvs_vars_16 = pyspedas.goes.euvs(probe='16', trange=['2022-08-01', '2022-08-02'], prefix='probename', datatype='hi') + self.assertTrue('g16_irr_256' in euvs_vars_16) + + def test_load_mag_data_16(self): + del_data() + mag_vars_16 = pyspedas.goes.mag(probe='16', trange=['2023-01-30', '2023-01-31'], prefix='goes16_') + self.assertTrue('goes16_b_total' in mag_vars_16) + + def test_load_mag_data_17(self): + del_data() + mag_vars_17 = pyspedas.goes.mag(probe='17', trange=['2022-01-30', '2022-01-31'], prefix='goes17_', datatype='hi') + self.assertTrue('goes17_b_gse' in mag_vars_17) + + def test_load_mpsh_data_17(self): + del_data() + mpsh_vars_17 = pyspedas.goes.mpsh(probe='17', trange=['2022-09-01', '2022-09-02'], prefix='probename', time_clip=True) + self.assertTrue('g17_AvgDiffElectronFlux' in mpsh_vars_17) + + def test_load_mpsh_data_16(self): + del_data() + mpsh_vars_16 = pyspedas.goes.mpsh(probe='16', trange=['2022-10-01', '2022-10-02'], prefix='probename', datatype='hi') + self.assertTrue('g16_AvgDiffProtonFlux' in mpsh_vars_16) + + def test_load_sgps_data_16(self): + del_data() + sgps_vars_16 = pyspedas.goes.sgps(probe='16', trange=['2023-01-30', '2023-01-31'], prefix='probename') + self.assertTrue('g16_AvgDiffAlphaFlux' in sgps_vars_16) + + def test_load_sgps_data_18(self): + del_data() + sgps_vars_18 = pyspedas.goes.sgps(probe='18', trange=['2023-01-30', '2023-01-31'], prefix='probename', datatype='hi', time_clip=True) + self.assertTrue('g18_AvgIntProtonFlux' in sgps_vars_18) + + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/hapi/hapi.py b/pyspedas/hapi/hapi.py index 055807d7..1138a463 100644 --- a/pyspedas/hapi/hapi.py +++ b/pyspedas/hapi/hapi.py @@ -1,5 +1,5 @@ +import logging import warnings -from time import sleep from pyspedas import time_double from pytplot import get_data, store_data, options import numpy as np @@ -7,7 +7,8 @@ try: from hapiclient import hapi as load_hapi except ImportError: - print('hapiclient not found; install with: "pip install hapiclient"') + logging.error('hapiclient not found; install with: "pip install hapiclient"') + def hapi(trange=None, server=None, dataset=None, parameters='', suffix='', prefix='', catalog=False): @@ -44,12 +45,12 @@ def hapi(trange=None, server=None, dataset=None, parameters='', suffix='', """ if server is None: - print('Error, no server specified; example servers include:') - print('- https://cdaweb.gsfc.nasa.gov/hapi') - print('- https://pds-ppi.igpp.ucla.edu/hapi') - print('- http://planet.physics.uiowa.edu/das/das2Server/hapi') - print('- https://iswa.gsfc.nasa.gov/IswaSystemWebApp/hapi') - print('- http://lasp.colorado.edu/lisird/hapi') + logging.error('No server specified; example servers include:') + logging.error('- https://cdaweb.gsfc.nasa.gov/hapi') + logging.error('- https://pds-ppi.igpp.ucla.edu/hapi') + logging.error('- http://planet.physics.uiowa.edu/das/das2Server/hapi') + logging.error('- https://iswa.gsfc.nasa.gov/IswaSystemWebApp/hapi') + logging.error('- http://lasp.colorado.edu/lisird/hapi') return if catalog: @@ -57,20 +58,20 @@ def hapi(trange=None, server=None, dataset=None, parameters='', suffix='', items = [] if 'catalog' in catalog.keys(): items = catalog['catalog'] - print('Available datasets: ') + logging.info('Available datasets: ') for item in items: if 'title' in item.keys(): - print(item['id'] + ': ' + item['title']) + logging.info(item['id'] + ': ' + item['title']) else: - print(item['id']) + logging.info(item['id']) return if dataset is None: - print('Error, no dataset specified; please see the catalog for a list of available data sets.') + logging.error('Error, no dataset specified; please see the catalog for a list of available data sets.') return if trange is None: - print('Error, no trange specified') + logging.error('Error, no trange specified') return if isinstance(parameters, list): @@ -170,4 +171,4 @@ def hapi(trange=None, server=None, dataset=None, parameters='', suffix='', if saved: out_vars.append(prefix + param_name + suffix) - return out_vars \ No newline at end of file + return out_vars diff --git a/pyspedas/hapi/tests/__init__.py b/pyspedas/hapi/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pyspedas/hapi/tests/tests.py b/pyspedas/hapi/tests/tests.py new file mode 100644 index 00000000..277614c7 --- /dev/null +++ b/pyspedas/hapi/tests/tests.py @@ -0,0 +1,38 @@ +import unittest +from pyspedas.hapi.hapi import hapi +from pytplot import data_exists + + +class HAPITests(unittest.TestCase): + def test_print_servers(self): + hapi(trange=['2003-10-20', '2003-11-30']) + + def test_print_catalog(self): + hapi(server='https://cdaweb.gsfc.nasa.gov/hapi', catalog=True) + + def test_dataset_not_specified(self): + # dataset not specified + h_vars = hapi(trange=['2003-10-20', '2003-11-30'], + server='https://cdaweb.gsfc.nasa.gov/hapi') + + def test_trange_not_specified(self): + # trange not specified + h_vars = hapi(dataset='OMNI_HRO2_1MIN', + server='https://cdaweb.gsfc.nasa.gov/hapi') + + def test_cdaweb_mms_spec(self): + h_vars = hapi(trange=['2019-10-16', '2019-10-17'], + server='https://cdaweb.gsfc.nasa.gov/hapi', + dataset='MMS4_EDP_SRVY_L2_HFESP') + + def test_cdaweb_omni(self): + h_vars = hapi(trange=['2003-10-20', '2003-11-30'], + server='https://cdaweb.gsfc.nasa.gov/hapi', + dataset='OMNI_HRO2_1MIN') + self.assertTrue(data_exists('BX_GSE')) + self.assertTrue(data_exists('BY_GSE')) + self.assertTrue(data_exists('BZ_GSE')) + + +if __name__ == '__main__': + unittest.main() diff --git a/pyspedas/image/__init__.py b/pyspedas/image/__init__.py index 40e0c2ad..35131cac 100644 --- a/pyspedas/image/__init__.py +++ b/pyspedas/image/__init__.py @@ -1,5 +1,6 @@ - from .load import load +from pyspedas.utilities.datasets import find_datasets + def lena(trange=['2004-11-5', '2004-11-6'], datatype='k0', @@ -420,3 +421,7 @@ def orbit(trange=['2004-11-5', '2004-11-6'], """ return load(instrument='orbit', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + +def datasets(instrument=None, label=True): + return find_datasets(mission='IMAGE', instrument=instrument, label=label) diff --git a/pyspedas/image/load.py b/pyspedas/image/load.py index 91a531a8..56765342 100644 --- a/pyspedas/image/load.py +++ b/pyspedas/image/load.py @@ -1,6 +1,6 @@ from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import cdf_to_tplot from .config import CONFIG diff --git a/pyspedas/image/tests/tests.py b/pyspedas/image/tests/tests.py index eddb2e85..9c102a3c 100644 --- a/pyspedas/image/tests/tests.py +++ b/pyspedas/image/tests/tests.py @@ -1,11 +1,10 @@ - import os import unittest -from pyspedas.utilities.data_exists import data_exists - +from pytplot import data_exists import pyspedas from pytplot import del_data + class LoadTestCases(unittest.TestCase): def tearDown(self): del_data('*') @@ -14,6 +13,10 @@ def test_downloadonly(self): files = pyspedas.image.mena(downloadonly=True) self.assertTrue(os.path.exists(files[0])) + def test_load_notplot(self): + mena_vars = pyspedas.image.mena(notplot=True) + self.assertTrue('Image0' in mena_vars) + def test_load_lena_data(self): lena_vars = pyspedas.image.lena(time_clip=True) self.assertTrue(data_exists('Image0')) @@ -48,5 +51,6 @@ def test_load_preorb_data(self): self.assertTrue(data_exists('GSM_POS')) self.assertTrue(data_exists('GSM_VEL')) + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/kyoto/load_dst.py b/pyspedas/kyoto/load_dst.py index 91c89520..f9a835fc 100644 --- a/pyspedas/kyoto/load_dst.py +++ b/pyspedas/kyoto/load_dst.py @@ -1,10 +1,11 @@ - +import logging import requests from pyspedas import time_double from pyspedas import time_clip as tclip from pyspedas.utilities.dailynames import dailynames from pytplot import store_data, options + def dst(trange=None, time_clip=True, remote_data_dir='http://wdc.kugi.kyoto-u.ac.jp/', suffix=''): """ Loads Dst data from the Kyoto servers. @@ -37,14 +38,10 @@ def dst(trange=None, time_clip=True, remote_data_dir='http://wdc.kugi.kyoto-u.ac """ if trange is None: - print('trange keyword required to download data.') + logging.error('trange keyword required to download data.') return file_names = dailynames(file_format='%Y%m/index.html', trange=trange) - - if file_names is None: - print('No files found for this trange.') - return times = [] data = [] @@ -78,7 +75,7 @@ def dst(trange=None, time_clip=True, remote_data_dir='http://wdc.kugi.kyoto-u.ac datatype = 'Real Time' if len(times) == 0: - print('No data found.') + logging.error('No data found.') return store_data('kyoto_dst'+suffix, data={'x': times, 'y': data}) @@ -88,16 +85,17 @@ def dst(trange=None, time_clip=True, remote_data_dir='http://wdc.kugi.kyoto-u.ac options('kyoto_dst'+suffix, 'ytitle', 'Dst (' + datatype + ')') - print('**************************************************************************************') - print('The DST data are provided by the World Data Center for Geomagnetism, Kyoto, and') - print(' are not for redistribution (http://wdc.kugi.kyoto-u.ac.jp/). Furthermore, we thank') - print(' the geomagnetic observatories (Kakioka [JMA], Honolulu and San Juan [USGS], Hermanus') - print(' [RSA], Alibag [IIG]), NiCT, INTERMAGNET, and many others for their cooperation to') - print(' make the Dst index available.') - print('**************************************************************************************') + logging.info('**************************************************************************************') + logging.info('The DST data are provided by the World Data Center for Geomagnetism, Kyoto, and') + logging.info(' are not for redistribution (http://wdc.kugi.kyoto-u.ac.jp/). Furthermore, we thank') + logging.info(' the geomagnetic observatories (Kakioka [JMA], Honolulu and San Juan [USGS], Hermanus') + logging.info(' [RSA], Alibag [IIG]), NiCT, INTERMAGNET, and many others for their cooperation to') + logging.info(' make the Dst index available.') + logging.info('**************************************************************************************') return 'kyoto_dst'+suffix + def parse_html(html_text, year=None, month=None): times = [] data = [] diff --git a/pyspedas/kyoto/tests/tests.py b/pyspedas/kyoto/tests/tests.py index ec67f534..e6ebcff2 100644 --- a/pyspedas/kyoto/tests/tests.py +++ b/pyspedas/kyoto/tests/tests.py @@ -1,13 +1,24 @@ - import unittest -from pyspedas.utilities.data_exists import data_exists - +from pytplot import data_exists import pyspedas + class LoadTestCases(unittest.TestCase): def test_load_dst_data(self): + # final dst_vars = pyspedas.kyoto.dst(trange=['2015-10-15', '2015-10-16']) self.assertTrue(data_exists('kyoto_dst')) + # provisional + dst_vars = pyspedas.kyoto.dst(trange=['2019-10-15', '2019-10-16']) + self.assertTrue(data_exists('kyoto_dst')) + # real time + dst_vars = pyspedas.kyoto.dst(trange=['2022-7-15', '2022-7-16']) + self.assertTrue(data_exists('kyoto_dst')) + + def test_errors(self): + pyspedas.kyoto.dst(trange=None) + pyspedas.kyoto.dst(trange=['1015-10-15', '1015-10-16']) + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/lanl/README.md b/pyspedas/lanl/README.md new file mode 100644 index 00000000..6d2b98e6 --- /dev/null +++ b/pyspedas/lanl/README.md @@ -0,0 +1,35 @@ + +## LANL +The routines in this module can be used to load data from the LANL mission. + +### Instruments +- Magnetospheric Plasma Analyzer (MPA) +- Synchronous Orbit Particle Analyzer (SPA) + +### Examples +Get started by importing pyspedas and tplot; these are required to load and plot the data: + +```python +import pyspedas +from pytplot import tplot +``` + +#### Magnetospheric Plasma Analyzer (MPA) + +```python +mpa_vars = pyspedas.lanl.mpa(trange=['2004-10-31', '2004-11-01']) + +tplot(['dens_lop', 'vel_lop']) +``` + + +#### Synchronous Orbit Particle Analyzer (SPA) + +```python +spa_vars = pyspedas.lanl.spa(trange=['2004-10-31', '2004-11-01']) + +tplot(['spa_p_temp', 'spa_e_temp']) +``` + + + \ No newline at end of file diff --git a/pyspedas/lanl/__init__.py b/pyspedas/lanl/__init__.py new file mode 100644 index 00000000..c4b98e24 --- /dev/null +++ b/pyspedas/lanl/__init__.py @@ -0,0 +1,174 @@ +from .load import load +from pyspedas.utilities.datasets import find_datasets + + +def mpa(trange=['2004-10-31', '2004-11-01'], + probe='l1', + level='k0', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Magnetospheric Plasma Analyzer (MPA) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + probe: str + LANL probe #; Valid options: + 'l0' for LANL 1990 data + 'l1' for LANL 1991 data + 'l4' for LANL 1994 data + 'l7' for LANL 1997 data + 'l9' for LANL 1989 data + 'a1' for LANL 2001 data + 'a2' for LANL 2002 data + + level: str + Data level; options: 'k0' (default: k0) + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + tvars = load(instrument='mpa', trange=trange, level=level, probe=probe, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if tvars is None or notplot or downloadonly: + return tvars + + return mpa_postprocessing(tvars) + + +def mpa_postprocessing(variables): + """ + Placeholder for MPA post-processing + """ + return variables + + +def spa(trange=['2004-10-31', '2004-11-01'], + probe='l1', + level='k0', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Synchronous Orbit Particle Analyzer (SPA) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + probe: str + LANL S/C probe #; Valid options: + 'l0' for LANL 1990 data + 'l1' for LANL 1991 data + 'l4' for LANL 1994 data + 'l7' for LANL 1997 data + 'l9' for LANL 1989 data + 'a1' for LANL 2001 data + 'a2' for LANL 2002 data + + level: str + Data level; options: 'k0' (default: k0) + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + tvars = load(instrument='spa', trange=trange, level=level, probe=probe, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if tvars is None or notplot or downloadonly: + return tvars + + return spa_postprocessing(tvars) + + +def spa_postprocessing(variables): + """ + Placeholder for SPA post-processing + """ + return variables + + +def datasets(instrument=None, label=True): + return find_datasets(mission='LANL', instrument=instrument, label=label) diff --git a/pyspedas/lanl/config.py b/pyspedas/lanl/config.py new file mode 100644 index 00000000..91744cb6 --- /dev/null +++ b/pyspedas/lanl/config.py @@ -0,0 +1,12 @@ +import os + +CONFIG = {'local_data_dir': 'lanl_data/', + 'remote_data_dir': 'https://spdf.gsfc.nasa.gov/pub/data/lanl/'} + +# override local data directory with environment variables +if os.environ.get('SPEDAS_DATA_DIR'): + CONFIG['local_data_dir'] = os.sep.join([os.environ['SPEDAS_DATA_DIR'], 'lanl']) + +if os.environ.get('LANL_DATA_DIR'): + CONFIG['local_data_dir'] = os.environ['LANL_DATA_DIR'] + \ No newline at end of file diff --git a/pyspedas/lanl/load.py b/pyspedas/lanl/load.py new file mode 100644 index 00000000..88fb2b9c --- /dev/null +++ b/pyspedas/lanl/load.py @@ -0,0 +1,68 @@ +from pyspedas.utilities.dailynames import dailynames +from pyspedas.utilities.download import download +from pytplot import time_clip as tclip +from pytplot import cdf_to_tplot + +from .config import CONFIG + +LANL_SC = {'l0': '90', + 'l1': '91', + 'l4': '94', + 'l7': '97', + 'l9': '89', + 'a1': '01a', + 'a2': '02a'} + + +def load(trange=['2004-10-31', '2004-11-01'], + instrument='mpa', + probe='a1', + level='k0', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the LANL mission; this function is not meant + to be called directly; instead, see the wrappers: + + pyspedas.lanl.mpa + pyspedas.lanl.spa + + """ + + probe = probe.lower() + + pathformat = LANL_SC[probe]+'_'+instrument+'/%Y/'+probe+'_'+level+'_'+instrument+'_%Y%m%d_v??.cdf' + + # find the full remote path names using the trange + remote_names = dailynames(file_format=pathformat, trange=trange) + + out_files = [] + + files = download(remote_file=remote_names, remote_path=CONFIG['remote_data_dir'], local_path=CONFIG['local_data_dir'], no_download=no_update) + if files is not None: + for file in files: + out_files.append(file) + + out_files = sorted(out_files) + + if downloadonly: + return out_files + + tvars = cdf_to_tplot(out_files, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, notplot=notplot) + + if notplot: + return tvars + + if time_clip: + for new_var in tvars: + tclip(new_var, trange[0], trange[1], suffix='') + + return tvars + + \ No newline at end of file diff --git a/pyspedas/lanl/tests/__init__.py b/pyspedas/lanl/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pyspedas/lanl/tests/tests.py b/pyspedas/lanl/tests/tests.py new file mode 100644 index 00000000..515d5b1c --- /dev/null +++ b/pyspedas/lanl/tests/tests.py @@ -0,0 +1,34 @@ +import os +import unittest +from pytplot import data_exists +import pyspedas + + +class LoadTestCases(unittest.TestCase): + def test_load_mpa_data(self): + out_vars = pyspedas.lanl.mpa(time_clip=True) + self.assertTrue(data_exists('dens_lop')) + self.assertTrue(data_exists('vel_lop')) + self.assertTrue(data_exists('temp_lop')) + + def test_load_spa_data(self): + out_vars = pyspedas.lanl.spa(time_clip=True) + self.assertTrue(data_exists('spa_p_temp')) + self.assertTrue(data_exists('spa_e_temp')) + self.assertTrue(data_exists('spa_a_flux')) + self.assertTrue(data_exists('spa_e_flx')) + self.assertTrue(data_exists('spa_p_flx')) + + def test_load_notplot(self): + out_vars = pyspedas.lanl.spa(notplot=True) + self.assertTrue('spa_p_temp' in out_vars) + + def test_downloadonly(self): + files = pyspedas.lanl.spa(downloadonly=True, trange=['2004-10-31', '2004-11-01']) + self.assertTrue(os.path.exists(files[0])) + + +if __name__ == '__main__': + unittest.main() + + \ No newline at end of file diff --git a/pyspedas/maven/__init__.py b/pyspedas/maven/__init__.py index 472a4805..1b4f7a31 100644 --- a/pyspedas/maven/__init__.py +++ b/pyspedas/maven/__init__.py @@ -3,6 +3,7 @@ """ from .maven_load import load_data +import pyspedas.maven.spdf as spdf_load def maven_load(filenames=None, @@ -102,56 +103,94 @@ def maven_load(filenames=None, get_metadata=get_metadata, auto_yes=auto_yes, varnames=varnames) return tvars + def kp(trange=['2016-01-01', '2016-01-02'], datatype=None, varformat=None, get_support_data=False, - auto_yes=True, downloadonly=False, insitu=True, iuvs=False, varnames=[]): + auto_yes=True, downloadonly=False, insitu=True, iuvs=False, varnames=[], spdf=False): + if spdf: + if datatype is None: + datatype = 'kp-4sec' + return spdf_load.kp(trange=trange, datatype=datatype, varformat=varformat, get_support_data=get_support_data) return maven_load(start_date=trange[0], end_date=trange[1], type=datatype, level='kp', varformat=varformat, varnames=varnames, get_support_data=get_support_data, auto_yes=auto_yes, download_only=downloadonly, insitu=insitu, iuvs=iuvs) -def mag(trange=['2016-01-01', '2016-01-02'], level='l2', datatype='ss', varformat=None, get_support_data=False, - auto_yes=True, downloadonly=False, varnames=[]): + +def mag(trange=['2016-01-01', '2016-01-02'], level='l2', datatype=None, varformat=None, get_support_data=False, + auto_yes=True, downloadonly=False, varnames=[], spdf=False): + if spdf: + if datatype is None: + datatype = 'sunstate-1sec' + return spdf_load.mag(trange=trange, level=level, datatype=datatype, varformat=varformat, get_support_data=get_support_data, + downloadonly=downloadonly, varnames=varnames) + if datatype is None: + datatype = 'ss' return maven_load(instruments='mag', start_date=trange[0], end_date=trange[1], type=datatype, level=level, varformat=varformat, get_support_data=get_support_data, auto_yes=auto_yes, download_only=downloadonly, varnames=varnames) -def sta(trange=['2016-01-01', '2016-01-02'], level='l2', datatype='2a', varformat=None, get_support_data=False, - auto_yes=True, downloadonly=False, varnames=[]): + +def sta(trange=['2016-01-01', '2016-01-02'], level='l2', datatype=None, varformat=None, get_support_data=False, + auto_yes=True, downloadonly=False, varnames=[], spdf=False): + if spdf: + if datatype is None: + datatype = 'c0-64e2m' + return spdf_load.static(trange=trange, level=level, datatype=datatype, varformat=varformat, get_support_data=get_support_data, + downloadonly=downloadonly, varnames=varnames) + if datatype is None: + datatype = '2a' return maven_load(instruments='sta', start_date=trange[0], end_date=trange[1], type=datatype, level=level, varformat=varformat, get_metadata=True, get_support_data=get_support_data, auto_yes=auto_yes, download_only=downloadonly, varnames=varnames) + def swea(trange=['2016-01-01', '2016-01-02'], level='l2', datatype='svyspec', varformat=None, get_support_data=False, - auto_yes=True, downloadonly=False, varnames=[]): + auto_yes=True, downloadonly=False, varnames=[], spdf=False): + if spdf: + return spdf_load.swea(trange=trange, level=level, datatype=datatype, varformat=varformat, get_support_data=get_support_data, + downloadonly=downloadonly, varnames=varnames) return maven_load(instruments='swe', start_date=trange[0], end_date=trange[1], type=datatype, level=level, varformat=varformat, get_support_data=get_support_data, auto_yes=auto_yes, download_only=downloadonly, varnames=varnames) + def swia(trange=['2016-01-01', '2016-01-02'], level='l2', datatype='onboardsvyspec', varformat=None, get_support_data=False, - auto_yes=True, downloadonly=False, varnames=[]): + auto_yes=True, downloadonly=False, varnames=[], spdf=False): + if spdf: + return spdf_load.swia(trange=trange, level=level, datatype=datatype, varformat=varformat, get_support_data=get_support_data, + downloadonly=downloadonly, varnames=varnames) return maven_load(instruments='swi', start_date=trange[0], end_date=trange[1], type=datatype, level=level, varformat=varformat, get_support_data=get_support_data, auto_yes=auto_yes, download_only=downloadonly, varnames=varnames) + def sep(trange=['2016-01-01', '2016-01-02'], level='l2', datatype='s2-cal-svy-full', varformat=None, get_support_data=False, - auto_yes=True, downloadonly=False, varnames=[]): + auto_yes=True, downloadonly=False, varnames=[], spdf=False): + if spdf: + return spdf_load.sep(trange=trange, level=level, datatype=datatype, varformat=varformat, get_support_data=get_support_data, + downloadonly=downloadonly, varnames=varnames) return maven_load(instruments='sep', start_date=trange[0], end_date=trange[1], type=datatype, level=level, varformat=varformat, get_support_data=get_support_data, auto_yes=auto_yes, download_only=downloadonly, varnames=varnames) + def rse(trange=['2016-01-01', '2016-01-02'], level='l2', datatype=None, varformat=None, get_support_data=False, auto_yes=True, downloadonly=False, varnames=[]): return maven_load(instruments='rse', start_date=trange[0], end_date=trange[1], type=datatype, level=level, varformat=varformat, get_support_data=get_support_data, auto_yes=auto_yes, download_only=downloadonly, varnames=varnames) + def lpw(trange=['2016-01-01', '2016-01-02'], level='l2', datatype='lpiv', varformat=None, get_support_data=False, auto_yes=True, downloadonly=False, varnames=[]): return maven_load(instruments='lpw', start_date=trange[0], end_date=trange[1], type=datatype, level=level, varformat=varformat, get_support_data=get_support_data, auto_yes=auto_yes, download_only=downloadonly, varnames=varnames) + def euv(trange=['2016-01-01', '2016-01-02'], level='l2', datatype='bands', varformat=None, get_support_data=False, auto_yes=True, downloadonly=False, varnames=[]): return maven_load(instruments='euv', start_date=trange[0], end_date=trange[1], type=datatype, level=level, varformat=varformat, get_support_data=get_support_data, auto_yes=auto_yes, download_only=downloadonly, varnames=varnames) + def iuv(trange=['2016-01-01', '2016-01-02'], level='l2', datatype=None, varformat=None, get_support_data=False, auto_yes=True, downloadonly=False, varnames=[]): return maven_load(instruments='iuv', start_date=trange[0], end_date=trange[1], type=datatype, level=level, varformat=varformat, get_support_data=get_support_data, auto_yes=auto_yes, download_only=downloadonly, varnames=varnames) + def ngi(trange=['2016-01-01', '2016-01-02'], level='l2', datatype=None, varformat=None, get_support_data=False, auto_yes=True, downloadonly=False, varnames=[]): return maven_load(instruments='ngi', start_date=trange[0], end_date=trange[1], type=datatype, level=level, varformat=varformat, diff --git a/pyspedas/maven/maven_load.py b/pyspedas/maven/maven_load.py index 0f5c6077..33425f76 100644 --- a/pyspedas/maven/maven_load.py +++ b/pyspedas/maven/maven_load.py @@ -1,3 +1,4 @@ +import logging from dateutil.parser import parse import os @@ -25,7 +26,7 @@ def maven_filenames(filenames=None, # Check for orbit num rather than time string if isinstance(start_date, int) and isinstance(end_date, int): - print("Orbit numbers specified, checking for updated orbit # file from naif.jpl.nasa.gov") + logging.info("Orbit numbers specified, checking for updated orbit # file from naif.jpl.nasa.gov") get_orbit_files() start_date, end_date = orbit_time(start_date, end_date) start_date = parse(start_date) @@ -91,7 +92,7 @@ def maven_filenames(filenames=None, s = get_filenames(query, public) if not s: - print("No files found for {}.".format(instrument)) + logging.error("No files found for {}.".format(instrument)) maven_files[instrument] = [] continue @@ -112,7 +113,7 @@ def maven_filenames(filenames=None, query = '&'.join(query_args) s = get_filenames(query, public) if not s: - print("No files found for {}.".format(instrument)) + logging.error("No files found for {}.".format(instrument)) maven_files[instrument] = [] else: s = s.split(',') @@ -203,7 +204,7 @@ def load_data(filenames=None, if list_files: for f in s: - print(f) + logging.info(f) return if new_files: @@ -213,8 +214,8 @@ def load_data(filenames=None, s = get_new_files(bn_files_to_load, data_dir, instr, level) if len(s) == 0: continue - print("Your request will download a total of: "+str(len(s))+" files for instrument "+str(instr)) - print('Would you like to proceed with the download? ') + logging.info("Your request will download a total of: "+str(len(s))+" files for instrument "+str(instr)) + logging.info('Would you like to proceed with the download? ') valid_response = False cancel = False if auto_yes: @@ -225,11 +226,11 @@ def load_data(filenames=None, valid_response = True cancel = False elif response == 'n' or response == 'N': - print('Cancelled download. Returning...') + logging.error('Cancelled download. Returning...') valid_response = True cancel = True else: - print('Invalid input. Please answer with y or n.') + logging.error('Invalid input. Please answer with y or n.') if cancel: continue diff --git a/pyspedas/maven/spdf/__init__.py b/pyspedas/maven/spdf/__init__.py new file mode 100644 index 00000000..954434b2 --- /dev/null +++ b/pyspedas/maven/spdf/__init__.py @@ -0,0 +1,494 @@ +from .load import load + + +def mag(trange=['2014-10-18', '2014-10-19'], + datatype='sunstate-1sec', + level='l2', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Magnetometer (MAG) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + datatype: str + Data type; Valid options: + 'sunstate-1sec' for L2 data + + level: str + Data level; options: 'l1', 'l2' (default: l2) + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + tvars = load(instrument='mag', trange=trange, level=level, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if tvars is None or notplot or downloadonly: + return tvars + + return mag_postprocessing(tvars) + + +def mag_postprocessing(variables): + """ + Placeholder for MAG post-processing + """ + return variables + + +def swea(trange=['2014-10-18', '2014-10-19'], + datatype='arc3d', + level='l2', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Solar Wind Electron Analyzer (SWEA) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + datatype: str + Data type; Valid options: + 'arc3d' for L2 data + 'arcpad' for L2 data + 'svy3d' for L2 data + 'svypad' for L2 data + 'svyspec' for L2 data + + level: str + Data level; options: 'l2' (default: l2) + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + tvars = load(instrument='swea', trange=trange, level=level, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if tvars is None or notplot or downloadonly: + return tvars + + return swea_postprocessing(tvars) + + +def swea_postprocessing(variables): + """ + Placeholder for SWEA post-processing + """ + return variables + + +def swia(trange=['2014-10-18', '2014-10-19'], + datatype='onboardsvyspec', + level='l2', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Solar Wind Ion Analyzer (SWIA) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + datatype: str + Data type; Valid options: + 'onboardsvyspec' for L2 data + 'onboardsvymom' for L2 data + 'finesvy3d' for L2 data + 'finearc3d' for L2 data + 'coarsesvy3d' for L2 data + 'coarsearc3d' for L2 data + + level: str + Data level; options: 'l2' (default: l2) + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + tvars = load(instrument='swia', trange=trange, level=level, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if tvars is None or notplot or downloadonly: + return tvars + + return swia_postprocessing(tvars) + + +def swia_postprocessing(variables): + """ + Placeholder for SWIA post-processing + """ + return variables + + +def static(trange=['2014-10-18', '2014-10-19'], + datatype='c0-64e2m', + level='l2', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the SupraThermal And Thermal Ion Composition (STATIC) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + datatype: str + Data type; Valid options: + 'c0-64e2m' for L2 data + 'c2-32e32m' for L2 data + 'c4-4e64m' for L2 data + 'c6-32e64m' for L2 data + 'c8-32e16d' for L2 data + 'ca-16e4d16a' for L2 data + 'cc-32e8d32m' for L2 data + 'cd-32e8d32m' for L2 data + 'ce-16e4d16a16m' for L2 data + 'cf-16e4d16a16m' for L2 data + 'd0-32e4d16a8m' for L2 data + 'd1-32e4d16a8m' for L2 data + 'd4-4d16a2m' for L2 data + 'd6-events' for L2 data + 'd7-fsthkp' for L2 data + 'd8-12r1e' for L2 data + 'd9-12r64e' for L2 data + 'da-1r64e' for L2 data + 'db-1024tof' for L2 data + 'hkp' for L2 data + + level: str + Data level; options: 'l2' (default: l2) + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + tvars = load(instrument='static', trange=trange, level=level, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if tvars is None or notplot or downloadonly: + return tvars + + return static_postprocessing(tvars) + + +def static_postprocessing(variables): + """ + Placeholder for STATIC post-processing + """ + return variables + + +def sep(trange=['2014-10-18', '2014-10-19'], + datatype='s1-cal-svy-full', + level='l2', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Solar Energetic Particle (SEP) instrument + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + datatype: str + Data type; Valid options: + 's1-cal-svy-full' for L2 data + 's2-cal-svy-full' for L2 data + + level: str + Data level; options: 'l2' (default: l2) + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + tvars = load(instrument='sep', trange=trange, level=level, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if tvars is None or notplot or downloadonly: + return tvars + + return sep_postprocessing(tvars) + + +def sep_postprocessing(variables): + """ + Placeholder for SEP post-processing + """ + return variables + + +def kp(trange=['2014-10-18', '2014-10-19'], + datatype='kp-4sec', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Key Parameters (KP) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + datatype: str + Data type; Valid options: + 'kp-4sec' for 4 second KP data + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + tvars = load(instrument='kp', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if tvars is None or notplot or downloadonly: + return tvars + + return kp_postprocessing(tvars) + + +def kp_postprocessing(variables): + """ + Placeholder for KP post-processing + """ + return variables diff --git a/pyspedas/maven/spdf/config.py b/pyspedas/maven/spdf/config.py new file mode 100644 index 00000000..b4abec25 --- /dev/null +++ b/pyspedas/maven/spdf/config.py @@ -0,0 +1,12 @@ +import os + +CONFIG = {'local_data_dir': 'maven/', + 'remote_data_dir': 'https://spdf.gsfc.nasa.gov/pub/data/maven/'} + +# override local data directory with environment variables +if os.environ.get('SPEDAS_DATA_DIR'): + CONFIG['local_data_dir'] = os.sep.join([os.environ['SPEDAS_DATA_DIR'], 'maven']) + +if os.environ.get('MAVEN_DATA_DIR'): + CONFIG['local_data_dir'] = os.environ['MAVEN_DATA_DIR'] + \ No newline at end of file diff --git a/pyspedas/maven/spdf/load.py b/pyspedas/maven/spdf/load.py new file mode 100644 index 00000000..4e7b176b --- /dev/null +++ b/pyspedas/maven/spdf/load.py @@ -0,0 +1,73 @@ +from pyspedas.utilities.dailynames import dailynames +from pyspedas.utilities.download import download +from pytplot import time_clip as tclip +from pytplot import cdf_to_tplot + +from .config import CONFIG + + +def load(trange=['2014-10-18', '2014-10-19'], + instrument='mag', + datatype='', + level='l2', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the MAVEN mission; this function is not meant + to be called directly; instead, see the wrappers: + + pyspedas.maven.mag + pyspedas.maven.swea + pyspedas.maven.swia + pyspedas.maven.static + pyspedas.maven.sep + pyspedas.maven.kp + + """ + + if instrument == 'mag': + pathformat = f"{instrument}/{level}/{datatype}/cdfs/%Y/%m/mvn_{instrument}_{level}-{datatype}_%Y%m%d_v??_r??.cdf" + elif instrument == 'swea': + pathformat = f"{instrument}/{level}/{datatype}/%Y/%m/mvn_swe_{level}_{datatype}_%Y%m%d_v??_r??.cdf" + elif instrument == 'swia': + pathformat = f"{instrument}/{level}/{datatype}/%Y/%m/mvn_swi_{level}_{datatype}_%Y%m%d_v??_r??.cdf" + elif instrument == 'static': + pathformat = f"{instrument}/{level}/{datatype}/%Y/%m/mvn_sta_{level}_{datatype}_%Y%m%d_v??_r??.cdf" + elif instrument == 'sep': + pathformat = f"{instrument}/{level}/{datatype}/%Y/%m/mvn_{instrument}_{level}_{datatype}_%Y%m%d_v??_r??.cdf" + elif instrument == 'kp': + # https://spdf.gsfc.nasa.gov/pub/data/maven/insitu/kp-4sec/cdfs/2016/ + pathformat = f"insitu/{datatype}/cdfs/%Y/%m/mvn_insitu_{datatype}_%Y%m%d_v??_r??.cdf" + + # find the full remote path names using the trange + remote_names = dailynames(file_format=pathformat, trange=trange) + + out_files = [] + + files = download(remote_file=remote_names, remote_path=CONFIG['remote_data_dir'], local_path=CONFIG['local_data_dir'], no_download=no_update) + if files is not None: + for file in files: + out_files.append(file) + + out_files = sorted(out_files) + + if downloadonly: + return out_files + + tvars = cdf_to_tplot(out_files, suffix=suffix, get_support_data=get_support_data, varformat=varformat, + varnames=varnames, notplot=notplot) + + if notplot: + return tvars + + if time_clip: + for new_var in tvars: + tclip(new_var, trange[0], trange[1], suffix='') + + return tvars diff --git a/pyspedas/maven/tests/tests.py b/pyspedas/maven/tests/tests.py index 0b41cd7f..0c2061ee 100644 --- a/pyspedas/maven/tests/tests.py +++ b/pyspedas/maven/tests/tests.py @@ -1,15 +1,17 @@ import os import unittest -from pyspedas.utilities.data_exists import data_exists +from pytplot import data_exists from pyspedas import maven +from pyspedas.maven.download_files_utilities import get_orbit_files, merge_orbit_files + + +class OrbitTestCases(unittest.TestCase): + def test_get_merge_orbit_files(self): + get_orbit_files() + merge_orbit_files() + self.assertTrue(os.path.join(os.path.join(os.path.dirname(__file__), '..'), 'maven_orb_rec.orb')) -# class OrbitTestCases(unittest.TestCase): -# def test_get_merge_orbit_files(self): -# from pyspedas.maven.download_files_utilities import get_orbit_files, merge_orbit_files -# get_orbit_files() -# merge_orbit_files() -# self.assertTrue(os.path.join(os.path.join(os.path.dirname(__file__), '..'), 'maven_orb_rec.orb')) class LoadTestCases(unittest.TestCase): def test_load_kp_data(self): @@ -17,7 +19,7 @@ def test_load_kp_data(self): self.assertTrue(data_exists('mvn_kp::spacecraft::geo_x')) def test_load_mag_data(self): - data = maven.mag() + data = maven.mag(datatype='ss1s') self.assertTrue(data_exists('OB_B')) def test_load_sta_data(self): diff --git a/pyspedas/maven/utilities.py b/pyspedas/maven/utilities.py index 35121eaf..9b08dbd1 100644 --- a/pyspedas/maven/utilities.py +++ b/pyspedas/maven/utilities.py @@ -3,6 +3,7 @@ # This software was developed at the University of Colorado's Laboratory for Atmospheric and Space Physics. # Verify current version before use at: https://github.com/MAVENSDC/Pydivide +import logging import re import os from . import download_files_utilities as utils @@ -36,10 +37,10 @@ def param_list(kp): param_list_.append("#%3d %s" % (index, base_tag)) index += 1 else: - print('*****WARNING*****') - print('Returning INCOMPLETE Parameter List') - print('Base tag neither DataFrame nor Series') - print('Plese check read_insitu_file definition') + logging.warning('*****WARNING*****') + logging.warning('Returning INCOMPLETE Parameter List') + logging.warning('Base tag neither DataFrame nor Series') + logging.warning('Plese check read_insitu_file definition') return param_list_ diff --git a/pyspedas/mica/load.py b/pyspedas/mica/load.py index 85b5d35c..e6a76c98 100644 --- a/pyspedas/mica/load.py +++ b/pyspedas/mica/load.py @@ -1,7 +1,7 @@ - +import logging from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import cdf_to_tplot from .config import CONFIG @@ -24,9 +24,9 @@ def load(trange=['2019-02-01','2019-02-02'], """ if site is None: - print('A valid MICA site code name must be entered.') - print('Current site codes include: ') - print('NAL, LYR, LOR, ISR, SDY, IQA, SNK, MCM, SPA, JBS, NEV, HAL, PG2[3,4,5]') + logging.error('A valid MICA site code name must be entered.') + logging.error('Current site codes include: ') + logging.error('NAL, LYR, LOR, ISR, SDY, IQA, SNK, MCM, SPA, JBS, NEV, HAL, PG2[3,4,5]') return pathformat = site.upper()+'/%Y/%m/mica_ulf_'+site.lower()+'_%Y%m%d_v??.cdf' diff --git a/pyspedas/mica/tests/tests.py b/pyspedas/mica/tests/tests.py index 7bcf54f5..4b80a37e 100644 --- a/pyspedas/mica/tests/tests.py +++ b/pyspedas/mica/tests/tests.py @@ -1,15 +1,18 @@ - import os import unittest -from pyspedas.utilities.data_exists import data_exists - +from pytplot import data_exists import pyspedas + class LoadTestCases(unittest.TestCase): def test_load_none_data(self): induction_vars = pyspedas.mica.induction() self.assertTrue(induction_vars == None) + def test_load_notplot(self): + induction_vars = pyspedas.mica.induction(site='nal', notplot=True) + self.assertTrue('spectra_x_1Hz_NAL' in induction_vars) + def test_load_NAL_data(self): induction_vars = pyspedas.mica.induction(site='nal', time_clip=True) self.assertTrue(data_exists('spectra_x_1Hz_NAL')) @@ -18,5 +21,6 @@ def test_downloadonly(self): files = pyspedas.mica.induction(site='nal', downloadonly=True, trange=['2014-2-15', '2014-2-16']) self.assertTrue(os.path.exists(files[0])) + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/mms/aspoc/aspoc.py b/pyspedas/mms/aspoc/aspoc.py index 123cfa83..dbd795ad 100644 --- a/pyspedas/mms/aspoc/aspoc.py +++ b/pyspedas/mms/aspoc/aspoc.py @@ -1,18 +1,19 @@ from pyspedas.mms.mms_load_data import mms_load_data from pyspedas.mms.print_vars import print_vars + @print_vars def mms_load_aspoc(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy', level='l2', datatype='', varformat=None, varnames=[], get_support_data=False, suffix='', time_clip=False, no_update=False, available=False, notplot=False, latest_version=False, major_version=False, min_version=None, cdf_version=None, spdf=False, always_prompt=False): """ - This function loads ASPOC data into tplot variables + Load data from the Active Spacecraft Potential Control (ASPOC) Parameters ---------- trange : list of str - time range of interest [starttime, endtime] with the format + time range of interest [start time, end time] with the format 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] @@ -52,11 +53,11 @@ def mms_load_aspoc(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='sr notplot: bool If True, then data are returned in a hash table instead of being stored in tplot variables (useful for debugging, and - access to multi-dimensional data products) + access to multidimensional data products) available: bool If True, simply return the available data files (without downloading) - for the requested paramters + for the requested parameters no_update: bool Set this flag to preserve the original data. if not set and newer @@ -76,12 +77,13 @@ def mms_load_aspoc(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='sr always_prompt: bool Set this keyword to always prompt for the user's username and password; - useful if you accidently save an incorrect password, or if your SDC password has changed + useful if you accidentally save an incorrect password, or if your SDC password has changed spdf: bool If True, download the data from the SPDF instead of the SDC - Returns: + Returns + -------- List of tplot variables created. """ diff --git a/pyspedas/mms/cotrans/mms_cotrans_lmn.py b/pyspedas/mms/cotrans/mms_cotrans_lmn.py index 4dbef0d1..a62d4eae 100644 --- a/pyspedas/mms/cotrans/mms_cotrans_lmn.py +++ b/pyspedas/mms/cotrans/mms_cotrans_lmn.py @@ -1,8 +1,10 @@ +""" +This function transforms MMS vector fields from GSM coordinates to LMN (boundary-normal) coordinates using the Shue et al., 1998 magnetopause model. The input and output tplot variables are specified by name_in and name_out, respectively. Additional optional parameters include specifying the input data coordinates (GSM or GSE), probe, and data rate. The function returns the name of the output variable containing the data in LMN coordinates. +""" import numpy as np import logging -from pytplot import get_data, store_data, options -from pyspedas.cotrans.cotrans_get_coord import cotrans_get_coord +from pytplot import get_data, store_data, options, get_coords from pyspedas.cotrans.cotrans import cotrans from pyspedas.cotrans.gsm2lmn import gsm2lmn from pyspedas.mms import mec @@ -11,8 +13,9 @@ logging.captureWarnings(True) logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) + def mms_cotrans_lmn(name_in, name_out, gsm=False, gse=False, probe=None, data_rate='srvy'): - ''' + """ Tranforms MMS vector fields from GSM coordinates to LMN (boundary-normal) coordinates using the Shue et al., 1998 magnetopause model @@ -44,7 +47,7 @@ def mms_cotrans_lmn(name_in, name_out, gsm=False, gse=False, probe=None, data_ra -------- Name of the variable containing the data in LMN coordinates. - ''' + """ data_in = get_data(name_in) metadata_in = get_data(name_in, metadata=True) @@ -53,7 +56,7 @@ def mms_cotrans_lmn(name_in, name_out, gsm=False, gse=False, probe=None, data_ra logging.error('Error reading tplot variable: ' + name_in) return None - data_in_coord = cotrans_get_coord(name_in).lower() + data_in_coord = get_coords(name_in).lower() if data_in_coord != 'gse' and data_in_coord != 'gsm' and not gse and not gsm: logging.error('Please specify the coordinate system of the input data.') @@ -96,7 +99,28 @@ def mms_cotrans_lmn(name_in, name_out, gsm=False, gse=False, probe=None, data_ra else: logging.error('Problem creating tplot variable.') + def solarwind_load(trange, level='hro2', min5=False): + """ + Loads solar wind data for use in the GSM to LMN transformation. + + Parameters + ---------- + trange: list of float + Time range of data to be loaded + + level: str + Data level (default: hro2) + + min5: bool + Flag indicating whether to load 1 minute or 5 minute data (default: 1 minute) + + Returns + ------- + Numpy array of solar wind data with shape (N, 3), where N is the number of time points + and the columns are the time, Bz GSM, and pressure. + """ + if min5: datatype = '5min' else: diff --git a/pyspedas/mms/cotrans/mms_cotrans_qrotate.py b/pyspedas/mms/cotrans/mms_cotrans_qrotate.py index 05e1bbfa..e4f7ce97 100644 --- a/pyspedas/mms/cotrans/mms_cotrans_qrotate.py +++ b/pyspedas/mms/cotrans/mms_cotrans_qrotate.py @@ -1,11 +1,19 @@ -from pytplot import get_data, store_data -from pyspedas import cotrans_set_coord, tinterpol +""" +This module provides functions for transforming MMS vector fields from one coordinate system to another using quaternion rotation. + +To use this module, you will need to install the SpacePy package: pip install spacepy. + +The main function of this module is mms_cotrans_qrotate, which performs a quaternion rotation on a PyTplot variable. The function takes in the names of the input and quaternion tplot variables, the name of the output tplot variable, and the coordinate system for the output data. An optional inverse flag allows the user to use the quaternion conjugate on the quaternion data prior to rotating. If the data and quaternion tplot variables are not the same length, the function will interpolate the data to the quaternion timestamps. +""" +import logging +from pytplot import get_data, store_data, set_coords +from pyspedas import tinterpol try: import spacepy.coordinates as coord except ImportError: - print('SpacePy must be installed to use this module.') - print('Please install it using: pip install spacepy') + logging.error('SpacePy must be installed to use this module.') + logging.error('Please install it using: pip install spacepy') def mms_cotrans_qrotate(in_name, q_name, out_name, out_coord, inverse=False): @@ -34,8 +42,16 @@ def mms_cotrans_qrotate(in_name, q_name, out_name, out_coord, inverse=False): q_data = get_data(q_name) + if data is None: + logging.error(f'Problem reading input tplot variable: {in_name}') + return + + if q_data is None: + logging.error(f'Problem reading quaternion variable: {q_name}') + return + if len(data.times) != len(q_data.times): - print('Interpolating the data to the MEC quaternion time stamps.') + logging.info('Interpolating the data to the MEC quaternion time stamps.') tinterpol(in_name, q_name) data = get_data(in_name + '-itrp') @@ -48,5 +64,5 @@ def mms_cotrans_qrotate(in_name, q_name, out_name, out_coord, inverse=False): saved = store_data(out_name, data={'x': data.times, 'y': out_data}, attr_dict=metadata) if saved: - cotrans_set_coord(out_name, out_coord) + set_coords(out_name, out_coord) diff --git a/pyspedas/mms/cotrans/mms_cotrans_qtransformer.py b/pyspedas/mms/cotrans/mms_cotrans_qtransformer.py index a200edb9..6f202e3c 100644 --- a/pyspedas/mms/cotrans/mms_cotrans_qtransformer.py +++ b/pyspedas/mms/cotrans/mms_cotrans_qtransformer.py @@ -1,4 +1,18 @@ -from pytplot import tplot_copy +""" +This module contains the function mms_cotrans_qtransformer, which performs a quaternion rotation on a tplot variable from one coordinate system to another. It does this by recursively rotating through the ECI coordinate system. + +The mms_cotrans_qtransformer function takes in four required arguments: + +in_name: the name of the tplot variable to be transformed +out_name: the name of the tplot variable to be created with the transformed data +in_coord: the coordinate system of the input data +out_coord: the coordinate system to rotate to +It also takes an optional argument: + +probe: the spacecraft probe number (default is '1') +The function returns the name of the output tplot variable. +""" +from pytplot import tplot_copy, get from .mms_cotrans_qrotate import mms_cotrans_qrotate @@ -36,11 +50,17 @@ def mms_cotrans_qtransformer(in_name, out_name, in_coord, out_coord, probe='1'): if in_coord == 'eci': q_name = 'mms' + probe + '_mec_quat_eci_to_' + out_coord + q_data = get(q_name) + if q_data is None: + return mms_cotrans_qrotate(in_name, q_name, out_name, out_coord) recursive_in_coord = out_coord else: q_name = 'mms' + probe + '_mec_quat_eci_to_' + in_coord + q_data = get(q_name) + if q_data is None: + return mms_cotrans_qrotate(in_name, q_name, out_name, out_coord, inverse=True) recursive_in_coord = 'eci' - return mms_cotrans_qtransformer(out_name, out_name, recursive_in_coord, out_coord, probe=probe) \ No newline at end of file + return mms_cotrans_qtransformer(out_name, out_name, recursive_in_coord, out_coord, probe=probe) diff --git a/pyspedas/mms/cotrans/mms_qcotrans.py b/pyspedas/mms/cotrans/mms_qcotrans.py index b02ee0b0..1064670f 100644 --- a/pyspedas/mms/cotrans/mms_qcotrans.py +++ b/pyspedas/mms/cotrans/mms_qcotrans.py @@ -1,12 +1,27 @@ -from pyspedas import cotrans_get_coord -from pytplot import get_data +""" +Performs coordinate transformations for MMS data using MMS MEC quaternions. + +This function uses the mms_cotrans_qtransformer function to recursively transform the input data from the input coordinate system to the output coordinate system by going through ECI. The transformation operations are performed using the SpacePy library. + +Parameters: +in_name (str or list of str): Names of Tplot variables of vectors to be transformed. +out_name (str or list of str): Names of output variables. +in_coord (str): Input coordinate system (e.g. 'bcs', 'gse', 'gse2000', 'gsm', 'sm', 'geo', 'eci'). +out_coord (str): Output coordinate system (e.g. 'bcs', 'gse', 'gse2000', 'gsm', 'sm', 'geo', 'eci'). +probe (str): MMS spacecraft # (must be '1', '2', '3', or '4'). + +Returns: +list of str: List of variables created. +""" +import logging +from pytplot import get_data, get_coords from .mms_cotrans_qtransformer import mms_cotrans_qtransformer try: import spacepy.coordinates as coord except ImportError: - print('SpacePy must be installed to use this module.') - print('Please install it using: pip install spacepy') + logging.error('SpacePy must be installed to use this module.') + logging.error('Please install it using: pip install spacepy') def mms_qcotrans(in_name=None, out_name=None, in_coord=None, out_coord=None, probe=None): @@ -41,11 +56,11 @@ def mms_qcotrans(in_name=None, out_name=None, in_coord=None, out_coord=None, pro valid_coords = ['bcs', 'dbcs', 'dmpa', 'smpa', 'dsl', 'ssl', 'gse', 'gse2000', 'gsm', 'sm', 'geo', 'eci', 'j2000'] if in_name is None: - print('Input variable name is missing') + logging.error('Input variable name is missing') return if out_name is None: - print('Output variable name is missing') + logging.error('Output variable name is missing') return if not isinstance(in_name, list): @@ -58,10 +73,10 @@ def mms_qcotrans(in_name=None, out_name=None, in_coord=None, out_coord=None, pro for idx, variable in enumerate(in_name): if in_coord is None: - var_coords = cotrans_get_coord(variable) + var_coords = get_coords(variable) in_coord = var_coords if var_coords is None: - print('Could not determine coordinate system for: ' + variable) + logging.error('Could not determine coordinate system for: ' + variable) continue if isinstance(in_coord, list): @@ -72,7 +87,7 @@ def mms_qcotrans(in_name=None, out_name=None, in_coord=None, out_coord=None, pro var_coords = var_coords.lower() if var_coords not in valid_coords: - print('Unsupported input coordinate system: ' + var_coords) + logging.error('Unsupported input coordinate system: ' + var_coords) continue if isinstance(out_coord, list): @@ -80,19 +95,23 @@ def mms_qcotrans(in_name=None, out_name=None, in_coord=None, out_coord=None, pro else: new_coords = out_coord + if new_coords is None: + logging.error('Output coordinate system is missing.') + return + new_coords = new_coords.lower() if new_coords not in valid_coords: - print('Unsupported output coordinate system: ' + new_coords) + logging.error('Unsupported output coordinate system: ' + new_coords) if var_coords in ['bcs', 'ssl'] or new_coords in ['bcs', 'ssl']: - print('WARNING: there are issues transforming data to/from a spinning coordinate system') + logging.warning('WARNING: there are issues transforming data to/from a spinning coordinate system') # find the probe, if it's not specified by the user if probe is None: name_pieces = variable.split('_') if len(name_pieces) <= 1: - print('Probe could not be determined from: ' + variable + '; defaulting to probe 1') + logging.warning('Probe could not be determined from: ' + variable + '; defaulting to probe 1') probe = '1' else: probe = name_pieces[0][-1] @@ -101,11 +120,15 @@ def mms_qcotrans(in_name=None, out_name=None, in_coord=None, out_coord=None, pro probe = str(probe) if probe not in valid_probes: - print('Unknown probe for variable: ' + variable + '; continuing without transforming...') + logging.error('Unknown probe for variable: ' + variable + '; continuing without transforming...') continue transformed = mms_cotrans_qtransformer(variable, out_name[idx], var_coords, new_coords, probe=probe) + if transformed is None: + logging.error('Problem occurred during the transformation; ensure that the MEC quaternions are loaded and try again.') + return + if transformed is not None: out_vars.append(transformed) diff --git a/pyspedas/mms/dsp/dsp.py b/pyspedas/mms/dsp/dsp.py index 39554df0..cbd0ba6b 100644 --- a/pyspedas/mms/dsp/dsp.py +++ b/pyspedas/mms/dsp/dsp.py @@ -3,18 +3,19 @@ from pyspedas.mms.print_vars import print_vars from pyspedas.mms.mms_config import CONFIG + @print_vars def mms_load_dsp(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy', level='l2', datatype='bpsd', varformat=None, varnames=[], suffix='', get_support_data=False, time_clip=False, no_update=False, available=False, notplot=False, latest_version=False, major_version=False, min_version=None, cdf_version=None, spdf=False, always_prompt=False): """ - This function loads DSP data into tplot variables + Load data from the Digital Signal Processing (DSP) board. Parameters ---------- trange : list of str - time range of interest [starttime, endtime] with the format + time range of interest [start time, end time] with the format 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] @@ -54,11 +55,11 @@ def mms_load_dsp(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy notplot: bool If True, then data are returned in a hash table instead of being stored in tplot variables (useful for debugging, and - access to multi-dimensional data products) + access to multidimensional data products) available: bool If True, simply return the available data files (without downloading) - for the requested paramters + for the requested parameters no_update: bool Set this flag to preserve the original data. if not set and newer @@ -78,12 +79,13 @@ def mms_load_dsp(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy always_prompt: bool Set this keyword to always prompt for the user's username and password; - useful if you accidently save an incorrect password, or if your SDC password has changed + useful if you accidentally save an incorrect password, or if your SDC password has changed spdf: bool If True, download the data from the SPDF instead of the SDC - Returns: + Returns + -------- List of tplot variables created. """ @@ -97,4 +99,4 @@ def mms_load_dsp(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy mms_dsp_set_metadata(probe, data_rate, level, suffix=suffix) - return tvars \ No newline at end of file + return tvars diff --git a/pyspedas/mms/dsp/mms_dsp_set_metadata.py b/pyspedas/mms/dsp/mms_dsp_set_metadata.py index 4f542eaa..bb1cc6fd 100644 --- a/pyspedas/mms/dsp/mms_dsp_set_metadata.py +++ b/pyspedas/mms/dsp/mms_dsp_set_metadata.py @@ -1,6 +1,7 @@ from pytplot import options from pyspedas import tnames + def mms_dsp_set_metadata(probe, data_rate, level, suffix=''): """ This function updates the metadata for DSP data products @@ -21,9 +22,12 @@ def mms_dsp_set_metadata(probe, data_rate, level, suffix=''): no suffix is added. """ - if not isinstance(probe, list): probe = [probe] - if not isinstance(data_rate, list): data_rate = [data_rate] - if not isinstance(level, list): level = [level] + if not isinstance(probe, list): + probe = [probe] + if not isinstance(data_rate, list): + data_rate = [data_rate] + if not isinstance(level, list): + level = [level] instrument = 'dsp' @@ -39,7 +43,6 @@ def mms_dsp_set_metadata(probe, data_rate, level, suffix=''): options('mms'+str(this_probe)+'_'+instrument+'_bpsd_scm1_'+this_dr+'_'+this_lvl+suffix, 'spec', True) options('mms'+str(this_probe)+'_'+instrument+'_bpsd_scm1_'+this_dr+'_'+this_lvl+suffix, 'ylog', True) options('mms'+str(this_probe)+'_'+instrument+'_bpsd_scm1_'+this_dr+'_'+this_lvl+suffix, 'zlog', True) - options('mms'+str(this_probe)+'_'+instrument+'_bpsd_scm1_'+this_dr+'_'+this_lvl+suffix, 'Colormap', 'spedas') if 'mms'+str(this_probe)+'_'+instrument+'_bpsd_scm2_'+this_dr+'_'+this_lvl+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_bpsd_scm2_'+this_dr+'_'+this_lvl+suffix, 'ytitle', 'MMS'+str(this_probe)+' DSP BPSD SCM2') options('mms'+str(this_probe)+'_'+instrument+'_bpsd_scm2_'+this_dr+'_'+this_lvl+suffix, 'ysubtitle', '[Hz]') @@ -47,7 +50,6 @@ def mms_dsp_set_metadata(probe, data_rate, level, suffix=''): options('mms'+str(this_probe)+'_'+instrument+'_bpsd_scm2_'+this_dr+'_'+this_lvl+suffix, 'spec', True) options('mms'+str(this_probe)+'_'+instrument+'_bpsd_scm2_'+this_dr+'_'+this_lvl+suffix, 'ylog', True) options('mms'+str(this_probe)+'_'+instrument+'_bpsd_scm2_'+this_dr+'_'+this_lvl+suffix, 'zlog', True) - options('mms'+str(this_probe)+'_'+instrument+'_bpsd_scm2_'+this_dr+'_'+this_lvl+suffix, 'Colormap', 'spedas') if 'mms'+str(this_probe)+'_'+instrument+'_bpsd_scm3_'+this_dr+'_'+this_lvl+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_bpsd_scm3_'+this_dr+'_'+this_lvl+suffix, 'ytitle', 'MMS'+str(this_probe)+' DSP BPSD SCM3') options('mms'+str(this_probe)+'_'+instrument+'_bpsd_scm3_'+this_dr+'_'+this_lvl+suffix, 'ysubtitle', '[Hz]') @@ -55,7 +57,6 @@ def mms_dsp_set_metadata(probe, data_rate, level, suffix=''): options('mms'+str(this_probe)+'_'+instrument+'_bpsd_scm3_'+this_dr+'_'+this_lvl+suffix, 'spec', True) options('mms'+str(this_probe)+'_'+instrument+'_bpsd_scm3_'+this_dr+'_'+this_lvl+suffix, 'ylog', True) options('mms'+str(this_probe)+'_'+instrument+'_bpsd_scm3_'+this_dr+'_'+this_lvl+suffix, 'zlog', True) - options('mms'+str(this_probe)+'_'+instrument+'_bpsd_scm3_'+this_dr+'_'+this_lvl+suffix, 'Colormap', 'spedas') if 'mms'+str(this_probe)+'_'+instrument+'_bpsd_omni_'+this_dr+'_'+this_lvl+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_bpsd_omni_'+this_dr+'_'+this_lvl+suffix, 'ytitle', 'MMS'+str(this_probe)+' DSP BPSD') options('mms'+str(this_probe)+'_'+instrument+'_bpsd_omni_'+this_dr+'_'+this_lvl+suffix, 'ysubtitle', '[Hz]') @@ -63,7 +64,6 @@ def mms_dsp_set_metadata(probe, data_rate, level, suffix=''): options('mms'+str(this_probe)+'_'+instrument+'_bpsd_omni_'+this_dr+'_'+this_lvl+suffix, 'spec', True) options('mms'+str(this_probe)+'_'+instrument+'_bpsd_omni_'+this_dr+'_'+this_lvl+suffix, 'ylog', True) options('mms'+str(this_probe)+'_'+instrument+'_bpsd_omni_'+this_dr+'_'+this_lvl+suffix, 'zlog', True) - options('mms'+str(this_probe)+'_'+instrument+'_bpsd_omni_'+this_dr+'_'+this_lvl+suffix, 'Colormap', 'spedas') if 'mms'+str(this_probe)+'_'+instrument+'_epsd_omni'+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_epsd_omni'+suffix, 'ytitle', 'MMS'+str(this_probe)+' DSP EPSD') options('mms'+str(this_probe)+'_'+instrument+'_epsd_omni'+suffix, 'ysubtitle', '[Hz]') @@ -71,7 +71,6 @@ def mms_dsp_set_metadata(probe, data_rate, level, suffix=''): options('mms'+str(this_probe)+'_'+instrument+'_epsd_omni'+suffix, 'spec', True) options('mms'+str(this_probe)+'_'+instrument+'_epsd_omni'+suffix, 'ylog', True) options('mms'+str(this_probe)+'_'+instrument+'_epsd_omni'+suffix, 'zlog', True) - options('mms'+str(this_probe)+'_'+instrument+'_epsd_omni'+suffix, 'Colormap', 'spedas') if 'mms'+str(this_probe)+'_'+instrument+'_epsd_x'+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_epsd_x'+suffix, 'ytitle', 'MMS'+str(this_probe)+' DSP EPSD-X') options('mms'+str(this_probe)+'_'+instrument+'_epsd_x'+suffix, 'ysubtitle', '[Hz]') @@ -79,7 +78,6 @@ def mms_dsp_set_metadata(probe, data_rate, level, suffix=''): options('mms'+str(this_probe)+'_'+instrument+'_epsd_x'+suffix, 'spec', True) options('mms'+str(this_probe)+'_'+instrument+'_epsd_x'+suffix, 'ylog', True) options('mms'+str(this_probe)+'_'+instrument+'_epsd_x'+suffix, 'zlog', True) - options('mms'+str(this_probe)+'_'+instrument+'_epsd_x'+suffix, 'Colormap', 'spedas') if 'mms'+str(this_probe)+'_'+instrument+'_epsd_y'+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_epsd_y'+suffix, 'ytitle', 'MMS'+str(this_probe)+' DSP EPSD-Y') options('mms'+str(this_probe)+'_'+instrument+'_epsd_y'+suffix, 'ysubtitle', '[Hz]') @@ -87,7 +85,6 @@ def mms_dsp_set_metadata(probe, data_rate, level, suffix=''): options('mms'+str(this_probe)+'_'+instrument+'_epsd_y'+suffix, 'spec', True) options('mms'+str(this_probe)+'_'+instrument+'_epsd_y'+suffix, 'ylog', True) options('mms'+str(this_probe)+'_'+instrument+'_epsd_y'+suffix, 'zlog', True) - options('mms'+str(this_probe)+'_'+instrument+'_epsd_y'+suffix, 'Colormap', 'spedas') if 'mms'+str(this_probe)+'_'+instrument+'_epsd_z'+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_epsd_z'+suffix, 'ytitle', 'MMS'+str(this_probe)+' DSP EPSD-Z') options('mms'+str(this_probe)+'_'+instrument+'_epsd_z'+suffix, 'ysubtitle', '[Hz]') @@ -95,4 +92,3 @@ def mms_dsp_set_metadata(probe, data_rate, level, suffix=''): options('mms'+str(this_probe)+'_'+instrument+'_epsd_z'+suffix, 'spec', True) options('mms'+str(this_probe)+'_'+instrument+'_epsd_z'+suffix, 'ylog', True) options('mms'+str(this_probe)+'_'+instrument+'_epsd_z'+suffix, 'zlog', True) - options('mms'+str(this_probe)+'_'+instrument+'_epsd_z'+suffix, 'Colormap', 'spedas') \ No newline at end of file diff --git a/pyspedas/mms/edi/edi.py b/pyspedas/mms/edi/edi.py index cdca2803..4a649d48 100644 --- a/pyspedas/mms/edi/edi.py +++ b/pyspedas/mms/edi/edi.py @@ -3,18 +3,19 @@ from pyspedas.mms.print_vars import print_vars from pyspedas.mms.mms_config import CONFIG + @print_vars def mms_load_edi(trange=['2016-10-16', '2016-10-17'], probe='1', data_rate='srvy', level='l2', datatype='efield', varformat=None, varnames=[], get_support_data=False, suffix='', time_clip=False, no_update=False, available=False, notplot=False, latest_version=False, major_version=False, min_version=None, cdf_version=None, spdf=False, always_prompt=False): """ - This function loads EDI data into tplot variables + Load data from the Electron Drift Instrument (EDI) Parameters ---------- trange : list of str - time range of interest [starttime, endtime] with the format + time range of interest [start time, end time] with the format 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] @@ -54,11 +55,11 @@ def mms_load_edi(trange=['2016-10-16', '2016-10-17'], probe='1', data_rate='srvy notplot: bool If True, then data are returned in a hash table instead of being stored in tplot variables (useful for debugging, and - access to multi-dimensional data products) + access to multidimensional data products) available: bool If True, simply return the available data files (without downloading) - for the requested paramters + for the requested parameters no_update: bool Set this flag to preserve the original data. if not set and newer @@ -78,12 +79,13 @@ def mms_load_edi(trange=['2016-10-16', '2016-10-17'], probe='1', data_rate='srvy always_prompt: bool Set this keyword to always prompt for the user's username and password; - useful if you accidently save an incorrect password, or if your SDC password has changed + useful if you accidentally save an incorrect password, or if your SDC password has changed spdf: bool If True, download the data from the SPDF instead of the SDC - Returns: + Returns + -------- List of tplot variables created. """ diff --git a/pyspedas/mms/edi/mms_edi_set_metadata.py b/pyspedas/mms/edi/mms_edi_set_metadata.py index eeb7bdd0..57d8d76c 100644 --- a/pyspedas/mms/edi/mms_edi_set_metadata.py +++ b/pyspedas/mms/edi/mms_edi_set_metadata.py @@ -1,6 +1,7 @@ from pytplot import options from pyspedas import tnames + def mms_edi_set_metadata(probe, data_rate, level, suffix=''): """ This function updates the metadata for EDI data products @@ -34,25 +35,19 @@ def mms_edi_set_metadata(probe, data_rate, level, suffix=''): for this_lvl in level: if 'mms'+str(this_probe)+'_'+instrument+'_vdrift_dsl_'+this_dr+'_'+this_lvl+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_vdrift_dsl_'+this_dr+'_'+this_lvl+suffix, 'ytitle', 'MMS'+str(this_probe)+' EDI drift velocity') - options('mms'+str(this_probe)+'_'+instrument+'_vdrift_dsl_'+this_dr+'_'+this_lvl+suffix, 'color', ['b', 'g', 'r']) options('mms'+str(this_probe)+'_'+instrument+'_vdrift_dsl_'+this_dr+'_'+this_lvl+suffix, 'legend_names', ['Vx DSL', 'Vy DSL', 'Vz DSL']) if 'mms'+str(this_probe)+'_'+instrument+'_vdrift_gse_'+this_dr+'_'+this_lvl+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_vdrift_gse_'+this_dr+'_'+this_lvl+suffix, 'ytitle', 'MMS'+str(this_probe)+' EDI drift velocity') - options('mms'+str(this_probe)+'_'+instrument+'_vdrift_gse_'+this_dr+'_'+this_lvl+suffix, 'color', ['b', 'g', 'r']) options('mms'+str(this_probe)+'_'+instrument+'_vdrift_gse_'+this_dr+'_'+this_lvl+suffix, 'legend_names', ['Vx GSE', 'Vy GSE', 'Vz GSE']) if 'mms'+str(this_probe)+'_'+instrument+'_vdrift_gsm_'+this_dr+'_'+this_lvl+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_vdrift_gsm_'+this_dr+'_'+this_lvl+suffix, 'ytitle', 'MMS'+str(this_probe)+' EDI drift velocity') - options('mms'+str(this_probe)+'_'+instrument+'_vdrift_gsm_'+this_dr+'_'+this_lvl+suffix, 'color', ['b', 'g', 'r']) options('mms'+str(this_probe)+'_'+instrument+'_vdrift_gsm_'+this_dr+'_'+this_lvl+suffix, 'legend_names', ['Vx GSM', 'Vy GSM', 'Vz GSM']) if 'mms'+str(this_probe)+'_'+instrument+'_e_dsl_'+this_dr+'_'+this_lvl+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_e_dsl_'+this_dr+'_'+this_lvl+suffix, 'ytitle', 'MMS'+str(this_probe)+' EDI e-field') - options('mms'+str(this_probe)+'_'+instrument+'_e_dsl_'+this_dr+'_'+this_lvl+suffix, 'color', ['b', 'g', 'r']) options('mms'+str(this_probe)+'_'+instrument+'_e_dsl_'+this_dr+'_'+this_lvl+suffix, 'legend_names', ['Ex DSL', 'Ey DSL', 'Ez DSL']) if 'mms'+str(this_probe)+'_'+instrument+'_e_gse_'+this_dr+'_'+this_lvl+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_e_gse_'+this_dr+'_'+this_lvl+suffix, 'ytitle', 'MMS'+str(this_probe)+' EDI e-field') - options('mms'+str(this_probe)+'_'+instrument+'_e_gse_'+this_dr+'_'+this_lvl+suffix, 'color', ['b', 'g', 'r']) options('mms'+str(this_probe)+'_'+instrument+'_e_gse_'+this_dr+'_'+this_lvl+suffix, 'legend_names', ['Ex GSE', 'Ey GSE', 'Ez GSE']) if 'mms'+str(this_probe)+'_'+instrument+'_e_gsm_'+this_dr+'_'+this_lvl+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_e_gsm_'+this_dr+'_'+this_lvl+suffix, 'ytitle', 'MMS'+str(this_probe)+' EDI e-field') - options('mms'+str(this_probe)+'_'+instrument+'_e_gsm_'+this_dr+'_'+this_lvl+suffix, 'color', ['b', 'g', 'r']) - options('mms'+str(this_probe)+'_'+instrument+'_e_gsm_'+this_dr+'_'+this_lvl+suffix, 'legend_names', ['Ex GSM', 'Ey GSM', 'Ez GSM']) \ No newline at end of file + options('mms'+str(this_probe)+'_'+instrument+'_e_gsm_'+this_dr+'_'+this_lvl+suffix, 'legend_names', ['Ex GSM', 'Ey GSM', 'Ez GSM']) diff --git a/pyspedas/mms/edp/edp.py b/pyspedas/mms/edp/edp.py index 3191d8e1..0c2b322c 100644 --- a/pyspedas/mms/edp/edp.py +++ b/pyspedas/mms/edp/edp.py @@ -3,18 +3,19 @@ from pyspedas.mms.print_vars import print_vars from pyspedas.mms.mms_config import CONFIG + @print_vars def mms_load_edp(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='fast', level='l2', datatype='dce', varformat=None, varnames=[], get_support_data=False, suffix='', time_clip=True, no_update=False, available=False, notplot=False, latest_version=False, major_version=False, min_version=None, cdf_version=None, spdf=False, always_prompt=False): """ - This function loads EDP data into tplot variables + Load data from the Electric field Double Probes (EDP) instrument Parameters ---------- trange : list of str - time range of interest [starttime, endtime] with the format + time range of interest [start time, end time] with the format 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] @@ -54,11 +55,11 @@ def mms_load_edp(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='fast notplot: bool If True, then data are returned in a hash table instead of being stored in tplot variables (useful for debugging, and - access to multi-dimensional data products) + access to multidimensional data products) available: bool If True, simply return the available data files (without downloading) - for the requested paramters + for the requested parameters no_update: bool Set this flag to preserve the original data. if not set and newer @@ -78,15 +79,23 @@ def mms_load_edp(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='fast always_prompt: bool Set this keyword to always prompt for the user's username and password; - useful if you accidently save an incorrect password, or if your SDC password has changed + useful if you accidentally save an incorrect password, or if your SDC password has changed spdf: bool If True, download the data from the SPDF instead of the SDC - Returns: + Returns + -------- List of tplot variables created. """ + + # as of 20 June 2023, there's a mixture of v2.x.x and v3.x.x files at the SDC + # these files aren't compatible, so we need to only load the latest major version + # to avoid crashes (unless otherwise specified) + if not latest_version and not major_version and min_version is None and cdf_version is None: + major_version = True + tvars = mms_load_data(trange=trange, notplot=notplot, probe=probe, data_rate=data_rate, level=level, instrument='edp', datatype=datatype, varformat=varformat, varnames=varnames, get_support_data=get_support_data, suffix=suffix, time_clip=time_clip, no_update=no_update, available=available, latest_version=latest_version, diff --git a/pyspedas/mms/edp/mms_edp_set_metadata.py b/pyspedas/mms/edp/mms_edp_set_metadata.py index 9411cff9..a43644d1 100644 --- a/pyspedas/mms/edp/mms_edp_set_metadata.py +++ b/pyspedas/mms/edp/mms_edp_set_metadata.py @@ -1,6 +1,7 @@ from pytplot import options from pyspedas import tnames + def mms_edp_set_metadata(probe, data_rate, level, suffix=''): """ This function updates the metadata for EDP data products @@ -34,11 +35,9 @@ def mms_edp_set_metadata(probe, data_rate, level, suffix=''): for this_lvl in level: if 'mms'+str(this_probe)+'_'+instrument+'_dce_gse_'+this_dr+'_'+this_lvl+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_dce_gse_'+this_dr+'_'+this_lvl+suffix, 'ytitle', 'MMS'+str(this_probe)+' EDP DCE') - options('mms'+str(this_probe)+'_'+instrument+'_dce_gse_'+this_dr+'_'+this_lvl+suffix, 'color', ['b', 'g', 'r']) options('mms'+str(this_probe)+'_'+instrument+'_dce_gse_'+this_dr+'_'+this_lvl+suffix, 'legend_names', ['Ex GSE', 'Ey GSE', 'Ez GSE']) if 'mms'+str(this_probe)+'_'+instrument+'_dce_dsl_'+this_dr+'_'+this_lvl+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_dce_dsl_'+this_dr+'_'+this_lvl+suffix, 'ytitle', 'MMS'+str(this_probe)+' EDP DCE') - options('mms'+str(this_probe)+'_'+instrument+'_dce_dsl_'+this_dr+'_'+this_lvl+suffix, 'color', ['b', 'g', 'r']) options('mms'+str(this_probe)+'_'+instrument+'_dce_dsl_'+this_dr+'_'+this_lvl+suffix, 'legend_names', ['Ex DSL', 'Ey DSL', 'Ez DSL']) if 'mms'+str(this_probe)+'_'+instrument+'_hfesp_'+this_dr+'_'+this_lvl+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_hfesp_'+this_dr+'_'+this_lvl+suffix, 'ytitle', 'MMS'+str(this_probe)+' EDP HFesp') @@ -46,4 +45,3 @@ def mms_edp_set_metadata(probe, data_rate, level, suffix=''): options('mms'+str(this_probe)+'_'+instrument+'_hfesp_'+this_dr+'_'+this_lvl+suffix, 'ylog', True) options('mms'+str(this_probe)+'_'+instrument+'_hfesp_'+this_dr+'_'+this_lvl+suffix, 'zlog', True) options('mms'+str(this_probe)+'_'+instrument+'_hfesp_'+this_dr+'_'+this_lvl+suffix, 'spec', True) - options('mms'+str(this_probe)+'_'+instrument+'_hfesp_'+this_dr+'_'+this_lvl+suffix, 'Colormap', 'jet') \ No newline at end of file diff --git a/pyspedas/mms/eis/eis.py b/pyspedas/mms/eis/eis.py index dd2f0c43..8bc7bcd2 100644 --- a/pyspedas/mms/eis/eis.py +++ b/pyspedas/mms/eis/eis.py @@ -4,21 +4,21 @@ from pyspedas.mms.eis.mms_eis_set_metadata import mms_eis_set_metadata from pyspedas.mms.print_vars import print_vars from pyspedas.mms.mms_config import CONFIG - from pyspedas import tnames + @print_vars def mms_load_eis(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy', level='l2', datatype='extof', varformat=None, varnames=[], get_support_data=True, suffix='', time_clip=False, no_update=False, available=False, notplot=False, latest_version=False, major_version=False, min_version=None, cdf_version=None, spdf=False, always_prompt=False): """ - This function loads EIS data into tplot variables + Load data from the Energetic Ion Spectrometer (EIS) Parameters ---------- trange : list of str - time range of interest [starttime, endtime] with the format + time range of interest [start time, end time] with the format 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] @@ -58,11 +58,11 @@ def mms_load_eis(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy notplot: bool If True, then data are returned in a hash table instead of being stored in tplot variables (useful for debugging, and - access to multi-dimensional data products) + access to multidimensional data products) available: bool If True, simply return the available data files (without downloading) - for the requested paramters + for the requested parameters no_update: bool Set this flag to preserve the original data. if not set and newer @@ -82,12 +82,13 @@ def mms_load_eis(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy always_prompt: bool Set this keyword to always prompt for the user's username and password; - useful if you accidently save an incorrect password, or if your SDC password has changed + useful if you accidentally save an incorrect password, or if your SDC password has changed spdf: bool If True, download the data from the SPDF instead of the SDC - Returns: + Returns + ---------- List of tplot variables created. """ @@ -97,7 +98,7 @@ def mms_load_eis(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy time_clip=time_clip, no_update=no_update, available=available, latest_version=latest_version, major_version=major_version, min_version=min_version, cdf_version=cdf_version, spdf=spdf, always_prompt=always_prompt) - if tvars == [] or available or notplot or CONFIG['download_only']: + if tvars == [] or available or notplot or CONFIG['download_only'] or tvars is None: return tvars if not isinstance(probe, list): probe = [probe] diff --git a/pyspedas/mms/eis/mms_eis_omni.py b/pyspedas/mms/eis/mms_eis_omni.py index c55051f2..c0e038bb 100644 --- a/pyspedas/mms/eis/mms_eis_omni.py +++ b/pyspedas/mms/eis/mms_eis_omni.py @@ -1,15 +1,14 @@ - import logging import numpy as np -from pytplot import get_data, store_data, options -from ...utilities.tnames import tnames +from pytplot import get_data, store_data, options, tnames logging.captureWarnings(True) logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) + def mms_eis_omni(probe, species='proton', datatype='extof', suffix='', data_units='flux', data_rate='srvy', level='l2'): """ - This function will calculate the omni-directional EIS spectrograms, and is automatically called from mms_load_eis + This function will calculate the omnidirectional EIS spectrograms, and is automatically called from mms_load_eis Parameters ---------- @@ -34,8 +33,8 @@ def mms_eis_omni(probe, species='proton', datatype='extof', suffix='', data_unit level: str data level ['l1a','l1b','l2pre','l2' (default)] - - Returns: + Returns + --------- Name of tplot variable created. """ @@ -74,7 +73,6 @@ def mms_eis_omni(probe, species='proton', datatype='extof', suffix='', data_unit options(prefix + species_str + '_' + data_units + '_omni' + suffix, 'ytitle', 'MMS' + probe + ' ' + datatype + ' ' + species) options(prefix + species_str + '_' + data_units + '_omni' + suffix, 'ysubtitle', 'Energy [keV]') options(prefix + species_str + '_' + data_units + '_omni' + suffix, 'yrange', [14, 45]) - options(prefix + species_str + '_' + data_units + '_omni' + suffix, 'Colormap', 'spedas') # create new variable with omni energy limits energy_minus = get_data(prefix + species_str + '_t0_energy_dminus' + suffix) diff --git a/pyspedas/mms/eis/mms_eis_pad.py b/pyspedas/mms/eis/mms_eis_pad.py index a17df380..a82810a4 100644 --- a/pyspedas/mms/eis/mms_eis_pad.py +++ b/pyspedas/mms/eis/mms_eis_pad.py @@ -16,6 +16,7 @@ logging.captureWarnings(True) logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) + def mms_eis_pad(scopes=['0', '1', '2', '3', '4', '5'], probe='1', level='l2', data_rate='srvy', datatype='extof', species='proton', data_units='flux', energy=[55, 800], size_pabin=15, suffix=''): @@ -54,7 +55,8 @@ def mms_eis_pad(scopes=['0', '1', '2', '3', '4', '5'], probe='1', level='l2', suffix: str suffix of the loaded data - Returns: + Returns + ---------- Name of tplot variables created. """ @@ -86,7 +88,6 @@ def mms_eis_pad(scopes=['0', '1', '2', '3', '4', '5'], probe='1', level='l2', # the probes will need to be strings beyond this point probe = [str(p) for p in probe] - logging.info('Calculating the EIS pitch angle distribution; this may take several minutes') for probe_id in probe: @@ -158,7 +159,6 @@ def mms_eis_pad(scopes=['0', '1', '2', '3', '4', '5'], probe='1', level='l2', options(new_name, 'ylog', False) options(new_name, 'zlog', True) options(new_name, 'spec', True) - options(new_name, 'Colormap', 'spedas') options(new_name, 'ztitle', units_label) options(new_name, 'ytitle', 'MMS' + str(probe_id) + ' ' + datatype_id + ' PA (deg)') out_vars.append(new_name) @@ -191,7 +191,6 @@ def mms_eis_pad(scopes=['0', '1', '2', '3', '4', '5'], probe='1', level='l2', options(new_name, 'ylog', False) options(new_name, 'zlog', True) options(new_name, 'spec', True) - options(new_name, 'Colormap', 'spedas') options(new_name, 'ztitle', units_label) options(new_name, 'ytitle', 'MMS' + str(probe_id) + ' ' + datatype_id + ' PA') options(new_name, 'ysubtitle', '[deg]') diff --git a/pyspedas/mms/eis/mms_eis_pad_spinavg.py b/pyspedas/mms/eis/mms_eis_pad_spinavg.py index b6a5f213..e4fb8de0 100644 --- a/pyspedas/mms/eis/mms_eis_pad_spinavg.py +++ b/pyspedas/mms/eis/mms_eis_pad_spinavg.py @@ -1,4 +1,3 @@ - import logging import warnings import numpy as np @@ -16,6 +15,7 @@ logging.captureWarnings(True) logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) + def mms_eis_pad_spinavg(scopes=['0','1','2','3','4','5'], probe='1', data_rate='srvy', level='l2', datatype='extof', data_units='flux', species='proton', energy=[55, 800], size_pabin=15, suffix=''): @@ -54,7 +54,8 @@ def mms_eis_pad_spinavg(scopes=['0','1','2','3','4','5'], probe='1', suffix: str suffix of the loaded data - Returns: + Returns + -------- Name of tplot variables created. """ @@ -111,10 +112,9 @@ def mms_eis_pad_spinavg(scopes=['0','1','2','3','4','5'], probe='1', options(newname, 'ylog', False) options(newname, 'zlog', True) options(newname, 'spec', True) - options(newname, 'Colormap', 'spedas') options(newname, 'ztitle', units_label) options(newname, 'ytitle', 'MMS' + str(probe) + ' ' + datatype + ' spin PAD') options(newname, 'ysubtitle', '[deg]') out_vars.append(newname) - return out_vars \ No newline at end of file + return out_vars diff --git a/pyspedas/mms/eis/mms_eis_set_metadata.py b/pyspedas/mms/eis/mms_eis_set_metadata.py index 7aeb2986..8ba6f924 100644 --- a/pyspedas/mms/eis/mms_eis_set_metadata.py +++ b/pyspedas/mms/eis/mms_eis_set_metadata.py @@ -1,6 +1,7 @@ from pyspedas import tnames from pytplot import options + def mms_eis_set_metadata(tplotnames, data_rate='srvy', datatype='extof', suffix=''): """ This function updates the metadata for the EIS data products @@ -31,4 +32,4 @@ def mms_eis_set_metadata(tplotnames, data_rate='srvy', datatype='extof', suffix= options(tnames('*_extof_helium_flux_omni*'), 'x_interp', True) options(tnames('*_extof_helium_flux_omni*'), 'y_interp', True) options(tnames('*_extof_oxygen_flux_omni*'), 'x_interp', True) - options(tnames('*_extof_oxygen_flux_omni*'), 'y_interp', True) \ No newline at end of file + options(tnames('*_extof_oxygen_flux_omni*'), 'y_interp', True) diff --git a/pyspedas/mms/eis/mms_eis_spec_combine_sc.py b/pyspedas/mms/eis/mms_eis_spec_combine_sc.py index 28c0c44e..7267d51b 100644 --- a/pyspedas/mms/eis/mms_eis_spec_combine_sc.py +++ b/pyspedas/mms/eis/mms_eis_spec_combine_sc.py @@ -1,3 +1,4 @@ +import logging import numpy as np # use nanmean from bottleneck if it's installed, otherwise use the numpy one # bottleneck nanmean is ~2.5x faster @@ -6,14 +7,14 @@ nanmean = bn.nanmean except ImportError: nanmean = np.nanmean -from pytplot import get_data, store_data, options -from ...utilities.tnames import tnames +from pytplot import get_data, store_data, options, tnames + def mms_eis_spec_combine_sc( species='proton', data_units='flux', datatype='extof', data_rate='srvy', level='l2', suffix='', ): - ''' + """ Combines omni-directional energy spectrogram variable from EIS on multiple MMS spacecraft. @@ -38,9 +39,10 @@ def mms_eis_spec_combine_sc( species for calculation, e.g., proton, oxygen, alpha or electron (default: 'proton') - Returns: + Returns + -------- Name of tplot variables created. - ''' + """ ## Thoughts for extensions: ## - Ensure arguments passed to modules are of lowecase @@ -77,7 +79,7 @@ def mms_eis_spec_combine_sc( if probes: probe_string = probes[0] else: - print('No probes found from eis_sc_check tnames.') + logging.error('No probes found from eis_sc_check tnames.') return allmms_prefix = 'mmsx_epd_eis_' + data_rate + '_' + level + '_' + dtype + '_' @@ -87,7 +89,7 @@ def mms_eis_spec_combine_sc( omni_vars = tnames('mms?_epd_eis_'+data_rate+'_'+level+'_'+dtype+'_'+_species+'_'+data_units+'_omni'+suffix) if not omni_vars: - print('No EIS '+dtype+'data loaded!') + logging.error('No EIS '+dtype+'data loaded!') return time_size = np.zeros(len(probes)) @@ -147,7 +149,6 @@ def mms_eis_spec_combine_sc( options(new_name, 'ylog', True) options(new_name, 'zlog', True) options(new_name, 'spec', True) - options(new_name, 'Colormap', 'spedas') options(new_name, 'ztitle', units_label) options(new_name, 'ytitle', ' \\ '.join(['mms'+probe_string, _species.upper(), 'Energy [keV]'])) out_vars.append(new_name) @@ -155,7 +156,7 @@ def mms_eis_spec_combine_sc( # Spin-average the data spin_nums = get_data(prefix+'spin'+suffix) if spin_nums is None: - print('Error: Could not find EIS spin variable -- now ending procedure.') + logging.error('Error: Could not find EIS spin variable -- now ending procedure.') return # find where the spin starts diff --git a/pyspedas/mms/eis/mms_eis_spin_avg.py b/pyspedas/mms/eis/mms_eis_spin_avg.py index 0f22eefd..518eb0f9 100644 --- a/pyspedas/mms/eis/mms_eis_spin_avg.py +++ b/pyspedas/mms/eis/mms_eis_spin_avg.py @@ -1,4 +1,3 @@ - import logging import warnings import numpy as np @@ -16,6 +15,7 @@ logging.captureWarnings(True) logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) + def mms_eis_spin_avg(probe='1', species='proton', data_units='flux', datatype='extof', data_rate='srvy', level='l2', suffix=''): """ This function will spin-average the EIS spectrograms, and is automatically called from mms_load_eis @@ -43,7 +43,8 @@ def mms_eis_spin_avg(probe='1', species='proton', data_units='flux', datatype='e suffix: str suffix of the loaded data - Returns: + Returns + -------- List of tplot variables created. """ prefix = 'mms' + probe + '_epd_eis_' + data_rate + '_' + level + '_' @@ -100,9 +101,8 @@ def mms_eis_spin_avg(probe='1', species='proton', data_units='flux', datatype='e options(this_scope + '_spin', 'spec', True) options(this_scope + '_spin', 'ylog', True) options(this_scope + '_spin', 'zlog', True) - options(this_scope + '_spin', 'Colormap', 'spedas') out_vars.append(this_scope + '_spin') return out_vars else: logging.error('Error, problem finding EIS spin variable to calculate spin-averages') - return None \ No newline at end of file + return diff --git a/pyspedas/mms/feeps/feeps.py b/pyspedas/mms/feeps/feeps.py index f176ead4..8cf457ff 100644 --- a/pyspedas/mms/feeps/feeps.py +++ b/pyspedas/mms/feeps/feeps.py @@ -9,6 +9,8 @@ from pyspedas.mms.feeps.mms_feeps_spin_avg import mms_feeps_spin_avg from pyspedas.mms.print_vars import print_vars from pyspedas.mms.mms_config import CONFIG +from pytplot import time_clip as tclip + @print_vars def mms_load_feeps(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy', @@ -16,12 +18,12 @@ def mms_load_feeps(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='sr no_update=False, available=False, notplot=False, no_flatfield_corrections=False, data_units=['count_rate', 'intensity'], latest_version=False, major_version=False, min_version=None, cdf_version=None, spdf=False, always_prompt=False): """ - This function loads FEEPS data into tplot variables + Load data from the Fly's Eye Energetic Particle Sensor (FEEPS) Parameters ---------- trange : list of str - time range of interest [starttime, endtime] with the format + time range of interest [start time, end time] with the format 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] @@ -63,11 +65,11 @@ def mms_load_feeps(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='sr notplot: bool If True, then data are returned in a hash table instead of being stored in tplot variables (useful for debugging, and - access to multi-dimensional data products) + access to multidimensional data products) available: bool If True, simply return the available data files (without downloading) - for the requested paramters + for the requested parameters no_update: bool Set this flag to preserve the original data. if not set and newer @@ -87,21 +89,29 @@ def mms_load_feeps(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='sr always_prompt: bool Set this keyword to always prompt for the user's username and password; - useful if you accidently save an incorrect password, or if your SDC password has changed + useful if you accidentally save an incorrect password, or if your SDC password has changed spdf: bool If True, download the data from the SPDF instead of the SDC - Returns: + Returns + --------- List of tplot variables created. """ + + # as of 3 July 2023, there's a mixture of v7.x.x and v6.x.x files at the SDC + # these files aren't compatible, so we need to only load the latest major version + # to avoid crashes (unless otherwise specified) + if not latest_version and not major_version and min_version is None and cdf_version is None: + major_version = True + tvars = mms_load_data(trange=trange, notplot=notplot, probe=probe, data_rate=data_rate, level=level, instrument='feeps', datatype=datatype, varformat=varformat, varnames=varnames, get_support_data=get_support_data, suffix=suffix, - time_clip=time_clip, no_update=no_update, available=available, latest_version=latest_version, + no_update=no_update, available=available, latest_version=latest_version, major_version=major_version, min_version=min_version, cdf_version=cdf_version, spdf=spdf, always_prompt=always_prompt) - if tvars == [] or available or notplot or CONFIG['download_only']: + if tvars == [] or available or notplot or CONFIG['download_only'] or tvars is None: return tvars probes = probe if isinstance(probe, list) else [probe] @@ -121,19 +131,33 @@ def mms_load_feeps(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='sr for lvl in levels: for drate in data_rates: for datatype in datatypes: - mms_feeps_remove_bad_data(trange=trange, probe=probe, data_rate=drate, datatype =datatype, level=lvl, suffix=suffix) + mms_feeps_remove_bad_data(trange=trange, probe=probe, data_rate=drate, datatype =datatype, level=lvl, suffix=suffix) + + for data_unit in data_units: + eyes = mms_feeps_active_eyes(trange, probe, drate, datatype, lvl) + + split_vars = mms_feeps_split_integral_ch(data_unit, datatype, probe, suffix=suffix, data_rate=drate, level=lvl, sensor_eyes=eyes) + + sun_removed_vars = mms_feeps_remove_sun(eyes, trange, probe=probe, datatype=datatype, data_units=data_unit, data_rate=drate, level=lvl, suffix=suffix) + + omni_vars = mms_feeps_omni(eyes, probe=probe, datatype=datatype, data_units=data_unit, data_rate=drate, level=lvl, suffix=suffix) + + if split_vars is not None: + tvars = tvars + split_vars - for data_unit in data_units: - eyes = mms_feeps_active_eyes(trange, probe, drate, datatype, lvl) + if sun_removed_vars is not None: + tvars = tvars + sun_removed_vars - split_vars = mms_feeps_split_integral_ch(data_unit, datatype, probe, suffix=suffix, data_rate=drate, level=lvl, sensor_eyes=eyes) + if omni_vars is not None: + tvars = tvars + omni_vars - sun_removed_vars = mms_feeps_remove_sun(eyes, trange, probe=probe, datatype=datatype, data_units=data_unit, data_rate=drate, level=lvl, suffix=suffix) + spin_avg_vars = mms_feeps_spin_avg(probe=probe, data_units=data_unit, datatype=datatype, data_rate=drate, level=lvl, suffix=suffix) - omni_vars = mms_feeps_omni(eyes, probe=probe, datatype=datatype, data_units=data_unit, data_rate=drate, level=lvl, suffix=suffix) + if spin_avg_vars is not None: + tvars.append(spin_avg_vars) - tvars = tvars + split_vars + sun_removed_vars + omni_vars - - tvars.append(mms_feeps_spin_avg(probe=probe, data_units=data_unit, datatype=datatype, data_rate=drate, level=lvl, suffix=suffix)) + if time_clip: + for new_var in tvars: + tclip(new_var, trange[0], trange[1], suffix='') return tvars diff --git a/pyspedas/mms/feeps/mms_feeps_active_eyes.py b/pyspedas/mms/feeps/mms_feeps_active_eyes.py index 27fc4575..848e718d 100644 --- a/pyspedas/mms/feeps/mms_feeps_active_eyes.py +++ b/pyspedas/mms/feeps/mms_feeps_active_eyes.py @@ -1,5 +1,7 @@ +import numpy as np from pyspedas import time_double + def mms_feeps_active_eyes(trange, probe, data_rate, species, level): """ This function returns the FEEPS active eyes, based on date/probe/species/rate @@ -69,6 +71,8 @@ def mms_feeps_active_eyes(trange, probe, data_rate, species, level): if isinstance(trange[0], str): start_time = time_double(trange[0]) + elif isinstance(trange[0], np.datetime64): + start_time = np.int64(trange[0]) / 1e9 else: start_time = trange[0] @@ -90,5 +94,3 @@ def mms_feeps_active_eyes(trange, probe, data_rate, species, level): return {'top': [5, 11, 12], 'bottom': []} return sensors - - diff --git a/pyspedas/mms/feeps/mms_feeps_correct_energies.py b/pyspedas/mms/feeps/mms_feeps_correct_energies.py index 652a74c2..7606bfdb 100644 --- a/pyspedas/mms/feeps/mms_feeps_correct_energies.py +++ b/pyspedas/mms/feeps/mms_feeps_correct_energies.py @@ -1,13 +1,15 @@ -from pytplot import get_data, store_data +from pytplot import get, store from .mms_feeps_energy_table import mms_feeps_energy_table from pyspedas import tnames + def mms_feeps_correct_energies(probes, data_rate, level='l2', suffix=''): """ This function modifies the energy table in FEEPS spectra (intensity, count_rate, counts) variables using the function: mms_feeps_energy_table (which is s/c, sensor head and sensor ID dependent) - Parameters: + Parameters + ------------- probes: list of str list of probes #, e.g., '4' for MMS4 @@ -20,7 +22,8 @@ def mms_feeps_correct_energies(probes, data_rate, level='l2', suffix=''): suffix: str suffix of the loaded data - Notes: + Notes + ------- BAD EYES are replaced by NaNs """ types = ['top', 'bottom'] @@ -43,7 +46,7 @@ def mms_feeps_correct_energies(probes, data_rate, level='l2', suffix=''): else: var_name = var_name[0] - var_data = get_data(var_name) + var_data = get(var_name) if var_data is not None: times, data, energies = var_data else: @@ -52,6 +55,6 @@ def mms_feeps_correct_energies(probes, data_rate, level='l2', suffix=''): energy_map = mms_feeps_energy_table(probe, sensor_type[0:3], sensor) try: - store_data(var_name, data={'x': times, 'y': data, 'v': energy_map}) + store(var_name, data={'x': times, 'y': data, 'v': energy_map}) except: - continue \ No newline at end of file + continue diff --git a/pyspedas/mms/feeps/mms_feeps_energy_table.py b/pyspedas/mms/feeps/mms_feeps_energy_table.py index 75110ea6..ab4790fa 100644 --- a/pyspedas/mms/feeps/mms_feeps_energy_table.py +++ b/pyspedas/mms/feeps/mms_feeps_energy_table.py @@ -1,5 +1,6 @@ import numpy as np + def mms_feeps_energy_table(probe, eye, sensor_id): """ This function returns the energy table based on @@ -9,7 +10,8 @@ def mms_feeps_energy_table(probe, eye, sensor_id): from Drew Turner, 1/19/2017 - Parameters: + Parameters + ------------- probe: str probe #, e.g., '4' for MMS4 @@ -19,10 +21,12 @@ def mms_feeps_energy_table(probe, eye, sensor_id): sensor_id: int sensor ID - Returns: + Returns + -------- Energy table - Notes: + Notes + -------- BAD EYES are replaced by NaNs - different original energy tables are used depending on if the sensor head is 6-8 (ions) or not (electrons) @@ -51,4 +55,4 @@ def mms_feeps_energy_table(probe, eye, sensor_id): mms_energies = [33.200000, 51.900000, 70.600000, 89.400000, 107.10000, 125.20000, 146.50000, 171.30000, 200.20000, 234.00000, 273.40000, 319.40000, 373.20000, 436.00000, 509.20000, 575.80000] - return [energy+ table['mms'+probe+'-'+eye][sensor_id-1] for energy in mms_energies] \ No newline at end of file + return [energy+ table['mms'+probe+'-'+eye][sensor_id-1] for energy in mms_energies] diff --git a/pyspedas/mms/feeps/mms_feeps_flat_field_corrections.py b/pyspedas/mms/feeps/mms_feeps_flat_field_corrections.py index e590ab97..dfcb5dab 100644 --- a/pyspedas/mms/feeps/mms_feeps_flat_field_corrections.py +++ b/pyspedas/mms/feeps/mms_feeps_flat_field_corrections.py @@ -1,8 +1,8 @@ import numpy as np - -from pytplot import get_data, store_data +from pytplot import get, store from pyspedas import tnames + def mms_feeps_flat_field_corrections(probes = ['1', '2', '3', '4'], data_rate = 'brst', suffix = ''): """ Apply flat field correction factors to FEEPS ion/electron data; @@ -12,7 +12,8 @@ def mms_feeps_flat_field_corrections(probes = ['1', '2', '3', '4'], data_rate = from Drew Turner, 1/19/2017 - Parameters: + Parameters + --------------- probes: list of str list of probes #, e.g., '4' for MMS4 @@ -22,7 +23,8 @@ def mms_feeps_flat_field_corrections(probes = ['1', '2', '3', '4'], data_rate = suffix: str suffix of the loaded data - Notes: + Notes + --------------- From Drew Turner, 1/18/17: Here are the correction factors that we need to apply to the current ION counts/rates/fluxes in the CDF files. @@ -118,35 +120,32 @@ def mms_feeps_flat_field_corrections(probes = ['1', '2', '3', '4'], data_rate = i_var = tnames('mms'+probe+'_epd_feeps_'+data_rate+'_'+level+'_'+species_id+'_'+sensor_type+'_intensity_sensorid_'+sensor_id+suffix) c_var = tnames('mms'+probe+'_epd_feeps_'+data_rate+'_'+level+'_'+species_id+'_'+sensor_type+'_counts_sensorid_'+sensor_id+suffix) - if cr_var == []: + if not cr_var: count_rate = None else: - count_rate = get_data(cr_var[0]) + count_rate = get(cr_var[0]) if count_rate is not None: cr_times, cr_data, cr_energies = count_rate if np.isnan(cr_energies).all(): continue - store_data(cr_var[0], data={'x': cr_times, 'y': cr_data*correction, 'v': cr_energies}) + store(cr_var[0], data={'x': cr_times, 'y': cr_data*correction, 'v': cr_energies}) - if i_var == []: + if not i_var: intensity = None else: - intensity = get_data(i_var[0]) + intensity = get(i_var[0]) if intensity is not None: i_times, i_data, i_energies = intensity if np.isnan(i_energies).all(): continue - store_data(i_var[0], data={'x': i_times, 'y': i_data*correction, 'v': i_energies}) + store(i_var[0], data={'x': i_times, 'y': i_data*correction, 'v': i_energies}) - if c_var == []: + if not c_var: counts = None else: - counts = get_data(c_var[0]) + counts = get(c_var[0]) if counts is not None: c_times, c_data, c_energies = counts if np.isnan(c_energies).all(): continue - store_data(c_var[0], data={'x': c_times, 'y': c_data*correction, 'v': c_energies}) - - - + store(c_var[0], data={'x': c_times, 'y': c_data*correction, 'v': c_energies}) diff --git a/pyspedas/mms/feeps/mms_feeps_getgyrophase.py b/pyspedas/mms/feeps/mms_feeps_getgyrophase.py index dfc963b7..49609193 100644 --- a/pyspedas/mms/feeps/mms_feeps_getgyrophase.py +++ b/pyspedas/mms/feeps/mms_feeps_getgyrophase.py @@ -1,7 +1,9 @@ +import logging import numpy as np from pyspedas import mms, tinterpol, time_double from pyspedas.mms.feeps.mms_feeps_active_eyes import mms_feeps_active_eyes -from pytplot import get_data, store_data, options +from pytplot import get, store, options + def mms_feeps_getgyrophase(trange=['2017-07-11/22:30', '2017-07-11/22:35'], probe='2', data_rate='brst', level='l2', datatype='electron'): """ @@ -15,11 +17,11 @@ def mms_feeps_getgyrophase(trange=['2017-07-11/22:30', '2017-07-11/22:35'], prob """ mec_vars = mms.mec(trange=trange, probe=probe, data_rate=data_rate) if mec_vars is None: - print('Problem loading MEC data for calculating FEEPS gyrophase angles') + logging.error('Problem loading MEC data for calculating FEEPS gyrophase angles') - qeci2sm = get_data('mms'+probe+'_mec_quat_eci_to_sm') - qeci2bcs = get_data('mms'+probe+'_mec_quat_eci_to_bcs') - rsun = get_data('mms'+probe+'_mec_r_sun_de421_eci') + qeci2sm = get('mms'+probe+'_mec_quat_eci_to_sm', units=False) + qeci2bcs = get('mms'+probe+'_mec_quat_eci_to_bcs', units=False) + rsun = get('mms'+probe+'_mec_r_sun_de421_eci', units=False) rsunbcs = np.zeros((len(rsun.times), 3)) rduskbcs = np.zeros((len(rsun.times), 3)) @@ -49,13 +51,13 @@ def mms_feeps_getgyrophase(trange=['2017-07-11/22:30', '2017-07-11/22:35'], prob # Now convert to BCS: rduskbcs[i, :] = np.array([R[0,0]*rduskeci[0] + R[1,0]*rduskeci[1] + R[2,0]*rduskeci[2], R[0,1]*rduskeci[0] + R[1,1]*rduskeci[1] + R[2,1]*rduskeci[2], R[0,2]*rduskeci[0] + R[1,2]*rduskeci[1] + R[2,2]*rduskeci[2]]) - saved = store_data('mms'+probe+'_mec_r_sun_bcs', data = {'x': rsun.times, 'y': rsunbcs}) + saved = store('mms'+probe+'_mec_r_sun_bcs', data = {'x': rsun.times, 'y': rsunbcs}) if not saved: - print('Problem saving r_sun_bcs') + logging.error('Problem saving r_sun_bcs') - saved = store_data('mms'+probe+'_mec_r_dusk_bcs', data = {'x': rsun.times, 'y': rduskbcs}) + saved = store('mms'+probe+'_mec_r_dusk_bcs', data = {'x': rsun.times, 'y': rduskbcs}) if not saved: - print('Problem saving r_dusk_bcs') + logging.error('Problem saving r_dusk_bcs') # Rotation matrices for FEEPS coord system (FCS) into body coordinate system (BCS): Ttop = np.array([[1./np.sqrt(2.), -1./np.sqrt(2.), 0], [1./np.sqrt(2.), 1./np.sqrt(2.), 0], [0, 0, 1]]).T @@ -156,12 +158,12 @@ def mms_feeps_getgyrophase(trange=['2017-07-11/22:30', '2017-07-11/22:35'], prob fgm_vars = mms.fgm(trange=[time_double(trange[0])-600, time_double(trange[1])+600], probe=probe, data_rate='srvy') if fgm_vars is None: - print('Problem loading FGM vars for calculating FEEPS gyrophase angles') + logging.error('Problem loading FGM vars for calculating FEEPS gyrophase angles') # interpolate the FGM var to the MEC var timestamps tinterpol('mms'+probe+'_fgm_b_bcs_srvy_l2_bvec', 'mms'+probe+'_mec_r_sun_bcs', newname='mms'+probe+'_fgm_b_bcs_srvy_l2_bvec_int') - B = get_data('mms'+probe+'_fgm_b_bcs_srvy_l2_bvec_int') + B = get('mms'+probe+'_fgm_b_bcs_srvy_l2_bvec_int') # Now calculate gyrophase # Telescope vectors perp to B: @@ -204,6 +206,9 @@ def mms_feeps_getgyrophase(trange=['2017-07-11/22:30', '2017-07-11/22:35'], prob for j in range(24): th1 = np.arccos(np.nansum(Tperp[i,:,j] * Sperp)/(np.sqrt(np.nansum(Tperp[i,:,j]**2))*np.sqrt(np.nansum(Sperp**2)))) th2 = np.arccos(np.nansum(Tperp[i,:,j] * Dperp)/(np.sqrt(np.nansum(Tperp[i,:,j]**2))*np.sqrt(np.nansum(Dperp**2)))) + # strip the units + th1 = th1.value + th2 = th2.value if th1 <= np.pi/2.0 and th2 < np.pi/2: phi[i, j] = 2*np.pi - th1 if th1 < np.pi/2.0 and th2 >= np.pi/2.0: @@ -213,9 +218,9 @@ def mms_feeps_getgyrophase(trange=['2017-07-11/22:30', '2017-07-11/22:35'], prob if th1 >= np.pi/2.0 and th2 > np.pi/2.0: phi[i, j] = th1 - saved = store_data('mms'+probe+'_epd_feeps_'+data_rate+'_gyrophase', data={'x': rsun.times, 'y': phi*180./np.pi}) + saved = store('mms'+probe+'_epd_feeps_'+data_rate+'_gyrophase', data={'x': rsun.times, 'y': phi*180./np.pi}) if not saved: - print('Problem saving gyrophase angles') + logging.error('Problem saving gyrophase angles') return options('mms'+probe+'_epd_feeps_'+data_rate+'_gyrophase', 'yrange', [0, 360.0]) @@ -224,10 +229,10 @@ def mms_feeps_getgyrophase(trange=['2017-07-11/22:30', '2017-07-11/22:35'], prob eyes = mms_feeps_active_eyes(trange, probe, data_rate, datatype, level) sensor_types = ['top', 'bottom'] - feepst = get_data('mms'+probe+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_spinsectnum') + feepst = get('mms'+probe+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_spinsectnum') indt = np.zeros(len(feepst.times), dtype='int32') - gpd = get_data('mms'+probe+'_epd_feeps_'+data_rate+'_gyrophase') + gpd = get('mms'+probe+'_epd_feeps_'+data_rate+'_gyrophase') for i in range(len(feepst.times)): indt[i] = np.argwhere(np.abs(gpd.times - feepst.times[i]) == np.min(np.abs(gpd.times - feepst.times[i]))).flatten()[0] @@ -240,7 +245,7 @@ def mms_feeps_getgyrophase(trange=['2017-07-11/22:30', '2017-07-11/22:35'], prob for i in range(len(iT)): gp_data[:, i] = gpd.y[indt, iT[i]] - saved = store_data('mms'+probe+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_gyrophase', data = {'x': gpd.times[indt], 'y': gp_data}) + saved = store('mms'+probe+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_gyrophase', data = {'x': gpd.times[indt], 'y': gp_data}) if saved: options('mms'+probe+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_gyrophase', 'yrange', [0.0, 360.0]) diff --git a/pyspedas/mms/feeps/mms_feeps_gpd.py b/pyspedas/mms/feeps/mms_feeps_gpd.py index 050fc0cb..9bcfffaf 100644 --- a/pyspedas/mms/feeps/mms_feeps_gpd.py +++ b/pyspedas/mms/feeps/mms_feeps_gpd.py @@ -1,9 +1,18 @@ +import logging import numpy as np import pyspedas -from pytplot import get_data, store_data, options +from pytplot import get, store, options from pyspedas.mms.feeps.mms_feeps_active_eyes import mms_feeps_active_eyes from pyspedas.mms.feeps.mms_feeps_getgyrophase import mms_feeps_getgyrophase +# use nanmean from bottleneck if it's installed, otherwise use the numpy one +# bottleneck nanmean is ~2.5x faster +try: + import bottleneck as bn + nanmean = bn.nanmean +except ImportError: + nanmean = np.nanmean + def mms_feeps_gpd(trange=['2017-07-11/22:30', '2017-07-11/22:35'], probe='2', @@ -57,7 +66,7 @@ def mms_feeps_gpd(trange=['2017-07-11/22:30', '2017-07-11/22:35'], feeps_data = pyspedas.mms.feeps(trange=trange, data_rate=data_rate, probe=probe, level=level) if len(feeps_data) == 0: - print('Problem loading FEEPS data for this time range.') + logging.error('Problem loading FEEPS data for this time range.') return # Account for angular response (finite field of view) of instruments @@ -73,10 +82,10 @@ def mms_feeps_gpd(trange=['2017-07-11/22:30', '2017-07-11/22:35'], # get the gyrophase angles # calculate the gyro phase angles from the magnetic field data gyro_vars = mms_feeps_getgyrophase(trange=trange, probe=probe, data_rate=data_rate, level=level, datatype=datatype) - gyro_data = get_data('mms' + str(probe) + '_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_gyrophase') + gyro_data = get('mms' + str(probe) + '_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_gyrophase') if gyro_data is None or gyro_vars is None: - print('Problem calculating gyrophase angles.') + logging.error('Problem calculating gyrophase angles.') return eyes = mms_feeps_active_eyes(trange, probe, data_rate, datatype, level) @@ -119,17 +128,17 @@ def mms_feeps_gpd(trange=['2017-07-11/22:30', '2017-07-11/22:35'], for isen in range(len(particle_idxs)): # loop through sensors # get the data var_name = 'mms' + str(probe) + '_epd_feeps_' + data_rate + '_' + level + '_' + datatype + '_' + sensor_type + '_' + data_units + '_sensorid_' + str(particle_idxs[isen]+1) + '_clean_sun_removed' - data = get_data(var_name) + data = get(var_name) if data is None: - print('Data not found: ' + var_name) + logging.error('Data not found: ' + var_name) continue data.y[data.y == 0.0] = np.nan # remove any 0s before averaging # Energy indices to use: indx = np.argwhere((data.v <= energy[1]) & (data.v >= energy[0])) if len(indx) == 0: - print('Energy range selected is not covered by the detector for FEEPS ' + datatype + ' data') + logging.error('Energy range selected is not covered by the detector for FEEPS ' + datatype + ' data') continue - dflux[:, pa_map[isen]] = np.nanmean(data.y[:, indx], axis=1).flatten() + dflux[:, pa_map[isen]] = nanmean(data.y[:, indx], axis=1).flatten() dpa[:, pa_map[isen]] = gyro_data.y[:, pa_map[isen]].flatten() # we need to replace the 0.0s left in after populating dpa with NaNs; these @@ -143,9 +152,14 @@ def mms_feeps_gpd(trange=['2017-07-11/22:30', '2017-07-11/22:35'], # Now loop through PA bins and time, find the telescopes where there is data in those bins and average it up! for it in range(len(dpa[:, 0])): for ipa in range(int(n_bins)): - ind = np.argwhere((dpa[it, :] + dAngResp >= gyro_centers[ipa]-delta_gyro) & (dpa[it, :] - dAngResp < gyro_centers[ipa]+delta_gyro)) - if len(ind) > 0: - gyro_flux[it, ipa] = np.nanmean(dflux[it, ind], axis=0).flatten() + ind = np.argwhere((dpa[it, :] + dAngResp >= gyro_centers[ipa]-delta_gyro) & (dpa[it, :] - dAngResp < gyro_centers[ipa]+delta_gyro)).flatten() + if ind.size != 0: + if len(ind) > 1: + gyro_flux[it, ipa] = nanmean(dflux[it, ind]) + else: + gyro_flux[it, ipa] = dflux[it, ind[0]] + #if len(ind) > 0: + # gyro_flux[it, ipa] = np.nanmean(dflux[it, ind], axis=0).flatten() # fill any missed bins with NAN gyro_flux[gyro_flux == 0.0] = np.nan @@ -154,7 +168,7 @@ def mms_feeps_gpd(trange=['2017-07-11/22:30', '2017-07-11/22:35'], new_name = 'mms' + str(probe) + '_epd_feeps_' + data_rate + '_' + level + '_' + datatype + '_' + data_units + '_' + en_range_string + '_gpd' - saved = store_data(new_name, data={'x': gyro_data.times, 'y': gyro_flux, 'v': gyro_centers}) + saved = store(new_name, data={'x': gyro_data.times, 'y': gyro_flux, 'v': gyro_centers}) if saved: options(new_name, 'spec', True) diff --git a/pyspedas/mms/feeps/mms_feeps_omni.py b/pyspedas/mms/feeps/mms_feeps_omni.py index 08e7bc82..ff1c436a 100644 --- a/pyspedas/mms/feeps/mms_feeps_omni.py +++ b/pyspedas/mms/feeps/mms_feeps_omni.py @@ -1,8 +1,7 @@ - import logging import warnings import numpy as np -from pytplot import get_data, store_data, options +from pytplot import get, store, options # use nanmean from bottleneck if it's installed, otherwise use the numpy one # bottleneck nanmean is ~2.5x faster @@ -15,11 +14,13 @@ logging.captureWarnings(True) logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) + def mms_feeps_omni(eyes, probe='1', datatype='electron', data_units='intensity', data_rate='srvy', level='l2', suffix=''): """ - This function will calculate the omni-directional FEEPS spectrograms, and is automatically called from mms_load_feeps + This function will calculate the omnidirectional FEEPS spectrograms, and is automatically called from mms_load_feeps - Parameters: + Parameters + ------------ eyes: dict Hash table containing the active sensor eyes @@ -41,7 +42,8 @@ def mms_feeps_omni(eyes, probe='1', datatype='electron', data_units='intensity', suffix: str suffix of the loaded data - Returns: + Returns + ------------ List of tplot variables created. """ @@ -92,7 +94,7 @@ def mms_feeps_omni(eyes, probe='1', datatype='electron', data_units='intensity', top_sensors = eyes['top'] bot_sensors = eyes['bottom'] - tmpdata = get_data(prefix+data_rate+'_'+level+'_'+datatype+'_top_'+data_units+'_sensorid_'+str(top_sensors[0])+'_clean_sun_removed'+suffix) + tmpdata = get(prefix+data_rate+'_'+level+'_'+datatype+'_top_'+data_units+'_sensorid_'+str(top_sensors[0])+'_clean_sun_removed'+suffix) if tmpdata is not None: if level != 'sitl': @@ -101,7 +103,7 @@ def mms_feeps_omni(eyes, probe='1', datatype='electron', data_units='intensity', for idx, sensor in enumerate(top_sensors): var_name = prefix+data_rate+'_'+level+'_'+datatype+'_top_'+data_units+'_sensorid_'+str(sensor)+'_clean_sun_removed'+suffix - data = get_data(var_name) + data = get(var_name) dalleyes[:, :, idx] = data[1] try: iE = np.where(np.abs(energies-data[2]) > en_chk*energies) @@ -111,7 +113,7 @@ def mms_feeps_omni(eyes, probe='1', datatype='electron', data_units='intensity', logging.warning('NaN in energy table encountered; sensor T' + str(sensor)) for idx, sensor in enumerate(bot_sensors): var_name = prefix+data_rate+'_'+level+'_'+datatype+'_bottom_'+data_units+'_sensorid_'+str(sensor)+'_clean_sun_removed'+suffix - data = get_data(var_name) + data = get(var_name) dalleyes[:, :, idx+len(top_sensors)] = data[1] try: iE = np.where(np.abs(energies-data[2]) > en_chk*energies) @@ -119,13 +121,13 @@ def mms_feeps_omni(eyes, probe='1', datatype='electron', data_units='intensity', dalleyes[:, iE[0], idx+len(top_sensors)] = np.nan except Warning: logging.warning('NaN in energy table encountered; sensor B' + str(sensor)) - else: # sitl data + else: # sitl data dalleyes = np.empty((len(tmpdata[0]), len(tmpdata[2]), len(top_sensors))) dalleyes[:] = np.nan for idx, sensor in enumerate(top_sensors): var_name = prefix+data_rate+'_'+level+'_'+datatype+'_top_'+data_units+'_sensorid_'+str(sensor)+'_clean_sun_removed'+suffix - data = get_data(var_name) + data = get(var_name) dalleyes[:, :, idx] = data[1] iE = np.where(np.abs(energies-data[2]) > en_chk*energies) if iE[0].size != 0: @@ -153,19 +155,13 @@ def mms_feeps_omni(eyes, probe='1', datatype='electron', data_units='intensity', if probe == '4' and datatype == 'ion': flux_omni = flux_omni*iGfact[3] - store_data('mms'+probe+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_'+data_units+'_omni'+suffix, data={'x': tmpdata[0], 'y': flux_omni, 'v': energies}) + store('mms'+probe+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_'+data_units+'_omni'+suffix, data={'x': tmpdata[0], 'y': flux_omni, 'v': energies}) options('mms'+probe+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_'+data_units+'_omni'+suffix, 'spec', True) options('mms'+probe+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_'+data_units+'_omni'+suffix, 'ylog', True) options('mms'+probe+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_'+data_units+'_omni'+suffix, 'zlog', True) - options('mms'+probe+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_'+data_units+'_omni'+suffix, 'Colormap', 'spedas') options('mms'+probe+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_'+data_units+'_omni'+suffix, 'ztitle', units_label) options('mms'+probe+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_'+data_units+'_omni'+suffix, 'ytitle', 'MMS' + str(probe) + ' ' + datatype) options('mms'+probe+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_'+data_units+'_omni'+suffix, 'ysubtitle', '[keV]') out_vars.append('mms'+probe+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_'+data_units+'_omni'+suffix) return out_vars - - - - - diff --git a/pyspedas/mms/feeps/mms_feeps_pad.py b/pyspedas/mms/feeps/mms_feeps_pad.py index 8387e7e3..e47416cb 100644 --- a/pyspedas/mms/feeps/mms_feeps_pad.py +++ b/pyspedas/mms/feeps/mms_feeps_pad.py @@ -1,8 +1,7 @@ - import logging import warnings import numpy as np -from pytplot import get_data, store_data, options +from pytplot import get, store, options from pyspedas.mms.feeps.mms_feeps_pitch_angles import mms_feeps_pitch_angles from pyspedas.mms.feeps.mms_feeps_active_eyes import mms_feeps_active_eyes from pyspedas.mms.feeps.mms_feeps_pad_spinavg import mms_feeps_pad_spinavg @@ -18,6 +17,7 @@ logging.captureWarnings(True) logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) + def mms_feeps_pad(bin_size=16.3636, probe='1', energy=[70, 600], level='l2', suffix='', datatype='electron', data_units='intensity', data_rate='srvy', angles_from_bfield=False): """ This function will calculate pitch angle distributions using data from the MMS Fly's Eye Energetic Particle Sensor (FEEPS) @@ -51,7 +51,8 @@ def mms_feeps_pad(bin_size=16.3636, probe='1', energy=[70, 600], level='l2', suf angles_from_bfield: bool calculate the pitch angles from the B-field data instead of reading from the CDFs - Returns: + Returns + -------- List of tplot variables created. """ @@ -72,7 +73,8 @@ def mms_feeps_pad(bin_size=16.3636, probe='1', energy=[70, 600], level='l2', suf elif data_units == 'counts': units_label = '[counts/s]' - if not isinstance(probe, str): probe=str(probe) + if not isinstance(probe, str): + probe = str(probe) prefix = 'mms' + probe n_pabins = 180/bin_size @@ -81,15 +83,18 @@ def mms_feeps_pad(bin_size=16.3636, probe='1', energy=[70, 600], level='l2', suf if data_rate == 'brst' and angles_from_bfield == False: # v5.5+ = mms1_epd_feeps_srvy_l2_electron_pitch_angle - pad_pas = get_data(prefix+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_pitch_angle'+suffix) + pad_pas = get(prefix+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_pitch_angle'+suffix) if pad_pas is None: logging.error("Error reading variable containing FEEPS pitch angles") return pa_times = pad_pas[0] pa_data = pad_pas[1] else: - pa_var, idx_maps = mms_feeps_pitch_angles(probe=probe, level=level, data_rate=data_rate, datatype=datatype, suffix=suffix) - pa_times, pa_data = get_data(pa_var) + feeps_pa_data = mms_feeps_pitch_angles(probe=probe, level=level, data_rate=data_rate, datatype=datatype, suffix=suffix) + if feeps_pa_data is None: + return + pa_var, idx_maps = feeps_pa_data + pa_times, pa_data = get(pa_var) if pa_data is None: logging.error("Error, couldn't find the PA variable") @@ -129,7 +134,7 @@ def mms_feeps_pad(bin_size=16.3636, probe='1', energy=[70, 600], level='l2', suf particle_idxs = [eye-1 for eye in eyes[s_type]] for isen, sensor_num in enumerate(particle_idxs): var_name = 'mms'+str(probe)+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_'+s_type+'_'+data_units+'_sensorid_'+str(sensor_num+1)+'_clean_sun_removed'+suffix - times, data, energies = get_data(var_name) + times, data, energies = get(var_name) data[data == 0] = 'nan' # remove any 0s before averaging if np.isnan(energies[0]): # assumes all energies are NaNs if the first is continue @@ -154,10 +159,10 @@ def mms_feeps_pad(bin_size=16.3636, probe='1', energy=[70, 600], level='l2', suf if not np.isnan(dpa[pa_idx, :][0]): with warnings.catch_warnings(): warnings.simplefilter("ignore", category=RuntimeWarning) - ind = np.where((dpa[pa_idx, :] + dangresp >= pa_label[ipa]-delta_pa) & (dpa[pa_idx, :]-dangresp < pa_label[ipa]+delta_pa)) - if ind[0].size != 0: - if len(ind[0]) > 1: - pa_flux[pa_idx, ipa] = nanmean(dflux[pa_idx, ind[0]], axis=0) + ind = np.argwhere((dpa[pa_idx, :] + dangresp >= pa_label[ipa]-delta_pa) & (dpa[pa_idx, :]-dangresp < pa_label[ipa]+delta_pa)).flatten() + if ind.size != 0: + if len(ind) > 1: + pa_flux[pa_idx, ipa] = nanmean(dflux[pa_idx, ind], axis=0) else: pa_flux[pa_idx, ipa] = dflux[pa_idx, ind[0]] @@ -166,11 +171,10 @@ def mms_feeps_pad(bin_size=16.3636, probe='1', energy=[70, 600], level='l2', suf en_range_string = str(int(energy[0])) + '-' + str(int(energy[1])) + 'keV' new_name = 'mms'+probe+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_'+data_units+'_'+ en_range_string +'_pad'+suffix - store_data(new_name, data={'x': times, 'y': pa_flux, 'v': pa_label}) + store(new_name, data={'x': times, 'y': pa_flux, 'v': pa_label}) options(new_name, 'ylog', False) options(new_name, 'zlog', True) options(new_name, 'spec', True) - options(new_name, 'Colormap', 'spedas') options(new_name, 'ztitle', units_label) options(new_name, 'ytitle', 'MMS' + str(probe) + ' ' + datatype + ' PA') options(new_name, 'ysubtitle', '[deg]') diff --git a/pyspedas/mms/feeps/mms_feeps_pad_spinavg.py b/pyspedas/mms/feeps/mms_feeps_pad_spinavg.py index 4b8c7d48..ce2952b9 100644 --- a/pyspedas/mms/feeps/mms_feeps_pad_spinavg.py +++ b/pyspedas/mms/feeps/mms_feeps_pad_spinavg.py @@ -1,8 +1,7 @@ - import warnings import numpy as np import scipy -from pytplot import get_data, store_data, options +from pytplot import get_data, store, options # use nanmean from bottleneck if it's installed, otherwise use the numpy one # bottleneck nanmean is ~2.5x faster @@ -12,11 +11,13 @@ except ImportError: nanmean = np.nanmean + def mms_feeps_pad_spinavg(probe='1', data_units='intensity', datatype='electron', data_rate='srvy', level='l2', suffix='', energy=[70, 600], bin_size=16.3636): """ This function will spin-average the FEEPS pitch angle distributions - Parameters: + Parameters + ----------- probe: str probe #, e.g., '4' for MMS4 @@ -41,10 +42,10 @@ def mms_feeps_pad_spinavg(probe='1', data_units='intensity', datatype='electron' bin_size: float size of the pitch angle bins - Returns: + Returns + ---------- Name of tplot variable created. """ - units_label = '' if data_units == 'intensity': units_label = '1/(cm^2-sr-s-keV)' @@ -94,11 +95,10 @@ def mms_feeps_pad_spinavg(probe='1', data_units='intensity', datatype='electron' current_start = spin_starts[spin_idx] + 1 # store_data(var_name + '_spin' + suffix, data={'x': spin_times, 'y': spin_avg_flux, 'v': angles}) - store_data(var_name + '_spin' + suffix, data={'x': spin_times, 'y': rebinned_data, 'v': new_bins}) + store(var_name + '_spin' + suffix, data={'x': spin_times, 'y': rebinned_data, 'v': new_bins}) options(var_name + '_spin' + suffix, 'spec', True) options(var_name + '_spin' + suffix, 'ylog', False) options(var_name + '_spin' + suffix, 'zlog', True) - options(var_name + '_spin' + suffix, 'Colormap', 'spedas') options(var_name + '_spin' + suffix, 'ztitle', units_label) options(var_name + '_spin' + suffix, 'ytitle', 'MMS' + str(probe) + ' ' + datatype + ' PA') options(var_name + '_spin' + suffix, 'ysubtitle', '[deg]') diff --git a/pyspedas/mms/feeps/mms_feeps_pitch_angles.py b/pyspedas/mms/feeps/mms_feeps_pitch_angles.py index 1addb9c6..194b1839 100644 --- a/pyspedas/mms/feeps/mms_feeps_pitch_angles.py +++ b/pyspedas/mms/feeps/mms_feeps_pitch_angles.py @@ -1,18 +1,20 @@ - +import logging from pyspedas.mms.feeps.mms_feeps_active_eyes import mms_feeps_active_eyes from pyspedas import mms_load_fgm from pyspedas import data_exists -from pytplot import get_data, store_data +from pytplot import get, store import numpy as np import math + def mms_feeps_pitch_angles(trange=None, probe='1', level='l2', data_rate='srvy', datatype='electron', suffix=''): """ Generates a tplot variable containing the FEEPS pitch angles for each telescope from magnetic field data. - Parameters: + Parameters + ----------- trange : list of str - time range of interest [starttime, endtime] with the format + time range of interest [start time, end time] with the format 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] @@ -31,15 +33,15 @@ def mms_feeps_pitch_angles(trange=None, probe='1', level='l2', data_rate='srvy', suffix: str suffix of the loaded data - Returns: + Returns + ---------- Tuple: (tplot variable created, hash table used by PAD routine) """ - # get the times from the currently loaded FEEPS data - pa_variable = get_data('mms'+probe+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_pitch_angle'+suffix) + pa_variable = get('mms'+probe+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_pitch_angle'+suffix, dt=True) if pa_variable is None: - print('Error reading pitch angle variable') + logging.error('Error reading pitch angle variable') return times = pa_variable[0] @@ -47,14 +49,16 @@ def mms_feeps_pitch_angles(trange=None, probe='1', level='l2', data_rate='srvy', if times is not None: if trange is None: - trange = [float(times.min()), float(times.max())] + times_min = (times[0] - np.datetime64('1970-01-01T00:00:00'))/np.timedelta64(1, 's') + times_max = (times[1] - np.datetime64('1970-01-01T00:00:00'))/np.timedelta64(1, 's') + trange = [times_min, times_max] eyes = mms_feeps_active_eyes(trange, probe, data_rate, datatype, level) # need the B-field data mms_load_fgm(trange=trange, probe=probe, data_rate=data_rate, varformat='*_b_bcs_*') - btimes, Bbcs = get_data('mms'+probe+'_fgm_b_bcs_'+data_rate+'_l2') + btimes, Bbcs = get('mms'+probe+'_fgm_b_bcs_'+data_rate+'_l2') idx_maps = None @@ -177,47 +181,47 @@ def mms_feeps_pitch_angles(trange=None, probe='1', level='l2', data_rate='srvy', Vbcs = Vb12bcs pas[:, i] = 180./math.pi*np.arccos((Vbcs[0]*Bbcs[:, 0] + Vbcs[1]*Bbcs[:, 1] + Vbcs[2]*Bbcs[:, 2])/(np.sqrt(Vbcs[0]**2+Vbcs[1]**2+Vbcs[2]**2) * np.sqrt(Bbcs[:, 0]**2+Bbcs[:, 1]**2+Bbcs[:, 2]**2))) - if data_rate == 'srvy': - # the following 2 hash tables map TOP/BOTTOM telescope #s to index of the PA array created above - top_tele_idx_map = {} - bot_tele_idx_map = {} - top_tele_idx_map[1] = 0 - top_tele_idx_map[2] = 1 - top_tele_idx_map[3] = 2 - top_tele_idx_map[4] = 3 - top_tele_idx_map[5] = 4 - top_tele_idx_map[9] = 5 - top_tele_idx_map[10] = 6 - top_tele_idx_map[11] = 7 - top_tele_idx_map[12] = 8 - bot_tele_idx_map[1] = 9 - bot_tele_idx_map[2] = 10 - bot_tele_idx_map[3] = 11 - bot_tele_idx_map[4] = 12 - bot_tele_idx_map[5] = 13 - bot_tele_idx_map[9] = 14 - bot_tele_idx_map[10] = 15 - bot_tele_idx_map[11] = 16 - bot_tele_idx_map[12] = 17 - - top_idxs = [] - bot_idxs = [] - - # PAs for only active eyes - new_pas = np.empty([len(btimes), len(eyes['top'])+len(eyes['bottom'])]) # pitch angles for each eye at eaceh time - - for top_idx, top_eye in enumerate(eyes['top']): - new_pas[:, top_idx] = pas[:, top_tele_idx_map[top_eye]] - top_idxs.append(top_idx) - - for bot_idx, bot_eye in enumerate(eyes['bottom']): - new_pas[:, bot_idx+len(eyes['top'])] = pas[:, bot_tele_idx_map[bot_eye]] - bot_idxs.append(bot_idx+len(eyes['top'])) - - idx_maps = {'electron-top': top_idxs, 'electron-bottom': bot_idxs} - - else: - new_pas = pas + if data_rate == 'srvy': + # the following 2 hash tables map TOP/BOTTOM telescope #s to index of the PA array created above + top_tele_idx_map = {} + bot_tele_idx_map = {} + top_tele_idx_map[1] = 0 + top_tele_idx_map[2] = 1 + top_tele_idx_map[3] = 2 + top_tele_idx_map[4] = 3 + top_tele_idx_map[5] = 4 + top_tele_idx_map[9] = 5 + top_tele_idx_map[10] = 6 + top_tele_idx_map[11] = 7 + top_tele_idx_map[12] = 8 + bot_tele_idx_map[1] = 9 + bot_tele_idx_map[2] = 10 + bot_tele_idx_map[3] = 11 + bot_tele_idx_map[4] = 12 + bot_tele_idx_map[5] = 13 + bot_tele_idx_map[9] = 14 + bot_tele_idx_map[10] = 15 + bot_tele_idx_map[11] = 16 + bot_tele_idx_map[12] = 17 + + top_idxs = [] + bot_idxs = [] + + # PAs for only active eyes + new_pas = np.empty([len(btimes), len(eyes['top'])+len(eyes['bottom'])]) # pitch angles for each eye at eaceh time + + for top_idx, top_eye in enumerate(eyes['top']): + new_pas[:, top_idx] = pas[:, top_tele_idx_map[top_eye]] + top_idxs.append(top_idx) + + for bot_idx, bot_eye in enumerate(eyes['bottom']): + new_pas[:, bot_idx+len(eyes['top'])] = pas[:, bot_tele_idx_map[bot_eye]] + bot_idxs.append(bot_idx+len(eyes['top'])) + + idx_maps = {'electron-top': top_idxs, 'electron-bottom': bot_idxs} + + else: + new_pas = pas elif datatype == 'ion': pas = np.empty([len(btimes), 6]) # pitch angles for each eye at each time @@ -286,18 +290,20 @@ def mms_feeps_pitch_angles(trange=None, probe='1', level='l2', data_rate='srvy', idx_maps = {'ion-top': top_idxs, 'ion-bottom': bot_idxs} - outvar = 'mms'+probe+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_pa'+suffix - if data_exists(outvar): # kludge for bug when the PAs were previously calculated - return (outvar, idx_maps) + if data_exists(outvar): # kludge for bug when the PAs were previously calculated + # check if the current variable's time array matches our output + current_pas = get(outvar) + if np.array_equal(current_pas.times, btimes): + return outvar, idx_maps - store_data(outvar, data={'x': btimes, 'y': new_pas}) + store(outvar, data={'x': btimes, 'y': new_pas}) # interpolate to the PA time stamps - outdata = get_data(outvar, xarray=True) + outdata = get(outvar, xarray=True) outdata_interpolated = outdata.interp({'time': times}) - store_data(outvar, data={'x': times, 'y': outdata_interpolated.values}) + store(outvar, data={'x': times, 'y': outdata_interpolated.values}) - return (outvar, idx_maps) + return outvar, idx_maps diff --git a/pyspedas/mms/feeps/mms_feeps_remove_bad_data.py b/pyspedas/mms/feeps/mms_feeps_remove_bad_data.py index 5cd06531..87ac367a 100644 --- a/pyspedas/mms/feeps/mms_feeps_remove_bad_data.py +++ b/pyspedas/mms/feeps/mms_feeps_remove_bad_data.py @@ -1,5 +1,5 @@ +import logging import numpy as np -import datetime as dt from pyspedas import time_string, time_double, tnames import pytplot @@ -8,7 +8,8 @@ def mms_feeps_remove_bad_data(probe='1', data_rate='srvy', datatype='electron', """ This function removes bad eyes, bad lowest energy channels based on data from Drew Turner - Parameters: + Parameters + ------------ probe: str probe #, e.g., '4' for MMS4 @@ -26,11 +27,12 @@ def mms_feeps_remove_bad_data(probe='1', data_rate='srvy', datatype='electron', trange: list of str or list of float Time range - Returns: + Returns + ------------ None """ if trange is None: - print('Time range required for mms_feeps_remove_bad_data.') + logging.error('Time range required for mms_feeps_remove_bad_data.') return data_rate_level = data_rate + '_' + level @@ -63,40 +65,45 @@ def mms_feeps_remove_bad_data(probe='1', data_rate='srvy', datatype='electron', # top electrons for bad_var in bad_data['top']: - if bad_var in [6, 7, 8]: continue # ion eyes + if bad_var in [6, 7, 8]: + continue # ion eyes bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_top_count_rate_sensorid_'+str(bad_var)+suffix)) bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_top_intensity_sensorid_'+str(bad_var)+suffix)) bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_top_counts_sensorid_'+str(bad_var)+suffix)) # bottom electrons for bad_var in bad_data['bottom']: - if bad_var in [6, 7, 8]: continue # ion eyes + if bad_var in [6, 7, 8]: + continue # ion eyes bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_bottom_count_rate_sensorid_'+str(bad_var)+suffix)) bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_bottom_intensity_sensorid_'+str(bad_var)+suffix)) bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_bottom_counts_sensorid_'+str(bad_var)+suffix)) # top ions for bad_var in bad_data['top']: - if bad_var not in [6, 7, 8]: continue # ion eyes + if bad_var not in [6, 7, 8]: + continue # ion eyes bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_top_count_rate_sensorid_'+str(bad_var)+suffix)) bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_top_intensity_sensorid_'+str(bad_var)+suffix)) bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_top_counts_sensorid_'+str(bad_var)+suffix)) # bottom ions for bad_var in bad_data['bottom']: - if bad_var not in [6, 7, 8]: continue # ion eyes + if bad_var not in [6, 7, 8]: + continue # ion eyes bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_bottom_count_rate_sensorid_'+str(bad_var)+suffix)) bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_bottom_intensity_sensorid_'+str(bad_var)+suffix)) bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_bottom_counts_sensorid_'+str(bad_var)+suffix)) for bad_var in bad_vars: - if bad_var == []: continue - bad_var_data = pytplot.get_data(bad_var[0]) + if not bad_var: + continue + bad_var_data = pytplot.get(bad_var[0]) if bad_var_data is not None: times, data, energies = bad_var_data data[:] = np.nan - pytplot.store_data(bad_var[0], data={'x': times, 'y': data, 'v': energies}) + pytplot.store(bad_var[0], data={'x': times, 'y': data, 'v': energies}) # ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 2. BAD LOWEST E-CHANNELS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; # ; Next, these eyes have bad first channels (i.e., lowest energy channel, E-channel 0 in IDL indexing). @@ -163,132 +170,147 @@ def mms_feeps_remove_bad_data(probe='1', data_rate='srvy', datatype='electron', # top electrons for bad_var in bad_ch0['top']: - if bad_var in [6, 7, 8]: continue # ion eyes + if bad_var in [6, 7, 8]: + continue # ion eyes bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_top_count_rate_sensorid_'+str(bad_var)+suffix)) bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_top_intensity_sensorid_'+str(bad_var)+suffix)) bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_top_counts_sensorid_'+str(bad_var)+suffix)) # bottom electrons for bad_var in bad_ch0['bottom']: - if bad_var in [6, 7, 8]: continue # ion eyes + if bad_var in [6, 7, 8]: + continue # ion eyes bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_bottom_count_rate_sensorid_'+str(bad_var)+suffix)) bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_bottom_intensity_sensorid_'+str(bad_var)+suffix)) bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_bottom_counts_sensorid_'+str(bad_var)+suffix)) # top ions for bad_var in bad_ch0['top']: - if bad_var not in [6, 7, 8]: continue # ion eyes + if bad_var not in [6, 7, 8]: + continue # ion eyes bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_top_count_rate_sensorid_'+str(bad_var)+suffix)) bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_top_intensity_sensorid_'+str(bad_var)+suffix)) bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_top_counts_sensorid_'+str(bad_var)+suffix)) # bottom ions for bad_var in bad_ch0['bottom']: - if bad_var not in [6, 7, 8]: continue # ion eyes + if bad_var not in [6, 7, 8]: + continue # ion eyes bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_bottom_count_rate_sensorid_'+str(bad_var)+suffix)) bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_bottom_intensity_sensorid_'+str(bad_var)+suffix)) bad_vars.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_bottom_counts_sensorid_'+str(bad_var)+suffix)) - #### bottom 2 channels # top electrons for bad_var in bad_ch1['top']: - if bad_var in [6, 7, 8]: continue # ion eyes + if bad_var in [6, 7, 8]: + continue # ion eyes bad_vars_both_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_top_count_rate_sensorid_'+str(bad_var)+suffix)) bad_vars_both_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_top_intensity_sensorid_'+str(bad_var)+suffix)) bad_vars_both_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_top_counts_sensorid_'+str(bad_var)+suffix)) # bottom electrons for bad_var in bad_ch1['bottom']: - if bad_var in [6, 7, 8]: continue # ion eyes + if bad_var in [6, 7, 8]: + continue # ion eyes bad_vars_both_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_bottom_count_rate_sensorid_'+str(bad_var)+suffix)) bad_vars_both_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_bottom_intensity_sensorid_'+str(bad_var)+suffix)) bad_vars_both_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_bottom_counts_sensorid_'+str(bad_var)+suffix)) # top ions for bad_var in bad_ch1['top']: - if bad_var not in [6, 7, 8]: continue # ion eyes + if bad_var not in [6, 7, 8]: + continue # ion eyes bad_vars_both_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_top_count_rate_sensorid_'+str(bad_var)+suffix)) bad_vars_both_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_top_intensity_sensorid_'+str(bad_var)+suffix)) bad_vars_both_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_top_counts_sensorid_'+str(bad_var)+suffix)) # bottom ions for bad_var in bad_ch1['bottom']: - if bad_var not in [6, 7, 8]: continue # ion eyes + if bad_var not in [6, 7, 8]: + continue # ion eyes bad_vars_both_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_bottom_count_rate_sensorid_'+str(bad_var)+suffix)) bad_vars_both_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_bottom_intensity_sensorid_'+str(bad_var)+suffix)) bad_vars_both_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_bottom_counts_sensorid_'+str(bad_var)+suffix)) - #### bottom 3 channels - # top electrons for bad_var in bad_ch2['top']: - if bad_var in [6, 7, 8]: continue # ion eyes + if bad_var in [6, 7, 8]: + continue # ion eyes bad_vars_3_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_top_count_rate_sensorid_'+str(bad_var)+suffix)) bad_vars_3_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_top_intensity_sensorid_'+str(bad_var)+suffix)) bad_vars_3_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_top_counts_sensorid_'+str(bad_var)+suffix)) # bottom electrons for bad_var in bad_ch2['bottom']: - if bad_var in [6, 7, 8]: continue # ion eyes + if bad_var in [6, 7, 8]: + continue # ion eyes bad_vars_3_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_bottom_count_rate_sensorid_'+str(bad_var)+suffix)) bad_vars_3_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_bottom_intensity_sensorid_'+str(bad_var)+suffix)) bad_vars_3_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_electron_bottom_counts_sensorid_'+str(bad_var)+suffix)) # top ions for bad_var in bad_ch2['top']: - if bad_var not in [6, 7, 8]: continue # ion eyes + if bad_var not in [6, 7, 8]: + continue # ion eyes bad_vars_3_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_top_count_rate_sensorid_'+str(bad_var)+suffix)) bad_vars_3_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_top_intensity_sensorid_'+str(bad_var)+suffix)) bad_vars_3_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_top_counts_sensorid_'+str(bad_var)+suffix)) # bottom ions for bad_var in bad_ch2['bottom']: - if bad_var not in [6, 7, 8]: continue # ion eyes + if bad_var not in [6, 7, 8]: + continue # ion eyes bad_vars_3_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_bottom_count_rate_sensorid_'+str(bad_var)+suffix)) bad_vars_3_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_bottom_intensity_sensorid_'+str(bad_var)+suffix)) bad_vars_3_chans.append(tnames('mms'+str(probe)+'_epd_feeps_'+data_rate_level+'_ion_bottom_counts_sensorid_'+str(bad_var)+suffix)) # set the first energy channel to NaN for bad_var in bad_vars: - if bad_var == []: continue - bad_var_data = pytplot.get_data(bad_var[0]) + if not bad_var: + continue + bad_var_data = pytplot.get(bad_var[0]) if bad_var_data is not None: times, data, energies = bad_var_data # check if the energy table contains all nans - if np.isnan(np.sum(energies)): continue + if np.isnan(np.sum(energies)): + continue data[:, 0] = np.nan - pytplot.store_data(bad_var[0], data={'x': times, 'y': data, 'v': energies}) + pytplot.store(bad_var[0], data={'x': times, 'y': data, 'v': energies}) # set the first and second energy channels to NaN for bad_var in bad_vars_both_chans: - if bad_var == []: continue - bad_var_data = pytplot.get_data(bad_var[0]) + if not bad_var: + continue + bad_var_data = pytplot.get(bad_var[0]) if bad_var_data is not None: times, data, energies = bad_var_data # check if the energy table contains all names - if np.isnan(np.sum(energies)): continue + if np.isnan(np.sum(energies)): + continue data[:, 0] = np.nan data[:, 1] = np.nan - pytplot.store_data(bad_var[0], data={'x': times, 'y': data, 'v': energies}) + pytplot.store(bad_var[0], data={'x': times, 'y': data, 'v': energies}) # set the bottom 3 energy channels to NaN for bad_var in bad_vars_3_chans: - if bad_var == []: continue - bad_var_data = pytplot.get_data(bad_var[0]) + if not bad_var: + continue + bad_var_data = pytplot.get(bad_var[0]) if bad_var_data is not None: times, data, energies = bad_var_data # check if the energy table contains all names - if np.isnan(np.sum(energies)): continue + if np.isnan(np.sum(energies)): + continue data[:, 0] = np.nan data[:, 1] = np.nan data[:, 2] = np.nan - pytplot.store_data(bad_var[0], data={'x': times, 'y': data, 'v': energies}) + pytplot.store(bad_var[0], data={'x': times, 'y': data, 'v': energies}) diff --git a/pyspedas/mms/feeps/mms_feeps_remove_sun.py b/pyspedas/mms/feeps/mms_feeps_remove_sun.py index 5643ca44..8fa03dae 100644 --- a/pyspedas/mms/feeps/mms_feeps_remove_sun.py +++ b/pyspedas/mms/feeps/mms_feeps_remove_sun.py @@ -1,17 +1,18 @@ - import logging from .mms_read_feeps_sector_masks_csv import mms_read_feeps_sector_masks_csv -from pytplot import get_data, store_data +from pytplot import get, store import numpy as np logging.captureWarnings(True) logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) + def mms_feeps_remove_sun(sensor_eyes, trange, probe='1', datatype='electron', data_units='intensity', data_rate='srvy', level='l2', suffix=''): """ Removes the sunlight contamination from FEEPS data - Parameters: + Parameters + ----------- sensor_eyes: dict Hash table containing the active sensor eyes @@ -36,11 +37,18 @@ def mms_feeps_remove_sun(sensor_eyes, trange, probe='1', datatype='electron', da suffix: str suffix of the loaded data - Returns: + Returns + ----------- List of tplot variables created. """ - - sector_times, spin_sectors = get_data('mms'+probe+'_epd_feeps_' + data_rate + '_' + level + '_' + datatype + '_spinsectnum'+suffix) + spin_sector_tuple = get('mms'+probe+'_epd_feeps_' + data_rate + '_' + level + '_' + datatype + '_spinsectnum'+suffix) + + if spin_sector_tuple is None: + logging.warning(f"Error - couldn't find the spin sector variable!!!! Cannot remove sun contamination!") + return + + sector_times, spin_sectors = spin_sector_tuple + mask_sectors = mms_read_feeps_sector_masks_csv(trange=trange) out_vars = [] @@ -50,7 +58,7 @@ def mms_feeps_remove_sun(sensor_eyes, trange, probe='1', datatype='electron', da for sensor in top_sensors: var_name = 'mms'+str(probe)+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_top_'+data_units+'_sensorid_'+sensor+'_clean' - top_data_tuple = get_data(var_name+suffix) + top_data_tuple = get(var_name+suffix) if top_data_tuple is None: logging.error('skipping variable: ' + var_name) continue @@ -65,7 +73,7 @@ def mms_feeps_remove_sun(sensor_eyes, trange, probe='1', datatype='electron', da top_data[this_bad_sector] = np.nan try: - store_data(var_name+'_sun_removed'+suffix, data={'x': times, 'y': top_data, 'v': top_energies}) + store(var_name+'_sun_removed'+suffix, data={'x': times, 'y': top_data, 'v': top_energies}) out_vars.append(var_name+'_sun_removed'+suffix) except Warning: continue @@ -74,7 +82,7 @@ def mms_feeps_remove_sun(sensor_eyes, trange, probe='1', datatype='electron', da for sensor in bot_sensors: var_name = 'mms'+str(probe)+'_epd_feeps_'+data_rate+'_'+level+'_'+datatype+'_bottom_'+data_units+'_sensorid_'+sensor+'_clean' - bot_data_tuple = get_data(var_name+suffix) + bot_data_tuple = get(var_name+suffix) if bot_data_tuple is None: logging.error('skipping: ' + var_name) continue @@ -89,7 +97,7 @@ def mms_feeps_remove_sun(sensor_eyes, trange, probe='1', datatype='electron', da bot_data[this_bad_sector] = np.nan try: - store_data(var_name+'_sun_removed'+suffix, data={'x': times, 'y': bot_data, 'v': bot_energies}) + store(var_name+'_sun_removed'+suffix, data={'x': times, 'y': bot_data, 'v': bot_energies}) out_vars.append(var_name+'_sun_removed'+suffix) except Warning: continue diff --git a/pyspedas/mms/feeps/mms_feeps_spin_avg.py b/pyspedas/mms/feeps/mms_feeps_spin_avg.py index fefb79c8..7f113754 100644 --- a/pyspedas/mms/feeps/mms_feeps_spin_avg.py +++ b/pyspedas/mms/feeps/mms_feeps_spin_avg.py @@ -1,6 +1,7 @@ import warnings +import logging import numpy as np -from pytplot import get_data, store_data, options +from pytplot import get, store, options # use nanmean from bottleneck if it's installed, otherwise use the numpy one # bottleneck nanmean is ~2.5x faster @@ -10,11 +11,13 @@ except ImportError: nanmean = np.nanmean + def mms_feeps_spin_avg(probe='1', data_units='intensity', datatype='electron', data_rate='srvy', level='l2', suffix=''): """ - This function will spin-average the omni-directional FEEPS energy spectra + This function will spin-average the omnidirectional FEEPS energy spectra - Parameters: + Parameters + ----------- probe: str probe #, e.g., '4' for MMS4 @@ -33,10 +36,10 @@ def mms_feeps_spin_avg(probe='1', data_units='intensity', datatype='electron', d suffix: str suffix of the loaded data - Returns: + Returns + ----------- Name of tplot variable created. """ - units_label = '' if data_units == 'intensity': units_label = '1/(cm^2-sr-s-keV)' @@ -52,13 +55,19 @@ def mms_feeps_spin_avg(probe='1', data_units='intensity', datatype='electron', d # get the spin sectors # v5.5+ = mms1_epd_feeps_srvy_l1b_electron_spinsectnum - sector_times, spin_sectors = get_data(prefix + data_rate + '_' + level + '_' + datatype + '_spinsectnum' + suffix) + spin_sector_tuple = get(prefix + data_rate + '_' + level + '_' + datatype + '_spinsectnum' + suffix) + + if spin_sector_tuple is None: + logging.warning('Problem reading spin sector variable') + return + + sector_times, spin_sectors = spin_sector_tuple spin_starts = [spin_end + 1 for spin_end in np.where(spin_sectors[:-1] >= spin_sectors[1:])[0]] var_name = prefix + data_rate + '_' + level + '_' + datatype + '_' + data_units + '_omni' - times, data, energies = get_data(var_name + suffix) + times, data, energies = get(var_name + suffix) spin_avg_flux = np.zeros([len(spin_starts), len(energies)]) @@ -69,12 +78,11 @@ def mms_feeps_spin_avg(probe='1', data_units='intensity', datatype='electron', d spin_avg_flux[spin_idx-1, :] = nanmean(data[current_start:spin_starts[spin_idx]+1, :], axis=0) current_start = spin_starts[spin_idx] + 1 - store_data(var_name + '_spin' + suffix, data={'x': times[spin_starts], 'y': spin_avg_flux, 'v': energies}) + store(var_name + '_spin' + suffix, data={'x': times[spin_starts], 'y': spin_avg_flux, 'v': energies}) options(var_name + '_spin' + suffix, 'spec', True) options(var_name + '_spin' + suffix, 'ylog', True) options(var_name + '_spin' + suffix, 'zlog', True) options(var_name + '_spin' + suffix, 'yrange', [lower_en, 600.0]) - options(var_name + '_spin' + suffix, 'Colormap', 'spedas') options(var_name + '_spin' + suffix, 'ztitle', units_label) options(var_name + '_spin' + suffix, 'ytitle', 'MMS' + str(probe) + ' ' + datatype) options(var_name + '_spin' + suffix, 'ysubtitle', '[keV]') diff --git a/pyspedas/mms/feeps/mms_feeps_split_integral_ch.py b/pyspedas/mms/feeps/mms_feeps_split_integral_ch.py index 6c26370c..bd481749 100644 --- a/pyspedas/mms/feeps/mms_feeps_split_integral_ch.py +++ b/pyspedas/mms/feeps/mms_feeps_split_integral_ch.py @@ -1,10 +1,10 @@ - import logging import pytplot logging.captureWarnings(True) logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) + def mms_feeps_split_integral_ch(units_type, species, probe, suffix='', data_rate='srvy', level='l2', sensor_eyes=None): """ This function splits the last integral channel from the FEEPS spectra, @@ -13,7 +13,8 @@ def mms_feeps_split_integral_ch(units_type, species, probe, suffix='', data_rate [original variable]_clean - spectra with the integral channel removed [original variable]_500keV_int - the integral channel that was removed - Parameters: + Parameters + ----------- units_type: str instrument datatype, e.g., 'intensity' @@ -35,10 +36,10 @@ def mms_feeps_split_integral_ch(units_type, species, probe, suffix='', data_rate sensor_eyes: dict Hash table containing the active sensor eyes - Returns: + Returns + ----------- List of tplot variables created. """ - if sensor_eyes is None: logging.error('Error: sensor_eyes not defined') return @@ -51,12 +52,18 @@ def mms_feeps_split_integral_ch(units_type, species, probe, suffix='', data_rate for sensor in top_sensors: top_name = 'mms'+str(probe)+'_epd_feeps_'+data_rate+'_'+level+'_'+species+'_top_'+units_type+'_sensorid_'+str(sensor) - time, data, energies = pytplot.get_data(top_name+suffix) + data_tuple = pytplot.get(top_name+suffix) + + if data_tuple is None: + logging.warning(f"Couldn't find the variable: {top_name+suffix}") + continue + + time, data, energies = data_tuple top_name_out = top_name+'_clean'+suffix try: - pytplot.store_data(top_name_out, data={'x': time, 'y': data[:, :-1], 'v': energies[:-1]}) - pytplot.store_data(top_name+'_500keV_int'+suffix, data={'x': time, 'y': data[:, -1]}) + pytplot.store(top_name_out, data={'x': time, 'y': data[:, :-1], 'v': energies[:-1]}) + pytplot.store(top_name+'_500keV_int'+suffix, data={'x': time, 'y': data[:, -1]}) out_vars.append(top_name_out) out_vars.append(top_name+'_500keV_int'+suffix) except Warning: @@ -70,12 +77,12 @@ def mms_feeps_split_integral_ch(units_type, species, probe, suffix='', data_rate for sensor in bot_sensors: bot_name = 'mms'+str(probe)+'_epd_feeps_'+data_rate+'_'+level+'_'+species+'_bottom_'+units_type+'_sensorid_'+str(sensor) - time, data, energies = pytplot.get_data(bot_name+suffix) + time, data, energies = pytplot.get(bot_name+suffix) bot_name_out = bot_name+'_clean'+suffix try: - pytplot.store_data(bot_name_out, data={'x': time, 'y': data[:, :-1], 'v': energies[:-1]}) - pytplot.store_data(bot_name+'_500keV_int'+suffix, data={'x': time, 'y': data[:, -1]}) + pytplot.store(bot_name_out, data={'x': time, 'y': data[:, :-1], 'v': energies[:-1]}) + pytplot.store(bot_name+'_500keV_int'+suffix, data={'x': time, 'y': data[:, -1]}) out_vars.append(bot_name_out) out_vars.append(bot_name+'_500keV_int'+suffix) except Warning: @@ -83,4 +90,4 @@ def mms_feeps_split_integral_ch(units_type, species, probe, suffix='', data_rate pytplot.del_data(bot_name+suffix) - return out_vars \ No newline at end of file + return out_vars diff --git a/pyspedas/mms/feeps/mms_read_feeps_sector_masks_csv.py b/pyspedas/mms/feeps/mms_read_feeps_sector_masks_csv.py index 0ab08318..5a769983 100644 --- a/pyspedas/mms/feeps/mms_read_feeps_sector_masks_csv.py +++ b/pyspedas/mms/feeps/mms_read_feeps_sector_masks_csv.py @@ -1,20 +1,22 @@ - import csv import os import numpy as np from pyspedas import time_double, time_string + def mms_read_feeps_sector_masks_csv(trange): """ This function returns the FEEPS sectors to mask due to sunlight contamination - Parameters: + Parameters + ----------- trange : list of str - time range of interest [starttime, endtime] with the format + time range of interest [start time, end time] with the format 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] - Returns: + Returns + ----------- Hash table containing the sectors to mask for each spacecraft and sensor ID """ @@ -27,7 +29,8 @@ def mms_read_feeps_sector_masks_csv(trange): 1506988800.0000000, # 10/3/2017 1538697600.0000000, # 10/5/2018 1642032000.0000000, # 1/13/2022 - 1651795200.0000000] # 5/6/2022 + 1651795200.0000000, # 5/6/2022 + 1660521600.0000000] # 8/15/2022 # find the file closest to the start time nearest_date = dates[(np.abs(np.array(dates)-time_double(trange[0]))).argmin()] diff --git a/pyspedas/mms/feeps/sun/MMS1_FEEPS_ContaminatedSectors_20220815.csv b/pyspedas/mms/feeps/sun/MMS1_FEEPS_ContaminatedSectors_20220815.csv new file mode 100644 index 00000000..73483cfd --- /dev/null +++ b/pyspedas/mms/feeps/sun/MMS1_FEEPS_ContaminatedSectors_20220815.csv @@ -0,0 +1,64 @@ +1,0,0,0,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,0,0,0,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,1,0,0,0,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,1,0,0,0,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,0,0,1,0,0,1,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0 +1,0,0,1,0,0,1,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0 +1,0,1,0,0,0,1,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0 +1,0,1,1,0,0,1,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0 +1,0,1,1,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0 +1,0,1,1,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0 +1,0,1,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0 +1,0,1,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0 +1,0,1,0,0,0,1,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,1,0 +1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,1,0 +1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0 +1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0 +1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0 +1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,0,1,1,0 +1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,1,1,0 +1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,1,1,1 +1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,1,1,1 +1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,0,1,1,1 +1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,0,1,1,1 +1,0,0,0,0,1,0,0,0,0,0,0,1,1,1,0,1,1,0,1,0,0,1,1 +1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,0,1,0,0,1,1 +1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,0,1,0,0,1,1 +1,0,0,0,1,1,0,0,0,0,0,0,1,1,1,0,1,0,0,1,0,0,1,1 +1,0,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,0,0,1,1 +1,0,0,0,1,0,0,0,0,0,1,0,1,1,1,0,0,0,0,1,0,0,1,1 +1,0,0,0,1,0,0,0,0,0,1,0,1,1,1,0,0,0,0,1,0,0,1,1 +1,0,0,0,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,1,0,0,1,1 +1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,1,0,0,1,1 +1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,1,0,0,1,1 +1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,0,0,0,1,1 +1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,1,0 +1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,1,0,0,0,0,1,0 +1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,1,0,0,0,0,1,1 +1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,1,1 +1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,1,1 +1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,1 +1,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,1 +1,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0 +1,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0 +1,0,0,0,1,1,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0 +1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0 +1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0 \ No newline at end of file diff --git a/pyspedas/mms/feeps/sun/MMS2_FEEPS_ContaminatedSectors_20220815.csv b/pyspedas/mms/feeps/sun/MMS2_FEEPS_ContaminatedSectors_20220815.csv new file mode 100644 index 00000000..4fb438bd --- /dev/null +++ b/pyspedas/mms/feeps/sun/MMS2_FEEPS_ContaminatedSectors_20220815.csv @@ -0,0 +1,64 @@ +0,0,0,0,0,1,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,1,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,1,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,0,1,0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,0,1,0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,1,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,1,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,1,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,1,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,1,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,1,1,0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,0,1,0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,0,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,0,1,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,0,1,1,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1 +0,0,0,0,0,0,1,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1 +0,0,0,1,0,0,1,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1 +0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1 +0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1 +0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1 +0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1 +0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1 +0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1 +0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1 +0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,0,0,1,0,0,0,0,1 +0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,1 +1,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,1 +1,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,1 +1,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,1,1 +0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,1,1,1,1 +0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,1,1,1,1 +0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,1,1 +0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,0,0,1,1,0,1,1,1 +0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,1,1,0,1,0,1,1,1 +0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,1,1,0,1,0,1,1,1 +0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,1,0,1,1,1 +0,0,0,0,0,1,1,0,0,0,0,1,0,1,0,0,0,0,1,1,0,1,1,1 +0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,1,1 +0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,1,1 +0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,1,1 +0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,1,1 +0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,1 +0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,1 +0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,1,0,1,0,1 +0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,1,0,1,0,1 +0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,1 +0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,1,1,0,0,0,1,0,1 +0,0,0,0,0,0,1,0,1,0,0,1,0,1,0,0,1,1,0,0,0,1,0,1 +0,0,0,0,0,0,1,0,1,0,0,1,0,1,0,0,1,1,0,0,0,0,0,1 +0,0,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1 +0,0,0,0,0,0,1,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1 +0,0,0,0,0,1,1,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,1,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,1,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,1,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1 +0,0,0,0,0,1,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1 \ No newline at end of file diff --git a/pyspedas/mms/feeps/sun/MMS3_FEEPS_ContaminatedSectors_20220815.csv b/pyspedas/mms/feeps/sun/MMS3_FEEPS_ContaminatedSectors_20220815.csv new file mode 100644 index 00000000..347b4919 --- /dev/null +++ b/pyspedas/mms/feeps/sun/MMS3_FEEPS_ContaminatedSectors_20220815.csv @@ -0,0 +1,64 @@ +1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0 +1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0 +1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0 +1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0 +1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0 +1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0 +1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0 +1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0 +1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0 +1,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0 +1,1,0,0,0,1,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0 +1,1,1,0,1,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0 +1,1,1,0,1,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0 +1,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0 +1,1,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0 +1,1,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0 +1,1,0,0,1,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0 +1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0 +1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0 +1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0 +1,1,1,1,1,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0 +1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0 +1,1,1,1,1,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0 +1,1,1,1,1,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0 +1,1,1,1,1,0,1,0,0,0,0,0,1,0,1,1,1,0,0,0,0,0,1,0 +1,1,1,1,1,0,1,0,0,0,0,0,1,0,1,1,1,0,0,0,0,0,1,0 +1,1,1,1,1,0,1,0,0,0,0,0,1,0,1,1,1,0,0,0,0,0,1,0 +1,1,1,1,1,0,1,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,1,0 +1,1,1,1,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0 +1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,0 +1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,0,0,1,0 +1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,1,0,0,1,0 +1,1,0,0,1,0,0,0,0,0,0,0,1,1,1,1,1,0,1,1,0,0,1,0 +1,1,0,0,1,0,0,0,0,0,0,0,1,1,1,1,1,0,1,1,0,0,1,0 +1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,0,1,1,0,0,1,0 +1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,0,1,0 +1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,1,1,0,0,1,1 +1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,1,1,0,0,1,1 +1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,1,1,0,0,1,1 +1,1,0,0,1,0,0,0,0,0,0,0,1,0,1,0,1,1,0,1,0,0,1,1 +1,1,0,0,1,0,0,0,0,0,0,0,1,0,1,0,1,1,0,1,0,0,1,1 +1,1,0,0,1,0,0,0,0,0,0,0,1,0,1,0,1,0,1,1,0,0,1,1 +1,1,0,0,1,1,0,0,0,0,0,0,1,0,1,0,1,0,1,1,0,0,1,1 +1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,0,1,1 +1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,1,1 +1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,1,1 +1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,1,1 +1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,1,1 +1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,1,0,1,1,1 +1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,1,1,1 +1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,1,0,1,1,0 +1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,1,0,1,1,0 +1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,0,0,1,1,1 +1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,0,0,1,1,1 +1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,0,0,1,1,1 +1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1 +1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1 +1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,1 +1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,1,1,1 +1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0 +1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0 +1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0 +1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0 +1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0 \ No newline at end of file diff --git a/pyspedas/mms/feeps/sun/MMS4_FEEPS_ContaminatedSectors_20220815.csv b/pyspedas/mms/feeps/sun/MMS4_FEEPS_ContaminatedSectors_20220815.csv new file mode 100644 index 00000000..909db8c8 --- /dev/null +++ b/pyspedas/mms/feeps/sun/MMS4_FEEPS_ContaminatedSectors_20220815.csv @@ -0,0 +1,64 @@ +0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1 +0,1,0,0,1,1,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1 +0,0,0,0,1,1,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1 +0,0,0,1,1,1,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1 +0,0,0,1,1,1,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1 +1,0,0,1,1,1,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1 +1,0,0,1,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1 +1,0,0,1,1,0,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1 +1,0,0,1,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0 +1,0,0,1,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0 +1,1,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0 +1,1,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0 +1,1,0,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0 +1,1,0,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0 +1,1,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0 +1,1,0,1,0,0,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,1,0,1,0,0,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,1,0,1,0,0,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0 +1,1,0,1,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0 +1,1,0,1,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0 +1,1,1,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0 +1,1,1,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0 +1,1,1,1,0,0,1,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0 +1,1,1,1,0,0,1,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0 +1,1,1,1,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0 +1,1,1,1,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0 +1,1,1,1,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1 +1,1,1,1,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1 +1,1,1,1,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1 +1,1,1,0,0,0,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,1,1 +1,1,0,0,0,0,1,0,0,0,0,0,1,1,1,1,0,0,1,0,0,1,1,1 +1,1,0,0,0,0,1,0,0,0,0,0,1,1,1,1,0,0,1,1,1,1,1,1 +1,1,0,0,0,0,1,0,0,0,0,0,1,1,1,1,0,0,1,1,1,1,1,1 +1,1,0,0,0,0,1,0,0,0,0,0,1,1,0,1,0,0,1,1,1,1,1,1 +1,1,0,0,0,0,1,0,0,0,0,0,1,1,0,1,0,0,1,1,1,1,1,1 +0,1,0,0,0,0,1,0,0,0,0,0,1,1,0,1,0,0,1,1,1,1,1,1 +0,1,0,0,0,0,1,0,0,0,0,0,1,1,0,1,0,0,1,1,1,1,1,1 +0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,1,0,0,1,1,1,1,1,0 +0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,1,0 +0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,0,1,1,1,1,0 +0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,0,1,1,1,1,1 +0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1 +0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,1,0,0,1,1,1,1,1,1 +0,0,0,0,1,0,1,0,0,0,0,0,1,1,0,1,0,0,1,1,1,1,1,1 +0,0,0,0,1,0,1,0,0,0,0,1,1,1,0,1,0,0,0,1,1,1,1,1 +0,0,0,0,1,0,1,0,0,0,0,1,1,1,0,1,0,0,0,1,1,1,1,1 +0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,1,1,0,0,1,1,1,1,1 +0,0,0,0,1,0,1,0,0,0,0,1,1,1,0,1,0,0,0,1,1,1,1,1 +0,0,0,0,1,0,1,0,0,0,0,1,1,1,0,1,0,0,0,1,0,1,1,1 +0,0,0,0,1,0,1,0,0,0,0,1,1,1,0,1,0,0,0,1,0,1,1,1 +0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,1,0,1,0,1,0,1,1,1 +0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,1,0,1,0,0,0,1,1,1 +0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,1,1,1,0,0,0,1,1,1 +0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,1,1,1,0,0,0,1,1,1 +0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,1,1,1,0,0,0,1,1,1 +0,0,0,0,1,0,1,0,0,0,1,1,1,1,0,1,1,0,0,0,0,1,1,1 +0,0,0,0,1,0,1,0,0,0,1,1,1,1,0,1,1,0,0,0,0,1,1,1 +0,0,0,0,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,0,0,1,1,1 +0,0,0,0,1,0,1,1,0,0,1,1,1,1,0,0,0,1,0,0,0,1,1,1 +0,1,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,1 +0,1,0,0,1,1,1,0,1,0,1,1,1,1,0,0,0,0,0,0,0,1,1,1 +0,1,0,1,1,1,1,0,1,1,1,0,1,1,0,0,0,0,0,0,0,0,1,1 +0,1,0,1,1,1,1,0,1,1,1,0,1,1,0,0,0,0,0,0,0,0,1,1 +0,1,0,0,1,1,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1 \ No newline at end of file diff --git a/pyspedas/mms/fgm/fgm.py b/pyspedas/mms/fgm/fgm.py index 6c434dd3..4f8fddf6 100644 --- a/pyspedas/mms/fgm/fgm.py +++ b/pyspedas/mms/fgm/fgm.py @@ -1,15 +1,13 @@ - +import re from pyspedas.mms.mms_load_data import mms_load_data from pyspedas.mms.fgm.mms_fgm_remove_flags import mms_fgm_remove_flags from pyspedas.mms.fgm.mms_fgm_set_metadata import mms_fgm_set_metadata from pyspedas.mms.fgm.mms_split_fgm_data import mms_split_fgm_data from pyspedas.mms.print_vars import print_vars from pyspedas.mms.mms_config import CONFIG -from pyspedas.utilities.data_exists import data_exists - +from pytplot import data_exists from pytplot import del_data -import re @print_vars def mms_load_fgm(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy', @@ -19,12 +17,12 @@ def mms_load_fgm(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy min_version=None, cdf_version=None, spdf=False, always_prompt=False, no_split_vars=False, get_fgm_ephemeris=False): """ - This function loads FGM data into tplot variables + Load MMS magnetometer data Parameters ---------- trange : list of str - time range of interest [starttime, endtime] with the format + time range of interest [start time, end time] with the format 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] @@ -64,11 +62,11 @@ def mms_load_fgm(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy notplot: bool If True, then data are returned in a hash table instead of being stored in tplot variables (useful for debugging, and - access to multi-dimensional data products) + access to multidimensional data products) available: bool If True, simply return the available data files (without downloading) - for the requested paramters + for the requested parameters no_update: bool Set this flag to preserve the original data. if not set and newer @@ -92,7 +90,7 @@ def mms_load_fgm(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy always_prompt: bool Set this keyword to always prompt for the user's username and password; - useful if you accidently save an incorrect password, or if your SDC password has changed + useful if you accidentally save an incorrect password, or if your SDC password has changed spdf: bool If True, download the data from the SPDF instead of the SDC @@ -100,11 +98,11 @@ def mms_load_fgm(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy get_fgm_ephemeris: bool Keep the ephemeris variables in the FGM files - Returns: + Returns + ---------- List of tplot variables created. """ - if (varformat is not None) and (not keep_flagged) and (not available) and (not notplot): varformat_fetch = varformat+'|*_flag_*' else: diff --git a/pyspedas/mms/fgm/mms_curl.py b/pyspedas/mms/fgm/mms_curl.py index 0ef9bed1..94456dab 100644 --- a/pyspedas/mms/fgm/mms_curl.py +++ b/pyspedas/mms/fgm/mms_curl.py @@ -1,9 +1,10 @@ - +import logging import math import numpy as np from pytplot import get_data, store_data, options from pyspedas import tinterpol + def mms_curl(fields=None, positions=None, suffix=''): """ This function applies the curlometer technique to MMS FGM data @@ -40,11 +41,11 @@ def mms_curl(fields=None, positions=None, suffix=''): """ if fields is None or positions is None: - print('Error: B-field and spacecraft position keywords required.') + logging.error('Error: B-field and spacecraft position keywords required.') return if len(fields) != 4 or len(positions) != 4: - print('Error, fields and positions keywords should be specified as 4-element arrays containing the tplot variable name for the field and position variables') + logging.error('Error, fields and positions keywords should be specified as 4-element arrays containing the tplot variable name for the field and position variables') return # ********************************************************* @@ -71,16 +72,16 @@ def mms_curl(fields=None, positions=None, suffix=''): mms4_bfield = get_data(fields[3] + '_i') if mms1_bfield is None: - print('Error, B-field variable is missing: ' + fields[0]) + logging.error('Error, B-field variable is missing: ' + fields[0]) return elif mms2_bfield is None: - print('Error, B-field variable is missing: ' + fields[1] + '_i') + logging.error('Error, B-field variable is missing: ' + fields[1] + '_i') return elif mms3_bfield is None: - print('Error, B-field variable is missing: ' + fields[2] + '_i') + logging.error('Error, B-field variable is missing: ' + fields[2] + '_i') return elif mms4_bfield is None: - print('Error, B-field variable is missing: ' + fields[3] + '_i') + logging.error('Error, B-field variable is missing: ' + fields[3] + '_i') return timesb1, datab1 = mms1_bfield @@ -100,16 +101,16 @@ def mms_curl(fields=None, positions=None, suffix=''): mms4_pos = get_data(positions[3] + '_i') if mms1_pos is None: - print('Error, S/C position variable is missing: ' + positions[0] + '_i') + logging.error('Error, S/C position variable is missing: ' + positions[0] + '_i') return elif mms2_pos is None: - print('Error, S/C position variable is missing: ' + positions[1] + '_i') + logging.error('Error, S/C position variable is missing: ' + positions[1] + '_i') return elif mms3_pos is None: - print('Error, S/C position variable is missing: ' + positions[2] + '_i') + logging.error('Error, S/C position variable is missing: ' + positions[2] + '_i') return elif mms4_pos is None: - print('Error, S/C position variable is missing: ' + positions[3] + '_i') + logging.error('Error, S/C position variable is missing: ' + positions[3] + '_i') return timesp1, p1 = mms1_pos @@ -218,17 +219,14 @@ def mms_curl(fields=None, positions=None, suffix=''): options('divB' + suffix, 'ysubtitle', '[nT/km]') options('curlB' + suffix, 'ytitle', 'curl(B)') options('curlB' + suffix, 'ysubtitle', '[nT/km]') - options('curlB' + suffix, 'Color', ['b', 'g', 'r']) options('curlB' + suffix, 'legend_names', ['delBx', 'delBy', 'delBz']) options('jtotal' + suffix, 'ytitle', 'J') options('jtotal' + suffix, 'ysubtitle', '[A/m^2]') - options('jtotal' + suffix, 'Color', ['b', 'g', 'r']) options('jtotal' + suffix, 'legend_names', ['Jx', 'Jy', 'Jz']) options('jperp' + suffix, 'ytitle', 'Jperp') options('jperp' + suffix, 'ysubtitle', '[A/m^2]') - options('jperp' + suffix, 'Color', ['b', 'g', 'r']) options('jperp' + suffix, 'legend_names', ['Jperpx', 'Jperpy', 'Jperpz']) options('jpar' + suffix, 'ytitle', 'Jparallel') options('jpar' + suffix, 'ysubtitle', '[A/m^2]') - return ['baryb', 'curlB', 'divB', 'jtotal', 'jpar', 'jperp', 'alpha', 'alphaparallel'] \ No newline at end of file + return ['baryb', 'curlB', 'divB', 'jtotal', 'jpar', 'jperp', 'alpha', 'alphaparallel'] diff --git a/pyspedas/mms/fgm/mms_fgm_remove_flags.py b/pyspedas/mms/fgm/mms_fgm_remove_flags.py index e464e66c..23d55af9 100644 --- a/pyspedas/mms/fgm/mms_fgm_remove_flags.py +++ b/pyspedas/mms/fgm/mms_fgm_remove_flags.py @@ -1,25 +1,27 @@ import numpy as np from pytplot import get_data, store_data from pyspedas import tnames -from pyspedas.utilities.data_exists import data_exists +from pytplot import data_exists + def mms_fgm_remove_flags(probe, data_rate, level, instrument, suffix=''): """ This function removes data flagged by the FGM 'flag' variable (flags > 0), in order to only show science quality data by default. - Parameters: - probe : str or list of str + Parameters + ----------- + probe: str or list of str probe or list of probes, valid values for MMS probes are ['1','2','3','4']. - data_rate : str or list of str + data_rate: str or list of str instrument data rates for FGM include 'brst' 'fast' 'slow' 'srvy'. The default is 'srvy'. - level : str + level: str indicates level of data processing. the default if no level is specified is 'l2' - instrument : str + instrument: str instrument; probably 'fgm' suffix: str @@ -44,7 +46,7 @@ def mms_fgm_remove_flags(probe, data_rate, level, instrument, suffix=''): if not data_exists(flag_var): continue - flagged = get_data(flag_var) + flagged = get_data(flag_var, dt=True) if flagged is None: continue @@ -55,7 +57,7 @@ def mms_fgm_remove_flags(probe, data_rate, level, instrument, suffix=''): for var_specifier in ['_b_gse_', '_b_gsm_', '_b_dmpa_', '_b_bcs_']: var_name = 'mms'+str(this_probe)+'_'+instrument+var_specifier+this_dr+'_'+this_lvl+suffix if var_name in tplot_vars: - times, var_data = get_data(var_name) + times, var_data = get_data(var_name, dt=True) metadata = get_data(var_name, metadata=True) var_data[flagged_data] = np.nan store_data(var_name, data={'x': times, 'y': var_data}, attr_dict=metadata) diff --git a/pyspedas/mms/fgm/mms_fgm_set_metadata.py b/pyspedas/mms/fgm/mms_fgm_set_metadata.py index 523b22d2..6c77dc1a 100644 --- a/pyspedas/mms/fgm/mms_fgm_set_metadata.py +++ b/pyspedas/mms/fgm/mms_fgm_set_metadata.py @@ -1,6 +1,7 @@ from pytplot import options from pyspedas import tnames + def mms_fgm_set_metadata(probe, data_rate, level, instrument, suffix=''): """ This function updates the metadata for FGM data products @@ -36,34 +37,26 @@ def mms_fgm_set_metadata(probe, data_rate, level, instrument, suffix=''): for this_lvl in level: if 'mms'+str(this_probe)+'_'+instrument+'_b_gse_'+this_dr+'_'+this_lvl+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_b_gse_'+this_dr+'_'+this_lvl+suffix, 'ytitle', 'MMS'+str(this_probe)+' FGM') - options('mms'+str(this_probe)+'_'+instrument+'_b_gse_'+this_dr+'_'+this_lvl+suffix, 'color', ['b', 'g', 'r', '#000000']) options('mms'+str(this_probe)+'_'+instrument+'_b_gse_'+this_dr+'_'+this_lvl+suffix, 'legend_names', ['Bx GSE', 'By GSE', 'Bz GSE', 'B total']) if 'mms'+str(this_probe)+'_'+instrument+'_b_gsm_'+this_dr+'_'+this_lvl+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_b_gsm_'+this_dr+'_'+this_lvl+suffix, 'ytitle', 'MMS'+str(this_probe)+' FGM') - options('mms'+str(this_probe)+'_'+instrument+'_b_gsm_'+this_dr+'_'+this_lvl+suffix, 'color', ['b', 'g', 'r', '#000000']) options('mms'+str(this_probe)+'_'+instrument+'_b_gsm_'+this_dr+'_'+this_lvl+suffix, 'legend_names', ['Bx GSM', 'By GSM', 'Bz GSM', 'B total']) if 'mms'+str(this_probe)+'_'+instrument+'_b_dmpa_'+this_dr+'_'+this_lvl+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_b_dmpa_'+this_dr+'_'+this_lvl+suffix, 'ytitle', 'MMS'+str(this_probe)+' FGM') - options('mms'+str(this_probe)+'_'+instrument+'_b_dmpa_'+this_dr+'_'+this_lvl+suffix, 'color', ['b', 'g', 'r', '#000000']) options('mms'+str(this_probe)+'_'+instrument+'_b_dmpa_'+this_dr+'_'+this_lvl+suffix, 'legend_names', ['Bx DMPA', 'By DMPA', 'Bz DMPA', 'B total']) if 'mms'+str(this_probe)+'_'+instrument+'_b_bcs_'+this_dr+'_'+this_lvl+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_b_bcs_'+this_dr+'_'+this_lvl+suffix, 'ytitle', 'MMS'+str(this_probe)+' FGM') - options('mms'+str(this_probe)+'_'+instrument+'_b_bcs_'+this_dr+'_'+this_lvl+suffix, 'color', ['b', 'g', 'r', '#000000']) options('mms'+str(this_probe)+'_'+instrument+'_b_bcs_'+this_dr+'_'+this_lvl+suffix, 'legend_names', ['Bx BCS', 'By BCS', 'Bz BCS', 'B total']) if 'mms'+str(this_probe)+'_'+instrument+'_b_gse_'+this_dr+'_'+this_lvl+'_bvec'+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_b_gse_'+this_dr+'_'+this_lvl+'_bvec'+suffix, 'ytitle', 'MMS'+str(this_probe)+' FGM') - options('mms'+str(this_probe)+'_'+instrument+'_b_gse_'+this_dr+'_'+this_lvl+'_bvec'+suffix, 'color', ['b', 'g', 'r']) options('mms'+str(this_probe)+'_'+instrument+'_b_gse_'+this_dr+'_'+this_lvl+'_bvec'+suffix, 'legend_names', ['Bx GSE', 'By GSE', 'Bz GSE']) if 'mms'+str(this_probe)+'_'+instrument+'_b_gsm_'+this_dr+'_'+this_lvl+'_bvec'+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_b_gsm_'+this_dr+'_'+this_lvl+'_bvec'+suffix, 'ytitle', 'MMS'+str(this_probe)+' FGM') - options('mms'+str(this_probe)+'_'+instrument+'_b_gsm_'+this_dr+'_'+this_lvl+'_bvec'+suffix, 'color', ['b', 'g', 'r']) options('mms'+str(this_probe)+'_'+instrument+'_b_gsm_'+this_dr+'_'+this_lvl+'_bvec'+suffix, 'legend_names', ['Bx GSM', 'By GSM', 'Bz GSM']) if 'mms'+str(this_probe)+'_'+instrument+'_b_dmpa_'+this_dr+'_'+this_lvl+'_bvec'+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_b_dmpa_'+this_dr+'_'+this_lvl+'_bvec'+suffix, 'ytitle', 'MMS'+str(this_probe)+' FGM') - options('mms'+str(this_probe)+'_'+instrument+'_b_dmpa_'+this_dr+'_'+this_lvl+'_bvec'+suffix, 'color', ['b', 'g', 'r']) options('mms'+str(this_probe)+'_'+instrument+'_b_dmpa_'+this_dr+'_'+this_lvl+'_bvec'+suffix, 'legend_names', ['Bx DMPA', 'By DMPA', 'Bz DMPA']) if 'mms'+str(this_probe)+'_'+instrument+'_b_bcs_'+this_dr+'_'+this_lvl+'_bvec'+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_b_bcs_'+this_dr+'_'+this_lvl+'_bvec'+suffix, 'ytitle', 'MMS'+str(this_probe)+' FGM') - options('mms'+str(this_probe)+'_'+instrument+'_b_bcs_'+this_dr+'_'+this_lvl+'_bvec'+suffix, 'color', ['b', 'g', 'r']) options('mms'+str(this_probe)+'_'+instrument+'_b_bcs_'+this_dr+'_'+this_lvl+'_bvec'+suffix, 'legend_names', ['Bx BCS', 'By BCS', 'Bz BCS']) diff --git a/pyspedas/mms/fgm/mms_lingradest.py b/pyspedas/mms/fgm/mms_lingradest.py index 8a2b8301..0ffbf255 100644 --- a/pyspedas/mms/fgm/mms_lingradest.py +++ b/pyspedas/mms/fgm/mms_lingradest.py @@ -1,15 +1,34 @@ +import logging import numpy as np from pyspedas import tinterpol from pyspedas.analysis.lingradest import lingradest from pytplot import get_data, store_data, options, join_vec + def mms_lingradest(fields=None, positions=None, suffix=''): """ - + Calculations of Grad, Curl, Curv,..., for MMS using + the Linear Gradient/Curl Estimator technique + see Chanteur, ISSI, 1998, Ch. 11 + + Parameters + ---------- + fields : list of str + Names of the magnetic field data variables, ordered by spacecraft + (e.g., ['mms1_b_gse', 'mms2_b_gse', 'mms3_b_gse', 'mms4_b_gse']). + positions : list of str + Names of the spacecraft position data variables, ordered by spacecraft + (e.g., ['mms1_pos_gse', 'mms2_pos_gse', 'mms3_pos_gse', 'mms4_pos_gse']). + suffix : str, optional + Suffix to add to the names of the output variables. + + Returns + ------- + None + The function stores the computed parameters as PyTplot variables """ - if fields is None or positions is None: - print('B-field and spacecraft position keywords required.') + logging.error('B-field and spacecraft position keywords required.') return # interpolate the magnetic field data all onto the same timeline (MMS1): diff --git a/pyspedas/mms/fgm/mms_split_fgm_data.py b/pyspedas/mms/fgm/mms_split_fgm_data.py index 9a5bdbe1..4cf17453 100644 --- a/pyspedas/mms/fgm/mms_split_fgm_data.py +++ b/pyspedas/mms/fgm/mms_split_fgm_data.py @@ -1,15 +1,16 @@ import logging -from pyspedas.utilities.data_exists import data_exists +from pytplot import data_exists from pytplot import get_data, store_data, options logging.captureWarnings(True) logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) + def mms_split_fgm_data(probe, data_rate, level, instrument, suffix=''): """ - - + Helper routine for splitting 4-vector FGM data (Bx, By, Bz, b_total) + into 2 tplot variables, one for the vector (Bx, By, Bz), and one for the total """ probe = probe.lower() @@ -35,7 +36,7 @@ def mms_split_fgm_data(probe, data_rate, level, instrument, suffix=''): if not data_exists(tplot_name): continue - fgm_data = get_data(tplot_name) + fgm_data = get_data(tplot_name, dt=True) if fgm_data is None: continue @@ -54,4 +55,4 @@ def mms_split_fgm_data(probe, data_rate, level, instrument, suffix=''): out_vars.append(tplot_name + '_bvec' + suffix) out_vars.append(tplot_name + '_btot' + suffix) - return out_vars \ No newline at end of file + return out_vars diff --git a/pyspedas/mms/fpi/fpi.py b/pyspedas/mms/fpi/fpi.py index 7be7f516..05f7903b 100644 --- a/pyspedas/mms/fpi/fpi.py +++ b/pyspedas/mms/fpi/fpi.py @@ -7,6 +7,7 @@ from pyspedas.mms.mms_config import CONFIG from pytplot import tplot_rename, del_data + @print_vars def mms_load_fpi(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='fast', level='l2', datatype='*', varformat=None, varnames=[], suffix='', @@ -14,12 +15,12 @@ def mms_load_fpi(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='fast available=False, notplot=False, latest_version=False, major_version=False, min_version=None, cdf_version=None, spdf=False, always_prompt=False): """ - This function loads FPI data into tplot variables + Load data from the Fast Plasma Investigation (FPI) Parameters ---------- trange : list of str - time range of interest [starttime, endtime] with the format + time range of interest [start time, end time] with the format 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] @@ -66,11 +67,11 @@ def mms_load_fpi(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='fast notplot: bool If True, then data are returned in a hash table instead of being stored in tplot variables (useful for debugging, and - access to multi-dimensional data products) + access to multidimensional data products) available: bool If True, simply return the available data files (without downloading) - for the requested paramters + for the requested parameters no_update: bool Set this flag to preserve the original data. if not set and newer @@ -90,16 +91,16 @@ def mms_load_fpi(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='fast always_prompt: bool Set this keyword to always prompt for the user's username and password; - useful if you accidently save an incorrect password, or if your SDC password has changed + useful if you accidentally save an incorrect password, or if your SDC password has changed spdf: bool If True, download the data from the SPDF instead of the SDC - Returns: + Returns + ----------- List of tplot variables created. """ - # different datatypes for burst mode files if data_rate.lower() == 'brst': if isinstance(datatype, str): @@ -159,8 +160,10 @@ def mms_load_fpi(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='fast notplot=notplot, latest_version=latest_version, major_version=major_version, min_version=min_version, cdf_version=cdf_version, spdf=spdf, always_prompt=always_prompt) - tvars.extend(tplotnames_errflags_emom) - tvars.extend(tplotnames_errflags_edist) + if tplotnames_errflags_emom is not None: + tvars.extend(tplotnames_errflags_emom) + if tplotnames_errflags_edist is not None: + tvars.extend(tplotnames_errflags_edist) else: # user didn't request both dist and moments, so no variables should have been clobbered # but we still need to append _dist, _moms to the end of the names @@ -200,8 +203,10 @@ def mms_load_fpi(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='fast notplot=notplot, latest_version=latest_version, major_version=major_version, min_version=min_version, cdf_version=cdf_version, spdf=spdf, always_prompt=always_prompt) - tvars.extend(tplotnames_errflags_imom) - tvars.extend(tplotnames_errflags_idist) + if tplotnames_errflags_imom is not None: + tvars.extend(tplotnames_errflags_imom) + if tplotnames_errflags_idist is not None: + tvars.extend(tplotnames_errflags_idist) else: # user didn't request both dist and moments, so no variables should have been clobbered # but we still need to append _dist, _moms to the end of the names diff --git a/pyspedas/mms/fpi/mms_fpi_ang_ang.py b/pyspedas/mms/fpi/mms_fpi_ang_ang.py index 29dfce51..98bb0838 100644 --- a/pyspedas/mms/fpi/mms_fpi_ang_ang.py +++ b/pyspedas/mms/fpi/mms_fpi_ang_ang.py @@ -7,19 +7,29 @@ import pyspedas from pyspedas import time_double from pyspedas.mms.fpi.mms_get_fpi_dist import mms_get_fpi_dist +from pyspedas.mms.fpi.mms_pad_fpi import mms_pad_fpi def mms_fpi_ang_ang(time, species='i', probe='1', data_rate='fast', + fgm_data_rate='srvy', level='l2', + fgm_level='l2', + center_measurement=False, energy_range=[10, 30000], xsize=8, ysize=8, cmap='spedas', zrange=[None, None], + nocontours=False, + save_png=None, + save_jpeg=None, + save_eps=None, + save_svg=None, + dpi=300, display=True): """ Creates various plots directly from the FPI distribution functions, including: @@ -77,6 +87,7 @@ def mms_fpi_ang_ang(time, level=level, center_measurement=center_measurement) + fgm_vars = pyspedas.mms.fgm(trange=trange, probe=probe, data_rate=fgm_data_rate, level=fgm_level) dist = get_data('mms'+probe+'_d'+species+'s_dist_'+data_rate) closest_idx = np.searchsorted(dist.times, time_double(time), side='left') @@ -109,6 +120,10 @@ def mms_fpi_ang_ang(time, spec_options = {} + pa_dist = mms_pad_fpi(dists, + time=dist.times[closest_idx], + mag_data='mms'+probe+'_fgm_b_gse_'+fgm_data_rate+'_'+fgm_level+'_bvec') + # the first figure: azimuth vs. zenith fig, axes = plt.subplots() fig.set_size_inches(xsize, ysize) @@ -139,6 +154,24 @@ def mms_fpi_ang_ang(time, colorbar = fig.colorbar(im, cax=cax) colorbar.set_label('f ($s^3$/$cm^6$)') + if not nocontours: + num_levels = 16 + contour_levels = np.array(180*np.arange(num_levels+1)/num_levels, dtype=int) + contours = axes.contour(pa_dist['wpol'], pa_dist['waz'], pa_dist['pa_azpol'], contour_levels, linewidths=0.5) + axes.clabel(contours, contours.levels, inline=True, fontsize=10) + + if save_png is not None and save_png != '': + plt.savefig(save_png + '_azimuth_vs_zenith.png', dpi=dpi) + + if save_jpeg is not None and save_jpeg != '': + plt.savefig(save_jpeg + '_azimuth_vs_zenith.jpeg', dpi=dpi) + + if save_eps is not None and save_eps != '': + plt.savefig(save_eps + '_azimuth_vs_zenith.eps', dpi=dpi) + + if save_svg is not None and save_svg != '': + plt.savefig(save_svg + '_azimuth_vs_zenith.svg', dpi=dpi) + # Zenith vs. energy fig2, axes2 = plt.subplots() fig2.set_size_inches(xsize, ysize) @@ -163,6 +196,18 @@ def mms_fpi_ang_ang(time, colorbar2 = fig2.colorbar(im2, cax=cax2) colorbar2.set_label('f ($s^3$/$cm^6$)') + if save_png is not None and save_png != '': + plt.savefig(save_png + '_zenith_vs_energy.png', dpi=dpi) + + if save_jpeg is not None and save_jpeg != '': + plt.savefig(save_jpeg + '_zenith_vs_energy.jpeg', dpi=dpi) + + if save_eps is not None and save_eps != '': + plt.savefig(save_eps + '_zenith_vs_energy.eps', dpi=dpi) + + if save_svg is not None and save_svg != '': + plt.savefig(save_svg + '_zenith_vs_energy.svg', dpi=dpi) + # Azimuth vs. energy fig3, axes3 = plt.subplots() fig3.set_size_inches(xsize, ysize) @@ -185,5 +230,46 @@ def mms_fpi_ang_ang(time, colorbar3 = fig3.colorbar(im3, cax=cax3) colorbar3.set_label('f ($s^3$/$cm^6$)') + if save_png is not None and save_png != '': + plt.savefig(save_png + '_azimuth_vs_energy.png', dpi=dpi) + + if save_jpeg is not None and save_jpeg != '': + plt.savefig(save_jpeg + '_azimuth_vs_energy.jpeg', dpi=dpi) + + if save_eps is not None and save_eps != '': + plt.savefig(save_eps + '_azimuth_vs_energy.eps', dpi=dpi) + + if save_svg is not None and save_svg != '': + plt.savefig(save_svg + '_azimuth_vs_energy.svg', dpi=dpi) + + # PA vs. energy + fig4, axes4 = plt.subplots() + fig4.set_size_inches(xsize, ysize) + + fig4.subplots_adjust(left=0.14, right=0.85) + axes4.set_yscale('log') + axes4.set_xlabel('Pitch angle (deg)') + axes4.set_ylabel('Energy (eV)') + + spec_options['norm'] = mpl.colors.LogNorm(vmin=zrange[0], vmax=zrange[1]) + + im4 = axes4.pcolormesh(pa_dist['pa'], pa_dist['egy'], pa_dist['data'], **spec_options) + + cax4 = fig4.add_axes([box.xmax + pad, box.ymin, width, box.height]) + colorbar4 = fig4.colorbar(im4, cax=cax4) + colorbar4.set_label('f ($s^3$/$cm^6$)') + + if save_png is not None and save_png != '': + plt.savefig(save_png + '_pa_vs_energy.png', dpi=dpi) + + if save_jpeg is not None and save_jpeg != '': + plt.savefig(save_jpeg + '_pa_vs_energy.jpeg', dpi=dpi) + + if save_eps is not None and save_eps != '': + plt.savefig(save_eps + '_pa_vs_energy.eps', dpi=dpi) + + if save_svg is not None and save_svg != '': + plt.savefig(save_svg + '_pa_vs_energy.svg', dpi=dpi) + if display: plt.show() diff --git a/pyspedas/mms/fpi/mms_fpi_make_compressionlossbars.py b/pyspedas/mms/fpi/mms_fpi_make_compressionlossbars.py index 91e8da6d..836787c7 100644 --- a/pyspedas/mms/fpi/mms_fpi_make_compressionlossbars.py +++ b/pyspedas/mms/fpi/mms_fpi_make_compressionlossbars.py @@ -1,7 +1,9 @@ +import logging import numpy as np from fnmatch import fnmatch from pytplot import get_data, store_data, options -from pyspedas import time_double +from pyspedas import time_datetime + def mms_fpi_make_compressionlossbars(tname, lossy=False): """ @@ -33,13 +35,12 @@ def mms_fpi_make_compressionlossbars(tname, lossy=False): List of the tplot variables created. """ - if fnmatch(tname, 'mms?_dis*'): instrument = 'DIS' elif fnmatch(tname, 'mms?_des*'): instrument = 'DES' else: - print('Unable to determine instrument from variable name.') + logging.error('Unable to determine instrument from variable name.') return if instrument == 'DES': @@ -48,19 +49,19 @@ def mms_fpi_make_compressionlossbars(tname, lossy=False): colors = 'blue' if fnmatch(tname, '*_fast*'): - print('All fast survey data are lossy compressed, so there is no need to create this bar.') + logging.info('All fast survey data are lossy compressed, so there is no need to create this bar.') return elif fnmatch(tname, '*_brst*'): data_rate = 'Brst' else: - print('Unable to determine data rate from variable name.') + logging.error('Unable to determine data rate from variable name.') return - data = get_data(tname) + data = get_data(tname, dt=True) metadata = get_data(tname, metadata=True) if data is None: - print('Problem reading the variable: ' + tname) + logging.error('Problem reading the variable: ' + tname) return flagline = np.zeros(len(data.times)) @@ -70,7 +71,7 @@ def mms_fpi_make_compressionlossbars(tname, lossy=False): version = file_id.split('_v')[1].split('.') if version[0] == '2': if version[1] == '1': - if data.times[0] < time_double('2016-04-01'): + if data.times[0] < time_datetime('2016-04-01'): lossy = 3 else: lossy = 1 @@ -99,4 +100,4 @@ def mms_fpi_make_compressionlossbars(tname, lossy=False): options(tname + '_flagbars', 'thick', 4) options(tname + '_flagbars', 'border', False) - return [tname + '_flagbars'] \ No newline at end of file + return [tname + '_flagbars'] diff --git a/pyspedas/mms/fpi/mms_fpi_make_errorflagbars.py b/pyspedas/mms/fpi/mms_fpi_make_errorflagbars.py index 530b2736..ce3a5643 100644 --- a/pyspedas/mms/fpi/mms_fpi_make_errorflagbars.py +++ b/pyspedas/mms/fpi/mms_fpi_make_errorflagbars.py @@ -1,6 +1,7 @@ import numpy as np from pytplot import get_data, store_data, options + def mms_fpi_make_errorflagbars(tname, level='l2'): """ This procedure creates FPI error flag bars for plotting @@ -76,11 +77,10 @@ def mms_fpi_make_errorflagbars(tname, level='l2'): ----------- List containing the names of the created tplot variables """ - instrument = tname.split('_')[1].upper() data_rate = tname.split('_')[3].capitalize() - data = get_data(tname) + data = get_data(tname, dt=True) metadata = get_data(tname, metadata=True) if metadata is None: @@ -225,7 +225,11 @@ def mms_fpi_make_errorflagbars(tname, level='l2'): flagline = np.zeros((len(data.times), 2)) for i in [0, 1]: for j in range(len(flags)): - if int(flags[13-i:13-i+1][0]) == 0: + try: + flagset = int(flags[13-i:13-i+1][0]) + except IndexError: + continue + if flagset == 0: flagline[j, i] = np.nan else: flagline[j, i] = 1 @@ -243,4 +247,4 @@ def mms_fpi_make_errorflagbars(tname, level='l2'): options(tname + '_flagbars_dist', 'markers', 's') out_vars = [tname + '_flagbars_dist'] - return out_vars \ No newline at end of file + return out_vars diff --git a/pyspedas/mms/fpi/mms_fpi_set_metadata.py b/pyspedas/mms/fpi/mms_fpi_set_metadata.py index f860251c..a7243f03 100644 --- a/pyspedas/mms/fpi/mms_fpi_set_metadata.py +++ b/pyspedas/mms/fpi/mms_fpi_set_metadata.py @@ -1,6 +1,7 @@ from pytplot import options from pyspedas import tnames + def mms_fpi_set_metadata(probe, data_rate, datatype, level, suffix=''): """ This function updates the metadata for FPI data products @@ -39,7 +40,6 @@ def mms_fpi_set_metadata(probe, data_rate, datatype, level, suffix=''): options('mms'+this_probe+'_des_energyspectr_par_'+this_dr+suffix, 'ytitle', 'MMS'+this_probe+' DES') options('mms'+this_probe+'_des_energyspectr_par_'+this_dr+suffix, 'ylog', True) options('mms'+this_probe+'_des_energyspectr_par_'+this_dr+suffix, 'zlog', True) - options('mms'+this_probe+'_des_energyspectr_par_'+this_dr+suffix, 'Colormap', 'spedas') options('mms'+this_probe+'_des_energyspectr_par_'+this_dr+suffix, 'ztitle', '[keV/(cm^2 s sr keV)]') options('mms'+this_probe+'_des_energyspectr_par_'+this_dr+suffix, 'spec', True) @@ -47,14 +47,12 @@ def mms_fpi_set_metadata(probe, data_rate, datatype, level, suffix=''): options('mms'+this_probe+'_des_energyspectr_anti_'+this_dr+suffix, 'ytitle', 'MMS'+this_probe+' DES') options('mms'+this_probe+'_des_energyspectr_anti_'+this_dr+suffix, 'ylog', True) options('mms'+this_probe+'_des_energyspectr_anti_'+this_dr+suffix, 'zlog', True) - options('mms'+this_probe+'_des_energyspectr_anti_'+this_dr+suffix, 'Colormap', 'spedas') options('mms'+this_probe+'_des_energyspectr_anti_'+this_dr+suffix, 'ztitle', '[keV/(cm^2 s sr keV)]') if 'mms'+this_probe+'_des_energyspectr_perp_'+this_dr+suffix in tvars: options('mms'+this_probe+'_des_energyspectr_perp_'+this_dr+suffix, 'ytitle', 'MMS'+this_probe+' DES') options('mms'+this_probe+'_des_energyspectr_perp_'+this_dr+suffix, 'ylog', True) options('mms'+this_probe+'_des_energyspectr_perp_'+this_dr+suffix, 'zlog', True) - options('mms'+this_probe+'_des_energyspectr_perp_'+this_dr+suffix, 'Colormap', 'spedas') options('mms'+this_probe+'_des_energyspectr_perp_'+this_dr+suffix, 'ztitle', '[keV/(cm^2 s sr keV)]') options('mms'+this_probe+'_des_energyspectr_anti_'+this_dr+suffix, 'spec', True) @@ -62,38 +60,32 @@ def mms_fpi_set_metadata(probe, data_rate, datatype, level, suffix=''): options('mms'+this_probe+'_des_energyspectr_omni_'+this_dr+suffix, 'ytitle', 'MMS'+this_probe+' DES') options('mms'+this_probe+'_des_energyspectr_omni_'+this_dr+suffix, 'ylog', True) options('mms'+this_probe+'_des_energyspectr_omni_'+this_dr+suffix, 'zlog', True) - options('mms'+this_probe+'_des_energyspectr_omni_'+this_dr+suffix, 'Colormap', 'spedas') options('mms'+this_probe+'_des_energyspectr_omni_'+this_dr+suffix, 'ztitle', '[keV/(cm^2 s sr keV)]') options('mms'+this_probe+'_des_energyspectr_omni_'+this_dr+suffix, 'spec', True) if 'mms'+this_probe+'_des_pitchangdist_lowen_'+this_dr+suffix in tvars: options('mms'+this_probe+'_des_pitchangdist_lowen_'+this_dr+suffix, 'zlog', True) - options('mms'+this_probe+'_des_pitchangdist_lowen_'+this_dr+suffix, 'Colormap', 'spedas') options('mms'+this_probe+'_des_pitchangdist_lowen_'+this_dr+suffix, 'ytitle', 'MMS'+this_probe+' DES') options('mms'+this_probe+'_des_pitchangdist_lowen_'+this_dr+suffix, 'ztitle', '[keV/(cm^2 s sr keV)]') options('mms'+this_probe+'_des_pitchangdist_lowen_'+this_dr+suffix, 'spec', True) if 'mms'+this_probe+'_des_pitchangdist_miden_'+this_dr+suffix in tvars: options('mms'+this_probe+'_des_pitchangdist_miden_'+this_dr+suffix, 'zlog', True) - options('mms'+this_probe+'_des_pitchangdist_miden_'+this_dr+suffix, 'Colormap', 'spedas') options('mms'+this_probe+'_des_pitchangdist_miden_'+this_dr+suffix, 'ytitle', 'MMS'+this_probe+' DES') options('mms'+this_probe+'_des_pitchangdist_miden_'+this_dr+suffix, 'ztitle', '[keV/(cm^2 s sr keV)]') options('mms'+this_probe+'_des_pitchangdist_miden_'+this_dr+suffix, 'spec', True) if 'mms'+this_probe+'_des_pitchangdist_highen_'+this_dr+suffix in tvars: options('mms'+this_probe+'_des_pitchangdist_highen_'+this_dr+suffix, 'zlog', True) - options('mms'+this_probe+'_des_pitchangdist_highen_'+this_dr+suffix, 'Colormap', 'spedas') options('mms'+this_probe+'_des_pitchangdist_highen_'+this_dr+suffix, 'ytitle', 'MMS'+this_probe+' DES') options('mms'+this_probe+'_des_pitchangdist_highen_'+this_dr+suffix, 'ztitle', '[keV/(cm^2 s sr keV)]') options('mms'+this_probe+'_des_pitchangdist_highen_'+this_dr+suffix, 'spec', True) if 'mms'+this_probe+'_des_bulkv_dbcs_'+this_dr+suffix in tvars: - options('mms'+this_probe+'_des_bulkv_dbcs_'+this_dr+suffix, 'color', ['b', 'g', 'r']) options('mms'+this_probe+'_des_bulkv_dbcs_'+this_dr+suffix, 'legend_names', ['Vx DBCS', 'Vy DBCS', 'Vz DBCS']) options('mms'+this_probe+'_des_bulkv_dbcs_'+this_dr+suffix, 'ytitle', 'MMS'+this_probe+' DES velocity') if 'mms'+this_probe+'_des_bulkv_gse_'+this_dr+suffix in tvars: - options('mms'+this_probe+'_des_bulkv_gse_'+this_dr+suffix, 'color', ['b', 'g', 'r']) options('mms'+this_probe+'_des_bulkv_gse_'+this_dr+suffix, 'legend_names', ['Vx GSE', 'Vy GSE', 'Vz GSE']) options('mms'+this_probe+'_des_bulkv_gse_'+this_dr+suffix, 'ytitle', 'MMS'+this_probe+' DES velocity') @@ -105,17 +97,14 @@ def mms_fpi_set_metadata(probe, data_rate, datatype, level, suffix=''): options('mms'+this_probe+'_dis_energyspectr_omni_'+this_dr+suffix, 'ytitle', 'MMS'+this_probe+' DIS') options('mms'+this_probe+'_dis_energyspectr_omni_'+this_dr+suffix, 'ylog', True) options('mms'+this_probe+'_dis_energyspectr_omni_'+this_dr+suffix, 'zlog', True) - options('mms'+this_probe+'_dis_energyspectr_omni_'+this_dr+suffix, 'Colormap', 'spedas') options('mms'+this_probe+'_dis_energyspectr_omni_'+this_dr+suffix, 'ztitle', '[keV/(cm^2 s sr keV)]') options('mms'+this_probe+'_dis_energyspectr_omni_'+this_dr+suffix, 'spec', True) if 'mms'+this_probe+'_dis_bulkv_dbcs_'+this_dr+suffix in tvars: - options('mms'+this_probe+'_dis_bulkv_dbcs_'+this_dr+suffix, 'color', ['b', 'g', 'r']) options('mms'+this_probe+'_dis_bulkv_dbcs_'+this_dr+suffix, 'legend_names', ['Vx DBCS', 'Vy DBCS', 'Vz DBCS']) options('mms'+this_probe+'_dis_bulkv_dbcs_'+this_dr+suffix, 'ytitle', 'MMS'+this_probe+' DIS velocity') if 'mms'+this_probe+'_dis_bulkv_gse_'+this_dr+suffix in tvars: - options('mms'+this_probe+'_dis_bulkv_gse_'+this_dr+suffix, 'color', ['b', 'g', 'r']) options('mms'+this_probe+'_dis_bulkv_gse_'+this_dr+suffix, 'legend_names', ['Vx GSE', 'Vy GSE', 'Vz GSE']) options('mms'+this_probe+'_dis_bulkv_gse_'+this_dr+suffix, 'ytitle', 'MMS'+this_probe+' DIS velocity') diff --git a/pyspedas/mms/fpi/mms_fpi_split_tensor.py b/pyspedas/mms/fpi/mms_fpi_split_tensor.py index c6769c65..153663fa 100644 --- a/pyspedas/mms/fpi/mms_fpi_split_tensor.py +++ b/pyspedas/mms/fpi/mms_fpi_split_tensor.py @@ -1,5 +1,7 @@ +import logging from pytplot import get_data, store_data + def mms_fpi_split_tensor(tensor_variable): """ Splits FPI tensor variables (pressure, temperature) into their components @@ -14,39 +16,39 @@ def mms_fpi_split_tensor(tensor_variable): List of variables created. """ - data = get_data(tensor_variable) + data = get_data(tensor_variable, dt=True) if data is None: - print('Problem returning data from the variable: ' + tensor_variable) + logging.error('Problem returning data from the variable: ' + tensor_variable) return saved = store_data(tensor_variable + '_xx', data={'x': data.times, 'y': data.y[:, 0, 0]}) if not saved: - print('Problem saving xx component') + logging.warning('Problem saving xx component') saved = store_data(tensor_variable + '_xy', data={'x': data.times, 'y': data.y[:, 0, 1]}) if not saved: - print('Problem saving xy component') + logging.warning('Problem saving xy component') saved = store_data(tensor_variable + '_xz', data={'x': data.times, 'y': data.y[:, 0, 2]}) if not saved: - print('Problem saving xz component') + logging.warning('Problem saving xz component') saved = store_data(tensor_variable + '_yx', data={'x': data.times, 'y': data.y[:, 1, 0]}) if not saved: - print('Problem saving yx component') + logging.warning('Problem saving yx component') saved = store_data(tensor_variable + '_yy', data={'x': data.times, 'y': data.y[:, 1, 1]}) if not saved: - print('Problem saving yy component') + logging.warning('Problem saving yy component') saved = store_data(tensor_variable + '_yz', data={'x': data.times, 'y': data.y[:, 1, 2]}) if not saved: - print('Problem saving yz component') + logging.warning('Problem saving yz component') saved = store_data(tensor_variable + '_zx', data={'x': data.times, 'y': data.y[:, 2, 0]}) if not saved: - print('Problem saving zx component') + logging.warning('Problem saving zx component') saved = store_data(tensor_variable + '_zy', data={'x': data.times, 'y': data.y[:, 2, 1]}) if not saved: - print('Problem saving zy component') + logging.warning('Problem saving zy component') saved = store_data(tensor_variable + '_zz', data={'x': data.times, 'y': data.y[:, 2, 2]}) if not saved: - print('Problem saving zz component') + logging.warning('Problem saving zz component') components = ['xx', 'xy', 'xz', 'yx', 'yy', 'yz', 'zx', 'zy', 'zz'] return [tensor_variable + '_' + component for component in components] diff --git a/pyspedas/mms/fpi/mms_get_fpi_dist.py b/pyspedas/mms/fpi/mms_get_fpi_dist.py index 3b2c93ec..86e460b8 100644 --- a/pyspedas/mms/fpi/mms_get_fpi_dist.py +++ b/pyspedas/mms/fpi/mms_get_fpi_dist.py @@ -1,6 +1,4 @@ - import logging -from copy import deepcopy import numpy as np from pyspedas import time_double from pytplot import get_data diff --git a/pyspedas/mms/fpi/mms_load_fpi_calc_pad.py b/pyspedas/mms/fpi/mms_load_fpi_calc_pad.py index ffbccf18..095dd3ad 100644 --- a/pyspedas/mms/fpi/mms_load_fpi_calc_pad.py +++ b/pyspedas/mms/fpi/mms_load_fpi_calc_pad.py @@ -1,6 +1,7 @@ from pyspedas import tnames from pytplot import get_data, store_data, options + def mms_load_fpi_calc_pad(probe='1', level='sitl', datatype='', data_rate='', suffix='', autoscale=True): """ Calculates the omni-directional pitch angle distribution (summed and averaged) @@ -31,7 +32,8 @@ def mms_load_fpi_calc_pad(probe='1', level='sitl', datatype='', data_rate='', su autoscale: bool If set, use the default zrange; otherwise, use the min and max of the data for the zrange - Returns: + Returns + ---------- List of tplot variables created. """ @@ -67,9 +69,9 @@ def mms_load_fpi_calc_pad(probe='1', level='sitl', datatype='', data_rate='', su pad_avg_name = obsstr+'PitchAngDist_avg'+suffix - low_en = get_data(pad_vars[0]) - mid_en = get_data(pad_vars[1]) - high_en = get_data(pad_vars[2]) + low_en = get_data(pad_vars[0], dt=True) + mid_en = get_data(pad_vars[1], dt=True) + high_en = get_data(pad_vars[2], dt=True) if low_en is None or mid_en is None or high_en is None: v3_low_pad = tnames(pad_vars[0].lower()+'_'+data_rate) @@ -78,9 +80,9 @@ def mms_load_fpi_calc_pad(probe='1', level='sitl', datatype='', data_rate='', su if v3_low_pad == [] or v3_mid_pad == [] or v3_high_pad == []: continue - low_en = get_data(v3_low_pad[0]) - mid_en = get_data(v3_mid_pad[0]) - high_en = get_data(v3_high_pad[0]) + low_en = get_data(v3_low_pad[0], dt=True) + mid_en = get_data(v3_mid_pad[0], dt=True) + high_en = get_data(v3_high_pad[0], dt=True) pad_avg_name = pad_avg_name.lower() e_pad_sum = low_en.y+mid_en.y+high_en.y @@ -109,7 +111,6 @@ def mms_load_fpi_calc_pad(probe='1', level='sitl', datatype='', data_rate='', su options(pad_avg_name, 'yrange', [0, 180]) options(pad_avg_name, 'zlog', True) options(pad_avg_name, 'spec', True) - options(pad_avg_name, 'Colormap', 'spedas') out_vars.append(pad_avg_name) - return out_vars \ No newline at end of file + return out_vars diff --git a/pyspedas/mms/fpi/mms_pad_fpi.py b/pyspedas/mms/fpi/mms_pad_fpi.py new file mode 100644 index 00000000..f67dc9b2 --- /dev/null +++ b/pyspedas/mms/fpi/mms_pad_fpi.py @@ -0,0 +1,537 @@ +from copy import deepcopy +import numpy as np +from scipy.ndimage.interpolation import shift +from scipy.constants import c as const_c +from pyspedas import time_double +from pyspedas.particles.spd_slice2d.slice2d_nearest import slice2d_nearest +from pyspedas.particles.spd_slice2d.slice2d_intrange import slice2d_intrange +from pyspedas.particles.spd_slice2d.slice2d_get_support import slice2d_get_support +from pyspedas.particles.spd_slice2d.slice2d_s2c import slice2d_s2c +from pyspedas.particles.spd_slice2d.tplot_average import tplot_average +from pyspedas.mms.particles.moka_mms_clean_data import moka_mms_clean_data + + +def mms_pad_fpi(dists, + #disterr, + time=None, + window=None, + center_time=False, + trange=None, + samples=None, + mag_data=None, + vel_data=None, + nbin=18, + da=45.0, + da2=45.0, + pr___0=None, + pr__90=None, + pr_180=None, + subtract_bulk=False, + units='df_cm', + oclreal=False, + norm=False): + """ + Calculate the pitch-angle distribution (angle vs energy plot) and energy spectrum + in the omni, para, perp, and anti-para directions using MMS FPI data. + Also returns the one-count-level. + + Parameters + ------------ + dists : list of dicts + List of dictionaries containing the FPI particle distribution data. + time : str or float, optional + Time at which the pad will be computed. + window : float, optional + Length in seconds from TIME over which data will be averaged. + center_time : bool, optional + Flag denoting that TIME should be the midpoint for the window instead of the beginning. + trange : list, optional + Two-element time range over which data will be averaged. + samples : int or float, optional + Number of nearest samples to TIME to average. + mag_data : str, optional + Name of tplot variable containing magnetic field data or 3-vector. + This will be used for pitch-angle calculation and must be in the + same coordinates as the particle data. + vel_data : str, optional + Name of tplot variable containing the bulk velocity data or 3-vector. + This will be used for pitch-angle calculation and must be in the + same coordinates as the particle data. + nbin : int, optional + Number of bins in the pitch-angle direction. + da : float, optional + Pitch angle range for the "para" spectrum, default = 45.0. + da2 : float, optional + Pitch angle range for the "anti-para" spectrum, default = 45.0. + pr___0 : list or tuple, optional + Pitch angle range for the "para" spectrum, default = [0, 45]. + pr__90 : list or tuple, optional + Pitch angle range for the "perp" spectrum, default = [45, 135]. + pr_180 : list or tuple, optional + Pitch angle range for the "anti-para" spectrum, default = [135, 180]. + subtract_bulk : bool, optional + Set True to subtract bulk velocity from velocity data. + units : str, optional + Units for both the pitch-angle-distribution (pad) and energy spectrum. + Options are 'eflux' [eV/(cm!U2!N s sr eV)] or 'df_km' [s!U3!N / km!U6!N']. + The default is 'eflux'. + oclreal : bool, optional + Set True to return the real one-count level + norm : bool, optional + Set True for normalizing the data at each energy bin. + + Returns + -------- + results : dict + A dictionary containing the following results: + - trange : list + Two-element time range over which data was averaged. + - egy : array-like + Energy values in eV. + - pa : array-like + Pitch angle values in degrees. + - data : array-like, shape (Nenergy, Npitch) + Pitch-angle distribution (angle vs energy plot). + - datanorm : array-like, shape (Nenergy, Npitch) + Normalized pitch-angle distribution (angle vs energy plot). + - numSlices : int + Number of slices in the data. + - nbin : int + Number of pitch angle bins. + - units : str + Units of the returned data. + - subtract_bulk : bool + True if bulk velocity was subtracted from velocity data. + - egyrange : list + Energy range of the data. + - spec___0 : array-like + Energy spectrum in the "para" direction. + - spec__90 : array-like + Energy spectrum in the "perp" direction. + - spec_180 : array-like + Energy spectrum in the "anti-para" direction. + - spec_omn : array-like + Energy spectrum in the omni direction. + - cnts___0 : array-like + One-count-level data in the "para" direction. + - cnts__90 : array-like + One-count-level data in the "perp" direction. + - cnts_180 : array-like + One-count-level data in the "anti-para" direction. + - cnts_omn : array-like + One-count-level data in the omni direction. + - oclv___0 : array-like + One-count-level data in the "para" direction. + - oclv__90 : array-like + One-count-level data in the "perp" direction. + - oclv_180 : array-like + One-count-level data in the "anti-para" direction. + - oclv_omn : array-like + One-count-level data in the omni direction. + - eror___0 : array-like + Error data in the "para" direction. + - eror__90 : array-like + Error data in the "perp" direction. + - eror_180 : array-like + Error data in the "anti-para" direction. + - eror_omn : array-like + Error data in the omni direction. + - vbulk_para : float + Bulk velocity in the "para" direction. + - vbulk_perp_abs : float + Absolute value of bulk velocity in the "perp" direction. + - vbulk_vxb : float + Velocity of the cross product of magnetic field and bulk velocity. + - vbulk_exb : float + Velocity of the cross product of electric field and magnetic field. + - bnrm : float + Average magnetic field magnitude. + - Vbulk : float + Bulk velocity magnitude. + - bfield : float + Magnetic field magnitude. + - species : str + Name of the particle species. + - pa_azpol : array-like, shape (Npitch, 2) + Pitch angle values in degrees in azimuthal and polar coordinates. + """ + + dr = np.pi/180.0 + rd = 1.0/dr + + if pr___0 is None: + pr___0 = [0.0, da] # para pitch angle range + if pr__90 is None: + pr__90 = [90-da2, 90+da2] # perp pitch angle range + if pr_180 is None: + pr_180 = [180-da, 180.0] # anti-para pitch angle range + + if trange is None: + if time is None: + print('Please specifiy a time or time range over which to compute the pad. For example: ') + print(' "time=t, window=w" or "trange=tr" or "time=t, samples=n"') + return + if window is None and samples is None: + samples = 1 # use single closest distribution by default + else: + # time range already provided + trange = [np.nanmin(time_double(trange)), np.nanmax(time_double(trange))] + + if time is not None: + # get the time range if one was specified + time = time_double(time) + + # get the time range if a time & window were specified instead + if trange is None and window is not None: + if center_time: + trange = [time - window/2.0, time + window/2.0] + else: + trange = [time, time + window] + + # if no time range or window was specified then get a time range + # from the N closest samples to the specified time + # (defaults to 1 if SAMPLES is not defined) + if trange is None: + trange = slice2d_nearest(dists, time, samples) + + # check that there is data in the trange before proceeding + times_ind = slice2d_intrange(dists, trange) + + n_samples = len(times_ind) + + if n_samples < 1: + print('No particle data in the time window; ') + print('Time samples may be at low cadence; try adjusting the time window.') + return + + print(str(n_samples) + ' samples in time window') + + nns = np.nanmin(times_ind) + nne = np.nanmax(times_ind) + + # check support data + bfield = slice2d_get_support(mag_data, trange) + vbulk = slice2d_get_support(vel_data, trange) + + if bfield is None: + print('Magnetic field data needed to calculate pitch-angles') + return + if vbulk is None and subtract_bulk: + print('Velocity data needed to subtract bulk velocity.') + return + + species = dists[0]['species'] + if units == 'eflux': + if species == 'i': + A = 1 # H+ + elif species == 'e': + A = 1.0/1836.0 + + flux_to_df = A**2 * 0.5447*1e6 + cm_to_km = 1e30 + in_u = np.array([2, -1, 0]) # units_in = 'df_km' + out_u = np.array([0, 0, 0]) # units_out = 'eflux' + exp = in_u + out_u + + + # pitch angle bins + kmax = nbin + pamin = 0.0 + pamax = 180.0 + dpa = (pamax-pamin)/kmax # bin size + wpa = pamin + np.arange(kmax)*dpa + 0.5*dpa # bin center values + pa_bin = np.append(pamin + np.arange(kmax)*dpa, pamax) + + # azimuthal bins + amax = 16 + azmin = 0. + azmax = 180. + daz = (azmax-azmin)/amax + waz = azmin + np.arange(amax) * daz + 0.5 * daz + az_bin = np.append(azmin + np.arange(amax) * daz, azmax) + + # polar bins + pmax = 16 + polmin = 0. + polmax = 360. + dpol = (polmax - polmin)/pmax + wpol = polmin + np.arange(pmax) * dpol + 0.5 * dpol + pol_bin = np.append(polmin + np.arange(pmax) * dpol, polmax) + + # PA (az x pol) + pa_azpol = np.zeros((amax, pmax)) + pa_azpol[:, :] = np.nan + + # energy bins + wegy = dists[0]['energy'][:, 0, 0] + if subtract_bulk: + wegy = np.append(2 * wegy[0] - wegy[1], wegy) + + jmax = len(wegy) + egy_bin = 0.5*(wegy + shift(wegy, -1)) + egy_bin[jmax - 1] = 2. * wegy[jmax - 1] - egy_bin[jmax - 2] + egy_bin0 = 2. * wegy[0] - egy_bin[0] + if egy_bin0 < 0: + egy_bin0 = 0 + egy_bin = np.append(egy_bin0, egy_bin) + + # prep + pad = np.zeros((jmax, kmax)) + mmax = 4 + f_dat = np.zeros((jmax, mmax)) # Four elements for para, perp, anti-para and omni directions + f_psd = np.zeros((jmax, mmax)) + f_err = np.zeros((jmax, mmax)) + f_cnt = np.zeros((jmax, mmax)) + count_pad = np.zeros((jmax, kmax)) + count_dat = np.zeros((jmax, mmax)) + + # magnetic field and bulk velocity + bnrm_avg = [0., 0., 0.] + babs_avg = 0. + vbulk_avg = [0.0, 0.0, 0.0] + vbulk_para = 0.0 + vbulk_perp = 0.0 + vbulk_vxb = 0.0 + vbulk_exb = 0.0 + + # main loop + iecl = 0 + iecm = 0 + + for n in np.arange(nns, nne+1): + data = moka_mms_clean_data(dists[n], units=units) + + # magnetic field direction + tr = [dists[n]['start_time'], dists[n]['end_time']] + bfield = tplot_average(mag_data, tr, quiet=True) + babs = np.sqrt(bfield[0]**2 + bfield[1]**2 + bfield[2]**2) + bnrm = bfield/babs + bnrm_avg += bnrm + babs_avg += babs + + # bulk velocity + if not subtract_bulk: + vbulk = np.array([0.0, 0.0, 0.0]) + + vbpara = bnrm[0]*vbulk[0]+bnrm[1]*vbulk[1]+bnrm[2]*vbulk[2] + vbperp = vbulk - vbpara + vbperp_abs = np.sqrt(vbperp[0]**2+vbperp[1]**2+vbperp[2]**2) + vxb = np.array([-vbulk[1]*bnrm[2]+vbulk[2]*bnrm[1], -vbulk[2]*bnrm[0]+vbulk[0]*bnrm[2], -vbulk[0]*bnrm[1]+vbulk[1]*bnrm[0]]) + vxbabs = np.sqrt(vxb[0]**2+vxb[1]**2+vxb[2]**2) + vxbnrm = vxb/vxbabs + exb = np.array([vxb[1]*bnrm[2]-vxb[2]*bnrm[1],vxb[2]*bnrm[0]-vxb[0]*bnrm[2],vxb[0]*bnrm[1]-vxb[1]*bnrm[0]]) + exbabs = np.sqrt(exb[0]**2+exb[1]**2+exb[2]**2) + exbnrm = exb/exbabs + vbulk_para += vbpara + vbulk_perp += vbperp_abs + vbulk_vxb += vxbnrm[0]*vbulk[0]+vxbnrm[1]*vbulk[1]+vxbnrm[2]*vbulk[2] + vbulk_exb += exbnrm[0]*vbulk[0]+exbnrm[1]*vbulk[1]+exbnrm[2]*vbulk[2] + vbulk_avg += vbulk + + # particle velocities & pitch angles + + # spherical to cartesian + erest = data['mass']*const_c**2/1e6 # convert mass from eV/(km/s)^2 to eV + vabs = const_c*np.sqrt(1 - 1/((data['energy']/erest + 1)**2))/1000.0 + vdata = slice2d_s2c(vabs, data['theta'], data['phi']) + vx = vdata[:, 0] + vy = vdata[:, 1] + vz = vdata[:, 2] + + if subtract_bulk: + vx -= vbulk[0] + vy -= vbulk[1] + vz -= vbulk[2] + + # pitch angles + dp = (bnrm[0]*vx + bnrm[1]*vy + bnrm[2]*vz)/np.sqrt(vx**2+vy**2+vz**2) + dp[dp > 1.0] = 1.0 + dp[dp < -1.0] = -1.0 + pa = rd*np.arccos(dp) + + # Cartesian to spherical + vnew, theta, phi = cart_to_sphere(vx, vy, vz) + data['energy'] = erest*(1.0/np.sqrt(1.0-(vnew*1000.0/const_c)**2)-1.0) # eV + data['phi'] = phi + data['theta'] = theta + data['pa'] = pa + + azang = 90.0 - data['theta'] + + imax = len(data['data_dat']) + + for i in np.arange(0, imax): + # find energy bin + j = np.nanargmin(np.abs(egy_bin-data['energy'][i])) + if egy_bin[j] > data['energy'][i]: + j -= 1 + if j == jmax: + j -= 1 + + # find pitch-angle bin + k = np.nanargmin(np.abs(pa_bin-data['pa'][i])) + if pa_bin[k] > data['pa'][i]: + k -= 1 + if k == kmax: + k -= 1 + + # find azimuthal bin + a = np.nanargmin(np.abs(az_bin-azang[i])) + if az_bin[a] > azang[i]: + a -= 1 + if a == amax: + a -= 1 + + # find polar bin + p = np.nanargmin(np.abs(pol_bin-data['phi'][i])) + if pol_bin[p] > data['phi'][i]: + p -= 1 + if p == pmax: + p -= 1 + + if j >= 0: + pa_azpol[a, p] = data['pa'][i] + + # find new eflux + # If shifted to plasma rest-frame, 'eflux' should be re-evaluated + # from 'psd' because 'eflux' depends on the particle energy. We don't need to + # worry about this if we want the output in 'psd'. + newenergy = wegy[j] + if units == 'eflux': + newdat = data['data_psd'][i]*newenergy**exp[0]*(flux_to_df**exp[1]*cm_to_km**exp[2]) + newpsd = newdat + newerr = data['data_err'][i]*newenergy**exp[0]*(flux_to_df**exp[1]*cm_to_km**exp[2]) + else: + newdat = data['data_dat'][i] + newpsd = data['data_psd'][i] + newerr = data['data_err'][i] + + pad[j, k] += newdat + count_pad[j, k] += 1 + + # energy spectrum (para, perp, anti-para) + m = -1 + if (pr__90[0] <= data['pa'][i]) and (data['pa'][i] <= pr__90[1]): + m = 1 + else: + if (pr___0[0] <= data['pa'][i]) and (data['pa'][i] <= pr___0[1]): + m = 0 + if (pr_180[0] <= data['pa'][i]) and (data['pa'][i] <= pr_180[1]): + m = 2 + + if (m >= 0) and (m <= 2): + f_dat[j, m] += newdat + f_psd[j, m] += newpsd + f_err[j, m] += newerr + f_cnt[j, m] += data['data_cnt'][i] + count_dat[j, m] += 1 + + # energy spectrum (omni-direction) + m = 3 + f_dat[j, m] += newdat + f_psd[j, m] += newpsd + f_err[j, m] += newerr + f_cnt[j, m] += data['data_cnt'][i] + count_dat[j, m] += 1 + else: + iecl += 1 + else: + iecm += imax + + pad /= count_pad + f_dat /= count_dat + f_psd /= count_dat + f_err /= count_dat + f_cnt /= count_dat + + vbulk_para /= float(n_samples) + vbulk_perp /= float(n_samples) + vbulk_vxb /= float(n_samples) + vbulk_exb /= float(n_samples) + vbulk_avg /= float(n_samples) + + bnrm_avg /= float(n_samples) + babs_avg /= float(n_samples) + + pad = np.nan_to_num(pad, nan=0) + + # angle padding + padnew = np.zeros((jmax, kmax+2)) + padnew[0:jmax, 1:kmax+1] = pad + padnew[0:jmax, 0] = padnew[0:jmax, 1] + padnew[0:jmax, kmax + 1] = padnew[0:jmax, kmax] + pad = padnew + wpa_new = np.append(wpa[0] - dpa, wpa) + wpa_new = np.append(wpa_new, wpa[kmax - 1] + dpa) + wpa = wpa_new + + # normalize + padnorm = deepcopy(pad) + for j in range(0, jmax): + peak = np.nanmax(pad[j, 0:kmax]) # find the peak + if peak == 0: + padnorm[j, 0:kmax] = 0.0 + else: + padnorm[j, 0:kmax] /= peak + + if norm: + pad = padnorm + + # Effective one-count-level + # 'f_psd' is the PSD averaged over time and angular ranges. + # 'f_cnt' is the counts averaged over time and angular ranges. + # 'count_dat is the total number of time and angular bins. + if oclreal: + f_ocl = f_psd/f_cnt + else: + f_ocl = f_psd/(f_cnt*count_dat) + + # output + return {'trange': trange, + 'egy': wegy, + 'pa': wpa, + 'data': pad, + 'datanorm': padnorm, + 'numSlices': n_samples, + 'nbin': kmax, + 'units': units, + 'subtract_bulk': subtract_bulk, + 'egyrange': [np.nanmin(wegy), np.nanmax(wegy)], + #'parange': [np.nanmin(wpa), np.nanmax(wpa)], + 'spec___0': f_psd[:, 0], + 'spec__90': f_psd[:, 1], + 'spec_180': f_psd[:, 2], + 'spec_omn': f_psd[:, 3], + 'cnts___0': f_cnt[:, 0], + 'cnts__90': f_cnt[:, 1], + 'cnts_180': f_cnt[:, 2], + 'cnts_omn': f_cnt[:, 3], + 'oclv___0': f_ocl[:, 0], + 'oclv__90': f_ocl[:, 1], + 'oclv_180': f_ocl[:, 2], + 'oclv_omn': f_ocl[:, 3], + 'eror___0': f_err[:, 0], + 'eror__90': f_err[:, 1], + 'eror_180': f_err[:, 2], + 'eror_omn': f_err[:, 3], + 'vbulk_para': vbulk_para, + 'vbulk_perp_abs': vbulk_perp, + 'vbulk_vxb': vbulk_vxb, + 'vbulk_exb': vbulk_exb, + 'bnrm': bnrm_avg, + 'Vbulk': vbulk_avg, + 'bfield': bnrm_avg * babs_avg, + 'species': species, + 'pa_azpol': pa_azpol, + 'wpol': wpol, + 'waz': waz} + + +def cart_to_sphere(x, y, z): + rho = x * x + y * y + r = np.sqrt(rho + z * z) + phi = 18e1/np.pi * np.arctan2(y, x) + # should be between 0-360 + phi[phi < 0] += 360.0 + theta = 18e1/np.pi * np.arctan(z / np.sqrt(rho)) + return (r, theta, phi) \ No newline at end of file diff --git a/pyspedas/mms/fsm/fsm.py b/pyspedas/mms/fsm/fsm.py index 3fd4e763..7e2989a5 100644 --- a/pyspedas/mms/fsm/fsm.py +++ b/pyspedas/mms/fsm/fsm.py @@ -1,18 +1,19 @@ from pyspedas.mms.mms_load_data import mms_load_data from pyspedas.mms.print_vars import print_vars + @print_vars def mms_load_fsm(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='brst', level='l3', datatype='8khz', get_support_data=False, time_clip=False, no_update=False, available=False, varformat=None, varnames=[], notplot=False, suffix='', latest_version=False, major_version=False, min_version=None, cdf_version=None, spdf=False, always_prompt=False): """ - This function loads FSM data into tplot variables + This function loads FSM (FGM + SCM) data into tplot variables Parameters ---------- trange : list of str - time range of interest [starttime, endtime] with the format + time range of interest [start time, end time] with the format 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] @@ -51,11 +52,11 @@ def mms_load_fsm(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='brst notplot: bool If True, then data are returned in a hash table instead of being stored in tplot variables (useful for debugging, and - access to multi-dimensional data products) + access to multidimensional data products) available: bool If True, simply return the available data files (without downloading) - for the requested paramters + for the requested parameters no_update: bool Set this flag to preserve the original data. if not set and newer @@ -75,12 +76,13 @@ def mms_load_fsm(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='brst always_prompt: bool Set this keyword to always prompt for the user's username and password; - useful if you accidently save an incorrect password, or if your SDC password has changed + useful if you accidentally save an incorrect password, or if your SDC password has changed spdf: bool If True, download the data from the SPDF instead of the SDC - Returns: + Returns + ----------- List of tplot variables created. """ @@ -88,4 +90,4 @@ def mms_load_fsm(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='brst level=level, instrument='fsm', datatype=datatype, get_support_data=get_support_data, time_clip=time_clip, no_update=no_update, available=available, suffix=suffix, latest_version=latest_version, varnames=varnames, major_version=major_version, min_version=min_version, cdf_version=cdf_version, spdf=spdf, always_prompt=always_prompt) - return tvars \ No newline at end of file + return tvars diff --git a/pyspedas/mms/hpca/hpca.py b/pyspedas/mms/hpca/hpca.py index 227a3e92..f681c2cd 100644 --- a/pyspedas/mms/hpca/hpca.py +++ b/pyspedas/mms/hpca/hpca.py @@ -1,4 +1,3 @@ - import numpy as np import logging import re @@ -8,12 +7,12 @@ from pyspedas.mms.hpca.mms_hpca_energies import mms_hpca_energies from pyspedas.mms.print_vars import print_vars from pyspedas.mms.mms_config import CONFIG - -from pytplot import get_data, store_data +from pytplot import get_data, store_data, get logging.captureWarnings(True) logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) + @print_vars def mms_load_hpca(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy', level='l2', datatype='moments', get_support_data=None, time_clip=False, no_update=False, @@ -21,12 +20,12 @@ def mms_load_hpca(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srv latest_version=False, major_version=False, min_version=None, cdf_version=None, spdf=False, always_prompt=False): """ - This function loads HPCA data into tplot variables + Load data from the Hot Plasma Composition Analyzer (HPCA) Parameters ---------- trange : list of str - time range of interest [starttime, endtime] with the format + time range of interest [start time, end time] with the format 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] @@ -71,11 +70,11 @@ def mms_load_hpca(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srv notplot: bool If True, then data are returned in a hash table instead of being stored in tplot variables (useful for debugging, and - access to multi-dimensional data products) + access to multidimensional data products) available: bool If True, simply return the available data files (without downloading) - for the requested paramters + for the requested parameters no_update: bool Set this flag to preserve the original data. if not set and newer @@ -95,16 +94,16 @@ def mms_load_hpca(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srv always_prompt: bool Set this keyword to always prompt for the user's username and password; - useful if you accidently save an incorrect password, or if your SDC password has changed + useful if you accidentally save an incorrect password, or if your SDC password has changed spdf: bool If True, download the data from the SPDF instead of the SDC - Returns: + Returns + ----------- List of tplot variables created. """ - if level.lower() != 'l2': if varformat is None: if level.lower() != 'l1a': @@ -176,8 +175,6 @@ def mms_load_hpca(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srv else: theta = theta_data - store_data(tvar, data={'x': df_data.times, 'y': df_data.y, 'v1': theta, 'v2': df_data.v2}, attr_dict=df_metadata) - # check if energy table contains all 0s zerocheck = np.argwhere(df_data.v2 == 0.0) if len(zerocheck) == 63: @@ -185,5 +182,10 @@ def mms_load_hpca(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srv energy_table = mms_hpca_energies() logging.warning('Found energy table with all 0s: ' + tvar + '; using hard-coded energy table instead') store_data(tvar, data={'x': df_data.times, 'y': df_data.y, 'v1': theta, 'v2': energy_table}, attr_dict=df_metadata) + else: + store_data(tvar, data={'x': df_data.times, 'y': df_data.y, 'v1': theta, 'v2': df_data.v2}, + attr_dict=df_metadata) + metadata = get(tvar, metadata=True) + metadata['data_att']['depend_1_units'] = 'deg' return tvars diff --git a/pyspedas/mms/hpca/mms_get_hpca_dist.py b/pyspedas/mms/hpca/mms_get_hpca_dist.py index 11366c37..a1e5d520 100644 --- a/pyspedas/mms/hpca/mms_get_hpca_dist.py +++ b/pyspedas/mms/hpca/mms_get_hpca_dist.py @@ -1,4 +1,3 @@ - import logging import numpy as np from pytplot import get_data @@ -6,6 +5,7 @@ logging.captureWarnings(True) logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) + def mms_get_hpca_dist(tname, index=None, probe=None, data_rate=None, species=None, times=False): """ Returns 3D particle data structures containing MMS HPCA @@ -33,10 +33,10 @@ def mms_get_hpca_dist(tname, index=None, probe=None, data_rate=None, species=Non times: bool Flag to return the distribution times instead of the particle data structure(s) - Returns: + Returns + ------------ 3D particle data structure(s) containing MMS HPCA distribution functions """ - data_in = get_data(tname) # Match particle data to azimuth data @@ -68,7 +68,6 @@ def mms_get_hpca_dist(tname, index=None, probe=None, data_rate=None, species=Non logging.error('Azimuth data does not cover current data\'s time range') return - # filter times when azimuth data is all zero # -just check the first energy & elevation # -assume azimuth values are positive @@ -199,7 +198,10 @@ def mms_get_hpca_dist(tname, index=None, probe=None, data_rate=None, species=Non else: end_idx = int(data_idx[i]+n_times/2.) - out_data[i, :, :, :] = data_in.y[start_idx:end_idx, :, :].transpose([2, 0, 1]) + try: + out_data[i, :, :, :] = data_in.y[start_idx:end_idx, :, :].transpose([2, 0, 1]) + except ValueError: + out_data[i, :, :, :] = np.nan out_list = [] @@ -227,8 +229,3 @@ def mms_get_hpca_dist(tname, index=None, probe=None, data_rate=None, species=Non out_list.append(out_table) return out_list - - - - - diff --git a/pyspedas/mms/hpca/mms_get_hpca_info.py b/pyspedas/mms/hpca/mms_get_hpca_info.py index dec73d12..edf37918 100644 --- a/pyspedas/mms/hpca/mms_get_hpca_info.py +++ b/pyspedas/mms/hpca/mms_get_hpca_info.py @@ -2,7 +2,6 @@ def mms_get_hpca_info(): """ Returns structure containing hpca look directions, energies, and other info. - """ forward_anodes = [14,15,0,1,2,3,4,5] diff --git a/pyspedas/mms/hpca/mms_hpca_calc_anodes.py b/pyspedas/mms/hpca/mms_hpca_calc_anodes.py index d2188747..686e217d 100644 --- a/pyspedas/mms/hpca/mms_hpca_calc_anodes.py +++ b/pyspedas/mms/hpca/mms_hpca_calc_anodes.py @@ -1,6 +1,7 @@ from pyspedas import tnames from pytplot import options, get_data, store_data + def mms_hpca_elevations(): anode_theta = [123.75000, 101.25000, 78.750000, 56.250000, 33.750000, 11.250000, 11.250000, 33.750000, 56.250000, 78.750000, @@ -9,20 +10,24 @@ def mms_hpca_elevations(): anode_theta[6:14] = [anode_val+180. for anode_val in anode_theta[6:14]] return anode_theta + def mms_hpca_anodes(fov=[0, 360]): anodes = mms_hpca_elevations() return [i for i, anode in enumerate(anodes) if anode >= float(fov[0]) and anode <= float(fov[1])] + def mms_hpca_sum_fov(times, data, angles, energies, fov=[0, 360], anodes=None): anodes_in_fov = mms_hpca_anodes(fov=fov) data_within_fov = data[:,anodes_in_fov,:] return data_within_fov.sum(axis=1) + def mms_hpca_avg_fov(times, data, angles, energies, fov=[0, 360], anodes=None): anodes_in_fov = mms_hpca_anodes(fov=fov) data_within_fov = data[:,anodes_in_fov,:] return data_within_fov.mean(axis=1) + def mms_hpca_calc_anodes(fov=[0, 360], probe='1', suffix=''): """ This function will sum (or average, for flux) the HPCA data over the requested field-of-view (fov) @@ -87,4 +92,3 @@ def mms_hpca_calc_anodes(fov=[0, 360], probe='1', suffix=''): options(var+fov_str, 'Colormap', 'spedas') output_vars.append(var+fov_str) return output_vars - diff --git a/pyspedas/mms/hpca/mms_hpca_energies.py b/pyspedas/mms/hpca/mms_hpca_energies.py index b058674b..9e65535a 100644 --- a/pyspedas/mms/hpca/mms_hpca_energies.py +++ b/pyspedas/mms/hpca/mms_hpca_energies.py @@ -1,6 +1,6 @@ - import numpy as np + def mms_hpca_energies(): return np.array([1.35500, 1.57180, 1.84280, 2.22220, 2.60160, 3.08940, 3.63140, 4.28180, 5.04060, 5.96200, 6.99180, 8.23840, 9.75600, 11.4904, 13.5500, 15.9890, @@ -9,4 +9,4 @@ def mms_hpca_energies(): 264.984, 312.571, 368.723, 434.955, 513.057, 605.197, 713.868, 842.051, 993.323, 1171.70, 1382.10, 1630.28, 1923.07, 2268.43, 2675.80, 3156.28, 3723.11, 4391.72, 5180.44, 6110.72, 7208.11, 8502.57, 10029.5, 11830.6, - 13955.2, 16461.4, 19417.5, 22904.6, 27017.9, 31869.8, 37593.1]) \ No newline at end of file + 13955.2, 16461.4, 19417.5, 22904.6, 27017.9, 31869.8, 37593.1]) diff --git a/pyspedas/mms/hpca/mms_hpca_set_metadata.py b/pyspedas/mms/hpca/mms_hpca_set_metadata.py index 442935e2..5cfada24 100644 --- a/pyspedas/mms/hpca/mms_hpca_set_metadata.py +++ b/pyspedas/mms/hpca/mms_hpca_set_metadata.py @@ -1,13 +1,14 @@ - from pytplot import options from pyspedas import tnames + def mms_hpca_set_metadata(probe='1', fov=[0, 360], suffix=''): """ This function sets the plot metadata for HPCA data products, and is meant to be called from the HPCA load routine - Parameters: + Parameters + ------------ fov : list of int field of view, in angles, from 0-360 @@ -17,7 +18,8 @@ def mms_hpca_set_metadata(probe='1', fov=[0, 360], suffix=''): suffix: str suffix of the loaded data - Returns: + Returns + ------------ None """ prefix = 'mms'+str(probe) @@ -35,23 +37,18 @@ def mms_hpca_set_metadata(probe='1', fov=[0, 360], suffix=''): for var in tnames(valid_vel): if var == prefix+'_hpca_hplus_ion_bulk_velocity'+suffix: options(var, 'legend_names', ['Vx (H+)', 'Vy (H+)', 'Vz (H+)']) - options(var, 'color', ['b', 'g', 'r']) options(var, 'ytitle', 'H+ velocity') if var == prefix+'_hpca_heplus_ion_bulk_velocity'+suffix: options(var, 'legend_names', ['Vx (He+)', 'Vy (He+)', 'Vz (He+)']) - options(var, 'color', ['b', 'g', 'r']) options(var, 'ytitle', 'He+ velocity') if var == prefix+'_hpca_heplusplus_ion_bulk_velocity'+suffix: options(var, 'legend_names', ['Vx (He++)', 'Vy (He++)', 'Vz (He++)']) - options(var, 'color', ['b', 'g', 'r']) options(var, 'ytitle', 'He++ velocity') if var == prefix+'_hpca_oplus_ion_bulk_velocity'+suffix: options(var, 'legend_names', ['Vx (O+)', 'Vy (O+)', 'Vz (O+)']) - options(var, 'color', ['b', 'g', 'r']) options(var, 'ytitle', 'O+ velocity') if var == prefix+'_hpca_oplusplus_ion_bulk_velocity'+suffix: options(var, 'legend_names', ['Vx (O++)', 'Vy (O++)', 'Vz (O++)']) - options(var, 'color', ['b', 'g', 'r']) options(var, 'ytitle', 'O++ velocity') for var in tnames(valid_temp): @@ -60,5 +57,3 @@ def mms_hpca_set_metadata(probe='1', fov=[0, 360], suffix=''): if var == prefix+'_hpca_heplusplus_scalar_temperature'+suffix: options(var, 'ytitle', 'He++ temp') if var == prefix+'_hpca_oplus_scalar_temperature'+suffix: options(var, 'ytitle', 'O+ temp') if var == prefix+'_hpca_oplusplus_scalar_temperature'+suffix: options(var, 'ytitle', 'O++ temp') - - diff --git a/pyspedas/mms/hpca/mms_hpca_spin_sum.py b/pyspedas/mms/hpca/mms_hpca_spin_sum.py index 791c7ab4..dd041c5e 100644 --- a/pyspedas/mms/hpca/mms_hpca_spin_sum.py +++ b/pyspedas/mms/hpca/mms_hpca_spin_sum.py @@ -2,6 +2,7 @@ from pytplot import get_data, store_data, options from pyspedas import tnames + def mms_hpca_spin_sum(probe='1', datatypes=None, species=['hplus', 'oplus', 'oplusplus', 'heplus', 'heplusplus'], fov=['0', '360'], avg=False, suffix=''): """ This function will sum (or average, when the avg keyword is set to True) the HPCA data over each spin @@ -64,9 +65,8 @@ def mms_hpca_spin_sum(probe='1', datatypes=None, species=['hplus', 'oplus', 'opl options(var+'_spin', 'spec', True) options(var+'_spin', 'ylog', True) options(var+'_spin', 'zlog', True) - options(var+'_spin', 'Colormap', 'spedas') - options(var+'_spin', 'ztitle', species_map[var_species] + ' ' + var.split('_')[3] + ' (cm^2-s-sr-eV)^-1') + options(var+'_spin', 'ztitle', species_map[var_species] + ' ' + var.split('_')[3] + ' 1/(cm^2-s-sr-eV)') options(var+'_spin', 'ytitle', species_map[var_species]) options(var+'_spin', 'ysubtitle', 'Energy [eV]') output_vars.append(var+'_spin') - return output_vars \ No newline at end of file + return output_vars diff --git a/pyspedas/mms/mec/mec.py b/pyspedas/mms/mec/mec.py index f8c241c7..cf3be482 100644 --- a/pyspedas/mms/mec/mec.py +++ b/pyspedas/mms/mec/mec.py @@ -3,18 +3,19 @@ from pyspedas.mms.print_vars import print_vars from pyspedas.mms.mms_config import CONFIG + @print_vars def mms_load_mec(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy', level='l2', datatype='epht89q', varformat=None, varnames=[], suffix='', get_support_data=False, time_clip=False, no_update=False, available=False, notplot=False, latest_version=False, major_version=False, min_version=None, cdf_version=None, spdf=False, always_prompt=False): """ - This function loads MEC data into tplot variables + Load the attitude/ephemeris data from the LANL MEC files Parameters ---------- trange : list of str - time range of interest [starttime, endtime] with the format + time range of interest [start time, end time] with the format 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] @@ -54,11 +55,11 @@ def mms_load_mec(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy notplot: bool If True, then data are returned in a hash table instead of being stored in tplot variables (useful for debugging, and - access to multi-dimensional data products) + access to multidimensional data products) available: bool If True, simply return the available data files (without downloading) - for the requested paramters + for the requested parameters no_update: bool Set this flag to preserve the original data. if not set and newer @@ -78,18 +79,20 @@ def mms_load_mec(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy always_prompt: bool Set this keyword to always prompt for the user's username and password; - useful if you accidently save an incorrect password, or if your SDC password has changed + useful if you accidentally save an incorrect password, or if your SDC password has changed spdf: bool If True, download the data from the SPDF instead of the SDC - Notes: + Notes + --------- The default datatype was changed to 'epht89q' on 15Nov2021. There are sometimes issues with creating the Tsyganenko 04 data products, which leads to the 'epht04d' files not being available. The 'epht89d' files contain the same ephemeris data - the only difference are the data products that rely on the field model. - Returns: + Returns + ----------- List of tplot variables created. """ diff --git a/pyspedas/mms/mec/mms_mec_set_metadata.py b/pyspedas/mms/mec/mms_mec_set_metadata.py index 494274c3..7ddd3f19 100644 --- a/pyspedas/mms/mec/mms_mec_set_metadata.py +++ b/pyspedas/mms/mec/mms_mec_set_metadata.py @@ -1,6 +1,7 @@ from pytplot import options from pyspedas import tnames + def mms_mec_set_metadata(probe, data_rate, level, suffix=''): """ This function updates the metadata for MEC data products @@ -22,7 +23,8 @@ def mms_mec_set_metadata(probe, data_rate, level, suffix=''): no suffix is added. """ - if not isinstance(probe, list): probe = [probe] + if not isinstance(probe, list): + probe = [probe] instrument = 'mec' @@ -31,51 +33,38 @@ def mms_mec_set_metadata(probe, data_rate, level, suffix=''): for this_probe in probe: if 'mms'+str(this_probe)+'_'+instrument+'_r_eci'+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_r_eci'+suffix, 'ytitle', 'MMS'+str(this_probe)+' position') - options('mms'+str(this_probe)+'_'+instrument+'_r_eci'+suffix, 'color', ['b', 'g', 'r']) options('mms'+str(this_probe)+'_'+instrument+'_r_eci'+suffix, 'legend_names', ['X ECI', 'Y ECI', 'Z ECI']) if 'mms'+str(this_probe)+'_'+instrument+'_r_gsm'+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_r_gsm'+suffix, 'ytitle', 'MMS'+str(this_probe)+' position') - options('mms'+str(this_probe)+'_'+instrument+'_r_gsm'+suffix, 'color', ['b', 'g', 'r']) options('mms'+str(this_probe)+'_'+instrument+'_r_gsm'+suffix, 'legend_names', ['X GSM', 'Y GSM', 'Z GSM']) if 'mms'+str(this_probe)+'_'+instrument+'_r_geo'+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_r_geo'+suffix, 'ytitle', 'MMS'+str(this_probe)+' position') - options('mms'+str(this_probe)+'_'+instrument+'_r_geo'+suffix, 'color', ['b', 'g', 'r']) options('mms'+str(this_probe)+'_'+instrument+'_r_geo'+suffix, 'legend_names', ['X GEO', 'Y GEO', 'Z GEO']) if 'mms'+str(this_probe)+'_'+instrument+'_r_sm'+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_r_sm'+suffix, 'ytitle', 'MMS'+str(this_probe)+' position') - options('mms'+str(this_probe)+'_'+instrument+'_r_sm'+suffix, 'color', ['b', 'g', 'r']) options('mms'+str(this_probe)+'_'+instrument+'_r_sm'+suffix, 'legend_names', ['X SM', 'Y SM', 'Z SM']) if 'mms'+str(this_probe)+'_'+instrument+'_r_gse'+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_r_gse'+suffix, 'ytitle', 'MMS'+str(this_probe)+' position') - options('mms'+str(this_probe)+'_'+instrument+'_r_gse'+suffix, 'color', ['b', 'g', 'r']) options('mms'+str(this_probe)+'_'+instrument+'_r_gse'+suffix, 'legend_names', ['X GSE', 'Y GSE', 'Z GSE']) if 'mms'+str(this_probe)+'_'+instrument+'_r_gse2000'+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_r_gse2000'+suffix, 'ytitle', 'MMS'+str(this_probe)+' position') - options('mms'+str(this_probe)+'_'+instrument+'_r_gse2000'+suffix, 'color', ['b', 'g', 'r']) options('mms'+str(this_probe)+'_'+instrument+'_r_gse2000'+suffix, 'legend_names', ['X GSE2000', 'Y GSE2000', 'Z GSE2000']) - if 'mms'+str(this_probe)+'_'+instrument+'_v_eci'+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_v_eci'+suffix, 'ytitle', 'MMS'+str(this_probe)+' velocity') - options('mms'+str(this_probe)+'_'+instrument+'_v_eci'+suffix, 'color', ['b', 'g', 'r']) options('mms'+str(this_probe)+'_'+instrument+'_v_eci'+suffix, 'legend_names', ['Vx ECI', 'Vy ECI', 'Vz ECI']) if 'mms'+str(this_probe)+'_'+instrument+'_v_gsm'+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_v_gsm'+suffix, 'ytitle', 'MMS'+str(this_probe)+' velocity') - options('mms'+str(this_probe)+'_'+instrument+'_v_gsm'+suffix, 'color', ['b', 'g', 'r']) options('mms'+str(this_probe)+'_'+instrument+'_v_gsm'+suffix, 'legend_names', ['Vx GSM', 'Vy GSM', 'Vz GSM']) if 'mms'+str(this_probe)+'_'+instrument+'_v_geo'+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_v_geo'+suffix, 'ytitle', 'MMS'+str(this_probe)+' velocity') - options('mms'+str(this_probe)+'_'+instrument+'_v_geo'+suffix, 'color', ['b', 'g', 'r']) options('mms'+str(this_probe)+'_'+instrument+'_v_geo'+suffix, 'legend_names', ['Vx GEO', 'Vy GEO', 'Vz GEO']) if 'mms'+str(this_probe)+'_'+instrument+'_v_sm'+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_v_sm'+suffix, 'ytitle', 'MMS'+str(this_probe)+' velocity') - options('mms'+str(this_probe)+'_'+instrument+'_v_sm'+suffix, 'color', ['b', 'g', 'r']) options('mms'+str(this_probe)+'_'+instrument+'_v_sm'+suffix, 'legend_names', ['Vx SM', 'Vy SM', 'Vz SM']) if 'mms'+str(this_probe)+'_'+instrument+'_v_gse'+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_v_gse'+suffix, 'ytitle', 'MMS'+str(this_probe)+' velocity') - options('mms'+str(this_probe)+'_'+instrument+'_v_gse'+suffix, 'color', ['b', 'g', 'r']) options('mms'+str(this_probe)+'_'+instrument+'_v_gse'+suffix, 'legend_names', ['Vx GSE', 'Vy GSE', 'Vz GSE']) if 'mms'+str(this_probe)+'_'+instrument+'_v_gse2000'+suffix in tvars: options('mms'+str(this_probe)+'_'+instrument+'_v_gse2000'+suffix, 'ytitle', 'MMS'+str(this_probe)+' velocity') - options('mms'+str(this_probe)+'_'+instrument+'_v_gse2000'+suffix, 'color', ['b', 'g', 'r']) - options('mms'+str(this_probe)+'_'+instrument+'_v_gse2000'+suffix, 'legend_names', ['Vx GSE2000', 'Vy GSE2000', 'Vz GSE2000']) \ No newline at end of file + options('mms'+str(this_probe)+'_'+instrument+'_v_gse2000'+suffix, 'legend_names', ['Vx GSE2000', 'Vy GSE2000', 'Vz GSE2000']) diff --git a/pyspedas/mms/mec_ascii/mms_get_local_state_files.py b/pyspedas/mms/mec_ascii/mms_get_local_state_files.py index 893cca36..fd7a1f1c 100644 --- a/pyspedas/mms/mec_ascii/mms_get_local_state_files.py +++ b/pyspedas/mms/mec_ascii/mms_get_local_state_files.py @@ -1,13 +1,11 @@ import os import fnmatch import glob -import re import logging import pandas as pd - -from pyspedas import time_double from pyspedas.mms.mms_config import CONFIG + def mms_get_local_state_files(probe='1', level='def', filetype='eph', trange=None): """ Search for local state MMS files in case a list cannot be retrieved from the @@ -15,7 +13,7 @@ def mms_get_local_state_files(probe='1', level='def', filetype='eph', trange=Non Parameters: trange : list of str - time range of interest [starttime, endtime] with the format + time range of interest [start time, end time] with the format 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] @@ -46,23 +44,28 @@ def mms_get_local_state_files(probe='1', level='def', filetype='eph', trange=Non # and FILETYPE is either DEFATT, PREDATT, DEFEPH, PREDEPH in uppercase # and start/endDate is YYYYDOY # and version is Vnn (.V00, .V01, etc..) - dir_pattern = os.sep.join([CONFIG['local_data_dir'], 'ancillary', 'mms'+probe, level+filetype]) - file_pattern = 'MMS'+probe+'_'+level.upper()+filetype.upper()+'_'+'???????_???????.V??' + dir_pattern = os.sep.join([CONFIG['local_data_dir'], 'ancillary', f'mms{probe}', f'{level}{filetype}']) + file_pattern = f'MMS{probe}_{level.upper()}{filetype.upper()}_???????_???????.V??' files_in_trange = [] out_files = [] files = glob.glob(os.sep.join([dir_pattern, file_pattern])) - # find the files within the trange - file_regex = re.compile(os.sep.join([dir_pattern, 'MMS'+probe+'_'+level.upper()+filetype.upper()+'_([0-9]{7})_([0-9]{7}).V[0-9]{2}'])) for file in files: - time_match = file_regex.match(file) - if time_match != None: - start_time = pd.to_datetime(time_match.group(1), format='%Y%j').timestamp() - end_time = pd.to_datetime(time_match.group(2), format='%Y%j').timestamp() - if start_time < time_double(trange[1]) and end_time >= time_double(trange[0]): + filename = os.path.basename(file) + try: + date_parts = filename.split('_') + start_time_str = date_parts[2] + end_time_str = date_parts[3].split('.')[0] + + start_time = pd.to_datetime(start_time_str, format='%Y%j').timestamp() + end_time = pd.to_datetime(end_time_str, format='%Y%j').timestamp() + + if start_time < pd.Timestamp(trange[1]).timestamp() and end_time >= pd.Timestamp(trange[0]).timestamp(): files_in_trange.append(file) + except IndexError: + continue # ensure only the latest version of each file is loaded for file in files_in_trange: @@ -73,4 +76,4 @@ def mms_get_local_state_files(probe='1', level='def', filetype='eph', trange=Non else: out_files.append(versions[0]) - return list(set(out_files)) \ No newline at end of file + return list(set(out_files)) diff --git a/pyspedas/mms/mec_ascii/mms_get_state_data.py b/pyspedas/mms/mec_ascii/mms_get_state_data.py index dc534ad5..8aa8834d 100644 --- a/pyspedas/mms/mec_ascii/mms_get_state_data.py +++ b/pyspedas/mms/mec_ascii/mms_get_state_data.py @@ -1,10 +1,8 @@ import os import logging import warnings - from shutil import copyfileobj, copy from tempfile import NamedTemporaryFile - from pyspedas import time_double, time_string from pyspedas.mms.mms_login_lasp import mms_login_lasp from pyspedas.mms.mms_config import CONFIG @@ -12,12 +10,12 @@ from pyspedas.mms.mec_ascii.mms_load_eph_tplot import mms_load_eph_tplot from pyspedas.mms.mec_ascii.mms_load_att_tplot import mms_load_att_tplot + def mms_get_state_data(probe='1', trange=['2015-10-16', '2015-10-17'], datatypes=['pos', 'vel'], level='def', no_download=False, pred_or_def=True, suffix='', always_prompt=False): """ Helper routine for loading state data (ASCII files from the SDC); not meant to be called directly; see pyspedas.mms.state instead - """ if not isinstance(probe, list): probe = [probe] @@ -25,7 +23,6 @@ def mms_get_state_data(probe='1', trange=['2015-10-16', '2015-10-17'], local_data_dir = CONFIG['local_data_dir'] download_only = CONFIG['download_only'] - start_time = time_double(trange[0])-60*60*24. end_time = time_double(trange[1]) @@ -136,7 +133,7 @@ def mms_get_state_data(probe='1', trange=['2015-10-16', '2015-10-17'], continue # if no files are found remotely, try locally - if out_files == []: + if not out_files: out_files = mms_get_local_state_files(probe=probe_id, level=level, filetype=filetype, trange=[start_time_str, end_time_str]) if filetype == 'eph': diff --git a/pyspedas/mms/mec_ascii/mms_load_att_tplot.py b/pyspedas/mms/mec_ascii/mms_load_att_tplot.py index 6ae79905..ae0b829c 100644 --- a/pyspedas/mms/mec_ascii/mms_load_att_tplot.py +++ b/pyspedas/mms/mec_ascii/mms_load_att_tplot.py @@ -1,15 +1,13 @@ - import logging import pandas as pd import numpy as np - -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import store_data + def mms_load_att_tplot(filenames, level='def', probe='1', datatypes=['spinras', 'spindec'], suffix='', trange=None): """ Helper routine for loading state data (ASCII files from the SDC); not meant to be called directly; see pyspedas.mms.state instead - """ prefix = 'mms' + probe @@ -61,4 +59,3 @@ def mms_load_att_tplot(filenames, level='def', probe='1', datatypes=['spinras', if 'spindec' in datatypes: store_data(prefix + '_' + level + 'att_spindec' + suffix, data={'x': file_times_uniq[0], 'y': file_ldecs_out}) tclip(prefix + '_' + level + 'att_spindec' + suffix, trange[0], trange[1], suffix='') - diff --git a/pyspedas/mms/mec_ascii/mms_load_eph_tplot.py b/pyspedas/mms/mec_ascii/mms_load_eph_tplot.py index d00a34c1..1a19a0ac 100644 --- a/pyspedas/mms/mec_ascii/mms_load_eph_tplot.py +++ b/pyspedas/mms/mec_ascii/mms_load_eph_tplot.py @@ -1,15 +1,13 @@ - import logging import pandas as pd import numpy as np - -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import store_data, options + def mms_load_eph_tplot(filenames, level='def', probe='1', datatypes=['pos', 'vel'], suffix='', trange=None): """ Helper routine for loading state data (ASCII files from the SDC); not meant to be called directly; see pyspedas.mms.state instead - """ prefix = 'mms' + probe @@ -45,7 +43,6 @@ def mms_load_eph_tplot(filenames, level='def', probe='1', datatypes=['pos', 'vel options(prefix + '_' + level + 'eph_pos' + suffix, 'ytitle', 'MMS'+str(probe)+' position') options(prefix + '_' + level + 'eph_pos' + suffix, 'ysubtitle', '[km]') options(prefix + '_' + level + 'eph_pos' + suffix, 'legend_names', ['X ECI', 'Y ECI', 'Z ECI']) - options(prefix + '_' + level + 'eph_pos' + suffix, 'color', ['b', 'g', 'r']) if 'vel' in datatypes: store_data(prefix + '_' + level + 'eph_vel' + suffix, data={'x': time_values, 'y': np.transpose(np.array([vx_values, vy_values, vz_values]))}) @@ -53,5 +50,3 @@ def mms_load_eph_tplot(filenames, level='def', probe='1', datatypes=['pos', 'vel options(prefix + '_' + level + 'eph_vel' + suffix, 'ytitle', 'MMS'+str(probe)+' velocity') options(prefix + '_' + level + 'eph_vel' + suffix, 'ysubtitle', '[km/s]') options(prefix + '_' + level + 'eph_vel' + suffix, 'legend_names', ['Vx ECI', 'Vy ECI', 'Vz ECI']) - options(prefix + '_' + level + 'eph_vel' + suffix, 'color', ['b', 'g', 'r']) - diff --git a/pyspedas/mms/mec_ascii/state.py b/pyspedas/mms/mec_ascii/state.py index 19231467..0a89dbd9 100644 --- a/pyspedas/mms/mec_ascii/state.py +++ b/pyspedas/mms/mec_ascii/state.py @@ -1,7 +1,7 @@ - from pyspedas.mms.mec_ascii.mms_get_state_data import mms_get_state_data from pyspedas.mms.print_vars import print_vars + @print_vars def mms_load_state(trange=['2015-10-16', '2015-10-17'], probe='1', level='def', datatypes=['pos', 'vel'], no_update=False, pred_or_def=True, suffix=''): @@ -12,7 +12,7 @@ def mms_load_state(trange=['2015-10-16', '2015-10-17'], probe='1', level='def', Parameters ---------- trange : list of str - time range of interest [starttime, endtime] with the format + time range of interest [start time, end time] with the format 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] @@ -33,7 +33,11 @@ def mms_load_state(trange=['2015-10-16', '2015-10-17'], probe='1', level='def', Set this flag to preserve the original data. if not set and newer data is found the existing data will be overwritten - Returns: + pred_or_def: bool + Load definitive or predicted (if definitive isn't available); defaults to True + + Returns + -------- List of tplot variables created. """ diff --git a/pyspedas/mms/mms_events.py b/pyspedas/mms/mms_events.py new file mode 100644 index 00000000..f9e80b02 --- /dev/null +++ b/pyspedas/mms/mms_events.py @@ -0,0 +1,73 @@ +import os +import logging +import numpy as np +import pandas as pd +from pyspedas import time_string, time_double +from pyspedas.mms.mms_tai2unix import mms_tai2unix +from pyspedas.utilities.download import download +from pyspedas.mms.mms_config import CONFIG + + +def mms_brst_events(trange=None, reload=False): + """ + Prints a list of burst mode segment selections from the MMS data segment database + + Parameters + ----------- + trange: list of str or list of float + Time range to list burst mode events + + reload: + Re-download the burst mode events database + """ + if trange is None: + logging.error('Time range not specified. ') + return + + remote_path = 'https://lasp.colorado.edu/mms/sdc/public/service/latis/' + remote_file = 'mms_burst_data_segment.csv' + + if reload or not os.path.exists(os.path.join(CONFIG['local_data_dir'], remote_file)): + brst_file = download(remote_path=remote_path, remote_file=remote_file, local_path=CONFIG['local_data_dir']) + if len(brst_file) > 0: + brst_file = brst_file[0] + else: + brst_file = os.path.join(CONFIG['local_data_dir'], remote_file) + + table = load_csv_file(brst_file) + + descriptions = table['DISCUSSION'].to_numpy() + authors = table['SOURCEID'].to_numpy() + start_tai = np.float64(table['TAISTARTTIME'].to_numpy()) + end_tai = np.float64(table['TAIENDTIME'].to_numpy()) + + start_unix = mms_tai2unix(start_tai) + end_unix = mms_tai2unix(end_tai) + + # sort based on start time + sorted_indices = np.argsort(start_unix) + descriptions = descriptions[sorted_indices] + authors = authors[sorted_indices] + start_unix = start_unix[sorted_indices] + end_unix = end_unix[sorted_indices] + + trange = time_double(trange) + idxs = ((start_unix >= trange[0]) & (start_unix <= trange[1])) & ((end_unix <= trange[1]) & (end_unix >= trange[0])) + indices = np.argwhere(idxs).flatten() + descriptions = descriptions[indices] + authors = authors[indices] + start_times = start_unix[indices] + end_times = end_unix[indices] + + for desc, author, start_time, end_time in zip(descriptions, authors, start_times, end_times): + print(time_string(start_time, fmt='%Y-%m-%d/%H:%M:%S') + ' - ' + time_string(end_time, fmt='%Y-%m-%d/%H:%M:%S') + ': ' + str(desc) + ' (' + str(author) + ')') + + +def load_csv_file(filename, cols=None): + """ + Loads the burst segment CSV file into a pandas data frame + """ + if cols is None: + cols = ['DATASEGMENTID', 'TAISTARTTIME', 'TAIENDTIME', 'PARAMETERSETID', 'FOM', 'ISPENDING', 'INPLAYLIST', 'STATUS', 'NUMEVALCYCLES', 'SOURCEID', 'CREATETIME', 'FINISHTIME', 'OBS1NUMBUFS', 'OBS2NUMBUFS', 'OBS3NUMBUFS', 'OBS4NUMBUFS', 'OBS1ALLOCBUFS', 'OBS2ALLOCBUFS', 'OBS3ALLOCBUFS', 'OBS4ALLOCBUFS', 'OBS1REMFILES', 'OBS2REMFILES', 'OBS3REMFILES', 'OBS4REMFILES', 'DISCUSSION', 'empty1', 'empty2'] + df = pd.read_csv(filename, dtype=str, names=cols, on_bad_lines='skip', skiprows=1) + return df diff --git a/pyspedas/mms/mms_file_filter.py b/pyspedas/mms/mms_file_filter.py index 23e98615..d3a21356 100644 --- a/pyspedas/mms/mms_file_filter.py +++ b/pyspedas/mms/mms_file_filter.py @@ -1,11 +1,12 @@ - import re + def mms_file_filter(files, latest_version=False, major_version=False, min_version=None, version=None): """ This function filters a list of MMS data files based on CDF version - Parameters: + Parameters + ------------ version: str Specify a specific CDF version # to return (e.g., cdf_version='4.3.0') @@ -18,7 +19,8 @@ def mms_file_filter(files, latest_version=False, major_version=False, min_versio major_version: bool Only return the latest major CDF version (e.g., X in vX.Y.Z) in the requested time interval - Returns: + Returns + ---------- List of filtered files """ @@ -81,4 +83,4 @@ def mms_file_filter(files, latest_version=False, major_version=False, min_versio else: out_files.append(file_ver[3]) - return out_files \ No newline at end of file + return out_files diff --git a/pyspedas/mms/mms_files_in_interval.py b/pyspedas/mms/mms_files_in_interval.py index 93642d21..69ba9ac9 100644 --- a/pyspedas/mms/mms_files_in_interval.py +++ b/pyspedas/mms/mms_files_in_interval.py @@ -1,26 +1,27 @@ - import re from dateutil.parser import parse from bisect import bisect_left + def mms_files_in_interval(in_files, trange): - ''' - This function filters the file list returned by the SDC to the requested time range. This filter is purposefully + """ + This function filters the file list returned by the SDC to the requested time range. This filter is purposefully liberal, it regularly grabs an extra file due to special cases - Parameters: + Parameters + ----------- in_files: list of dict List of hash tables containing files returned by the SDC trange : list of str - time range of interest [starttime, endtime] with the format - 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + time range of interest [start time, end time] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] - Returns: + Returns + --------- List of hash tables containing file names, sizes and their time tags - - ''' + """ file_name = 'mms.*_([0-9]{8,14})_v(\d+).(\d+).(\d+).cdf' file_times = [] diff --git a/pyspedas/mms/mms_get_local_files.py b/pyspedas/mms/mms_get_local_files.py index 0d6bc20d..f5237344 100644 --- a/pyspedas/mms/mms_get_local_files.py +++ b/pyspedas/mms/mms_get_local_files.py @@ -1,21 +1,21 @@ +import logging import os import re import shutil from .mms_config import CONFIG from .mms_files_in_interval import mms_files_in_interval - from dateutil.rrule import rrule, DAILY from dateutil.parser import parse - from datetime import timedelta -def mms_get_local_files(probe, instrument, data_rate, level, datatype, trange, mirror=False): +def mms_get_local_files(probe, instrument, data_rate, level, datatype, trange, mirror=False): """ Search for local MMS files in case a list cannot be retrieved from the remote server. - Parameters: + Parameters + ------------ probe: str probe #, e.g., '4' for MMS4 @@ -37,10 +37,10 @@ def mms_get_local_files(probe, instrument, data_rate, level, datatype, trange, m mirror: bool if True, copy files from network mirror to local data directory - Returns: + Returns + --------- List of file paths. """ - files_out = [] if mirror: @@ -51,7 +51,6 @@ def mms_get_local_files(probe, instrument, data_rate, level, datatype, trange, m else: data_dir = CONFIG['local_data_dir'] - # directory and file name search patterns # -assume directories are of the form: # (srvy, SITL): spacecraft/instrument/rate/level[/datatype]/year/month/ @@ -79,18 +78,22 @@ def mms_get_local_files(probe, instrument, data_rate, level, datatype, trange, m else: full_path = os.sep.join([re.escape(local_dir), file_name]) + # check for extra /'s in the path + if '//' in full_path: + full_path = full_path.replace('//', '/') + regex = re.compile(full_path) for root, dirs, files in os.walk(data_dir): for file in files: this_file = os.sep.join([root, file]) - if CONFIG['debug_mode']: print('Checking ' + this_file) - if CONFIG['debug_mode']: print('against: ' + full_path) + if CONFIG['debug_mode']: logging.info('Checking ' + this_file) + if CONFIG['debug_mode']: logging.info('against: ' + full_path) matches = regex.match(this_file) if matches: this_time = parse(matches.groups()[1]) if this_time >= parse(parse(trange[0]).strftime('%Y-%m-%d')) and this_time <= parse(trange[1])-timedelta(seconds=1): - if this_file not in files_out: + if not any(this_file == f['full_name'] for f in files_out): files_out.append({'file_name': file, 'timetag': '', 'full_name': this_file, 'file_size': ''}) files_in_interval = mms_files_in_interval(files_out, trange) @@ -110,12 +113,13 @@ def mms_get_local_files(probe, instrument, data_rate, level, datatype, trange, m # need to copy files from network mirror to local data directory for file in local_files: local_file = file.replace(mirror_dir, local_dir) - if CONFIG['debug_mode']: print('Copying ' + file + ' to ' + local_file) + if CONFIG['debug_mode']: + logging.info('Copying ' + file + ' to ' + local_file) shutil.copyfile(file, local_file) local_files_copied.append(local_file) local_files = local_files_copied for file in local_files: - print('Loading: ' + file) + logging.info('Loading: ' + file) - return local_files \ No newline at end of file + return local_files diff --git a/pyspedas/mms/mms_load_brst_segments.py b/pyspedas/mms/mms_load_brst_segments.py index 51a528f1..b212aa16 100644 --- a/pyspedas/mms/mms_load_brst_segments.py +++ b/pyspedas/mms/mms_load_brst_segments.py @@ -1,32 +1,36 @@ - import os import logging import numpy as np from scipy.io import readsav from pytplot import store_data, options - from pyspedas import time_double from pyspedas.utilities.download import download from pyspedas.mms.mms_config import CONFIG - -logging.captureWarnings(True) -logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) +from pyspedas.mms.mms_update_brst_intervals import mms_update_brst_intervals -def mms_load_brst_segments(trange=None, suffix=''): - ''' +def mms_load_brst_segments(trange=None, suffix='', sdc=True): + """ This function loads the burst segment intervals - Parameters: + Parameters + ----------- trange : list of str - time range of interest [starttime, endtime] with the format + time range of interest [start time, end time] with the format 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] - Returns: - Tuple containing (start_times, end_times) + suffix: str + String to append to the end of the tplot variable names + + sdc: bool + Flag to download the data from the SDC instead of spedas.org + (spedas.org is out of date, but faster); defaults to True - ''' + Returns + --------- + Tuple containing (start_times, end_times) + """ if trange is None: logging.error('Error; no trange specified.') @@ -34,22 +38,33 @@ def mms_load_brst_segments(trange=None, suffix=''): tr = time_double(trange) - save_file = os.path.join(CONFIG['local_data_dir'], 'mms_brst_intervals.sav') - brst_file = download(remote_file='http://www.spedas.org/mms/mms_brst_intervals.sav', - local_file=save_file) + if not sdc: + save_file = os.path.join(CONFIG['local_data_dir'], 'mms_brst_intervals.sav') + brst_file = download(remote_file='http://www.spedas.org/mms/mms_brst_intervals.sav', + local_file=save_file) - if len(brst_file) == 0: - logging.error('Error downloading burst intervals sav file') - return None + if len(brst_file) == 0: + logging.error('Error downloading burst intervals sav file') + return None - try: - intervals = readsav(save_file) - except FileNotFoundError: - logging.error('Error loading burst intervals sav file: ' + save_file) - return None + try: + intervals = readsav(save_file) + except FileNotFoundError: + logging.error('Error loading burst intervals sav file: ' + save_file) + return None + + unix_start = intervals['brst_intervals'].start_times[0] + unix_end = intervals['brst_intervals'].end_times[0] - unix_start = intervals['brst_intervals'].start_times[0] - unix_end = intervals['brst_intervals'].end_times[0] + else: + intervals = mms_update_brst_intervals() + + if intervals is not None: + unix_start = np.array(intervals['start_times']) + unix_end = np.array(intervals['end_times']) + else: + logging.error('Error downloading latest burst intervals file.') + return sorted_idxs = np.argsort(unix_start) unix_start = unix_start[sorted_idxs] @@ -60,9 +75,13 @@ def mms_load_brst_segments(trange=None, suffix=''): unix_start = unix_start[times_in_range] unix_end = unix_end[times_in_range] + if len(unix_start) == 0: + logging.error('No burst intervals found in the time range.') + return + # +10 second offset added; there appears to be an extra 10 # seconds of data, consistently, not included in the range here - unix_end = [end_time+10.0 for end_time in unix_end] + unix_end = np.array([end_time+10.0 for end_time in unix_end]) bar_x = [] bar_y = [] @@ -86,4 +105,4 @@ def mms_load_brst_segments(trange=None, suffix=''): options('mms_bss_burst'+suffix, 'legend_names', ['Burst']) options('mms_bss_burst'+suffix, 'ytitle', '') - return (unix_start, unix_end) + return unix_start, unix_end diff --git a/pyspedas/mms/mms_load_data.py b/pyspedas/mms/mms_load_data.py index 7aa374d9..67739ab7 100644 --- a/pyspedas/mms/mms_load_data.py +++ b/pyspedas/mms/mms_load_data.py @@ -5,7 +5,7 @@ import pkg_resources import numpy as np from pytplot import cdf_to_tplot -from ..analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pyspedas import time_double, time_string from dateutil.parser import parse from datetime import timedelta, datetime @@ -18,8 +18,6 @@ from .mms_file_filter import mms_file_filter from .mms_load_data_spdf import mms_load_data_spdf -logging.captureWarnings(True) -logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) def mms_load_data(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy', level='l2', instrument='fgm', datatype='', varformat=None, prefix='', suffix='', get_support_data=False, time_clip=False, @@ -28,10 +26,8 @@ def mms_load_data(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srv """ This function loads MMS data into pyTplot variables - This function is not meant to be called directly. Please see the individual load routines for documentation and use. - + This function is not meant to be called directly. Please see the individual load routines for documentation and use. """ - if not isinstance(probe, list): probe = [probe] if not isinstance(data_rate, list): data_rate = [data_rate] if not isinstance(level, list): level = [level] @@ -48,7 +44,6 @@ def mms_load_data(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srv trange[0] = time_string(trange[0]) if isinstance(trange[1], float): trange[1] = time_string(trange[1]) - download_only = CONFIG['download_only'] @@ -93,6 +88,9 @@ def mms_load_data(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srv for lvl in level: for dtype in datatype: + + file_found = False + if user is None: url = 'https://lasp.colorado.edu/mms/sdc/public/files/api/v1/file_info/science?start_date=' + start_date + '&end_date=' + end_date + '&sc_id=mms' + prb + '&instrument_id=' + instrument + '&data_rate_mode=' + drate + '&data_level=' + lvl else: @@ -103,7 +101,7 @@ def mms_load_data(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srv if CONFIG['debug_mode']: logging.info('Fetching: ' + url) - if no_download == False: + if not no_download: # query list of available files try: with warnings.catch_warnings(): @@ -137,6 +135,7 @@ def mms_load_data(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srv if os.path.exists(out_file) and str(os.stat(out_file).st_size) == str(file['file_size']): if not download_only: logging.info('Loading ' + out_file) out_files.append(out_file) + file_found = True continue if user is None: @@ -160,23 +159,27 @@ def mms_load_data(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srv # if the download was successful, copy to data directory copy(ftmp.name, out_file) out_files.append(out_file) + file_found = True fsrc.close() ftmp.close() + os.unlink(ftmp.name) # delete the temporary file except requests.exceptions.ConnectionError: # No/bad internet connection; try loading the files locally logging.error('No internet connection!') - - if out_files == []: - if not download_only: logging.info('Searching for local files...') - out_files = mms_get_local_files(prb, instrument, drate, lvl, dtype, trange) + if not file_found: + added_local_files = False + if not download_only: + logging.info('Searching for local files...') + out_files.extend(mms_get_local_files(prb, instrument, drate, lvl, dtype, trange)) + added_local_files = True - if out_files == [] and CONFIG['mirror_data_dir'] != None: + if added_local_files and CONFIG['mirror_data_dir'] is not None: # check for network mirror; note: network mirrors are assumed to be read-only # and we always copy the files from the mirror to the local data directory # before trying to load into tplot variables logging.info('No local files found; checking network mirror...') - out_files = mms_get_local_files(prb, instrument, drate, lvl, dtype, trange, mirror=True) + out_files.extend(mms_get_local_files(prb, instrument, drate, lvl, dtype, trange, mirror=True)) if not no_download: sdc_session.close() @@ -188,7 +191,7 @@ def mms_load_data(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srv out_files = sorted(out_files) filtered_out_files = mms_file_filter(out_files, latest_version=latest_version, major_version=major_version, min_version=min_version, version=cdf_version) - if filtered_out_files == []: + if not filtered_out_files: logging.info('No matching CDF versions found.') return @@ -197,7 +200,7 @@ def mms_load_data(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srv if notplot: return new_variables - if new_variables == []: + if not new_variables: logging.warning('No data loaded.') return @@ -208,8 +211,3 @@ def mms_load_data(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srv return new_variables else: return out_files - - - - - diff --git a/pyspedas/mms/mms_load_data_spdf.py b/pyspedas/mms/mms_load_data_spdf.py index a5cd781d..e905f0c8 100644 --- a/pyspedas/mms/mms_load_data_spdf.py +++ b/pyspedas/mms/mms_load_data_spdf.py @@ -1,14 +1,16 @@ +import logging from pyspedas import time_double from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download from .mms_file_filter import mms_file_filter +from .mms_get_local_files import mms_get_local_files from pytplot import cdf_to_tplot -from pyspedas.analysis.time_clip import time_clip as tclip - +from pytplot import time_clip as tclip from .mms_config import CONFIG CONFIG['remote_data_dir'] = 'https://spdf.gsfc.nasa.gov/pub/data/mms/' + def mms_load_data_spdf(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy', level='l2', instrument='fgm', datatype='', varformat=None, suffix='', get_support_data=False, time_clip=False, no_update=False, center_measurement=False, available=False, notplot=False, latest_version=False, @@ -16,8 +18,7 @@ def mms_load_data_spdf(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate """ This function loads MMS data from NASA SPDF into pyTplot variables - This function is not meant to be called directly. Please see the individual load routines for documentation and use. - + This function is not meant to be called directly. Please see the individual load routines for documentation and use. """ tvars_created = [] @@ -27,7 +28,6 @@ def mms_load_data_spdf(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate if not isinstance(level, list): level = [level] if not isinstance(datatype, list): datatype = [datatype] - for prb in probe: for lvl in level: for drate in data_rate: @@ -82,7 +82,18 @@ def mms_load_data_spdf(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate if files is not None: for file in files: out_files.append(file) - + + if not out_files: + logging.info('Searching for local files...') + out_files = mms_get_local_files(prb, instrument, drate, lvl, dtype, trange) + + if not out_files and CONFIG['mirror_data_dir'] != None: + # check for network mirror; note: network mirrors are assumed to be read-only + # and we always copy the files from the mirror to the local data directory + # before trying to load into tplot variables + logging.info('No local files found; checking network mirror...') + out_files = mms_get_local_files(prb, instrument, drate, lvl, dtype, trange, mirror=True) + out_files = sorted(out_files) filtered_out_files = mms_file_filter(out_files, latest_version=latest_version, major_version=major_version, min_version=min_version, version=cdf_version) diff --git a/pyspedas/mms/mms_load_fast_segments.py b/pyspedas/mms/mms_load_fast_segments.py index 4f3dd272..6d287eb7 100644 --- a/pyspedas/mms/mms_load_fast_segments.py +++ b/pyspedas/mms/mms_load_fast_segments.py @@ -1,36 +1,32 @@ - import os import logging import numpy as np from scipy.io import readsav from pytplot import store_data, options - from pyspedas import time_double from pyspedas.utilities.download import download from pyspedas.mms.mms_config import CONFIG -logging.captureWarnings(True) -logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) - def mms_load_fast_segments(trange=None, suffix=''): - ''' + """ This function loads the fast segment intervals - Parameters: + Parameters + ----------- trange : list of str - time range of interest [starttime, endtime] with the format + time range of interest [start time, end time] with the format 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] suffix: str Suffix to append to the end of the tplot variables - Returns: + Returns + -------- Tuple containing (start_times, end_times) - ''' - + """ if trange is None: logging.error('Error; no trange specified.') return None @@ -81,4 +77,4 @@ def mms_load_fast_segments(trange=None, suffix=''): options('mms_bss_fast'+suffix, 'legend_names', ['Fast']) options('mms_bss_fast'+suffix, 'ytitle', '') - return (unix_start, unix_end) + return unix_start, unix_end diff --git a/pyspedas/mms/mms_load_sroi_segments.py b/pyspedas/mms/mms_load_sroi_segments.py index 666d34d1..d02d9991 100644 --- a/pyspedas/mms/mms_load_sroi_segments.py +++ b/pyspedas/mms/mms_load_sroi_segments.py @@ -1,4 +1,3 @@ - import csv import logging import requests @@ -6,8 +5,6 @@ from pytplot import store_data, options from pyspedas import time_double, time_string -logging.captureWarnings(True) -logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) def get_mms_srois(start_time=None, end_time=None, sc_id=None): if start_time is None: @@ -65,7 +62,8 @@ def mms_load_sroi_segments(trange=None, probe=1, suffix=''): """ This function loads the Science Region of Interest (SRoI) segment intervals - Parameters: + Parameters + ------------ trange: list of str time range of interest [starttime, endtime] with the format 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day @@ -77,11 +75,11 @@ def mms_load_sroi_segments(trange=None, probe=1, suffix=''): suffix: str Suffix to append to the end of the tplot variables - Returns: + Returns + --------- Tuple containing (start_times, end_times) """ - if not isinstance(probe, str): probe = str(probe) @@ -130,4 +128,4 @@ def mms_load_sroi_segments(trange=None, probe=1, suffix=''): options('mms' + probe + '_bss_sroi'+suffix, 'legend_names', ['Fast']) options('mms' + probe + '_bss_sroi'+suffix, 'ytitle', '') - return (start_out, end_out) + return start_out, end_out diff --git a/pyspedas/mms/mms_login_lasp.py b/pyspedas/mms/mms_login_lasp.py index 677d45d2..4d020931 100644 --- a/pyspedas/mms/mms_login_lasp.py +++ b/pyspedas/mms/mms_login_lasp.py @@ -1,4 +1,3 @@ - from getpass import getpass from scipy.io import readsav import requests @@ -7,14 +6,11 @@ import logging import warnings -logging.captureWarnings(True) -logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) def mms_login_lasp(always_prompt=False, headers={}): - ''' + """ This function logs the user into the SDC and returns a tuple with: (requests.Session object, username) - ''' - + """ homedir = os.path.expanduser('~') user_input_passwd = False saved_auth = None @@ -36,7 +32,12 @@ def mms_login_lasp(always_prompt=False, headers={}): pass if saved_auth is None or always_prompt == True: - user = input('SDC username (blank for public access): ') + try: + user = input('SDC username (blank for public access): ') + except: + logging.error('Error while reading SDC username/password; defaulting to public user...') + user = '' + if user != '': passwd = getpass() else: passwd = '' @@ -57,7 +58,7 @@ def mms_login_lasp(always_prompt=False, headers={}): auth = session.post('https://lasp.colorado.edu', verify=True, timeout=5, headers=headers) testget = session.get('https://lasp.colorado.edu/mms/sdc/sitl/files/api/v1/download/science', verify=True, timeout=5, headers=headers) except: - return (session, None) + return session, None # check if the login failed if testget.status_code == 401: @@ -71,4 +72,4 @@ def mms_login_lasp(always_prompt=False, headers={}): if user == '': user = None - return (session, user) + return session, user diff --git a/pyspedas/mms/mms_orbit_plot.py b/pyspedas/mms/mms_orbit_plot.py index c930bb78..a86a9682 100644 --- a/pyspedas/mms/mms_orbit_plot.py +++ b/pyspedas/mms/mms_orbit_plot.py @@ -1,20 +1,43 @@ - +import logging import os import matplotlib.pyplot as plt from pytplot import get_data from . import mms_load_mec -def mms_orbit_plot(trange=['2015-10-16', '2015-10-17'], probes=[1, 2, 3, 4], data_rate='srvy', xr=None, yr=None, plane='xy', coord='gse'): + +def mms_orbit_plot(trange=['2015-10-16', '2015-10-17'], + probes=[1, 2, 3, 4], + data_rate='srvy', + xr=None, + yr=None, + plane='xy', + coord='gse', + xsize=5, + ysize=5, + marker='x', + markevery=10, + markersize=5, + earth=True, + dpi=300, + save_png='', + save_pdf='', + save_eps='', + save_jpeg='', + save_svg='', + return_plot_objects=False, + display=True + ): """ This function creates MMS orbit plots - Parameters: + Parameters + ----------- trange : list of str time range of interest [starttime, endtime] with the format 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] - probe: list of str + probes: list of str probe #, e.g., '4' for MMS4 data_rate: str @@ -32,59 +55,103 @@ def mms_orbit_plot(trange=['2015-10-16', '2015-10-17'], probes=[1, 2, 3, 4], dat coord: str coordinate system + xsize: float + size of the figure in the x-direction, in inches (default: 5) + + ysize: float + size of the figure in the y-direction, in inches (default: 5) + + marker: str + marker style for the data points (default: 'x') + + markevery: int or sequence of int + plot a marker at every n-th data point (default: 10) + + markersize: float + size of the marker in points (default: 5) + + earth: bool + plot a reference image of the Earth (default: True) + + dpi: int + dots per inch for the plot (default: 300) + + save_png: str + file path to save the plot as a PNG file (default: None) + + save_pdf: str + file path to save the plot as a PDF file (default: None) + + save_eps: str + file path to save the plot as an EPS file (default: None) + + save_jpeg: str + file path to save the plot as a JPEG file (default: None) + + save_svg: str + file path to save the plot as an SVG file (default: None) + + return_plot_objects: bool + whether to return the plot objects as a tuple (default: False) + + display: bool + whether to display the plot using matplotlib's `show()` function (default: True) + """ - spacecraft_colors = [(0,0,0), (213/255,94/255,0), (0,158/255,115/255), (86/255,180/255,233/255)] + spacecraft_colors = [(0, 0, 0), (213/255, 94/255, 0), (0, 158/255, 115/255), (86/255, 180/255, 233/255)] mec_vars = mms_load_mec(trange=trange, data_rate=data_rate, probe=probes, varformat='*_r_' + coord, time_clip=True) if len(mec_vars) == 0: - print('Problem loading MEC data') + logging.error('Problem loading MEC data') return plane = plane.lower() coord = coord.lower() if plane not in ['xy', 'yz', 'xz']: - print('Error, invalid plane specified; valid options are: xy, yz, xz') + logging.error('Error, invalid plane specified; valid options are: xy, yz, xz') return if coord not in ['eci', 'gsm', 'geo', 'sm', 'gse', 'gse2000']: - print('Error, invalid coordinate system specified; valid options are: eci, gsm, geo, sm, gse, gse2000') + logging.error('Error, invalid coordinate system specified; valid options are: eci, gsm, geo, sm, gse, gse2000') return km_in_re = 6371.2 - fig, axis = plt.subplots(sharey=True, sharex=True) + fig, axis = plt.subplots(sharey=True, sharex=True, figsize=(xsize, ysize)) + + if earth: + im = plt.imread(os.path.dirname(os.path.realpath(__file__)) + '/mec/earth_polar1.png') + plt.imshow(im, extent=(-1, 1, -1, 1)) - im = plt.imread(os.path.dirname(os.path.realpath(__file__)) + '/mec/earth_polar1.png') - plt.imshow(im, extent=(-1, 1, -1, 1)) plot_count = 0 for probe in probes: position_data = get_data('mms' + str(probe) + '_mec_r_' + coord) if position_data is None: - print('No ' + data_rate + ' MEC data found for ' + 'MMS' + str(probe)) + logging.error('No ' + data_rate + ' MEC data found for ' + 'MMS' + str(probe)) continue else: t, d = position_data plot_count += 1 if plane == 'xy': - axis.plot(d[:, 0]/km_in_re, d[:, 1]/km_in_re, label='MMS' + str(probe), color=spacecraft_colors[int(probe)-1]) + axis.plot(d[:, 0]/km_in_re, d[:, 1]/km_in_re, label='MMS' + str(probe), color=spacecraft_colors[int(probe)-1], marker=marker, markevery=markevery, markersize=markersize) axis.set_xlabel('X Position, Re') axis.set_ylabel('Y Position, Re') if plane == 'yz': - axis.plot(d[:, 1]/km_in_re, d[:, 2]/km_in_re, label='MMS' + str(probe), color=spacecraft_colors[int(probe)-1]) + axis.plot(d[:, 1]/km_in_re, d[:, 2]/km_in_re, label='MMS' + str(probe), color=spacecraft_colors[int(probe)-1], marker=marker, markevery=markevery, markersize=markersize) axis.set_xlabel('Y Position, Re') axis.set_ylabel('Z Position, Re') if plane == 'xz': - axis.plot(d[:, 0]/km_in_re, d[:, 2]/km_in_re, label='MMS' + str(probe), color=spacecraft_colors[int(probe)-1]) + axis.plot(d[:, 0]/km_in_re, d[:, 2]/km_in_re, label='MMS' + str(probe), color=spacecraft_colors[int(probe)-1], marker=marker, markevery=markevery, markersize=markersize) axis.set_xlabel('X Position, Re') axis.set_ylabel('Z Position, Re') axis.set_aspect('equal') - if plot_count > 0: # at least one plot created + if plot_count > 0: # at least one plot created axis.legend() axis.set_title(trange[0] + ' to ' + trange[1]) axis.annotate(coord.upper() + ' coordinates', xy=(0.6, 0.05), xycoords='axes fraction') @@ -93,5 +160,23 @@ def mms_orbit_plot(trange=['2015-10-16', '2015-10-17'], probes=[1, 2, 3, 4], dat if yr is not None: axis.set_ylim(yr) - plt.show() + if return_plot_objects: + return fig, axis + + if save_png is not None and save_png != '': + plt.savefig(save_png + '.png', dpi=dpi) + + if save_eps is not None and save_eps != '': + plt.savefig(save_eps + '.eps', dpi=dpi) + + if save_svg is not None and save_svg != '': + plt.savefig(save_svg + '.svg', dpi=dpi) + + if save_pdf is not None and save_pdf != '': + plt.savefig(save_pdf + '.pdf', dpi=dpi) + + if save_jpeg is not None and save_jpeg != '': + plt.savefig(save_jpeg + '.jpeg', dpi=dpi) + if display: + plt.show() diff --git a/pyspedas/mms/mms_tai2unix.py b/pyspedas/mms/mms_tai2unix.py new file mode 100644 index 00000000..5b98f66b --- /dev/null +++ b/pyspedas/mms/mms_tai2unix.py @@ -0,0 +1,37 @@ +import datetime +import numpy as np +from pyspedas.utilities.leap_seconds import load_leap_table + + +def mms_tai2unix(values): + """ + Converts MMS timestamps in TAI to unix timestamps + + Based on Mitsuo Oka's IDL code with the same name. + + Input + --------- + values: float, list of floats or np.ndarray + Time values in TAI + + Returns + --------- + Array of time values as unix times + + """ + if not isinstance(values, list) and not isinstance(values, np.ndarray): + values = [values] + table = load_leap_table() + tai_minus_unix = 378691200.0 + juls = np.array(table['juls']) + values_juls = np.array(values)/86400.0 + datetime.date(1958, 1, 1).toordinal() + 1721424.5 + out = np.zeros(len(values)) + for idx, value in enumerate(values_juls): + loc_greater = np.argwhere(value > juls).flatten() + if len(loc_greater) == 0: + continue + last_loc = loc_greater[len(loc_greater)-1] + current_leap = float(table['leaps'][last_loc]) + tinput_1970 = values[idx] - tai_minus_unix + out[idx] = tinput_1970 - current_leap + return out diff --git a/pyspedas/mms/mms_update_brst_intervals.py b/pyspedas/mms/mms_update_brst_intervals.py new file mode 100644 index 00000000..a776a63e --- /dev/null +++ b/pyspedas/mms/mms_update_brst_intervals.py @@ -0,0 +1,96 @@ +import os +import csv +import time +import logging +import pickle +import numpy as np +from pytplot import time_double, time_string +from pyspedas.mms.mms_login_lasp import mms_login_lasp +from pyspedas.utilities.download import download +from pyspedas.mms.mms_config import CONFIG +from pyspedas.mms.mms_tai2unix import mms_tai2unix + + +def mms_update_brst_intervals(): + """ + This function downloads and caches the current mms_burst_data_segment.csv + file from the MMS SDC + """ + # not sure if logging in is still important for these + # so this code might be unnecessary now; for now it + # remains to match the IDL functionality + login = mms_login_lasp() + + if login is None: + logging.error('Error logging into the LASP SDC.') + return + + session, user = login + + # grab ~6 months of burst intervals at a time + start_interval = '2015-03-01' + end_interval = time_double(start_interval) + 6.*30*24*60*60 + + unix_starts = [] + unix_ends = [] + + while time_double(start_interval) <= time_double(time.time()): + start_str = time_string(time_double(start_interval), fmt='%d-%b-%Y') + end_str = time_string(end_interval, fmt='%d-%b-%Y') + + logging.info(f'Downloading updates for {start_str} - {end_str}') + + remote_path = 'https://lasp.colorado.edu/mms/sdc/public/service/latis/' + remote_file = f'mms_burst_data_segment.csv?FINISHTIME>={start_str}+&FINISHTIME<{end_str}' + + brst_file = download(remote_path=remote_path, remote_file=remote_file, + local_file=os.path.join(CONFIG['local_data_dir'], 'mms_burst_data_segment.csv'), + session=session, no_wildcards=True) + + if isinstance(brst_file, list): + # should only be one file + brst_file = brst_file[0] + + times = load_csv_file(brst_file) + if not isinstance(times, tuple) or len(times) != 3: + logging.error('Error loading the CSV file') + return + + taistarttime, taiendtime, status = times + + complete_idxs = np.argwhere(status == 'COMPLETE+FINISHED').flatten() + if len(complete_idxs) != 0: + tai_starts = taistarttime[complete_idxs] + tai_ends = taiendtime[complete_idxs] + + unix_starts.extend(mms_tai2unix(tai_starts)) + unix_ends.extend(mms_tai2unix(tai_ends)) + + logging.info(f'Done grabbing updates for {start_str}-{end_str}') + + start_interval = end_interval + end_interval = time_double(start_interval) + 6. * 30 * 24 * 60 * 60 + + brst_intervals = {'start_times': unix_starts, + 'end_times': unix_ends} + + with open(os.path.join(CONFIG['local_data_dir'], 'mms_brst_intervals.pickle'), "wb") as file: + pickle.dump(brst_intervals, file) + + logging.info(f'Burst intervals updated! Last interval in the file: {time_string(unix_starts[-1])}-{time_string(unix_ends[-1])}') + + return brst_intervals + + +def load_csv_file(filename): + taistarttime = [] + taiendtime = [] + status = [] + with open(filename, 'r') as file: + reader = csv.reader(file) + next(reader) # skip the header row + for row in reader: + taistarttime.append(int(row[1])) + taiendtime.append(int(row[2])) + status.append(row[7]) + return np.array(taistarttime), np.array(taiendtime), np.array(status) diff --git a/pyspedas/mms/particles/mms_convert_flux_units.py b/pyspedas/mms/particles/mms_convert_flux_units.py index 2fc8af3a..e647c86a 100644 --- a/pyspedas/mms/particles/mms_convert_flux_units.py +++ b/pyspedas/mms/particles/mms_convert_flux_units.py @@ -4,6 +4,7 @@ logging.captureWarnings(True) logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) + def mms_convert_flux_units(data_in, units=None): """ Perform unit conversions for MMS particle data structures @@ -28,7 +29,6 @@ def mms_convert_flux_units(data_in, units=None): 3D particle data structure with the data in the units specified by the 'units' parameter """ - if units is None: logging.error('Error, no units specified') return None @@ -50,21 +50,21 @@ def mms_convert_flux_units(data_in, units=None): # get mass of species if species_lc == 'i': - A = 1.0 # H+ + A = 1.0 # H+ elif species_lc == 'proton': - A = 1.0 # H+ + A = 1.0 # H+ elif species_lc == 'hplus': - A = 1.0 # H+ + A = 1.0 # H+ elif species_lc == 'heplus': - A = 4.0 # He+ + A = 4.0 # He+ elif species_lc == 'heplusplus': - A = 4.0 # He++ + A = 4.0 # He++ elif species_lc == 'oplus': - A = 16.0 # O+ + A = 16.0 # O+ elif species_lc == 'oplusplus': - A = 16.0 # O++ + A = 16.0 # O++ elif species_lc == 'e': - A = 1.0/1836.0 # e- + A = 1.0/1836.0 # e- # scaling factor between df and flux units flux_to_df = A**2.0 * 0.5447 * 1e6 @@ -77,8 +77,8 @@ def mms_convert_flux_units(data_in, units=None): # rather than multiplying by all applicable in/out factors # these exponents should always be integers! # [energy, flux_to_df, cm_to_km] - exp_in = [0,0,0] - exp_out = [0,0,0] + exp_in = [0, 0, 0] + exp_out = [0, 0, 0] # get input/output scaling exponents if units_in == 'flux': @@ -100,4 +100,4 @@ def mms_convert_flux_units(data_in, units=None): data_out['units_name'] = units_out data_out['data'] = data_in['data']*data_in['energy']**exp[0]*(flux_to_df**exp[1]*cm_to_km**exp[2]) - return data_out \ No newline at end of file + return data_out diff --git a/pyspedas/mms/particles/mms_part_des_photoelectrons.py b/pyspedas/mms/particles/mms_part_des_photoelectrons.py index f99c65dd..fced2adb 100644 --- a/pyspedas/mms/particles/mms_part_des_photoelectrons.py +++ b/pyspedas/mms/particles/mms_part_des_photoelectrons.py @@ -1,4 +1,3 @@ - import os import logging from pyspedas.mms.mms_config import CONFIG @@ -8,6 +7,7 @@ logging.captureWarnings(True) logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) + def mms_part_des_photoelectrons(dist_var): """ Loads and returns the FPI/DES photoelectron model based on stepper ID @@ -75,4 +75,4 @@ def mms_part_des_photoelectrons(dist_var): # shouldn't get here logging.error('Error: something went wrong with the photoelectron model') - return \ No newline at end of file + return diff --git a/pyspedas/mms/particles/mms_part_getspec.py b/pyspedas/mms/particles/mms_part_getspec.py index 4efe1b4d..58a2c738 100644 --- a/pyspedas/mms/particles/mms_part_getspec.py +++ b/pyspedas/mms/particles/mms_part_getspec.py @@ -1,19 +1,35 @@ - import logging from time import time - from pyspedas import time_double, mms from pyspedas.mms.particles.mms_part_products import mms_part_products logging.captureWarnings(True) logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) -def mms_part_getspec(instrument='fpi', probe='1', species='e', data_rate='fast', - trange=None, output=['energy', 'theta', 'phi', 'pa', 'gyro'], units='eflux', energy=None, - phi=None, theta=None, pitch=None, gyro=None, mag_data_rate=None, scpot_data_rate=None, fac_type='mphigeo', - center_measurement=False, spdf=False, correct_photoelectrons=False, - internal_photoelectron_corrections=False, disable_photoelectron_corrections=False, zero_negative_values=False, - regrid=[32, 16], no_regrid=False): + +def mms_part_getspec(instrument='fpi', + probe='1', + species='e', + data_rate='fast', + trange=None, + output=['energy', 'theta', 'phi', 'pa', 'gyro'], + units='eflux', + energy=None, + phi=None, + theta=None, + pitch=None, + gyro=None, + mag_data_rate=None, + scpot_data_rate=None, + fac_type='mphigeo', + center_measurement=False, + spdf=False, + correct_photoelectrons=False, + internal_photoelectron_corrections=False, + disable_photoelectron_corrections=False, + zero_negative_values=False, + regrid=[32, 16], + no_regrid=False): """ Generate spectra and moments from 3D MMS particle data @@ -105,9 +121,8 @@ def mms_part_getspec(instrument='fpi', probe='1', species='e', data_rate='fast', start_time = time() if trange is None: - # test data for development - trange = ['2015-10-16/13:06', '2015-10-16/13:07'] - # data_rate = 'brst' + logging.error('Time range not specified; please specify time range using the trange keyword.') + return if mag_data_rate is None: if data_rate == 'brst': @@ -198,4 +213,4 @@ def mms_part_getspec(instrument='fpi', probe='1', species='e', data_rate='fast', logging.info('Finished; time to run: ' + str(round(time()-start_time, 1)) + ' seconds.') - return out_vars \ No newline at end of file + return out_vars diff --git a/pyspedas/mms/particles/mms_part_products.py b/pyspedas/mms/particles/mms_part_products.py index 6f2f4753..35755500 100644 --- a/pyspedas/mms/particles/mms_part_products.py +++ b/pyspedas/mms/particles/mms_part_products.py @@ -28,11 +28,29 @@ logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) -def mms_part_products(in_tvarname, units='eflux', species='e', data_rate='fast', instrument='fpi', probe='1', - output=['energy', 'theta', 'phi'], energy=None, phi=None, theta=None, pitch=None, gyro=None, mag_name=None, - pos_name=None, fac_type='mphigeo', sc_pot_name=None, correct_photoelectrons=False, zero_negative_values=False, - internal_photoelectron_corrections=False, disable_photoelectron_corrections=False, no_regrid=False, - regrid=[32, 16], vel_name=None): +def mms_part_products(in_tvarname, + units='eflux', + species='e', + data_rate='fast', + instrument='fpi', + probe='1', + output=['energy', 'theta', 'phi'], + energy=None, + phi=None, + theta=None, + pitch=None, + gyro=None, + mag_name=None, + pos_name=None, + fac_type='mphigeo', + sc_pot_name=None, + correct_photoelectrons=False, + zero_negative_values=False, + internal_photoelectron_corrections=False, + disable_photoelectron_corrections=False, + no_regrid=False, + regrid=[32, 16], + vel_name=None): """ Generate spectra and moments from 3D MMS particle data; note: this routine isn't meant to be called directly - see the wrapper mms_part_getspec instead. @@ -204,10 +222,10 @@ def mms_part_products(in_tvarname, units='eflux', species='e', data_rate='fast', corrections, including photoelectron removal and spacecraft potential. The official moments released by the instrument teams include these and are the scientific products that should be used for analysis.""" - print('==================================================================================') - print('WARNING:') - print(msg) - print('==================================================================================') + logging.warning('==================================================================================') + logging.warning('WARNING:') + logging.warning(msg) + logging.warning('==================================================================================') # grab the DES photoelectron model if needed if (instrument != 'fpi' or species != 'e') and (correct_photoelectrons or internal_photoelectron_corrections): @@ -369,4 +387,4 @@ def mms_part_products(in_tvarname, units='eflux', species='e', data_rate='fast', spd_pgs_make_tplot(in_tvarname+'_gyro', x=data_times, y=out_gyro_y, z=out_gyro, units=units, ytitle=dist_in['data_name'], ysubtitle='gyro (deg)') out_vars.append(in_tvarname+'_gyro') - return out_vars \ No newline at end of file + return out_vars diff --git a/pyspedas/mms/particles/mms_part_slice2d.py b/pyspedas/mms/particles/mms_part_slice2d.py index 28e3b843..48635b37 100644 --- a/pyspedas/mms/particles/mms_part_slice2d.py +++ b/pyspedas/mms/particles/mms_part_slice2d.py @@ -1,3 +1,4 @@ +import logging import pyspedas from pyspedas import time_double from pyspedas.mms.fpi.mms_get_fpi_dist import mms_get_fpi_dist @@ -27,6 +28,8 @@ def mms_part_slice2d(trange=None, species=None, rotation='xy', custom_rotation=None, + slice_x=None, + slice_norm=None, subtract_bulk=False, xrange=None, yrange=None, @@ -34,6 +37,7 @@ def mms_part_slice2d(trange=None, resolution=None, interpolation='geometric', contours=False, + title=None, smooth=None, save_jpeg=None, save_png=None, @@ -43,6 +47,7 @@ def mms_part_slice2d(trange=None, plotsize=10, dpi=None, return_slice=False, + cmap=None, display=True): """ This routine creates 2D slices of 3D distribution function data from the FPI and HPCA instruments. @@ -119,6 +124,17 @@ def mms_part_slice2d(trange=None, If the time window covers multiple matrices they will be averaged. This is applied before other transformations + slice_x: str or np.ndarray + Specifies the slice plane's x-axis within the coordinates + specified by custom_rotation and rotation. If not specified, the given + coordinate's x-axis will be used. If slice_x is not perpendicular to the + normal, its projection onto the slice plane will be used. + + slice_norm: str or np.ndarray + Specifies the slice plane's normal within the coordinates + specified by custom_rotation and rotation; if not specified, the given + coordinate's z-axis will be used (slice along by x-y plane in those coordinates). + energy: bool Flag to plot data against energy (in eV) instead of velocity. @@ -184,7 +200,7 @@ def mms_part_slice2d(trange=None, if trange is None: if time is None: - print('Please specify a time or time range over which to compute the slice.') + logging.error('Please specify a time or time range over which to compute the slice.') return trange_data = [time_double(time)-60, time_double(time)+60] else: @@ -235,7 +251,7 @@ def mms_part_slice2d(trange=None, dists = mms_get_hpca_dist('mms' + probe + '_hpca_' + species + '_phase_space_density', species=species, probe=probe, data_rate=data_rate) else: - print('Unknown instrument: ' + instrument + '; valid options: fpi, hpca') + logging.error('Unknown instrument: ' + instrument + '; valid options: fpi, hpca') return bfield = None @@ -257,11 +273,11 @@ def mms_part_slice2d(trange=None, mag_data=bfield, vel_data=vbulk, rotation=rotation, resolution=resolution, erange=erange, energy=energy, log=log, custom_rotation=custom_rotation, subtract_bulk=subtract_bulk, interpolation=interpolation, thetarange=thetarange, zdirrange=zdirrange, smooth=smooth, - average_angle=average_angle, sum_angle=sum_angle) + average_angle=average_angle, sum_angle=sum_angle, slice_x=slice_x, slice_z=slice_norm) if return_slice: return the_slice plot(the_slice, xrange=xrange, yrange=yrange, zrange=zrange, save_png=save_png, save_svg=save_svg, save_pdf=save_pdf, save_eps=save_eps, save_jpeg=save_jpeg, display=display, dpi=dpi, plotsize=plotsize, - contours=contours) + contours=contours, colormap=cmap, title=title) diff --git a/pyspedas/mms/particles/mms_pgs_clean_data.py b/pyspedas/mms/particles/mms_pgs_clean_data.py index 0d7fdbbc..1036f635 100644 --- a/pyspedas/mms/particles/mms_pgs_clean_data.py +++ b/pyspedas/mms/particles/mms_pgs_clean_data.py @@ -1,7 +1,7 @@ - import numpy as np from scipy.ndimage.interpolation import shift + def mms_pgs_clean_data(data_in): """ Sanitize MMS FPI/HPCA data structures for use with @@ -26,4 +26,4 @@ def mms_pgs_clean_data(data_in): # just have to make a guess at the edges(top edge) output['denergy'][-1, :] = de[-1, :] - return output \ No newline at end of file + return output diff --git a/pyspedas/mms/particles/mms_pgs_clean_support.py b/pyspedas/mms/particles/mms_pgs_clean_support.py index 0630523c..8c5b6b3d 100644 --- a/pyspedas/mms/particles/mms_pgs_clean_support.py +++ b/pyspedas/mms/particles/mms_pgs_clean_support.py @@ -1,50 +1,49 @@ - from pyspedas import tinterpol from pytplot import get_data + def mms_pgs_clean_support(times, mag_name=None, vel_name=None, sc_pot_name=None): - """ - Transform and/or interpolate support data to match the particle data + """ + Transform and/or interpolate support data to match the particle data - Parameters + Parameters ---------- - mag_name: str - Tplot variable containing magnetic field data + mag_name: str + Tplot variable containing magnetic field data - vel_name: str - Tplot variable containing bulk velocity data + vel_name: str + Tplot variable containing bulk velocity data - sc_pot_name: str - Tplot variable containing spacecraft potential data + sc_pot_name: str + Tplot variable containing spacecraft potential data - Returns + Returns ---------- - Tuple containing interpolated (magnetic field, velocity, spacecraft potential) - """ - - out_mag = None - out_vel = None - out_scpot = None - - if mag_name is not None: - mag_temp = mag_name + '_pgs_temp' - tinterpol(mag_name, times, newname=mag_temp) - interpolated_bfield = get_data(mag_temp) - if interpolated_bfield is not None: - out_mag = interpolated_bfield.y - - if vel_name is not None: - vel_temp = vel_name + '_pgs_temp' - tinterpol(vel_name, times, newname=vel_temp) - interpolated_vel = get_data(vel_temp) - if interpolated_vel is not None: - out_vel = interpolated_vel.y - - if sc_pot_name is not None: - scpot_temp = sc_pot_name + '_pgs_temp' - tinterpol(sc_pot_name, times, newname=scpot_temp) - interpolated_scpot = get_data(scpot_temp) - if interpolated_scpot is not None: - out_scpot = interpolated_scpot.y - - return (out_mag, out_vel, out_scpot) \ No newline at end of file + Tuple containing interpolated (magnetic field, velocity, spacecraft potential) + """ + out_mag = None + out_vel = None + out_scpot = None + + if mag_name is not None: + mag_temp = mag_name + '_pgs_temp' + tinterpol(mag_name, times, newname=mag_temp) + interpolated_bfield = get_data(mag_temp) + if interpolated_bfield is not None: + out_mag = interpolated_bfield.y + + if vel_name is not None: + vel_temp = vel_name + '_pgs_temp' + tinterpol(vel_name, times, newname=vel_temp) + interpolated_vel = get_data(vel_temp) + if interpolated_vel is not None: + out_vel = interpolated_vel.y + + if sc_pot_name is not None: + scpot_temp = sc_pot_name + '_pgs_temp' + tinterpol(sc_pot_name, times, newname=scpot_temp) + interpolated_scpot = get_data(scpot_temp) + if interpolated_scpot is not None: + out_scpot = interpolated_scpot.y + + return out_mag, out_vel, out_scpot diff --git a/pyspedas/mms/particles/mms_pgs_make_e_spec.py b/pyspedas/mms/particles/mms_pgs_make_e_spec.py index 4ea90509..c562a51a 100644 --- a/pyspedas/mms/particles/mms_pgs_make_e_spec.py +++ b/pyspedas/mms/particles/mms_pgs_make_e_spec.py @@ -1,5 +1,3 @@ - - import numpy as np # use nansum from bottleneck if it's installed, otherwise use the numpy one @@ -9,8 +7,31 @@ except ImportError: nansum = np.nansum + def mms_pgs_make_e_spec(data_in): + """ + Builds an energy spectrogram from a simplified particle data structure. + + Parameters + ---------- + data_in : dict + The input data structure. + + Returns + ------- + outtable : ndarray, shape (ny,) + The energy bins. + ave : ndarray, shape (ny,) + The spectrogram. + Notes + ----- + - Each energy bin in the output spectrogram (`ave`) is the weighted average + of the corresponding bins in the input data (`data_in`). + - The input data is sanitized by zeroing inactive bins to ensure areas with + no data are represented as NaN. + - The function uses the first energy table for rebinning the data. + """ data = data_in.copy() # zero inactive bins to ensure areas with no data are represented as NaN @@ -37,7 +58,7 @@ def mms_pgs_make_e_spec(data_in): else: ave = outbins/data['bins'] - return (outtable, ave) + return outtable, ave def find_nearest_neighbor(table, item): diff --git a/pyspedas/mms/particles/mms_pgs_make_fac.py b/pyspedas/mms/particles/mms_pgs_make_fac.py index 1b89a957..aff539a8 100644 --- a/pyspedas/mms/particles/mms_pgs_make_fac.py +++ b/pyspedas/mms/particles/mms_pgs_make_fac.py @@ -1,18 +1,16 @@ - import logging import numpy as np - -from pyspedas.utilities.data_exists import data_exists +from pytplot import data_exists from pyspedas.cotrans.cotrans import cotrans -from pyspedas.analysis.tnormalize import tnormalize -from pyspedas.analysis.tcrossp import tcrossp +from pytplot import tnormalize +from pytplot import tcrossp from pyspedas.analysis.tinterpol import tinterpol - from pytplot import get_data, store_data logging.captureWarnings(True) logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) + def mms_pgs_xgse(mag_temp, pos_temp): """ Generates the 'xgse' transformation matrix @@ -29,7 +27,8 @@ def mms_pgs_xgse(mag_temp, pos_temp): y_basis = tnormalize(y_basis, return_data=True) x_basis = tcrossp(y_basis, z_basis, return_data=True) - return (x_basis, y_basis, z_basis) + return x_basis, y_basis, z_basis + def mms_pgs_phigeo(mag_temp, pos_temp): """ @@ -58,7 +57,8 @@ def mms_pgs_phigeo(mag_temp, pos_temp): x_basis = tnormalize(x_basis, return_data=True) y_basis = tcrossp(z_basis, x_basis, return_data=True) - return (x_basis, y_basis, z_basis) + return x_basis, y_basis, z_basis + def mms_pgs_mphigeo(mag_temp, pos_temp): """ @@ -88,7 +88,7 @@ def mms_pgs_mphigeo(mag_temp, pos_temp): x_basis = tnormalize(x_basis, return_data=True) y_basis = tcrossp(z_basis, x_basis, return_data=True) - return (x_basis, y_basis, z_basis) + return x_basis, y_basis, z_basis def mms_pgs_make_fac(times, mag_tvar_in, pos_tvar_in, fac_type='mphigeo'): @@ -132,4 +132,4 @@ def mms_pgs_make_fac(times, mag_tvar_in, pos_tvar_in, fac_type='mphigeo'): fac_output[:, 1, :] = basis[1] fac_output[:, 2, :] = basis[2] - return fac_output \ No newline at end of file + return fac_output diff --git a/pyspedas/mms/particles/mms_pgs_make_phi_spec.py b/pyspedas/mms/particles/mms_pgs_make_phi_spec.py index 409d5309..b9da1440 100644 --- a/pyspedas/mms/particles/mms_pgs_make_phi_spec.py +++ b/pyspedas/mms/particles/mms_pgs_make_phi_spec.py @@ -1,4 +1,3 @@ - import numpy as np # use nansum from bottleneck if it's installed, otherwise use the numpy one @@ -8,8 +7,32 @@ except ImportError: nansum = np.nansum -def mms_pgs_make_phi_spec(data_in, resolution=32): +def mms_pgs_make_phi_spec(data_in, resolution=32): + """ + Builds phi (longitudinal) spectrogram from a sanitized particle data structure. + + Parameters + ---------- + data_in : dict + The sanitized particle data structure containing 'phi', 'data', and 'bins' arrays. + resolution : int, optional + The number of bins to divide the 360 degrees of phi into. Default is 32. + + Returns + ------- + y : array + The bin centers for the phi spectrogram. + ave : array + The phi spectrogram with shape (n_phi,). + + Notes + ----- + This function concatenates the sample's data to the `spec` variable. Both + the spectrogram `spec` and the y-axis `yaxis` will be initialized if not set. + The y-axis will remain a single dimension until a change is detected in the data, + at which point it will be expanded to two dimensions. + """ data = data_in.copy() n_phi = resolution @@ -30,8 +53,10 @@ def mms_pgs_make_phi_spec(data_in, resolution=32): for bin_idx in range(0, len(outbins)-1): this_bin = np.argwhere((phi_flat >= outbins[bin_idx]) & (phi_flat < outbins[bin_idx+1])) if len(this_bin) > 0: - ave[bin_idx] += nansum(data_flat[this_bin])/nansum(bins_flat[this_bin]) + bins = nansum(bins_flat[this_bin]) + if bins != 0.0: + ave[bin_idx] += nansum(data_flat[this_bin])/bins y = outbins[0:n_phi]+0.5*(outbins[1::]-outbins[0:n_phi]) - return (y, ave) + return y, ave diff --git a/pyspedas/mms/particles/mms_pgs_make_theta_spec.py b/pyspedas/mms/particles/mms_pgs_make_theta_spec.py index a6079bf8..15719769 100644 --- a/pyspedas/mms/particles/mms_pgs_make_theta_spec.py +++ b/pyspedas/mms/particles/mms_pgs_make_theta_spec.py @@ -1,5 +1,3 @@ - - import numpy as np # use nansum from bottleneck if it's installed, otherwise use the numpy one @@ -9,7 +7,27 @@ except ImportError: nansum = np.nansum + def mms_pgs_make_theta_spec(data_in, resolution=16, colatitude=False): + """ + Builds a theta (latitudinal) spectrogram from a simplified particle data structure. + + Parameters + ---------- + data_in : dict + A dictionary containing the particle data, including 'data', 'theta', and 'bins' keys. + resolution : int, optional + The number of bins to use for the spectrogram. Defaults to 16. + colatitude : bool, optional + Set to True if the input data is in colatitude rather than latitude. + + Returns + ------- + y : numpy.ndarray + The y axis of the spectrogram. + ave : numpy.ndarray + The spectrogram. + """ data = data_in.copy() n_theta = resolution @@ -34,7 +52,9 @@ def mms_pgs_make_theta_spec(data_in, resolution=16, colatitude=False): for bin_idx in range(0, len(outbins)-1): this_bin = np.argwhere((theta_flat >= outbins[bin_idx]) & (theta_flat < outbins[bin_idx+1])) if len(this_bin) > 0: - ave[bin_idx] += nansum(data_flat[this_bin])/nansum(bins_flat[this_bin]) + bins = nansum(bins_flat[this_bin]) + if bins != 0.0: + ave[bin_idx] += nansum(data_flat[this_bin])/bins if not colatitude: data['theta'] = 90.0-data['theta'] @@ -42,4 +62,4 @@ def mms_pgs_make_theta_spec(data_in, resolution=16, colatitude=False): y = outbins[0:n_theta]+0.5*(outbins[1::]-outbins[0:n_theta]) - return (y, ave) \ No newline at end of file + return y, ave diff --git a/pyspedas/mms/particles/mms_pgs_split_hpca.py b/pyspedas/mms/particles/mms_pgs_split_hpca.py index 99134f74..d7feab41 100644 --- a/pyspedas/mms/particles/mms_pgs_split_hpca.py +++ b/pyspedas/mms/particles/mms_pgs_split_hpca.py @@ -1,6 +1,6 @@ - import numpy as np + def mms_pgs_split_hpca(data_in): """ Split hpca elevation bins so that dphi == dtheta. @@ -16,4 +16,4 @@ def mms_pgs_split_hpca(data_in): clean_data['theta'] = np.concatenate((clean_data['theta']+0.25*clean_data['dtheta'], clean_data['theta']-0.25*clean_data['dtheta']), axis=1) clean_data['dtheta'] = np.concatenate((clean_data['dtheta']/2.0, clean_data['dtheta']/2.0), axis=1) - return clean_data \ No newline at end of file + return clean_data diff --git a/pyspedas/mms/particles/moka_mms_clean_data.py b/pyspedas/mms/particles/moka_mms_clean_data.py new file mode 100644 index 00000000..7e0bc7a5 --- /dev/null +++ b/pyspedas/mms/particles/moka_mms_clean_data.py @@ -0,0 +1,74 @@ +import logging +import numpy as np +from scipy.ndimage.interpolation import shift +from pyspedas.mms.particles.mms_convert_flux_units import mms_convert_flux_units + + +def moka_mms_clean_data(data_in, units=None, disterr=None): + """ + This is a translation of Mitsuo Oka's IDL routine: moka_mms_clean_data + """ + if units is None: + logging.error('Units must be specified.') + return + + data = mms_convert_flux_units(data_in, units=units) + data_psd = mms_convert_flux_units(data_in, units='df_km') + + output = {'charge': data_in['charge'], 'mass': data_in['mass'], + 'data': np.reshape(data_in['data'], [data_in['data'].shape[0]*data_in['data'].shape[1]*data_in['data'].shape[2]], order='F'), + 'bins': np.reshape(data_in['bins'], [data_in['data'].shape[0]*data_in['data'].shape[1]*data_in['data'].shape[2]], order='F'), + 'theta': np.reshape(data_in['theta'], [data_in['data'].shape[0]*data_in['data'].shape[1]*data_in['data'].shape[2]], order='F'), + 'energy': np.reshape(data_in['energy'], [data_in['data'].shape[0], data_in['data'].shape[1]*data_in['data'].shape[2]], order='F'), + 'phi': np.reshape(data_in['phi'], [data_in['data'].shape[0]*data_in['data'].shape[1]*data_in['data'].shape[2]], order='F'), + 'dtheta': np.reshape(data_in['dtheta'], [data_in['data'].shape[0]*data_in['data'].shape[1]*data_in['data'].shape[2]], order='F'), + 'dphi': np.reshape(data_in['dphi'], [data_in['data'].shape[0]*data_in['data'].shape[1]*data_in['data'].shape[2]], order='F'), + 'denergy': np.reshape(data_in['denergy'], [data_in['data'].shape[0]*data_in['data'].shape[1]*data_in['data'].shape[2]], order='F')} + + de = output['energy'] - shift(output['energy'], [1, 0]) + output['denergy'] = shift((de+shift(de, [1, 0]))/2.0, -1) + # just have to make a guess at the edges(bottom edge) + output['denergy'][0, :] = de[1, :] + # just have to make a guess at the edges(top edge) + output['denergy'][-1, :] = de[-1, :] + + dims = data['data'].shape + imax = dims[0]*dims[1]*dims[2] + + output['energy'] = np.reshape(output['energy'], [output['energy'].shape[0] * output['energy'].shape[1]], + order='F') + output['denergy'] = np.reshape(output['denergy'], [output['denergy'].shape[0] * output['denergy'].shape[1]], + order='F') + + # Error + psd = output['data'] + if disterr is None: + err = np.zeros(imax) + cnt = np.zeros(imax) + else: + data_err = mms_convert_flux_units(disterr, units='df_km') + err = data_err['data'] + cnt = (psd/err)**2 # actual counts recovered + + # NaN + dat = output['data'] + bins = output['bins'] + idx = np.argwhere(bins == False) + if len(idx) > 0: + dat[idx] = 0.0 + psd[idx] = 0.0 + err[idx] = 0.0 + cnt[idx] = 0.0 + + dat = np.nan_to_num(dat, nan=0.0) + psd = np.nan_to_num(psd, nan=0.0) + err = np.nan_to_num(err, nan=0.0) + cnt = np.nan_to_num(cnt, nan=0.0) + + output['data_dat'] = dat + output['data_psd'] = psd + output['data_err'] = err + output['data_cnt'] = cnt + output['pa'] = np.zeros(imax) + + return output diff --git a/pyspedas/mms/print_vars.py b/pyspedas/mms/print_vars.py index 9558b2ec..5371215c 100644 --- a/pyspedas/mms/print_vars.py +++ b/pyspedas/mms/print_vars.py @@ -1,6 +1,7 @@ - +import logging from pyspedas.mms.mms_config import CONFIG + # the following decorator prints the loaded tplot variables after each load routine call def print_vars(func): def wrapper(*args, **kwargs): @@ -8,11 +9,11 @@ def wrapper(*args, **kwargs): if variables is None: return None if kwargs.get('available') or CONFIG['download_only']: - print('Available files:') + logging.info('Available files:') else: - print('Loaded variables:') + logging.info('Loaded variables:') for var in variables: - print(var) + logging.info(var) return variables wrapper.__name__ = func.__name__ wrapper.__doc__ = func.__doc__ diff --git a/pyspedas/mms/scm/mms_scm_set_metadata.py b/pyspedas/mms/scm/mms_scm_set_metadata.py index 1cfa3391..f9e3e8e9 100644 --- a/pyspedas/mms/scm/mms_scm_set_metadata.py +++ b/pyspedas/mms/scm/mms_scm_set_metadata.py @@ -1,5 +1,6 @@ from pytplot import options + def mms_scm_set_metadata(tnames, probe, datatype, coord, suffix=''): """ This function updates the metadata for the SCM data products @@ -28,18 +29,14 @@ def mms_scm_set_metadata(tnames, probe, datatype, coord, suffix=''): for tvar in tnames: if tvar == 'mms'+probe+'_scm_'+datatype+'_'+coord+suffix: - options(tvar, 'color', ['b', 'g', 'r']) options(tvar, 'ytitle', 'MMS'+probe+' '+datatype+' ('+coord+')') options(tvar, 'legend_names', ['1', '2', '3']) elif tvar == 'mms'+probe+'_scm_acb_'+coord+'_scsrvy_srvy_l2'+suffix: - options(tvar, 'color', ['b', 'g', 'r']) options(tvar, 'legend_names', ['Bx', 'By', 'Bz']) options(tvar, 'ytitle', 'MMS'+probe+' SCM '+datatype) elif tvar == 'mms'+probe+'_scm_acb_'+coord+'_scb_brst_l2'+suffix: - options(tvar, 'color', ['b', 'g', 'r']) options(tvar, 'legend_names', ['Bx', 'By', 'Bz']) options(tvar, 'ytitle', 'MMS'+probe+' SCM '+datatype) elif tvar == 'mms'+probe+'_scm_acb_'+coord+'_schb_brst_l2'+suffix: - options(tvar, 'color', ['b', 'g', 'r']) options(tvar, 'legend_names', ['Bx', 'By', 'Bz']) options(tvar, 'ytitle', 'MMS'+probe+' SCM '+datatype) diff --git a/pyspedas/mms/scm/scm.py b/pyspedas/mms/scm/scm.py index fde95d75..e1e09a12 100644 --- a/pyspedas/mms/scm/scm.py +++ b/pyspedas/mms/scm/scm.py @@ -1,21 +1,21 @@ - from pyspedas.mms.mms_load_data import mms_load_data from pyspedas.mms.scm.mms_scm_set_metadata import mms_scm_set_metadata from pyspedas.mms.print_vars import print_vars from pyspedas.mms.mms_config import CONFIG + @print_vars def mms_load_scm(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy', level='l2', datatype='', varformat=None, varnames=[], suffix='', get_support_data=False, time_clip=True, no_update=False, available=False, notplot=False, latest_version=False, major_version=False, min_version=None, cdf_version=None, spdf=False, always_prompt=False): """ - This function loads SCM data into tplot variables + Load data from the Search Coil Magnetometer (SCM) Parameters ---------- trange : list of str - time range of interest [starttime, endtime] with the format + time range of interest [start time, end time] with the format 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] @@ -56,11 +56,11 @@ def mms_load_scm(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy notplot: bool If True, then data are returned in a hash table instead of being stored in tplot variables (useful for debugging, and - access to multi-dimensional data products) + access to multidimensional data products) available: bool If True, simply return the available data files (without downloading) - for the requested paramters + for the requested parameters no_update: bool Set this flag to preserve the original data. if not set and newer @@ -80,12 +80,13 @@ def mms_load_scm(trange=['2015-10-16', '2015-10-17'], probe='1', data_rate='srvy always_prompt: bool Set this keyword to always prompt for the user's username and password; - useful if you accidently save an incorrect password, or if your SDC password has changed + useful if you accidentally save an incorrect password, or if your SDC password has changed spdf: bool If True, download the data from the SPDF instead of the SDC - Returns: + Returns + --------- List of tplot variables created. """ diff --git a/pyspedas/mms/spd_mms_load_bss.py b/pyspedas/mms/spd_mms_load_bss.py index 19d60fe7..f0585c76 100644 --- a/pyspedas/mms/spd_mms_load_bss.py +++ b/pyspedas/mms/spd_mms_load_bss.py @@ -1,9 +1,10 @@ - +import logging from pyspedas import time_double from pyspedas.mms.mms_load_fast_segments import mms_load_fast_segments from pyspedas.mms.mms_load_sroi_segments import mms_load_sroi_segments from pyspedas.mms.mms_load_brst_segments import mms_load_brst_segments + def spd_mms_load_bss(trange=['2015-10-16', '2015-10-17'], datatype=['fast', 'burst'], include_labels=False, probe='1', nodownload=False): """ @@ -46,8 +47,8 @@ def spd_mms_load_bss(trange=['2015-10-16', '2015-10-17'], datatype=['fast', 'bur elif dtype == 'burst': out = mms_load_brst_segments(trange=trange) else: - print('Unsupported datatype: ' + dtype + '; valid options: "fast" and "burst"') + logging.error('Unsupported datatype: ' + dtype + '; valid options: "fast" and "burst"') continue if out is None: - print('Problem loading segments for ' + dtype) + logging.error('Problem loading segments for ' + dtype) diff --git a/pyspedas/mms/tests/cotrans.py b/pyspedas/mms/tests/cotrans.py index 8787ba79..90f8b44c 100644 --- a/pyspedas/mms/tests/cotrans.py +++ b/pyspedas/mms/tests/cotrans.py @@ -1,7 +1,9 @@ import unittest import pyspedas -from pyspedas.utilities.data_exists import data_exists +from pytplot import data_exists, tplot_rename, set_coords from pyspedas.mms.cotrans.mms_qcotrans import mms_qcotrans +from pyspedas.mms.cotrans.mms_cotrans_lmn import mms_cotrans_lmn + class CotransTestCases(unittest.TestCase): def test_qcotrans_sm_to_gse(self): @@ -10,6 +12,57 @@ def test_qcotrans_sm_to_gse(self): mms_qcotrans('mms1_mec_r_sm', 'mms1_mec_r_sm_2gse', out_coord='gse') self.assertTrue(data_exists('mms1_mec_v_sm_2gse')) self.assertTrue(data_exists('mms1_mec_r_sm_2gse')) + mms_qcotrans(['mms1_mec_r_sm', 'mms1_mec_v_sm'], ['mms1_mec_r_sm_2gse', 'mms1_mec_v_sm_2gse'], out_coord=['gse', 'gse']) + + def test_qcotrans_fgm_sm_to_gse(self): + pyspedas.mms.mec() + pyspedas.mms.fgm() + mms_qcotrans('mms1_fgm_b_gsm_srvy_l2_bvec', 'mms1_fgm_b_gsm_brst_l2_bvec_2gse', probe=1, out_coord='gse') + self.assertTrue(data_exists('mms1_fgm_b_gsm_brst_l2_bvec_2gse')) + + def test_qcotrans_errors(self): + pyspedas.mms.mec() + # in_name not specified + mms_qcotrans(out_name='mms1_mec_v_sm_2gse', out_coord='gse') + # out_name not specified + mms_qcotrans(in_name='mms1_mec_v_sm_2gse', out_coord='gse') + # in_coord not specified, and not set in metadata + set_coords('mms1_mec_v_sm', '') + mms_qcotrans(in_name='mms1_mec_v_sm', out_name='mms1_mec_v_sm_2gse', out_coord='gse') + # invalid in_coord + set_coords('mms1_mec_v_sm', '') + mms_qcotrans(in_name='mms1_mec_v_sm', out_name='mms1_mec_v_sm_2gse2', out_coord='gse') + # invalid out_coord + set_coords('mms1_mec_v_sm', 'sm') + mms_qcotrans(in_name='mms1_mec_v_sm', out_name='mms1_mec_v_sm_2gse2', out_coord='gse2') + # trouble extracting probe from var name + tplot_rename('mms1_mec_v_sm', 'mmsx_mec_v_sm') + mms_qcotrans(in_name='mmsx_mec_v_sm', out_name='mms1_mec_v_sm_2gse2', out_coord='gse2') + tplot_rename('mms1_mec_v_sm', 'smvar') + mms_qcotrans(in_name='smvar', out_name='mms1_mec_v_sm_2gse', out_coord='gse') + # should warn when you're transforming to ssl/bcs coordinates + mms_qcotrans(out_name='mms1_mec_v_sm_2ssl', out_coord='ssl') + mms_qcotrans(out_name='mms1_mec_v_sm_2bcs', out_coord='bcs') + # unsupported coordinate system + mms_qcotrans(in_name='mms1_mec_v_sm', out_name='mms1_mec_v_sm_2gse', in_coord='unsupported', out_coord='gse') + + + def test_lmn(self): + pyspedas.mms.fgm(trange=['2015-10-16/13:00', '2015-10-16/13:10'], data_rate='brst') + mms_cotrans_lmn('mms1_fgm_b_gsm_brst_l2_bvec', 'mms1_fgm_b_gsm_brst_l2_bvec_2lmn') + self.assertTrue(data_exists('mms1_fgm_b_gsm_brst_l2_bvec_2lmn')) + + def test_lmn_errors(self): + pyspedas.mms.fgm(trange=['2015-10-16/13:00', '2015-10-16/13:10'], data_rate='brst') + # invalid variable name + mms_cotrans_lmn('mms1_fgm_b_gsm_brst_l2_bvec2', 'mms1_fgm_b_gsm_brst_l2_bvec_2lmn') + # invalid coordinate system + set_coords('mms1_fgm_b_gsm_brst_l2_bvec', 'gse2') + mms_cotrans_lmn('mms1_fgm_b_gsm_brst_l2_bvec', 'mms1_fgm_b_gsm_brst_l2_bvec_2lmn') + # problem extracting probe from variable name + tplot_rename('mms1_fgm_b_gsm_brst_l2_bvec', 'mmsx_fgm_b_gsm_brst_l2_bvec') + mms_cotrans_lmn('mmsx_fgm_b_gsm_brst_l2_bvec', 'mms1_fgm_b_gsm_brst_l2_bvec_2lmn') + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/mms/tests/curlometer.py b/pyspedas/mms/tests/curlometer.py index d5a544a1..e50447c6 100644 --- a/pyspedas/mms/tests/curlometer.py +++ b/pyspedas/mms/tests/curlometer.py @@ -1,7 +1,7 @@ import unittest import pyspedas -from pyspedas.utilities.data_exists import data_exists +from pytplot import data_exists from pyspedas.mms.fgm.mms_lingradest import mms_lingradest class CurlTestCases(unittest.TestCase): diff --git a/pyspedas/mms/tests/data_rate_segments.py b/pyspedas/mms/tests/data_rate_segments.py index 09279aee..b7de0491 100644 --- a/pyspedas/mms/tests/data_rate_segments.py +++ b/pyspedas/mms/tests/data_rate_segments.py @@ -1,11 +1,11 @@ - import unittest - from pyspedas.mms.spd_mms_load_bss import spd_mms_load_bss -from pyspedas.mms.mms_load_sroi_segments import mms_load_sroi_segments +from pyspedas.mms.mms_load_sroi_segments import mms_load_sroi_segments, get_mms_srois from pyspedas.mms.mms_load_fast_segments import mms_load_fast_segments from pyspedas.mms.mms_load_brst_segments import mms_load_brst_segments -from pyspedas.utilities.data_exists import data_exists +from pyspedas.mms.mms_update_brst_intervals import mms_update_brst_intervals +from pytplot import data_exists + class SegmentTestCases(unittest.TestCase): def test_sroi(self): @@ -14,18 +14,46 @@ def test_sroi(self): self.assertTrue(len(sroi[0]) == 28) self.assertTrue(sroi[0][0] == 1569849345.0) self.assertTrue(sroi[1][0] == 1569923029.0) + # error, no trange specified + sroi = mms_load_sroi_segments() + # error, start time not specified + none = get_mms_srois(end_time=1569849345.0) + # error, end time not specified + none = get_mms_srois(start_time=1569849345.0) + # error, probe not specified + none = get_mms_srois(start_time=1569849345.0, end_time=1569849345.0) + def test_brst(self): brst = mms_load_brst_segments(trange=['2015-10-16', '2015-10-17']) self.assertTrue(len(brst[0]) == 53) self.assertTrue(brst[0][0] == 1444975174.0) self.assertTrue(brst[1][0] == 1444975244.0) self.assertTrue(data_exists('mms_bss_burst')) + # error, no trange specified + brst = mms_load_brst_segments() + # download from spedas.org + brst = mms_load_brst_segments(trange=['2015-10-16', '2015-10-17'], sdc=False, suffix='_sdc') + self.assertTrue(len(brst[0]) == 53) + self.assertTrue(brst[0][0] == 1444975174.0) + self.assertTrue(brst[1][0] == 1444975244.0) + self.assertTrue(data_exists('mms_bss_burst_sdc')) + + def test_update_brst_intervals(self): + intervals = mms_update_brst_intervals() + self.assertTrue('start_times' in intervals) + self.assertTrue('end_times' in intervals) + self.assertTrue(intervals['start_times'][0] == 1430876725.0) + self.assertTrue(intervals['end_times'][0] == 1430879715.0) + def test_fast(self): fast = mms_load_fast_segments(trange=['2015-10-01', '2015-11-01']) self.assertTrue(data_exists('mms_bss_fast')) self.assertTrue(len(fast[0]) == 35) self.assertTrue(fast[0][0] == 1443504404.0) self.assertTrue(fast[1][0] == 1443554774.0) + # error, no trange specified + none = mms_load_fast_segments() + def test_spd_mms_load_bss(self): spd_mms_load_bss(trange=['2015-10-01', '2015-11-01']) self.assertTrue(data_exists('mms_bss_fast')) @@ -34,5 +62,10 @@ def test_spd_mms_load_bss(self): self.assertTrue(data_exists('mms_bss_burst')) self.assertTrue(data_exists('mms1_bss_sroi')) + def test_spd_mms_load_bss_err(self): + spd_mms_load_bss(trange=['2015-10-01', '2015-11-01'], datatype='brst', include_labels=True) + self.assertTrue(~data_exists('mms_bss_fast')) + + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/mms/tests/eis.py b/pyspedas/mms/tests/eis.py index fa5420b8..6bb64a86 100644 --- a/pyspedas/mms/tests/eis.py +++ b/pyspedas/mms/tests/eis.py @@ -1,9 +1,18 @@ import unittest -import numpy as np from pyspedas import mms_load_eis, mms_eis_pad -from pyspedas.utilities.data_exists import data_exists +from pyspedas.mms.eis.mms_eis_omni import mms_eis_omni +from pytplot import data_exists +from pyspedas.mms.eis.mms_eis_spec_combine_sc import mms_eis_spec_combine_sc +from pytplot import tplot class EISTestCases(unittest.TestCase): + def test_electronenergy(self): + mms_load_eis(datatype='electronenergy') + self.assertTrue(data_exists('mms1_epd_eis_srvy_l2_electronenergy_electron_flux_omni')) + self.assertTrue(data_exists('mms1_epd_eis_srvy_l2_electronenergy_electron_flux_omni_spin')) + tplot('mms1_epd_eis_srvy_l2_electronenergy_electron_flux_omni', display=False) + tplot('mms1_epd_eis_srvy_l2_electronenergy_electron_flux_omni_spin', display=False) + def test_pad_extof_srvy(self): mms_load_eis(datatype='extof') mms_eis_pad(datatype='extof') @@ -13,44 +22,72 @@ def test_pad_extof_srvy(self): self.assertTrue(data_exists('mms1_epd_eis_srvy_l2_extof_proton_flux_omni')) self.assertTrue(data_exists('mms1_epd_eis_srvy_l2_extof_oxygen_energy_range')) self.assertTrue(data_exists('mms1_epd_eis_srvy_l2_extof_proton_energy_range')) + tplot('mms1_epd_eis_srvy_l2_extof_proton_flux_omni_spin', display=False) + tplot('mms1_epd_eis_srvy_l2_extof_46-10489keV_proton_flux_omni_pad_spin', display=False) + tplot('mms1_epd_eis_srvy_l2_extof_46-10489keV_proton_flux_omni_pad', display=False) def test_pad_extof_srvy_probe(self): mms_load_eis(probe=4) - mms_eis_pad(probe=4) - self.assertTrue(data_exists('mms4_epd_eis_srvy_l2_extof_44-1315keV_proton_flux_omni_pad_spin')) - self.assertTrue(data_exists('mms4_epd_eis_srvy_l2_extof_44-1315keV_proton_flux_omni_pad')) - self.assertTrue(data_exists('mms4_epd_eis_srvy_l2_extof_proton_flux_omni_spin')) - self.assertTrue(data_exists('mms4_epd_eis_srvy_l2_extof_proton_flux_omni')) + mms_eis_omni(probe=4, data_units='cps') + mms_eis_omni(probe=4, data_units='counts') + mms_eis_pad(probe=4, data_units='cps') + self.assertTrue(data_exists('mms4_epd_eis_srvy_l2_extof_44-1315keV_proton_cps_omni_pad_spin')) + self.assertTrue(data_exists('mms4_epd_eis_srvy_l2_extof_44-1315keV_proton_cps_omni_pad')) + self.assertTrue(data_exists('mms4_epd_eis_srvy_l2_extof_proton_cps_omni')) self.assertTrue(data_exists('mms4_epd_eis_srvy_l2_extof_oxygen_energy_range')) self.assertTrue(data_exists('mms4_epd_eis_srvy_l2_extof_proton_energy_range')) + self.assertTrue(data_exists('mms4_epd_eis_srvy_l2_extof_proton_counts_omni')) + tplot('mms4_epd_eis_srvy_l2_extof_proton_counts_omni', display=False) + tplot('mms4_epd_eis_srvy_l2_extof_44-1315keV_proton_cps_omni_pad', display=False) + tplot('mms4_epd_eis_srvy_l2_extof_44-1315keV_proton_cps_omni_pad_spin', display=False) def test_pad_extof_brst(self): - mms_load_eis(probe=4, datatype='extof', data_rate='brst', trange=['2015-10-16/13:06', '2015-10-16/13:07']) + mms_load_eis(probe=4, datatype='extof', data_rate='brst', trange=['2022-03-03/07:05:00', '2022-03-03/07:08:00']) mms_eis_pad(probe=4, datatype='extof', data_rate='brst') - self.assertTrue(data_exists('mms4_epd_eis_brst_l2_extof_52-878keV_proton_flux_omni_pad_spin')) - self.assertTrue(data_exists('mms4_epd_eis_brst_l2_extof_52-878keV_proton_flux_omni_pad')) + self.assertTrue(data_exists('mms4_epd_eis_brst_l2_extof_52-866keV_proton_flux_omni_pad_spin')) + self.assertTrue(data_exists('mms4_epd_eis_brst_l2_extof_52-866keV_proton_flux_omni_pad')) self.assertTrue(data_exists('mms4_epd_eis_brst_l2_extof_proton_flux_omni')) self.assertTrue(data_exists('mms4_epd_eis_brst_l2_extof_proton_energy_range')) self.assertTrue(data_exists('mms4_epd_eis_brst_l2_extof_oxygen_energy_range')) + tplot('mms4_epd_eis_brst_l2_extof_52-866keV_proton_flux_omni_pad', display=False) + tplot('mms4_epd_eis_brst_l2_extof_52-866keV_proton_flux_omni_pad_spin', display=False) def test_load_phxtof_data(self): data = mms_load_eis(trange=['2015-10-16', '2015-10-16/01:00'], datatype='phxtof') self.assertTrue(data_exists('mms1_epd_eis_srvy_l2_phxtof_proton_flux_omni')) self.assertTrue(data_exists('mms1_epd_eis_srvy_l2_phxtof_proton_t5_energy_dminus')) self.assertTrue(data_exists('mms1_epd_eis_srvy_l2_phxtof_proton_t5_energy_dplus')) + tplot('mms1_epd_eis_srvy_l2_phxtof_proton_flux_omni', display=False) def test_load_phxtof_spdf(self): - data = mms_load_eis(trange=['2015-10-16/13:06', '2015-10-16/13:07'], datatype='phxtof', data_rate='brst', spdf=True) - self.assertTrue(data_exists('mms1_epd_eis_brst_l2_phxtof_proton_flux_omni')) - self.assertTrue(data_exists('mms1_epd_eis_brst_l2_phxtof_proton_t5_energy_dminus')) - self.assertTrue(data_exists('mms1_epd_eis_brst_l2_phxtof_proton_t5_energy_dplus')) + data = mms_load_eis(trange=['2015-10-16', '2015-10-16/01:00'], datatype='phxtof', spdf=True) + self.assertTrue(data_exists('mms1_epd_eis_srvy_l2_phxtof_proton_flux_omni')) + self.assertTrue(data_exists('mms1_epd_eis_srvy_l2_phxtof_proton_t5_energy_dminus')) + self.assertTrue(data_exists('mms1_epd_eis_srvy_l2_phxtof_proton_t5_energy_dplus')) + tplot('mms1_epd_eis_srvy_l2_phxtof_proton_flux_omni', display=False) def test_load_extof_suffix(self): - data = mms_load_eis(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', datatype='extof', suffix='_test') - self.assertTrue(data_exists('mms1_epd_eis_brst_l2_extof_proton_flux_omni_test')) - self.assertTrue(data_exists('mms1_epd_eis_brst_l2_extof_proton_t5_energy_dminus_test')) - self.assertTrue(data_exists('mms1_epd_eis_brst_l2_extof_proton_t5_energy_dminus_test')) + data = mms_load_eis(trange=['2015-10-16', '2015-10-17'], datatype='extof', suffix='_test') + self.assertTrue(data_exists('mms1_epd_eis_srvy_l2_extof_proton_flux_omni_test_spin')) + self.assertTrue(data_exists('mms1_epd_eis_srvy_l2_extof_proton_flux_omni_test')) + tplot('mms1_epd_eis_srvy_l2_extof_proton_flux_omni_test_spin', display=False) + tplot('mms1_epd_eis_srvy_l2_extof_proton_flux_omni_test', display=False) + + def test_combine_sc(self): + trange = ['2022-03-03/07:05:00', '2022-03-03/07:08:00'] + mms_load_eis(probe=[1, 2, 3, 4], datatype='extof', data_rate='brst', trange=trange) + mms_load_eis(probe=[1, 2, 3, 4], datatype='phxtof', data_rate='brst', trange=trange) + mms_eis_spec_combine_sc(datatype='extof', data_rate='brst') + mms_eis_spec_combine_sc(datatype='phxtof', data_rate='brst') + self.assertTrue(data_exists('mmsx_epd_eis_brst_l2_extof_proton_flux_omni')) + self.assertTrue(data_exists('mmsx_epd_eis_brst_l2_extof_proton_flux_omni_spin')) + self.assertTrue(data_exists('mmsx_epd_eis_brst_l2_phxtof_proton_flux_omni')) + self.assertTrue(data_exists('mmsx_epd_eis_brst_l2_phxtof_proton_flux_omni_spin')) + tplot('mmsx_epd_eis_brst_l2_extof_proton_flux_omni', display=False) + tplot('mmsx_epd_eis_brst_l2_extof_proton_flux_omni_spin', display=False) + tplot('mmsx_epd_eis_brst_l2_phxtof_proton_flux_omni', display=False) + tplot('mmsx_epd_eis_brst_l2_phxtof_proton_flux_omni_spin', display=False) if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/mms/tests/events.py b/pyspedas/mms/tests/events.py new file mode 100644 index 00000000..e5c2fb0d --- /dev/null +++ b/pyspedas/mms/tests/events.py @@ -0,0 +1,19 @@ +from pyspedas.mms.mms_events import mms_brst_events + +import unittest + + +class TestMMSBrstEvents(unittest.TestCase): + def test_trange(self): + # Test with trange option + trange = ['2015-10-16', '2015-10-17'] + mms_brst_events(trange=trange) + + def test_reload(self): + # Test with reload option + reload = True + mms_brst_events(reload=reload) + + +if __name__ == '__main__': + unittest.main() diff --git a/pyspedas/mms/tests/feeps.py b/pyspedas/mms/tests/feeps.py index 80919b93..40e6957c 100644 --- a/pyspedas/mms/tests/feeps.py +++ b/pyspedas/mms/tests/feeps.py @@ -2,10 +2,21 @@ from ..feeps.mms_read_feeps_sector_masks_csv import mms_read_feeps_sector_masks_csv from pyspedas import mms_load_feeps, mms_feeps_pad from pyspedas.mms.feeps.mms_feeps_gpd import mms_feeps_gpd -from ...utilities.data_exists import data_exists -from pytplot import del_data +from pytplot import del_data, tplot, data_exists, get + class FEEPSTestCases(unittest.TestCase): + def test_time_clip_regression(self): + # regression test for time clipping bug with spin-averaged spectra + mms_load_feeps(trange=['2015-12-15/10:00', '2015-12-15/12:00'], time_clip=True) + data = get('mms1_epd_feeps_srvy_l2_electron_intensity_omni_spin') + self.assertTrue(data.y[-1, :].sum() != 0.0) + + def test_feeps_sitl(self): + mms_load_feeps(datatype='electron', trange=['2016-11-23', '2016-11-24'], data_rate='srvy', probe=4, + level='sitl') + self.assertTrue(data_exists('mms4_epd_feeps_srvy_sitl_electron_intensity_omni')) + def test_feeps_pad_regression(self): """ This is a regression test for a bug caused by the v7 of the FEEPS CDF files @@ -14,6 +25,7 @@ def test_feeps_pad_regression(self): mms_load_feeps(datatype='electron', trange=['2016-11-23', '2016-11-24'], data_rate='srvy', probe=4) mms_feeps_pad(probe=4) self.assertTrue(data_exists('mms4_epd_feeps_srvy_l2_electron_intensity_70-600keV_pad')) + tplot('mms4_epd_feeps_srvy_l2_electron_intensity_70-600keV_pad', display=False) del_data('*') def test_gyrophase_angles(self): @@ -22,30 +34,49 @@ def test_gyrophase_angles(self): self.assertTrue(data_exists('mms3_epd_feeps_brst_l2_electron_intensity_61-77keV_gpd')) mms_feeps_gpd(probe='3', data_rate='brst') self.assertTrue(data_exists('mms3_epd_feeps_brst_l2_electron_intensity_50-500keV_gpd')) + tplot(['mms3_epd_feeps_brst_l2_electron_intensity_61-77keV_gpd', + 'mms3_epd_feeps_brst_l2_electron_intensity_50-500keV_gpd'], display=False) def test_pad_ions_brst(self): mms_load_feeps(probe=4, data_rate='brst', datatype='ion', trange=['2015-10-01/10:48:16', '2015-10-01/10:49:16']) mms_feeps_pad(probe=4, data_rate='brst', datatype='ion', angles_from_bfield=True) self.assertTrue(data_exists('mms4_epd_feeps_brst_l2_ion_intensity_70-600keV_pad')) self.assertTrue(data_exists('mms4_epd_feeps_brst_l2_ion_intensity_70-600keV_pad_spin')) + tplot(['mms4_epd_feeps_brst_l2_ion_intensity_70-600keV_pad', + 'mms4_epd_feeps_brst_l2_ion_intensity_70-600keV_pad_spin'], display=False) def test_pad_ions_srvy(self): mms_load_feeps(probe=4, datatype='ion', trange=['2015-10-01/10:48:16', '2015-10-01/10:49:16']) mms_feeps_pad(probe=4, datatype='ion') self.assertTrue(data_exists('mms4_epd_feeps_srvy_l2_ion_intensity_70-600keV_pad')) self.assertTrue(data_exists('mms4_epd_feeps_srvy_l2_ion_intensity_70-600keV_pad_spin')) + tplot(['mms4_epd_feeps_srvy_l2_ion_intensity_70-600keV_pad', + 'mms4_epd_feeps_srvy_l2_ion_intensity_70-600keV_pad_spin'], display=False) def test_pad_electrons_srvy(self): mms_load_feeps() mms_feeps_pad() self.assertTrue(data_exists('mms1_epd_feeps_srvy_l2_electron_intensity_70-600keV_pad_spin')) self.assertTrue(data_exists('mms1_epd_feeps_srvy_l2_electron_intensity_70-600keV_pad')) + tplot(['mms1_epd_feeps_srvy_l2_electron_intensity_70-600keV_pad', + 'mms1_epd_feeps_srvy_l2_electron_intensity_70-600keV_pad_spin'], display=False) def test_pad_electrons_srvy_probe(self): mms_load_feeps(probe=4) mms_feeps_pad(probe=4) self.assertTrue(data_exists('mms4_epd_feeps_srvy_l2_electron_intensity_70-600keV_pad_spin')) self.assertTrue(data_exists('mms4_epd_feeps_srvy_l2_electron_intensity_70-600keV_pad')) + tplot(['mms4_epd_feeps_srvy_l2_electron_intensity_70-600keV_pad', + 'mms4_epd_feeps_srvy_l2_electron_intensity_70-600keV_pad_spin'], display=False) + + def test_electron_srvy_after_aug17(self): + # there's a different set of active eyes after 16 August 2017 + # this test executes that code + mms_load_feeps(probe=4, trange=['2017-12-01', '2017-12-02']) + self.assertTrue(data_exists('mms4_epd_feeps_srvy_l2_electron_intensity_omni')) + self.assertTrue(data_exists('mms4_epd_feeps_srvy_l2_electron_intensity_omni_spin')) + tplot(['mms4_epd_feeps_srvy_l2_electron_intensity_omni', + 'mms4_epd_feeps_srvy_l2_electron_intensity_omni_spin'], display=False) def test_sector_masks(self): d = mms_read_feeps_sector_masks_csv(['2015-08-01', '2015-08-02']) @@ -71,5 +102,6 @@ def test_sector_masks(self): self.assertTrue(d['mms2imaskt9'] == [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 53, 54, 60, 61, 62, 63]) self.assertTrue(d['mms1imaskb6'] == [40, 41, 42, 49, 50, 51, 52, 53, 54, 57, 58]) + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/mms/tests/fpi_tests.py b/pyspedas/mms/tests/fpi_tests.py index ae16ea56..77257c8d 100644 --- a/pyspedas/mms/tests/fpi_tests.py +++ b/pyspedas/mms/tests/fpi_tests.py @@ -1,11 +1,121 @@ +import numpy as np import pyspedas +from pyspedas import mms_load_fpi import unittest -from pyspedas.utilities.data_exists import data_exists +from pytplot import data_exists, get_data from pyspedas.mms.fpi.mms_fpi_split_tensor import mms_fpi_split_tensor +from pyspedas.mms.fpi.mms_fpi_ang_ang import mms_fpi_ang_ang +from pyspedas.mms.fpi.mms_get_fpi_dist import mms_get_fpi_dist +from pyspedas.mms.fpi.mms_pad_fpi import mms_pad_fpi class FPITestCases(unittest.TestCase): + def test_load_default_data(self): + data = mms_load_fpi(trange=['2015-10-16/14:00', '2015-10-16/15:00'], available=True) + data = mms_load_fpi(trange=['2015-10-16/14:00', '2015-10-16/15:00']) + self.assertTrue(data_exists('mms1_dis_energyspectr_omni_fast')) + + def test_load_spdf_data(self): + data = mms_load_fpi(trange=['2015-10-16/14:00', '2015-10-16/15:00'], spdf=True) + self.assertTrue(data_exists('mms1_dis_energyspectr_omni_fast')) + + def test_load_small_brst_interval(self): + data = mms_load_fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', datatype=['dis-moms', 'dis-dist'], time_clip=True) + self.assertTrue(data_exists('mms1_dis_energyspectr_omni_brst')) + + def test_load_rename_bars(self): + data = mms_load_fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', datatype='des-dist') + data = mms_load_fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', datatype='dis-dist') + data = mms_load_fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', datatype='des-moms') + data = mms_load_fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', datatype='dis-moms') + self.assertTrue(data_exists('mms1_dis_compressionloss_brst_moms')) + self.assertTrue(data_exists('mms1_dis_errorflags_brst_moms')) + self.assertTrue(data_exists('mms1_des_errorflags_brst_moms')) + self.assertTrue(data_exists('mms1_des_compressionloss_brst_moms')) + self.assertTrue(data_exists('mms1_des_errorflags_brst_dist')) + self.assertTrue(data_exists('mms1_des_compressionloss_brst_dist')) + self.assertTrue(data_exists('mms1_dis_errorflags_brst_dist')) + self.assertTrue(data_exists('mms1_dis_compressionloss_brst_dist')) + + def test_center_fast_ion_data(self): + data = mms_load_fpi(trange=['2015-10-16/14:00', '2015-10-16/15:00']) + centered = mms_load_fpi(trange=['2015-10-16/14:00', '2015-10-16/15:00'], center_measurement=True, suffix='_centered') + + t, d = get_data('mms1_dis_bulkv_gse_fast') + c, d = get_data('mms1_dis_bulkv_gse_fast_centered') + self.assertTrue(np.round(c[0]-t[0], decimals=3) == 2.25) + + def test_center_fast_electron_data(self): + data = mms_load_fpi(trange=['2015-10-16/14:00', '2015-10-16/15:00']) + centered = mms_load_fpi(trange=['2015-10-16/14:00', '2015-10-16/15:00'], center_measurement=True, suffix='_centered') + + t, d = get_data('mms1_des_bulkv_gse_fast') + c, d = get_data('mms1_des_bulkv_gse_fast_centered') + self.assertTrue(np.round(c[0]-t[0], decimals=3) == 2.25) + + def test_center_brst_ion_data(self): + data = mms_load_fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst') + centered = mms_load_fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', center_measurement=True, suffix='_centered') + + t, d = get_data('mms1_dis_bulkv_gse_brst') + c, d = get_data('mms1_dis_bulkv_gse_brst_centered') + self.assertTrue(np.round(c[0]-t[0], decimals=3) == 0.075) + + def test_center_brst_electron_data(self): + data = mms_load_fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst') + centered = mms_load_fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', center_measurement=True, suffix='_centered') + + t, d = get_data('mms1_des_bulkv_gse_brst') + c, d = get_data('mms1_des_bulkv_gse_brst_centered') + self.assertTrue(np.round(c[0]-t[0], decimals=3) == 0.015) + + def test_errorflag_compression_bars(self): + data = mms_load_fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', datatype=['des-dist', 'des-moms']) + data = mms_load_fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', datatype=['dis-dist', 'dis-moms']) + # mms_fpi_make_errorflagbars('mms1_des_errorflags_brst_moms', level='l2') + # mms_fpi_make_errorflagbars('mms1_dis_errorflags_brst_moms', level='l2') + # mms_fpi_make_errorflagbars('mms1_des_errorflags_brst_dist', level='l2') + # mms_fpi_make_errorflagbars('mms1_dis_errorflags_brst_dist', level='l2') + # mms_fpi_make_compressionlossbars('mms1_des_compressionloss_brst_moms') + # mms_fpi_make_compressionlossbars('mms1_dis_compressionloss_brst_moms') + # mms_fpi_make_compressionlossbars('mms1_des_compressionloss_brst_dist') + # mms_fpi_make_compressionlossbars('mms1_dis_compressionloss_brst_dist') + self.assertTrue(data_exists('mms1_des_errorflags_brst_moms_flagbars_full')) + self.assertTrue(data_exists('mms1_des_errorflags_brst_moms_flagbars_main')) + self.assertTrue(data_exists('mms1_des_errorflags_brst_moms_flagbars_mini')) + self.assertTrue(data_exists('mms1_dis_errorflags_brst_moms_flagbars_full')) + self.assertTrue(data_exists('mms1_dis_errorflags_brst_moms_flagbars_main')) + self.assertTrue(data_exists('mms1_dis_errorflags_brst_moms_flagbars_mini')) + self.assertTrue(data_exists('mms1_des_errorflags_brst_dist_flagbars_dist')) + self.assertTrue(data_exists('mms1_dis_errorflags_brst_dist_flagbars_dist')) + self.assertTrue(data_exists('mms1_des_compressionloss_brst_moms_flagbars')) + self.assertTrue(data_exists('mms1_dis_compressionloss_brst_moms_flagbars')) + self.assertTrue(data_exists('mms1_des_compressionloss_brst_dist_flagbars')) + self.assertTrue(data_exists('mms1_dis_compressionloss_brst_dist_flagbars')) + + def test_angle_angle(self): + mms_fpi_ang_ang('2015-10-16/13:06:30', data_rate='brst', save_png='mms1_fpi_ang_ang_brst', display=False) + mms_fpi_ang_ang('2015-10-16/13:06:30', save_jpeg='mms1_fpi_ang_ang', display=False) + mms_fpi_ang_ang('2015-10-16/13:06:30', probe='4', save_svg='mms4_fpi_ang_ang', display=False) + mms_fpi_ang_ang('2015-10-16/13:06:30', probe='4', save_eps='mms4_fpi_ang_ang_viridis', cmap='viridis', display=False) + + def test_pad(self): + trange = ['2015-10-16/13:06:29', '2015-10-16/13:06:32'] + pyspedas.mms.fpi(trange=trange, data_rate='brst', datatype=['dis-dist', 'des-dist', 'dis-moms'], time_clip=True) + pyspedas.mms.fgm(trange=trange, data_rate='brst') + dists = mms_get_fpi_dist('mms1_dis_dist_brst') + dists_e = mms_get_fpi_dist('mms1_des_dist_brst') + pa_dist = mms_pad_fpi(dists, trange=trange, mag_data='mms1_fgm_b_gse_brst_l2_bvec') + pa_dist = mms_pad_fpi(dists_e, trange=trange, mag_data='mms1_fgm_b_gse_brst_l2_bvec') + pa_dist = mms_pad_fpi(dists, time='2015-10-16/13:06:30', units='eflux', mag_data='mms1_fgm_b_gse_brst_l2_bvec') + pa_dist = mms_pad_fpi(dists, + subtract_bulk=True, + time='2015-10-16/13:06:30', + units='eflux', + mag_data='mms1_fgm_b_gse_brst_l2_bvec', + vel_data='mms1_dis_bulkv_gse_brst') + def test_split_tensors(self): data = pyspedas.mms.fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', diff --git a/pyspedas/mms/tests/load_routine_tests.py b/pyspedas/mms/tests/load_routine_tests.py index e203a8f1..61deb173 100644 --- a/pyspedas/mms/tests/load_routine_tests.py +++ b/pyspedas/mms/tests/load_routine_tests.py @@ -1,16 +1,23 @@ import unittest import numpy as np - -from pyspedas.mms import mms_load_state, mms_load_mec, mms_load_fgm, mms_load_scm, mms_load_fpi, mms_load_hpca, mms_load_eis, mms_load_feeps, mms_load_edp, mms_load_edi, mms_load_aspoc, mms_load_dsp -from pyspedas.utilities.data_exists import data_exists +from pyspedas.mms import mms_load_state, mms_load_mec, mms_load_fgm, mms_load_scm, mms_load_fpi, mms_load_hpca, mms_load_feeps, mms_load_edp, mms_load_edi, mms_load_aspoc, mms_load_dsp +from pytplot import data_exists from pyspedas.mms.hpca.mms_hpca_calc_anodes import mms_hpca_calc_anodes from pyspedas.mms.hpca.mms_hpca_spin_sum import mms_hpca_spin_sum -from pyspedas.mms.fpi.mms_fpi_make_errorflagbars import mms_fpi_make_errorflagbars -from pyspedas.mms.fpi.mms_fpi_make_compressionlossbars import mms_fpi_make_compressionlossbars +from pyspedas.mms.hpca.mms_get_hpca_info import mms_get_hpca_info +from pyspedas import tdpwrspc +import pyspedas +from pytplot import get_data, del_data, tplot -from pytplot import get_data, del_data -from pyspedas import tdpwrspc +class FSMLoadTestCases(unittest.TestCase): + def test_load_basic(self): + files = pyspedas.mms.fsm(trange=['2015-10-16/06:00', '2015-10-16/06:05'], available=True) + fsm = pyspedas.mms.fsm(trange=['2015-10-16/06:00', '2015-10-16/06:05']) + self.assertTrue(data_exists('mms1_fsm_b_mag_brst_l3')) + self.assertTrue(data_exists('mms1_fsm_b_gse_brst_l3')) + tplot(['mms1_fsm_b_mag_brst_l3', 'mms1_fsm_b_gse_brst_l3'], display=False) + class StateLoadTestCases(unittest.TestCase): def test_load_eph_no_update(self): @@ -24,11 +31,14 @@ def test_load_eph_data(self): data = mms_load_state(datatypes=['pos', 'vel']) self.assertTrue(data_exists('mms1_defeph_pos')) self.assertTrue(data_exists('mms1_defeph_vel')) + tplot(['mms1_defeph_pos', 'mms1_defeph_vel'], display=False) def test_load_att_data(self): data = mms_load_state(trange=['2015-10-16', '2015-10-16/06:00'], datatypes=['spinras', 'spindec']) self.assertTrue(data_exists('mms1_defatt_spinras')) self.assertTrue(data_exists('mms1_defatt_spindec')) + tplot(['mms1_defatt_spinras', 'mms1_defatt_spindec'], display=False) + ############### DSP ############### class DSPLoadTestCases(unittest.TestCase): @@ -40,154 +50,76 @@ def test_load_epsd_bpsd_data(self): data = mms_load_dsp(trange=['2015-08-01','2015-08-02'], datatype=['epsd', 'bpsd'], level='l2', data_rate='fast') self.assertTrue(data_exists('mms1_dsp_epsd_omni')) self.assertTrue(data_exists('mms1_dsp_bpsd_omni')) + tplot(['mms1_dsp_epsd_omni', 'mms1_dsp_bpsd_omni'], display=False) def test_load_bpsd_data(self): + data = mms_load_dsp(trange=['2015-10-16','2015-10-17'], datatype='bpsd', level='l2', data_rate='fast', available=True) data = mms_load_dsp(trange=['2015-10-16','2015-10-17'], datatype='bpsd', level='l2', data_rate='fast') self.assertTrue(data_exists('mms1_dsp_bpsd_omni_fast_l2')) + tplot(['mms1_dsp_bpsd_omni_fast_l2'], display=False) def test_load_epsd_spdf(self): data = mms_load_dsp(trange=['2015-08-01','2015-08-02'], datatype='epsd', level='l2', data_rate='fast', spdf=True) self.assertTrue(data_exists('mms1_dsp_epsd_omni')) + tplot(['mms1_dsp_epsd_omni'], display=False) def test_load_epsd_suffix(self): data = mms_load_dsp(trange=['2015-08-01','2015-08-02'], datatype='epsd', level='l2', data_rate='fast', suffix='_test') self.assertTrue(data_exists('mms1_dsp_epsd_omni_test')) + tplot(['mms1_dsp_epsd_omni_test'], display=False) -############### FEEPS ############### -class FEEPSLoadTestCases(unittest.TestCase): - def test_load_default_data(self): - data = mms_load_feeps(trange=['2015-10-16', '2015-10-16/01:00']) - self.assertTrue(data_exists('mms1_epd_feeps_srvy_l2_electron_intensity_omni')) - self.assertTrue(data_exists('mms1_epd_feeps_srvy_l2_electron_intensity_omni_spin')) - - def test_load_spdf_data(self): - del_data('*') - data = mms_load_feeps(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', spdf=True) - self.assertTrue(data_exists('mms1_epd_feeps_brst_l2_electron_intensity_omni')) - self.assertTrue(data_exists('mms1_epd_feeps_brst_l2_electron_intensity_omni_spin')) - - def test_load_suffix(self): - data = mms_load_feeps(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', suffix='_test') - self.assertTrue(data_exists('mms1_epd_feeps_brst_l2_electron_intensity_omni_test')) - self.assertTrue(data_exists('mms1_epd_feeps_brst_l2_electron_intensity_omni_spin_test')) - - def test_load_brst_ion_data(self): - del_data('*') - data = mms_load_feeps(probe=4, data_rate='brst', datatype='ion', trange=['2015-10-01/10:48:16', '2015-10-01/10:49:16']) - self.assertTrue(data_exists('mms4_epd_feeps_brst_l2_ion_intensity_omni')) - self.assertTrue(data_exists('mms4_epd_feeps_brst_l2_ion_intensity_omni_spin')) - - def test_load_brst_multi_probe(self): - del_data('*') - data = mms_load_feeps(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', probe=[1, 2, 3, 4]) - self.assertTrue(data_exists('mms1_epd_feeps_brst_l2_electron_intensity_omni')) - self.assertTrue(data_exists('mms1_epd_feeps_brst_l2_electron_intensity_omni_spin')) - self.assertTrue(data_exists('mms2_epd_feeps_brst_l2_electron_intensity_omni')) - self.assertTrue(data_exists('mms2_epd_feeps_brst_l2_electron_intensity_omni_spin')) - self.assertTrue(data_exists('mms3_epd_feeps_brst_l2_electron_intensity_omni')) - self.assertTrue(data_exists('mms3_epd_feeps_brst_l2_electron_intensity_omni_spin')) - self.assertTrue(data_exists('mms4_epd_feeps_brst_l2_electron_intensity_omni')) - self.assertTrue(data_exists('mms4_epd_feeps_brst_l2_electron_intensity_omni_spin')) - -############### FPI ############### -class FPILoadTestCases(unittest.TestCase): - def test_load_default_data(self): - data = mms_load_fpi(trange=['2015-10-16/14:00', '2015-10-16/15:00']) - self.assertTrue(data_exists('mms1_dis_energyspectr_omni_fast')) - - def test_load_spdf_data(self): - data = mms_load_fpi(trange=['2015-10-16/14:00', '2015-10-16/15:00'], spdf=True) - self.assertTrue(data_exists('mms1_dis_energyspectr_omni_fast')) - - def test_load_small_brst_interval(self): - data = mms_load_fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', datatype=['dis-moms', 'dis-dist'], time_clip=True) - self.assertTrue(data_exists('mms1_dis_energyspectr_omni_brst')) - - def test_load_rename_bars(self): - data = mms_load_fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', datatype='des-dist') - data = mms_load_fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', datatype='dis-dist') - data = mms_load_fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', datatype='des-moms') - data = mms_load_fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', datatype='dis-moms') - self.assertTrue(data_exists('mms1_dis_compressionloss_brst_moms')) - self.assertTrue(data_exists('mms1_dis_errorflags_brst_moms')) - self.assertTrue(data_exists('mms1_des_errorflags_brst_moms')) - self.assertTrue(data_exists('mms1_des_compressionloss_brst_moms')) - self.assertTrue(data_exists('mms1_des_errorflags_brst_dist')) - self.assertTrue(data_exists('mms1_des_compressionloss_brst_dist')) - self.assertTrue(data_exists('mms1_dis_errorflags_brst_dist')) - self.assertTrue(data_exists('mms1_dis_compressionloss_brst_dist')) - - def test_center_fast_ion_data_notplot(self): - data = mms_load_fpi(trange=['2015-10-16/14:00', '2015-10-16/15:00'], notplot=True) - centered = mms_load_fpi(trange=['2015-10-16/14:00', '2015-10-16/15:00'], center_measurement=True, suffix='_centered', notplot=True) - - self.assertTrue(np.round(centered['mms1_dis_bulkv_gse_fast_centered']['x'][0]-data['mms1_dis_bulkv_gse_fast']['x'][0], decimals=3) == 2.25) - - def test_center_fast_ion_data(self): - data = mms_load_fpi(trange=['2015-10-16/14:00', '2015-10-16/15:00']) - centered = mms_load_fpi(trange=['2015-10-16/14:00', '2015-10-16/15:00'], center_measurement=True, suffix='_centered') - - t, d = get_data('mms1_dis_bulkv_gse_fast') - c, d = get_data('mms1_dis_bulkv_gse_fast_centered') - self.assertTrue(np.round(c[0]-t[0], decimals=3) == 2.25) - def test_center_fast_electron_data(self): - data = mms_load_fpi(trange=['2015-10-16/14:00', '2015-10-16/15:00']) - centered = mms_load_fpi(trange=['2015-10-16/14:00', '2015-10-16/15:00'], center_measurement=True, suffix='_centered') - - t, d = get_data('mms1_des_bulkv_gse_fast') - c, d = get_data('mms1_des_bulkv_gse_fast_centered') - self.assertTrue(np.round(c[0]-t[0], decimals=3) == 2.25) +############### FEEPS ############### +# class FEEPSLoadTestCases(unittest.TestCase): +# def test_load_default_data(self): +# data = mms_load_feeps(trange=['2015-10-16', '2015-10-16/01:00'], available=True) +# data = mms_load_feeps(trange=['2015-10-16', '2015-10-16/01:00']) +# self.assertTrue(data_exists('mms1_epd_feeps_srvy_l2_electron_intensity_omni')) +# self.assertTrue(data_exists('mms1_epd_feeps_srvy_l2_electron_intensity_omni_spin')) +# +# def test_load_spdf_data(self): +# del_data('*') +# data = mms_load_feeps(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', spdf=True) +# self.assertTrue(data_exists('mms1_epd_feeps_brst_l2_electron_intensity_omni')) +# self.assertTrue(data_exists('mms1_epd_feeps_brst_l2_electron_intensity_omni_spin')) +# +# def test_load_suffix(self): +# data = mms_load_feeps(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', suffix='_test') +# self.assertTrue(data_exists('mms1_epd_feeps_brst_l2_electron_intensity_omni_test')) +# self.assertTrue(data_exists('mms1_epd_feeps_brst_l2_electron_intensity_omni_spin_test')) +# +# def test_load_brst_ion_data(self): +# del_data('*') +# data = mms_load_feeps(probe=4, data_rate='brst', datatype='ion', trange=['2015-10-01/10:48:16', '2015-10-01/10:49:16']) +# self.assertTrue(data_exists('mms4_epd_feeps_brst_l2_ion_intensity_omni')) +# self.assertTrue(data_exists('mms4_epd_feeps_brst_l2_ion_intensity_omni_spin')) +# +# def test_load_brst_multi_probe(self): +# del_data('*') +# data = mms_load_feeps(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', probe=[1, 2, 3, 4]) +# self.assertTrue(data_exists('mms1_epd_feeps_brst_l2_electron_intensity_omni')) +# self.assertTrue(data_exists('mms1_epd_feeps_brst_l2_electron_intensity_omni_spin')) +# self.assertTrue(data_exists('mms2_epd_feeps_brst_l2_electron_intensity_omni')) +# self.assertTrue(data_exists('mms2_epd_feeps_brst_l2_electron_intensity_omni_spin')) +# self.assertTrue(data_exists('mms3_epd_feeps_brst_l2_electron_intensity_omni')) +# self.assertTrue(data_exists('mms3_epd_feeps_brst_l2_electron_intensity_omni_spin')) +# self.assertTrue(data_exists('mms4_epd_feeps_brst_l2_electron_intensity_omni')) +# self.assertTrue(data_exists('mms4_epd_feeps_brst_l2_electron_intensity_omni_spin')) - def test_center_brst_ion_data(self): - data = mms_load_fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst') - centered = mms_load_fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', center_measurement=True, suffix='_centered') - - t, d = get_data('mms1_dis_bulkv_gse_brst') - c, d = get_data('mms1_dis_bulkv_gse_brst_centered') - self.assertTrue(np.round(c[0]-t[0], decimals=3) == 0.075) - def test_center_brst_electron_data(self): - data = mms_load_fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst') - centered = mms_load_fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', center_measurement=True, suffix='_centered') - - t, d = get_data('mms1_des_bulkv_gse_brst') - c, d = get_data('mms1_des_bulkv_gse_brst_centered') - self.assertTrue(np.round(c[0]-t[0], decimals=3) == 0.015) - - def test_errorflag_compression_bars(self): - data = mms_load_fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', datatype=['des-dist', 'des-moms']) - data = mms_load_fpi(trange=['2015-10-16/13:06', '2015-10-16/13:07'], data_rate='brst', datatype=['dis-dist', 'dis-moms']) - # mms_fpi_make_errorflagbars('mms1_des_errorflags_brst_moms', level='l2') - # mms_fpi_make_errorflagbars('mms1_dis_errorflags_brst_moms', level='l2') - # mms_fpi_make_errorflagbars('mms1_des_errorflags_brst_dist', level='l2') - # mms_fpi_make_errorflagbars('mms1_dis_errorflags_brst_dist', level='l2') - # mms_fpi_make_compressionlossbars('mms1_des_compressionloss_brst_moms') - # mms_fpi_make_compressionlossbars('mms1_dis_compressionloss_brst_moms') - # mms_fpi_make_compressionlossbars('mms1_des_compressionloss_brst_dist') - # mms_fpi_make_compressionlossbars('mms1_dis_compressionloss_brst_dist') - self.assertTrue(data_exists('mms1_des_errorflags_brst_moms_flagbars_full')) - self.assertTrue(data_exists('mms1_des_errorflags_brst_moms_flagbars_main')) - self.assertTrue(data_exists('mms1_des_errorflags_brst_moms_flagbars_mini')) - self.assertTrue(data_exists('mms1_dis_errorflags_brst_moms_flagbars_full')) - self.assertTrue(data_exists('mms1_dis_errorflags_brst_moms_flagbars_main')) - self.assertTrue(data_exists('mms1_dis_errorflags_brst_moms_flagbars_mini')) - self.assertTrue(data_exists('mms1_des_errorflags_brst_dist_flagbars_dist')) - self.assertTrue(data_exists('mms1_dis_errorflags_brst_dist_flagbars_dist')) - self.assertTrue(data_exists('mms1_des_compressionloss_brst_moms_flagbars')) - self.assertTrue(data_exists('mms1_dis_compressionloss_brst_moms_flagbars')) - self.assertTrue(data_exists('mms1_des_compressionloss_brst_dist_flagbars')) - self.assertTrue(data_exists('mms1_dis_compressionloss_brst_dist_flagbars')) ############### HPCA ############### class HPCALoadTestCases(unittest.TestCase): def test_load_default_data(self): + data = mms_load_hpca(trange=['2015-10-16', '2015-10-16/01:00'], available=True) data = mms_load_hpca(trange=['2015-10-16', '2015-10-16/01:00']) self.assertTrue(data_exists('mms1_hpca_hplus_number_density')) + tplot(['mms1_hpca_hplus_number_density'], display=False) def test_load_spdf_data(self): data = mms_load_hpca(trange=['2015-10-16', '2015-10-16/01:00'], spdf=True) self.assertTrue(data_exists('mms1_hpca_hplus_number_density')) + tplot(['mms1_hpca_hplus_number_density'], display=False) def test_load_ion_omni_suffix(self): del_data('*') @@ -195,16 +127,21 @@ def test_load_ion_omni_suffix(self): mms_hpca_calc_anodes(fov=[0, 360], probe=2, suffix='_brst') mms_hpca_spin_sum(probe=2, suffix='_brst', avg=True) self.assertTrue(data_exists('mms2_hpca_hplus_flux_brst_elev_0-360_spin')) + tplot(['mms2_hpca_hplus_flux_brst_elev_0-360_spin'], display=False) def test_load_ion_omni(self): del_data('*') - data = mms_load_hpca(trange=['2016-10-16/5:00', '2016-10-16/6:00'], datatype='ion') + data = mms_load_hpca(trange=['2016-10-16', '2016-10-16/6:00'], datatype='ion') mms_hpca_calc_anodes(fov=[0, 360], probe='1') mms_hpca_spin_sum() self.assertTrue(data_exists('mms1_hpca_hplus_flux_elev_0-360_spin')) self.assertTrue(data_exists('mms1_hpca_heplus_flux_elev_0-360_spin')) self.assertTrue(data_exists('mms1_hpca_heplusplus_flux_elev_0-360_spin')) self.assertTrue(data_exists('mms1_hpca_oplus_flux_elev_0-360_spin')) + tplot(['mms1_hpca_hplus_flux_elev_0-360_spin', + 'mms1_hpca_heplus_flux_elev_0-360_spin', + 'mms1_hpca_heplusplus_flux_elev_0-360_spin', + 'mms1_hpca_oplus_flux_elev_0-360_spin'], display=False) def test_center_fast_moments_data(self): data = mms_load_hpca(trange=['2015-10-16/14:00', '2015-10-16/15:00']) @@ -222,25 +159,37 @@ def test_center_brst_moments_data(self): c, d = get_data('mms1_hpca_hplus_ion_bulk_velocity_centered') self.assertTrue(np.round(c[0]-t[0], decimals=3) == 5.0) + def test_hpca_info(self): + info = mms_get_hpca_info() + self.assertTrue(list(info.keys()) == ['elevation', 't_spin', 't_sweep', 'azimuth_energy_offset']) + + ############### EDI ############### class EDILoadTestCases(unittest.TestCase): def test_load_default_data(self): + data = mms_load_edi(trange=['2016-10-17/13:00', '2016-10-17/14:00'], available=True) data = mms_load_edi(trange=['2016-10-17/13:00', '2016-10-17/14:00']) self.assertTrue(data_exists('mms1_edi_e_gse_srvy_l2')) + tplot(['mms1_edi_e_gse_srvy_l2'], display=False) def test_load_spdf_data(self): data = mms_load_edi(trange=['2016-10-17/13:00', '2016-10-17/14:00'], spdf=True) self.assertTrue(data_exists('mms1_edi_e_gse_srvy_l2')) + tplot(['mms1_edi_e_gse_srvy_l2'], display=False) def test_load_suffix(self): data = mms_load_edi(trange=['2016-10-17/13:00', '2016-10-17/14:00'], suffix='_test') self.assertTrue(data_exists('mms1_edi_e_gse_srvy_l2_test')) + tplot(['mms1_edi_e_gse_srvy_l2_test'], display=False) + ############### ASPOC ############### class ASPOCLoadTestCases(unittest.TestCase): def test_load_default_data(self): + data = mms_load_aspoc(trange=['2015-10-16', '2015-10-16/01:00'], available=True) data = mms_load_aspoc(trange=['2015-10-16', '2015-10-16/01:00']) self.assertTrue(data_exists('mms1_aspoc_ionc_l2')) + tplot(['mms1_aspoc_ionc_l2'], display=False) def test_load_spdf_data(self): data = mms_load_aspoc(trange=['2015-10-16', '2015-10-16/01:00'], spdf=True) @@ -250,19 +199,24 @@ def test_load_suffix(self): data = mms_load_aspoc(trange=['2015-10-16', '2015-10-16/01:00'], suffix='_test') self.assertTrue(data_exists('mms1_aspoc_ionc_l2_test')) + ############### EDP ############### class EDPLoadTestCases(unittest.TestCase): def test_load_default_data(self): + data = mms_load_edp(trange=['2015-10-16', '2015-10-16/01:00'], available=True) data = mms_load_edp(trange=['2015-10-16', '2015-10-16/01:00']) self.assertTrue(data_exists('mms1_edp_dce_gse_fast_l2')) + tplot(['mms1_edp_dce_gse_fast_l2'], display=False) def test_load_hfesp_data(self): data = mms_load_edp(trange=['2015-10-16', '2015-10-16/01:00'], datatype='hfesp', data_rate='srvy') self.assertTrue(data_exists('mms1_edp_hfesp_srvy_l2')) + tplot(['mms1_edp_hfesp_srvy_l2'], display=False) def test_load_spdf_data(self): data = mms_load_edp(trange=['2015-10-16', '2015-10-16/01:00'], spdf=True) self.assertTrue(data_exists('mms1_edp_dce_gse_fast_l2')) + tplot(['mms1_edp_dce_gse_fast_l2'], display=False) def test_load_suffix(self): data = mms_load_edp(trange=['2015-10-16', '2015-10-16/01:00'], suffix='_test') @@ -278,6 +232,8 @@ def test_load_suffix(self): def test_load_brst_data(self): data = mms_load_edp(data_rate='brst', trange=['2015-10-16/13:06', '2015-10-16/13:10']) self.assertTrue(data_exists('mms1_edp_dce_gse_brst_l2')) + tplot(['mms1_edp_dce_gse_brst_l2'], display=False) + ############### FGM ############### class FGMLoadTestCases(unittest.TestCase): @@ -290,10 +246,12 @@ def test_regression_multi_imports_spdf(self): self.assertTrue(d1.shape == d2.shape) def test_load_default_data(self): + data = mms_load_fgm(trange=['2015-10-16', '2015-10-16/01:00'], available=True) data = mms_load_fgm(trange=['2015-10-16', '2015-10-16/01:00']) self.assertTrue(data_exists('mms1_fgm_b_gse_srvy_l2')) self.assertTrue(data_exists('Epoch')) self.assertTrue(data_exists('Epoch_state')) + tplot(['mms1_fgm_b_gse_srvy_l2'], display=False) def test_load_spdf_data(self): data = mms_load_fgm(data_rate='brst', trange=['2015-10-16/13:06', '2015-10-16/13:10'], spdf=True) @@ -313,6 +271,7 @@ def test_load_multiple_sc(self): def test_load_brst_data(self): data = mms_load_fgm(data_rate='brst', trange=['2015-10-16/13:06', '2015-10-16/13:10']) self.assertTrue(data_exists('mms1_fgm_b_gse_brst_l2')) + tplot(['mms1_fgm_b_gse_brst_l2'], display=False) def test_load_data_no_update(self): data = mms_load_fgm(trange=['2015-10-16', '2015-10-16/01:00']) # make sure the files exist locally @@ -320,11 +279,14 @@ def test_load_data_no_update(self): data = mms_load_fgm(trange=['2015-10-16', '2015-10-16/01:00'], no_update=True) # load the file from the local cache self.assertTrue(data_exists('mms1_fgm_b_gse_srvy_l2')) -############### MEC ############### + +############### MEC ############### class MECLoadTestCases(unittest.TestCase): def test_load_default_data(self): + data = mms_load_mec(trange=['2015-10-16', '2015-10-16/01:00'], available=True) data = mms_load_mec(trange=['2015-10-16', '2015-10-16/01:00']) self.assertTrue(data_exists('mms1_mec_r_sm')) + tplot(['mms1_mec_r_sm'], display=False) def test_load_spdf_data(self): data = mms_load_mec(trange=['2015-10-16', '2015-10-16/01:00'], spdf=True) @@ -334,19 +296,29 @@ def test_load_suffix(self): data = mms_load_mec(trange=['2015-10-16', '2015-10-16/01:00'], suffix='_test') self.assertTrue(data_exists('mms1_mec_r_sm_test')) + class SCMLoadTestCases(unittest.TestCase): def test_brst_dpwrspc_data(self): data = mms_load_scm(probe=4, data_rate='brst', datatype='scb', trange=['2015-10-01/10:48:16', '2015-10-01/10:49:16']) - tdpwrspc('mms4_scm_acb_gse_scb_brst_l2') + tdpwrspc('mms4_scm_acb_gse_scb_brst_l2', notmvariance=True) self.assertTrue(data_exists('mms4_scm_acb_gse_scb_brst_l2')) self.assertTrue(data_exists('mms4_scm_acb_gse_scb_brst_l2_x_dpwrspc')) self.assertTrue(data_exists('mms4_scm_acb_gse_scb_brst_l2_y_dpwrspc')) self.assertTrue(data_exists('mms4_scm_acb_gse_scb_brst_l2_z_dpwrspc')) + tplot(['mms4_scm_acb_gse_scb_brst_l2', + 'mms4_scm_acb_gse_scb_brst_l2_x_dpwrspc', + 'mms4_scm_acb_gse_scb_brst_l2_y_dpwrspc', + 'mms4_scm_acb_gse_scb_brst_l2_z_dpwrspc'], display=False) def test_load_default_data(self): + data = mms_load_scm(trange=['2015-10-16', '2015-10-16/01:00'], available=True) data = mms_load_scm(trange=['2015-10-16', '2015-10-16/01:00']) self.assertTrue(data_exists('mms1_scm_acb_gse_scsrvy_srvy_l2')) + def test_load_schb(self): + data = pyspedas.mms.scm(probe=4, data_rate='brst', datatype='schb', trange=['2015-10-01/10:48:16', '2015-10-01/10:49:16']) + self.assertTrue(data_exists('mms4_scm_acb_gse_schb_brst_l2')) + def test_load_suffix(self): data = mms_load_scm(trange=['2015-10-16', '2015-10-16/01:00'], suffix='_test') self.assertTrue(data_exists('mms1_scm_acb_gse_scsrvy_srvy_l2_test')) @@ -362,5 +334,10 @@ def test_load_brst_data(self): data = mms_load_scm(data_rate='brst', trange=['2015-10-16/13:06', '2015-10-16/13:10'], datatype='scb') self.assertTrue(data_exists('mms1_scm_acb_gse_scb_brst_l2')) + def test_available(self): + files = mms_load_scm(data_rate='brst', trange=['2015-10-16/13:06', '2015-10-16/13:10'], datatype='scb', available=True) + self.assertTrue(len(files) == 2) + + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/mms/tests/mms_part_getspec.py b/pyspedas/mms/tests/mms_part_getspec.py new file mode 100644 index 00000000..d318b04a --- /dev/null +++ b/pyspedas/mms/tests/mms_part_getspec.py @@ -0,0 +1,120 @@ +import unittest +from pyspedas.mms.particles.mms_part_getspec import mms_part_getspec +from pytplot import data_exists + + +class PGSTests(unittest.TestCase): + def test_pgs_errors(self): + # no trange specified + mms_part_getspec() + # unsupported instrument + mms_part_getspec(trange=['2015-10-16/13:06:00', '2015-10-16/13:06:10'], instrument='feeps') + + def test_fpi_brst_fac_type(self): + mms_part_getspec(trange=['2015-10-16/13:06:00', '2015-10-16/13:06:10'], + data_rate='brst', + species='i', + fac_type='phigeo', + output='pa gyro moments') + self.assertTrue(data_exists('mms1_dis_dist_brst_density')) + mms_part_getspec(trange=['2015-10-16/13:06:00', '2015-10-16/13:06:10'], + data_rate='brst', + species='i', + fac_type='xgse', + output='pa gyro moments') + self.assertTrue(data_exists('mms1_dis_dist_brst_density')) + + def test_fpi_brst_i(self): + mms_part_getspec(trange=['2015-10-16/13:06:00', '2015-10-16/13:06:10'], + data_rate='brst', + species='i', + output='energy theta phi pa gyro moments') + self.assertTrue(data_exists('mms1_dis_dist_brst_density')) + self.assertTrue(data_exists('mms1_dis_dist_brst_velocity')) + self.assertTrue(data_exists('mms1_dis_dist_brst_avgtemp')) + self.assertTrue(data_exists('mms1_dis_dist_brst_energy')) + self.assertTrue(data_exists('mms1_dis_dist_brst_theta')) + self.assertTrue(data_exists('mms1_dis_dist_brst_phi')) + self.assertTrue(data_exists('mms1_dis_dist_brst_pa')) + self.assertTrue(data_exists('mms1_dis_dist_brst_gyro')) + + def test_fpi_disable_pe_corr(self): + mms_part_getspec(trange=['2015-10-16/13:06:07', '2015-10-16/13:06:08'], + data_rate='brst', + species='e', + output='energy', + disable_photoelectron_corrections=True) + self.assertTrue(data_exists('mms1_des_dist_brst_energy')) + + def test_fpi_brst_e(self): + mms_part_getspec(trange=['2015-10-16/13:06:07', '2015-10-16/13:06:08'], + data_rate='brst', + species='e', + output='energy theta phi pa gyro moments') + self.assertTrue(data_exists('mms1_des_dist_brst_density')) + self.assertTrue(data_exists('mms1_des_dist_brst_velocity')) + self.assertTrue(data_exists('mms1_des_dist_brst_avgtemp')) + self.assertTrue(data_exists('mms1_des_dist_brst_energy')) + self.assertTrue(data_exists('mms1_des_dist_brst_theta')) + self.assertTrue(data_exists('mms1_des_dist_brst_phi')) + self.assertTrue(data_exists('mms1_des_dist_brst_pa')) + self.assertTrue(data_exists('mms1_des_dist_brst_gyro')) + + def test_fpi_brst_limits(self): + mms_part_getspec(trange=['2015-10-16/13:06:07', '2015-10-16/13:06:08'], + data_rate='brst', + species='e', + theta=[0, 90], + phi=[0, 100], + gyro=[0, 180], + pitch=[45, 75], + energy=[1000, 20000], + output='energy theta phi pa gyro moments') + self.assertTrue(data_exists('mms1_des_dist_brst_density')) + self.assertTrue(data_exists('mms1_des_dist_brst_velocity')) + self.assertTrue(data_exists('mms1_des_dist_brst_avgtemp')) + self.assertTrue(data_exists('mms1_des_dist_brst_energy')) + self.assertTrue(data_exists('mms1_des_dist_brst_theta')) + self.assertTrue(data_exists('mms1_des_dist_brst_phi')) + self.assertTrue(data_exists('mms1_des_dist_brst_pa')) + self.assertTrue(data_exists('mms1_des_dist_brst_gyro')) + + def test_hpca_srvy_hplus(self): + mms_part_getspec(trange=['2015-10-16/13:05', '2015-10-16/13:10'], + #data_rate='brst', + species='hplus', + instrument='hpca', + output='energy theta phi pa gyro moments') + self.assertTrue(data_exists('mms1_hpca_hplus_phase_space_density_density')) + self.assertTrue(data_exists('mms1_hpca_hplus_phase_space_density_velocity')) + self.assertTrue(data_exists('mms1_hpca_hplus_phase_space_density_avgtemp')) + self.assertTrue(data_exists('mms1_hpca_hplus_phase_space_density_energy')) + self.assertTrue(data_exists('mms1_hpca_hplus_phase_space_density_theta')) + self.assertTrue(data_exists('mms1_hpca_hplus_phase_space_density_phi')) + self.assertTrue(data_exists('mms1_hpca_hplus_phase_space_density_pa')) + self.assertTrue(data_exists('mms1_hpca_hplus_phase_space_density_gyro')) + + def test_hpca_srvy_oplus(self): + mms_part_getspec(trange=['2015-10-16/13:05', '2015-10-16/13:10'], + species='oplus', + instrument='hpca', + output='energy') + self.assertTrue(data_exists('mms1_hpca_oplus_phase_space_density_energy')) + + def test_hpca_srvy_heplus(self): + mms_part_getspec(trange=['2015-10-16/13:05', '2015-10-16/13:10'], + species='heplus', + instrument='hpca', + output='energy') + self.assertTrue(data_exists('mms1_hpca_heplus_phase_space_density_energy')) + + def test_hpca_srvy_heplusplus(self): + mms_part_getspec(trange=['2015-10-16/13:05', '2015-10-16/13:10'], + species='heplusplus', + instrument='hpca', + output='energy') + self.assertTrue(data_exists('mms1_hpca_heplusplus_phase_space_density_energy')) + + +if __name__ == '__main__': + unittest.main() diff --git a/pyspedas/mms/tests/neutral_sheet.py b/pyspedas/mms/tests/neutral_sheet.py new file mode 100644 index 00000000..a4c646c1 --- /dev/null +++ b/pyspedas/mms/tests/neutral_sheet.py @@ -0,0 +1,62 @@ +import numpy as np +import unittest +import pyspedas +from pyspedas import tkm2re +from pyspedas.analysis.neutral_sheet import neutral_sheet +from pytplot import get_data + +pyspedas.mms.mec() +tkm2re('mms1_mec_r_gsm') +pos_data = get_data('mms1_mec_r_gsm_re') + + +class NSTests(unittest.TestCase): + def test_lopez(self): + model = neutral_sheet(pos_data.times, pos_data.y, model='lopez', sc2NS=True) + self.assertTrue(isinstance(model, np.ndarray)) + model = neutral_sheet(pos_data.times, pos_data.y, model='lopez') + self.assertTrue(isinstance(model, np.ndarray)) + + def test_sm(self): + model = neutral_sheet(pos_data.times, pos_data.y, model='sm', sc2NS=True) + self.assertTrue(isinstance(model, np.ndarray)) + model = neutral_sheet(pos_data.times, pos_data.y, model='sm') + self.assertTrue(isinstance(model, np.ndarray)) + + def test_themis(self): + model = neutral_sheet(pos_data.times, pos_data.y, model='themis', sc2NS=True) + self.assertTrue(isinstance(model, np.ndarray)) + model = neutral_sheet(pos_data.times, pos_data.y, model='themis') + self.assertTrue(isinstance(model, np.ndarray)) + + def test_aen(self): + model = neutral_sheet(pos_data.times, pos_data.y, model='aen', sc2NS=True) + self.assertTrue(isinstance(model, np.ndarray)) + model = neutral_sheet(pos_data.times, pos_data.y, model='aen') + self.assertTrue(isinstance(model, np.ndarray)) + + def test_den(self): + model = neutral_sheet(pos_data.times, pos_data.y, model='den', sc2NS=True) + self.assertTrue(isinstance(model, np.ndarray)) + model = neutral_sheet(pos_data.times, pos_data.y, model='den') + self.assertTrue(isinstance(model, np.ndarray)) + + def test_fairfield(self): + model = neutral_sheet(pos_data.times, pos_data.y, model='fairfield', sc2NS=True) + self.assertTrue(isinstance(model, np.ndarray)) + model = neutral_sheet(pos_data.times, pos_data.y, model='fairfield') + self.assertTrue(isinstance(model, np.ndarray)) + + def test_den_fairfield(self): + model = neutral_sheet(pos_data.times, pos_data.y, model='den_fairfield', sc2NS=True) + self.assertTrue(isinstance(model, np.ndarray)) + model = neutral_sheet(pos_data.times, pos_data.y, model='den_fairfield') + self.assertTrue(isinstance(model, np.ndarray)) + + def test_invalid_model(self): + model = neutral_sheet(pos_data.times, pos_data.y, model='ff', sc2NS=True) + self.assertTrue(not isinstance(model, np.ndarray)) + + +if __name__ == '__main__': + unittest.main() diff --git a/pyspedas/mms/tests/orbit_plots.py b/pyspedas/mms/tests/orbit_plots.py new file mode 100644 index 00000000..25fc581c --- /dev/null +++ b/pyspedas/mms/tests/orbit_plots.py @@ -0,0 +1,194 @@ +import unittest +import os +from pyspedas.mms.mms_orbit_plot import mms_orbit_plot + + +class TestMMSOrbitPlot(unittest.TestCase): + def test_trange(self): + # Set trange and save_png options + trange = ['2015-10-16/00:00:00', '2015-10-16/12:00:00'] + save_png = 'test_trange' + + mms_orbit_plot(trange=trange, save_png=save_png, display=False) + + # Check that the test figure was saved + self.assertTrue(os.path.exists(save_png + '.png')) + + def test_probes(self): + # Set probes and save_png options + probes = [1, 2] + save_png = 'test_probes' + + mms_orbit_plot(probes=probes, save_png=save_png, display=False) + + # Check that the test figure was saved + self.assertTrue(os.path.exists(save_png + '.png')) + + def test_data_rate(self): + # Set data_rate and save_png options + data_rate = 'brst' + save_png = 'test_data_rate' + + mms_orbit_plot(probes=[1, 4], trange=['2019-05-01/02:00', '2019-05-01/02:20'], data_rate=data_rate, save_png=save_png, display=False, earth=False) + + # Check that the test figure was saved + self.assertTrue(os.path.exists(save_png + '.png')) + + def test_plane(self): + # Set plane and save_png options + plane = 'yz' + save_png = 'test_plane' + + mms_orbit_plot(plane=plane, save_png=save_png, display=False) + + # Check that the test figure was saved + self.assertTrue(os.path.exists(save_png + '.png')) + + def test_xr(self): + # Set xr and save_png options + xr = [-5, 5] + save_png = 'test_xr' + + mms_orbit_plot(xr=xr, save_png=save_png, display=False) + + # Check that the test figure was saved + self.assertTrue(os.path.exists(save_png + '.png')) + + def test_yr(self): + # Set yr and save_png options + yr = [-5, 5] + save_png = 'test_yr' + + mms_orbit_plot(yr=yr, save_png=save_png, display=False) + + # Check that the test figure was saved + self.assertTrue(os.path.exists(save_png + '.png')) + + def test_coord(self): + # Set coord and save_png options + coord = 'gsm' + save_png = 'test_coord' + + mms_orbit_plot(coord=coord, save_png=save_png, display=False) + + # Check that the test figure was saved + self.assertTrue(os.path.exists(save_png + '.png')) + + def test_xsize(self): + # Set xsize and save_png options + xsize = 10 + save_png = 'test_xsize' + + mms_orbit_plot(xsize=xsize, save_png=save_png, display=False) + + # Check that the test figure was saved + self.assertTrue(os.path.exists(save_png + '.png')) + + def test_ysize(self): + # Set ysize and save_png options + ysize = 10 + save_png = 'test_ysize' + + mms_orbit_plot(ysize=ysize, save_png=save_png, display=False) + + # Check that the test figure was saved + self.assertTrue(os.path.exists(save_png + '.png')) + + def test_marker(self): + # Set marker and save_png options + marker = 'o' + save_png = 'test_marker' + + mms_orbit_plot(marker=marker, save_png=save_png, display=False) + + # Check that the test figure was saved + self.assertTrue(os.path.exists(save_png + '.png')) + + def test_markevery(self): + # Set markevery and save_png options + markevery = 5 + save_png = 'test_markevery' + + mms_orbit_plot(markevery=markevery, save_png=save_png, display=False) + + # Check that the test figure was saved + self.assertTrue(os.path.exists(save_png + '.png')) + + def test_markersize(self): + # Set markersize and save_png options + markersize = 10 + save_png = 'test_markersize' + + mms_orbit_plot(markersize=markersize, save_png=save_png, display=False) + + # Check that the test figure was saved + self.assertTrue(os.path.exists(save_png + '.png')) + + def test_earth(self): + # Set earth and save_png options + earth = False + save_png = 'test_earth' + + mms_orbit_plot(earth=earth, save_png=save_png, display=False) + + # Check that the test figure was saved + self.assertTrue(os.path.exists(save_png + '.png')) + + def test_dpi(self): + # Set dpi and save_png options + dpi = 100 + save_png = 'test_dpi' + + mms_orbit_plot(dpi=dpi, save_png=save_png, display=False) + + # Check that the test figure was saved + self.assertTrue(os.path.exists(save_png + '.png')) + + def test_save_pdf(self): + # Set save_png option + save_pdf = 'test_save_pdf' + + mms_orbit_plot(save_pdf=save_pdf, display=False) + + # Check that the test figure was saved + self.assertTrue(os.path.exists(save_pdf + '.pdf')) + + def test_save_eps(self): + # Set save_eps option + save_eps = 'test_save_eps' + + mms_orbit_plot(save_eps=save_eps, display=False) + + # Check that the test figure was saved + self.assertTrue(os.path.exists(save_eps + '.eps')) + + def test_save_jpeg(self): + # Set save_jpeg option + save_jpeg = 'test_save_jpeg' + + mms_orbit_plot(save_jpeg=save_jpeg, display=False) + + # Check that the test figure was saved + self.assertTrue(os.path.exists(save_jpeg + '.jpeg')) + + def test_save_svg(self): + # Set save_svg option + save_svg = 'test_save_svg' + + mms_orbit_plot(save_svg=save_svg, display=False) + + # Check that the test figure was saved + self.assertTrue(os.path.exists(save_svg + '.svg')) + + def test_return_plot_objects(self): + # Set return_plot_objects option + return_plot_objects = True + + plot_objects = mms_orbit_plot(return_plot_objects=return_plot_objects, display=False) + + # Check that plot_objects is a tuple + self.assertIsInstance(plot_objects, tuple) + + +if __name__ == '__main__': + unittest.main() diff --git a/pyspedas/mms/tests/ql_l1b_sitl_tests.py b/pyspedas/mms/tests/ql_l1b_sitl_tests.py index 436b4786..7f1deb89 100644 --- a/pyspedas/mms/tests/ql_l1b_sitl_tests.py +++ b/pyspedas/mms/tests/ql_l1b_sitl_tests.py @@ -1,8 +1,9 @@ import unittest -import numpy as np - import pyspedas -from pyspedas.utilities.data_exists import data_exists +from pytplot import data_exists +from pyspedas.mms.hpca.mms_hpca_calc_anodes import mms_hpca_calc_anodes +from pyspedas.mms.hpca.mms_hpca_spin_sum import mms_hpca_spin_sum + class LoadTestCases(unittest.TestCase): def test_load_fgm_ql(self): @@ -26,6 +27,11 @@ def test_load_scm_l1a(self): data = pyspedas.mms.scm(probe=1, level='l1a', trange=['2015-12-15', '2015-12-16']) self.assertTrue(data_exists('mms1_scm_acb_scm123_scsrvy_srvy_l1a')) + def test_load_scm_l1a_brst(self): + data = pyspedas.mms.scm(data_rate='brst', trange=['2015-10-16/13:06', '2015-10-16/13:10'], level='l1a') + self.assertTrue(data_exists('mms1_scm_acb_scm123_scb_brst_l1a')) + self.assertTrue(data_exists('mms1_scm_acb_scm123_schb_brst_l1a')) + def test_load_scm_l1b(self): data = pyspedas.mms.scm(probe=4, level='l1b', trange=['2015-12-15', '2015-12-16']) self.assertTrue(data_exists('mms4_scm_acb_scm123_scsrvy_srvy_l1b')) @@ -49,5 +55,24 @@ def test_load_fpi_ql(self): self.assertTrue(data_exists('mms1_des_energyspectr_omni_fast')) self.assertTrue(data_exists('mms1_des_energyspectr_py_fast')) + def test_load_hpca_l1b(self): + trange = ['2015-10-16/13:06', '2015-10-16/13:07'] + data = pyspedas.mms.hpca(probe=1, level='l1b', trange=trange, data_rate='brst') + data = pyspedas.mms.hpca(probe=1, level='l1b', trange=trange, data_rate='brst', datatype='ion') + data = pyspedas.mms.hpca(probe=1, level='l1b', trange=trange, data_rate='brst', datatype='combined') + data = pyspedas.mms.hpca(probe=1, level='l1b', trange=trange, data_rate='brst', datatype='rf_corr') + data = pyspedas.mms.hpca(probe=1, level='l1b', trange=trange, data_rate='brst', datatype='count_rate') + data = pyspedas.mms.hpca(probe=1, level='l1b', trange=trange, data_rate='brst', datatype='flux') + data = pyspedas.mms.hpca(probe=1, level='l1b', trange=trange, data_rate='brst', datatype='vel_dist') + data = pyspedas.mms.hpca(probe=1, level='l1b', trange=trange, data_rate='brst', datatype='bkgd_corr') + mms_hpca_calc_anodes(fov=[0, 360]) + self.assertTrue(data_exists('mms1_hpca_hplus_number_density')) + self.assertTrue(data_exists('mms1_hpca_heplus_number_density')) + self.assertTrue(data_exists('mms1_hpca_heplusplus_number_density')) + self.assertTrue(data_exists('mms1_hpca_oplus_number_density')) + self.assertTrue(data_exists('mms1_hpca_heplusplus_RF_corrected')) + self.assertTrue(data_exists('mms1_hpca_oplusplus_count_rate_elev_0-360')) + + if __name__ == '__main__': unittest.main() \ No newline at end of file diff --git a/pyspedas/mms/tests/setup_tests.py b/pyspedas/mms/tests/setup_tests.py index d71913bb..e0be1db7 100644 --- a/pyspedas/mms/tests/setup_tests.py +++ b/pyspedas/mms/tests/setup_tests.py @@ -1,4 +1,6 @@ import os import pickle -pickle.dump({'user': '', 'passwd': ''}, open(os.sep.join([os.path.expanduser('~'), 'mms_auth_info.pkl']), 'wb')) +MMS_AUTH_U = os.getenv('MMS_AUTH_U') +MMS_AUTH_P = os.getenv('MMS_AUTH_P') +pickle.dump({'user': MMS_AUTH_U, 'passwd': MMS_AUTH_P}, open(os.sep.join([os.path.expanduser('~'), 'mms_auth_info.pkl']), 'wb')) diff --git a/pyspedas/mms/tests/slice2d.py b/pyspedas/mms/tests/slice2d.py index efb7045b..b7d75b63 100644 --- a/pyspedas/mms/tests/slice2d.py +++ b/pyspedas/mms/tests/slice2d.py @@ -1,16 +1,132 @@ +import numpy as np import unittest from pyspedas.mms.particles.mms_part_slice2d import mms_part_slice2d +from pyspedas.particles.spd_units_string import spd_units_string class SliceTests(unittest.TestCase): + def test_notime(self): + nothing = mms_part_slice2d() + self.assertTrue(not nothing) + + def test_fpi_nospecies(self): + mms_part_slice2d(time='2015-10-16/13:06:30', probe='1', rotation='xy', display=False) + mms_part_slice2d(time='2015-10-16/13:06:30', probe='1', instrument='hpca', rotation='xy', display=False) + + def test_fpi_return_slice(self): + the_slice = mms_part_slice2d(time='2015-10-16/13:06:30', probe='1', rotation='xy', display=False, return_slice=True) + self.assertTrue(isinstance(the_slice, dict)) + + def test_fpi_brst_slice_x(self): + mms_part_slice2d(time='2015-10-16/13:06:30', slice_x=np.array([1, 0, 0]), probe='1', species='i', data_rate='brst', rotation='bv', save_png='test_fpi_brst_i_bv_slice_x', display=False) + + def test_fpi_brst_slice_norm(self): + mms_part_slice2d(time='2015-10-16/13:06:30', slice_norm=np.array([0, 0, 1]), probe='1', species='i', data_rate='brst', rotation='bv', save_png='test_fpi_brst_i_bv_slice_norm', display=False) + def test_fpi_brst_rotations(self): time = '2015-10-16/13:06:30' - rotations = ['xy', 'xz', 'bv', 'be', 'xvel', 'perp', 'perp_xy', 'perp_xz', 'perp_yz', 'b_exb', 'perp1-perp2'] - species = ['i', 'e'] + # rotations = ['xy', 'xz', 'bv', 'be', 'xvel', 'perp', 'perp_xy', 'perp_xz', 'perp_yz', 'b_exb', 'perp1-perp2'] + rotations = ['bv'] + species = ['i'] for spc in species: for rotation in rotations: mms_part_slice2d(time=time, probe='1', species=spc, data_rate='brst', rotation=rotation, save_png='test_fpi_brst_' + spc + '_' + rotation, display=False) + def test_fpi_subtract_bulk(self): + time = '2015-10-16/13:06:30' + mms_part_slice2d(time=time, probe='1', species='i', data_rate='brst', rotation='xy', + interpolation='2d', save_png='test_fpi_brst_subtract_bulk', + subtract_bulk=True, display=False) + + def test_fpi_avg_angle(self): + time = '2015-10-16/13:06:30' + mms_part_slice2d(time=time, probe='1', species='i', data_rate='brst', rotation='xy', + interpolation='geometric', save_png='test_fpi_brst_avg_angle', + average_angle=[-45, 45], display=False) + + def test_fpi_sum_angle(self): + time = '2015-10-16/13:06:30' + mms_part_slice2d(time=time, probe='1', species='i', data_rate='brst', rotation='xy', + interpolation='geometric', save_png='test_fpi_brst_sum_angle', + sum_angle=[-45, 45], display=False) + + def test_fpi_energy(self): + time = '2015-10-16/13:06:30' + mms_part_slice2d(time=time, probe='1', species='i', data_rate='brst', rotation='xy', + interpolation='geometric', save_png='test_fpi_brst_energy', + energy=True, display=False) + + def test_fpi_samples(self): + time = '2015-10-16/13:06:30' + mms_part_slice2d(time=time, probe='1', species='i', data_rate='brst', rotation='xy', + interpolation='geometric', save_png='test_fpi_brst_samples', + samples=3, display=False) + + def test_fpi_window(self): + time = '2015-10-16/13:06:30' + mms_part_slice2d(time=time, probe='1', species='i', data_rate='brst', rotation='xy', + interpolation='geometric', save_png='test_fpi_brst_window', + window=3, display=False) + + def test_fpi_window_center(self): + time = '2015-10-16/13:06:30' + mms_part_slice2d(time=time, probe='1', species='i', data_rate='brst', rotation='xy', + interpolation='geometric', save_png='test_fpi_brst_window_center', + window=3, center_time=True, display=False) + + def test_fpi_custom_rotation(self): + rot = np.zeros((3, 3)) + rot[:, 0] = [0.33796266 , -0.082956984 , 0.93749634] + rot[:, 1] = [0.64217210 , -0.70788234 , -0.29413872] + rot[:, 2] = [0.68803796 , 0.70144189 , -0.18596514] + + time = '2015-10-16/13:06:30' + mms_part_slice2d(time=time, probe='1', species='i', data_rate='brst', rotation='xy', + interpolation='geometric', save_png='test_fpi_brst_custom_rotation', + custom_rotation=rot, display=False) + + def test_fpi_2d_interp(self): + time = '2015-10-16/13:06:30' + mms_part_slice2d(time=time, probe='1', species='i', data_rate='brst', rotation='xy', + interpolation='2d', save_png='test_fpi_brst_2d_interp', display=False) + + def test_fpi_2d_interp_zdirrange(self): + time = '2015-10-16/13:06:30' + mms_part_slice2d(time=time, probe='1', species='i', data_rate='brst', rotation='xy', + interpolation='2d', save_png='test_fpi_brst_zdirrange', display=False, + zdirrange=[0, 2500]) + + def test_fpi_limits(self): + time = '2015-10-16/13:06:30' + mms_part_slice2d(time=time, probe='1', species='i', data_rate='brst', rotation='xy', erange=[0, 10000], + save_png='test_fpi_brst_erange', display=False) + + def test_fpi_electrons(self): + time = '2015-10-16/13:06:30' + mms_part_slice2d(time=time, probe='1', species='e', data_rate='brst', rotation='xy', + save_png='test_fpi_brst_electrons', display=False) + + def test_hpca(self): + time = '2015-10-16/13:06:30' + mms_part_slice2d(time=time, probe='1', species='hplus', instrument='hpca', data_rate='brst', rotation='xy', + save_png='test_hpca_brst', display=False) + + def test_hpca_trange(self): + trange = ['2015-10-16/13:06:20', '2015-10-16/13:06:40'] + mms_part_slice2d(trange=trange, probe='1', species='hplus', instrument='hpca', data_rate='brst', rotation='xy', + save_png='test_hpca_brst_trange', display=False) + + def test_units_string(self): + self.assertTrue(spd_units_string('counts') == 'Counts') + self.assertTrue(spd_units_string('rate') == 'Rate (#/sec)') + self.assertTrue(spd_units_string('eflux') == 'Energy Flux (eV / sec / $cm^2$ / ster / eV)') + self.assertTrue(spd_units_string('flux') == 'Flux (# / sec / $cm^2$ / ster / eV)') + self.assertTrue(spd_units_string('df') == 'f ($s^3$ / $cm^3$ / $km^3$)') + self.assertTrue(spd_units_string('df_cm') == 'f ($s^3$ / $cm^6$)') + self.assertTrue(spd_units_string('df_km') == 'f ($s^3$ / $km^6$)') + self.assertTrue(spd_units_string('e2flux') == '$Energy^2$ Flux ($eV^2$ / sec / $cm^2$ / ster /eV)') + self.assertTrue(spd_units_string('e3flux') == '$Energy^3$ Flux ($eV^3$ / sec / $cm^2$ / ster /eV)') + if __name__ == '__main__': unittest.main() diff --git a/pyspedas/mms/tests/wavpol.py b/pyspedas/mms/tests/wavpol.py index fdb0f439..e6f24cd0 100644 --- a/pyspedas/mms/tests/wavpol.py +++ b/pyspedas/mms/tests/wavpol.py @@ -1,6 +1,6 @@ import unittest import pyspedas -from pyspedas.utilities.data_exists import data_exists +from pytplot import data_exists from pyspedas.cotrans.fac_matrix_make import fac_matrix_make from pyspedas import tinterpol from pytplot import get_data, store_data @@ -24,7 +24,7 @@ def test_brst(self): fac_matrix_make(mms_fgm_name, other_dim='xgse', newname=mms_fgm_name + '_fac_mat') tinterpol('mms4_fgm_b_gse_srvy_l2_bvec_fac_mat', mms_scm_name) fac_mat = get_data('mms4_fgm_b_gse_srvy_l2_bvec_fac_mat-itrp') - scm_data = get_data(mms_scm_name) + scm_data = get_data(mms_scm_name, dt=True) scm_fac = [fac_mat.y[idx, :, :] @ scm_data.y[idx, :] for idx in range(0, len(scm_data.y[:, 0]))] store_data(mms_scm_name + '_fac', data={'x': scm_data.times, 'y': scm_fac}) # number of points for FFT diff --git a/pyspedas/omni/__init__.py b/pyspedas/omni/__init__.py index f10235d6..0a16eb5b 100644 --- a/pyspedas/omni/__init__.py +++ b/pyspedas/omni/__init__.py @@ -1,5 +1,6 @@ - from .load import load +from pyspedas.utilities.datasets import find_datasets + def data(trange=['2013-11-5', '2013-11-6'], datatype='1min', @@ -68,3 +69,7 @@ def data(trange=['2013-11-5', '2013-11-6'], get_support_data=get_support_data, get_ignore_data=get_ignore_data,varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + +def datasets(instrument=None, label=True): + return find_datasets(mission='ACE', instrument='OMNI', label=label) diff --git a/pyspedas/omni/load.py b/pyspedas/omni/load.py index 9e6a3c50..717d3e80 100644 --- a/pyspedas/omni/load.py +++ b/pyspedas/omni/load.py @@ -1,9 +1,10 @@ +import logging import warnings import astropy from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import cdf_to_tplot from .config import CONFIG @@ -26,16 +27,20 @@ def load(trange=['2013-11-5', '2013-11-6'], pyspedas.omni.data """ + file_res = 24*3600.0 if 'min' in datatype: pathformat = level + '_' + datatype + '/%Y/omni_' + level + '_' + datatype + '_%Y%m01_v??.cdf' elif 'hour' in datatype: pathformat = 'hourly/%Y/omni2_h0_mrg1hr_%Y%m01_v??.cdf' + file_res = 24*3600*183.0 # 1 file every 6 months + get_ignore_data = True # required to load these files else: - raise TypeError("%r are invalid keyword arguments" % datatype) + logging.error('Invalid datatype: '+ datatype) + return # find the full remote path names using the trange - remote_names = dailynames(file_format=pathformat, trange=trange) + remote_names = dailynames(file_format=pathformat, trange=trange, res=file_res) out_files = [] diff --git a/pyspedas/omni/tests/tests.py b/pyspedas/omni/tests/tests.py index e55e35b9..9d7cc813 100644 --- a/pyspedas/omni/tests/tests.py +++ b/pyspedas/omni/tests/tests.py @@ -1,17 +1,14 @@ - import os import unittest -import pandas as pd -from pyspedas.utilities.data_exists import data_exists - +from pytplot import data_exists import pyspedas + class LoadTestCases(unittest.TestCase): def test_utc_timestamp_regression(self): varname = 'BX_GSE' data_omni = pyspedas.omni.data(trange=['2010-01-01/00:00:00', '2010-01-02/00:00:00'],notplot=True,varformat=varname,time_clip=True) - date_time = pd.to_datetime(data_omni[varname]['x'],unit='s') - self.assertTrue(str(date_time[0]) == '2010-01-01 00:00:00') + self.assertTrue(str(data_omni[varname]['x'][0]) == '2010-01-01 00:00:00') def test_load_hro2_data(self): omni_vars = pyspedas.omni.data() @@ -40,9 +37,21 @@ def test_load_hro_5min_data(self): self.assertTrue(data_exists('BZ_GSM')) self.assertTrue(data_exists('proton_density')) + def test_load_hro_hour_data(self): + omni_vars = pyspedas.omni.data(level='hro2', datatype='hour', trange=['2013-03-01', '2013-03-02']) + self.assertTrue(data_exists('BX_GSE')) + self.assertTrue(data_exists('BY_GSE')) + self.assertTrue(data_exists('BZ_GSE')) + self.assertTrue(data_exists('BY_GSM')) + self.assertTrue(data_exists('BZ_GSM')) + + def test_load_invalid_datatype(self): + omni_vars = pyspedas.omni.data(datatype='1') + def test_downloadonly(self): files = pyspedas.omni.data(downloadonly=True, trange=['2014-2-15', '2014-2-16']) self.assertTrue(os.path.exists(files[0])) + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/particles/moments/moments_3d_omega_weights.py b/pyspedas/particles/moments/moments_3d_omega_weights.py index 3a7c4d9f..e5a41918 100644 --- a/pyspedas/particles/moments/moments_3d_omega_weights.py +++ b/pyspedas/particles/moments/moments_3d_omega_weights.py @@ -1,6 +1,6 @@ - import numpy as np + def moments_3d_omega_weights(theta, phi, dtheta, dphi): """ Helper function used by moments_3d diff --git a/pyspedas/particles/moments/spd_pgs_moments.py b/pyspedas/particles/moments/spd_pgs_moments.py index 4104ecef..ef6e31fc 100644 --- a/pyspedas/particles/moments/spd_pgs_moments.py +++ b/pyspedas/particles/moments/spd_pgs_moments.py @@ -1,6 +1,7 @@ from pyspedas.particles.moments.moments_3d import moments_3d + def spd_pgs_moments(data_in, sc_pot=0): """ @@ -19,4 +20,4 @@ def spd_pgs_moments(data_in, sc_pot=0): Dictionary containing moments """ - return moments_3d(data_in, sc_pot=sc_pot) \ No newline at end of file + return moments_3d(data_in, sc_pot=sc_pot) diff --git a/pyspedas/particles/moments/spd_pgs_moments_tplot.py b/pyspedas/particles/moments/spd_pgs_moments_tplot.py index d05e96ce..2db31771 100644 --- a/pyspedas/particles/moments/spd_pgs_moments_tplot.py +++ b/pyspedas/particles/moments/spd_pgs_moments_tplot.py @@ -5,6 +5,7 @@ logging.captureWarnings(True) logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) + def spd_pgs_moments_tplot(moments, x=None, prefix='', suffix=''): """ Creates tplot variables from moments dictionaries @@ -35,7 +36,6 @@ def spd_pgs_moments_tplot(moments, x=None, prefix='', suffix=''): logging.error('Error, the "moments" variable must be a hash table containing the moments') return - for key in moments.keys(): store_data(prefix + '_' + key + suffix, data={'x': x, 'y': moments[key]}) diff --git a/pyspedas/particles/spd_part_products/spd_pgs_do_fac.py b/pyspedas/particles/spd_part_products/spd_pgs_do_fac.py index fc9c9bba..226b8f6a 100644 --- a/pyspedas/particles/spd_part_products/spd_pgs_do_fac.py +++ b/pyspedas/particles/spd_part_products/spd_pgs_do_fac.py @@ -2,6 +2,7 @@ import numpy as np from astropy.coordinates import spherical_to_cartesian, cartesian_to_spherical + def spd_pgs_do_fac(data_in, mat): """ Applies field aligned coordinate transformation to input data @@ -30,4 +31,4 @@ def spd_pgs_do_fac(data_in, mat): data_out['theta'] = sphere_data[1].value*180.0/np.pi data_out['phi'] = sphere_data[2].value*180.0/np.pi - return data_out \ No newline at end of file + return data_out diff --git a/pyspedas/particles/spd_part_products/spd_pgs_limit_range.py b/pyspedas/particles/spd_part_products/spd_pgs_limit_range.py index 3b92ab33..d40109a1 100644 --- a/pyspedas/particles/spd_part_products/spd_pgs_limit_range.py +++ b/pyspedas/particles/spd_part_products/spd_pgs_limit_range.py @@ -67,4 +67,4 @@ def spd_pgs_limit_range(data, phi=None, theta=None, energy=None): data['bins'][data['energy'] < energy[0]] = 0 data['bins'][data['energy'] > energy[1]] = 0 - return data \ No newline at end of file + return data diff --git a/pyspedas/particles/spd_part_products/spd_pgs_make_e_spec.py b/pyspedas/particles/spd_part_products/spd_pgs_make_e_spec.py index 400e45d2..cd75d9e2 100644 --- a/pyspedas/particles/spd_part_products/spd_pgs_make_e_spec.py +++ b/pyspedas/particles/spd_part_products/spd_pgs_make_e_spec.py @@ -8,6 +8,7 @@ except ImportError: nanmean = np.nanmean + def spd_pgs_make_e_spec(data_in): """ Builds energy spectrogram from the particle data structure diff --git a/pyspedas/particles/spd_part_products/spd_pgs_make_phi_spec.py b/pyspedas/particles/spd_part_products/spd_pgs_make_phi_spec.py index 8f7ce2c5..00a9785f 100644 --- a/pyspedas/particles/spd_part_products/spd_pgs_make_phi_spec.py +++ b/pyspedas/particles/spd_part_products/spd_pgs_make_phi_spec.py @@ -10,6 +10,7 @@ except ImportError: nansum = np.nansum + def spd_pgs_make_phi_spec(data_in, resolution=None): """ Builds phi (longitudinal) spectrogram from the particle data structure diff --git a/pyspedas/particles/spd_part_products/spd_pgs_make_theta_spec.py b/pyspedas/particles/spd_part_products/spd_pgs_make_theta_spec.py index f29c8a4e..3b5f8b98 100644 --- a/pyspedas/particles/spd_part_products/spd_pgs_make_theta_spec.py +++ b/pyspedas/particles/spd_part_products/spd_pgs_make_theta_spec.py @@ -10,6 +10,7 @@ except ImportError: nansum = np.nansum + def spd_pgs_make_theta_spec(data_in, resolution=None, colatitude=False): """ Builds theta (latitudinal) spectrogram from simplified particle data structure. @@ -102,5 +103,3 @@ def spd_pgs_make_theta_spec(data_in, resolution=None, colatitude=False): y = y[1:] return (y, ave) - - diff --git a/pyspedas/particles/spd_part_products/spd_pgs_make_tplot.py b/pyspedas/particles/spd_part_products/spd_pgs_make_tplot.py index 37b1f839..fe7b598b 100644 --- a/pyspedas/particles/spd_part_products/spd_pgs_make_tplot.py +++ b/pyspedas/particles/spd_part_products/spd_pgs_make_tplot.py @@ -1,9 +1,10 @@ - +import logging import numpy as np from pytplot import store_data, options from pyspedas.particles.spd_units_string import spd_units_string + def spd_pgs_make_tplot(name, x=None, y=None, z=None, units='', ylog=False, zlog=True, colorbar='spedas', ytitle=None, ysubtitle=''): """ Create tplot variable with standard spectrogram settings @@ -40,7 +41,7 @@ def spd_pgs_make_tplot(name, x=None, y=None, z=None, units='', ylog=False, zlog= """ if not isinstance(x, np.ndarray) or not isinstance(y, np.ndarray) or not isinstance(z, np.ndarray) : - print('Error, must specify x, y and z parameters') + logging.error('Error, must specify x, y and z parameters') return if ytitle is None: @@ -54,4 +55,4 @@ def spd_pgs_make_tplot(name, x=None, y=None, z=None, units='', ylog=False, zlog= options(name, 'ysubtitle', ysubtitle) options(name, 'ztitle', spd_units_string(units, units_only=True)) options(name, 'Colormap', colorbar) - return name \ No newline at end of file + return name diff --git a/pyspedas/particles/spd_part_products/spd_pgs_progress_update.py b/pyspedas/particles/spd_part_products/spd_pgs_progress_update.py index b0ce2be3..b501e3b2 100644 --- a/pyspedas/particles/spd_part_products/spd_pgs_progress_update.py +++ b/pyspedas/particles/spd_part_products/spd_pgs_progress_update.py @@ -4,6 +4,7 @@ logging.captureWarnings(True) logging.basicConfig(format='%(asctime)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO) + def spd_pgs_progress_update(last_update_time=None, current_sample=None, total_samples=None, type_string=None): """ Helper routine prints status message indicating completion percent @@ -40,4 +41,4 @@ def spd_pgs_progress_update(last_update_time=None, current_sample=None, total_sa logging.info(type_string + ' is ' + str(round(100.0*current_sample/total_samples)) + '% done.') last_update_time = time() - return last_update_time \ No newline at end of file + return last_update_time diff --git a/pyspedas/particles/spd_part_products/spd_pgs_regrid.py b/pyspedas/particles/spd_part_products/spd_pgs_regrid.py index 41fbaa41..d2d7e96c 100644 --- a/pyspedas/particles/spd_part_products/spd_pgs_regrid.py +++ b/pyspedas/particles/spd_part_products/spd_pgs_regrid.py @@ -1,14 +1,15 @@ - +import logging import numpy as np from scipy.interpolate import NearestNDInterpolator from astropy.coordinates import spherical_to_cartesian + def spd_pgs_regrid(data, regrid_dimen): """ """ if len(regrid_dimen) != 2: - print('Invalid regrid dimensions; the dimensions should be [n_phi, n_theta]') + logging.error('Invalid regrid dimensions; the dimensions should be [n_phi, n_theta]') return n_energy = len(data['energy'][:, 0]) @@ -65,6 +66,7 @@ def spd_pgs_regrid(data, regrid_dimen): return output + def griddata(phi, theta, data): r = np.ones(len(phi)) phi_rad = phi*np.pi/180.0 @@ -72,4 +74,4 @@ def griddata(phi, theta, data): cart_temp = spherical_to_cartesian(r, theta_rad, phi_rad) points = np.stack(cart_temp).T - return NearestNDInterpolator(points, data) \ No newline at end of file + return NearestNDInterpolator(points, data) diff --git a/pyspedas/particles/spd_slice2d/slice1d_plot.py b/pyspedas/particles/spd_slice2d/slice1d_plot.py index 50eb9d2e..d2ffc4b7 100644 --- a/pyspedas/particles/spd_slice2d/slice1d_plot.py +++ b/pyspedas/particles/spd_slice2d/slice1d_plot.py @@ -1,3 +1,4 @@ +import logging import numpy as np import matplotlib.pyplot as plt from .slice2d_getinfo import slice2d_getinfo @@ -30,7 +31,7 @@ def plot(the_slice, direction, value, xrange=None, yrange=None): direction = direction.lower() if direction not in ['x', 'y']: - print('Invalid direction specified. Valid options are: x, y') + logging.error('Invalid direction specified. Valid options are: x, y') return if xrange is None: diff --git a/pyspedas/particles/spd_slice2d/slice2d.py b/pyspedas/particles/spd_slice2d/slice2d.py index 43cb431b..69cc7dd2 100644 --- a/pyspedas/particles/spd_slice2d/slice2d.py +++ b/pyspedas/particles/spd_slice2d/slice2d.py @@ -1,3 +1,4 @@ +import logging import numpy as np from .slice2d_intrange import slice2d_intrange @@ -157,7 +158,7 @@ def slice2d(dists, if trange is None: if time is None: - print('Please specify a time or time range over which to compute the slice.') + logging.error('Please specify a time or time range over which to compute the slice.') return if window is None and samples is None: # use single closest distribution by default @@ -167,7 +168,7 @@ def slice2d(dists, 'perp_xy', 'perp_xz', 'perp_yz', 'b_exb', 'perp1-perp2'] if rotation not in valid_rotations: - print('Invalid rotation requested; valid options: ' + ', '.join(valid_rotations)) + logging.error('Invalid rotation requested; valid options: ' + ', '.join(valid_rotations)) return if interpolation == '2d': @@ -181,7 +182,7 @@ def slice2d(dists, if resolution is None: resolution = 500 else: - print('Unknown interpolation method: ' + interpolation + '; valid options: "geometric", "2d"') + logging.error('Unknown interpolation method: ' + interpolation + '; valid options: "geometric", "2d"') return if time is not None: @@ -288,7 +289,7 @@ def slice2d(dists, geo_shift = [0, 0, 0] if subtract_bulk: - vectors = slice2d_subtract(rot_matrix['vectors'], vbulk) + vectors = slice2d_subtract(rot_matrix['vectors'], rot_matrix['vbulk']) if vectors is not None: rot_matrix['vectors'] = vectors @@ -338,5 +339,5 @@ def slice2d(dists, 'n_samples': len(times_ind), **the_slice} - print('Finished slice at ' + time_string(tr[0], fmt='%Y-%m-%d %H:%M:%S.%f')) + logging.info('Finished slice at ' + time_string(tr[0], fmt='%Y-%m-%d %H:%M:%S.%f')) return out diff --git a/pyspedas/particles/spd_slice2d/slice2d_collate.py b/pyspedas/particles/spd_slice2d/slice2d_collate.py index ecf34902..b678bfed 100644 --- a/pyspedas/particles/spd_slice2d/slice2d_collate.py +++ b/pyspedas/particles/spd_slice2d/slice2d_collate.py @@ -1,3 +1,4 @@ +import logging import warnings from copy import deepcopy import numpy as np @@ -40,7 +41,7 @@ def slice2d_collate(data, weight, sphere, previous_out=None, sum_samples=False): dp_in = dp_in[valid] dt_in = dt_in[valid] else: - print('No valid data in distribution(s).') + logging.error('No valid data in distribution(s).') return if previous_out is None: @@ -68,4 +69,3 @@ def slice2d_collate(data, weight, sphere, previous_out=None, sum_samples=False): 'dp': dp_out, 'dt': dt_out } - diff --git a/pyspedas/particles/spd_slice2d/slice2d_custom_rotation.py b/pyspedas/particles/spd_slice2d/slice2d_custom_rotation.py index 0b2b8110..55d2b68a 100644 --- a/pyspedas/particles/spd_slice2d/slice2d_custom_rotation.py +++ b/pyspedas/particles/spd_slice2d/slice2d_custom_rotation.py @@ -1,3 +1,4 @@ +import logging import numpy as np from .slice2d_get_support import slice2d_get_support @@ -23,7 +24,7 @@ def slice2d_custom_rotation(custom_rotation=None, matrix = slice2d_get_support(custom_rotation, trange, matrix=True) - print('Applying custom rotation') + logging.info('Applying custom rotation') # Transform particle and support vectors if vectors is not None: diff --git a/pyspedas/particles/spd_slice2d/slice2d_geo.py b/pyspedas/particles/spd_slice2d/slice2d_geo.py index 461d2cea..462fd941 100644 --- a/pyspedas/particles/spd_slice2d/slice2d_geo.py +++ b/pyspedas/particles/spd_slice2d/slice2d_geo.py @@ -1,8 +1,10 @@ +import logging from copy import deepcopy from time import time import numpy as np from pyspedas.particles.spd_slice2d.quaternions import qtom, qcompose + def slice2d_geo(data, resolution, r, phi, theta, dr, dp, dt, orient_matrix=None, rotation_matrix=None, custom_matrix=None, msg_prefix='', shift=None, average_angle=None, sum_angle=None): """ @@ -150,7 +152,7 @@ def slice2d_geo(data, resolution, r, phi, theta, dr, dp, dt, orient_matrix=None, else: num_angles = na msg = msg_prefix + str(int(100*((j+1)*num_points + i)/(num_angles*num_points))) + '% complete' - print(msg) + logging.info(msg) previous_time = time() # average areas where bins overlapped diff --git a/pyspedas/particles/spd_slice2d/slice2d_get_data.py b/pyspedas/particles/spd_slice2d/slice2d_get_data.py index 5416c369..16da6f36 100644 --- a/pyspedas/particles/spd_slice2d/slice2d_get_data.py +++ b/pyspedas/particles/spd_slice2d/slice2d_get_data.py @@ -1,3 +1,4 @@ +import logging from copy import deepcopy import numpy as np @@ -45,7 +46,7 @@ def slice2d_get_data(dists, trange=None, energy=False, erange=None): times_idx = slice2d_intrange(dists, trange) if len(times_idx) == 0: - print('No data in the time range') + logging.error('No data in the time range') return weight = np.zeros(dists[0]['bins'][:, :, :].shape) diff --git a/pyspedas/particles/spd_slice2d/slice2d_plot.py b/pyspedas/particles/spd_slice2d/slice2d_plot.py index 1a6ab693..f5cc8f15 100644 --- a/pyspedas/particles/spd_slice2d/slice2d_plot.py +++ b/pyspedas/particles/spd_slice2d/slice2d_plot.py @@ -10,10 +10,11 @@ def plot(the_slice, xrange=None, yrange=None, zrange=None, - colormap='spedas', + colormap=None, olines=8, contours=False, plotsize=10, + title=None, save_png=None, save_jpeg=None, save_svg=None, @@ -36,6 +37,14 @@ def plot(the_slice, else: spec_options['norm'] = mpl.colors.LogNorm(vmin=zrange[0], vmax=zrange[1]) + style = pytplot.tplot_opt_glob.get('style') + + if style is None: + if colormap is None: + colormap = 'spedas' + else: + plt.style.use(style) + if colormap == 'spedas': _colors = pytplot.spedas_colorbar spd_map = [(np.array([r, g, b])).astype(np.float64) / 256 for r, g, b in zip(_colors.r, _colors.g, _colors.b)] @@ -45,6 +54,10 @@ def plot(the_slice, spec_options['cmap'] = cmap + char_size = pytplot.tplot_opt_glob.get('charsize') + if char_size is None: + char_size = 12 + fig, axes = plt.subplots() fig.set_size_inches(plotsize, plotsize) @@ -54,11 +67,17 @@ def plot(the_slice, if yrange is not None: axes.set_ylim(yrange) - info = slice2d_getinfo(the_slice) + axis_font_size = pytplot.tplot_opt_glob.get('axis_font_size') - axes.set_title(info['title']) - axes.set_ylabel(info['ytitle']) - axes.set_xlabel(info['xtitle']) + if axis_font_size is not None: + axes.tick_params(axis='x', labelsize=axis_font_size) + axes.tick_params(axis='y', labelsize=axis_font_size) + + info = slice2d_getinfo(the_slice, title=title) + + axes.set_title(info['title'], fontsize=char_size) + axes.set_ylabel(info['ytitle'], fontsize=char_size) + axes.set_xlabel(info['xtitle'], fontsize=char_size) fig.subplots_adjust(left=0.14, right=0.86, top=0.86, bottom=0.14) @@ -66,11 +85,14 @@ def plot(the_slice, pad, width = 0.02, 0.01 cax = fig.add_axes([box.xmax + pad, box.ymin, width, box.height]) + if axis_font_size is not None: + cax.tick_params(labelsize=axis_font_size) + im = axes.pcolormesh(the_slice['xgrid'], the_slice['ygrid'], the_slice['data'].T, **spec_options) colorbar = fig.colorbar(im, cax=cax) - colorbar.set_label(info['ztitle']) + colorbar.set_label(info['ztitle'], fontsize=char_size) # draw lines at the origin axes.axvline(x=0, linestyle=(0, (5, 10)), color='black') diff --git a/pyspedas/particles/spd_slice2d/slice2d_rotate.py b/pyspedas/particles/spd_slice2d/slice2d_rotate.py index 2898e367..2bc72489 100644 --- a/pyspedas/particles/spd_slice2d/slice2d_rotate.py +++ b/pyspedas/particles/spd_slice2d/slice2d_rotate.py @@ -1,3 +1,4 @@ +import logging import numpy as np from .spd_cal_rot import spd_cal_rot @@ -12,11 +13,11 @@ def slice2d_rotate(rotation=None, vectors=None, bfield=None, vbulk=None, sunvec= req_vbulk = ['bv', 'be', 'xvel', 'perp', 'perp2', 'b_exb', 'perp1-perp2'] if bfield is None and rotation in req_bfield: - print('Rotation: ' + rotation + ' requires B-field data') + logging.error('Rotation: ' + rotation + ' requires B-field data') return if vbulk is None and rotation in req_vbulk: - print('Rotation: ' + rotation + ' requires bulk velocity data') + logging.error('Rotation: ' + rotation + ' requires bulk velocity data') return if rotation == 'bv': @@ -48,11 +49,11 @@ def slice2d_rotate(rotation=None, vectors=None, bfield=None, vbulk=None, sunvec= # [B, (BxV)xB] (this is the parallel - perp 2 plane) matrix = spd_cal_rot(bfield, np.cross(np.cross(bfield, vbulk), bfield)) else: - print('Unknown rotation: ' + rotation) + logging.error('Unknown rotation: ' + rotation) return if rotation != 'xy': - print('Aligning slice plane to: ' + rotation) + logging.info('Aligning slice plane to: ' + rotation) # Transform particle and support vectors if vectors is not None: @@ -62,10 +63,10 @@ def slice2d_rotate(rotation=None, vectors=None, bfield=None, vbulk=None, sunvec= transformed[vector_idx] = (matrix.T @ vectors[vector_idx, :]).flatten() vectors = transformed if vbulk is not None: - vbulk = matrix @ vbulk + vbulk = matrix.T @ vbulk if bfield is not None: - bfield = matrix @ bfield + bfield = matrix.T @ bfield if sunvec is not None: - sunvec = matrix @ sunvec + sunvec = matrix.T @ sunvec return {'matrix': matrix, 'vectors': vectors, 'bfield': bfield, 'vbulk': vbulk, 'sunvec': sunvec} diff --git a/pyspedas/particles/spd_slice2d/slice2d_smooth.py b/pyspedas/particles/spd_slice2d/slice2d_smooth.py index 5cd018e3..1f3cd932 100644 --- a/pyspedas/particles/spd_slice2d/slice2d_smooth.py +++ b/pyspedas/particles/spd_slice2d/slice2d_smooth.py @@ -1,3 +1,4 @@ +import logging import numpy as np import scipy.signal as signal @@ -42,6 +43,6 @@ def slice2d_smooth(the_slice, width): the_slice['data'] = signal.convolve2d(the_slice['data'], kernel, mode='same') else: - print('Smoothing not applied. Smoothing value must be >= 2') + logging.error('Smoothing not applied. Smoothing value must be >= 2') return the_slice diff --git a/pyspedas/particles/spd_slice2d/slice2d_subtract.py b/pyspedas/particles/spd_slice2d/slice2d_subtract.py index b8e5fe04..475a29ce 100644 --- a/pyspedas/particles/spd_slice2d/slice2d_subtract.py +++ b/pyspedas/particles/spd_slice2d/slice2d_subtract.py @@ -1,3 +1,4 @@ +import logging import numpy as np @@ -10,11 +11,11 @@ def slice2d_subtract(vectors=None, velocity=None): return if vectors.shape[1] != 3 or len(velocity) != 3: - print('Invalid vector dimensions, cannot subtract velocity') + logging.error('Invalid vector dimensions, cannot subtract velocity') return if np.sum(~np.isfinite((velocity))): - print('Invalid bulk velocity data, cannot subtract velocity') + logging.error('Invalid bulk velocity data, cannot subtract velocity') return if not isinstance(velocity, np.ndarray): diff --git a/pyspedas/particles/spd_slice2d/tplot_average.py b/pyspedas/particles/spd_slice2d/tplot_average.py index 154cf481..48375564 100644 --- a/pyspedas/particles/spd_slice2d/tplot_average.py +++ b/pyspedas/particles/spd_slice2d/tplot_average.py @@ -1,9 +1,10 @@ +import logging import numpy as np from pytplot import get_data -from pyspedas import time_double +from pyspedas import time_string -def tplot_average(tvar, trange): +def tplot_average(tvar, trange, quiet=False): """ Returns the average value of a tplot variable over a specified time range. @@ -19,22 +20,23 @@ def tplot_average(tvar, trange): ------- Average value of the tplot variable """ - data = get_data(tvar) + data = get_data(tvar, dt=True) if data is None: - print('Error reading: ' + tvar) + logging.error('Error reading: ' + tvar) return if len(trange) != 2: - print('Error: time range must be two element array.') + logging.error('Error: time range must be two element array.') return - trange = time_double(trange) + trange = time_string(trange) - t0 = np.min(trange) - t1 = np.max(trange) + t0 = np.datetime64(trange[0]) + t1 = np.datetime64(trange[-1]) - print('Averaging ' + tvar) + if not quiet: + logging.info('Averaging ' + tvar) # find the data within the time range indices = np.argwhere((data.times <= t1) & (data.times >= t0)) diff --git a/pyspedas/particles/spd_units_string.py b/pyspedas/particles/spd_units_string.py index 3a7887be..b9643e79 100644 --- a/pyspedas/particles/spd_units_string.py +++ b/pyspedas/particles/spd_units_string.py @@ -35,4 +35,4 @@ def spd_units_string(units, units_only=False): if units_only: return out[1] - return ''.join(out) \ No newline at end of file + return ''.join(out) diff --git a/pyspedas/poes/__init__.py b/pyspedas/poes/__init__.py index 90c15c63..3d914bcb 100644 --- a/pyspedas/poes/__init__.py +++ b/pyspedas/poes/__init__.py @@ -1,5 +1,5 @@ - from .load import load +from pyspedas.utilities.datasets import find_datasets def sem(trange=['2018-11-5', '2018-11-6'], @@ -66,3 +66,7 @@ def sem(trange=['2018-11-5', '2018-11-6'], """ return load(instrument='sem', probe=probe, trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + +def datasets(instrument=None, label=True): + return find_datasets(mission='POES', instrument='sem2', label=label) diff --git a/pyspedas/poes/load.py b/pyspedas/poes/load.py index 4bd3162c..e6f865cb 100644 --- a/pyspedas/poes/load.py +++ b/pyspedas/poes/load.py @@ -1,6 +1,6 @@ from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import cdf_to_tplot from .config import CONFIG diff --git a/pyspedas/poes/tests/tests.py b/pyspedas/poes/tests/tests.py index b9d88702..77bbb82d 100644 --- a/pyspedas/poes/tests/tests.py +++ b/pyspedas/poes/tests/tests.py @@ -1,11 +1,15 @@ - import os import unittest -from pyspedas.utilities.data_exists import data_exists +from pytplot import data_exists from pytplot import get_data import pyspedas + class LoadTestCases(unittest.TestCase): + def test_load_notplot(self): + sem_vars = pyspedas.poes.sem(notplot=True) + self.assertTrue('ted_ele_tel0_low_eflux' in sem_vars) + def test_load_sem_data(self): sem_vars = pyspedas.poes.sem(time_clip=True) self.assertTrue(data_exists('ted_ele_tel0_low_eflux')) @@ -23,5 +27,6 @@ def test_downloadonly(self): files = pyspedas.poes.sem(downloadonly=True, probe='noaa19') self.assertTrue(os.path.exists(files[0])) + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/polar/__init__.py b/pyspedas/polar/__init__.py index 5a1d417d..d4695a68 100644 --- a/pyspedas/polar/__init__.py +++ b/pyspedas/polar/__init__.py @@ -1,5 +1,6 @@ - from .load import load +from pyspedas.utilities.datasets import find_datasets + def mfe(trange=['2003-10-28', '2003-10-29'], datatype='k0', @@ -720,3 +721,7 @@ def orbit(trange=['2003-10-28', '2003-10-29'], """ return load(instrument='spha', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + +def datasets(instrument=None, label=True): + return find_datasets(mission='Polar', instrument=instrument, label=label) diff --git a/pyspedas/polar/load.py b/pyspedas/polar/load.py index 897e010f..a28a5455 100644 --- a/pyspedas/polar/load.py +++ b/pyspedas/polar/load.py @@ -1,6 +1,6 @@ from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import cdf_to_tplot from .config import CONFIG diff --git a/pyspedas/polar/tests/tests.py b/pyspedas/polar/tests/tests.py index c7e8ca74..afa807c0 100644 --- a/pyspedas/polar/tests/tests.py +++ b/pyspedas/polar/tests/tests.py @@ -1,10 +1,9 @@ - import os import unittest -from pyspedas.utilities.data_exists import data_exists - +from pytplot import data_exists import pyspedas + class LoadTestCases(unittest.TestCase): def test_downloadonly(self): files = pyspedas.polar.efi(downloadonly=True) @@ -53,10 +52,15 @@ def test_load_pixie_data(self): pixie_vars = pyspedas.polar.pixie() self.assertTrue(data_exists('TXF_HIGH')) + def test_load_vis_data(self): + vis_vars = pyspedas.polar.vis(notplot=True) + self.assertTrue('Image_Counts' in vis_vars) + def test_load_orbit_data(self): orbit_vars = pyspedas.polar.orbit() self.assertTrue(data_exists('AVG_SPIN_RATE')) self.assertTrue(data_exists('SPIN_PHASE')) + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/psp/__init__.py b/pyspedas/psp/__init__.py index ed418f5f..7909a4dc 100644 --- a/pyspedas/psp/__init__.py +++ b/pyspedas/psp/__init__.py @@ -17,7 +17,8 @@ def fields(trange=['2018-11-5', '2018-11-6'], no_update=False, time_clip=False, username=None, - password=None + password=None, + last_version=False ): """ This function loads Parker Solar Probe FIELDS data @@ -100,6 +101,8 @@ def fields(trange=['2018-11-5', '2018-11-6'], password: str Password to use for authentication + last_version: bool + If True, only download the highest-numbered file version Returns ---------- List of tplot variables created. @@ -135,12 +138,14 @@ def fields(trange=['2018-11-5', '2018-11-6'], instrument='fields', trange=trange, datatype=datatype, spec_types=spec_types, level=level, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update, - username=username, password=password + username=username, password=password,last_version=last_version ) if loaded_vars is None or notplot or downloadonly: return loaded_vars + qf_root = 'psp_fld_l2_quality_flags'+suffix + # If variables are loaded that quality flag filtering supports -- # Make sure the quality flag variable is also loaded and linked. mag_rtnvars = [x for x in loaded_vars if 'fld_l2_mag_RTN' in x ] @@ -150,9 +155,9 @@ def fields(trange=['2018-11-5', '2018-11-6'], & ('psp_fld_l2_quality_flags'+suffix not in loaded_vars): loaded_extra = load( instrument='fields', trange=trange, datatype=datatype, spec_types=spec_types, level=level, - suffix=suffix, get_support_data=True, varformat=varformat, varnames=['psp_fld_l2_quality_flags'], + suffix=suffix, get_support_data=True, varformat=varformat, varnames=['psp_fld_l2_quality_flags'], downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update, - username=username, password=password + username=username, password=password,last_version=last_version ) qf_root = 'psp_fld_l2_quality_flags'+suffix if 'psp_fld_l2_quality_flags'+suffix in loaded_extra else None loaded_vars += loaded_extra @@ -183,7 +188,8 @@ def spc(trange=['2018-11-5', '2018-11-6'], no_update=False, time_clip=False, username=None, - password=None + password=None, + last_version=False ): """ This function loads Parker Solar Probe Solar Probe Cup data @@ -240,6 +246,9 @@ def spc(trange=['2018-11-5', '2018-11-6'], password: str Password to use for authentication + last_version: bool + If True, only download the highest-numbered file version + Returns ---------- List of tplot variables created. @@ -262,7 +271,7 @@ def spc(trange=['2018-11-5', '2018-11-6'], return load(instrument='spc', trange=trange, datatype=datatype, level=level, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, - notplot=notplot, time_clip=time_clip, no_update=no_update, username=username, password=password) + notplot=notplot, time_clip=time_clip, no_update=no_update, username=username, password=password, last_version=last_version) def spe(trange=['2018-11-5', '2018-11-6'], datatype='spa_sf1_32e', @@ -274,7 +283,8 @@ def spe(trange=['2018-11-5', '2018-11-6'], downloadonly=False, notplot=False, no_update=False, - time_clip=False + time_clip=False, + last_version=False ): """ This function loads Parker Solar Probe SWEAP/SPAN-e data @@ -326,6 +336,9 @@ def spe(trange=['2018-11-5', '2018-11-6'], time_clip: bool Time clip the variables to exactly the range specified in the trange keyword + last_version: bool + If True, only download the highest-numbered file version + Returns ---------- List of tplot variables created. @@ -333,7 +346,7 @@ def spe(trange=['2018-11-5', '2018-11-6'], """ return load(instrument='spe', trange=trange, datatype=datatype, level=level, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, - downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update,last_version=last_version) def spi(trange=['2018-11-5', '2018-11-6'], datatype='sf00_l3_mom', @@ -347,7 +360,8 @@ def spi(trange=['2018-11-5', '2018-11-6'], no_update=False, time_clip=False, username=None, - password=None + password=None, + last_version=False ): """ This function loads Parker Solar Probe SWEAP/SPAN-i data @@ -406,6 +420,9 @@ def spi(trange=['2018-11-5', '2018-11-6'], password: str Password to use for authentication + last_version: bool + If True, only download the highest-numbered file version + Returns ---------- List of tplot variables created. @@ -419,7 +436,7 @@ def spi(trange=['2018-11-5', '2018-11-6'], return load(instrument='spi', trange=trange, datatype=datatype, level=level, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update, - username=username, password=password + username=username, password=password,last_version=last_version ) def epihi(trange=['2018-11-5', '2018-11-6'], @@ -432,7 +449,8 @@ def epihi(trange=['2018-11-5', '2018-11-6'], downloadonly=False, notplot=False, no_update=False, - time_clip=False): + time_clip=False, + last_version=False): """ This function loads Parker Solar Probe ISoIS/EPI-Hi data @@ -476,6 +494,9 @@ def epihi(trange=['2018-11-5', '2018-11-6'], time_clip: bool Time clip the variables to exactly the range specified in the trange keyword + last_version: bool + If True, only download the highest-numbered file version + Returns ---------- List of tplot variables created. @@ -483,7 +504,7 @@ def epihi(trange=['2018-11-5', '2018-11-6'], """ return load(instrument='epihi', trange=trange, datatype=datatype, level=level, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, - downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update,last_version=last_version) def epilo(trange=['2018-11-5', '2018-11-6'], datatype='pe', @@ -495,7 +516,8 @@ def epilo(trange=['2018-11-5', '2018-11-6'], downloadonly=False, notplot=False, no_update=False, - time_clip=False): + time_clip=False, + last_version=False): """ This function loads Parker Solar Probe ISoIS/EPI-Lo data @@ -539,6 +561,9 @@ def epilo(trange=['2018-11-5', '2018-11-6'], time_clip: bool Time clip the variables to exactly the range specified in the trange keyword + last_version: bool + If True, only download the highest-numbered file version + Returns ---------- List of tplot variables created. @@ -546,7 +571,7 @@ def epilo(trange=['2018-11-5', '2018-11-6'], """ return load(instrument='epilo', trange=trange, datatype=datatype, level=level, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, - downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update,last_version=last_version) def epi(trange=['2018-11-5', '2018-11-6'], datatype='summary', @@ -558,7 +583,8 @@ def epi(trange=['2018-11-5', '2018-11-6'], downloadonly=False, notplot=False, no_update=False, - time_clip=False): + time_clip=False, + last_version=False): """ This function loads Parker Solar Probe ISoIS/EPI (merged summary) data @@ -602,6 +628,9 @@ def epi(trange=['2018-11-5', '2018-11-6'], time_clip: bool Time clip the variables to exactly the range specified in the trange keyword + last_version: bool + If True, only download the highest-numbered file version + Returns ---------- List of tplot variables created. @@ -609,5 +638,5 @@ def epi(trange=['2018-11-5', '2018-11-6'], """ return load(instrument='epi', trange=trange, datatype=datatype, level=level, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, - downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update,last_version=last_version) diff --git a/pyspedas/psp/load.py b/pyspedas/psp/load.py index 03f7e178..257844f9 100644 --- a/pyspedas/psp/load.py +++ b/pyspedas/psp/load.py @@ -1,17 +1,17 @@ from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import cdf_to_tplot - +from .rfs import rfs_variables_to_load from .config import CONFIG -def load(trange=['2018-11-5', '2018-11-6'], - instrument='fields', - datatype='mag_RTN', - spec_types=None, # for DFB AC spectral data +def load(trange=['2018-11-5', '2018-11-6'], + instrument='fields', + datatype='mag_RTN', + spec_types=None, # for DFB AC spectral data level='l2', - suffix='', - get_support_data=False, + suffix='', + get_support_data=False, varformat=None, varnames=[], downloadonly=False, @@ -19,8 +19,8 @@ def load(trange=['2018-11-5', '2018-11-6'], no_update=False, time_clip=False, username=None, - password=None - ): + password=None, + last_version=False): """ This function loads Parker Solar Probe data into tplot variables; this function is not meant to be called directly; instead, see the wrappers: @@ -33,7 +33,6 @@ def load(trange=['2018-11-5', '2018-11-6'], psp.epi ISoIS/EPI (merged Hi-Lo) data """ - # remote path formats generally are going to be all lowercase except for # on the Berkeley FIELDS server if (username is not None) and (datatype in ['mag_RTN_1min', @@ -58,7 +57,7 @@ def load(trange=['2018-11-5', '2018-11-6'], if datatype in ['mag_rtn', 'mag_sc']: pathformat = instrument + '/' + level + '/' + datatype + '/%Y/psp_fld_' + level + '_' + datatype + '_%Y%m%d%H_v??.cdf' file_resolution = 6*3600. - elif datatype in ['mag_rtn_1min', 'mag_sc_1min', 'rfs_hfr', 'rfs_lfr', 'rfs_burst', 'f2_100bps']: + elif datatype in ['mag_rtn_1min', 'mag_sc_1min', 'rfs_hfr', 'rfs_lfr', 'rfs_burst', 'f2_100bps', 'aeb']: pathformat = instrument + '/' + level + '/' + datatype + '/%Y/psp_fld_' + level + '_' + datatype + '_%Y%m%d_v??.cdf' elif datatype in ['mag_rtn_4_per_cycle', 'mag_rtn_4_sa_per_cyc']: pathformat = instrument + '/' + level + '/mag_rtn_4_per_cycle/%Y/psp_fld_' + level + '_mag_rtn_4_sa_per_cyc_%Y%m%d_v??.cdf' @@ -71,7 +70,7 @@ def load(trange=['2018-11-5', '2018-11-6'], for item in spec_types: loaded_data = load(trange=trange, instrument=instrument, datatype=datatype + '_' + item, level=level, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, - downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update, last_version=last_version) if loaded_data != []: out_vars.extend(loaded_data) return out_vars @@ -95,14 +94,14 @@ def load(trange=['2018-11-5', '2018-11-6'], else: pathformat = instrument + '/' + level + '/' + datatype + '/%Y/%m/psp_fld_' + level + '_' + datatype + '_%Y%m%d%H_v??.cdf' - # unpublished data (only download v02 mag data which would be published) + # unpublished data elif username != None: if datatype in ['mag_RTN', 'mag_SC']: - pathformat = instrument + '/' + level + '/' + datatype + '/%Y/%m/psp_fld_' + level + '_' + datatype + '_%Y%m%d%H_v02.cdf' + pathformat = instrument + '/' + level + '/' + datatype + '/%Y/%m/psp_fld_' + level + '_' + datatype + '_%Y%m%d%H_v??.cdf' file_resolution = 6*3600. elif datatype in ['mag_RTN_1min', 'mag_RTN_4_Sa_per_Cyc', 'mag_SC_1min', 'mag_SC_4_Sa_per_Cyc']: - pathformat = instrument + '/' + level + '/' + datatype + '/%Y/%m/psp_fld_' + level + '_' + datatype + '_%Y%m%d_v02.cdf' + pathformat = instrument + '/' + level + '/' + datatype + '/%Y/%m/psp_fld_' + level + '_' + datatype + '_%Y%m%d_v??.cdf' elif datatype == 'sqtn_rfs_V1V2': pathformat = instrument + '/' + level + '/' + datatype + '/%Y/%m/psp_fld_' + level + '_' + datatype + '_%Y%m%d_v?.?.cdf' @@ -115,6 +114,10 @@ def load(trange=['2018-11-5', '2018-11-6'], pathformat = instrument + '/' + level + '/' + datatype + '/%Y/psp_fld_' + level + '_' + datatype + '_%Y%m%d%H_v??.cdf' file_resolution = 6*3600. + # Files on Berkeley server are stored in monthly directories + if username != None: + pathformat = pathformat.replace('/%Y/psp_fld', '/%Y/%m/psp_fld') + elif instrument == 'spc': prefix = 'psp_spc_' if username is None: @@ -150,7 +153,7 @@ def load(trange=['2018-11-5', '2018-11-6'], if username is None: files = download(remote_file=remote_names, remote_path=CONFIG['remote_data_dir'], - local_path=CONFIG['local_data_dir'], no_download=no_update) + local_path=CONFIG['local_data_dir'], no_download=no_update,last_version=last_version) else: if instrument == 'fields': try: @@ -158,22 +161,22 @@ def load(trange=['2018-11-5', '2018-11-6'], files = download( remote_file=remote_names, remote_path=CONFIG['fields_remote_data_dir'], local_path=CONFIG['local_data_dir'], no_download=no_update, - username=username, password=password, basic_auth=True + username=username, password=password, basic_auth=True,last_version=last_version ) except: files = download(remote_file=remote_names, remote_path=CONFIG['remote_data_dir'], - local_path=CONFIG['local_data_dir'], no_download=no_update) + local_path=CONFIG['local_data_dir'], no_download=no_update,last_version=last_version) elif instrument in ['spc','spi']: try: print("Downloading unpublished SWEAP Data....") files = download( remote_file=remote_names, remote_path=CONFIG['sweap_remote_data_dir'], local_path=CONFIG['local_data_dir'], no_download=no_update, - username=username, password=password, basic_auth=True + username=username, password=password, basic_auth=True,last_version=last_version ) except: files = download(remote_file=remote_names, remote_path=CONFIG['remote_data_dir'], - local_path=CONFIG['local_data_dir'], no_download=no_update) + local_path=CONFIG['local_data_dir'], no_download=no_update,last_version=last_version) if files is not None: @@ -185,6 +188,14 @@ def load(trange=['2018-11-5', '2018-11-6'], if downloadonly: return out_files + # find the list of varnames for RFS data + # these files have > 1500 variables, but + # we only load ~50 + if 'rfs' in datatype.lower() and varformat is None and varnames == []: + varnames = rfs_variables_to_load(out_files) + # we'll need the support data for the quality flags + get_support_data = True + tvars = cdf_to_tplot(out_files, suffix=suffix, prefix=prefix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, notplot=notplot) diff --git a/pyspedas/psp/rfs.py b/pyspedas/psp/rfs.py new file mode 100644 index 00000000..f4dc645e --- /dev/null +++ b/pyspedas/psp/rfs.py @@ -0,0 +1,30 @@ +import cdflib + + +def rfs_variables_to_load(files): + """ + This function finds a list of variables to load + from the RFS files (essentially the same behavior + as the IDL code). + """ + out = [] + if len(files) == 0: + return [] + # the variables should be the same across all files + file = files[0] + cdf_file = cdflib.CDF(file) + cdf_info = cdf_file.cdf_info() + variables = cdf_info['rVariables'] + cdf_info['zVariables'] + for variable in variables: + if variable[0:7] != 'psp_fld': + continue + try: + elements = cdf_file.varget(variable) + except ValueError: + continue + if elements is None: + continue + if variable in out: + continue + out.append(variable) + return out diff --git a/pyspedas/psp/tests/tests.py b/pyspedas/psp/tests/tests.py index c8baba48..047487cb 100644 --- a/pyspedas/psp/tests/tests.py +++ b/pyspedas/psp/tests/tests.py @@ -1,38 +1,123 @@ - import os import unittest -from pyspedas.utilities.data_exists import data_exists - +from pytplot import data_exists import pyspedas + class LoadTestCases(unittest.TestCase): + def test_unpublished_data(self): + """ + this test doesn't load any data, since the username/pw is invalid + """ + # no password + fields_vars = pyspedas.psp.fields(trange=['2018-11-5', '2018-11-5/06:00'], datatype='mag_RTN', username='hello') + # invalid password + fields_vars = pyspedas.psp.fields(trange=['2018-11-5', '2018-11-5/06:00'], datatype='mag_RTN', username='hello', password='world') + fields_vars = pyspedas.psp.fields(trange=['2018-11-5', '2018-11-5/06:00'], datatype='mag_SC', username='hello', password='world') + fields_vars = pyspedas.psp.fields(trange=['2018-11-5', '2018-11-5/06:00'], datatype='mag_SC_1min', username='hello', password='world') + fields_vars = pyspedas.psp.fields(trange=['2018-11-5', '2018-11-5/06:00'], datatype='mag_RTN_1min', username='hello', password='world') + fields_vars = pyspedas.psp.fields(trange=['2018-11-5', '2018-11-5/06:00'], datatype='mag_RTN_4_Sa_per_Cyc', username='hello', password='world') + fields_vars = pyspedas.psp.fields(trange=['2018-11-5', '2018-11-5/06:00'], datatype='mag_SC_4_Sa_per_Cyc', username='hello', password='world') + fields_vars = pyspedas.psp.fields(trange=['2018-11-5', '2018-11-5/06:00'], datatype='sqtn_rfs_V1V2', username='hello', password='world') + spc = pyspedas.psp.spc(trange=['2018-11-5', '2018-11-5/06:00'], username='hello', password='world') + spi = pyspedas.psp.spi(trange=['2018-11-5', '2018-11-5/06:00'], username='hello', password='world') + + def test_load_dfb_dbm_dvac(self): + fields_vars = pyspedas.psp.fields(trange=['2018-11-5', '2018-11-5/06:00'], datatype='dfb_dbm_dvac', level='l2') + self.assertTrue(data_exists('psp_fld_l2_dfb_dbm_dvac12')) + def test_load_fld_data(self): fields_vars = pyspedas.psp.fields(trange=['2018-11-5', '2018-11-5/06:00'], datatype='mag_rtn', level='l2', time_clip=True) self.assertTrue(data_exists('psp_fld_l2_mag_RTN')) + filtered = pyspedas.psp.filter_fields('psp_fld_l2_mag_RTN', [4, 16]) + self.assertTrue(data_exists('psp_fld_l2_mag_RTN_004016')) + filtered = pyspedas.psp.filter_fields('psp_fld_l2_mag_RTN', 0) + self.assertTrue(data_exists('psp_fld_l2_mag_RTN_000')) + filtered = pyspedas.psp.filter_fields('psp_fld_l2_mag_RTN', [4, 16], keep=True) + + def test_load_fld_1min(self): + fields_vars = pyspedas.psp.fields(trange=['2018-11-5', '2018-11-5/06:00'], datatype='mag_rtn_1min', level='l2') + filtered = pyspedas.psp.filter_fields('psp_fld_l2_mag_RTN_1min', [4, 16]) + self.assertTrue(data_exists('psp_fld_l2_mag_RTN_1min')) + self.assertTrue(data_exists('psp_fld_l2_quality_flags')) + notplot = pyspedas.psp.fields(trange=['2018-11-5', '2018-11-5/06:00'], datatype='mag_rtn_1min', level='l2', notplot=True) + self.assertTrue('psp_fld_l2_mag_RTN_1min' in notplot.keys()) + + def test_load_fld_rtn_4_per_cyc(self): + fields = pyspedas.psp.fields(trange=['2018-11-5', '2018-11-5/06:00'], datatype='mag_rtn_4_per_cycle', level='l2') + filtered = pyspedas.psp.filter_fields('psp_fld_l2_mag_RTN_4_Sa_per_Cyc', [4, 16]) + self.assertTrue(data_exists('psp_fld_l2_mag_RTN_4_Sa_per_Cyc')) + self.assertTrue(data_exists('psp_fld_l2_quality_flags')) + + def test_load_fld_sc_4_per_cyc(self): + fields = pyspedas.psp.fields(trange=['2018-11-5', '2018-11-5/06:00'], datatype='mag_sc_4_per_cycle', + level='l2') + filtered = pyspedas.psp.filter_fields('psp_fld_l2_mag_SC_4_Sa_per_Cyc', [4, 16]) + self.assertTrue(data_exists('psp_fld_l2_mag_SC_4_Sa_per_Cyc')) + self.assertTrue(data_exists('psp_fld_l2_quality_flags')) + + def test_load_sqtn_rfs_v1v2(self): + fields = pyspedas.psp.fields(trange=['2018-11-5', '2018-11-5/06:00'], datatype='sqtn_rfs_v1v2') + filtered = pyspedas.psp.filter_fields('electron_density', [4, 16]) + self.assertTrue(data_exists('electron_density')) + self.assertTrue(data_exists('electron_core_temperature')) + + def test_load_dfb_dc_spec(self): + fields = pyspedas.psp.fields(trange=['2018-11-5', '2018-11-5/06:00'], datatype='dfb_dc_spec') + filtered = pyspedas.psp.filter_fields('psp_fld_l2_dfb_dc_spec_dV12hg', [4, 16]) + self.assertTrue(data_exists('psp_fld_l2_dfb_dc_spec_dV12hg')) + self.assertTrue(data_exists('psp_fld_l2_dfb_dc_spec_SCMdlfhg')) + + def test_load_dfb_ac_xspec(self): + fields = pyspedas.psp.fields(trange=['2018-11-5', '2018-11-5/06:00'], datatype='dfb_ac_xspec') + filtered = pyspedas.psp.filter_fields('psp_fld_l2_dfb_ac_xspec_power_ch1_SCMdlfhg', [4, 16]) + self.assertTrue(data_exists('psp_fld_l2_dfb_ac_xspec_power_ch1_SCMdlfhg')) + self.assertTrue(data_exists('psp_fld_l2_dfb_ac_xspec_power_ch1_SCMdlfhg')) def test_load_spc_data(self): spc_vars = pyspedas.psp.spc(trange=['2018-11-5', '2018-11-6'], datatype='l3i', level='l3') - self.assertTrue(data_exists('np_fit')) + self.assertTrue(data_exists('psp_spc_np_fit')) + self.assertTrue(data_exists('psp_spc_np_fit_uncertainty')) + self.assertTrue(data_exists('psp_spc_wp_fit')) + self.assertTrue(data_exists('psp_spc_vp_fit_SC')) + self.assertTrue(data_exists('psp_spc_vp_fit_RTN')) + self.assertTrue(data_exists('psp_spc_np1_fit')) def test_load_spe_data(self): spe_vars = pyspedas.psp.spe(trange=['2018-11-5', '2018-11-6'], datatype='spa_sf1_32e', level='l2') - self.assertTrue(data_exists('EFLUX')) + self.assertTrue(data_exists('psp_spe_EFLUX')) + self.assertTrue(data_exists('psp_spe_QUALITY_FLAG')) def test_load_spi_data(self): spi_vars = pyspedas.psp.spi(trange=['2018-11-5', '2018-11-6'], datatype='spi_sf0a_mom_inst', level='l3') - self.assertTrue(data_exists('DENS')) + self.assertTrue(data_exists('psp_spi_DENS')) + self.assertTrue(data_exists('psp_spi_VEL')) + self.assertTrue(data_exists('psp_spi_T_TENSOR')) + self.assertTrue(data_exists('psp_spi_TEMP')) + self.assertTrue(data_exists('psp_spi_EFLUX_VS_ENERGY')) + self.assertTrue(data_exists('psp_spi_EFLUX_VS_THETA')) + self.assertTrue(data_exists('psp_spi_EFLUX_VS_PHI')) def test_load_epihi_data(self): epihi_vars = pyspedas.psp.epihi(trange=['2018-11-5', '2018-11-5/06:00'], datatype='let1_rates1h', level='l2') - self.assertTrue(data_exists('B_He_Rate')) + self.assertTrue(data_exists('psp_epihi_B_He_Rate')) + self.assertTrue(data_exists('psp_epihi_R1A_He_BIN')) + self.assertTrue(data_exists('psp_epihi_R3B_He_BIN')) + self.assertTrue(data_exists('psp_epihi_R6A_He_BIN')) def test_load_epi_data(self): epilo_vars = pyspedas.psp.epi() - self.assertTrue(data_exists('HET_A_Electrons_Rate_TS')) + self.assertTrue(data_exists('psp_isois_HET_A_Electrons_Rate_TS')) + self.assertTrue(data_exists('psp_isois_HET_A_H_Rate_TS')) + self.assertTrue(data_exists('psp_isois_A_H_Rate_TS')) + self.assertTrue(data_exists('psp_isois_A_Heavy_Rate_TS')) + self.assertTrue(data_exists('psp_isois_H_CountRate_ChanP_SP')) + self.assertTrue(data_exists('psp_isois_Electron_CountRate_ChanE')) def test_downloadonly(self): files = pyspedas.psp.epilo(downloadonly=True) self.assertTrue(os.path.exists(files[0])) + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/rbsp/README.md b/pyspedas/rbsp/README.md index df96a7c2..b96ec67e 100644 --- a/pyspedas/rbsp/README.md +++ b/pyspedas/rbsp/README.md @@ -36,9 +36,15 @@ tplot(['efield_in_inertial_frame_spinfit_mgse', 'spacecraft_potential']) #### Radiation Belt Storm Probes Ion Composition Experiment (RBSPICE) ```python -rbspice_vars = pyspedas.rbsp.rbspice(trange=['2018-11-5', '2018-11-6'], datatype='tofxeh', level='l3') +rbspice_vars = pyspedas.rbsp.rbspice(trange=['2018-11-5', '2018-11-6'], datatype='TOFxEH', level='l3') -tplot('Alpha') +tplot('rbspa_rbspice_l3_TOFxEH_proton_omni_spin') + +# calculate the pitch angle distributions +from pyspedas.rbsp.rbspice_lib.rbsp_rbspice_pad import rbsp_rbspice_pad +rbsp_rbspice_pad(probe='a', datatype='TOFxEH', level='l3') + +tplot('rbspa_rbspice_l3_TOFxEH_proton_omni_0-1000keV_pad_spin') ``` #### Energetic Particle, Composition, and Thermal Plasma Suite (ECT) @@ -54,7 +60,6 @@ tplot('Ion_density') rept_vars = pyspedas.rbsp.rept(trange=['2018-11-5', '2018-11-6'], level='l3', rel='rel03') -tplot('Tperp_e_200') ``` #### Relativistic Proton Spectrometer (RPS) diff --git a/pyspedas/rbsp/__init__.py b/pyspedas/rbsp/__init__.py index 2276bb16..bd485fd7 100644 --- a/pyspedas/rbsp/__init__.py +++ b/pyspedas/rbsp/__init__.py @@ -1,5 +1,9 @@ - from .load import load +from pyspedas.rbsp.rbspice_lib.rbsp_load_rbspice_read import rbsp_load_rbspice_read +from pyspedas.rbsp.rbspice_lib.rbsp_rbspice_omni import rbsp_rbspice_omni +from pyspedas.rbsp.rbspice_lib.rbsp_rbspice_spin_avg import rbsp_rbspice_spin_avg +from pyspedas.utilities.datasets import find_datasets + def emfisis(trange=['2018-11-5', '2018-11-6'], probe='a', @@ -120,12 +124,13 @@ def emfisis(trange=['2018-11-5', '2018-11-6'], """ return load(instrument='emfisis', wavetype=wavetype, trange=trange, probe=probe, datatype=datatype, level=level, cadence=cadence, coord=coord, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + def rbspice(trange=['2018-11-5', '2018-11-6'], probe='a', - datatype='tofxeh', + datatype='TOFxEH', level='l3', suffix='', - get_support_data=False, + get_support_data=True, varformat=None, varnames=[], downloadonly=False, @@ -183,7 +188,44 @@ def rbspice(trange=['2018-11-5', '2018-11-6'], List of tplot variables created. """ - return load(instrument='rbspice', trange=trange, probe=probe, datatype=datatype, level=level, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + # Valid names + vprobe = ['a', 'b'] + vlevels = ['l1', 'l2', 'l3', 'l4'] + vdatatypesl1 = ['TOFxEH', 'TOFxEnonH', 'TOFxPHHHELT'] + vdatatypesl2 = ['TOFxEH', 'TOFxEnonH', 'TOFxPHHHELT'] + vdatatypesl3 = ['TOFxEH', 'TOFxEnonH', 'TOFxPHHHELT'] + vdatatypesl3pap = [''] # L3PAP data is not yet supported + vdatatypesl4 = [''] # L4 data is not yet supported + vdatatypes = vdatatypesl1 + vdatatypesl2 + vdatatypesl3 + vdatatypesl3pap + vdatatypesl4 + vdatatypes_lower = [vdatatype.lower() for vdatatype in vdatatypes] + + tvars = load(instrument='rbspice', trange=trange, probe=probe, datatype=datatype, level=level, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if tvars is None or notplot or downloadonly: + return tvars + + if not isinstance(probe, list): + probe = [probe] + + if datatype.lower() in vdatatypes_lower: + for prb in probe: + # Add energy channel energy values to primary data variable, + # create variables for individual telescopes, and set appropriate tplot options + rbsp_load_rbspice_read(level=level, probe=prb, datatype=datatype) + + # Calculate omni-directional variable + omni_vars = rbsp_rbspice_omni(probe=prb, datatype=datatype, level=level) + if omni_vars: + tvars.extend(omni_vars) + + # Calculate spin-averaged variable + sp_avg_vars = rbsp_rbspice_spin_avg(probe=prb, datatype=datatype, level=level) + if omni_vars: + tvars.extend(sp_avg_vars) + + return tvars + def efw(trange=['2015-11-5', '2015-11-6'], probe='a', @@ -250,6 +292,7 @@ def efw(trange=['2015-11-5', '2015-11-6'], """ return load(instrument='efw', trange=trange, probe=probe, datatype=datatype, level=level, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + def mageis(trange=['2015-11-5', '2015-11-6'], probe='a', datatype='', @@ -316,6 +359,7 @@ def mageis(trange=['2015-11-5', '2015-11-6'], """ return load(instrument='mageis', rel=rel, trange=trange, probe=probe, datatype=datatype, level=level, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + def hope(trange=['2015-11-5', '2015-11-6'], probe='a', datatype='moments', @@ -382,6 +426,7 @@ def hope(trange=['2015-11-5', '2015-11-6'], """ return load(instrument='hope', rel=rel, trange=trange, probe=probe, datatype=datatype, level=level, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + def rept(trange=['2015-11-5', '2015-11-6'], probe='a', datatype='', @@ -448,6 +493,7 @@ def rept(trange=['2015-11-5', '2015-11-6'], """ return load(instrument='rept', rel=rel, trange=trange, probe=probe, datatype=datatype, level=level, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + def rps(trange=['2015-11-5', '2015-11-6'], probe='a', datatype='rps-1min', @@ -512,3 +558,7 @@ def rps(trange=['2015-11-5', '2015-11-6'], """ return load(instrument='rps', trange=trange, probe=probe, datatype=datatype, level=level, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + +def datasets(instrument=None, label=True): + return find_datasets(mission='Van Allen Probes (RBSP)', instrument=instrument, label=label) diff --git a/pyspedas/rbsp/load.py b/pyspedas/rbsp/load.py index 541f43d0..8137ec4a 100644 --- a/pyspedas/rbsp/load.py +++ b/pyspedas/rbsp/load.py @@ -1,6 +1,6 @@ from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import cdf_to_tplot from .config import CONFIG @@ -38,8 +38,16 @@ def load(trange=['2018-11-5', '2018-11-6'], if not isinstance(probe, list): probe = [probe] + datatype_in = datatype + datatype = datatype.lower() + prefix = '' out_files = [] + if notplot: + tvars = {} + else: + tvars = [] + for prb in probe: if instrument == 'emfisis': if datatype == 'density' or datatype == 'housekeeping' or datatype == 'wna-survey': @@ -53,6 +61,7 @@ def load(trange=['2018-11-5', '2018-11-6'], pathformat = 'rbsp'+prb+'/'+level+'/'+instrument+'/'+datatype+'/'+cadence+'/'+coord+'/%Y/rbsp-'+prb+'_'+datatype+'_'+cadence+'-'+coord+'_'+instrument+'-'+level+'_%Y%m%d_v*.cdf' elif instrument == 'rbspice': pathformat = 'rbsp'+prb+'/'+level+'/'+instrument+'/'+datatype+'/%Y/rbsp-'+prb+'-'+instrument+'_lev-'+str(level[-1])+'?'+datatype+'_%Y%m%d_v*.cdf' + prefix = 'rbsp'+prb+'_rbspice_'+level+'_'+datatype_in+'_' elif instrument == 'efw': if level == 'l3': pathformat = 'rbsp'+prb+'/'+level+'/'+instrument+'/%Y/rbsp'+prb+'_'+instrument+'-'+level+'_%Y%m%d_v??.cdf' @@ -75,7 +84,6 @@ def load(trange=['2018-11-5', '2018-11-6'], elif datatype == 'rps': pathformat = 'rbsp'+prb+'/'+level+'/rps/psbr-rps/%Y/rbsp'+prb+'_'+level+'_psbr-rps_%Y%m%d_v*.cdf' - # find the full remote path names using the trange remote_names = dailynames(file_format=pathformat, trange=trange) @@ -84,13 +92,18 @@ def load(trange=['2018-11-5', '2018-11-6'], for file in files: out_files.append(file) - out_files = sorted(out_files) + if not downloadonly: + tvars_o = cdf_to_tplot(sorted(out_files), prefix=prefix, suffix=suffix, get_support_data=get_support_data, + varformat=varformat, varnames=varnames, notplot=notplot) + + if notplot: + tvars = dict(tvars, **tvars_o) + else: + tvars.extend(tvars_o) if downloadonly: - return out_files + return sorted(out_files) - tvars = cdf_to_tplot(out_files, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, notplot=notplot) - if notplot: return tvars diff --git a/pyspedas/rbsp/rbspice_lib/__init__.py b/pyspedas/rbsp/rbspice_lib/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pyspedas/rbsp/rbspice_lib/rbsp_load_rbspice_read.py b/pyspedas/rbsp/rbspice_lib/rbsp_load_rbspice_read.py new file mode 100644 index 00000000..a6953b6b --- /dev/null +++ b/pyspedas/rbsp/rbspice_lib/rbsp_load_rbspice_read.py @@ -0,0 +1,87 @@ +import logging +from pytplot import get_data, store_data, options +from pyspedas import tnames + + +def rbsp_load_rbspice_read(level='l3', probe='a', datatype='TOFxEH'): + """ + Works on previously loaded RBSPICE tplot variables: adds energy channel energy values to primary data variable, separates non-H species variables, + creates variables for individual telescopes, and sets appropriate tplot options + + Parameters + ---------- + level : str + data level ['l1','l2','l3' (default),'l3pap'] + probe : str + RBSP spacecraft indicator [Options: 'a' (default), 'b'] + datatype : str + RBSPICE data type ['EBR','ESRHELT','ESRLEHT','IBR','ISBR','ISRHELT','TOFxEH' (default),'TOFxEIon','TOFxEnonH','TOFxPHHHELT','TOFxPHHLEHT'], + but change for different data levels. + """ + if level != 'l1': + units_label = '1/(cm^2-sr-s-keV)' + convert_factor = 1000. # to convert flux from 1/MeV to 1/keV + else: + units_label = 'counts/s' + convert_factor = 1. # do not need to convert counts/s + + prefix = 'rbsp'+probe+'_rbspice_'+level+'_'+datatype+'_' + # find the flux/cps data name(s) + data_var = tnames(prefix + 'F*DU') + energy_var = tnames(prefix + 'F*DU_Energy') + + logging.info('Correcting RBSPICE energy tables...') + for i in range(len(data_var)): + en_data = get_data(energy_var[i]) + temp_energy = en_data.transpose() + temp = get_data(data_var[i]) + data = temp.y.transpose([0, 2, 1]) + species_str = data_var[i][-4:-2] + if species_str == 'FP': + species='proton' + yticks = 1 + if datatype != 'TOFxPHHHELT': + new_energy = temp_energy[:,0] * 1000. # convert energy from MeV to keV + new_flux = data / convert_factor # convert flux from 1/MeV to 1/keV + zrange = [5.,1.e5] + else: + new_energy = temp_energy[11:-1,0] * 1000. # convert energy from MeV to keV + new_flux = data[:,11:-1,:] / convert_factor # convert energy from MeV to keV + zrange = [2.e2,1.e6] + elif species_str == 'He': + species='helium' + yticks = 1 + new_energy = temp_energy[0:10,0] * 1000. # convert energy from MeV to keV + new_flux = data[:,0:10,:] / convert_factor # convert flux from 1/MeV to 1/keV + zrange = [1.,1.e3] + elif species_str == 'FO': + species='oxygen' + yticks = 2 + if datatype != 'TOFxPHHHELT': + new_energy = temp_energy[11:18,0] * 1000. # convert energy from MeV to keV + new_flux = data[:,11:18,:] / convert_factor # convert flux from 1/MeV to 1/keV + zrange = [1.,1.e2] + else: + new_energy = temp_energy[0:10,0] * 1000. # convert energy from MeV to keV + new_flux = data[:,0:10,:] / convert_factor # convert flux from 1/MeV to 1/keV + zrange = [1e1,1.e4] + new_name = prefix+species + # note: can't save the energy table here, due to the shape of new_flux + # so we'll have to grab the energy table from the individual telescope + # variables + store_data(new_name, data={'x':temp.times, 'y':new_flux}) + options(new_name, 'ylog', True) + options(new_name, 'zlog', True) + options(new_name, 'zrange', zrange) + options(new_name, 'ytitle', 'rbsp'+probe+'_rbspice_'+species) + options(new_name, 'ysubtitle', 'Energy [keV]') + options(new_name, 'ztitle', units_label) + for j in range(6): + store_data(new_name+'_T'+str(j), data={'x':temp.times, 'y':new_flux[:,:,j], 'v':new_energy}) + options(new_name+'_T'+str(j), 'spec', True) + options(new_name+'_T'+str(j), 'ylog', True) + options(new_name+'_T'+str(j), 'zlog', True) + options(new_name+'_T'+str(j), 'zrange', zrange) + options(new_name+'_T'+str(j), 'ytitle', 'rbsp'+probe+'_rbspice_'+species+'_T'+str(j)) + options(new_name+'_T'+str(j), 'ysubtitle', '[keV]') + options(new_name+'_T'+str(j), 'ztitle', units_label) diff --git a/pyspedas/rbsp/rbspice_lib/rbsp_rbspice_omni.py b/pyspedas/rbsp/rbspice_lib/rbsp_rbspice_omni.py new file mode 100644 index 00000000..497e17ae --- /dev/null +++ b/pyspedas/rbsp/rbspice_lib/rbsp_rbspice_omni.py @@ -0,0 +1,93 @@ +import logging +import numpy as np +from pytplot import get_data, store_data, options +from pyspedas import tnames + +# use nanmean from bottleneck if it's installed, otherwise use the numpy one +# bottleneck nanmean is ~2.5x faster +try: + import bottleneck as bn + nanmean = bn.nanmean +except ImportError: + nanmean = np.nanmean + + +def rbsp_rbspice_omni(probe='a', datatype='TOFxEH', level='l3'): + """ + Calculates the omni-directional flux for all 6 telescopes + + Parameters + ---------- + probe : str + RBSP spacecraft indicator [Options: 'a' (default), 'b'] + datatype : str + RBSPICE data type ['EBR','ESRHELT','ESRLEHT','IBR','ISBR','ISRHELT','TOFxEH' (default),'TOFxEIon','TOFxEnonH','TOFxPHHHELT','TOFxPHHLEHT'], + but change for different data levels. + level : str + data level ['l1','l2','l3' (default),'l3pap'] + + Returns + ------- + Tplot variables created + """ + if probe is None: + probe = 'a' + if datatype is None: + datatype = 'TOFxEH' + if level is None: + level = 'l3' + if level != 'l1': + units_label = '1/(cm^2-sr-s-keV)' + else: + units_label = 'counts/s' + + prefix = 'rbsp'+probe+'_rbspice_'+level+'_'+datatype+'_' + + # find the flux/cps data name(s) + data_var = tnames(prefix + 'F*DU') + + if not data_var: + logging.error('Error, problem finding the RBSPICE data to calculate omni-directional spectrograms') + return + + logging.info('Calculating omni directional energy spectra; this might take a few minutes...') + out = [] + + for i in range(len(data_var)): + species_str = data_var[i][-4:-2] + if species_str == 'FP': + species='proton' + if datatype != 'TOFxPHHHELT': + zrange = [5., 1.e5] + else: + zrange = [2.e2, 1.e6] + elif species_str == 'He': + species = 'helium' + zrange = [1., 5.e2] + elif species_str == 'FO': + species = 'oxygen' + if datatype != 'TOFxPHHHELT': + zrange = [1., 1.e2] + else: + zrange = [1e1, 1.e4] + + # load the flux/cps data + d = get_data(prefix+species) + d_for_en_table = get_data(prefix+species+'_T0') + + if d is not None: + flux_omni = np.zeros((len(d.times),len(d.y[0, :, 0]))) + for k in range(len(d.times)): + for l in range(len(d.y[0, :, 0])): + flux_omni[k, l] = nanmean(d.y[k, l, :]) + newname = prefix+species+'_omni' + store_data(newname, data={'x': d.times, 'y': flux_omni, 'v': d_for_en_table.v}) + options(newname, 'ylog', True) + options(newname, 'zlog', True) + options(newname, 'spec', True) + options(newname, 'zrange', zrange) + options(newname, 'ytitle', 'rbsp-'+probe+'\nrbspice\n'+species+'\nomni') + options(newname, 'ysubtitle', '[keV]') + options(newname, 'ztitle', units_label) + out.append(newname) + return out diff --git a/pyspedas/rbsp/rbspice_lib/rbsp_rbspice_pad.py b/pyspedas/rbsp/rbspice_lib/rbsp_rbspice_pad.py new file mode 100644 index 00000000..527e4bce --- /dev/null +++ b/pyspedas/rbsp/rbspice_lib/rbsp_rbspice_pad.py @@ -0,0 +1,172 @@ +import logging +import numpy as np +from pytplot import get_data, store_data, options +from pyspedas.rbsp.rbspice_lib.rbsp_rbspice_pad_spinavg import rbsp_rbspice_pad_spinavg + +# use nanmean from bottleneck if it's installed, otherwise use the numpy one +# bottleneck nanmean is ~2.5x faster +try: + import bottleneck as bn + nanmean = bn.nanmean +except ImportError: + nanmean = np.nanmean + + +def rbsp_rbspice_pad(probe='a', datatype='TOFxEH', level='l3', energy=[0, 1000], bin_size=15, scopes=None): + """ + Calculate pitch angle distributions using data from the + RBSP Radiation Belt Storm Probes Ion Composition Experiment (RBSPICE) + + Parameters + ---------- + probe : str + RBSP spacecraft indicator [Options: 'a' (default), 'b'] + datatype : str + desired data type [Options: 'TOFxEH' (default), 'TOFxEnonH'] + level : str + data level ['l1','l2','l3' (default),'l3pap'] + energy : list + user-defined energy range to include in the calculation in keV [default = [0,1000]] + bin_size : float + desired size of the pitch angle bins in degrees [default = 15] + scopes : list + string array of telescopes to be included in PAD [0-5, default is all] + + Returns + ------- + Tplot variables created + """ + if datatype == 'TOFxEH': + species = 'proton' + elif datatype == 'TOFxEnonH': + species = ['helium', 'oxygen'] + elif datatype == 'TOFxPHHHELT': + species = ['proton', 'oxygen'] + + if not isinstance(species, list): + species = [species] + + if level != 'l1': + units_label = '1/(cm^2-sr-s-keV)' + else: + units_label = 'counts/s' + if not energy: + energy = [0, 1000] + if not bin_size: + bin_size = 15. + if not scopes: + scopes = [0, 1, 2, 3, 4, 5] + + prefix = 'rbsp'+probe+'_rbspice_'+level+'_'+datatype+'_' + + if energy[0] > energy[1]: + logging.error('Low energy must be given first, then high energy in "energy" keyword') + return + + # set up the number of pa bins to create + bin_size = float(bin_size) + n_pabins = int(180./bin_size) + pa_bins = 180.*np.arange(n_pabins+1)/n_pabins + pa_label = 180.*np.arange(n_pabins)/n_pabins+bin_size/2. + + logging.info('Num PA bins: ' + str(n_pabins)) + logging.info('PA bins: ' + str(pa_bins)) + + # check to make sure the data exist + d = get_data(prefix + 'Alpha') + if d is None: + logging.error('No '+datatype+' data is currently loaded for probe rbsp-'+probe+' for the selected time period') + return + + logging.info('Calculating RBSPICE pitch angle distribution..') + out = [] + + for ion_type_idx in range(len(species)): + # get pitch angle data (all telescopes in single variable) + d_pa = get_data(prefix + 'Alpha') + pa_file = np.zeros((len(d_pa.times), len(scopes))) # time steps, look direction + for aa in range(len(scopes)): + pa_file[:, scopes[aa]] = d_pa.y[:, scopes[aa]] + + pa_flux = np.zeros((len(d_pa.times), n_pabins, len(scopes))) + pa_flux_nans = np.argwhere(pa_flux == 0) + if len(pa_flux_nans) > 0: + pa_flux[pa_flux_nans] = np.nan + pa_num_in_bin = np.zeros((len(d_pa.times), n_pabins, len(scopes))) + + for qq in range(len(species)): + # get flux data (all telescopes in single variable) + d_flux = get_data(prefix + species[qq]) + d_flux_t0 = get_data(prefix + species[qq] + '_T0') + + logging.info(prefix + species[qq]) + flux_file = np.zeros((len(d_flux.times), len(scopes))) # time steps, look direction + flux_file_nans = np.argwhere(flux_file == 0) + if len(flux_file_nans) > 0: + flux_file[flux_file_nans] = np.nan + new_pa_flux = np.zeros((len(d_flux.times), n_pabins, len(scopes))) # the average for each bin + + # get energy range of interest + e = d_flux_t0.v + indx = np.argwhere((e < energy[1]) & (e > energy[0])) + + if len(indx) == 0: + logging.warning('Energy range selected is not covered by the detector for ' + datatype + ' ' + species[ion_type_idx]) + continue + + for t in range(len(scopes)): + # Loop through each time step and get: + # 1. the total flux for the energy range of interest for each detector + # 2. flux in each pa bin + for i in range(len(d_flux.times)): # loop through time + flux_file[i, t] = np.nansum(d_flux.y[i, indx, scopes[t]]) # start with lowest energy + for j in range(n_pabins): # loop through pa bins + if (pa_file[i, t] > pa_bins[j]) and (pa_file[i,t] < pa_bins[j+1]): + if not np.isfinite(pa_flux[i, j, t]): + pa_flux[i, j, t] = flux_file[i, t] + else: + pa_flux[i, j, t] = pa_flux[i, j, t] + flux_file[i, t] + pa_num_in_bin[i, j, t] += 1.0 + + # loop over time + for i in range(len(pa_flux[:, 0, 0])): + # loop over bins + for bin_idx in range(len(pa_flux[i, :, 0])): + if pa_num_in_bin[i, bin_idx, t] != 0.0: + new_pa_flux[i, bin_idx, t] = pa_flux[i, bin_idx, t]/pa_num_in_bin[i, bin_idx, t] + else: + new_pa_flux[i, bin_idx, t] = np.nan + + en_range_string = str(energy[0]) + '-' + str(energy[1]) + 'keV' + if len(scopes) == 6: + new_name = prefix+species[qq]+'_omni_'+en_range_string+'_pad' + new_omni_pa_flux = np.zeros((len(new_pa_flux[:, 0, 0]),len(new_pa_flux[0, :, 0]))) + for ii in range(len(new_pa_flux[:, 0, 0])): + for jj in range(len(new_pa_flux[0, :, 0])): + new_omni_pa_flux[ii, jj] = nanmean(new_pa_flux[ii, jj, :]) + store_data(new_name, data={'x': d_flux.times, 'y': new_omni_pa_flux, 'v': pa_label}) + options(new_name, 'yrange', [0, 180]) + options(new_name, 'spec', True) + options(new_name, 'zlog', True) + options(new_name, 'ytitle', 'rbsp-'+probe+'\nrbspice\n'+species[ion_type_idx]+'\nomni') + options(new_name, 'ysubtitle', en_range_string+'\nPA [Deg]') + options(new_name, 'ztitle', units_label) + out.append(new_name) + else: + new_name = [] + for ii in range(len(scopes)): + new_name.append(prefix+species[qq]+'_T'+str(scopes[ii])+'_'+en_range_string+'_pad') + store_data(new_name[ii], data={'x': d_flux.times, 'y': new_pa_flux[:, :, ii], 'v': pa_label}) + options(new_name[ii], 'yrange', [0, 180]) + options(new_name[ii], 'spec', True) + options(new_name[ii], 'zlog', True) + options(new_name[ii], 'ytitle', 'rbsp-'+probe+'\nrbspice\n' +species[ion_type_idx]+'\nT'+str(scopes[t])) + options(new_name[ii], 'ysubtitle', en_range_string + '\nPA [Deg]') + options(new_name[ii], 'ztitle', units_label) + out.append(new_name[ii]) + + # now do the spin average + sp_vars = rbsp_rbspice_pad_spinavg(probe=probe, datatype=datatype, species=species[ion_type_idx], energy=energy, bin_size=bin_size, scopes=scopes) + if sp_vars is not None: + out.extend(sp_vars) + return out diff --git a/pyspedas/rbsp/rbspice_lib/rbsp_rbspice_pad_spinavg.py b/pyspedas/rbsp/rbspice_lib/rbsp_rbspice_pad_spinavg.py new file mode 100644 index 00000000..bddcd4a1 --- /dev/null +++ b/pyspedas/rbsp/rbspice_lib/rbsp_rbspice_pad_spinavg.py @@ -0,0 +1,127 @@ +import logging +import numpy as np +import scipy +from pytplot import get_data, store_data, options + +# use nanmean from bottleneck if it's installed, otherwise use the numpy one +# bottleneck nanmean is ~2.5x faster +try: + import bottleneck as bn + nanmean = bn.nanmean +except ImportError: + nanmean = np.nanmean + + +def rbsp_rbspice_pad_spinavg(probe='a', datatype='TOFxEH', level='l3', species=None, energy=[0, 1000], bin_size=15., scopes=None): + """ + Calculates spin-averaged PADs for the RBSPICE instrument + + Parameters + ---------- + probe : str + RBSP spacecraft indicator [Options: 'a' (default), 'b'] + datatype : str + desired data type [Options: 'TOFxEH' (default), 'TOFxEnonH'] + level : str + data level ['l1','l2','l3' (default),'l3pap'] + species : str + desired ion species [Options: 'proton' (default), 'helium', 'oxygen'] + energy : list + user-defined energy range to include in the calculation in keV [default = [0,1000]] + bin_size : float + desired size of the pitch angle bins in degrees [default = 15] + scopes : list + string array of telescopes to be included in PAD [0-5, default is all] + + Returns + -------- + Tplot variables created + """ + if level != 'l1': + units_label = '1/(cm^2-sr-s-keV)' + else: + units_label = 'counts/s' + if species is None and datatype == 'TOFxEH': + species = 'proton' + elif species is None and datatype == 'TOFxEnonH': + species = ['helium', 'oxygen'] + elif species is None and datatype == 'TOFxPHHHELT': + species = ['proton', 'oxygen'] + if energy is None: + energy = [0, 1000] + if bin_size is None: + bin_size = 15. + if scopes is None: + scopes = [0, 1, 2, 3, 4, 5] + + en_range_string = str(energy[0]) + '-' + str(energy[1]) + 'keV' + + prefix = 'rbsp'+probe+'_rbspice_'+level+'_'+datatype+'_' + spin_nums = get_data(prefix + 'Spin') + + if spin_nums is None: + logging.error('Spin variable not found: ' + prefix + 'Spin') + return + + # find where the spins start + spin_starts = np.unique(spin_nums.y, return_index=True)[1][1:]-1 + if len(scopes) == 6: + pad_name = [prefix+species+'_omni_'+en_range_string+'_pad'] + else: + pad_name = [prefix+species+'_T'+str(i)+'_'+en_range_string+'_pad' for i in scopes] + + logging.info('Calculating spin averaged pitch angle distribution..') + out = [] + + for ii in range(len(pad_name)): + pad_data = get_data(pad_name[ii]) + + if pad_data is None: + logging.error('Error, variable containing valid PAD data missing.') + return + + # the following is for rebinning and interpolating to new_bins + n_pabins = 180. / bin_size + new_bins = 180. * np.arange(n_pabins + 1) / n_pabins + srx = [float(len(pad_data.v)) / (int(n_pabins) + 1) * (x + 0.5) - 0.5 for x in range(int(n_pabins) + 1)] + + spin_sum_flux = np.zeros((len(spin_starts), len(pad_data.y[0, :]))) + rebinned_data = np.zeros((len(spin_starts), len(pad_data.y[0, :])+1)) + spin_times = np.zeros(len(spin_starts)) + + current_start = 0 + # loop through the spins for this telescope + for spin_idx in range(len(spin_starts)): + # loop over energies + spin_sum_flux[spin_idx,:] = nanmean(pad_data.y[current_start:spin_starts[spin_idx]+1,:], axis=0) + spin_times[spin_idx] = pad_data.times[current_start] + # rebin the data before storing it + # the idea here is, for bin_size = 15 deg, rebin the data from center points to: + # new_bins = [0, 15, 30, 45, 60, 75, 90, 105, 120, 135 , 150, 165, 180] + spin_sum_interp = scipy.interpolate.interp1d(np.arange(len(spin_sum_flux[spin_idx, :])), spin_sum_flux[spin_idx, :], fill_value='extrapolate') + rebinned_data[spin_idx, :] = spin_sum_interp(srx) + + # we want to take the end values instead of extrapolating + # again, to match the functionality of congrid in IDL + rebinned_data[spin_idx, 0] = spin_sum_flux[spin_idx, 0] + rebinned_data[spin_idx, -1] = spin_sum_flux[spin_idx, -1] + + current_start = spin_starts[spin_idx]+1 + + newname = pad_name[ii]+'_spin' + if len(scopes) == 6: + ytitle = 'rbsp-'+probe+'\nrbspice\n'+species+'\nomni' + else: + ytitle = 'rbsp-'+probe+'\nrbspice\n'+species+'\nT'+str(scopes[ii]) + + store_data(newname, data={'x': spin_times, 'y': rebinned_data, 'v': new_bins}) + options(newname, 'spec', True) + options(newname, 'zlog', True) + options(newname, 'ztitle', units_label) + options(newname, 'ytitle', ytitle) + options(newname, 'yrange', [0, 180.0]) + options(newname, 'ysubtitle', en_range_string+'\nspin-avg PAD\n(deg)') + out.append(newname) + + #tdegap(newname, overwrite=True) + return out diff --git a/pyspedas/rbsp/rbspice_lib/rbsp_rbspice_spin_avg.py b/pyspedas/rbsp/rbspice_lib/rbsp_rbspice_spin_avg.py new file mode 100644 index 00000000..c76e9f2e --- /dev/null +++ b/pyspedas/rbsp/rbspice_lib/rbsp_rbspice_spin_avg.py @@ -0,0 +1,122 @@ +import logging +import numpy as np +from pytplot import get_data, store_data, options +from pyspedas import tnames + +# use nanmean from bottleneck if it's installed, otherwise use the numpy one +# bottleneck nanmean is ~2.5x faster +try: + import bottleneck as bn + nanmean = bn.nanmean +except ImportError: + nanmean = np.nanmean + + +def rbsp_rbspice_spin_avg(probe='a', datatype='TOFxEH', level='l3'): + """ + Calculates spin-averaged fluxes for the RBSPICE instrument + + Parameters + ---------- + probe : str + RBSP spacecraft indicator [Options: 'a' (default), 'b'] + datatype : str + RBSPICE data type ['TOFxEH' (default),'TOFxEnonH'] + level : str + data level ['l1','l2','l3' (default),'l3pap'] + + Returns + -------- + Tplot variables created + """ + if probe is None: + probe = 'a' + if datatype is None: + datatype = 'TOFxEH' + if level is None: + level = 'l3' + if level != 'l1': + units_label = '1/(cm^2-sr-s-keV)' + else: + units_label = 'counts/s' + + prefix = 'rbsp'+probe+'_rbspice_'+level+'_'+datatype+'_' + + spin_nums = get_data(prefix + 'Spin') + if spin_nums is None: + return + spin_starts = np.unique(spin_nums.y, return_index=True)[1][1:]-1 + + if datatype == 'TOFxEH': + species = 'proton' + elif datatype == 'TOFxEnonH': + species = ['helium', 'oxygen'] + elif datatype == 'TOFxPHHHELT': + species = ['proton', 'oxygen'] + + if isinstance(species, list): + var_data = [] + for spc in species: + var_data.extend(tnames(prefix + spc + '_T?')) + var_data.extend(tnames(prefix + spc + '_omni')) + else: + var_data = tnames(prefix + species + '_T?') + var_omni = tnames(prefix + species + '_omni') + var_data.extend(var_omni) + + logging.info('Calculating spin averaged energy spectra..') + out = [] + zrange = None + + for n in range(len(var_data)): + if var_data[n] == '': + logging.error('Error, problem finding the tplot variables to calculate the spin averages') + return + else: + flux_data = get_data(var_data[n]) + if len(flux_data) < 3: + logging.error('Error, couldn''t find energy table for the flux/cps data variable') + continue + if var_data[n][-2:-1] == 'T': + species = var_data[n][-9:-3] + elif var_data[n][-4:] == 'omni': + species = var_data[n][-11:-5] + if species == 'proton': + if datatype != 'TOFxPHHHELT': + zrange = [5., 1.e5] + else: + zrange = [2.e2, 1.e6] + elif species == 'helium': + zrange = [1., 5.e2] + elif species == 'oxygen': + if datatype != 'TOFxPHHHELT': + zrange = [1., 1.e2] + else: + zrange = [1e1, 1.e4] + + spin_sum_flux = np.zeros((len(spin_starts), len(flux_data.v))) + current_start = 0 + for spin_idx in range(len(spin_starts)): + spin_sum_flux[spin_idx, :] = nanmean(flux_data.y[current_start:spin_starts[spin_idx]+1, :], axis=0) + current_start = spin_starts[spin_idx]+1 + sp = '_spin' + if var_data[n][-4:] == 'omni': + suffix = '' + elif var_data[n][-2] == 'T'+str(n): + suffix = '_T'+str(n) + else: + suffix = '' + store_data(var_data[n]+sp+suffix, data={'x': spin_nums.times[spin_starts], 'y': spin_sum_flux, 'v': flux_data.v}) + options(var_data[n]+sp+suffix, 'ylog', True) + options(var_data[n]+sp+suffix, 'zlog', True) + options(var_data[n]+sp+suffix, 'spec', True) + if zrange is not None: + options(var_data[n]+sp+suffix, 'zrange', zrange) + if isinstance(species, list): + options(var_data[n]+sp+suffix, 'ytitle', 'rbsp'+probe+'\nrbspice\n'+datatype+'\n'+suffix) + else: + options(var_data[n]+sp+suffix, 'ytitle', 'rbsp'+probe+'\nrbspice\n'+species+'\n'+suffix) + options(var_data[n]+sp+suffix, 'ysubtitle', '[keV]') + options(var_data[n]+sp+suffix, 'ztitle', units_label) + out.append(var_data[n]+sp+suffix) + return out diff --git a/pyspedas/rbsp/tests/tests.py b/pyspedas/rbsp/tests/tests.py index 0afa00f2..e32bbe98 100644 --- a/pyspedas/rbsp/tests/tests.py +++ b/pyspedas/rbsp/tests/tests.py @@ -1,10 +1,10 @@ - import os import unittest -from pyspedas.utilities.data_exists import data_exists - +from pytplot import data_exists import pyspedas from pytplot import del_data +from pyspedas.rbsp.rbspice_lib.rbsp_rbspice_pad import rbsp_rbspice_pad + class LoadTestCases(unittest.TestCase): def tearDown(self): @@ -14,18 +14,17 @@ def test_downloadonly(self): files = pyspedas.rbsp.efw(trange=['2015-11-3', '2015-11-4'], level='l3', downloadonly=True) self.assertTrue(os.path.exists(files[0])) - # temporarily disabled, 3Dec2021 - # def test_notplot(self): - # data = pyspedas.rbsp.efw(trange=['2015-11-6', '2015-11-7'], level='l3', notplot=True) - # self.assertTrue('density' in data.keys()) - # self.assertTrue('Vavg' in data.keys()) - # self.assertTrue('vel_gse' in data.keys()) - # self.assertTrue('efield_inertial_frame_mgse' in data.keys()) - # self.assertTrue('x' in data['density'].keys()) - # self.assertTrue('y' in data['density'].keys()) + def test_notplot(self): + data = pyspedas.rbsp.efw(trange=['2015-11-6', '2015-11-7'], level='l3', notplot=True) + self.assertTrue('density' in data.keys()) + self.assertTrue('efield_in_inertial_frame_spinfit_mgse' in data.keys()) + self.assertTrue('x' in data['density'].keys()) + self.assertTrue('y' in data['density'].keys()) def test_load_emfisis_data(self): emfisis_vars = pyspedas.rbsp.emfisis(trange=['2018-11-5', '2018-11-6'], datatype='magnetometer', level='l3', time_clip=True) + self.assertTrue(data_exists('Mag')) + emfisis_vars = pyspedas.rbsp.emfisis(trange=['2018-11-5', '2018-11-6'], datatype='magnetometer', level='l2') wfr_vars = pyspedas.rbsp.emfisis(trange=['2018-11-5', '2018-11-6'], level='l2', datatype='wfr') hfr_vars = pyspedas.rbsp.emfisis(trange=['2018-11-5', '2018-11-6'], level='l2', datatype='hfr') self.assertTrue(data_exists('Mag')) @@ -38,14 +37,43 @@ def test_load_emfisis_data(self): self.assertTrue(data_exists('EwSamples')) # HFR waveform data self.assertTrue(data_exists('HFRsamples')) + # L4 density + dens = pyspedas.rbsp.emfisis(trange=['2018-11-5', '2018-11-6'], datatype='density', level='l4') + self.assertTrue(data_exists('density')) def test_load_efw_data(self): + efw_vars = pyspedas.rbsp.efw(trange=['2015-11-5', '2015-11-6'], level='l2') + self.assertTrue(data_exists('spec64_e12ac')) efw_vars = pyspedas.rbsp.efw(trange=['2015-11-5', '2015-11-6'], level='l3') self.assertTrue(data_exists('density')) - # def test_load_rbspice_data(self): - # rbspice_vars = pyspedas.rbsp.rbspice(trange=['2018-11-5', '2018-11-6'], datatype='tofxeh', level='l3') - # self.assertTrue(data_exists('Alpha')) + def test_load_rbspice_download(self): + files = pyspedas.rbsp.rbspice(downloadonly=True, trange=['2018-11-5', '2018-11-6'], datatype='tofxeh', level='l3') + self.assertTrue(isinstance(files, list)) + + def test_load_rbspice_esrhelt(self): + rbspice_vars = pyspedas.rbsp.rbspice(trange=['2013-11-5', '2013-11-6'], datatype='ESRHELT', level='l3') + self.assertTrue(data_exists('rbspa_rbspice_l3_ESRHELT_FEDU')) + + def test_load_rbspice_data(self): + data = pyspedas.rbsp.rbspice(trange=['2018-11-5', '2018-11-6'], datatype='TOFxEH', level='l3') + self.assertTrue(data_exists('rbspa_rbspice_l3_TOFxEH_proton_omni_spin')) + self.assertTrue(data_exists('rbspa_rbspice_l3_TOFxEH_proton_omni')) + rbsp_rbspice_pad(probe='a', datatype='TOFxEH', level='l3') + rbsp_rbspice_pad(probe='a', datatype='TOFxEH', level='l3', scopes=[0, 1, 2, 3]) + self.assertTrue(data_exists('rbspa_rbspice_l3_TOFxEH_proton_omni_0-1000keV_pad')) + self.assertTrue(data_exists('rbspa_rbspice_l3_TOFxEH_proton_omni_0-1000keV_pad_spin')) + data = pyspedas.rbsp.rbspice(trange=['2018-11-5', '2018-11-6'], datatype='TOFxPHHHELT') + rbsp_rbspice_pad(probe='a', datatype='TOFxPHHHELT', level='l3') + self.assertTrue(data_exists('rbspa_rbspice_l3_TOFxPHHHELT_oxygen_omni_spin')) + self.assertTrue(data_exists('rbspa_rbspice_l3_TOFxPHHHELT_oxygen_omni_0-1000keV_pad_spin')) + data = pyspedas.rbsp.rbspice(trange=['2018-11-5', '2018-11-6'], datatype='TOFxEnonH') + rbsp_rbspice_pad(probe='a', datatype='TOFxEnonH', level='l3') + self.assertTrue(data_exists('rbspa_rbspice_l3_TOFxEnonH_oxygen_omni_spin')) + self.assertTrue(data_exists('rbspa_rbspice_l3_TOFxEnonH_oxygen_omni_0-1000keV_pad_spin')) + rbsp_rbspice_pad(probe='a', datatype='TOFxEH', level='l3', energy=[0, 1000.0]) + self.assertTrue(data_exists('rbspa_rbspice_l3_TOFxEH_proton_omni_0-1000.0keV_pad')) + self.assertTrue(data_exists('rbspa_rbspice_l3_TOFxEH_proton_omni_0-1000.0keV_pad_spin')) def test_load_mageis_data(self): mageis_vars = pyspedas.rbsp.mageis(trange=['2018-11-5', '2018-11-6'], level='l3', rel='rel04') @@ -54,6 +82,10 @@ def test_load_mageis_data(self): def test_load_hope_data(self): hope_vars = pyspedas.rbsp.hope(trange=['2018-11-5', '2018-11-6'], datatype='moments', level='l3', rel='rel04') self.assertTrue(data_exists('Ion_density')) + hope_vars = pyspedas.rbsp.hope(trange=['2018-11-5', '2018-11-6'], datatype='pitchangle', level='l3') + self.assertTrue(data_exists('FEDO')) + hope_vars = pyspedas.rbsp.hope(trange=['2018-11-5', '2018-11-6'], datatype='spinaverage', level='l2') + self.assertTrue(data_exists('I_Ele')) def test_load_rep_data(self): rept_vars = pyspedas.rbsp.rept(trange=['2018-11-4', '2018-11-5'], level='l2', rel='rel03') @@ -62,10 +94,12 @@ def test_load_rep_data(self): self.assertTrue(data_exists('FPSA')) self.assertTrue(data_exists('FPDU')) - # disabled, 16Sep2021 due to a problem with the data - # def test_load_rps1min_data(self): - # rps_vars = pyspedas.rbsp.rps() - # self.assertTrue(data_exists('DOSE2_RATE')) + def test_load_rps1min_data(self): + rps_vars = pyspedas.rbsp.rps() + self.assertTrue(data_exists('DOSE2_RATE')) + rps_vars = pyspedas.rbsp.rps(datatype='rps') + self.assertTrue(data_exists('FPDU_Energy')) + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/secs/__init__.py b/pyspedas/secs/__init__.py index 341df1c5..1b0abded 100644 --- a/pyspedas/secs/__init__.py +++ b/pyspedas/secs/__init__.py @@ -7,8 +7,8 @@ import numpy as np from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip -from pyspedas.utilities.time_double import time_double +from pytplot import time_clip as tclip +from pytplot import time_double import pandas as pd import time import zipfile diff --git a/pyspedas/secs/load.py b/pyspedas/secs/load.py index 7e5c86df..e8b27b02 100644 --- a/pyspedas/secs/load.py +++ b/pyspedas/secs/load.py @@ -6,7 +6,7 @@ import numpy as np from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from .config import CONFIG import zipfile diff --git a/pyspedas/secs/makeplots.py b/pyspedas/secs/makeplots.py index 72381fe1..0e19e8ed 100644 --- a/pyspedas/secs/makeplots.py +++ b/pyspedas/secs/makeplots.py @@ -170,8 +170,8 @@ def noon_midnight_meridian(dtime=None, delta=0.25): lons_latmax = 0 + 15 * diff_in_hours # longitude for noon line lons_latmin = lons_latmax - 180 # longitude for midnight line elif diff_in_hours < 0: - lons_latmax = 0 - 15 * diff_in_hours # longitude for noon line - lons_latmin = lons_latmax + 180 # longitude for midnight line + lons_latmax = 0 + 15 * diff_in_hours # longitude for noon line, old version is - + lons_latmin = lons_latmax - 180 # longitude for midnight line, old version is + # lons_max_arr = np.full((1, ni_half), lons_latmax) # for noon line lats_max_arr = np.linspace(-90, 90, ni_half) # for noon line diff --git a/pyspedas/secs/tests/tests.py b/pyspedas/secs/tests/tests.py new file mode 100644 index 00000000..280c0baf --- /dev/null +++ b/pyspedas/secs/tests/tests.py @@ -0,0 +1,47 @@ +import unittest +from unittest.mock import patch +import pyspedas +from pyspedas.secs.makeplots import make_plots + +from pyspedas.secs.config import CONFIG +CONFIG['plots_dir'] = 'dir/' + + +class SECSTestCases(unittest.TestCase): + @patch("matplotlib.pyplot.show") + def test_load_secs(self, mock_show): + trange = ['2017-03-27', '2017-03-28'] + d = pyspedas.secs.data(trange=trange, + resolution=10, + dtype='SECS', + no_download=False, + downloadonly=False, + out_type='df') + + make_plots(dtype='SECS', + dtime='2017-03-27/06:00:00', + vplot_sized=True, + contour_den=201, + s_loc=False, + quiver_scale=30) + + @patch("matplotlib.pyplot.show") + def test_load_eics(self, mock_show): + trange = ['2017-03-27', '2017-03-28'] + d = pyspedas.secs.data(trange=trange, + resolution=10, + dtype='EICS', + no_download=False, + downloadonly=False, + out_type='df') + + make_plots(dtype='EICS', + dtime='2017-03-27/06:00:00', + vplot_sized=True, + contour_den=201, + s_loc=False, + quiver_scale=30) + + +if __name__ == '__main__': + unittest.main() diff --git a/pyspedas/soho/README.md b/pyspedas/soho/README.md new file mode 100644 index 00000000..1d6dcd52 --- /dev/null +++ b/pyspedas/soho/README.md @@ -0,0 +1,55 @@ + +## Solar & Heliospheric Observatory (SOHO) +The routines in this module can be used to load data from the Solar & Heliospheric Observatory (SOHO) mission. + +### Instruments +- Charge, Element, and Isotope Analysis System (CELIAS) +- Comprehensive Suprathermal and Energetic Particle Analyzer (COSTEP) +- Energetic and Relativistic Nuclei and Electron experiment (ERNE) +- Orbit (ephemeris and attitude) data (ORBIT) + +### Examples +Get started by importing pyspedas and tplot; these are required to load and plot the data: + +```python +import pyspedas +from pytplot import tplot +``` + +#### Charge, Element, and Isotope Analysis System (CELIAS) + +```python +celias_vars = pyspedas.soho.celias(trange=['2006-06-01', '2006-06-02']) + +tplot(['V_p', 'N_p']) +``` + + +#### Comprehensive Suprathermal and Energetic Particle Analyzer (COSTEP) + +```python +costep_vars = pyspedas.soho.costep(trange=['2006-06-01', '2006-06-02']) + +tplot(['P_int', 'He_int']) +``` + + +#### Energetic and Relativistic Nuclei and Electron experiment (ERNE) + +```python +erne_vars = pyspedas.soho.erne(trange=['2006-06-01', '2006-06-02']) + +tplot('PH') +``` + + +#### Orbit (ephemeris and attitude) data (ORBIT) + +```python +orbit_vars = pyspedas.soho.orbit(trange=['2006-06-01', '2006-06-02']) + +tplot(['GSE_POS', 'GSE_VEL']) +``` + + + \ No newline at end of file diff --git a/pyspedas/soho/__init__.py b/pyspedas/soho/__init__.py new file mode 100644 index 00000000..990b7db3 --- /dev/null +++ b/pyspedas/soho/__init__.py @@ -0,0 +1,310 @@ +from .load import load + + +def celias(trange=['2006-06-01', '2006-06-02'], + datatype='pm_5min', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Charge, Element, and Isotope Analysis System (CELIAS) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + datatype: str + Data type; Valid options: + 'pm_5min' for L1 data + 'pm_30s' for L1 data + 'sem_1day' for L2 data + 'sem_15s' for L2 data + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + tvars= load(instrument='celias', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if tvars is None or notplot or downloadonly: + return tvars + + return celias_postprocessing(tvars) + + +def celias_postprocessing(variables): + """ + Placeholder for CELIAS post-processing + """ + return variables + + +def costep(trange=['2006-06-01', '2006-06-02'], + datatype='ephin_l3i-1day', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Comprehensive Suprathermal and Energetic Particle Analyzer (COSTEP) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + datatype: str + Data type; options: (default: ephin_l3i-1day) + ephin_l3i-1day + ephin_l3i-1hr + ephin_l3i-30min + ephin_l3i-10min + ephin_l3i-5min + ephin_l3i-1min + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + tvars= load(instrument='costep', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if tvars is None or notplot or downloadonly: + return tvars + + return costep_postprocessing(tvars) + + +def costep_postprocessing(variables): + """ + Placeholder for COSTEP post-processing + """ + return variables + + +def erne(trange=['2006-06-01', '2006-06-02'], + datatype='hed_l2-1min', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Energetic and Relativistic Nuclei and Electron experiment (ERNE) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + datatype: str + Data type; Valid options: + 'hed_l2-1min' for L2 data + 'led_l2-1min' for L2 data + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + tvars= load(instrument='erne', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if tvars is None or notplot or downloadonly: + return tvars + + return erne_postprocessing(tvars) + + +def erne_postprocessing(variables): + """ + Placeholder for ERNE post-processing + """ + return variables + + +def orbit(trange=['2006-06-01', '2006-06-02'], + datatype='pre_or', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Orbit (ephemeris and attitude) data (ORBIT) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + datatype: str + Data type; Valid options: + 'def_at' for definitive attitude data + 'def_or' for definitive orbit data + 'pre_or' for preliminary orbit data (default) + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + tvars= load(instrument='orbit', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if tvars is None or notplot or downloadonly: + return tvars + + return orbit_postprocessing(tvars) + + +def orbit_postprocessing(variables): + """ + Placeholder for ORBIT post-processing + """ + return variables + + + diff --git a/pyspedas/soho/config.py b/pyspedas/soho/config.py new file mode 100644 index 00000000..64dafd5f --- /dev/null +++ b/pyspedas/soho/config.py @@ -0,0 +1,12 @@ +import os + +CONFIG = {'local_data_dir': 'soho_data/', + 'remote_data_dir': 'https://spdf.gsfc.nasa.gov/pub/data/soho/'} + +# override local data directory with environment variables +if os.environ.get('SPEDAS_DATA_DIR'): + CONFIG['local_data_dir'] = os.sep.join([os.environ['SPEDAS_DATA_DIR'], 'soho']) + +if os.environ.get('SOHO_DATA_DIR'): + CONFIG['local_data_dir'] = os.environ['SOHO_DATA_DIR'] + \ No newline at end of file diff --git a/pyspedas/soho/load.py b/pyspedas/soho/load.py new file mode 100644 index 00000000..6bd26112 --- /dev/null +++ b/pyspedas/soho/load.py @@ -0,0 +1,73 @@ +import logging +from pyspedas.utilities.dailynames import dailynames +from pyspedas.utilities.download import download +from pytplot import time_clip as tclip +from pytplot import cdf_to_tplot + +from .config import CONFIG + + +def load(trange=['2006-06-01', '2006-06-02'], + instrument='celias', + datatype='pm_5min', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the SOHO mission; this function is not meant + to be called directly; instead, see the wrappers: + + pyspedas.soho.celias + pyspedas.soho.cosp + pyspedas.soho.erne + pyspedas.soho.orbit + + """ + res = 24 * 3600. + + if instrument == 'celias': + pathformat = instrument+'/'+datatype+'/%Y/soho_'+instrument+'-'+datatype+'_%Y%m%d_v??.cdf' + elif instrument == 'costep': + pathformat = instrument+'/'+datatype+'/%Y/soho_'+instrument+'-'+datatype+'_%Y0101_v??.??.cdf' + res = 24 * 3600. * 366 + elif instrument == 'erne': + pathformat = instrument+'/'+datatype+'/%Y/soho_'+instrument+'-'+datatype+'_%Y%m%d_v??.cdf' + elif instrument == 'orbit': + if datatype not in ['pre_or', 'def_or', 'def_at']: + logging.error('Invalod datatype: ' + datatype) + return + datatype_fn = datatype.split('_')[1] + '_' +datatype.split('_')[0] + pathformat = instrument+'/'+datatype+'/cdf/%Y/so_'+datatype_fn+'_%Y%m%d_v??.cdf' + + # find the full remote path names using the trange + remote_names = dailynames(file_format=pathformat, trange=trange, res=res) + + out_files = [] + + files = download(remote_file=remote_names, remote_path=CONFIG['remote_data_dir'], local_path=CONFIG['local_data_dir'], no_download=no_update) + if files is not None: + for file in files: + out_files.append(file) + + out_files = sorted(out_files) + + if downloadonly: + return out_files + + tvars = cdf_to_tplot(out_files, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, notplot=notplot) + + if notplot: + return tvars + + if time_clip: + for new_var in tvars: + tclip(new_var, trange[0], trange[1], suffix='') + + return tvars + + \ No newline at end of file diff --git a/pyspedas/soho/tests/__init__.py b/pyspedas/soho/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pyspedas/soho/tests/tests.py b/pyspedas/soho/tests/tests.py new file mode 100644 index 00000000..f51231a5 --- /dev/null +++ b/pyspedas/soho/tests/tests.py @@ -0,0 +1,39 @@ +import os +import unittest +from pytplot import data_exists +import pyspedas + + +class LoadTestCases(unittest.TestCase): + def test_load_celias_data(self): + out_vars = pyspedas.soho.celias(time_clip=True) + self.assertTrue(data_exists('V_p')) + self.assertTrue(data_exists('N_p')) + + def test_load_cosp_data(self): + out_vars = pyspedas.soho.costep(time_clip=True) + self.assertTrue(data_exists('P_int')) + self.assertTrue(data_exists('He_int')) + + def test_load_erne_data(self): + out_vars = pyspedas.soho.erne(time_clip=True) + self.assertTrue(data_exists('PH')) + + def test_load_orbit_data(self): + out_vars = pyspedas.soho.orbit(time_clip=True) + self.assertTrue(data_exists('GSE_POS')) + self.assertTrue(data_exists('GSE_VEL')) + + def test_load_notplot(self): + out_vars = pyspedas.soho.erne(notplot=True) + self.assertTrue('PH' in out_vars) + + def test_downloadonly(self): + files = pyspedas.soho.erne(downloadonly=True, trange=['2006-06-01', '2006-06-02']) + self.assertTrue(os.path.exists(files[0])) + + +if __name__ == '__main__': + unittest.main() + + \ No newline at end of file diff --git a/pyspedas/solo/__init__.py b/pyspedas/solo/__init__.py index 829ed2a1..2af608a2 100644 --- a/pyspedas/solo/__init__.py +++ b/pyspedas/solo/__init__.py @@ -1,6 +1,7 @@ - from pytplot import options from .load import load +from pyspedas.utilities.datasets import find_datasets + def mag(trange=['2020-06-01', '2020-06-02'], datatype='rtn-normal', @@ -85,15 +86,14 @@ def mag(trange=['2020-06-01', '2020-06-02'], if 'B_SRF'+suffix in mag_vars: options('B_SRF'+suffix, 'legend_names', ['Bx (SRF)', 'By (SRF)', 'Bz (SRF)']) options('B_SRF'+suffix, 'ytitle', ytitle) - options('B_SRF'+suffix, 'color', ['b', 'g', 'r']) if 'B_RTN'+suffix in mag_vars: options('B_RTN'+suffix, 'legend_names', ['Br (RTN)', 'Bt (RTN)', 'Bn (RTN)']) options('B_RTN'+suffix, 'ytitle', ytitle) - options('B_RTN'+suffix, 'color', ['b', 'g', 'r']) return mag_vars + def rpw(trange=['2020-06-15', '2020-06-16'], datatype='hfr-surv', level='l2', @@ -194,6 +194,7 @@ def rpw(trange=['2020-06-15', '2020-06-16'], """ return load(instrument='rpw', trange=trange, level=level, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + def swa(trange=['2020-07-22', '2020-07-23'], datatype='pas-eflux', level='l2', @@ -268,6 +269,7 @@ def swa(trange=['2020-07-22', '2020-07-23'], return loaded_vars + def epd(trange=['2020-06-14', '2020-06-15'], datatype='step', mode='hcad', @@ -336,3 +338,6 @@ def epd(trange=['2020-06-14', '2020-06-15'], """ return load(instrument='epd', trange=trange, level=level, datatype=datatype, mode=mode, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + +def datasets(instrument=None, label=True): + return find_datasets(mission='Solar Orbiter', instrument=instrument, label=label) diff --git a/pyspedas/solo/load.py b/pyspedas/solo/load.py index 7d4dec25..d39aa6e1 100644 --- a/pyspedas/solo/load.py +++ b/pyspedas/solo/load.py @@ -1,6 +1,6 @@ from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import cdf_to_tplot from .config import CONFIG @@ -42,7 +42,10 @@ def load(trange=['2020-06-01', '2020-06-02'], res = 60.0 if instrument == 'mag': - pathformat = instrument+'/'+science_or_low_latency+'/'+level+'/'+datatype+'/%Y/solo_'+level+'_'+instrument+'-'+datatype+'_'+date_format+'_v'+cdf_version+'.cdf' + if level == 'll02': + pathformat = instrument+'/'+science_or_low_latency+'/'+level+'/%Y/solo_'+level+'_'+instrument+'_'+date_format+'_v'+cdf_version+'.cdf' + else: + pathformat = instrument+'/'+science_or_low_latency+'/'+level+'/'+datatype+'/%Y/solo_'+level+'_'+instrument+'-'+datatype+'_'+date_format+'_v'+cdf_version+'.cdf' elif instrument == 'epd': pathformat = instrument+'/'+science_or_low_latency+'/'+level+'/'+datatype+'/'+mode+'/%Y/solo_'+level+'_'+instrument+'-'+datatype+'-'+mode+'_'+date_format+'_v'+cdf_version+'.cdf' elif instrument == 'rpw': @@ -62,6 +65,8 @@ def load(trange=['2020-06-01', '2020-06-02'], date_format = '%Y%m%dt%H%M??-*' res = 60.0 pathformat = instrument+'/'+science_or_low_latency+'/'+level+'/'+datatype+'/%Y/solo_'+level+'_'+instrument+'-'+datatype+'_'+date_format+'_v'+cdf_version+'.cdf' + elif level == 'l3': + pathformat = instrument+'/'+science_or_low_latency+'/'+level+'/'+datatype+'/%Y/solo_'+level+'_'+instrument+'-'+datatype+'_'+date_format+'_v'+cdf_version+'.cdf' # find the full remote path names using the trange remote_names = dailynames(file_format=pathformat, trange=trange, res=res) diff --git a/pyspedas/solo/tests/tests.py b/pyspedas/solo/tests/tests.py index 218dabba..8c06942f 100644 --- a/pyspedas/solo/tests/tests.py +++ b/pyspedas/solo/tests/tests.py @@ -1,14 +1,22 @@ - import os import unittest -from pyspedas.utilities.data_exists import data_exists - +from pytplot import data_exists import pyspedas + class LoadTestCases(unittest.TestCase): def test_load_mag_data(self): mag_vars = pyspedas.solo.mag(time_clip=True) self.assertTrue(data_exists('B_RTN')) + mag_vars = pyspedas.solo.mag(datatype='rtn-normal-1-minute') + self.assertTrue(data_exists('B_RTN')) + mag_vars = pyspedas.solo.mag(notplot=True, datatype='rtn-burst') + self.assertTrue('B_RTN' in mag_vars) + + def test_load_mag_ll02_data(self): + mag_vars = pyspedas.solo.mag(level='ll02', trange=['2020-08-04', '2020-08-05']) + self.assertTrue(data_exists('B_RTN')) + self.assertTrue(data_exists('B_SRF')) def test_load_epd_data(self): epd_vars = pyspedas.solo.epd() @@ -21,16 +29,28 @@ def test_load_rpw_data(self): rpw_vars = pyspedas.solo.rpw() self.assertTrue(data_exists('AVERAGE_NR')) self.assertTrue(data_exists('TEMPERATURE')) - self.assertTrue(data_exists('FLUX_DENSITY1')) - self.assertTrue(data_exists('FLUX_DENSITY2')) + # self.assertTrue(data_exists('FLUX_DENSITY1')) + # self.assertTrue(data_exists('FLUX_DENSITY2')) def test_load_swa_data(self): swa_vars = pyspedas.solo.swa() self.assertTrue(data_exists('eflux')) + swa_vars = pyspedas.solo.swa(level='l2', datatype='eas1-nm3d-def') + self.assertTrue(data_exists('SWA_EAS1_NM3D_DEF_Data')) + swa_vars = pyspedas.solo.swa(notplot=True) + self.assertTrue('eflux' in swa_vars) + + def test_load_swa_l1_data(self): + swa_vars = pyspedas.solo.swa(level='l1', datatype='eas-padc') + self.assertTrue(data_exists('SWA_EAS_BM_Data')) + self.assertTrue(data_exists('SWA_EAS_MagDataUsed')) + swa_vars = pyspedas.solo.swa(level='l1', datatype='his-pha', trange=['2020-06-03', '2020-06-04']) + self.assertTrue(data_exists('HIS_PHA_EOQ_STEP')) def test_downloadonly(self): files = pyspedas.solo.mag(downloadonly=True) self.assertTrue(os.path.exists(files[0])) + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/sosmag/README.md b/pyspedas/sosmag/README.md new file mode 100644 index 00000000..cf906f4d --- /dev/null +++ b/pyspedas/sosmag/README.md @@ -0,0 +1,47 @@ +## Service Oriented Spacecraft Magnetometer on GEO-KOMPSAT-2A (SOSMAG) +The routines in this module can be used to load data from the SOSMAG magnetometer. + +For more information, see: +- [SOSMAG at the ESA Space Weather Service Network](https://swe.ssa.esa.int/sosmag) + +The data is loaded using the ESA HAPI server (requires registration): +- [ESA HAPI server](https://swe.ssa.esa.int/hapi) + +Users should register with ESA and then use their own username and password in the file sosmag/load.py +- [ESA registration](https://swe.ssa.esa.int/registration/) + + +### Instruments +- Magnetometer (MAG) + +Magnetic Field Data with 1-16Hz from SOSMAG on GEO-KOMPSAT-2A in geostationary orbit at 128.2E. + + +### Data types +There are two datatypes available: + +- Near-realtime ('1m') + +```python +tplot_ok, var_names = sosmag_load(trange=['2021-01-01 02:00:00', '2021-01-01 03:00:00'], datatype='1m') +``` + +- Recalibrated L2 ('', the default) + +```python +tplot_ok, var_names = sosmag_load(trange=['2021-01-01 02:00:00', '2021-01-01 03:00:00'], datatype='') +``` + + +### Example +First import the required functions from pyspedas and tplot. + +Then load and plot the magnetometer data. + +```python +from pytplot import tplot +from pyspedas import sosmag_load + +tplot_ok, var_names = sosmag_load(trange=['2021-01-01 02:00:00', '2021-01-01 03:00:00'], datatype='1m') +tplot(var_names) +``` diff --git a/pyspedas/sosmag/__init__.py b/pyspedas/sosmag/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pyspedas/sosmag/load.py b/pyspedas/sosmag/load.py new file mode 100644 index 00000000..d4d39a2a --- /dev/null +++ b/pyspedas/sosmag/load.py @@ -0,0 +1,535 @@ +''' +Load data from SOSMAG Space Weather instrument + flying on the Korean GEO-KOMPSAT-2A satellite. + +This function downloads data directly from the ESA HAPI server. +The ESA HAPI server requires authentication. +Users have to register with the ESA server + and replace their username and password in the code below. + +Notes +----- +https://swe.ssa.esa.int/sosmag +https://swe.ssa.esa.int/hapi +Data types available: + 1. (datatype='1m', esa_gk2a_sosmag_1m) + Near-realtime Magnetic Field Data with 1-16Hz from SOSMAG + on GEO-KOMPSAT-2A in geostationary orbit at 128.2E. + 'spase://SSA/NumericalData/GEO-KOMPSAT-2A/esa_gk2a_sosmag_1m' + + 2. (default, datatype='', esa_gk2a_sosmag_recalib) + Recalibrated L2 Magnetic Field Data with 1-16Hz from SOSMAG + on GEO-KOMPSAT-2A in geostationary orbit at 128.2E. + 'spase://SSA/NumericalData/GEO-KOMPSAT-2A/esa_gk2a_sosmag_recalib' + +Example +------- +from pytplot import tplot +from pyspedas import sosmag_load +t_ok, var_names = sosmag_load(trange=['2021-01-01 02:00','2021-01-01 03:00']) +tplot(var_names) + +''' +import requests +import json +import numpy as np +from pytplot import store_data, options +from pyspedas import time_double, time_string + + +# Global parameters for the functions in this file. +# Users must replace username and password with their ESA credentials. +sosmag_parameters = { + 'username': 'spedas', # Users must replace with their ESA username. + 'password': 'acQ4pG6u9Bh26v2', # User ESA password. + 'portal_url': 'https://swe.ssa.esa.int/', + 'authenticate_url': 'https://sso.ssa.esa.int/am/json/authenticate', + 'sso_cookiename': 'iPlanetDirectoryPro', + 'print_errors': True, # If true, prints error messages. + 'print_messages': False, # If true, prints debugging/success messages. +} + + +def sosmag_get_auth_cookie(): + ''' + Authenticates a user against OpenAM. + + Uses the sosmag_parameters dictionary for the parameters needed. + Returns whether authentication was successful and the obtained cookie. + If an error occurs, the exception is caught and the error printed. + + Parameters + ---------- + None. + + Returns + ------- + success: bool + True, if authentication was successful + auth_cookie: str + The obtained authentication cookie + ''' + success = False + auth_cookie = '' + try: + # Send a POST request to the authentication url + response = requests.post( + sosmag_parameters['authenticate_url'], + headers={ + 'Content-Type': 'application/json', + 'X-OpenAM-Username': sosmag_parameters['username'], + 'X-OpenAM-Password': sosmag_parameters['password'], + }, + data='{}') + # form the response, extract the auth cookie and return it + token_dict = json.loads(response.content) + auth_cookie = token_dict['tokenId'] + success = True + except Exception as exc: + success = False + auth_cookie = '' + if sosmag_parameters['print_errors']: + print(exc) + finally: + return success, auth_cookie + + +def sosmag_get_session(auth_cookie): + ''' + Establishes a session with the ESA HAPI server. + + Uses the authentication cookie obtained from sosmag_get_auth_cookie(). + Returns whether a session was established successfully and if so, + the obtained session cookies. + If an error occurs, the exception is caught and the error is printed. + + Parameters + ---------- + auth_cookie: str + The obtained authentication cookie from sosmag_get_auth_cookie() + + Returns + ------- + success: bool + True, if authentication was successful + jsession_id: str + The obtained session cookie + xsrf_token: str + The obtained xsrf token + ''' + success = False + jsession_id = '' + xsrf_token = '' + try: + # Try to access the HAPI/capabilities using the auth_cookie + init_response = requests.get( + sosmag_parameters['portal_url'] + '/hapi/capabilities', + cookies={ + sosmag_parameters['sso_cookiename']: auth_cookie, + } + ) + # Extract the session cookies from the very first response from HAPI + cookie_jar = init_response.history[0].cookies + jsession_id = cookie_jar.get('JSESSIONID') + xsrf_token = cookie_jar.get('XSRF-TOKEN') + # Extract the consent url we are being requested to send our consent to + # (in case we didn't consent yet) + consent_url = init_response.url + content = init_response.content + + # If we consented already, we should have received HAPI/capabilities. + if '/hapi/capabilities' not in consent_url: + # If not, we need to give our consent in the next step. + # Send the consent along with all cookies to the consent url. + consent_response = requests.post( + consent_url, + cookies={ + sosmag_parameters['sso_cookiename']: auth_cookie, + 'JSESSIONID': jsession_id, + 'XSRF_TOKEN': xsrf_token, + }, + data={ + 'decision': 'Allow', + 'save_consent': 'on', + } + ) + content = consent_response.content + # This will result in a redirect to the initial HAPI/capabilities. + capabilities = json.loads(content) + # The json output should be: + # 2022/10/24: {'HAPI':'2.1.0','status':{'code':1200,'message':'OK'},'outputFormats':['csv','json']} + # previous: {'version':'2.1.0','status':{'code':1200,'message':'OK'},'outputFormats':['csv','json']} + version = capabilities['HAPI'] + status = capabilities['status'] + # If the output is what we expect, return True and the session cookies + if version != '' and status != {} and status['message'] == 'OK': + success = True + else: + success = False + jsession_id = '' + xsrf_token = '' + except Exception as exc: + if sosmag_parameters['print_errors']: + print(exc) + success = False + jsession_id = '' + xsrf_token = '' + + return success, jsession_id, xsrf_token + + +def sosmag_get_capabilities(jsession_id, xsrf_token): + ''' + Gets HAPI/capabilities from server. + + Uses the two cookies obtained using sosmag_get_session_cookies(). + If an error occurs, the exception is caught and the error printed. + + Parameters + ---------- + jsession_id: str + The obtained session cookie + xsrf_token: str + The obtained xsrf token + + Returns + ------- + success: bool + True, if function was successful + capabilities: dict of str + The obtained capabilities as a json dictionary of strings + ''' + success = False + capabilities = {} + try: + # Send a GET request to the HAPI/capabilities. + test_response = requests.get( + sosmag_parameters['portal_url'] + '/hapi/capabilities', + cookies={ + 'JSESSIONID': jsession_id, + 'XSRF_TOKEN': xsrf_token, + } + ) + # Extract the capabilities from the response. + capabilities = json.loads(test_response.content) + version = capabilities['HAPI'] + status = capabilities['status'] + # If the capabilities are as expected, return True. + if version != '' and status != {} and status['message'] == 'OK': + success = True + else: + success = False + capabilities = {} + except Exception as exc: + if sosmag_parameters['print_errors']: + print(exc) + success = False + capabilities = {} + + return success, capabilities + + +def sosmag_get_data( + jsession_id, xsrf_token, # HAPI session cookies. + datatype='', # Data type, either '' (recalibrated) or '1m' (real time) + timemin='2022-01-31T01:00:00.000Z', # Start time + timemax='2022-01-31T01:10:00.000Z', # End time +): + ''' + Gets either HAPI/data or HAPI/info from server. + + Uses the two cookies obtained from sosmag_get_session_cookies(). + If an error occurs, the exception is caught and the error printed. + + Parameters + ---------- + jsession_id: str + The obtained session cookie. + xsrf_token: str + The obtained xsrf token cookie. + datatype: str + Data type, either '' (recalibrated) or '1m' (1 minute, real time). + timemin: str + Start time, for example: '2022-01-31T01:00:00.000Z'. + timemax: str + End time, for example: '2022-01-31T01:10:00.000Z'. + + Returns + ------- + success: bool + True, if function was successful. + data: dict of str + The obtained data as a json dictionary of strings. + parameters: dict of str + The obtained parameters for the data as a json dictionary of strings. + description: str + The obtained description of data. + ''' + success = False + data = {} + parameters = {} + description = '' + dataid = 'spase://SSA/NumericalData/GEO-KOMPSAT-2A/' + if datatype == '1m': + dataid = dataid + 'esa_gk2a_sosmag_1m' + else: + dataid = dataid + 'esa_gk2a_sosmag_recalib' + + # This query string can also be used in a browser. + hquery = ('data?id=' + dataid + + '&time.min=' + timemin + + '&time.max=' + timemax + + '&format=json') + fullurl = sosmag_parameters['portal_url'] + '/hapi/' + hquery + if sosmag_parameters['print_messages']: + print(fullurl) + + try: + # send a GET request to the HAPI server + test_response = requests.get( + fullurl, + cookies={ + 'JSESSIONID': jsession_id, + 'XSRF_TOKEN': xsrf_token, + } + ) + # extract the content from the response + dat = json.loads(test_response.content) + data = dat['data'] + parameters = dat['parameters'] + description = dat['description'] + status = dat['status'] + + # if the status are as expected, return True along with the data dict + if data != '' and status != {} and status['message'] == 'OK': + success = True + else: + success = False + data = {} + parameters = {} + description = '' + except Exception as exc: + if sosmag_parameters['print_errors']: + print(exc) + success = False + data = {} + parameters = {} + description = '' + + return success, data, parameters, description + + +def sosmag_to_tplot( + data, # Data, array with 14 fields + parameters, # Description of data, array with 14 fields + desc, # Single string description of the data set + datatype='', # Either '' (recalibrated) or '1m' (real time) + prefix='', # To be added as prefix of tplot variable + suffix='' # To be added as suffix of tplot variable +): + ''' + Saves SOSMAG data as tplot variables. + + Creates three tplot variables: + 1. Magnetic Field B in GSE coordinates, sosmag_b_gse. + 2. Magnetic Field B in HPEN coordinates, sosmag_b_hpen. + 3. Spacecraft Position in GSE, sosmag_pos. + + Parameters + ---------- + data: dict of str + The obtained data as a json dictionary of strings. + parameters: dict of str + The obtained parameters for the data as a json dictionary of strings. + description: str + The obtained description for this set of data. + datatype: str + Data type can be either '' (recalibrated) or '1m' (1 minute real time). + prefix: str + Prefix for tplot names. Default is ''. + suffix: str + Suffix for tplot names. Default is ''. + + Returns + ------- + success: bool + True, if function was successful. + var_names: list of str + Names of tplot variables created. + ''' + success = False + var_names = [] + try: + # Construct tplot variable names. + if datatype == '': + pre = prefix + 'sosmag' + else: + pre = prefix + 'sosmag_' + datatype + + # Get data + d = np.array(data) # data + p = np.array(parameters) # parameters + + if len(d.shape) != 2 or len(p.shape) != 1 or d.shape[1] != 14: + print('SOSMAG data has wrong shape. Abort.') + return False + + # Time is the 0th field + td = np.array(time_double(d[:, 0])) + + # Magnetic field in GSE 'b_gse_x', 'b_gse_y', 'b_gse_z' + # Data fields: [2, 3, 4] + yd = np.array(d[:, 2:5], dtype=float) + var_name0 = pre + '_b_gse' + suffix + pnames = [p[2]['name'], p[3]['name'], p[4]['name']] + pd = 'Magnetic Field B in GSE coordinates' + attr_dict = {'description': pd} + store_data(var_name0, data={'x': td, 'y': yd}, attr_dict=attr_dict) + options(var_name0, 'legend_names', pnames) + options(var_name0, 'ysubtitle', '[nT]') + options(var_name0, 'coord_sys', 'gse') + options(var_name0, 'description', desc) + + # Magnetic field in HPEN 'b_hpen_x', 'b_hpen_y', 'b_hpen_z' + # Data fields: [5, 6, 7] + yd = np.array(d[:, 5:8], dtype=float) + var_name1 = pre + '_b_hpen' + suffix + pnames = [p[5]['name'], p[6]['name'], p[7]['name']] + pd = 'Magnetic Field B in HPEN coordinates' + attr_dict = {'description': pd} + store_data(var_name1, data={'x': td, 'y': yd}, attr_dict=attr_dict) + options(var_name1, 'legend_names', pnames) + options(var_name1, 'ysubtitle', '[nT]') + options(var_name1, 'coord_sys', 'hpen') + options(var_name1, 'description', desc) + + # Spacecraft Position in GSE 'position_x', 'position_y', 'position_z' + # Data fields: [8, 9, 10] + yd = np.array(d[:, 8:11], dtype=float) + var_name2 = pre + '_position' + suffix + pnames = [p[8]['name'], p[9]['name'], p[10]['name']] + pd = 'Spacecraft Position in GSE' + attr_dict = {'description': pd} + store_data(var_name2, data={'x': td, 'y': yd}, attr_dict=attr_dict) + options(var_name2, 'legend_names', pnames) + options(var_name2, 'ysubtitle', '[km]') + options(var_name2, 'coord_sys', 'gse') + options(var_name2, 'description', desc) + + # Print the variable names created + var_names = [var_name0, var_name1, var_name2] + print('Tplot variables created!') + print(var_names) + success = True + except Exception as exc: + if sosmag_parameters['print_errors']: + print(exc) + success = False + + return success, var_names + + +def sosmag_load( + trange=['2022-01-31T01:00:00.000Z', + '2022-01-31T01:01:00.000Z'], # Default 10 minutes of data + datatype='', # Either '' (recalibrated) or '1m' (real time) + prefix='', # Prefix for tplot names + suffix='', # Suffix for tplot names +): + ''' + This function loads data from SOSMAG. + + Gets data from the ESA web server as a json string. + Creates three tplot variables: + 1. Magnetic Field B in GSE coordinates, sosmag_b_gse + 2. Magnetic Field B in HPEN coordinates, sosmag_b_hpen + 3. Spacecraft Position in GSE, sosmag_pos + + Parameters + ---------- + trange: list of str + Start and end times. + Many time formats are supported, see function time_double(). + datatype: str + Either '' (recalibrated) or '1m' (real time). + prefix: str + Prefix for tplot names. Default is ''. + suffix: str + Suffix for tplot names. Default is ''. + + Returns + ------- + success: bool + True, if function was successful. + var_names: list of str + Names of tplot variables created. + + Notes + ----- + Link that can be tested on a browser: + https://swe.ssa.esa.int/hapi/data? + id=spase://SSA/NumericalData/GEO-KOMPSAT-2A/esa_gk2a_sosmag_recalib + &time.min=2021-01-31T01:00:00.000Z + &time.max=2021-01-31T01:01:00.000Z&format=json + ''' + success = False + var_names = [] + # Make sure that time is in the correct format for the ESA server. + trange = time_string(time_double(trange), fmt='%Y-%m-%dT%H:%M:%S.000Z') + if sosmag_parameters['print_messages']: + print('trange', trange) + + # Authenticate with the HAPI server and receive a cookie. + authenticated, auth_cookie = sosmag_get_auth_cookie() + if authenticated: + if sosmag_parameters['print_messages']: + print('SOSMAG authentication successful.') + else: + print('SOSMAG authentication failed. \ + Please check username and password in the file sosmag:load.py.') + return + + # Set a session with the server. + capok = False + if authenticated: + sessionοκ, jsession_id, xsrf_token = sosmag_get_session(auth_cookie) + if sessionοκ: + # Session successfully established. Obtained session cookies. + # Testing session cookies on hapi/capabilities. + if sosmag_parameters['print_messages']: + print('SOSMAG session established successfully.') + capok, capabilities = sosmag_get_capabilities(jsession_id, + xsrf_token) + if capok: + if sosmag_parameters['print_messages']: + print('SOSMAG HAPI server capabilities: ') + print(capabilities) + else: + print('Problem communicating with server. Aborting.') + return + else: + print('SOSMAG session could not be established. Aborting.') + return + + # Get data. + dataok = False + if capok: + dataok, data, parameters, desc = sosmag_get_data( + jsession_id, xsrf_token, datatype=datatype, + timemin=trange[0], timemax=trange[1]) + if dataok: + tplotok, var_names = sosmag_to_tplot( + data, parameters, desc, datatype=datatype, + prefix=prefix, suffix=suffix) + if tplotok: + if sosmag_parameters['print_messages']: + print('Data was loaded.') + success = True + else: + print('Could load data into pytplot. Aborting.') + return + else: + print('Could not get any data. Aborting.') + return + + return success, var_names diff --git a/pyspedas/sosmag/tests/__init__.py b/pyspedas/sosmag/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pyspedas/sosmag/tests/tests.py b/pyspedas/sosmag/tests/tests.py new file mode 100644 index 00000000..04b5e140 --- /dev/null +++ b/pyspedas/sosmag/tests/tests.py @@ -0,0 +1,39 @@ +import unittest +import pyspedas +from pyspedas import sosmag_load +from pytplot import data_exists + +pyspedas.sosmag.load.sosmag_parameters['print_messages'] = True + + +class SOSMAG_Tests(unittest.TestCase): + def test_mag(self): + t_ok, var_names = sosmag_load(trange=['2021-01-01 02:00', '2021-01-01 03:00']) + self.assertTrue(data_exists('sosmag_b_gse')) + self.assertTrue(data_exists('sosmag_position')) + + def test_1m(self): + t_ok, var_names = sosmag_load(datatype='1m', trange=['2021-01-01 02:00', '2021-01-01 03:00']) + self.assertTrue(data_exists('sosmag_1m_b_gse')) + self.assertTrue(data_exists('sosmag_1m_position')) + + def test_invalid_user(self): + pyspedas.sosmag.load.sosmag_parameters['username'] = 'not_valid' + try: + t_ok, var_names = sosmag_load(datatype='1m', trange=['2021-01-01 02:00', '2021-01-01 03:00']) + except: + pass + pyspedas.sosmag.load.sosmag_parameters['username'] = 'spedas' + + def test_invalid_cookies(self): + authenticated, auth_cookie = pyspedas.sosmag.load.sosmag_get_auth_cookie() + # shouldn't work + invalid = pyspedas.sosmag.load.sosmag_get_session('') + invalid = pyspedas.sosmag.load.sosmag_get_capabilities('', '') + invalid = pyspedas.sosmag.load.sosmag_get_data('', '') + invalid = pyspedas.sosmag.load.sosmag_to_tplot([1], '', '') + invalid = pyspedas.sosmag.load.sosmag_to_tplot(None, '', '') + + +if __name__ == '__main__': + unittest.main() diff --git a/pyspedas/st5/README.md b/pyspedas/st5/README.md new file mode 100644 index 00000000..5e96b326 --- /dev/null +++ b/pyspedas/st5/README.md @@ -0,0 +1,25 @@ + +## Space Technology 5 (ST5) +The routines in this module can be used to load data from the Space Technology 5 (ST5) mission. + +### Instruments +- Magnetometer (MAG) + +### Examples +Get started by importing pyspedas and tplot; these are required to load and plot the data: + +```python +import pyspedas +from pytplot import tplot +``` + +#### Magnetometer (MAG) + +```python +mag_vars = pyspedas.st5.mag(trange=['2006-06-01', '2006-06-02']) + +tplot(['B_SM', 'SC_POS_SM']) +``` + + + \ No newline at end of file diff --git a/pyspedas/st5/__init__.py b/pyspedas/st5/__init__.py new file mode 100644 index 00000000..6cc2635c --- /dev/null +++ b/pyspedas/st5/__init__.py @@ -0,0 +1,84 @@ +from .load import load +from pyspedas.utilities.datasets import find_datasets + + +def mag(trange=['2006-06-01', '2006-06-02'], + probe='094', + datatype='1sec', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the Magnetometer (MAG) + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + probe: str + Probe #; Valid options: '094', '224', '155' + + datatype: str + Data type; options: '1sec' (default: 1sec) + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + + tvars = load(instrument='mag', trange=trange, datatype=datatype, probe=probe, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if tvars is None or notplot or downloadonly: + return tvars + + return mag_postprocessing(tvars) + + +def mag_postprocessing(variables): + """ + Placeholder for MAG post-processing + """ + return variables + + +def datasets(instrument=None, label=True): + return find_datasets(mission='ST5', instrument=instrument, label=label) diff --git a/pyspedas/st5/config.py b/pyspedas/st5/config.py new file mode 100644 index 00000000..ce310f83 --- /dev/null +++ b/pyspedas/st5/config.py @@ -0,0 +1,12 @@ +import os + +CONFIG = {'local_data_dir': 'st5_data/', + 'remote_data_dir': 'https://spdf.gsfc.nasa.gov/pub/data/st5/'} + +# override local data directory with environment variables +if os.environ.get('SPEDAS_DATA_DIR'): + CONFIG['local_data_dir'] = os.sep.join([os.environ['SPEDAS_DATA_DIR'], 'st5']) + +if os.environ.get('ST5_DATA_DIR'): + CONFIG['local_data_dir'] = os.environ['ST5_DATA_DIR'] + \ No newline at end of file diff --git a/pyspedas/st5/load.py b/pyspedas/st5/load.py new file mode 100644 index 00000000..ce69346d --- /dev/null +++ b/pyspedas/st5/load.py @@ -0,0 +1,57 @@ +from pyspedas.utilities.dailynames import dailynames +from pyspedas.utilities.download import download +from pytplot import time_clip as tclip +from pytplot import cdf_to_tplot + +from .config import CONFIG + + +def load(trange=['2006-06-01', '2006-06-02'], + instrument='mag', + probe='', + datatype='1sec', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the ST5 mission; this function is not meant + to be called directly; instead, see the wrappers: + + pyspedas.st5.mag + + """ + + pathformat = probe+'/'+instrument+'/%Y/st5-'+probe+'_'+datatype+'_'+instrument+'_%Y%m%d_v?.?.?.cdf' + + # find the full remote path names using the trange + remote_names = dailynames(file_format=pathformat, trange=trange) + + out_files = [] + + files = download(remote_file=remote_names, remote_path=CONFIG['remote_data_dir'], local_path=CONFIG['local_data_dir'], no_download=no_update) + if files is not None: + for file in files: + out_files.append(file) + + out_files = sorted(out_files) + + if downloadonly: + return out_files + + tvars = cdf_to_tplot(out_files, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, notplot=notplot) + + if notplot: + return tvars + + if time_clip: + for new_var in tvars: + tclip(new_var, trange[0], trange[1], suffix='') + + return tvars + + \ No newline at end of file diff --git a/pyspedas/st5/tests/__init__.py b/pyspedas/st5/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pyspedas/st5/tests/tests.py b/pyspedas/st5/tests/tests.py new file mode 100644 index 00000000..021e9efa --- /dev/null +++ b/pyspedas/st5/tests/tests.py @@ -0,0 +1,24 @@ +import os +import unittest +from pytplot import data_exists +import pyspedas + + +class LoadTestCases(unittest.TestCase): + def test_load_mag_data(self): + out_vars = pyspedas.st5.mag(time_clip=True) + self.assertTrue(data_exists('B_SM')) + + def test_load_notplot(self): + out_vars = pyspedas.st5.mag(notplot=True) + self.assertTrue('B_SM' in out_vars) + + def test_downloadonly(self): + files = pyspedas.st5.mag(downloadonly=True, trange=['2006-06-01', '2006-06-02']) + self.assertTrue(os.path.exists(files[0])) + + +if __name__ == '__main__': + unittest.main() + + \ No newline at end of file diff --git a/pyspedas/stereo/README.md b/pyspedas/stereo/README.md index 04742efc..82e886a2 100644 --- a/pyspedas/stereo/README.md +++ b/pyspedas/stereo/README.md @@ -5,6 +5,8 @@ The routines in this module can be used to load data from the STEREO mission. ### Instruments - Magnetometer (MAG) - PLAsma and SupraThermal Ion Composition (PLASTIC) +- STEREO Electromagnetic Waves Experiement (SWAVES) +- Beacon (low resolution beacon data) ### Examples Get started by importing pyspedas and tplot; these are required to load and plot the data: @@ -65,3 +67,17 @@ plastic_vars = pyspedas.stereo.plastic(trange=['2013-11-5', '2013-11-6']) tplot(['proton_number_density', 'proton_bulk_speed', 'proton_temperature', 'proton_thermal_speed']) ``` + +#### STEREO/WAVES (S/WAVES) + +```python +hfr_vars = pyspedas.stereo.waves(trange=['2013-11-5', '2013-11-6']) +tplot(['PSD_FLUX']) +``` + +#### Beacon Data + +```python +beacon_vars = pyspedas.stereo.beacon(trange=['2013-11-5', '2013-11-6']) +tplot(['MAGBField']) +``` \ No newline at end of file diff --git a/pyspedas/stereo/__init__.py b/pyspedas/stereo/__init__.py index f7db8232..8cd16cc0 100644 --- a/pyspedas/stereo/__init__.py +++ b/pyspedas/stereo/__init__.py @@ -523,3 +523,131 @@ def plastic(trange=['2013-11-5', '2013-11-6'], """ return load(instrument='plastic', trange=trange, probe=probe, level=level, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + +def waves(trange=['2013-11-5', '2013-11-6'], + probe='a', + datatype='hfr', + level='l3', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the WAVES instrument + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + probe: str + Spacecraft probe ('a' for ahead, 'b' for behind) + + datatype: str + Data type; Valid options: hfr, lfr + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + return load(instrument='waves', trange=trange, probe=probe, level=level, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + +def beacon(trange=['2013-11-5', '2013-11-6'], + probe='a', + suffix='', + get_support_data=False, + varformat=None, + varnames=[], + downloadonly=False, + notplot=False, + no_update=False, + time_clip=False): + """ + This function loads data from the WAVES instrument + + Parameters + ---------- + trange : list of str + time range of interest [starttime, endtime] with the format + 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] + + probe: str + Spacecraft probe ('a' for ahead, 'b' for behind) + + datatype: str + Data type; Valid options: hfr, lfr + + suffix: str + The tplot variable names will be given this suffix. By default, + no suffix is added. + + get_support_data: bool + Data with an attribute "VAR_TYPE" with a value of "support_data" + will be loaded into tplot. By default, only loads in data with a + "VAR_TYPE" attribute of "data". + + varformat: str + The file variable formats to load into tplot. Wildcard character + "*" is accepted. By default, all variables are loaded in. + + varnames: list of str + List of variable names to load (if not specified, + all data variables are loaded) + + downloadonly: bool + Set this flag to download the CDF files, but not load them into + tplot variables + + notplot: bool + Return the data in hash tables instead of creating tplot variables + + no_update: bool + If set, only load data from your local cache + + time_clip: bool + Time clip the variables to exactly the range specified in the trange keyword + + Returns + ---------- + List of tplot variables created. + + """ + return load(instrument='beacon', trange=trange, probe=probe, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) diff --git a/pyspedas/stereo/load.py b/pyspedas/stereo/load.py index 06653f6c..5a98ceb1 100644 --- a/pyspedas/stereo/load.py +++ b/pyspedas/stereo/load.py @@ -1,6 +1,6 @@ from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import cdf_to_tplot from .config import CONFIG @@ -28,6 +28,11 @@ def load(trange=['2013-11-5', '2013-11-6'], """ out_files = [] + all_instr = ['mag','plastic','swea','ste', + 'sept', 'sit', 'let', 'het', + 'waves', 'beacon' + ] + assert instrument in all_instr, f"Instrument {instrument} not in {all_instr}" if not isinstance(probe, list): probe = [probe] @@ -52,11 +57,16 @@ def load(trange=['2013-11-5', '2013-11-6'], pathformat = 'plastic/level2/Protons/Derived_from_1D_Maxwellian/'+direction+'/'+datatype+'/%Y/ST'+prb.upper()+'_L2_PLA_1DMax_'+datatype+'_%Y%m%d_V??.cdf' elif instrument == 'swea': CONFIG['remote_data_dir'] = 'https://spdf.gsfc.nasa.gov/pub/data/stereo/' - pathformat = direction + '/' + level + '/impact/swea_' + datatype + '/%Y/sta_' + level + '_swea_' + datatype + '_%Y%m%d_v??.cdf' + pathformat = direction + '/' + level + '/impact/swea_' + datatype + f'/%Y/st{prb}_' + level + '_swea_' + datatype + '_%Y%m%d_v??.cdf' elif instrument in ['ste', 'sept', 'sit', 'let', 'het']: CONFIG['remote_data_dir'] = 'https://spdf.gsfc.nasa.gov/pub/data/stereo/' - pathformat = direction + '/' + level + '/impact/' + instrument + '/%Y/sta_' + level + '_' + instrument + '_%Y%m%d_v??.cdf' - + pathformat = direction + '/' + level + '/impact/' + instrument + f'/%Y/st{prb}_' + level + '_' + instrument + '_%Y%m%d_v??.cdf' + elif instrument == "waves" : + CONFIG['remote_data_dir'] = 'https://spdf.gsfc.nasa.gov/pub/data/stereo/' + pathformat = direction + '/' + level + '/waves/' + datatype + f'/%Y/st{prb}_' + level + '_wav_' + datatype + '_%Y%m%d_v??.cdf' + elif instrument == 'beacon': + CONFIG['remote_data_dir'] = 'https://spdf.gsfc.nasa.gov/pub/data/stereo/' + pathformat = direction + '/' + instrument + f'/%Y/st{prb}_lb_impact_'+'%Y%m%d_v??.cdf' # find the full remote path names using the trange remote_names = dailynames(file_format=pathformat, trange=trange) diff --git a/pyspedas/stereo/tests/tests.py b/pyspedas/stereo/tests/tests.py index 24bd9ba9..5c4b537e 100644 --- a/pyspedas/stereo/tests/tests.py +++ b/pyspedas/stereo/tests/tests.py @@ -1,10 +1,9 @@ - import os import unittest -from pyspedas.utilities.data_exists import data_exists - +from pytplot import data_exists import pyspedas + class LoadTestCases(unittest.TestCase): def test_downloadonly(self): files = pyspedas.stereo.mag(trange=['2013-1-6', '2013-1-7'], downloadonly=True) @@ -13,6 +12,9 @@ def test_downloadonly(self): def test_load_mag_data(self): mag_vars = pyspedas.stereo.mag(trange=['2013-11-5', '2013-11-6'], time_clip=True) self.assertTrue(data_exists('BFIELD')) + mag_vars = pyspedas.stereo.mag(trange=['2013-11-5', '2013-11-6'], datatype='32hz') + mag_vars = pyspedas.stereo.mag(trange=['2013-11-5', '2013-11-6'], notplot=True) + self.assertTrue('BFIELD' in mag_vars) def test_load_swea_data(self): swea_vars = pyspedas.stereo.swea(trange=['2013-1-5', '2013-1-6'], time_clip=True) @@ -45,5 +47,23 @@ def test_load_plastic_data(self): self.assertTrue(data_exists('proton_bulk_speed')) self.assertTrue(data_exists('proton_temperature')) + def test_load_waves_data_a(self): + w_vars = pyspedas.stereo.waves(trange=['2013-11-5', '2013-11-6'], probe='a') + self.assertTrue(data_exists('PSD_FLUX')) + self.assertTrue(data_exists('PSD_SFU')) + + def test_load_waves_data_b(self): + w_vars = pyspedas.stereo.waves(trange=['2013-11-5', '2013-11-6'], probe='b') + self.assertTrue(data_exists('PSD_FLUX')) + self.assertTrue(data_exists('PSD_SFU')) + + def test_load_beacon_data_a(self): + w_vars = pyspedas.stereo.beacon(trange=['2013-11-5', '2013-11-6'], probe='a') + self.assertTrue(data_exists('MAGBField')) + + def test_load_beacon_data_b(self): + w_vars = pyspedas.stereo.beacon(trange=['2013-11-5', '2013-11-6'], probe='b') + self.assertTrue(data_exists('MAGBField')) + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/swarm/load.py b/pyspedas/swarm/load.py index 57a5b33c..fdb1931a 100644 --- a/pyspedas/swarm/load.py +++ b/pyspedas/swarm/load.py @@ -1,5 +1,5 @@ from pyspedas import time_string, time_double -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pyspedas.hapi.hapi import hapi from .config import CONFIG diff --git a/pyspedas/swarm/tests/tests.py b/pyspedas/swarm/tests/tests.py index 01bde3c8..6a062059 100644 --- a/pyspedas/swarm/tests/tests.py +++ b/pyspedas/swarm/tests/tests.py @@ -1,11 +1,16 @@ import unittest -from pyspedas.utilities.data_exists import data_exists +from pytplot import data_exists import pyspedas + class LoadTestCases(unittest.TestCase): def test_load_mag_data(self): - vfm_vars = pyspedas.swarm.mag(probe='c', trange=['2017-03-27/06:00', '2017-03-27/08:00'], datatype='hr') + vfm_vars = pyspedas.swarm.mag(probe='c', + trange=['2017-03-27/06:00', '2017-03-27/08:00'], + datatype='hr', + time_clip=True) self.assertTrue(data_exists('swarmc_B_VFM')) + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/themis/__init__.py b/pyspedas/themis/__init__.py index 6b5946d7..88f7d76d 100644 --- a/pyspedas/themis/__init__.py +++ b/pyspedas/themis/__init__.py @@ -15,4 +15,8 @@ from pyspedas.themis.ground.ask import ask from pyspedas.themis.state.state import state -from pyspedas.themis.state.slp import slp \ No newline at end of file +from pyspedas.themis.state.slp import slp + +from pyspedas.themis.state.autoload_support import autoload_support +from pyspedas.themis.state import get_spinmodel +from pyspedas.themis.cotrans import sse2sel,gse2sse,dsl2gse,ssl2dsl \ No newline at end of file diff --git a/pyspedas/themis/cotrans/__init__.py b/pyspedas/themis/cotrans/__init__.py index e69de29b..961c571c 100644 --- a/pyspedas/themis/cotrans/__init__.py +++ b/pyspedas/themis/cotrans/__init__.py @@ -0,0 +1,4 @@ +from .dsl2gse import dsl2gse +from .gse2sse import gse2sse +from .sse2sel import sse2sel +from .ssl2dsl import ssl2dsl \ No newline at end of file diff --git a/pyspedas/themis/cotrans/dsl2gse.py b/pyspedas/themis/cotrans/dsl2gse.py index 350a2442..d55a8ca4 100644 --- a/pyspedas/themis/cotrans/dsl2gse.py +++ b/pyspedas/themis/cotrans/dsl2gse.py @@ -4,43 +4,76 @@ Works in a similar way to IDL spedas dsl2gse.pro """ -import pytplot +import logging +import numpy as np +from copy import deepcopy +#import pytplot + import pyspedas from pyspedas.cotrans.cotrans_lib import subgei2gse -import numpy as np +from pytplot import data_exists, del_data, store_data, get_data, set_coords, get_coords +from pyspedas.themis import autoload_support -def dsl2gse(name_in, spinras, spindec, name_out, isgsetodsl=0): +def dsl2gse(name_in: str, name_out: str, isgsetodsl: bool = False, ignore_input_coord: bool = False, + probe: str=None, use_spinaxis_corrections: bool=True) -> int: """Transform dsl to gse. Parameters ---------- name_in: str - Name of input pytplot variable (eg. 'tha_fgl_dsl') - spinras: str - Name of pytplot variable for spin (eg.'tha_spinras'). - spindec: str - Name of pytplot variable for spin (eg.'tha_spinras'). + Name of input pytplot variable (e.g. 'tha_fgl_dsl') name_out: str - Name of output pytplot variable (eg. 'tha_fgl_gse') + Name of output pytplot variable (e.g. 'tha_fgl_gse') isgsetodsl: bool - If 0 (default) then DSL to GSE. - If 1, then GSE to DSL. + If False (default) then DSL to GSE. + If True, then GSE to DSL. + ignore_input_coord: bool + if False (default), do not check the input coordinate system + if True, fail and return 0 if input coordinate does not match the requested transform. + probe: str + Usually optional, if the probe can be inferred from the input variable name (e.g. tha_xxx_yyy). + Otherwise, one of ['a','b','c','d','e','f'] + use_spinaxis_corrections: bool + If True (default), use spin axis corrections from V03 state CDFs when available. + If False, use the uncorrected spin axis variables. Returns ------- - 1 for sucessful completion. + 1 for successful completion. """ - all_names = pytplot.tplot_names() - needed_vars = [name_in, spinras, spindec] - c = [value for value in needed_vars if value in all_names] - if len(c) < 3: - print("Variables needed: " + str(needed_vars)) + needed_vars = [name_in] + c = [value for value in needed_vars if data_exists(value)] + if len(c) < 1: + logging.error("Variables needed: " + str(needed_vars)) m = [value for value in needed_vars if value not in c] - print("Variables missing: " + str(m)) - print("Please load missing variables.") - return + logging.error("Variables missing: " + str(m)) + logging.error("Please load missing variables.") + return 0 + + if probe is None: + probe = name_in[2] + + if not ignore_input_coord: + in_coord = get_coords(name_in) + if in_coord is None: + in_coord = "None" + if isgsetodsl and (in_coord.lower() != 'gse'): + logging.error("GSE to DSL transform requested, but input coordinate system is " + in_coord) + return 0 + if not isgsetodsl and (in_coord.lower() != 'dsl'): + logging.error("DSL to GSE transform requested, but input coordinate system is " + in_coord) + return 0 + + autoload_support(varname=name_in, probe=probe, spinaxis=True) + + if use_spinaxis_corrections: + spinras = 'th' + probe + '_spinras_corrected' + spindec = 'th' + probe + '_spindec_corrected' + else: + spinras = 'th' + probe + '_spinras' + spindec = 'th' + probe + '_spindec' # Interpolate spinras and spindec spinnames_in = [spinras, spindec] @@ -49,58 +82,78 @@ def dsl2gse(name_in, spinras, spindec, name_out, isgsetodsl=0): hi_names = [hiras_name, hidec_name] # If new names exist, delete the variables - if hiras_name in pytplot.tplot_names(): - pytplot.del_data(hiras_name) - if hidec_name in pytplot.tplot_names(): - pytplot.del_data(hidec_name) + if data_exists(hiras_name): + del_data(hiras_name) + if data_exists(hidec_name): + del_data(hidec_name) pyspedas.tinterpol(spinnames_in, name_in, method="linear", newname=hi_names, suffix='') # Get data - data_in = pytplot.get_data(name_in) - data_ras = pytplot.get_data(hiras_name) - data_dec = pytplot.get_data(hidec_name) + data_in = get_data(name_in) + meta_in = get_data(name_in, metadata=True) + meta_copy = deepcopy(meta_in) + data_ras = get_data(hiras_name) + data_dec = get_data(hidec_name) # Make a unit vector that points along the spin axis - spla = (90.0 - (data_dec[1])) * np.pi/180.0 - splo = data_ras[1] * np.pi/180.0 + spla = (90.0 - (data_dec[1])) * np.pi / 180.0 + splo = data_ras[1] * np.pi / 180.0 # spherical to cartesian zscs0 = np.sin(spla) * np.cos(splo) - zscs1 = np.sin(spla)*np.sin(splo) + zscs1 = np.sin(spla) * np.sin(splo) zscs2 = np.cos(spla) + znorm = np.sqrt(zscs0 * zscs0 + zscs1 * zscs1 + zscs2 * zscs2) + zscs0 = np.divide(zscs0, znorm) + zscs1 = np.divide(zscs1, znorm) + zscs2 = np.divide(zscs2, znorm) zscs = np.column_stack((zscs0, zscs1, zscs2)) # unit vector that points along the spin axis in GSE trgse = subgei2gse(data_in[0], zscs) - zgse = [trgse[:, 0], trgse[:, 1], trgse[:, 2]] + zgse = trgse sun = [1.0, 0.0, 0.0] - yscs = [zgse[1] * sun[2] - zgse[2] * sun[1], - zgse[2] * sun[0] - zgse[0] * sun[2], - zgse[0] * sun[1] - zgse[1] * sun[0]] - yscsNorm = np.sqrt(yscs[0]**2.0 + yscs[1]**2.0 + yscs[2]**2.0) - yscs = yscs/yscsNorm - xscs = [yscs[1] * zgse[2] - yscs[2] * zgse[1], - yscs[2] * zgse[0] - yscs[0] * zgse[2], - yscs[0] * zgse[1] - yscs[1] * zgse[0]] - - if isgsetodsl == 0: + my_y = np.cross(zgse, sun) + ynorm = np.sqrt(my_y[:, 0] * my_y[:, 0] + my_y[:, 1] * my_y[:, 1] + my_y[:, 2] * my_y[:, 2]) + my_y[:, 0] = np.divide(my_y[:, 0], ynorm) + my_y[:, 1] = np.divide(my_y[:, 1], ynorm) + my_y[:, 2] = np.divide(my_y[:, 2], ynorm) + my_x = np.cross(my_y, zgse) + xnorm = np.sqrt(my_x[:, 0] * my_x[:, 0] + my_x[:, 1] * my_x[:, 1] + my_x[:, 2] * my_x[:, 2]) + my_x[:, 0] = np.divide(my_x[:, 0], xnorm) + my_x[:, 1] = np.divide(my_x[:, 1], xnorm) + my_x[:, 2] = np.divide(my_x[:, 2], xnorm) + + yscs = np.column_stack((zgse[:, 1] * sun[2] - zgse[:, 2] * sun[1], + zgse[:, 2] * sun[0] - zgse[:, 0] * sun[2], + zgse[:, 0] * sun[1] - zgse[:, 1] * sun[0])) + # yscs_norm = np.sqrt(yscs[:,0] ** 2.0 + yscs[:,1] ** 2.0 + yscs[:,2] ** 2.0) + # yscs = np.divide(yscs, yscs_norm) + xscs = np.column_stack((yscs[:, 1] * zgse[:, 2] - yscs[:, 2] * zgse[:, 1], + yscs[:, 2] * zgse[:, 0] - yscs[:, 0] * zgse[:, 2], + yscs[:, 0] * zgse[:, 1] - yscs[:, 1] * zgse[:, 0])) + + if not isgsetodsl: # DSL -> GSE dd = data_in[1] - d0 = dd[:, 0] * xscs[0] + dd[:, 1] * yscs[0] + dd[:, 2] * zgse[0] - d1 = dd[:, 0] * xscs[1] + dd[:, 1] * yscs[1] + dd[:, 2] * zgse[1] - d2 = dd[:, 0] * xscs[2] + dd[:, 1] * yscs[2] + dd[:, 2] * zgse[2] + d0 = dd[:, 0] * my_x[:, 0] + dd[:, 1] * my_y[:, 0] + dd[:, 2] * zgse[:, 0] + d1 = dd[:, 0] * my_x[:, 1] + dd[:, 1] * my_y[:, 1] + dd[:, 2] * zgse[:, 1] + d2 = dd[:, 0] * my_x[:, 2] + dd[:, 1] * my_y[:, 2] + dd[:, 2] * zgse[:, 2] + out_coord = 'GSE' else: # GSE -> DSL dd = data_in[1] - d0 = dd[:, 0] * xscs[0] + dd[:, 1] * xscs[1] + dd[:, 2] * xscs[2] - d1 = dd[:, 0] * yscs[0] + dd[:, 1] * yscs[1] + dd[:, 2] * yscs[2] - d2 = dd[:, 0] * zgse[0] + dd[:, 1] * zgse[1] + dd[:, 2] * zgse[2] + d0 = dd[:, 0] * my_x[:, 0] + dd[:, 1] * my_x[:, 1] + dd[:, 2] * my_x[:, 2] + d1 = dd[:, 0] * my_y[:, 0] + dd[:, 1] * my_y[:, 1] + dd[:, 2] * my_y[:, 2] + d2 = dd[:, 0] * zgse[:, 0] + dd[:, 1] * zgse[:, 1] + dd[:, 2] * zgse[:, 2] + out_coord = 'DSL' dd_out = [d0, d1, d2] data_out = np.column_stack(dd_out) - pytplot.store_data(name_out, data={'x': data_in[0], 'y': data_out}) + store_data(name_out, data={'x': data_in[0], 'y': data_out}, attr_dict=meta_copy) + set_coords(name_out, out_coord) return 1 diff --git a/pyspedas/themis/cotrans/gse2sse.py b/pyspedas/themis/cotrans/gse2sse.py new file mode 100644 index 00000000..4970f690 --- /dev/null +++ b/pyspedas/themis/cotrans/gse2sse.py @@ -0,0 +1,176 @@ +"""Transform GSE data to SSE data. + +Notes: + Works in a similar way to IDL spedas dsl2gse.pro +""" + +import logging +import numpy as np +from copy import deepcopy + +from pyspedas import tnormalize, tcrossp, tinterpol, deriv_data, cotrans, tvector_rotate +from pyspedas.themis import autoload_support +from pytplot import data_exists, get_data, store_data, get_coords, set_coords + +def gse2sse(name_in: str, name_out: str, isssetogse: bool = False, + variable_type: str = 'Other', ignore_input_coord: bool = False, rotation_only: bool = False) -> int: + + """Transform gse to sse. + + Parameters + ---------- + name_in: str + Name of input pytplot variable (e.g. 'tha_fgl_dsl') + name_out: str + Name of output pytplot variable (e.g. 'tha_fgl_sse') + isssetogse: bool + If False (default), then GSE to SSE. + If True, then SSE to GSE. + ignore_input_coord: bool + if False (default), do not check the input coordinate system + if True, fail and return 0 if input coordinate does not match the requested transform. + variable_type: str + A string describing the type of data being transformed. If value is "pos" or "vel", the appropriate + offsets (lunar position or velocity) are applied during the transform. Any other value will be treated + as equivalent to rotate_only=True. + rotation_only: bool + if False (default), assume input variable is a position with units of km, and apply the earth-moon + offset before rotating to SSE, or after rotating to GSE + if True, assume the input variable is a velocity or some other quantity that does not need the earth-moon + translation step + + Returns + ------- + 1 for sucessful completion. + """ + + needed_vars = [name_in] + c = [value for value in needed_vars if data_exists(value)] + if len(c) < 1: + logging.error("Variables needed: " + str(needed_vars)) + m = [value for value in needed_vars if value not in c] + logging.error("Variables missing: " + str(m)) + logging.error("Please load missing variables.") + return 0 + + # load support data + autoload_support(varname=name_in, slp=True) + name_sun_pos = 'slp_sun_pos' + name_lun_pos = 'slp_lun_pos' + + if not ignore_input_coord: + # check input coord + in_coord = get_coords(name_in) + if in_coord is None: + in_coord = "None" + if not isssetogse and (in_coord.lower() != 'gse'): + logging.error("GSE to SSE transform requested, but input coordinate system is " + in_coord) + return 0 + if isssetogse and (in_coord.lower() != 'sse'): + logging.error("SSE to GSE transform requested, but input coordinate system is " + in_coord) + return 0 + + # check sun pos coord + sun_pos_coord = get_coords(name_sun_pos) + if sun_pos_coord is None: + sun_pos_coord = "None" + if sun_pos_coord.lower() != 'gse': + logging.info('Transforming %s to GSE',name_sun_pos) + sun_pos_gse_name = name_sun_pos+'_gse' + cotrans(name_in=name_sun_pos,name_out=sun_pos_gse_name,coord_out='GSE') + else: + sun_pos_gse_name=name_sun_pos + + # check lun pos coord + lun_pos_coord = get_coords(name_lun_pos) + if lun_pos_coord is None: + lun_pos_coord = "None" + if lun_pos_coord.lower() != 'gse': + logging.info('Transforming %s to GSE', name_lun_pos) + lun_pos_gse_name = name_lun_pos + '_gse' + cotrans(name_in=name_lun_pos, name_out=lun_pos_gse_name, coord_out='GSE') + else: + lun_pos_gse_name = name_lun_pos + else: + sun_pos_gse_name=name_sun_pos + lun_pos_gse_name=name_lun_pos + + meta_copy = deepcopy(get_data(name_in, metadata=True)) + + # Make rotation matrix + sunpos = get_data(sun_pos_gse_name) + lunpos = get_data(lun_pos_gse_name) + sun_pos_dim = sunpos.y.shape + + # Moon to sun vector = sunpos - lunpos + lun_sun_vec = sunpos.y - lunpos.y + + # SSE X-axis: unit vector from sun toward moon + sse_x = tnormalize(lun_sun_vec, return_data=True) + # SSE Y-axis: ecliptic north unit vector (0,0,1) cross SSE-X + ecliptic_north = np.repeat(np.array([[0, 0, 1]]), sun_pos_dim[0], axis=0) + sse_y = tcrossp(ecliptic_north,sse_x, return_data=True) + # SSE Z-axis: SSE-X cross SSE-Y (not necessarily ecliptic north) + sse_z = tcrossp(sse_x, sse_y, return_data=True) + + # Make rotation matrix from basis vectors, store in tplot variable + + out_data = np.zeros((sun_pos_dim[0], 3, 3)) + if not isssetogse: + out_data[:,0,:] = sse_x + out_data[:,1,:] = sse_y + out_data[:,2,:] = sse_z + else: + # Invert sense of conversion by transposing rotation array + out_data[:,:,0] = sse_x + out_data[:,:,1] = sse_y + out_data[:,:,2] = sse_z + + store_data('sse_mat_cotrans', data={'x': sunpos.times, 'y': out_data}) + + if variable_type.lower() == "pos" and not rotation_only: + tinterpol(lun_pos_gse_name,name_in,newname='gse2sse_offset') + gse2sse_offset_data = get_data('gse2sse_offset') + elif variable_type.lower() == "vel" and not rotation_only: + deriv_data(lun_pos_gse_name,new_names='gse2sse_lun_vel') + tinterpol('gse2sse_lun_vel',name_in,newname='gse2sse_offset') + gse2sse_offset_data = get_data('gse2sse_offset') + else: + logging.info("No offsets performed for variable type %s",variable_type) + rotation_only = True + + if not isssetogse: + """ GSE -> SSE + """ + + if not rotation_only: + logging.info("Applying earth-moon %s offset to input variable %s",variable_type,name_in) + input_pos = get_data(name_in) + translated_pos = input_pos.y - gse2sse_offset_data.y + name_trans = name_in + '_trans' + store_data(name_trans,data={'x':input_pos.times, 'y':translated_pos},attr_dict=meta_copy) + tvector_rotate('sse_mat_cotrans',name_trans,newname=name_out) + else: + logging.info("No earth-moon offsets applied") + tvector_rotate('sse_mat_cotrans',name_in,newname=name_out) + + set_coords(name_out,'SSE') + return 1 + + else: + """ SSE -> GSE + """ + if not rotation_only: + tvector_rotate('sse_mat_cotrans',name_in,newname='gse2sse_rotated') + logging.info("Applying moon-earth %s offset to rotated variable %s",variable_type,'gse2sse_rotated') + rotated_data = get_data('gse2sse_rotated') + earth_data = rotated_data.y + gse2sse_offset_data.y + store_data(name_out,data={'x':rotated_data.times,'y':earth_data},attr_dict=meta_copy) + else: + logging.info("No earth-moon offsets applied") + tvector_rotate('sse_mat_cotrans',name_in,newname=name_out) + + set_coords(name_out,'GSE') + return 1 + + diff --git a/pyspedas/themis/cotrans/sse2sel.py b/pyspedas/themis/cotrans/sse2sel.py new file mode 100644 index 00000000..fdfb6da3 --- /dev/null +++ b/pyspedas/themis/cotrans/sse2sel.py @@ -0,0 +1,158 @@ +"""Transformation SSE data to SEL data. +Notes: + Works in a similar way to IDL spedas sse2sel.pro +""" +import logging +import numpy as np +import pytplot +from pyspedas import tnormalize, tcrossp +from pyspedas.cotrans.tvector_rotate import tvector_rotate +from pytplot import data_exists, get_coords, set_coords +from pyspedas.cotrans.cotrans import cotrans +from pyspedas.analysis.tinterpol import tinterpol +from pyspedas.analysis.deriv_data import deriv_data +from pyspedas.themis.cotrans.gse2sse import gse2sse +from pyspedas.themis import autoload_support + +def sse2sel(name_in: str, name_out: str, isseltosse: bool = False, ignore_input_coord: bool = False) -> int: + """Transform sse to sel. + Parameters + ---------- + name_in: str + Name of input pytplot variable (e.g. 'tha_state_pos_sse' or 'tha_state_pos_sel') + name_out: str + Name of output pytplot variable (e.g. 'tha_fgl_sse') + isseltosse: bool + If False (default), then SSE to SEL. + If True, then SEL to SSE. + ignore_input_coord: bool + if False (default), do not check the input coordinate system + if True, fail and return 0 if input coordinate does not match the requested transform. + variable_type: str + A string describing the type of data being transformed. If value is "pos" or "vel", the appropriate + offsets (lunar position or velocity) are applied during the transform. Any other value will be treated + as equivalent to rotate_only=True. + rotate_only: bool + if False (default), assume input variable is a position with units of km, and apply the earth-moon + offset before rotating to SEL, or after rotating to SSE #TODO: please check + if True, assume the input variable is a velocity or some other quantity that does not need the earth-moon + translation step + Returns + ------- + 1 for sucessful completion. + """ + needed_vars = [name_in] + c = [value for value in needed_vars if data_exists(value)] + if len(c) < 1: + logging.error("Variables needed: " + str(needed_vars)) + m = [value for value in needed_vars if value not in c] + logging.error("Variables missing: " + str(m)) + logging.error("Please load missing variables.") + return 0 + + autoload_support(varname=name_in,slp=True) + name_sun_pos = 'slp_sun_pos' + name_lun_pos = 'slp_lun_pos' + name_lun_att_x = 'slp_lun_att_x' + name_lun_att_z = 'slp_lun_att_z' + + if not ignore_input_coord: + # check input coord + in_coord = get_coords(name_in) + if in_coord is None: + in_coord = "None" + if not isseltosse and (in_coord.lower() != 'sse'): + logging.error("SSE to SEL transform requested, but input coordinate system is " + in_coord) + return 0 + if isseltosse and (in_coord.lower() != 'sel'): + logging.error("SEL to SSE transform requested, but input coordinate system is " + in_coord) + return 0 + + # check sun pos coord + sun_pos_coord = get_coords(name_sun_pos) + if sun_pos_coord is None: + sun_pos_coord = "None" + if sun_pos_coord.lower() != 'gse': + logging.info('Transforming %s to GSE',name_sun_pos) + sun_pos_gse_name = name_sun_pos+'_gse' + cotrans(name_in=name_sun_pos,name_out=sun_pos_gse_name,coord_out='GSE') + else: + sun_pos_gse_name=name_sun_pos + # check lun pos coord + lun_pos_coord = get_coords(name_lun_pos) + if lun_pos_coord is None: + lun_pos_coord = "None" + if lun_pos_coord.lower() != 'gse': + logging.info('Transforming %s to GSE', name_lun_pos) + lun_pos_gse_name = name_lun_pos + '_gse' + cotrans(name_in=name_lun_pos, name_out=lun_pos_gse_name, coord_out='GSE') + else: + lun_pos_gse_name = name_lun_pos + # check lun att x coord + lun_att_x_coord = get_coords(name_lun_att_x) + if lun_att_x_coord is None: + lun_att_x_coord = "None" + if lun_att_x_coord.lower() != 'gse': + logging.info('Transforming %s to GSE', name_lun_att_x) + lun_att_x_gse_name = name_lun_att_x + '_gse' + cotrans(name_in=name_lun_att_x, name_out=lun_att_x_gse_name, coord_out='GSE') + else: + lun_att_x_gse_name = name_lun_att_x + # check lun att z coord + lun_att_z_coord = get_coords(name_lun_att_z) + if lun_att_z_coord is None: + lun_att_z_coord = "None" + if lun_att_z_coord.lower() != 'gse': + logging.info('Transforming %s to GSE', name_lun_att_z) + lun_att_z_gse_name = name_lun_att_z + '_gse' + cotrans(name_in=name_lun_att_z, name_out=lun_att_z_gse_name, coord_out='GSE') + else: + lun_att_z_gse_name = name_lun_att_z + else: + sun_pos_gse_name = name_sun_pos + lun_pos_gse_name = name_lun_pos + lun_att_x_gse_name = name_lun_att_x + lun_att_z_gse_name = name_lun_att_z + # Make rotation matrix + sunpos = pytplot.get_data(sun_pos_gse_name) + sun_pos_dim = sunpos.y.shape + + # X basis vector + result = gse2sse(lun_att_x_gse_name, 'sel_x_sse', rotation_only=True) + sel_x_sse = pytplot.get_data('sel_x_sse') + x_axis = sel_x_sse.y + + # Z basis vector + result = gse2sse(lun_att_z_gse_name, 'sel_z_sse', rotation_only=True) + sel_z_sse = pytplot.get_data('sel_z_sse') + z_axis = sel_z_sse.y + + # Y basis vector + tcrossp('sel_z_sse', 'sel_x_sse', newname='sel_y_sse') + sel_y_sse = pytplot.get_data('sel_y_sse') + y_axis = sel_y_sse.y + + out_data = np.zeros((sun_pos_dim[0], 3, 3)) + if not isseltosse: + out_data[:,0,:] = x_axis + out_data[:,1,:] = y_axis + out_data[:,2,:] = z_axis + else: + # Invert sense of conversion by transposing rotation array + out_data[:,:,0] = x_axis + out_data[:,:,1] = y_axis + out_data[:,:,2] = z_axis + pytplot.store_data('sel_mat_cotrans', data={'x': sunpos.times, 'y': out_data}) + if not isseltosse: + """ SSE -> SEL + """ + tvector_rotate('sel_mat_cotrans',name_in,newname=name_out) + set_coords(name_out,'SEL') + return 1 + + else: + """ SEL -> SSE + """ + tvector_rotate('sel_mat_cotrans',name_in,newname=name_out) + set_coords(name_out,'SSE') + return 1 \ No newline at end of file diff --git a/pyspedas/themis/cotrans/ssl2dsl.py b/pyspedas/themis/cotrans/ssl2dsl.py new file mode 100644 index 00000000..4ff6b3cb --- /dev/null +++ b/pyspedas/themis/cotrans/ssl2dsl.py @@ -0,0 +1,115 @@ +"""Transform SSL data to DSL data. + +Notes: + Works in a similar way to IDL spedas ssl2gse.pro +""" + +import logging +from math import pi +import numpy as np +from copy import deepcopy + +from pytplot import get_data, store_data, data_exists, get_coords, set_coords +from pyspedas.themis.state import Spinmodel,get_spinmodel +from pyspedas.themis import autoload_support + + +def ssl2dsl(name_in: str, name_out: str, isdsltossl: bool = False, ignore_input_coord: bool = False, + probe: str=None, use_spinphase_correction: bool=True, eclipse_correction_level: int=0) -> int: + """Transform ssl to dsl. + + Parameters + ---------- + name_in: str + Name of input pytplot variable (e.g. 'tha_fgl_ssl') + name_out: str + Name of output pytplot variable (e.g. 'tha_fgl_dsl') + isdsltossl: bool + If 0 (default) then SSL to DSL. + If 1, then DSL to SSL. + ignore_input_coord: bool + if False (default), then fail and return 0 if input coordinate system does not match requested transform + if True, do not check input coordinate system. + probe: str + Usually optional, if the variable name is prefixed with 'tha', 'thb', etc. + Otherwise, one of ['a','b','c','d','e','f'] + use_spinphase_correction: bool + If True (default), use spin phase corrections from V03 STATE CDF + if False, omit this + eclipse_correction_level: int + Specify which of the three available spin models to use for this transform + 0: (default) No eclipse correction + 1: Eclipse corrections for waveform data + 2: Eclipse corrections for particles and spin fits (includes additional angular offset) + + Returns + ------- + 1 for successful completion. + + """ + needed_vars = [name_in] + c = [value for value in needed_vars if data_exists(value)] + if len(c) < 1: + logging.error("Variables needed: " + str(needed_vars)) + m = [value for value in needed_vars if value not in c] + logging.error("Variables missing: " + str(m)) + logging.error("Please load missing variables.") + return 0 + + if probe is None: + probe=name_in[2] + + autoload_support(varname=name_in, probe=probe, spinmodel=True) + spinmodel_obj=get_spinmodel(probe=probe, correction_level=eclipse_correction_level) + + if not ignore_input_coord: + in_coord=get_coords(name_in) + if in_coord is None: + in_coord = "None" + if isdsltossl and (in_coord.upper() != 'DSL'): + logging.error("DSL to SSL transform requested, but input coordinate system is " + in_coord) + return 0 + if not isdsltossl and (in_coord.upper() != 'SSL'): + logging.error("SSL to DSL transform requested, but input coordinate system is " + in_coord) + return 0 + + # Get data + result = get_data(name_in) + in_times = result.times + data_in = result.y + metadata = get_data(name_in, metadata=1) + meta_copy = deepcopy(metadata) + + logging.info('Using spin model to calculate phase versus time...') + result = spinmodel_obj.interp_t(in_times, use_spinphase_correction=use_spinphase_correction) + spinmodel_phase = result.spinphase * pi / 180.0 + phase = spinmodel_phase + d0 = data_in[:, 0] + d1 = data_in[:, 1] + d2 = data_in[:, 2] + out_d2 = d2 + + # if isdsltossl == 0: + # # despin + # out_d0 = d0 * np.cos(phase) - d1 * np.sin(phase) + # out_d1 = d0 * np.sin(phase) + d1 * np.cos(phase) + # else: + # # spin + # out_d0 = d0 * np.cos(phase) + d1 * np.sin(phase) + # out_d1 = -d0 * np.sin(phase) + d1 * np.cos(phase) + + out_coord = 'DSL' + if isdsltossl: + # despin + phase = -1.0*phase + out_coord = 'SSL' + + out_d0 = d0 * np.cos(phase) - d1 * np.sin(phase) + out_d1 = d0 * np.sin(phase) + d1 * np.cos(phase) + + dd_out = [out_d0, out_d1, out_d2] + data_out = np.column_stack(dd_out) + store_data(name_out, data={'x': in_times, 'y': data_out}, attr_dict=meta_copy) + set_coords(name_out,out_coord) + + return 1 diff --git a/pyspedas/themis/ground/gmag.py b/pyspedas/themis/ground/gmag.py index 37b379f3..0cc27a3f 100644 --- a/pyspedas/themis/ground/gmag.py +++ b/pyspedas/themis/ground/gmag.py @@ -1,4 +1,4 @@ - +import logging import requests from pyspedas.themis.load import load @@ -183,7 +183,7 @@ def gmag_list(group='all'): station_group = get_group(station_name) if group in ['all', '*', ''] or group in station_group: station_list.append(station_name) - print(station_name + ": from " + station['day_first'] + " to " + logging.info(station_name + ": from " + station['day_first'] + " to " + station['day_last']) return station_list @@ -210,9 +210,8 @@ def gmag_groups(): group_dict[key].append(station['ccode'].lower()) # print them - print() for g, s in group_dict.items(): - print(g + ":" + ",'".join(s) + "'") + logging.info(g + ":" + ",'".join(s) + "'") return group_dict diff --git a/pyspedas/themis/load.py b/pyspedas/themis/load.py index 123f1383..285fd60e 100644 --- a/pyspedas/themis/load.py +++ b/pyspedas/themis/load.py @@ -1,7 +1,7 @@ import logging from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import cdf_to_tplot from .config import CONFIG diff --git a/pyspedas/themis/spacecraft/fields/fit.py b/pyspedas/themis/spacecraft/fields/fit.py index fc4ca797..388e6652 100644 --- a/pyspedas/themis/spacecraft/fields/fit.py +++ b/pyspedas/themis/spacecraft/fields/fit.py @@ -92,7 +92,7 @@ def cal_fit(probe='a', no_cal=False): from pytplot import get_data, store_data, tplot_names, options from pyspedas.utilities.download import download from pyspedas.themis.config import CONFIG - from pyspedas.utilities.time_double import time_float_one + from pytplot import time_float_one from copy import deepcopy from numpy.linalg import inv diff --git a/pyspedas/themis/state/__init__.py b/pyspedas/themis/state/__init__.py index e69de29b..0a674cea 100644 --- a/pyspedas/themis/state/__init__.py +++ b/pyspedas/themis/state/__init__.py @@ -0,0 +1 @@ +from .spinmodel.spinmodel import Spinmodel, get_spinmodel, save_spinmodel \ No newline at end of file diff --git a/pyspedas/themis/state/apply_spinaxis_corrections.py b/pyspedas/themis/state/apply_spinaxis_corrections.py new file mode 100644 index 00000000..12fc6606 --- /dev/null +++ b/pyspedas/themis/state/apply_spinaxis_corrections.py @@ -0,0 +1,87 @@ +import logging +from pytplot import get_data, store_data, tplot_copy +import numpy as np +from pytplot import data_exists + + +def apply_oneaxis_correction(rawvar: str, + deltavar: str, + corrvar: str): + """ + This function applies spin axis corrections for a single spin axis quantity (RA or DEC). + + Parameters: + rawvar: str + Name of tplot variable holding the uncorrected quantity of interest. + + deltavar: str + Name of tplot variable holding the corrections for the quantity of interest + + corrvar: str + Name of tplot variable to receive the corrected quantity + """ + + if (data_exists(rawvar)) and (data_exists(deltavar)): + logging.debug("Applying spin axis corrections") + res1 = get_data(rawvar) + raw_times = res1.times + raw_data = res1.y + metadata = get_data(rawvar, metadata=True) + + res2 = get_data(deltavar) + corr_times = res2.times + corr_data = res2.y + + # Interpolate corrections using input_times + + # In IDL, there was a special case, if the correction had only a single quantity, because the + # interpol routine would crash with only a single value given. np.interp does the right thing + # by default. + + interp_correction = np.interp(raw_times, corr_times, corr_data) + + # Apply corrections + fix_raw = raw_data - interp_correction + + # Make output tplot variable + store_data(corrvar, data={'x': raw_times, 'y': fix_raw}, attr_dict=metadata) + elif not (data_exists(deltavar)): + # If the corrections aren't present, just copy the original data + logging.info('Spin axis corrections variable ' + deltavar + ' not found, copying ' + rawvar + ' to ' + corrvar) + tplot_copy(rawvar,corrvar) + else: + # Raw variable doesn't exist, nothing to do here. + logging.info('Spin axis variable ' + rawvar + ' not found, skipping ' + corrvar) + + +def apply_spinaxis_corrections(spinras: str, + spindec: str, + delta_spinras: str, + delta_spindec: str, + corrected_spinras: str, + corrected_spindec: str): + """ + This function applies V03 state spin axis corrections (if present) to state spinras and spindec + quantities, creating new tplot variables. + + Parameters: + spinras: str + Name of tplot variable holding the uncorrected spin axis right ascension. + + spindec: str + Name of tplot variable holding the uncorrected spin axis declination. + + delta_spinras: str + Name of tplot variable holding the correction to the spin axis right ascension. + + delta_spindec: str + Name of tplot variable holding the corrections to the spin axis declination. + + corrected_spinras: str + Name of tplot variable to receive the corrected spin axis right ascension. + + corrected_spindec: str + Name of tplot variable to receive the corrected spin axis declination. + """ + apply_oneaxis_correction(rawvar=spinras, deltavar=delta_spinras, corrvar=corrected_spinras) + apply_oneaxis_correction(rawvar=spindec, deltavar=delta_spindec, corrvar=corrected_spindec) diff --git a/pyspedas/themis/state/autoload_support.py b/pyspedas/themis/state/autoload_support.py new file mode 100644 index 00000000..bdd89059 --- /dev/null +++ b/pyspedas/themis/state/autoload_support.py @@ -0,0 +1,173 @@ +import logging +import pyspedas +import pyspedas.themis +from pytplot import data_exists +from pytplot import time_double +from pyspedas.themis.state.spinmodel.spinmodel import get_spinmodel +import pytplot + + +def load_needed(trange_loaded, + trange_needed, + tolerance=0.0): + """ + Given a time range of loaded data, and the time range needed, determine if + a support variable needs to be reloaded. A small amount of extrapolation is considered + acceptable, so the time comparisons are done with a user-specified tolerance. + + Parameters: + trange_loaded: list of float + Start and end times (Unix times) for support variable currently loaded. + + trange_needed: list of float + Start and end times (Unix times) for support variable needed to support desired operation. + + tolerance: float + A duration, in seconds, for which extrapolation from currently loaded data is considered valid. + """ + st = trange_loaded[0] - tolerance + et = trange_loaded[1] + tolerance + if (trange_needed[0] > st) and (trange_needed[1] < et): + return False + else: + return True + + +def autoload_support(varname=None, + trange=None, + probe=None, + spinaxis: bool = False, + spinmodel: bool = False, + slp: bool = False): + """ + Automatically load THEMIS support data required to cover a given probe or time range. + + Parameters: + varname: str (optional) + Name of a tplot variable for which calibration, cotrans, or other operation requiring + support data is needed. The trange and probe arguments are optional if this argument + is provided. + + trange: list of Unix times or time strings + Start and end times (in either string or Unix time format) for which support data is needed. + Required if varname not specified. + + probe: str (optional) + A single letter probe identifier. Required if varname not specified, and spinaxis or spinmodel + support data is requested. + + spinaxis: bool + If True, the spin axis variables from the state CDF are examined to see if state needs to + be reloaded. + + spinmodel: bool + If True, the spin model produced from the state CDF is examined to see if state needs to + be reloaded. + + slp: bool + If True, the tplot variables holding sun and moon positions and lunar coordinate system axes + are examined to see if the SLP data needs to be reloaded. + + + """ + if varname is not None: + trange = pytplot.get_timespan(varname) + elif trange is None: + logging.error("Must specify either a tplot name or a time range in order to load support data") + return + elif (probe is None) and (spinaxis or spinmodel): + logging.error("Must specify either a tplot name or a probe in order to load spin axis or spin model data") + return + + # Validate varname if present + if (varname is not None) and not (data_exists(varname)): + logging.error("tplot variable name " + varname + " not found.") + return + + # Set probe name (if needed) + if spinaxis or spinmodel: + if probe is None: + probe = varname[2] + + # Set time range (if needed) + if trange is None: + trange_needed = pytplot.get_timespan(varname) + else: + if isinstance(trange[0], str): + trange_needed = time_double(trange) + else: + trange_needed = trange + + do_state = False + do_slp = False + slop = 120.0 # Tolerance (seconds) for determining if existing data covers desired range + + # Does spin model cover desired time interval? + if spinmodel: + sm = get_spinmodel(probe, correction_level=1, quiet=True) + if sm is None: + do_state = True + else: + sminfo = sm.get_timerange() + trange_loaded = sminfo + if load_needed(trange_loaded, trange_needed, tolerance=slop): + do_state = True + + # Do spin axis variables exist, and cover desired time interval? + + if spinaxis: + v1 = "th" + probe + "_spinras" + v2 = "th" + probe + "_spindec" + v3 = "th" + probe + "_spinras_corrected" + v4 = "th" + probe + "_spindec_corrected" + + # Check uncorrected variables + if not (data_exists(v1)) or not (data_exists(v2)): + do_state = True + else: + v1_tr = pytplot.get_timespan(v1) + v2_tr = pytplot.get_timespan(v2) + if (load_needed(v1_tr, trange_needed, tolerance=slop) or + load_needed(v2_tr, trange_needed, tolerance=slop)): + do_state = True + + # Check corrected variables. They may be unavailable even if state is reloaded, + # so only force a reload if one of the variables exists, but doesn't cover the + # needed time range. + + if data_exists(v3): + v3_tr = pytplot.get_timespan(v3) + if load_needed(v3_tr, trange_needed, tolerance=slop): + do_state = True + + if data_exists(v4): + v4_tr = pytplot.get_timespan(v4) + if load_needed(v4_tr, trange_needed, tolerance=slop): + do_state = True + + # Check SLP variables. They must all exist, and cover the desired time range, or + # reload is necessary. + + if slp: + v1 = 'slp_lun_att_x' + v2 = 'slp_lun_att_z' + v3 = 'slp_lun_pos' + v4 = 'slp_sun_pos' + if not (data_exists(v1) and data_exists(v2) and data_exists(v3) and data_exists(v4)): + do_slp = True + else: + v1_tr = pytplot.get_timespan(v1) + v2_tr = pytplot.get_timespan(v2) + v3_tr = pytplot.get_timespan(v3) + v4_tr = pytplot.get_timespan(v4) + if (load_needed(v1_tr, trange_needed, tolerance=slop) + or load_needed(v2_tr, trange_needed, tolerance=slop) + or load_needed(v3_tr, trange_needed, tolerance=slop) + or load_needed(v4_tr, trange_needed, tolerance=slop)): + do_slp = True + + # Perform the needed updates + if do_slp: + pyspedas.themis.slp(trange=trange_needed) + if do_state: + pyspedas.themis.state(probe=probe, trange=trange_needed, get_support_data=True) diff --git a/pyspedas/themis/state/slp.py b/pyspedas/themis/state/slp.py index 27887f94..2c034703 100644 --- a/pyspedas/themis/state/slp.py +++ b/pyspedas/themis/state/slp.py @@ -1,5 +1,6 @@ - +import logging from pyspedas.themis.load import load +from pytplot import set_coords def slp(trange=['2007-03-23', '2007-03-24'], @@ -59,8 +60,18 @@ def slp(trange=['2007-03-23', '2007-03-24'], List of tplot variables created. """ - return load(instrument='slp', trange=trange, level=level, + retval = load(instrument='slp', trange=trange, level=level, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + if not downloadonly: + # Coordinate system is not set in the data CDFs, so setting it here for now. + # Everything except for the light travel time variables is in GEI true-of-date. + for varname in retval: + if not "ltime" in varname: + logging.debug("Setting %s to GEI coordinates", varname) + set_coords(varname,"GEI") + + return retval diff --git a/pyspedas/themis/state/spinmodel/__init__.py b/pyspedas/themis/state/spinmodel/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pyspedas/themis/state/spinmodel/spinmodel.py b/pyspedas/themis/state/spinmodel/spinmodel.py new file mode 100644 index 00000000..54812326 --- /dev/null +++ b/pyspedas/themis/state/spinmodel/spinmodel.py @@ -0,0 +1,669 @@ +import numpy as np +import math +import logging +from typing import Dict +from .spinmodel_segment import SpinmodelSegment +from pytplot import get_data, store_data +from pytplot import data_exists +from pytplot import time_string + + +def get_sm_data(probe: str, + valname: str, + correction_level: int) -> (np.ndarray, np.ndarray): + """ Return the times and values for a spin model tplot variable + + Args: + probe: Probe name, one of 'a','b','c','d','e' + valname: The data quantity to be returned + correction_level: 0 for no corrections, 1 for waveform corrections, 2 for spin fit corrections + + Returns: + A tuple containing the timestamps and data values as np.ndarray objects + """ + if correction_level == 0: + infix = '_' + else: + infix = '_ecl_' + tvar_name = 'th' + probe + '_spin' + infix + valname + if data_exists(tvar_name): + res = get_data(tvar_name) + return res.times, res.y + else: + return None + + +class SpinmodelInterpTResult: + """ An object to return the results of interpolating a spin model. + + Attributes: + spinphase (ndarray(dtype=float)): The spin phase (in degrees) at each input time + spincount (ndarray(dtype=int)): The count of complete spins from the start of the model, at each input time + spinper (ndarray(dtype=float)): The spin period (in seconds) at each input time + t_last (ndarray(dtype=float)): Time (seconds since epoch) of last sun sensor crossing before the input times + eclipse_delta_phi (ndarray(dtype=float)): The offset in degrees between the modeled spin phase and the onboard + spin phase during an eclipse + segflags (ndarray(dtype=int)): A set of bit flags denoting the eclipse and correction status at each input time + idx (ndarray(dtype=int)): The index of the spin model segment containing each input time + dt (ndarray(dtype=float)): The delta-t in seconds between the input times and start or end time of the + containing segment + + """ + + __slots__ = 'spinphase', 'spincount', 'spinper', 't_last', 'eclipse_delta_phi', 'segflags', 'idx', 'dt' + + def __init__(self, spinphase: np.ndarray, + spincount: np.ndarray, + spinper: np.ndarray, + t_last: np.ndarray, + eclipse_delta_phi: np.ndarray, + segflags: np.ndarray, + idx: np.ndarray, + dt: np.ndarray): + self.spinphase = spinphase + self.spincount = spincount + self.spinper = spinper + self.t_last = t_last + self.eclipse_delta_phi = eclipse_delta_phi + self.segflags = segflags + self.idx = idx + self.dt = dt + + +class Spinmodel: + """ An object describing a spin model for a given probe, time interval, and correction level + A spinmodel is created from a set of tplot variables loaded from the THEMIS STATE CDFs. The time interval is + covered by a list of SpinmodelSegment objects, representing a piecewise quadratic fit of phi (spin plane angle) + versus time. The segment data from the CDF is loaded into the seg_list during initial creation of the model, with + some on-the-fly adjustments to account for the brief gaps that occur at UTC date boundaries. The final segment + list is converted to a series of ndarrays, stored in the seg_* attributes, to support efficient interpolation to + input times. + + Attributes: + seg_list (List of SpinmodelSegment): A list of spin model segment objects comprising the model + lastseg (SpinmodelSegment): The most recently processed SpinmodelSegment + seg_times (ndarray): Array of t1 values from seg_list + seg_t2 (ndarray): Array of t2 values from seg_list + seg_c1 (ndarray): Array of c1 values from seg_list + seg_c2 (ndarray): Array of c2 values from seg_list + seg_b (ndarray): Array of b values from seg_list + seg_c (ndarray): Array of c valuse from seg_list + seg_npts (ndarray): Array of npts values from seg_list + seg_maxgap (ndarray): Array of maxgap values from seg_list + seg_phaserr (ndarray): Array of phaserr values from seg_list + seg_initial_delta_phi (ndarray): Array of initial_delta_phi values from seg_list + seg_idpu_spinper (ndarray): Array of idpu_spinper values from seg_list + seg_segflags (ndarray): Array of segflags values from seg_list + seg_count (int): Count of segments + + """ + + def print_segs(self): + """ Print the list of SpinmodelSegment objects, useful for troubleshooting. + + """ + + for seg in self.seg_list: + seg.print() + + def adjust_delta_phi(self, + ecl_start: float, + ecl_end: float, + ecl_corr: float): + """ Apply the level 2 (spin fit) corrections to the segments falling in an eclipse time interval. + + Args: + ecl_start (float): Start time (seconds since epoch) of an eclipse to be processed + ecl_end (float): End time (seconds since epoch) of an eclipse to be processed + ecl_corr (float): Eclipse delta-phi offset (degrees) between waveform and spin fit data for this eclipse + """ + + # A segment needs to be updated if its midpoint lies in the time range ecl_start to ecl_end. + # This is more robust against floating point roundoff errors than the previous method, which + # compared the segment endpoints rather than the midpoints. + + seg_midpoints = (self.seg_times + self.seg_t2) / 2.0 + cond1 = ecl_start <= seg_midpoints + cond2 = seg_midpoints <= ecl_end + cond = cond1 & cond2 + idx = np.arange(len(self.seg_list))[cond] + self.seg_initial_delta_phi[idx] += ecl_corr + self.seg_segflags[idx] |= 4 + # print("Eclipse start: ", ecl_start, "Eclipse end: ", ecl_end) + # print("First eclipse segment") + # self.seg_list[idx[0]].print() + # print("Last eclipse segment") + # idx_len = len(idx) + # self.seg_list[idx[idx_len - 1]].print() + for si in idx: + seg = self.seg_list[si] + seg.initial_delta_phi += ecl_corr + seg.segflags |= 4 + + def findseg_t(self, + t: np.ndarray) -> np.ndarray: + """ Return an ndarray of index values for the segments covering a set of input times + + This is a helper routine for the interp_t method. + + Args: + t (ndarray(dtype=float): Input times + + Returns: + ndarray(dtype=int) of indices into the seg_* attributes for each input time + """ + + idx1 = np.searchsorted(self.seg_times, t) + idx2 = np.searchsorted(self.seg_t2, t) + diff = (idx2 - (idx1 + 1)).nonzero() + if len(diff) == len(t): + logging.warning('Indices don''t match up:') + logging.warning(idx1) + logging.warning(idx2) + else: + # If any points are beyond the last segment t2, assign them to the last segment and extrapolate. + idx_max = self.seg_count - 1 + idx_extrap = idx2 > idx_max + idx_adjusted = idx2 + idx_adjusted[idx_extrap] = idx_max + return idx_adjusted + + def interp_t(self, + t: np.ndarray, + use_spinphase_correction: bool = True) -> SpinmodelInterpTResult: + """ Interpolate the spin model to a set of input times, and return an object holding the results. + + This is the workhorse routine for accessing the spin model. Clients will specify a set of input times (e.g. + from a tplot variable to be operated on), then obtain the spin status at those times, which can be used to + transform back and forth between SSL coordinates (spinning with the spacecraft) and DSL (despun, referenced to + sun direction and angular momentum vector/spin axis). + + Rather than inefficiently iterating over the spinmodel segments and input times, the code performs vectorized + operations on Numpy arrays. This is done by calculating a set of segment indices corresponding to the input time + stamps, then replicating the segment data to match the number of input times. (So, we are trading extra memory + usage to allow vectorized bulk calculations) To minimize branching, several boolean conditions are evaluated, + yielding sets of array indices matching each set of conditions. The appropriate calculations are performed in + bulk for each set of condition indices. Finally, the various outputs are collected into a SpinmodelInterpTResult + object and returned. + + Args: + t (ndarray(dtype=float): Input times + use_spinphase_correction (Boolean): Flag (defaults to True) specifying whether V03 state CDF corrections + should be applied to the interpolation output. + + Returns: + SpinmodelInterpTResult object containing the interpolated outputs (spinphase, spincount, spin period, + eclipse corrections, etc) + """ + + segs_idx = self.findseg_t(t) + n = len(segs_idx) + + my_seg_times = self.seg_times[segs_idx] + my_seg_t2 = self.seg_t2[segs_idx] + my_seg_b = self.seg_b[segs_idx] + my_seg_c = self.seg_c[segs_idx] + my_seg_c1 = self.seg_c1[segs_idx] + my_seg_c2 = self.seg_c2[segs_idx] + my_seg_initial_delta_phi = self.seg_initial_delta_phi[segs_idx] + my_seg_idpu_spinper = self.seg_idpu_spinper[segs_idx] + my_seg_segflags = self.seg_segflags[segs_idx] + + # Below this point, all indexing assumes n = #times, not n = #model_segments. No references to self.anything. + all_idx = np.arange(n) + # output variables + spincount = np.zeros(n) + t_last = np.zeros(n) + spinphase = np.zeros(n) + spinper = np.zeros(n) + eclipse_delta_phi = np.zeros(n) # It is important that this variable is initialized to 0 + mask = np.zeros(n) + 3 + + # Internal variables. + # If memory becomes an issue, we can avoid allocating by using some creative index operations + dt = np.zeros(n) + fracspins = np.zeros(n) + intspins = np.zeros(n, int) + bp = np.zeros(n) + phi_lastpulse = np.zeros(n) + tlast_dt = np.zeros(n) + + idx1_cond = t < my_seg_times + idx1 = all_idx[idx1_cond] + c1 = len(idx1) + + idx2_cond = t > my_seg_t2 + idx2 = all_idx[idx2_cond] + c2 = len(idx2) + + # each of the conditions below splits based on the truth of this subclause + branch1_cond = np.abs(my_seg_c) < 1.0e-12 + branch1_idx = all_idx[branch1_cond] + branch1_cidx = all_idx[~branch1_cond] + branch1_c = len(branch1_idx) + branch1_nc = len(branch1_cidx) + tmp1 = np.bitwise_and(my_seg_segflags, 3) + tmp2 = np.equal(tmp1, mask) + tmp3 = np.greater(my_seg_idpu_spinper, 1.0) + branch2_cond = tmp2 & tmp3 + branch2_idx = all_idx[branch2_cond] + + idx3_cond = (t >= my_seg_times) & (t <= my_seg_t2) + idx3 = all_idx[idx3_cond] + c3 = len(idx3) + + if c1 > 0: + dt[idx1] = my_seg_times[idx1] - t[idx1] + spinper[idx1] = 360.0 / my_seg_b[idx1] + fracspins[idx1] = dt[idx1] / spinper[idx1] + intspins[idx1] = np.ceil(fracspins[idx1]) + spinphase[idx1] = (intspins[idx1] - fracspins[idx1]) * 360.0 + spincount[idx1] = my_seg_c1[idx1] - intspins[idx1] + t_last[idx1] = my_seg_times[idx1] - intspins[idx1] * spinper[idx1] + + if c2 > 0: + dt[idx2] = t[idx2] - my_seg_t2[idx2] + bp[idx2] = my_seg_b[idx2] + 2.0 * my_seg_c[idx2] * (my_seg_t2[idx2] - my_seg_times[idx2]) + spinper[idx2] = 360.0 / bp[idx2] + fracspins[idx2] = dt[idx2] / spinper[idx2] + + idx2_branch_cond = idx2_cond & branch2_cond + idx2_branch = all_idx[idx2_branch_cond] + if len(idx2_branch) > 0: + model_phi = fracspins[idx2_branch] * 360.0 + idpu_bp = 360.0 / my_seg_idpu_spinper[idx2_branch] + idpu_phi = dt[idx2_branch] * idpu_bp + eclipse_delta_phi[idx2_branch] = my_seg_initial_delta_phi[idx2_branch] + (model_phi - idpu_phi) + intspins[idx2] = np.floor(fracspins[idx2]) + spinphase[idx2] = (fracspins[idx2] - intspins[idx2]) * 360.0 + spincount[idx2] = my_seg_c2[idx2] + intspins[idx2] + t_last[idx2] = my_seg_t2[idx2] + intspins[idx2] * spinper[idx2] + + if c3 > 0: + dt[idx3] = t[idx3] - my_seg_times[idx3] + phi = my_seg_b[idx3] * dt[idx3] + my_seg_c[idx3] * dt[idx3] * dt[idx3] + bp[idx3] = my_seg_b[idx3] + 2.0 * my_seg_c[idx3] * dt[idx3] + spinper[idx3] = 360.0 / bp[idx3] + spinphase[idx3] = np.fmod(phi, 360.0) + fracspins[idx3] = phi / 360.0 + spincount[idx3] = np.floor(fracspins[idx3]) + phi_lastpulse[idx3] = spincount[idx3] * 360.0 + + if branch1_c > 0: + tlast_dt[branch1_idx] = phi_lastpulse[branch1_idx] / my_seg_b[branch1_idx] + + if branch1_nc > 0: + tlast_dt[branch1_cidx] = (-my_seg_b[branch1_cidx] + + np.sqrt(my_seg_b[branch1_cidx] ** 2 - 4.0 * my_seg_c[branch1_cidx] * ( + -phi_lastpulse[branch1_cidx]))) / (2.0 * my_seg_c[branch1_cidx]) + + idx3_branch_cond = idx3_cond & branch2_cond + idx3_branch = all_idx[idx3_branch_cond] + + if len(idx3_branch) > 0: + model_phi = fracspins[idx3_branch] * 360.0 + idpu_bp = 360.0 / my_seg_idpu_spinper[idx3_branch] + idpu_phi = dt[idx3_branch] * idpu_bp + eclipse_delta_phi[idx3_branch] = my_seg_initial_delta_phi[idx3_branch] + (model_phi - idpu_phi) + t_last[idx3] = my_seg_times[idx3] + tlast_dt[idx3] + spincount[idx3] = spincount[idx3] + my_seg_c1[idx3] + + if use_spinphase_correction: + logging.info("applying spinphase correction") + interp_correction = np.interp(t, self.spin_corr_times, self.spin_corr_vals) + spinphase -= interp_correction + cond = spinphase > 360.0 + spinphase[cond] -= 360.0 + cond = spinphase < 0.0 + spinphase[cond] += 360.0 + + res = SpinmodelInterpTResult(spincount=spincount, spinphase=spinphase, t_last=t_last, + eclipse_delta_phi=eclipse_delta_phi, spinper=spinper, segflags=my_seg_segflags, + idx=segs_idx, dt=dt) + return res + + def make_arrays(self): + """ Populate the seg_* attributes using data from the segment list + + For compatibility with the IDL implementation, we use the same algorithm in Python to build up a segment + list from the STATE CDF variables. In IDL, we can do vectorized access to class members through an array + of indices, but this doesn't work the same way in Python. Here, it is most convenient to convert the segment + list to a set of Numpy arrays, which lets us do vectorized calculations on them. + + Args: + + Returns: + """ + + self.seg_count = len(self.seg_list) + self.seg_times = np.array([o.t1 for o in self.seg_list]) + self.seg_t2 = np.array([o.t2 for o in self.seg_list]) + self.seg_c1 = np.array([o.c1 for o in self.seg_list]) + self.seg_c2 = np.array([o.c2 for o in self.seg_list]) + self.seg_b = np.array([o.b for o in self.seg_list]) + self.seg_c = np.array([o.c for o in self.seg_list]) + self.seg_npts = np.array([o.npts for o in self.seg_list]) + self.seg_maxgap = np.array([o.maxgap for o in self.seg_list]) + self.seg_phaserr = np.array([o.phaserr for o in self.seg_list]) + self.seg_idpu_spinper = np.array([o.idpu_spinper for o in self.seg_list]) + self.seg_initial_delta_phi = np.array([o.initial_delta_phi for o in self.seg_list]) + self.seg_segflags = np.array([o.segflags for o in self.seg_list]) + + def make_tplot_vars(self, + prefix: str): + """ Create a set of tplot variables from the spinmodel segment attributes. + + This is useful for regression testing or cross-platform validation of the spin model creation process. + + :param prefix : A string to prepend to each tplot variable name to ensure uniqueness + :return: + """ + + store_data(prefix + 't1', data={'x': self.seg_times, 'y': self.seg_times}) + store_data(prefix + 't2', data={'x': self.seg_times, 'y': self.seg_t2}) + store_data(prefix + 'c1', data={'x': self.seg_times, 'y': self.seg_c1}) + store_data(prefix + 'c2', data={'x': self.seg_times, 'y': self.seg_c2}) + store_data(prefix + 'b', data={'x': self.seg_times, 'y': self.seg_b}) + store_data(prefix + 'c', data={'x': self.seg_times, 'y': self.seg_c}) + store_data(prefix + 'npts', data={'x': self.seg_times, 'y': self.seg_npts}) + store_data(prefix + 'maxgap', data={'x': self.seg_times, 'y': self.seg_maxgap}) + store_data(prefix + 'phaserr', data={'x': self.seg_times, 'y': self.seg_phaserr}) + store_data(prefix + 'idpu_spinper', data={'x': self.seg_times, 'y': self.seg_idpu_spinper}) + store_data(prefix + 'initial_delta_phi', data={'x': self.seg_times, 'y': self.seg_initial_delta_phi}) + store_data(prefix + 'segflags', data={'x': self.seg_times, 'y': self.seg_segflags}) + + def addseg(self, + newseg: SpinmodelSegment): + """ Add a segment to the spin model object being constructed. + + A spin model is assumed to satisfy a condition that the end time of one segment exactly matches the start time + of the next segment, with no gaps or overlaps. + + When loading STATE data for time intervals spanning multiple UTC days, there will be small time gaps + between the spin model segments at either side of UTC date boundaries. This routine adjusts the segment + list by inserting new 'bridge' segments, as needed, to bridge gaps between the segments read from the CDF data, + also making any necessary adjustments to the preceding/following segments. + + :param newseg: A SpinmodelSegment object to be added to the spin model being constructed + :return: + """ + + if self.seg_count == 0: + self.seg_list.append(newseg) + self.lastseg = 0 + self.seg_count = 1 + else: + lseg = self.seg_list[self.lastseg] + # print('Adding segment') + # print('Last:') + # lseg.print() + # print('Current') + # newseg.print() + # Previously, this was an exact equality test. Now, the DEPEND_TIME variables are handled slightly + # differently than plain old double-precision variables, so the possibility of small floating point + # differences needs to be accounted for. For the purposes of spin model segments, if the times are within + # a microsecond, they might as well be equal. + tdiff = abs(newseg.t1 - lseg.t2) + tolerance = 1.0e-06 + if tdiff < tolerance: + + # + # Normal case: segments are contiguous + # + newseg.c1 = lseg.c2 + newseg.c2 = lseg.c2 + newseg.c2 + self.seg_list.append(newseg) + self.lastseg += 1 + self.seg_count += 1 + else: + # Segments are not contiguous -- this should indicate + # a UTC date boundary, and the spin models on either side will + # need to be merged. + # + # There are several cases, depending on the delta-t between the + # end of the previous segment, and the start of the current segment: + # + # 1) Large gap, greater than 1/2 spin : create a new segment to + # bridge the gap. + # 2) Small gap, <= 1/2 spin, previous segment covers 2 or more spins: + # remove last spin from previous segment, converting the situation + # to the "large gap" case, then create a new segment to bridge + # the gap. + # 3) Small gap, previous segment only contains 1 spin : if current + # segment contains 2 or more spins, remove first spin from + # current segment, converting the situation to the "large gap" + # case, then create a new segment to bridge the gap. + # 4) Small gap, previous and current segments each contain only + # a single spin. This should never happen -- if no averaging + # was applied, the segments should be exactly contiguous. + # 5) Negative gap -- current segment starts more than 1/2 spin + # before end of previous segment. This should never happen, + # since it would imply that the apid 305 packets are incorrectly + # time ordered. + + spinper = 360.0 / lseg.b + gap_spin_count = (newseg.t1 - lseg.t2) / spinper + gap_time = newseg.t1 - lseg.t2 + if gap_spin_count > 0.5: + # Case 1: Gap of 1 or more spins between segments, add fill + gap_nspins = math.floor(gap_spin_count + 0.5) + gap_spinper = (newseg.t1 - lseg.t2) / (1.0 * gap_nspins) + # Fill in eclipse delta_phi parameters + gap_idpu_spinper = (newseg.idpu_spinper + lseg.idpu_spinper) / 2.0 + gap_segflags = newseg.segflags & lseg.segflags + # We need to calculate gap_initial_delta_phi by extrapolating + # from lseg to lseg.t2 = gapseg.t1 + spinper, spinphase, dummy_spincount, gap_eclipse_delta_phi, dummy_t_last = \ + lseg.interp_t(lseg.t2) + fillseg = SpinmodelSegment(t1=lseg.t2, t2=newseg.t1, c1=lseg.c2, c2=lseg.c2 + gap_nspins, + b=360.0 / gap_spinper, c=0.0, npts=0, maxgap=gap_time, phaserr=0.0, + initial_delta_phi=gap_eclipse_delta_phi, + idpu_spinper=gap_idpu_spinper, segflags=gap_segflags) + self.seg_list.append(fillseg) + self.lastseg = self.lastseg + 1 + self.seg_count += 1 + newseg.c1 = fillseg.c2 + newseg.c2 = newseg.c1 + newseg.c2 + self.seg_list.append(newseg) + self.lastseg = self.lastseg + 1 + self.seg_count += 1 + elif gap_spin_count > -0.5: + # Case 2, 3, 4, or 5 + # Now that we're using floating point time comparisons with tolerance, rather than strict + # equality, none of these cases seem to occur anymore. Cases 2 and (possibly) 3 have apparently + # been absorbed into the "segments are contiguous (within tolerance)" case. Cases 4 and 5 were + # "this should never happen" scenarios. It would be somewhat difficult to contrive plausible test + # inputs that would trigger cases 2 or 3 in this iteration of the code, so (for the sake of our test + # coverage metrics), I will replace those code blocks with exceptions. If they ever do turn up + # in practice, we can revive them from the version history or from the IDL code. -- JWL 2023/03/13 + + if (lseg.c2 - lseg.c1) >= 2: + # Case 2: small gap, previous segment has at least 2 spins + # dprint,'<1 spin gap, stealing spin from last segment' + logging.error('Unexpected case 2 (small gap, previous segment with at least 2 spins)') + logging.error('Segment time: ' + time_string(lseg.t2)) + logging.error('Please contact pyspedas or themis support and include the above information.') + raise RuntimeError + elif newseg.c2 >= 2: + # Case 3: small gap, previous segment has only 1 spin, current segment has at least 2 spins + # It is assumed that newseg is the first segment of a new UTC day, therefore the spin numbers + # start over at 0. So we want to change newseg to start at spin 1 instead of spin 0. + logging.error('Unexpected case 3 (small gap, previous segment with only 1 spin, current segment with 2+ spins.)') + logging.error('Segment time: ' + time_string(lseg.t2)) + logging.error('Please contact pyspedas or themis support and include the above information.') + raise RuntimeError + else: + # Case 4: small gap, but segments on either side only contain + # one spin each. This should never happen. + logging.error('Unexpected case 4 (<1 spin gap, but neither segment has enough spins to steal.)') + logging.error('Segment time: ' + time_string(lseg.t2)) + logging.error('Please contact pyspedas or themis support and include the above information.') + raise RuntimeError + else: + # Case 5: out of order sun pulse times. This should never happen. + logging.error('Unexpected case 5 (Sun pulse times out of order)') + logging.error("Last segment end time" + time_string(lseg.t2) + " New segment start time " + time_string(newseg.t1)) + raise RuntimeError + + def get_timerange(self): + """ Returns the time span covered by the model. + The IDL version also returns information about any eclipse time periods, will add later + if needed. + + Args: None + + Returns: tuple with start time and end time + """ + start_time = self.seg_times[0] + end_time = self.seg_t2[-1] + return start_time, end_time + + def get_eclipse_times(self, min_shadow_duration:float=60.0): + """ Returns lists of start time and end times for eclipses found in the spin model + + Args: + None + + Returns: A tuple containing two listss, one for start times and one for end times. Returns empty + lists if no eclipses found. + """ + start_times=[] + end_times=[] + processing_shadow=False + + for i in range(self.seg_count): + this_eclipse_flag=self.seg_segflags[i] & 1 + if not(this_eclipse_flag) and not(processing_shadow): + # Previous and current segments are not eclipses, do nothing + pass + elif not(this_eclipse_flag) and processing_shadow: + # Transition out of shadow, reset status + processing_shadow=False + elif this_eclipse_flag and not(processing_shadow): + # Transition into shadow, add entries to start and end time lists, set status + start_times.append(self.seg_times[i]) + end_times.append(self.seg_t2[i]) + processing_shadow=True + else: + # Previous and current segments in shadow, update last end time + end_times[-1]=self.seg_t2[i] + + return start_times, end_times + + + + + + def __init__(self, + probe, + correction_level): + self.lastseg = SpinmodelSegment(t1=0.0, t2=0.0, c1=0, c2=0, b=0.0, c=0.0, npts=0, maxgap=0.0, phaserr=0.0, + initial_delta_phi=0.0, idpu_spinper=0.0, segflags=0) + self.seg_times = np.zeros(1, float) + self.seg_t2 = np.zeros(1, float) + self.seg_c1 = np.zeros(1, int) + self.seg_c2 = np.zeros(1, int) + self.seg_b = np.zeros(1, float) + self.seg_c = np.zeros(1, float) + self.seg_npts = np.zeros(1, int) + self.seg_maxgap = np.zeros(1, float) + self.seg_phaserr = np.zeros(1, float) + self.seg_initial_delta_phi = np.zeros(1, float) + self.seg_idpu_spinper = np.zeros(1, float) + self.seg_segflags = np.zeros(1, int) + self.seg_count = 0 + self.seg_list = [] + seg_times, tend_data = get_sm_data(probe, 'tend', correction_level) + t, spinper_data = get_sm_data(probe, 'spinper', correction_level) + t, c_data = get_sm_data(probe, 'c', correction_level) + t, phaserr_data = get_sm_data(probe, 'phaserr', correction_level) + t, nspins_data = get_sm_data(probe, 'nspins', correction_level) + t, npts_data = get_sm_data(probe, 'npts', correction_level) + t, maxgap_data = get_sm_data(probe, 'maxgap', correction_level) + t, initial_delta_phi_data = get_sm_data(probe, 'initial_delta_phi', correction_level) + t, idpu_spinper_data = get_sm_data(probe, 'idpu_spinper', correction_level) + t, segflags_data = get_sm_data(probe, 'segflags', correction_level) + # The spin_correction variable only exists in V03 state CDFs, and has its own time variable + tmp = get_sm_data(probe, 'correction', 0) + if tmp is None: + logging.info('spin_correction variable not available, defaulting to 0.0') + self.spin_corr_times = [0.0, 1.0] + self.spin_corr_vals = [0.0, 0.0] + else: + self.spin_corr_times, self.spin_corr_vals = tmp + + # The fgm_corr_offset and fgm_corr_tend variables may not exist, and have their own time variable + tmp = get_sm_data(probe, 'fgm_corr_offset', correction_level) + if tmp is None: + do_fgm_corr = False + logging.info('FGM correction variables not available') + else: + do_fgm_corr = True + fgm_corr_time, fgm_corr_offset = tmp + t, fgm_corr_tend = get_sm_data(probe, 'fgm_corr_tend', correction_level) + + seg_count = len(seg_times) + # tlast = seg_times[0] + for i in range(seg_count): + newseg = SpinmodelSegment(t1=seg_times[i], t2=tend_data[i], c1=0, c2=nspins_data[i], + b=360.0 / spinper_data[i], + c=c_data[i], npts=npts_data[i], maxgap=maxgap_data[i], phaserr=phaserr_data[i], + initial_delta_phi=initial_delta_phi_data[i], idpu_spinper=idpu_spinper_data[i], + segflags=segflags_data[i]) + # tlast=tend_data[i] + # origseg=copy.copy(newseg) + self.addseg(newseg) + # print(i) + # newseg.print() + # lastseg=copy.copy(origseg) + self.make_arrays() + if do_fgm_corr and (correction_level == 2): + logging.info(f"applying FGM corrections, do_fgm_corr = {do_fgm_corr}, correction_level = {correction_level}") + for i in np.arange(len(fgm_corr_offset)): + self.adjust_delta_phi(fgm_corr_time[i], fgm_corr_tend[i], fgm_corr_offset[i]) + else: + logging.info(f"Skipping FGM corrections, do_fgm_corr {do_fgm_corr}, correction_level = {correction_level}") + + +# This dictionary is where the spinmodel objects are stored. The keys are tuples of (probe, correction_level) +# and the values are Spinmodel objects. Spinmodel objects are added to the dictionary by the +# spinmodel_postprocess routine. + +spinmodel_dict: Dict[(str, int)] = {} + + +def get_spinmodel(probe: str, + correction_level: int, + quiet: bool = False) -> Spinmodel: + """ Get a reference to a Spinmodel object stored in the dictionary. + + Args: + probe: Probe name, one of 'a','b','c','d','e' + correction_level: 0 for no corrections, 1 for waveform corrections, 2 for spin fit corrections + quiet: If True, do not log anything if the model is uninitialized + + Returns: + A reference to a Spinmodel object stored in the dictionary. + """ + try: + model = spinmodel_dict[(probe, correction_level)] + except KeyError: + if not quiet: + logging.warning("No spinmodel loaded for probe " + probe + " correction level: " + str(correction_level)) + logging.warning("It is necessary to load THEMIS state data, with get_support_data=True, to initialize the spin model.") + model = None + return model + + +def save_spinmodel(probe: str, + correction_level: int, + model: Spinmodel): + """ Store a reference to a Spinmodel object in the dictionary, using the probe and correction level as the key + + Args: + probe: Probe name, one of 'a','b','c','d','e' + correction_level: 0 for no corrections, 1 for waveform corrections, 2 for spin fit corrections + model: A Spinmodel object to store + + """ + spinmodel_dict[(probe, correction_level)] = model diff --git a/pyspedas/themis/state/spinmodel/spinmodel_postprocess.py b/pyspedas/themis/state/spinmodel/spinmodel_postprocess.py new file mode 100644 index 00000000..37498cd0 --- /dev/null +++ b/pyspedas/themis/state/spinmodel/spinmodel_postprocess.py @@ -0,0 +1,46 @@ +import logging +from .spinmodel import Spinmodel, save_spinmodel +from pytplot import data_exists + + +def spinmodel_postprocess(probe: str): + """ Create and initialize three Spinmodel objects using tplot variables loaded from the STATE CDFs. + + The three models correspond to the three available correction levels: 0 = no corrections, 1 = waveform + corrections, 2 = spin fit corrections. + + Each of the three models is stored in a dictionary via the save_spinmodel routine. + + Args: + probe (str): A single letter string specifying the probe for the models being built. + + """ + + # It is possible that /get_support_data was specified, but only a limited set of variables + # was requested. Check that all needed spin model variables are present before attempting + # to create the models. + + sm_quantities = ['tend', 'spinper', 'c', 'phaserr', 'nspins', 'npts', 'maxgap', 'initial_delta_phi', 'idpu_spinper', + 'segflags'] + missing_var = False + for v in sm_quantities: + non_ecl_v = 'th' + probe + '_spin_' + v + ecl_v = 'th' + probe + '_spin_ecl_' + v + if not (data_exists(non_ecl_v) and data_exists(ecl_v)): + missing_var = True + + if missing_var: + logging.warning("Some required spin model variables were not requested, skipping spin model creation") + return + + logging.info("Creating spin model for probe " + probe + " correction level 0") + # Expect a warning message here: That name is currently not in tplot. + # Maybe there's a better idiom in pytplot for checking whether a variable exists? + model0 = Spinmodel(probe, 0) + save_spinmodel(probe, 0, model0) + logging.info("Creating spin model for probe " + probe + " correction level 1") + model1 = Spinmodel(probe, 1) + save_spinmodel(probe, 1, model1) + logging.info("Creating spin model for probe " + probe + " correction level 2") + model2 = Spinmodel(probe, 2) + save_spinmodel(probe, 2, model2) diff --git a/pyspedas/themis/state/spinmodel/spinmodel_segment.py b/pyspedas/themis/state/spinmodel/spinmodel_segment.py new file mode 100644 index 00000000..9d853495 --- /dev/null +++ b/pyspedas/themis/state/spinmodel/spinmodel_segment.py @@ -0,0 +1,118 @@ +import math + + +class SpinmodelSegment: + """ An object describing a single segment of a spin model. + + Attributes: + t1 (float): Start time of segment (seconds since epoch) + t2 (float): End time of segment (seconds since epoch) + c1 (int): Spin count at start of segment + c2 (int): Spin count at end of segment + b (float): Initial spin rate in degrees/sec + c (float): Acceleration of spin rate in degrees/sec^2 + npts (int): Number of data points used to construct this segment + maxgap (float): Largest gap, in seconds, in data used to construct this segment + phaserr (float): The maximum fitting error in this segment (seconds) + initial_delta_phi (float): The offset in degrees between the corrected spin model and uncorrected IDPU model at + the start of the segment + idpu_spinper (float): The onboard spin period during an eclipse segment + segflags (int): Bit mapped flags describing the eclipse and correction status during this segment + Bit 0 (lsb) eclipse flag, bit 1 waveform corrections applied, bit 2 spin fit corrections applied + """ + + __slots__ = 't1', 't2', 'c1', 'c2', 'b', 'c', 'npts', 'maxgap', 'phaserr', 'initial_delta_phi', 'idpu_spinper', \ + 'segflags' + + def __init__(self, + t1: float, + t2: float, + c1: int, + c2: int, + b: float, + c: float, + npts: int, + maxgap: float, + phaserr: float, + initial_delta_phi: float, + idpu_spinper: float, + segflags: int): + self.t1 = t1 + self.t2 = t2 + self.c1 = c1 + self.c2 = c2 + self.b = b + self.c = c + self.npts = npts + self.maxgap = maxgap + self.phaserr = phaserr + self.initial_delta_phi = initial_delta_phi + self.idpu_spinper = idpu_spinper + self.segflags = segflags + + def print(self): + """ Print a segment using sensible formatting + + Args: + + Returns: + """ + + print('%20.8f %20.8f %d %d %f %e %d %f %f %f %f %d' % (self.t1, self.t2, self.c1, self.c2, + self.b, self.c, self.npts, self.maxgap, self.phaserr, + self.initial_delta_phi, + self.idpu_spinper, self.segflags)) + +# Previously, this module included a set of interpolation and extrapolation routines for +# single spinmodel segments: +# +# extrap_before_t() +# extrap_after_t() +# extrap_before_n() +# extrap_after_n() +# +# These routines have been inlined where needed, and users should be calling the interp_t or interp_n methods on +# the spinmodel object. If needed, the removed routines can be restored from the version history, or the IDL code. +# JWL 2023-03-13 +# + + def interp_t(self, + t: float) -> (float, float, int, float, float): + """Return modeled values for a time falling within the segment start/end times + + Args: + t (float): Input time (seconds since epoch) + + Returns: + A tuple containing the modeled spin period, spin count, spin phase, eclipse_delta_phi, and t_last + at the input time. + + """ + + dt = t - self.t1 + phi = (self.b * dt + self.c * dt * dt) + bp = self.b + 2.0 * self.c * dt + spinper = 360.0 / bp + spincount, spinphase = divmod(phi, 360.0) + fracspins = phi / 360.0 + phi_lastpulse = spincount * 360.0 + if abs(self.c) < 1.0e-12: + tlast_dt = phi_lastpulse / self.b + else: + b = self.b + c = self.c + tlast_dt = (-b + math.sqrt(b * b - 4.0 * c * (-phi_lastpulse))) / (2.0 * c) + if ((self.segflags & 3) == 3) and (self.idpu_spinper > 1.0): + model_phi = fracspins * 360.0 + idpu_bp = 360.0 / self.idpu_spinper + idpu_phi = dt * idpu_bp + eclipse_delta_phi = self.initial_delta_phi + (model_phi - idpu_phi) + + else: + eclipse_delta_phi = 0.0 + t_last = self.t1 + tlast_dt + spincount = spincount + self.c1 + return spinper, spinphase, spincount, eclipse_delta_phi, t_last + + + diff --git a/pyspedas/themis/state/state.py b/pyspedas/themis/state/state.py index 6e38a001..a7a0f730 100644 --- a/pyspedas/themis/state/state.py +++ b/pyspedas/themis/state/state.py @@ -1,5 +1,7 @@ - from pyspedas.themis.load import load +from pytplot import data_exists, del_data +from .apply_spinaxis_corrections import apply_spinaxis_corrections +from .spinmodel.spinmodel_postprocess import spinmodel_postprocess def state(trange=['2007-03-23', '2007-03-24'], @@ -12,14 +14,15 @@ def state(trange=['2007-03-23', '2007-03-24'], downloadonly=False, notplot=False, no_update=False, - time_clip=False): + time_clip=False, + keep_spin=False): """ This function loads THEMIS state data Parameters: trange: list of str time range of interest [starttime, endtime] with the format - 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day + ['YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] probe: str or list of str @@ -59,12 +62,46 @@ def state(trange=['2007-03-23', '2007-03-24'], Time clip the variables to exactly the range specified in the trange keyword + keep_spin: bool + If True, do not delete the spin model tplot variables after the spin models are built. + Returns: List of tplot variables created. """ - return load(instrument='state', trange=trange, level=level, probe=probe, - suffix=suffix, get_support_data=get_support_data, - varformat=varformat, varnames=varnames, - downloadonly=downloadonly, notplot=notplot, - time_clip=time_clip, no_update=no_update) + # If support data is being loaded, premptively delete the thx_spinras_correction and thx_spindec_correction + # variables, to avoid dangling corrections if they don't exist in this time interval. + if get_support_data: + for p in probe: + spinras_corrvar='th'+probe+'_spinras_correction' + spindec_corrvar='th'+probe+'_spindec_correction' + if data_exists(spinras_corrvar): + del_data(spinras_corrvar) + if data_exists(spindec_corrvar): + del_data(spindec_corrvar) + + res = load(instrument='state', trange=trange, level=level, probe=probe, + suffix=suffix, get_support_data=get_support_data, + varformat=varformat, varnames=varnames, + downloadonly=downloadonly, notplot=notplot, + time_clip=time_clip, no_update=no_update) + if get_support_data: + for p in probe: + # Process spin model variables + spinmodel_postprocess(p) + if not keep_spin: + spinvar_pattern = 'th' + p + '_spin_*' + del_data(spinvar_pattern) + # Perform spin axis RA and Dec corrections + spinras_var = 'th' + p + '_spinras' + delta_spinras_var = 'th' + p + '_spinras_correction' + corrected_spinras_var = 'th' + p + '_spinras_corrected' + + spindec_var = 'th' + p + '_spindec' + delta_spindec_var = 'th' + p + '_spindec_correction' + corrected_spindec_var = 'th' + p + '_spindec_corrected' + + apply_spinaxis_corrections(spinras=spinras_var, delta_spinras=delta_spinras_var, + corrected_spinras=corrected_spinras_var, spindec=spindec_var, + delta_spindec=delta_spindec_var, corrected_spindec=corrected_spindec_var) + return res diff --git a/pyspedas/themis/tests/autoload_support_tests.py b/pyspedas/themis/tests/autoload_support_tests.py new file mode 100644 index 00000000..5a325301 --- /dev/null +++ b/pyspedas/themis/tests/autoload_support_tests.py @@ -0,0 +1,169 @@ +"""Test gmag and themis load functions.""" +import os +import unittest +from pytplot import data_exists, time_string, time_double, del_data, get_timespan +from pyspedas.themis import autoload_support, get_spinmodel, fit +from pyspedas.themis.state.autoload_support import load_needed + + +class AutoLoadTestCases(unittest.TestCase): + """Test themis support data autoload functions.""" + + def test_load_needed_exact(self): + # Test logic for determining whether support data needs to be loaded, based on exact comparisons + # Timespan 1 completely encloses timespan 2 + ts1=['2007-03-23 00:00:00', '2007-03-24 00:00:00'] + ts2=['2007-03-23 00:00:01', '2007-03-23 23:59:59'] + + tr1=time_double(ts1) + tr2=time_double(ts2) + trange_loaded=tr1 + trange_needed=tr2 + # trange loaded encloses trange needed on both sides, no load needed + self.assertFalse(load_needed(trange_loaded,trange_needed,tolerance=0.0)) + trange_loaded=tr2 + trange_needed=tr1 + # trange loaded is a proper subset of trange needed, load needed + self.assertTrue(load_needed(trange_loaded,trange_needed,tolerance=0.0)) + # tr3 starts before tr1 + tr3=[tr2[0] - 2.0, tr2[1]] + trange_loaded=tr1 + trange_needed=tr3 + # trange needed starts before trange loaded, load needed + self.assertTrue(load_needed(trange_loaded,trange_needed,tolerance=0.0)) + # tr4 ends after tr1 + tr4=[tr2[0], tr2[1]+2.0] + trange_loaded=tr1 + trange_needed=tr4 + # trange needed ends after trange loaded, load needed + self.assertTrue(load_needed(trange_loaded,trange_needed,tolerance=0.0)) + + def test_load_needed_tolerance(self): + # Test logic for determining whether support data needs to be loaded, while + # allowing a certain amount of extrapolation + tolerance = 10.0 + ts1=['2007-03-23 00:00:00', '2007-03-24 00:00:00'] + tr1 = time_double(ts1) + trange_needed=tr1 + ts2=['2007-03-23 00:00:09', '2007-03-23 23:59:51'] + tr2=time_double(ts2) + trange_loaded=tr2 + # Loaded data fails to overlap needed data by < tolerance on both sides, load not needed + self.assertFalse(load_needed(trange_loaded,trange_needed,tolerance=tolerance)) + trange_loaded=tr1 + trange_needed=tr2 + # Loaded data overlaps needed data on both ends, load not needed + self.assertFalse(load_needed(trange_loaded,trange_needed,tolerance=tolerance)) + trange_loaded=tr1 + trange_needed=[tr1[0] - 9.0, tr1[1]] + # Loaded data fails to overlap needed data by < tolerance on left side, load not needed + self.assertFalse(load_needed(trange_loaded,trange_needed,tolerance=tolerance)) + trange_needed=[tr1[0], tr1[1]+9.0] + # Loaded data fails to overlap needed data by < tolerance on right side, load not needed + self.assertFalse(load_needed(trange_loaded,trange_needed,tolerance=tolerance)) + trange_needed=[tr1[0] - 11.0, tr1[1]] + # Loaded data fails to overlap needed data by > tolerance on left side, load needed + self.assertTrue(load_needed(trange_loaded,trange_needed,tolerance=tolerance)) + trange_needed=[tr1[0], tr1[1]+11.0] + # Loaded data fails to overlap needed data by > tolerance on right side, load needed + self.assertTrue(load_needed(trange_loaded,trange_needed,tolerance=tolerance)) + + + def test_autoload_support_from_var(self): + """Load FGM.""" + del_data('thc_*') + del_data('slp_*') + fit(trange=['2023-01-06','2023-01-07']) + autoload_support(varname='thc_fgs_gse',slp=True,spinaxis=True,spinmodel=True) + self.assertTrue(data_exists('thc_spinras')) + self.assertTrue(data_exists('thc_spindec')) + self.assertTrue(data_exists('slp_lun_att_x')) + spinmodel=get_spinmodel(probe='c',correction_level=1) + self.assertTrue(not (spinmodel is None)) + trange_needed=get_timespan('thc_fgs_gse') + ts1=get_timespan('thc_spinras') + ts2=get_timespan('thc_spindec') + ts3=get_timespan('slp_lun_att_x') + ts4=spinmodel.get_timerange() + self.assertFalse(load_needed(ts1,trange_needed,tolerance=120.0)) + self.assertFalse(load_needed(ts2,trange_needed,tolerance=120.0)) + self.assertFalse(load_needed(ts3,trange_needed,tolerance=120.0)) + self.assertFalse(load_needed(ts4,trange_needed,tolerance=120.0)) + + def test_autoload_support_without_var(self): + """Load FGM.""" + del_data('thc_*') + del_data('slp_*') + trange=['2023-01-06','2023-01-07'] + autoload_support(trange=time_double(trange),probe='c',slp=True,spinaxis=True,spinmodel=True) + self.assertTrue(data_exists('thc_spinras')) + self.assertTrue(data_exists('thc_spindec')) + self.assertTrue(data_exists('slp_lun_att_x')) + spinmodel=get_spinmodel(probe='c',correction_level=1) + self.assertTrue(not (spinmodel is None)) + trange_needed=time_double(trange) + ts1=get_timespan('thc_spinras') + ts2=get_timespan('thc_spindec') + ts3=get_timespan('slp_lun_att_x') + ts4=spinmodel.get_timerange() + self.assertFalse(load_needed(ts1,trange_needed,tolerance=120.0)) + self.assertFalse(load_needed(ts2,trange_needed,tolerance=120.0)) + self.assertFalse(load_needed(ts3,trange_needed,tolerance=120.0)) + self.assertFalse(load_needed(ts4,trange_needed,tolerance=120.0)) + + def test_autoload_support_reload_all(self): + """Load FGM.""" + del_data('thc_*') + del_data('slp_*') + trange=['2008-01-01','2008-01-01'] + autoload_support(trange=time_double(trange),probe='c',slp=True,spinaxis=True,spinmodel=True) + self.assertTrue(data_exists('thc_spinras')) + self.assertTrue(data_exists('thc_spindec')) + self.assertTrue(data_exists('slp_lun_att_x')) + spinmodel=get_spinmodel(probe='c',correction_level=1) + self.assertTrue(not (spinmodel is None)) + trange_needed=time_double(trange) + ts1=get_timespan('thc_spinras') + ts2=get_timespan('thc_spindec') + ts3=get_timespan('slp_lun_att_x') + ts4=spinmodel.get_timerange() + self.assertFalse(load_needed(ts1,trange_needed,tolerance=120.0)) + self.assertFalse(load_needed(ts2,trange_needed,tolerance=120.0)) + self.assertFalse(load_needed(ts3,trange_needed,tolerance=120.0)) + self.assertFalse(load_needed(ts4,trange_needed,tolerance=120.0)) + # Now choose a different non-overlapping time range, and ensure everything got reloaded. + trange=['2022-01-06','2022-01-07'] + autoload_support(trange=time_double(trange),probe='c',slp=True,spinaxis=True,spinmodel=True) + trange_needed=time_double(trange) + ts1=get_timespan('thc_spinras') + ts2=get_timespan('thc_spindec') + ts3=get_timespan('slp_lun_att_x') + spinmodel=get_spinmodel(probe='c',correction_level=1) + ts4=spinmodel.get_timerange() + self.assertFalse(load_needed(ts1,trange_needed,tolerance=120.0)) + self.assertFalse(load_needed(ts2,trange_needed,tolerance=120.0)) + self.assertFalse(load_needed(ts3,trange_needed,tolerance=120.0)) + self.assertFalse(load_needed(ts4,trange_needed,tolerance=120.0)) + + def test_autoload_support_var_doesntexist(self): + # Should warn if a nonexistent tplot variable is passed + autoload_support(varname='doesntexist',slp=True,spinaxis=True,spinmodel=True) + + def test_autoload_support_err_no_trange_no_var(self): + # Should warn about trange being needed if no tplot variable passed + autoload_support(probe='c',slp=True,spinaxis=True,spinmodel=True) + + def test_autoload_support_err_no_trange_no_probe(self): + # Should warn about probe being needed if no tplot variable passed and spinaxis or spinmodel + trange=['2007-03-23','2007-03-24'] + autoload_support(trange=trange,probe=None,slp=False,spinaxis=True,spinmodel=True) + + def test_autoload_support_no_probe_no_var_slp_only(self): + # Passing a trange only should work if only SLP data is requested + del_data('slp_*') + trange=['2007-03-23','2007-03-24'] + autoload_support(trange=trange,slp=True) + self.assertTrue(data_exists('slp_lun_att_x')) + +if __name__ == '__main__': + unittest.main() diff --git a/pyspedas/themis/tests/tests.py b/pyspedas/themis/tests/tests.py index 6361883c..ab45edf1 100644 --- a/pyspedas/themis/tests/tests.py +++ b/pyspedas/themis/tests/tests.py @@ -1,9 +1,11 @@ """Test gmag and themis load functions.""" import os import unittest -from pyspedas.utilities.data_exists import data_exists - +import logging import pyspedas +import pytplot +from pytplot import data_exists, get_coords + class GmagTestCases(unittest.TestCase): @@ -35,7 +37,7 @@ def test_check_gmag(self): def test_load_gmag_data(self): """Load gmag.""" - pyspedas.themis.gmag(varnames=['thg_mag_amer']) + pyspedas.themis.gmag(varnames=['thg_mag_amer'], sites='amer') self.assertTrue(data_exists('thg_mag_amer')) @@ -113,6 +115,30 @@ def test_load_efi_data(self): pyspedas.themis.efi(time_clip=True, varnames=['thc_eff_e12_efs']) self.assertTrue(data_exists('thc_eff_e12_efs')) + def test_load_slp_data(self): + pyspedas.themis.slp() + # Check that all data is loaded + self.assertTrue(data_exists('slp_sun_ltime')) + self.assertTrue(data_exists('slp_lun_ltime')) + self.assertTrue(data_exists('slp_sun_pos')) + self.assertTrue(data_exists('slp_lun_vel')) + self.assertTrue(data_exists('slp_sun_ltime')) + self.assertTrue(data_exists('slp_lun_ltime')) + self.assertTrue(data_exists('slp_lun_vel')) + self.assertTrue(data_exists('slp_sun_att_x')) + self.assertTrue(data_exists('slp_sun_att_z')) + self.assertTrue(data_exists('slp_lun_att_x')) + self.assertTrue(data_exists('slp_lun_att_z')) + # Check that coordinate systems are set properly + self.assertEqual(get_coords('slp_sun_pos').lower(),'gei') + self.assertEqual(get_coords('slp_sun_vel').lower(),'gei') + self.assertEqual(get_coords('slp_sun_att_x').lower(),'gei') + self.assertEqual(get_coords('slp_sun_att_z').lower(),'gei') + self.assertEqual(get_coords('slp_lun_pos').lower(),'gei') + self.assertEqual(get_coords('slp_lun_vel').lower(),'gei') + self.assertEqual(get_coords('slp_lun_att_x').lower(),'gei') + self.assertEqual(get_coords('slp_lun_att_z').lower(),'gei') + def test_downloadonly(self): """Downloadonly keyword.""" files = pyspedas.themis.efi(downloadonly=True, diff --git a/pyspedas/themis/tests/tests_dsl_cotrans.py b/pyspedas/themis/tests/tests_dsl_cotrans.py new file mode 100644 index 00000000..19839aeb --- /dev/null +++ b/pyspedas/themis/tests/tests_dsl_cotrans.py @@ -0,0 +1,287 @@ +"""Tests of ssl2dsl and dsl2gse functions.""" + +import unittest +from pytplot import get_data,del_data,tplot_restore,data_exists, set_coords +from numpy.testing import assert_array_almost_equal_nulp, assert_array_max_ulp, assert_allclose +from pyspedas.themis import autoload_support, ssl2dsl,dsl2gse + + +class DSLCotransDataValidation(unittest.TestCase): + """ Compares cotrans results between Python and IDL """ + + @classmethod + def setUpClass(cls): + """ + IDL Data has to be downloaded to perform these tests + The SPEDAS script that creates the file: projects/themis/state/cotrans/thm_cotrans_validate.pro + """ + from pyspedas.utilities.download import download + from pyspedas.themis.config import CONFIG + + # Testing time range + cls.t = ['2008-03-23', '2008-03-28'] + + # Testing tolerance + cls.tol = 1e-10 + + # Download tplot files + remote_server = 'https://spedas.org/' + # remote_name = 'testfiles/thm_cotrans_validate.cdf' + remote_name = 'testfiles/thm_cotrans_validate.tplot' + datafile = download(remote_file=remote_name, + remote_path=remote_server, + local_path=CONFIG['local_data_dir'], + no_download=False) + if not datafile: + # Skip tests + raise unittest.SkipTest("Cannot download data validation file") + + # Load validation variables from the test file + del_data('*') + filename = datafile[0] + # pytplot.cdf_to_tplot(filename) + tplot_restore(filename) + #pytplot.tplot_names() + cls.basis_x = get_data('basis_x') + cls.basis_y = get_data('basis_y') + cls.basis_z = get_data('basis_z') + cls.basis_x_gei2gse = get_data('basis_x_gei2gse') + cls.basis_y_gei2gse = get_data('basis_y_gei2gse') + cls.basis_z_gei2gse = get_data('basis_z_gei2gse') + cls.basis_x_gse2gei = get_data('basis_x_gse2gei') + cls.basis_y_gse2gei = get_data('basis_y_gse2gei') + cls.basis_z_gse2gei = get_data('basis_z_gse2gei') + + cls.basis_x_dsl2gse = get_data('basis_x_dsl2gse') + cls.basis_y_dsl2gse = get_data('basis_y_dsl2gse') + cls.basis_z_dsl2gse = get_data('basis_z_dsl2gse') + + cls.basis_x_gse2dsl = get_data('basis_x_gse2dsl') + cls.basis_y_gse2dsl = get_data('basis_y_gse2dsl') + cls.basis_z_gse2dsl = get_data('basis_z_gse2dsl') + + cls.basis_x_ssl2dsl = get_data('basis_x_ssl2dsl') + cls.basis_y_ssl2dsl = get_data('basis_y_ssl2dsl') + cls.basis_z_ssl2dsl = get_data('basis_z_ssl2dsl') + + cls.basis_x_dsl2ssl = get_data('basis_x_dsl2ssl') + cls.basis_y_dsl2ssl = get_data('basis_y_dsl2ssl') + cls.basis_z_dsl2ssl = get_data('basis_z_dsl2ssl') + + # The cotrans routines now can load their own support data. However, it seems you actually need + # some substantial padding of the support data time interval compared to the target variable. I + # think this is due to the V03 state spinaxis and spinphase corrections, which are only given once per + # day. So you need at least the preceding and following days to be able to interpolate to the current + # date, or even two days to account for non-linear interpolation methods. Perhaps autoload_support + # should be taking this into account and add some extra padding. The basis test vectors have timestamps + # during 2007-03-23, but the IDL test data was generated with state loaded from 2007-03-29 through + # 2007-03-30. + + # original time range from IDL test data generation + # state_trange = ['2007-03-20', '2007-03-30'] + + # smallest time interval that gives acceptably identical results to IDL + state_trange = ['2007-03-21','2007-03-25'] + autoload_support(trange=state_trange, probe='a', spinaxis=True, spinmodel=True) + + + def setUp(self): + """ We need to clean tplot variables before each run""" + # del_data('*') + + def test_gei2gse(self): + """Validate gei2gse transform """ + from pyspedas.cotrans.cotrans_lib import subgei2gse + + bx = self.basis_x + by = self.basis_y + bz = self.basis_z + times = bx.times + bx_gse = subgei2gse(times, bx.y) + by_gse = subgei2gse(times, by.y) + bz_gse = subgei2gse(times, bz.y) + assert_allclose(bx_gse, self.basis_x_gei2gse.y, atol=1.0e-06) + assert_allclose(by_gse, self.basis_y_gei2gse.y, atol=1.0e-06) + assert_allclose(bz_gse, self.basis_z_gei2gse.y, atol=1.0e-06) + + def test_gse2gei(self): + """Validate gse2gei transform """ + from pyspedas.cotrans.cotrans_lib import subgse2gei + + bx = self.basis_x + by = self.basis_y + bz = self.basis_z + times = bx.times + bx_gei = subgse2gei(times, bx.y) + by_gei = subgse2gei(times, by.y) + bz_gei = subgse2gei(times, bz.y) + assert_allclose(bx_gei, self.basis_x_gse2gei.y, atol=1.0e-06) + assert_allclose(by_gei, self.basis_y_gse2gei.y, atol=1.0e-06) + assert_allclose(bz_gei, self.basis_z_gse2gei.y, atol=1.0e-06) + + def test_dsl2gse_x(self): + """Validate dsl2gse X axis transform """ + + set_coords('basis_x', 'DSL') + result = dsl2gse('basis_x', 'basis_x_dsl2gse', probe='a') + self.assertEqual(result,1) + bx_gse = get_data('basis_x_dsl2gse') + assert_allclose(bx_gse.y, self.basis_x_dsl2gse.y, atol=1.0e-06) + + def test_dsl2gse_y(self): + """Validate dsl2gse Y axis transform """ + from pyspedas.cotrans.cotrans_lib import subgse2gei + set_coords('basis_y', 'DSL') + result = dsl2gse('basis_y', 'basis_y_dsl2gse', probe='a') + self.assertEqual(result, 1) + by_gse = get_data('basis_y_dsl2gse') + assert_allclose(by_gse.y, self.basis_y_dsl2gse.y, atol=1.0e-06) + + def test_dsl2gse_z(self): + """Validate dsl2gse Z axis transform """ + set_coords('basis_z', 'DSL') + result = dsl2gse('basis_z','basis_z_dsl2gse', probe='a') + self.assertEqual(result, 1) + bz_gse = get_data('basis_z_dsl2gse') + assert_allclose(bz_gse.y, self.basis_z_dsl2gse.y, atol=1.0e-06) + + def test_gse2dsl_x(self): + """Validate gse2dsl X axis transform """ + set_coords('basis_x', 'GSE') + result = dsl2gse('basis_x', 'basis_x_gse2dsl', probe='a', isgsetodsl=True) + self.assertEqual(result, 1) + self.assertEqual(result, 1) + bx_gse = get_data('basis_x_gse2dsl') + assert_allclose(bx_gse.y, self.basis_x_gse2dsl.y, atol=1.0e-06) + + def test_gse2dsl_y(self): + """Validate gse2dsl Y axis transform """ + from pyspedas.cotrans.cotrans_lib import subgse2gei + set_coords('basis_y', 'GSE') + result = dsl2gse('basis_y', 'basis_y_gse2dsl', probe='a', isgsetodsl=True) + self.assertEqual(result, 1) + by_gse = get_data('basis_y_gse2dsl') + assert_allclose(by_gse.y, self.basis_y_gse2dsl.y, atol=1.0e-06) + + def test_gse2dsl_z(self): + """Validate gse2dsl Z axis transform """ + set_coords('basis_z', 'GSE') + result = dsl2gse('basis_z', 'basis_z_gse2dsl', probe='a', isgsetodsl=True) + self.assertEqual(result, 1) + bz_gse = get_data('basis_z_gse2dsl') + assert_allclose(bz_gse.y, self.basis_z_gse2dsl.y, atol=1.0e-06) + + def test_ssl2dsl_x(self): + """Validate ssl2dsl X axis transform """ + set_coords('basis_x', 'SSL') + # Usually probe can be inferred from the input variable name, but we need it here. + result = ssl2dsl('basis_x','basis_x_ssldsl',probe='a',eclipse_correction_level=1) + self.assertEqual(result, 1) + bx_dsl = get_data('basis_x_ssl2dsl') + assert_allclose(bx_dsl.y, self.basis_x_ssl2dsl.y, atol=1.0e-06) + + def test_ssl2dsl_y(self): + """Validate ssl2dsl Y axis transform """ + set_coords('basis_y', 'SSL') + # Usually probe can be inferred from the input variable name, but we need it here. + result = ssl2dsl('basis_y','basis_y_ssldsl',probe='a',eclipse_correction_level=1, use_spinphase_correction=True) + self.assertEqual(result, 1) + by_dsl = get_data('basis_y_ssl2dsl') + assert_allclose(by_dsl.y, self.basis_y_ssl2dsl.y, atol=1.0e-06) + + def test_ssl2dsl_z(self): + """Validate ssl2dsl Z axis transform """ + set_coords('basis_z', 'SSL') + # Usually probe can be inferred from the input variable name, but we need it here. + result = ssl2dsl('basis_z','basis_z_ssldsl', probe='a',eclipse_correction_level=1,use_spinphase_correction=True) + self.assertEqual(result, 1) + bz_dsl = get_data('basis_z_ssl2dsl') + assert_allclose(bz_dsl.y, self.basis_z_ssl2dsl.y, atol=1.0e-06) + + def test_dsl2ssl_x(self): + """Validate dsl2ssl X axis transform """ + set_coords('basis_x', 'DSL') + # Usually probe can be inferred from the input variable name, but we need it here. + result = ssl2dsl('basis_x','basis_x_dsl2ssl',probe='a',eclipse_correction_level=1, use_spinphase_correction=True, isdsltossl=True) + self.assertEqual(result, 1) + bx_ssl = get_data('basis_x_dsl2ssl') + # This test needs a slightly looser tolerance for some reason. + assert_allclose(bx_ssl.y, self.basis_x_dsl2ssl.y, atol=1.5e-06) + + def test_dsl2ssl_y(self): + """Validate dsl2ssl Y axis transform """ + set_coords('basis_y', 'DSL') + # Usually probe can be inferred from the input variable name, but we need it here. + result = ssl2dsl('basis_y','basis_y_dsl2ssl', probe='a', eclipse_correction_level=1, use_spinphase_correction=True, isdsltossl=True) + self.assertEqual(result, 1) + by_ssl = get_data('basis_y_dsl2ssl') + # This test needs a slightly looser tolerance for some reason. + assert_allclose(by_ssl.y, self.basis_y_dsl2ssl.y, atol=1.5e-06) + + def test_dsl2ssl_z(self): + """Validate dsl2ssl Z axis transform """ + set_coords('basis_z', 'DSL') + # Usually probe can be inferred from the input variable name, but we need it here. + result = ssl2dsl('basis_z','basis_z_dsl2ssl', probe='a', eclipse_correction_level=1, use_spinphase_correction=True, isdsltossl=True) + self.assertEqual(result, 1) + bz_ssl = get_data('basis_z_dsl2ssl') + assert_allclose(bz_ssl.y, self.basis_z_dsl2ssl.y, atol=1.0e-06) + + def test_catch_mismatch_dsl2ssl_z(self): + """Test detection of mismatched input vs. requested coordinate systems in dsl2ssl transform """ + # Requesting DSL to SSL, but specifying SSL as input coordinate system + set_coords('basis_z', 'SSL') + # Usually probe can be inferred from the input variable name, but we need it here. + result = ssl2dsl('basis_z','basis_z_dsl2ssl', probe='a', eclipse_correction_level=1, use_spinphase_correction=True, isdsltossl=True, ignore_input_coord = False) + self.assertEqual(result, 0) + + def test_catch_mismatch_ssl2dsl_z(self): + """Test detection of mismatched input vs. requested coordinates in ssl2dsl transform """ + # Requesting SSL to DSL, but specifying DSL as input coordinate system + set_coords('basis_z', 'DSL') + # Usually probe can be inferred from the input variable name, but we need it here. + result = ssl2dsl('basis_z','basis_z_ssldsl', probe='a', eclipse_correction_level=1, use_spinphase_correction=True, ignore_input_coord=False) + self.assertEqual(result, 0) + + def test_catch_mismatch_gse2dsl_z(self): + """Test detection of mismatched input vs requested coordinates in gse2dsl transform """ + set_coords('basis_z', 'DSL') + result = dsl2gse('basis_z', 'basis_z_gse2dsl', probe='a', isgsetodsl=True) + self.assertEqual(result, 0) + + def test_catch_mismatch_dsl2gse_z(self): + """Test detection of mismatched input vs. requested coordinates in dsl2gse transform """ + set_coords('basis_z', 'GSE') + result = dsl2gse('basis_z', 'basis_z_gse2dsl', probe='a') + self.assertEqual(result, 0) + + def test_ignore_mismatch_dsl2ssl_z(self): + """Test ability to bypass coordinate system consistency check in dsl2ssl transform """ + # Requesting DSL to SSL, but specifying SSL as input coordinate system + set_coords('basis_z', 'SSL') + # Usually probe can be inferred from the input variable name, but we need it here. + result = ssl2dsl('basis_z','basis_z_dsl2ssl', probe='a', eclipse_correction_level=1, use_spinphase_correction=True, isdsltossl=True, ignore_input_coord = True) + self.assertEqual(result, 1) + + def test_ignore_mismatch_ssl2dsl_z(self): + """Test ability to bypass coordinate system consistency check in ssl2dsl transform """ + # Requesting SSL to DSL, but specifying DSL as input coordinate system + set_coords('basis_z', 'DSL') + # Usually probe can be inferred from the input variable name, but we need it here. + result = ssl2dsl('basis_z','basis_z_ssldsl', probe='a', eclipse_correction_level=1,use_spinphase_correction=True, ignore_input_coord=True) + self.assertEqual(result, 1) + + def test_ignore_mismatch_gse2dsl_z(self): + """Test ability to bypass coordinate system consistency check in gse2dsl transform """ + set_coords('basis_z', 'DSL') + result = dsl2gse('basis_z', 'basis_z_gse2dsl', probe='a', isgsetodsl=True, ignore_input_coord=True) + self.assertEqual(result, 1) + + def test_ignore_mismatch_dsl2gse_z(self): + """Test ability to bypass coordinate system consistency check in dsl2gse transform """ + set_coords('basis_z', 'GSE') + result = dsl2gse('basis_z', 'basis_z_gse2dsl', probe='a', ignore_input_coord=True) + self.assertEqual(result, 1) + +if __name__ == '__main__': + unittest.main() diff --git a/pyspedas/themis/tests/tests_lunar_cotrans.py b/pyspedas/themis/tests/tests_lunar_cotrans.py new file mode 100644 index 00000000..1b81024c --- /dev/null +++ b/pyspedas/themis/tests/tests_lunar_cotrans.py @@ -0,0 +1,279 @@ +"""Tests of gse2sse and sse2sel functions.""" +import unittest +from numpy.testing import assert_array_almost_equal_nulp, assert_array_max_ulp, assert_allclose +from copy import deepcopy +from pytplot import data_exists, get_data, store_data, cdf_to_tplot, del_data, tplot_restore, replace_metadata +from pytplot import get_coords,set_coords +from pyspedas.themis import gse2sse,sse2sel + + + +class LunCotransDataValidation(unittest.TestCase): + """ Compares cotrans results between Python and IDL """ + + @classmethod + def setUpClass(cls): + """ + IDL Data has to be downloaded to perform these tests + The SPEDAS script that creates the file: projects/themis/state/cotrans/thm_cotrans_validate.pro + """ + from pyspedas.utilities.download import download + from pyspedas.themis.config import CONFIG + + # Testing time range + cls.t = ['2008-03-23', '2008-03-28'] + + # Testing tolerance + cls.tol = 1e-10 + + # Download tplot files + remote_server = 'https://spedas.org/' + #remote_name = 'testfiles/thm_cotrans_validate.cdf' + remote_name = 'testfiles/thm_cotrans_validate.tplot' + datafile = download(remote_file=remote_name, + remote_path=remote_server, + local_path=CONFIG['local_data_dir'], + no_download=False) + if not datafile: + # Skip tests + raise unittest.SkipTest("Cannot download data validation file") + + # Load validation variables from the test file + del_data('*') + filename = datafile[0] + #cdf_to_tplot(filename) + tplot_restore(filename) + # pytplot.tplot_names() + # Input variables + #coord_set_coord('tha_state_pos_gse','gse') + #coord_set_coord('tha_state_vel_gse','gse') + cls.tha_state_pos_gse = get_data('tha_state_pos_gse') + cls.tha_state_vel_gse = get_data('tha_state_vel_gse') + #coord_set_coord('tha_fgs_gse','gse') + cls.tha_fgs_gse = get_data('tha_fgs_gse') + # GSE<->SSE results + #coord_set_coord('tha_state_pos_sse','sse') + #coord_set_coord('tha_state_vel_sse','sse') + cls.tha_state_pos_sse = get_data('tha_state_pos_sse') + cls.tha_state_vel_sse = get_data('tha_state_vel_sse') + #coord_set_coord('tha_state_pos_sse_rotate_only','sse') + #coord_set_coord('tha_state_vel_sse_rotate_only','sse') + cls.tha_state_pos_sse_rotate_only = get_data('tha_state_pos_sse_rotate_only') + cls.tha_state_vel_sse_rotate_only = get_data('tha_state_vel_sse_rotate_only') + #coord_set_coord('tha_fgs_sse','sse') + cls.tha_fgs_sse = get_data('tha_fgs_sse') + #coord_set_coord('tha_fgs_sel','sel') + cls.tha_fgs_sel = get_data('tha_fgs_sel') + + #coord_set_coord('tha_state_pos_gse_sse_gse','gse') + #coord_set_coord('tha_state_vel_gse_sse_gse','gse') + cls.tha_state_pos_gse_sse_gse = get_data('tha_state_pos_gse_sse_gse') + cls.tha_state_vel_gse_sse_gse = get_data('tha_state_vel_gse_sse_gse') + + #coord_set_coord('tha_state_pos_gse_sse_gse_rotate_only','gse') + #coord_set_coord('tha_state_vel_gse_sse_gse_rotate_only','gse') + cls.tha_state_pos_gse_sse_gse_rotate_only = get_data('tha_state_pos_gse_sse_gse_rotate_only') + cls.tha_state_vel_gse_sse_gse_rotate_only = get_data('tha_state_vel_gse_sse_gse_rotate_only') + + #coord_set_coord('tha_fgs_gse_sse_gse','gse') + cls.tha_fgs_gse_sse_gse = get_data('tha_fgs_gse_sse_gse') + + # SSE<->SSL results + #coord_set_coord('tha_state_pos_sel','sel') + cls.tha_state_pos_sel = get_data('tha_state_pos_sel') + + #coord_set_coord('tha_state_pos_gse_sel_sse','sse') + #coord_set_coord('tha_state_vel_gse_sel_sse','sse') + cls.tha_state_pos_gse_sel_sse = get_data('tha_state_pos_gse_sel_sse') + cls.sse_mat_cotrans = get_data('sse_mat_cotrans') + cls.sel_mat_cotrans = get_data('sel_mat_cotrans') + cls.sel_x_gei = get_data('sel_x_gei') + cls.sel_x_gse = get_data('sel_x_gse') + cls.sel_x_sse = get_data('sel_x_sse') + cls.sel_y_sse = get_data('sel_y_sse') + cls.sel_z_sse = get_data('sel_z_sse') + + # It is no longer necessary to load or pass support data when calling gse2sse and sse2sel + # autoload_support(varname='tha_state_pos_gse', slp=True) + + def setUp(self): + """ We need to clean tplot variables before each run""" + # del_data('*') + + def test_replace_metadata(self): + data = get_data('tha_state_pos_gse') + orig_meta = deepcopy(get_data('tha_state_pos_gse',metadata=True)) + orig_coord = get_coords('tha_state_pos_gse') + self.assertEqual(orig_coord.lower(), 'gse') + store_data('newvar',data={'x':data[0],'y':data[1]}) + replace_metadata('newvar',orig_meta) + self.assertEqual(get_coords('newvar').lower(),'gse') + orig_meta['data_att']['coord_sys'] = 'goofy' # won't affect tha_state_pos_gse, should not affect newvar either + self.assertEqual(get_coords('newvar').lower(),'gse') + self.assertEqual(get_coords('tha_state_pos_gse').lower(),'gse') + + def test_gse2sse_pos(self): + """ Validate gse2sse position transform """ + result = gse2sse('tha_state_pos_gse', 'tha_state_pos_sse', variable_type='pos') + self.assertEqual(result,1) + py_sse_mat_cotrans = get_data('sse_mat_cotrans') + assert_allclose(py_sse_mat_cotrans.y, self.sse_mat_cotrans.y, atol=1.0e-06) + pos_sse = get_data('tha_state_pos_sse') + pos_meta = get_data('tha_state_pos_sse',metadata=True) + self.assertEqual(pos_meta['data_att']['units'],'km') + assert_allclose(pos_sse.y, self.tha_state_pos_sse.y, atol=0.1) + self.assertEqual(get_coords('tha_state_pos_sse').lower(),'sse') + + def test_gse2sse_pos_rotate_only(self): + """ Validate gse2sse position transform """ + result = gse2sse('tha_state_pos_gse', 'tha_state_pos_sse_rotate_only', variable_type='pos',rotation_only=True) + self.assertEqual(result,1) + pos_sse = get_data('tha_state_pos_sse_rotate_only') + pos_meta = get_data('tha_state_pos_sse',metadata=True) + self.assertEqual(pos_meta['data_att']['units'],'km') + assert_allclose(pos_sse.y, self.tha_state_pos_sse_rotate_only.y, atol=0.1) + self.assertEqual(get_coords('tha_state_pos_sse_rotate_only').lower(),'sse') + + def test_gse2sse_vel(self): + """ Validate gse2sse velocity transform """ + result = gse2sse('tha_state_vel_gse', 'tha_state_vel_sse',variable_type='vel') + self.assertEqual(result,1) + vel_sse = get_data('tha_state_vel_sse') + vel_meta = get_data('tha_state_vel_sse',metadata=True) + self.assertEqual(vel_meta['data_att']['units'],'km/s') + assert_allclose(vel_sse.y, self.tha_state_vel_sse.y, atol=1.0e-03) + self.assertEqual(get_coords('tha_state_vel_sse').lower(),'sse') + + def test_gse2sse_vel_rotate_only(self): + """ Validate gse2sse position transform """ + result = gse2sse('tha_state_vel_gse', 'tha_state_vel_sse_rotate_only', variable_type='vel',rotation_only=True) + self.assertEqual(result,1) + vel_sse = get_data('tha_state_vel_sse_rotate_only') + vel_meta = get_data('tha_state_vel_sse',metadata=True) + self.assertEqual(vel_meta['data_att']['units'],'km/s') + assert_allclose(vel_sse.y, self.tha_state_vel_sse_rotate_only.y, atol=1.0e-03) + self.assertEqual(get_coords('tha_state_vel_sse_rotate_only').lower(),'sse') + + def test_gse2sse_field(self): + """ Validate gse2sse field transform """ + result = gse2sse('tha_fgs_gse', 'tha_fgs_sse') + self.assertEqual(result, 1) + fgs_sse = get_data('tha_fgs_sse') + fgs_meta = get_data('tha_fgs_sse',metadata=True) + self.assertEqual(fgs_meta['data_att']['units'],'nT') + assert_allclose(fgs_sse.y, self.tha_fgs_sse.y, atol=1.0e-02) + self.assertEqual(get_coords('tha_fgs_sse').lower(), 'sse') + + def test_sse2gse_pos(self): + """ Validate sse2gse position transform """ + store_data('tha_state_pos_sse',data={'x':self.tha_state_pos_sse.times, 'y':self.tha_state_pos_sse.y}) + set_coords('tha_state_pos_sse','sse') + before_meta = get_data('tha_state_pos_sse',metadata=True) + before_meta['data_att']['units'] = 'km' + result = gse2sse('tha_state_pos_sse', 'tha_state_pos_gse_sse_gse',isssetogse=True, + variable_type='pos') + self.assertEqual(result,1) + pos_gse = get_data('tha_state_pos_gse_sse_gse') + pos_meta = get_data('tha_state_pos_gse_sse_gse',metadata=True) + self.assertEqual(pos_meta['data_att']['units'],'km') + assert_allclose(pos_gse.y, self.tha_state_pos_gse_sse_gse.y, atol=0.1) + self.assertEqual(get_coords('tha_state_pos_gse_sse_gse').lower(),'gse') + + def test_sse2gse_pos_rotate_only(self): + """ Validate sse2gse position transform """ + store_data('tha_state_pos_sse_rotate_only', + data={'x':self.tha_state_pos_sse_rotate_only.times, 'y':self.tha_state_pos_sse_rotate_only.y}) + set_coords('tha_state_pos_sse_rotate_only','sse') + result = gse2sse('tha_state_pos_sse_rotate_only', 'tha_state_pos_gse_sse_gse_rotation_only',isssetogse=True, + variable_type='pos', rotation_only=True) + self.assertEqual(result,1) + pos_gse = get_data('tha_state_pos_gse_sse_gse_rotation_only') + assert_allclose(pos_gse.y, self.tha_state_pos_gse_sse_gse_rotate_only.y, atol=0.1) + self.assertEqual(get_coords('tha_state_pos_gse_sse_gse_rotate_only').lower(),'gse') + + def test_sse2gse_vel(self): + """ Validate sse2gse velocity transform """ + result = gse2sse('tha_state_vel_sse', 'tha_state_vel_gse_sse_gse',isssetogse=True, + variable_type='vel') + self.assertEqual(result,1) + vel_gse = get_data('tha_state_vel_gse_sse_gse') + assert_allclose(vel_gse.y, self.tha_state_vel_gse_sse_gse.y, atol=1.0e-02) + self.assertEqual(get_coords('tha_state_vel_gse_sse_gse').lower(),'gse') + + def test_sse2gse_vel_rotate_only(self): + """ Validate sse2gse position transform """ + store_data('tha_state_vel_sse_rotate_only', + data={'x':self.tha_state_vel_sse_rotate_only.times, 'y':self.tha_state_vel_sse_rotate_only.y}) + set_coords('tha_state_vel_sse_rotate_only','sse') + result = gse2sse('tha_state_vel_sse_rotate_only', 'tha_state_vel_gse_sse_gse_rotation_only',isssetogse=True, + variable_type='pos', rotation_only=True) + self.assertEqual(result,1) + vel_gse = get_data('tha_state_vel_gse_sse_gse_rotation_only') + assert_allclose(vel_gse.y, self.tha_state_vel_gse_sse_gse_rotate_only.y, atol=1.0e-03) + self.assertEqual(get_coords('tha_state_vel_gse_sse_gse_rotate_only').lower(),'gse') + + def test_sse2gse_field(self): + """ Validate gse2sse field transform """ + result = gse2sse('tha_fgs_sse','tha_fgs_gse_sse_gse',isssetogse=True) + self.assertEqual(result, 1) + fgs_gse = get_data('tha_fgs_gse_sse_gse') + assert_allclose(fgs_gse.y, self.tha_fgs_gse_sse_gse.y, atol=1.0e-02) + self.assertEqual(get_coords('tha_fgs_gse_sse_gse').lower(), 'gse') + + def test_sse2sel_pos(self): + """ Validate sse2sel position transform """ + result = sse2sel('tha_state_pos_sse','tha_state_pos_sel') + self.assertEqual(result,1) + py_sel_x_gse = get_data('slp_lun_att_x_gse') + assert_allclose(self.sel_x_gse.y,py_sel_x_gse.y,atol=1.0e-06) + py_sel_x_sse = get_data('sel_x_sse') + assert_allclose(self.sel_x_sse.y,py_sel_x_sse.y,atol=1.0e-06) + py_sel_y_sse = get_data('sel_y_sse') + assert_allclose(self.sel_y_sse.y,py_sel_y_sse.y,atol=1.0e-06) + py_sel_z_sse = get_data('sel_z_sse') + assert_allclose(self.sel_z_sse.y,py_sel_z_sse.y,atol=1.0e-06) + py_sel_mat_cotrans = get_data('sel_mat_cotrans') + assert_allclose(py_sel_mat_cotrans.y, self.sel_mat_cotrans.y, atol=1.0e-06) + pos_sel = get_data('tha_state_pos_sel') + pos_meta = get_data('tha_state_pos_sel',metadata=True) + self.assertEqual(pos_meta['data_att']['units'],'km') + assert_allclose(pos_sel.y, self.tha_state_pos_sel.y, atol=0.1) + self.assertEqual(get_coords('tha_state_pos_sel').lower(),'sel') + + def test_sse2sel_fgs(self): + """ Validate sse2sel field transform """ + result = sse2sel('tha_fgs_sse', 'tha_fgs_sel') + self.assertEqual(result,1) + fgs_sel = get_data('tha_fgs_sel') + assert_allclose(fgs_sel.y, self.tha_fgs_sel.y, atol=.005) + self.assertEqual(get_coords('tha_fgs_sel').lower(),'sel') + + def test_sel2sse_pos(self): + """ Validate sel2sse position transform """ + # Restore original baseline input tplot variable + store_data('tha_state_pos_sel',data={'x':self.tha_state_pos_sel.times, 'y':self.tha_state_pos_sel.y}) + set_coords('tha_state_pos_sel','sel') + + result = sse2sel('tha_state_pos_sel', 'tha_state_pos_sel_sse', isseltosse=True) + self.assertEqual(result,1) + pos_sse = get_data('tha_state_pos_gse_sel_sse') + assert_allclose(pos_sse.y, self.tha_state_pos_gse_sel_sse.y, atol=0.1) + self.assertEqual(get_coords('tha_state_pos_gse_sel_sse').lower(),'sse') + + def test_sel2sse_field(self): + """ Validate sel2sse field transform """ + # Restore original baseline input tplot variable + store_data('tha_fgs_sel',data={'x':self.tha_fgs_sel.times, 'y':self.tha_fgs_sel.y}) + set_coords('tha_fgs_sel','sel') + md_before = get_data('tha_fgs_sel',metadata=True) + md_before['data_att']['units'] = 'nT' + result = sse2sel('tha_fgs_sel', 'tha_fgs_sel_sse', isseltosse=True) + self.assertEqual(result,1) + fgs_sse = get_data('tha_fgs_sel_sse') + fgs_meta = get_data('tha_fgs_sel_sse',metadata=True) + self.assertEqual(fgs_meta['data_att']['units'],'nT') + assert_allclose(fgs_sse.y, self.tha_fgs_sse.y, atol=0.1) + self.assertEqual(get_coords('tha_fgs_sel_sse').lower(),'sse') + +if __name__ == '__main__': + unittest.main() diff --git a/pyspedas/themis/tests/tests_spinmodel.py b/pyspedas/themis/tests/tests_spinmodel.py new file mode 100644 index 00000000..91723168 --- /dev/null +++ b/pyspedas/themis/tests/tests_spinmodel.py @@ -0,0 +1,178 @@ +""" Tests of spinmodel construction and interpolation """ +import unittest +from numpy.testing import assert_array_almost_equal_nulp, assert_array_max_ulp, assert_allclose +from pytplot import get_data, store_data, time_string, del_data, cdf_to_tplot +from pyspedas.themis import state, get_spinmodel + + + +class SpinmodelDataValidation(unittest.TestCase): + """ + Compare spin models and interpolation results generated by IDL and Python. + + The corresponding IDL script takes a time range, probe, and eclipse correction level, + then creates a tplot variable containing the test parameters. IDL builds a spin model by calling + thm_load_state for the given probe and time interval, and dumps all the segment parameters to tplot + variables. Then a spin model interpolation routine is called for a set of timestamps, and all the + interpolated parameters are dumped to tplot variables. The tplot outputs are saved in a cdf file or a + tplot save file. + + On the python side, the validation file is read to get the test parameters. The spin models are + created with a call to themis.state(), then the test timestamps are passed to the spinmodel interpolation + routine. The Python and IDL tplot variables are each given their own prefix. + + After loading the necessary data, the various tests in this file compare the Python and IDL values + for each of the spinmodel segment parameters, and interpolation results. + """ + + @classmethod + def setUpClass(cls): + """ + IDL Data has to be downloaded to perform these tests + The SPEDAS script that creates data file: projects/themis/spin/spinmodel_python_test.pro + """ + from pyspedas.utilities.download import download + from pyspedas.themis.config import CONFIG + + # Download tplot files + remote_server = 'https://spedas.org/' + # remote_name = 'testfiles/thm_cotrans_validate.cdf' + remote_name = 'testfiles/tha_validate_spinmodel.cdf' + datafile = download(remote_file=remote_name, + remote_path=remote_server, + local_path=CONFIG['local_data_dir'], + no_download=False) + if not datafile: + # Skip tests + raise unittest.SkipTest("Cannot download data validation file") + + # Load validation variables from the test file + del_data('*') + filename = datafile[0] + cdf_to_tplot(filename) + # pytplot.tplot_restore(filename) + t_dummy, trange = get_data('parm_trange') + t_dummy, probe_idx = get_data('parm_probe') + t_dummy, correction_level = get_data('parm_correction_level') + #print(trange) + #print(time_string(trange)) + #print(probe_idx) + int_idx = int(probe_idx[0]) + probes = ['a', 'b', 'c', 'd', 'e'] + int_corr_level = int(correction_level[0]) + probe = probes[int_idx] + #print(probe) + #print(int_corr_level) + thm_data = state(trange=trange, probe=probe, get_support_data=True) + cls.model = get_spinmodel(probe, int_corr_level) + cls.model.make_tplot_vars('py_seg_') + #pytplot.tplot_names() + dummy_t, tst_times = get_data('interp_times') + res = cls.model.interp_t(tst_times) + store_data('py_spinphase', data={'x': tst_times, 'y': res.spinphase}) + store_data('py_spinper', data={'x': tst_times, 'y': res.spinper}) + store_data('py_spincount', data={'x': tst_times, 'y': res.spincount}) + store_data('py_t_last', data={'x': tst_times, 'y': res.t_last}) + store_data('py_eclipse_delta_phi', data={'x': tst_times, 'y': res.eclipse_delta_phi}) + store_data('py_segflags', data={'x': tst_times, 'y': res.segflags}) + + def setUp(self): + """ We need to clean tplot variables before each run""" + # pytplot.del_data('*') + + def test_seg_t1(self): + pydata = get_data('py_seg_t1') + idldata = get_data('seg_t1') + assert_allclose(pydata.y, idldata.y, atol=1.0e-06) + + def test_seg_t2(self): + pydata = get_data('py_seg_t2') + idldata = get_data('seg_t2') + assert_allclose(pydata.y, idldata.y, atol=1.0e-06) + + def test_seg_c1(self): + pydata = get_data('py_seg_c1') + idldata = get_data('seg_c1') + assert_allclose(pydata.y, idldata.y, atol=1.0e-06) + + def test_seg_c2(self): + pydata = get_data('py_seg_c2') + idldata = get_data('seg_c2') + assert_allclose(pydata.y, idldata.y, atol=1.0e-06) + + def test_seg_b(self): + pydata = get_data('py_seg_b') + idldata = get_data('seg_b') + assert_allclose(pydata.y, idldata.y, rtol=1.0e-05) + + def test_seg_c(self): + pydata = get_data('py_seg_c') + idldata = get_data('seg_c') + assert_allclose(pydata.y, idldata.y, rtol=1.0e-06) + + def test_seg_npts(self): + pydata = get_data('py_seg_npts') + idldata = get_data('seg_npts') + assert_allclose(pydata.y, idldata.y, atol=1.0e-06) + + def test_seg_maxgap(self): + pydata = get_data('py_seg_maxgap') + idldata = get_data('seg_maxgap') + assert_allclose(pydata.y, idldata.y, atol=1.0e-06) + + def test_seg_phaserr(self): + pydata = get_data('py_seg_phaserr') + idldata = get_data('seg_phaserr') + assert_allclose(pydata.y, idldata.y, atol=1.0e-06) + + def test_seg_idpu_spinper(self): + pydata = get_data('py_seg_idpu_spinper') + idldata = get_data('seg_idpu_spinper') + assert_allclose(pydata.y, idldata.y, atol=1.0e-06) + + def test_seg_initial_delta_phi(self): + pydata = get_data('py_seg_initial_delta_phi') + idldata = get_data('seg_initial_delta_phi') + assert_allclose(pydata.y, idldata.y, atol=1.0e-06) + + def test_seg_segflags(self): + pydata = get_data('py_seg_segflags') + idldata = get_data('seg_segflags') + assert_allclose(pydata.y, idldata.y, atol=1.0e-06) + + def test_interp_spinphase(self): + pydata = get_data('py_spinphase') + idldata = get_data('interp_spinphase') + assert_allclose(pydata.y, idldata.y, atol=1.0e-04) + + def test_interp_spinper(self): + pydata = get_data('py_spinper') + idldata = get_data('interp_spinper') + assert_allclose(pydata.y, idldata.y, atol=1.0e-06) + + def test_interp_spincount(self): + pydata = get_data('py_spincount') + idldata = get_data('interp_spincount') + assert_allclose(pydata.y, idldata.y, atol=1.0e-06) + + def test_interp_segflags(self): + pydata = get_data('py_segflags') + idldata = get_data('interp_segflags') + assert_allclose(pydata.y, idldata.y, atol=1.0e-06) + + def test_interp_eclipse_delta_phi(self): + pydata = get_data('py_eclipse_delta_phi') + idldata = get_data('interp_eclipse_delta_phi') + assert_allclose(pydata.y, idldata.y, atol=1.0e-06) + + def test_timerange(self): + trange=self.model.get_timerange() + print(time_string(trange[0]),time_string(trange[1])) + + def test_eclipse_times(self): + start_times,end_times=self.model.get_eclipse_times() + for i in range(len(start_times)): + print(time_string(start_times[i]),time_string(end_times[i])) + +if __name__ == '__main__': + unittest.main() diff --git a/pyspedas/themis/tests/tests_state.py b/pyspedas/themis/tests/tests_state.py new file mode 100644 index 00000000..50592680 --- /dev/null +++ b/pyspedas/themis/tests/tests_state.py @@ -0,0 +1,98 @@ +import logging +import unittest +from pyspedas.themis import state +from pytplot import data_exists, get_data, del_data, tplot_restore +from numpy.testing import assert_allclose + +class StateDataValidation(unittest.TestCase): + """ Tests creation of support variables in themis.state() """ + + @classmethod + def setUpClass(cls): + """ + IDL Data has to be downloaded to perform these tests + The IDL script that creates data file: projects/themis/state/thm_state_validate.pro + """ + from pyspedas.utilities.download import download + from pyspedas.themis.config import CONFIG + + # Testing time range + cls.t = ['2008-03-23', '2008-03-28'] + + + # Download validation file + remote_server = 'https://spedas.org/' + remote_name = 'testfiles/thm_state_validate.tplot' + datafile = download(remote_file=remote_name, + remote_path=remote_server, + local_path=CONFIG['local_data_dir'], + no_download=False) + if not datafile: + # Skip tests + raise unittest.SkipTest("Cannot download data validation file") + + # Load validation variables from the test file + del_data('*') + filename = datafile[0] + tplot_restore(filename) + #pytplot.tplot_names() + cls.tha_pos = get_data('tha_state_pos') + cls.tha_vel = get_data('tha_state_vel') + cls.tha_spinras = get_data('tha_state_spinras') + cls.tha_spindec = get_data('tha_state_spindec') + cls.tha_spinras_correction = get_data('tha_state_spinras_correction') + cls.tha_spindec_correction = get_data('tha_state_spindec_correction') + cls.tha_spinras_corrected = get_data('tha_state_spinras_corrected') + cls.tha_spindec_corrected = get_data('tha_state_spindec_corrected') + + # Load with pyspedas + state(probe='a',trange=cls.t,get_support_data=True) + + def setUp(self): + """ We need to clean tplot variables before each run""" + # del_data('*') + + def test_state_spinras(self): + """Validate state variables """ + my_data = get_data('tha_state_spinras') + assert_allclose(my_data.y,self.tha_spinras.y,rtol=1.0e-06) + + def test_state_spindec(self): + """Validate state variables """ + my_data = get_data('tha_state_spindec') + assert_allclose(my_data.y,self.tha_spindec.y,rtol=1.0e-06) + + def test_state_spinras_correction(self): + """Validate state variables """ + my_data = get_data('tha_state_spinras_correction') + assert_allclose(my_data.y,self.tha_spinras_correction.y,rtol=1.0e-06) + + def test_state_spindec_correction(self): + """Validate state variables """ + my_data = get_data('tha_state_spindec_correction') + assert_allclose(my_data.y,self.tha_spindec_correction.y,rtol=1.0e-06) + + def test_state_spinras_corrected(self): + """Validate state variables """ + my_data = get_data('tha_state_spinras_corrected') + assert_allclose(my_data.y,self.tha_spinras_corrected.y,rtol=1.0e-06) + + def test_state_spindec_corrected(self): + """Validate state variables """ + my_data = get_data('tha_state_spindec_corrected') + assert_allclose(my_data.y,self.tha_spindec_corrected.y,rtol=1.0e-06) + + def test_state_reload_no_v03(self): + # Test overwriting of spin axis correction variables if data is loaded with V03 corrections, then other + # data loaded that doesn't have the corrections (prevents dangling correction variables) + ts1 = ['2007-03-23','2007-03-24'] + ts2 = ['2023-01-01','2023-01-02'] + state(trange=ts1,probe='a',get_support_data=True) # V03 corrections exist + self.assertTrue(data_exists('tha_spinras_correction')) + self.assertTrue(data_exists('tha_spindec_correction')) + state(trange=ts2,probe='a',get_support_data=True) # V03 corrections do not exist + self.assertFalse(data_exists('tha_spinras_correction')) + self.assertFalse(data_exists('tha_spindec_correction')) + +if __name__ == '__main__': + unittest.main() diff --git a/pyspedas/themis/tests/tests_tplot_time.py b/pyspedas/themis/tests/tests_tplot_time.py new file mode 100644 index 00000000..f367871c --- /dev/null +++ b/pyspedas/themis/tests/tests_tplot_time.py @@ -0,0 +1,117 @@ +import logging +import unittest +import pyspedas +import pytplot +from numpy.testing import assert_allclose + +class TplotTimeValidation(unittest.TestCase): + """ Tests creation of support variables in themis.state() """ + + @classmethod + def setUpClass(cls): + pass + + def setUp(self): + pass + """ We need to clean tplot variables before each run""" + + + def test_timespan(self): + """Test pytplot.timespan as used in ERG notebook""" + from pytplot import tplot,timespan + from pyspedas.erg import mgf + vars = mgf(trange=['2017-03-27', '2017-03-28']) # load MGF Lv.2 8-s data for 0-24 UT on Mar. 27, 2017. + tplot('erg_mgf_l2_mag_8sec_sm') + timespan('2017-03-27 09:00:00', 6, keyword='hours') + tplot(['erg_mgf_l2_mag_8sec_sm', 'erg_mgf_l2_mag_8sec_gsm']) + + def test_subsec_timespan(self): + """Test pytplot.timespan as used in ERG notebook""" + from pytplot import tplot,timespan + from pyspedas.themis import fgm + vars = fgm(probe='a',level='l2',trange=['2007-03-23', '2007-03-24']) + tplot('tha_fgl_dsl') # full plot + timespan('2007-03-23/14:00',0.9,"seconds") + tplot('tha_fgl_dsl') # short time interval + + def test_subsec_tlimit(self): + """Test pytplot.timespan as used in ERG notebook""" + from pytplot import tplot,tlimit + from pyspedas.themis import fgm + vars = fgm(probe='a',level='l2',trange=['2007-03-23', '2007-03-24']) + tplot('tha_fgl_dsl') # full plot + tlimit(['2007-03-23/14:00','2007-03-23/14:00:00.9']) + tplot('tha_fgl_dsl') # short time interval + + def test_timebar(self): + """Test pytplot.timespan as used in ERG notebook""" + from pytplot import tplot,tlimit, timebar + from pyspedas.themis import fgm + vars = fgm(probe='a',level='l2',trange=['2007-03-23', '2007-03-24']) + tplot('tha_fgl_dsl') # full plot + # Test various timebar formats + # Standard format + timebar('2007-03-23 14:00:00') + tplot('tha_fgl_dsl') + # Slash between date and time + timebar('2007-03-23/13:00:00') + tplot('tha_fgl_dsl') + # ISO8601 + timebar('20070323T1330') + tplot('tha_fgl_dsl') + tlimit(['2007-03-23/14:00', '2007-03-23/14:00:00.9']) + # Subsecond precision + timebar('2007-03-23/14:00:00.5') + tplot('tha_fgl_dsl') + + def test_tlimit_full_arg(self): + """Test pytplot.timespan as used in ERG notebook""" + from pytplot import tplot,tlimit + from pyspedas.themis import fgm + vars = fgm(probe='a',level='l2',trange=['2007-03-23', '2007-03-24']) + tplot('tha_fgl_dsl') # full plot + tlimit(['2007-03-23/14:00','2007-03-23/14:00:00.9']) + tplot('tha_fgl_dsl') # short time interval + tlimit('full') + tplot('tha_fgl_dsl') # back to full interval + + def test_tlimit_full_flag(self): + """Test pytplot.timespan as used in ERG notebook""" + from pytplot import tplot,tlimit + from pyspedas.themis import fgm + vars = fgm(probe='a',level='l2',trange=['2007-03-23', '2007-03-24']) + tplot('tha_fgl_dsl') # full plot + tlimit(['2007-03-23/14:00','2007-03-23/14:00:00.9']) + tplot('tha_fgl_dsl') # short time interval + tlimit(full=True) + tplot('tha_fgl_dsl') # back to full interval + + def test_tlimit_last_arg(self): + """Test pytplot.timespan as used in ERG notebook""" + from pytplot import tplot,tlimit + from pyspedas.themis import fgm + vars = fgm(probe='a',level='l2',trange=['2007-03-23', '2007-03-24']) + tplot('tha_fgl_dsl') # full plot + tlimit(['2007-03-23/14:00','2007-03-23/15:00:00']) + tplot('tha_fgl_dsl') # time interval 1 14:00 to 15:00 + tlimit(['2007-03-23/12:00','2007-03-23/13:00:00']) + tplot('tha_fgl_dsl') # time interval 2 12:00 to 13:00 + tlimit('last') + tplot('tha_fgl_dsl') # back to time interval 1, 14:00 to 15:00 + + def test_tlimit_last_flag(self): + """Test pytplot.timespan as used in ERG notebook""" + from pytplot import tplot,tlimit + from pyspedas.themis import fgm + vars = fgm(probe='a',level='l2',trange=['2007-03-23', '2007-03-24']) + tplot('tha_fgl_dsl') # full plot + tlimit(['2007-03-23/14:00','2007-03-23/15:00:00']) + tplot('tha_fgl_dsl') # time interval 1 14:00 to 15:00 + tlimit(['2007-03-23/12:00','2007-03-23/13:00:00']) + tplot('tha_fgl_dsl') # time interval 2 12:00 to 13:00 + tlimit(last=True) + tplot('tha_fgl_dsl') # back to time interval 1, 14:00 to 15:00 + + +if __name__ == '__main__': + unittest.main() diff --git a/pyspedas/themis/tests/validation/dsl2gse.py b/pyspedas/themis/tests/validation/dsl2gse.py index 0d28553c..6a9730ed 100644 --- a/pyspedas/themis/tests/validation/dsl2gse.py +++ b/pyspedas/themis/tests/validation/dsl2gse.py @@ -13,7 +13,7 @@ thm_vars = pyspedas.themis.fgm(probe='a', level='l2') thm_vars = pyspedas.themis.state(probe='a', get_support_data=True, varnames=['tha_spinras', 'tha_spindec']) -dsl2gse('tha_fgs_dsl', 'tha_spinras', 'tha_spindec', 'tha_fgs_gse_cotrans') +dsl2gse('tha_fgs_dsl', 'tha_fgs_gse_cotrans') data = get_data('tha_fgs_gse_cotrans') diff --git a/pyspedas/themis/tests/validation/fgm.py b/pyspedas/themis/tests/validation/fgm.py deleted file mode 100644 index f1c8dfae..00000000 --- a/pyspedas/themis/tests/validation/fgm.py +++ /dev/null @@ -1,25 +0,0 @@ -''' - -This script loads and prints FGM data at several data points. - -This is meant to be called from the IDL test suite for comparison with the data loaded via IDL SPEDAS - -''' - - -import pyspedas -from pytplot import get_data - -thm_vars = pyspedas.themis.fgm(probe='c', level='l2') - -data = get_data('thc_fgs_dsl') - -print(data[0][0:10].round(6).tolist()) - -print(data[1][1000].tolist()) - -print(data[1][5000].tolist()) - -print(data[1][10000].tolist()) - -print(data[1][20000].tolist()) diff --git a/pyspedas/twins/__init__.py b/pyspedas/twins/__init__.py index b3346846..8bf949c5 100644 --- a/pyspedas/twins/__init__.py +++ b/pyspedas/twins/__init__.py @@ -1,5 +1,6 @@ - from .load import load +from pyspedas.utilities.datasets import find_datasets + def ephemeris(trange=['2018-11-5', '2018-11-6'], probe='1', @@ -183,3 +184,7 @@ def imager(trange=['2018-11-5', '2018-11-6'], """ return load(instrument='imager', trange=trange, probe=probe, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + +def datasets(instrument=None, label=True): + return find_datasets(mission='TWINS', instrument=instrument, label=label) diff --git a/pyspedas/twins/load.py b/pyspedas/twins/load.py index 29594f13..18d7a3c7 100644 --- a/pyspedas/twins/load.py +++ b/pyspedas/twins/load.py @@ -1,6 +1,6 @@ from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import cdf_to_tplot from .config import CONFIG diff --git a/pyspedas/twins/tests/tests.py b/pyspedas/twins/tests/tests.py index 22abfde5..f02c8a4b 100644 --- a/pyspedas/twins/tests/tests.py +++ b/pyspedas/twins/tests/tests.py @@ -1,10 +1,9 @@ - import os import unittest -from pyspedas.utilities.data_exists import data_exists - +from pytplot import data_exists import pyspedas + class LoadTestCases(unittest.TestCase): def test_downloadonly(self): files = pyspedas.twins.imager(downloadonly=True) @@ -13,6 +12,8 @@ def test_downloadonly(self): def test_load_img_data(self): img_vars = pyspedas.twins.imager() self.assertTrue(data_exists('smooth_image_val')) + img_vars = pyspedas.twins.imager(notplot=True) + self.assertTrue('smooth_image_val' in img_vars) def test_load_lad_data(self): lad_vars = pyspedas.twins.lad(time_clip=True) @@ -23,5 +24,6 @@ def test_load_ephem_data(self): ephemeris_vars = pyspedas.twins.ephemeris() self.assertTrue(data_exists('FLTGEO')) + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/ulysses/__init__.py b/pyspedas/ulysses/__init__.py index 5061a9a1..72943932 100644 --- a/pyspedas/ulysses/__init__.py +++ b/pyspedas/ulysses/__init__.py @@ -1,5 +1,6 @@ - from .load import load +from pyspedas.utilities.datasets import find_datasets + def vhm(trange=['2009-01-01', '2009-01-02'], datatype='1min', @@ -504,3 +505,7 @@ def grb(trange=['2003-01-01', '2003-01-02'], """ return load(instrument='grb', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + +def datasets(instrument=None, label=True): + return find_datasets(mission='Ulysses', instrument=instrument, label=label) diff --git a/pyspedas/ulysses/load.py b/pyspedas/ulysses/load.py index b5cc74e9..d14978a7 100644 --- a/pyspedas/ulysses/load.py +++ b/pyspedas/ulysses/load.py @@ -1,6 +1,6 @@ from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import cdf_to_tplot from .config import CONFIG diff --git a/pyspedas/ulysses/tests/tests.py b/pyspedas/ulysses/tests/tests.py index 3ee943df..baff314d 100644 --- a/pyspedas/ulysses/tests/tests.py +++ b/pyspedas/ulysses/tests/tests.py @@ -1,20 +1,32 @@ - import os import unittest -from pyspedas.utilities.data_exists import data_exists - +from pytplot import data_exists import pyspedas + class LoadTestCases(unittest.TestCase): + def test_load_cospin_data(self): + data = pyspedas.ulysses.cospin() + self.assertTrue(data_exists('Protons')) + self.assertTrue(data_exists('Electrons')) + self.assertTrue(data_exists('HiE_protons')) + self.assertTrue(data_exists('Z_ge_3')) + def test_load_vhm_data(self): data = pyspedas.ulysses.vhm() self.assertTrue(data_exists('B_MAG')) + data = pyspedas.ulysses.vhm(notplot=True) + self.assertTrue('B_MAG' in data) def test_load_swoops_data(self): data = pyspedas.ulysses.swoops() self.assertTrue(data_exists('Density')) self.assertTrue(data_exists('Temperature')) self.assertTrue(data_exists('Velocity')) + data = pyspedas.ulysses.swoops(datatype='proton-moments_swoops') + self.assertTrue(data_exists('Tpar')) + self.assertTrue(data_exists('Tper')) + self.assertTrue(data_exists('dens')) def test_load_swics_data(self): data = pyspedas.ulysses.swics() @@ -36,5 +48,6 @@ def test_downloadonly(self): files = pyspedas.ulysses.urap(downloadonly=True, trange=['2003-01-01', '2003-01-02']) self.assertTrue(os.path.exists(files[0])) + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/pyspedas/utilities/dailynames.py b/pyspedas/utilities/dailynames.py index e7856152..309dd335 100644 --- a/pyspedas/utilities/dailynames.py +++ b/pyspedas/utilities/dailynames.py @@ -1,11 +1,18 @@ - - +import logging import numpy as np from pyspedas import time_string, time_double -from datetime import datetime - -def dailynames(directory='', trange=None, res=24*3600., hour_res=False, file_format='%Y%m%d', prefix='', suffix=''): - ''' +from datetime import datetime, timezone + + +def dailynames(directory='', + trange=None, + res=24*3600., + hour_res=False, + file_format='%Y%m%d', + prefix='', + suffix='', + return_times=False): + """ Creates a list of file names using a time range, resoution and file format Based on Davin Larson's file_dailynames in IDL SPEDAS @@ -32,18 +39,19 @@ def dailynames(directory='', trange=None, res=24*3600., hour_res=False, file_for Returns: List containing filenames - ''' + """ if trange is None: - print('No trange specified') + logging.error('No trange specified') return - if hour_res == True: + if hour_res: res = 3600. file_format = '%Y%m%d%H' # allows the user to pass in trange as list of datetime objects if type(trange[0]) == datetime and type(trange[1]) == datetime: - trange = [time_string(trange[0].timestamp()), time_string(trange[1].timestamp())] + trange = [time_string(trange[0].replace(tzinfo=timezone.utc).timestamp()), + time_string(trange[1].replace(tzinfo=timezone.utc).timestamp())] tr = [trange[0], trange[1]] @@ -62,6 +70,9 @@ def dailynames(directory='', trange=None, res=24*3600., hour_res=False, file_for times = [(float(num)+mmtr[0])*res for num in range(n)] + if return_times: + return times + dates = [] files = [] @@ -72,4 +83,4 @@ def dailynames(directory='', trange=None, res=24*3600., hour_res=False, file_for for date in dates: files.append(directory + prefix + date + suffix) - return files \ No newline at end of file + return files diff --git a/pyspedas/utilities/data_exists.py b/pyspedas/utilities/data_exists.py index b3b2089e..f50983b8 100644 --- a/pyspedas/utilities/data_exists.py +++ b/pyspedas/utilities/data_exists.py @@ -1,14 +1,10 @@ - -import numpy as np import pytplot +import logging def data_exists(tvar): """ Checks if a tplot variable exists """ - if tvar in pytplot.data_quants.keys(): - data = pytplot.get_data(tvar) - # multi-dimensional data returns a tuple, NRV variables return an ndarray - if isinstance(data, tuple) or isinstance(data, np.ndarray) or isinstance(data, str) or isinstance(data, list): - return True - return False + logging.info("data_exists has been moved to the pytplot package. Please update your imports!") + logging.info("This version will eventually be removed.") + return pytplot.data_exists(tvar=tvar) diff --git a/pyspedas/utilities/datasets.py b/pyspedas/utilities/datasets.py new file mode 100644 index 00000000..841366b0 --- /dev/null +++ b/pyspedas/utilities/datasets.py @@ -0,0 +1,14 @@ +from cdasws import CdasWs + + +def find_datasets(mission=None, instrument=None, label=False): + cdas = CdasWs() + datasets = cdas.get_datasets(observatoryGroup=mission) + for index, dataset in enumerate(datasets): + if instrument is not None: + if instrument.upper() not in dataset['Id']: + continue + if label: + print(dataset['Id'] + ': ' + dataset['Label']) + else: + print(dataset['Id']) diff --git a/pyspedas/utilities/download.py b/pyspedas/utilities/download.py index ba34581f..d6c37687 100644 --- a/pyspedas/utilities/download.py +++ b/pyspedas/utilities/download.py @@ -11,6 +11,8 @@ from shutil import copyfileobj, copy from tempfile import NamedTemporaryFile from html.parser import HTMLParser +from netCDF4 import Dataset +from cdflib import CDF # the following is used to parse the links from an HTML index file @@ -27,7 +29,40 @@ def handle_starttag(self, tag, attrs): self.links.append((link)) except AttributeError: self.links = [(link)] - + + +def check_downloaded_file(filename): + """ + Check if a file exists and if it can be opened (for CDF and netCDF files). + + If the file exists but it is not CDF or netCDF, it returns True without trying to open the file. + """ + result = False + fpath = Path(filename) + if fpath.is_file() and len(filename) > 3: + if filename[-4:] == '.cdf': + # Try to open the cdf file + try: + cdf_file = CDF(filename) + result = True + except: + logging.info("Cannot open CDF file: " + filename) + result = False + elif filename[-3:] == '.nc': + # Try to open the netCDF file + try: + netcdf_file = Dataset(filename) + result = True + except: + logging.info("Cannot open netCDF file: " + filename) + result = False + else: + # The file is not CDF or netCDF, print a warning and return true + logging.info("The file is not CDF or netCDF. Filename: " + filename) + result = True + + return result + def download_file(url=None, filename=None, @@ -36,11 +71,11 @@ def download_file(url=None, password=None, verify=False, session=None, - basic_auth=False - ): + basic_auth=False, + nbr_tries=0): """ Download a file and return its local path; this function is primarily meant to be called by the download function - + Parameters: url: str Remote URL to download @@ -63,14 +98,22 @@ def download_file(url=None, session: requests.Session object Requests session object that allows you to persist things like HTTP authentication through multiple calls + nbr_tries: int + Counts how many times we tried to download the file. Default is 0. + + Notes: + Checks if the CDF or netCDF file can be opened, and if it can't, tries to download the file for a second time. + Returns: String containing the local file name """ + headers_original = headers + session_original = session if session is None: session = requests.Session() - + if username is not None: session.auth = requests.auth.HTTPDigestAuth(username, password) @@ -91,48 +134,77 @@ def download_file(url=None, if headers.get('If-Modified-Since') is not None: del headers['If-Modified-Since'] - # the file hasn't changed + needs_to_download_file = False if fsrc.status_code == 304: + # the file hasn't changed logging.info('File is current: ' + filename) fsrc.close() - return filename - - # file not found - if fsrc.status_code == 404: + elif fsrc.status_code == 404: + # file not found logging.error('Remote file not found: ' + url) fsrc.close() return None - - # authentication issues - if fsrc.status_code == 401 or fsrc.status_code == 403: + elif fsrc.status_code == 401 or fsrc.status_code == 403: + # authentication issues logging.error('Unauthorized: ' + url) fsrc.close() return None - - if fsrc.status_code == 200: + elif fsrc.status_code == 200: + # this is the main download case + needs_to_download_file = True logging.info('Downloading ' + url + ' to ' + filename) else: + # all other problems logging.error(fsrc.reason) fsrc.close() return None - ftmp = NamedTemporaryFile(delete=False) + if needs_to_download_file: + ftmp = NamedTemporaryFile(delete=False) - with open(ftmp.name, 'wb') as f: - copyfileobj(fsrc.raw, f) + with open(ftmp.name, 'wb') as f: + copyfileobj(fsrc.raw, f) - # make sure the directory exists - if not os.path.exists(os.path.dirname(filename)) and os.path.dirname(filename) != '': - os.makedirs(os.path.dirname(filename)) + # make sure the directory exists + if not os.path.exists(os.path.dirname(filename)) and os.path.dirname(filename) != '': + os.makedirs(os.path.dirname(filename)) - # if the download was successful, copy to data directory - copy(ftmp.name, filename) + # if the download was successful, copy to data directory + copy(ftmp.name, filename) - fsrc.close() - ftmp.close() - os.unlink(ftmp.name) # delete the temporary file - - logging.info('Download complete: ' + filename) + fsrc.close() + ftmp.close() + os.unlink(ftmp.name) # delete the temporary file + + logging.info('Download complete: ' + filename) + + # At this point, we check if the file can be opened. + # If it cannot be opened, we delete the file and try again. + if nbr_tries == 0 and check_downloaded_file(filename) == False: + nbr_tries = 1 + logging.info('There was a problem with the file: ' + filename) + logging.info('We are going to download it for a second time.') + if os.path.exists(filename): + os.unlink(filename) + + download_file(url=url, + filename=filename, + headers=headers_original, + username=username, + password=password, + verify=verify, + session=session_original, + basic_auth=basic_auth, + nbr_tries=nbr_tries) + + # If the file again cannot be opened, we give up. + if nbr_tries > 0 and check_downloaded_file(filename) == False: + nbr_tries = 2 + logging.info('Tried twice. There was a problem with the file: ' + filename) + logging.info('File will be removed. Try to download it again at a later time.') + if os.path.exists(filename): + os.unlink(filename) + filename = None return filename @@ -149,7 +221,8 @@ def download(remote_path='', no_download=False, last_version=False, basic_auth=False, - regex=False): + regex=False, + no_wildcards=False): """ Download one or more remote files and return their local paths. @@ -189,13 +262,16 @@ def download(remote_path='', Flag to not download remote files last_version: bool - Flag to only download the last in file in a lexically sorted + Flag to only download the last in file in a lexically sorted list when multiple matches are found using wildcards regex: bool Flag to allow regular expressions in the file name matching, instead of unix style matching + no_wildcards: bool + Flag to assume no wild cards in the requested url/filename + Returns: String list specifying the full local path to all requested files @@ -258,9 +334,9 @@ def download(remote_path='', short_path = local_file[:1+local_file.rfind("/")] - if no_download is False: + if not no_download: # expand the wildcards in the url - if '?' in url or '*' in url or regex and no_download is False: + if ('?' in url or '*' in url or regex) and (not no_download and not no_wildcards): if index_table.get(url_base) is not None: links = index_table[url_base] else: @@ -269,10 +345,13 @@ def download(remote_path='', # we'll need to parse the HTML index file for the file list with warnings.catch_warnings(): warnings.simplefilter("ignore", category=ResourceWarning) - if not basic_auth: - html_index = session.get(url_base, verify=verify, headers=headers) - else: - html_index = session.get(url_base, verify=verify, headers=headers, auth=(username, password)) + try: + if not basic_auth: + html_index = session.get(url_base, verify=verify, headers=headers) + else: + html_index = session.get(url_base, verify=verify, headers=headers, auth=(username, password)) + except requests.exceptions.ConnectionError: + continue if html_index.status_code == 404: logging.error('Remote index not found: ' + url_base) @@ -300,6 +379,9 @@ def download(remote_path='', reg_expression = re.compile(url_file) new_links = list(filter(reg_expression.match, links)) + if len(new_links) == 0: + logging.info("No links matching pattern %s found at remote index %s", url_file, url_base) + if last_version and len(new_links) > 1: new_links = sorted(new_links) new_links = [new_links[-1]] @@ -320,7 +402,8 @@ def download(remote_path='', continue resp_data = download_file(url=url, filename=filename, username=username, password=password, verify=verify, headers=headers, session=session, basic_auth=basic_auth) - + + if resp_data is not None: if not isinstance(resp_data, list): resp_data = [resp_data] @@ -329,7 +412,7 @@ def download(remote_path='', else: # download wasn't successful, search for local files logging.info('Searching for local files...') - + if local_path == '': local_path_to_search = str(Path('.').resolve()) else: diff --git a/pyspedas/utilities/interpol.py b/pyspedas/utilities/interpol.py index e88a43a1..7a576064 100644 --- a/pyspedas/utilities/interpol.py +++ b/pyspedas/utilities/interpol.py @@ -1,7 +1,7 @@ import numpy as np from scipy import interpolate -def interpol(data, data_times, out_times): +def interpol(data, data_times, out_times, fill_value="extrapolate"): ''' Simple wrapper around scipy's interp1d that allows you to linearly interpolate data from one set of times to another set of times @@ -14,9 +14,9 @@ def interpol(data, data_times, out_times): if len(data.shape) == 2: out = np.empty((len(out_times), len(data[0, :]))) for data_idx in np.arange(len(data[0, :])): - interpfunc = interpolate.interp1d(data_times, data[:, data_idx], kind='linear', bounds_error=False, fill_value='extrapolate') + interpfunc = interpolate.interp1d(data_times, data[:, data_idx], kind='linear', bounds_error=False, fill_value=fill_value) out[:, data_idx] = interpfunc(out_times) return out else: - interpfunc = interpolate.interp1d(data_times, data, kind='linear', bounds_error=False, fill_value='extrapolate') - return interpfunc(out_times) \ No newline at end of file + interpfunc = interpolate.interp1d(data_times, data, kind='linear', bounds_error=False, fill_value=fill_value) + return interpfunc(out_times) diff --git a/pyspedas/utilities/leap_seconds.py b/pyspedas/utilities/leap_seconds.py new file mode 100644 index 00000000..eebe797b --- /dev/null +++ b/pyspedas/utilities/leap_seconds.py @@ -0,0 +1,55 @@ +import os +import datetime +import pandas as pd +import numpy as np +from pyspedas.utilities.download import download +from pyspedas import time_double + + +def load_leap_table(reload=False): + """ + Loads the leap second table for converting TAI to unix times + + Parameters + ----------- + reload: bool + Re-load the leap second table, even if it exists locally. + + This shouldn't be needed until at least 2035: + https://www.scientificamerican.com/article/the-leap-seconds-time-is-up-world-votes-to-stop-pausing-clocks/ + + Returns + --------- + dict containing 'dates' with array of Julian dates corresponding + to the leap seconds in the 'leaps' array + + """ + if os.environ.get('CDF_LEAPSECONDSTABLE') is not None: + table_file = os.environ.get('CDF_LEAPSECONDSTABLE') + elif os.environ.get('SPEDAS_DATA_DIR') is not None: + table_file = os.path.join(os.environ.get('SPEDAS_DATA_DIR'), 'CDFLeapSeconds.txt') + else: + table_file = os.path.join('data', 'CDFLeapSeconds.txt') + + table_dir = os.path.dirname(table_file) + + if reload or not os.path.exists(table_file): + downloaded = download(remote_path='https://cdf.gsfc.nasa.gov/html/', + remote_file='CDFLeapSeconds.txt', + local_path=table_dir) + + cols = ['Year', 'Month', 'Day', 'LS', 'Drift'] + table = pd.read_csv(table_file, + delim_whitespace=True, + dtype=str, + names=cols, + comment=';', + skipinitialspace=True, + index_col=False) + + leap_dates = table['Year'].to_numpy() + '-' + table['Month'].to_numpy() + '-' + table['Day'].to_numpy() + leap_dates = time_double(leap_dates) + juls = np.array(leap_dates)/86400.0 + datetime.date(1970, 1, 1).toordinal() + 1721424.5 + + return {'leaps': np.float64(table['LS'].to_numpy()), + 'juls': juls} diff --git a/pyspedas/utilities/spice/__init__.py b/pyspedas/utilities/spice/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pyspedas/utilities/spice/time_ephemeris.py b/pyspedas/utilities/spice/time_ephemeris.py new file mode 100644 index 00000000..28033d4c --- /dev/null +++ b/pyspedas/utilities/spice/time_ephemeris.py @@ -0,0 +1,45 @@ +import datetime +import logging +import numpy as np +from pyspedas import time_double +from pyspedas.utilities.interpol import interpol + + +def time_ephemeris(t, et2ut=False): + """ + Purpose: conversion between unix time and ephemeris time + Usage: et = time_ephemeris(ut) ; Converts from UT (unix/posix time) to ephemeris time + Or: ut = time_ephemeris(et, et2ut=True) ; Converts from ephemeris time to UT double precision (UNIX time) + Warning: this routine is only accurate to about 1 millisecond and does not attempt to reflect GR effects + + Based on the SPEDAS IDL routine by Davin Larson + """ + if not isinstance(t, float): + t = time_double(t) + + ls_utimes = time_double( + ['0200-1-1', '1972-1-1', '1972-7-1', '1973-1-1', '1974-1-1', '1975-1-1', '1976-1-1', '1977-1-1', '1978-1-1', + '1979-1-1', '1980-1-1', '1981-7-1', '1982-7-1', '1983-7-1', '1985-7-1', '1988-1-1', '1990-1-1', '1991-1-1', '1992-7-1', '1993-7-1', '1994-7-1', + '1996-1-1', '1997-7-1', '1999-1-1', '2006-1-1', '2009-1-1', '2012-7-1', '2015-7-1', '2017-1-1', '3000-1-1']) + + ls_num = np.arange(len(ls_utimes)) + 9 + utc_et_diff = time_double('2000-1-1/12:00:00') - 32.184 + ls_etimes = ls_utimes + ls_num - utc_et_diff + disable_time = time_double('2023-7-1') # time of next possible leap second + + if time_double() > disable_time - 30*86400.0: + logging.warning('Warning: This procedure must be modified before ' + str(disable_time) + ' to account for potential leap second') + + if time_double() > disable_time: + raise ValueError('Sorry! This procedure has been disabled because it was not modified to account for a possible leap second on ' + str(disable_time)) + + if time_double() > disable_time - 7*86400.0: + logging.warning('Warning: This procedure must be modified before ' + str(disable_time) + ' to account for potential leap second at that time.') + + if et2ut: + return t - np.floor(interpol(ls_num, ls_etimes, t)) + utc_et_diff + + ut = time_double(t) + + return ut + np.floor(interpol(ls_num, ls_utimes, ut)) - utc_et_diff + diff --git a/pyspedas/utilities/tcopy.py b/pyspedas/utilities/tcopy.py index 7d297025..af606bd5 100644 --- a/pyspedas/utilities/tcopy.py +++ b/pyspedas/utilities/tcopy.py @@ -6,6 +6,7 @@ Allowed wildcards are ? for a single character, * from multiple characters. """ +import logging import pytplot import pyspedas import copy @@ -32,7 +33,7 @@ def tcopy_one(name_in, name_out): tvar_new = copy.deepcopy(tvar_old) tvar_new.name = name_out pytplot.data_quants.update({name_out: tvar_new}) - print(name_in + ' copied to ' + name_out) + logging.info(name_in + ' copied to ' + name_out) def tcopy(names_in, names_out=None, suffix=None): @@ -55,7 +56,7 @@ def tcopy(names_in, names_out=None, suffix=None): """ names_in = pyspedas.tnames(names_in) if len(names_in) < 1: - print('tcopy error: No pytplot variables found.') + logging.error('tcopy error: No pytplot variables found.') return if suffix is None: @@ -68,7 +69,7 @@ def tcopy(names_in, names_out=None, suffix=None): names_out = [names_out] if len(names_in) != len(names_out): - print('tcopy error: List with the names_in does not match list\ + logging.error('tcopy error: List with the names_in does not match list\ with the names out.') return @@ -78,4 +79,4 @@ def tcopy(names_in, names_out=None, suffix=None): if len(pyspedas.tnames(n)) == 1: tcopy_one(n, o) else: - print('tplot name not found: ' + n) + logging.error('tplot name not found: ' + n) diff --git a/pyspedas/utilities/tests/download_tests.py b/pyspedas/utilities/tests/download_tests.py index 44e8e7f7..ffd0475f 100644 --- a/pyspedas/utilities/tests/download_tests.py +++ b/pyspedas/utilities/tests/download_tests.py @@ -17,6 +17,30 @@ def test_remote_file(self): self.assertTrue(len(files) == 1) self.assertTrue(files[0] == os.path.join(os.getcwd(), 'psp_swp_spc_l3i_20190401_v01.cdf')) + def test_wildcard(self): + # Test a wildcard pattern with several matches + files = download(remote_path='http://themis.ssl.berkeley.edu/data/themis/tha/l1/state/2008/tha_l1_state_20080323_v??.cdf') + self.assertTrue(len(files) == 4) # v00, v01, v02, v03 should be available on this date + self.assertTrue(files[3] == os.path.join(os.getcwd(), 'tha_l1_state_20080323_v03.cdf')) + + def test_missing_index(self): + # Test a wildcard pattern on a nonexistent directory + # This should warn "Remote index not found" + files = download(remote_path='http://themis.ssl.berkeley.edu/data/themis/tha/l1/state/2006/tha_l1_state_20060323_v??.cdf') + self.assertTrue(len(files) == 0) + + def test_last_version(self): + # Test a wildcard pattern with several matches, and last_version=True, returning the final (lexicographic) value + files = download(remote_path='http://themis.ssl.berkeley.edu/data/themis/tha/l1/state/2008/tha_l1_state_20080323_v??.cdf',last_version=True) + self.assertTrue(len(files) == 1) # v00, v01, v02, v03 should be available on this date, should only return v03 + self.assertTrue(files[0] == os.path.join(os.getcwd(), 'tha_l1_state_20080323_v03.cdf')) + + def test_last_version_nomatch(self): + # Test a wildcard pattern that doesn't match anything. + # This should warn about no matching file found in the index. + files = download(remote_path='http://themis.ssl.berkeley.edu/data/themis/tha/l1/state/2008/tha_l1_state_20080332_v??.cdf',last_version=True) + self.assertTrue(len(files) == 0) # Nonexistent date, nothing should be found + def test_remote_path_file(self): # specifying both remote_path and remote_file saves the files to the current working directory + the path specified in remote_file files = download(remote_path='https://spdf.gsfc.nasa.gov/pub/data/', remote_file='psp/sweap/spc/l3/l3i/2019/psp_swp_spc_l3i_20190401_v01.cdf') diff --git a/pyspedas/utilities/tests/misc_tests.py b/pyspedas/utilities/tests/misc_tests.py index 8d5e6c5e..6c0b9aa2 100644 --- a/pyspedas/utilities/tests/misc_tests.py +++ b/pyspedas/utilities/tests/misc_tests.py @@ -3,11 +3,8 @@ from pyspedas.utilities.dailynames import dailynames from pyspedas import tcopy -from pyspedas.utilities.time_string import (time_string, time_datetime, - time_string_one) -from pyspedas.utilities.time_double import (time_float_one, time_float, - time_double) -from pytplot import get_data, store_data +from pytplot import data_exists, tkm2re +from pytplot import get_data, store_data, options class UtilTestCases(unittest.TestCase): @@ -39,7 +36,6 @@ def test_dailynames(self): file_format='%M', res=600.) == ['00', '10', '20', '30', '40', '50']) - def test_tcopy(self): """Test tcopy function.""" store_data('test', data={'x': [1, 2, 3], 'y': [5, 5, 5]}) @@ -55,6 +51,21 @@ def test_tcopy(self): tcopy('doesnt exist', 'another-copy') tcopy(['another-copy', 'test'], 'another-copy') + def test_tkm2re(self): + store_data('test', data={'x': [1, 2, 3], 'y': [5, 5, 5]}) + options('test', 'ysubtitle', '[Re]') + # convert to km + tkm2re('test', km=True) + # convert back + tkm2re('test_km') + self.assertTrue(data_exists('test_km_re')) + nothing = tkm2re('doesnt_exist') + self.assertTrue(nothing is None) + tkm2re('test_km', newname='another_test_km') + self.assertTrue(data_exists('another_test_km')) + anerror = tkm2re('test_km', newname=['test1_km', 'test1_km']) + self.assertTrue(anerror is None) + if __name__ == '__main__': unittest.main() diff --git a/pyspedas/utilities/tests/time_tests.py b/pyspedas/utilities/tests/time_tests.py index 238f27aa..85a56a24 100644 --- a/pyspedas/utilities/tests/time_tests.py +++ b/pyspedas/utilities/tests/time_tests.py @@ -1,15 +1,21 @@ import unittest from datetime import datetime, timezone -from pyspedas.utilities.time_string import time_string, time_datetime, time_string_one -from pyspedas.utilities.time_double import time_float_one, time_float, time_double +from pytplot import time_string, time_datetime +from pytplot import time_float, time_double + class TimeTestCases(unittest.TestCase): def test_time_datetime(self): """Test time_datetime function.""" + now = time_datetime() + self.assertTrue(time_datetime('2015-12-15/00:00') == datetime(2015, 12, 15, 0, 0, tzinfo=timezone.utc)) self.assertTrue(time_datetime(1450137600.0000000) == datetime(2015, 12, 15, 0, 0, tzinfo=timezone.utc)) self.assertTrue([time_datetime(1450137600.0000000), time_datetime(1444953600.0000000)] == [datetime(2015, 12, 15, 0, 0, tzinfo=timezone.utc), datetime(2015, 10, 16, 0, 0, tzinfo=timezone.utc)]) + self.assertTrue(time_datetime([1450137600.0000000, 1444953600.0000000]) + == [datetime(2015, 12, 15, 0, 0, tzinfo=timezone.utc), datetime(2015, 10, 16, 0, 0, tzinfo=timezone.utc)]) + def test_time_string(self): """Test time_string function.""" diff --git a/pyspedas/utilities/time_double.py b/pyspedas/utilities/time_double.py index f159da4b..ba72ec14 100644 --- a/pyspedas/utilities/time_double.py +++ b/pyspedas/utilities/time_double.py @@ -12,12 +12,8 @@ Similar to time_double.pro in IDL SPEDAS. """ - -from dateutil import parser -from datetime import datetime, timezone -import numpy as np -from collections.abc import Iterable - +import pytplot +import logging def time_float_one(s_time=None): """ @@ -35,21 +31,9 @@ def time_float_one(s_time=None): Output time. """ - if s_time is None: - s_time = str(datetime.now()) - - if isinstance(s_time, (int, float, np.integer, np.float64)): - return float(s_time) - - try: - in_datetime = parser.isoparse(s_time) - except ValueError: - in_datetime = parser.parse(s_time) - - float_time = in_datetime.replace(tzinfo=timezone.utc).timestamp() - - return float_time - + logging.info("time_float_one has been moved to the pytplot package. Please update your imports!") + logging.info("This version will eventually be removed.") + return pytplot.time_float_one(s_time=s_time) def time_float(str_time=None): """ @@ -66,20 +50,9 @@ def time_float(str_time=None): Output times as floats. """ - if str_time is None: - return time_float_one() - else: - if isinstance(str_time, str): - return time_float_one(str_time) - else: - time_list = list() - if isinstance(str_time, Iterable): - for t in str_time: - time_list.append(time_float_one(t)) - return time_list - else: - return time_float_one(str_time) - + logging.info("time_float has been moved to the pytplot package. Please update your imports!") + logging.info("This version will eventually be removed.") + return pytplot.time_float(str_time=str_time) def time_double(str_time=None): """ @@ -98,4 +71,6 @@ def time_double(str_time=None): Output times as floats. """ - return time_float(str_time) + logging.info("time_double has been moved to the pytplot package. Please update your imports!") + logging.info("This version will eventually be removed.") + return pytplot.time_float(str_time=str_time) \ No newline at end of file diff --git a/pyspedas/utilities/time_string.py b/pyspedas/utilities/time_string.py index 6b390ba4..a40b3063 100644 --- a/pyspedas/utilities/time_string.py +++ b/pyspedas/utilities/time_string.py @@ -11,8 +11,8 @@ Compare to https://www.epochconverter.com/ """ -from datetime import datetime, timezone -from pyspedas.utilities.time_double import time_float +import logging +import pytplot def time_string_one(float_time=None, fmt=None): """ @@ -33,16 +33,9 @@ def time_string_one(float_time=None, fmt=None): Datetime as string. """ - if fmt is None: - fmt = '%Y-%m-%d %H:%M:%S.%f' - - if float_time is None: - str_time = datetime.now().strftime(fmt) - else: - str_time = datetime.utcfromtimestamp(float_time).strftime(fmt) - - return str_time - + logging.info("time_string_one has been moved to the pytplot package. Please update your imports!") + logging.info("This version will eventually be removed.") + return pytplot.time_string_one(float_time=float_time,fmt=fmt) def time_string(float_time=None, fmt=None): """ @@ -63,17 +56,9 @@ def time_string(float_time=None, fmt=None): Datetimes as string. """ - if float_time is None: - return time_string_one(None, fmt) - else: - if isinstance(float_time, (int, float)): - return time_string_one(float_time, fmt) - else: - time_list = list() - for t in float_time: - time_list.append(time_string_one(t, fmt)) - return time_list - + logging.info("time_string has been moved to the pytplot package. Please update your imports!") + logging.info("This version will eventually be removed.") + return pytplot.time_string(float_time=float_time,fmt=fmt) def time_datetime(time=None, tz=None): """Find python datetime. @@ -93,16 +78,6 @@ def time_datetime(time=None, tz=None): Datetimes as `datetime.datetime`. """ - if tz is None: - tz = timezone.utc - - if time is None: - return datetime.now() - - if isinstance(time, str): - return time_datetime(time_float(time)) - - if isinstance(time, (int, float)): - return datetime.fromtimestamp(time, tz=tz) - - return [time_datetime(_time) for _time in time] + logging.info("time_datetime has been moved to the pytplot package. Please update your imports!") + logging.info("This version will eventually be removed.") + return pytplot.time_datetime(time=time,tz=tz) diff --git a/pyspedas/utilities/tkm2re.py b/pyspedas/utilities/tkm2re.py index 1af1a935..31036fd7 100644 --- a/pyspedas/utilities/tkm2re.py +++ b/pyspedas/utilities/tkm2re.py @@ -1,7 +1,5 @@ - - +import logging import pytplot -from pyspedas import tnames def tkm2re(name, km=False, newname=None, suffix=''): """ @@ -30,62 +28,6 @@ def tkm2re(name, km=False, newname=None, suffix=''): List of the tplot variables created """ - km_in_re = 6371.2 - - names = tnames(name) - - if names == []: - print('No tplot variables found: ' + name) - return - - if newname is None: - newname = [n + suffix for n in names] - - if km == False: - newname = [n + '_re' for n in newname] - else: - newname = [n + '_km' for n in newname] - else: - if not isinstance(newname, list): - newname = [newname] - - if len(newname) != len(names): - print('Number of output variable names (newname) should match the number of input variables.') - return - - out = [] - - for in_tvar, out_tvar in zip(names, newname): - data = pytplot.get_data(in_tvar) - metadata = pytplot.get_data(in_tvar, metadata=True) - - if data is None: - print('Problem reading variable: ' + in_tvar) - continue - - if km == False: - data_out = data.y/km_in_re - else: - data_out = data.y*km_in_re - - saved = pytplot.store_data(out_tvar, data={'x': data.times, 'y': data_out}, attr_dict=metadata) - - if not saved: - print('Problem creating tplot variable.') - continue - - # update the subtitle, if needed - yaxis_opt = pytplot.data_quants[out_tvar].attrs['plot_options'].get('yaxis_opt') - - if yaxis_opt is not None: - subtitle = yaxis_opt.get('axis_subtitle') - if subtitle is not None: - if km == False: - new_subtitle = pytplot.data_quants[out_tvar].attrs['plot_options']['yaxis_opt']['axis_subtitle'].lower().replace('km', 'Re') - else: - new_subtitle = pytplot.data_quants[out_tvar].attrs['plot_options']['yaxis_opt']['axis_subtitle'].lower().replace('re', 'km') - pytplot.data_quants[out_tvar].attrs['plot_options']['yaxis_opt']['axis_subtitle'] = new_subtitle - - out.append(out_tvar) - - return out \ No newline at end of file + logging.info("tkm2re has been moved to the pytplot.tplot_math module. Please update your imports!") + logging.info("This version will eventually be removed.") + return pytplot.tplot_math.tkm2re(name=name,km=km,newname=newname,suffix=suffix) diff --git a/pyspedas/utilities/tnames.py b/pyspedas/utilities/tnames.py index b96cae48..682c8c70 100644 --- a/pyspedas/utilities/tnames.py +++ b/pyspedas/utilities/tnames.py @@ -6,9 +6,8 @@ Allowed wildcards are ? for a single character, * from multiple characters. """ -import fnmatch -from pytplot import tplot_names - +import logging +import pytplot def tnames(pattern=None): """ @@ -25,16 +24,6 @@ def tnames(pattern=None): List of pytplot variables. """ - name_list = list() - all_names = tplot_names(quiet=True) - - if pattern is None: - name_list.extend(all_names) - else: - if isinstance(pattern, str): - name_list.extend(fnmatch.filter(all_names, pattern)) - else: - for p in pattern: - name_list.extend(fnmatch.filter(all_names, p)) - - return name_list + logging.info("tnames has been moved to the pytplot package. Please update your imports!") + logging.info("This version will eventually be removed.") + return pytplot.tnames(pattern) diff --git a/pyspedas/version.py b/pyspedas/version.py index bb0da3ff..d4c26dc6 100644 --- a/pyspedas/version.py +++ b/pyspedas/version.py @@ -1,4 +1,5 @@ """Print the version number for the current installation.""" +import logging def version(): @@ -12,4 +13,4 @@ def version(): """ import pkg_resources ver = pkg_resources.get_distribution("pyspedas").version - print("pyspedas version: " + ver) + logging.info("pyspedas version: " + ver) diff --git a/pyspedas/vires/__init__.py b/pyspedas/vires/__init__.py new file mode 100644 index 00000000..2508d15f --- /dev/null +++ b/pyspedas/vires/__init__.py @@ -0,0 +1,17 @@ +from pyspedas.vires.load import load + + +def data(trange=None, + collection=None, + measurements=None, + models=None, + sampling_step=None, + auxiliaries=None, + residuals=False): + return load(trange=trange, + collection=collection, + measurements=measurements, + models=models, + sampling_step=sampling_step, + auxiliaries=auxiliaries, + residuals=residuals) diff --git a/pyspedas/vires/config.py b/pyspedas/vires/config.py new file mode 100644 index 00000000..e69de29b diff --git a/pyspedas/vires/load.py b/pyspedas/vires/load.py new file mode 100644 index 00000000..1786174e --- /dev/null +++ b/pyspedas/vires/load.py @@ -0,0 +1,65 @@ +import logging +from viresclient import SwarmRequest +from pyspedas import time_datetime +from pytplot import store_data, options + + +def load(trange=None, + collection=None, + measurements=None, + models=None, + sampling_step=None, + auxiliaries=None, + residuals=False): + """ + + """ + if trange is None: + logging.error('No time range specified') + return + + tr = time_datetime(trange) + + if not isinstance(measurements, list): + measurements = [measurements] + + if auxiliaries is not None and not isinstance(auxiliaries, list): + auxiliaries = [auxiliaries] + + if models is not None: + if not isinstance(models, list): + models = [models] + + request = SwarmRequest() + if isinstance(collection, list): + request.set_collection(*collection) + else: + request.set_collection(collection) + + if auxiliaries is None: + request.set_products(measurements=measurements, models=models, sampling_step=sampling_step, residuals=residuals) + else: + request.set_products(measurements=measurements, auxiliaries=auxiliaries, models=models, sampling_step=sampling_step, residuals=residuals) + + data = request.get_between(start_time=tr[0], end_time=tr[1]) + return xarray_to_tplot(data.as_xarray()) + + +def xarray_to_tplot(xr): + out = [] + for key in xr.keys(): + times = xr[key].coords['Timestamp'].to_numpy() + saved = store_data(key, data={'x': times, 'y': xr[key].data}) + options(key, 'ytitle', xr[key].description) + options(key, 'ysubtitle', '[' + xr[key].units + ']') + + # find the legend if this is a vector + for item in xr[key].coords: + if item != 'Timestamp': + options(key, 'legend_names', xr[key].coords[item].values.tolist()) + + if saved: + out.append(key) + else: + logging.warning('Problem saving: ' + key) + return out diff --git a/pyspedas/wind/__init__.py b/pyspedas/wind/__init__.py index 75f1f7f4..a2a0d96c 100644 --- a/pyspedas/wind/__init__.py +++ b/pyspedas/wind/__init__.py @@ -1,5 +1,6 @@ - from .load import load +from pyspedas.utilities.datasets import find_datasets + def threedp(trange=['1999-11-5', '1999-11-6'], datatype='3dp_emfits_e0', @@ -10,7 +11,9 @@ def threedp(trange=['1999-11-5', '1999-11-6'], downloadonly=False, notplot=False, no_update=False, - time_clip=False): + berkeley=False, + time_clip=False, + addmaster=False): """ This function loads 3DP data @@ -59,7 +62,7 @@ def threedp(trange=['1999-11-5', '1999-11-6'], List of tplot variables created. """ - return load(instrument='3dp', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + return load(instrument='3dp', berkeley=berkeley, addmaster=addmaster, trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) def orbit(trange=['1999-11-5', '1999-11-6'], datatype='pre_or', @@ -360,3 +363,7 @@ def swe(trange=['2018-11-5', '2018-11-6'], """ return load(instrument='swe', trange=trange, datatype=datatype, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update) + + +def datasets(instrument=None, label=True): + return find_datasets(mission='Wind', instrument=instrument, label=label) diff --git a/pyspedas/wind/load.py b/pyspedas/wind/load.py index 1b12efad..27d4ed56 100644 --- a/pyspedas/wind/load.py +++ b/pyspedas/wind/load.py @@ -1,13 +1,15 @@ +import os from pyspedas.utilities.dailynames import dailynames from pyspedas.utilities.download import download -from pyspedas.analysis.time_clip import time_clip as tclip +from pytplot import time_clip as tclip from pytplot import cdf_to_tplot from .config import CONFIG def load(trange=['2013-11-5', '2013-11-6'], instrument='fgm', - datatype='h0', + datatype='h0', + prefix='', suffix='', get_support_data=False, varformat=None, @@ -15,7 +17,9 @@ def load(trange=['2013-11-5', '2013-11-6'], downloadonly=False, notplot=False, no_update=False, - time_clip=False): + berkeley=False, + time_clip=False, + addmaster=False): """ This function loads data from the WIND mission; this function is not meant to be called directly; instead, see the wrappers: @@ -28,38 +32,61 @@ def load(trange=['2013-11-5', '2013-11-6'], """ + if berkeley: + remote_data_dir = 'http://themis.ssl.berkeley.edu/data/wind/' + else: + remote_data_dir = CONFIG['remote_data_dir'] + + local_master_dir = CONFIG['local_data_dir']+'wind_masters/' + + masterpath = 'https://cdaweb.gsfc.nasa.gov/pub/software/cdawlib/0MASTERS/' if instrument == 'fgm': pathformat = 'mfi/mfi_'+datatype+'/%Y/wi_'+datatype+'_mfi_%Y%m%d_v??.cdf' + masterfile = 'wi_'+datatype+'_mfi_00000000_v01.cdf' elif instrument == 'swe': pathformat = 'swe/swe_'+datatype+'/%Y/wi_'+datatype+'_swe_%Y%m%d_v??.cdf' + masterfile = 'wi_'+datatype+'_swe_00000000_v01.cdf' elif instrument == 'sms': pathformat = 'sms/'+datatype+'/sms_'+datatype+'/%Y/wi_'+datatype+'_sms_%Y%m%d_v??.cdf' + masterfile = 'wi_' + datatype + '_sms_00000000_v01.cdf' elif instrument == 'waves': pathformat = 'waves/wav_'+datatype+'/%Y/wi_'+datatype+'_wav_%Y%m%d_v??.cdf' + masterfile = 'wi_' + datatype + '_waves_00000000_v01.cdf' elif instrument == 'orbit': pathformat = 'orbit/'+datatype+'/%Y/wi_'+datatype.split('_')[1]+'_'+datatype.split('_')[0]+'_%Y%m%d_v??.cdf' + masterfile = 'wi_' + datatype + '_orbit_00000000_v01.cdf' elif instrument == '3dp': + prefix = 'wi_' + datatype + '_' if datatype == '3dp_emfits_e0': + prefix = '' pathformat = '3dp/'+datatype+'/%Y/wi_'+datatype.split('_')[1]+'_'+datatype.split('_')[2]+'_'+datatype.split('_')[0]+'_%Y%m%d_v??.cdf' + masterfile = 'wi_' + datatype.split('_')[1]+'_'+datatype.split('_')[2] + '_3dp_00000000_v01.cdf' else: - pathformat = '3dp/'+datatype+'/%Y/wi_'+datatype.split('_')[1]+'_'+datatype.split('_')[0]+'_%Y%m%d_v??.cdf' + if not berkeley: + pathformat = '3dp/'+datatype+'/%Y/wi_'+datatype.split('_')[1]+'_'+datatype.split('_')[0]+'_%Y%m%d_v??.cdf' + masterfile = 'wi_' + datatype.split('_')[1]+'_'+datatype.split('_')[0] + '_00000000_v01.cdf' + else: + pathformat = '3dp/'+datatype+'/%Y/wi_'+datatype+'_3dp_%Y%m%d_v??.cdf' + masterfile = 'wi_' + datatype + '_3dp_00000000_v01.cdf' # find the full remote path names using the trange remote_names = dailynames(file_format=pathformat, trange=trange) out_files = [] - files = download(remote_file=remote_names, remote_path=CONFIG['remote_data_dir'], local_path=CONFIG['local_data_dir'], no_download=no_update, last_version=True) - if files is not None: - for file in files: - out_files.append(file) + if addmaster: + mfile = download(remote_file=masterfile,remote_path=masterpath,local_path=local_master_dir,no_download=no_update,last_version=True) + else: + mfile = [None] + + datafiles = download(remote_file=remote_names, remote_path=remote_data_dir, local_path=CONFIG['local_data_dir'], no_download=no_update, last_version=True) - out_files = sorted(out_files) + out_files.extend(datafiles) if downloadonly: return out_files - tvars = cdf_to_tplot(out_files, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, notplot=notplot) + tvars = cdf_to_tplot(out_files, mastercdf=mfile[0], prefix=prefix, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, notplot=notplot) if notplot: return tvars diff --git a/pyspedas/wind/tests/tests.py b/pyspedas/wind/tests/tests.py index 77cc8f3c..20e9dbdf 100644 --- a/pyspedas/wind/tests/tests.py +++ b/pyspedas/wind/tests/tests.py @@ -1,15 +1,109 @@ - import os +import logging import unittest -from pyspedas.utilities.data_exists import data_exists - +from pytplot import data_exists import pyspedas + class LoadTestCases(unittest.TestCase): def test_downloadonly(self): files = pyspedas.wind.mfi(trange=['2013-11-5', '2013-11-6'], downloadonly=True) self.assertTrue(os.path.exists(files[0])) + def test_load_3dp_data(self): + tdp_vars = pyspedas.wind.threedp(trange=['2003-09-5', '2003-09-6'], notplot=True) + self.assertTrue('N_e_dens_wi_3dp' in tdp_vars) + + def test_load_3dp_pm_data(self): + tdp_vars = pyspedas.wind.threedp(trange=['2018-11-06', '2018-11-07'], datatype='3dp_pm', time_clip=True, notplot=True, addmaster=True) + self.assertTrue('wi_3dp_pm_P_VELS' in tdp_vars) + + def test_load_3dp_ehpd_data(self): + tdp_vars = pyspedas.wind.threedp(trange=['2018-11-06', '2018-11-07'], datatype='3dp_ehpd', time_clip=True, + notplot=True, addmaster=True) + self.assertTrue('wi_3dp_ehpd_FLUX' in tdp_vars) + + def test_load_3dp_ehsp_data(self): + tdp_vars = pyspedas.wind.threedp(trange=['2019-11-06', '2019-11-07'], datatype='3dp_ehsp', time_clip=True, + notplot=True, addmaster=True) + self.assertTrue('wi_3dp_ehsp_FLUX' in tdp_vars) + + def test_load_3dp_elm2_data(self): + tdp_vars = pyspedas.wind.threedp(trange=['2019-11-06', '2019-11-07'], datatype='3dp_elm2', time_clip=True, + notplot=True, addmaster=True) + self.assertTrue('wi_3dp_elm2_FLUX' in tdp_vars) + + def test_load_3dp_elpd_data(self): + tdp_vars = pyspedas.wind.threedp(trange=['2019-11-06', '2019-11-07'], datatype='3dp_elpd', time_clip=True, + notplot=True, addmaster=True) + self.assertTrue('wi_3dp_elpd_FLUX' in tdp_vars) + + def test_load_3dp_elsp_data(self): + tdp_vars = pyspedas.wind.threedp(trange=['2019-11-06', '2019-11-07'], datatype='3dp_elsp', time_clip=True, + notplot=True, addmaster=True) + self.assertTrue('wi_3dp_elsp_FLUX' in tdp_vars) + + def test_load_3dp_em_data(self): + tdp_vars = pyspedas.wind.threedp(trange=['2019-11-06', '2019-11-07'], datatype='3dp_em', time_clip=True, + notplot=True, addmaster=True) + self.assertTrue('wi_3dp_em_E_DENS' in tdp_vars) + + def test_load_3dp_emfits_e0_data(self): + tdp_vars = pyspedas.wind.threedp(trange=['2003-10-11', '2003-10-12'], datatype='3dp_emfits_e0', time_clip=True, + notplot=True, addmaster=True) + self.assertTrue('N_e_dens_wi_3dp' in tdp_vars) + + def test_load_3dp_k0_data(self): + # Note: this datatype is periodically pruned, SPDF seems to keep the last 3 years worth. + tdp_vars = pyspedas.wind.threedp(trange=['2023-01-01', '2023-01-02'], datatype='3dp_k0', time_clip=True, + notplot=True, addmaster=True) + self.assertTrue('wi_3dp_k0_elect_density' in tdp_vars) + + def test_load_3dp_phsp_data(self): + tdp_vars = pyspedas.wind.threedp(trange=['2019-11-06', '2019-11-07'], datatype='3dp_phsp', time_clip=True, + notplot=True, addmaster=True) + self.assertTrue('wi_3dp_phsp_FLUX' in tdp_vars) + def test_varformat_star(self): + tdp_vars = pyspedas.wind.threedp(trange=['2019-11-06', '2019-11-07'], datatype='3dp_phsp', time_clip=True, + notplot=True, addmaster=True, varformat='*') + self.assertTrue('wi_3dp_phsp_FLUX' in tdp_vars) + + def test_varformat_dots(self): + tdp_vars = pyspedas.wind.threedp(trange=['2019-11-06', '2019-11-07'], datatype='3dp_phsp', time_clip=True, + notplot=True, addmaster=True, varformat='....') + self.assertTrue('wi_3dp_phsp_FLUX' in tdp_vars) + + def test_load_3dp_plsp_data(self): + tdp_vars = pyspedas.wind.threedp(trange=['2019-11-06', '2019-11-07'], datatype='3dp_plsp', time_clip=True, + notplot=True, addmaster=True) + self.assertTrue('wi_3dp_plsp_FLUX' in tdp_vars) + + def test_load_3dp_varformat_alternation(self): + tdp_vars = pyspedas.wind.threedp(trange=['2019-11-06', '2019-11-07'], datatype='3dp_plsp', time_clip=True, + notplot=True, addmaster=True,varformat='MOM\.P\.FLUX|MOM\.P\.VELOCITY|MOM\.P\.PTENS') + self.assertTrue('wi_3dp_plsp_MOM.P.FLUX' in tdp_vars) + self.assertTrue('wi_3dp_plsp_MOM.P.VELOCITY' in tdp_vars) + self.assertTrue('wi_3dp_plsp_MOM.P.PTENS' in tdp_vars) + + def test_load_3dp_sfpd_data(self): + tdp_vars = pyspedas.wind.threedp(trange=['2019-11-06', '2019-11-07'], datatype='3dp_sfpd', time_clip=True, + notplot=True, addmaster=True) + self.assertTrue('wi_3dp_sfpd_FLUX' in tdp_vars) + def test_load_3dp_sfsp_data(self): + tdp_vars = pyspedas.wind.threedp(trange=['2019-11-06', '2019-11-07'], datatype='3dp_sfsp', time_clip=True, + notplot=True, addmaster=True) + self.assertTrue('wi_3dp_sfsp_FLUX' in tdp_vars) + + def test_load_3dp_sopd_data(self): + tdp_vars = pyspedas.wind.threedp(trange=['2019-11-06', '2019-11-07'], datatype='3dp_sopd', time_clip=True, + notplot=True, addmaster=True) + self.assertTrue('wi_3dp_sopd_FLUX' in tdp_vars) + + def test_load_3dp_sosp_data(self): + tdp_vars = pyspedas.wind.threedp(trange=['2019-11-06', '2019-11-07'], datatype='3dp_sosp', time_clip=True, + notplot=True, addmaster=True) + self.assertTrue('wi_3dp_sosp_FLUX' in tdp_vars) + def test_load_mfi_data(self): mfi_vars = pyspedas.wind.mfi(trange=['2013-11-5', '2013-11-6'], time_clip=True) self.assertTrue(data_exists('BGSE')) @@ -41,5 +135,6 @@ def test_load_sms_data(self): self.assertTrue(data_exists('C_ion_temp')) self.assertTrue(data_exists('O_ion_temp')) + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/requirements.txt b/requirements.txt index 7b6fcf31..0141b428 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,10 +1,11 @@ numpy>=1.19.5 requests -cdflib>=0.4.3 -pytplot-mpl-temp>=2.0.8 +cdflib<1.0.0 +pytplot-mpl-temp>=2.1.47 cdasws>=1.7.24 netCDF4 pywavelets astropy -geopack>=1.0.9 +geopack>=1.0.10 hapiclient>=0.2.2 +viresclient diff --git a/setup.py b/setup.py index 7aa636d5..95e48919 100755 --- a/setup.py +++ b/setup.py @@ -7,8 +7,8 @@ setup( name='pyspedas', - version='1.3.20', - description='Python Space Physics Environment Data Analysis Software (SPEDAS)', + version='1.4.44', + description='Python Space Physics Environment Data Analysis Software (pySPEDAS)', long_description=open('README.md').read(), long_description_content_type='text/markdown', url='https://github.com/spedas/pyspedas', @@ -25,10 +25,10 @@ project_urls={'Information': 'http://spedas.org/wiki/', }, packages=find_packages(exclude=['contrib', 'docs', 'tests*']), - install_requires=['numpy>=1.19.5', 'requests', 'geopack>=1.0.9', - 'cdflib>=0.4.3', 'cdasws>=1.7.24', 'netCDF4', + install_requires=['numpy>=1.19.5', 'requests', 'geopack>=1.0.10', + 'cdflib<1.0.0', 'cdasws>=1.7.24', 'netCDF4>=1.6.2', 'pywavelets', 'astropy', 'hapiclient>=0.2.2', - 'pytplot-mpl-temp>=2.0.8'], - python_requires='>=3.7', + 'pytplot-mpl-temp>=2.1.47', 'viresclient'], + python_requires='>=3.8', include_package_data=True, )

    BjOrKkn@SuiZqR#*z8zHX8|AcApk8{FN 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¬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