geospacelab 0.9.1__tar.gz → 0.9.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {geospacelab-0.9.1/geospacelab.egg-info → geospacelab-0.9.2}/PKG-INFO +10 -5
- {geospacelab-0.9.1 → geospacelab-0.9.2}/README.md +9 -4
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/__init__.py +1 -1
- geospacelab-0.9.2/geospacelab/datahub/sources/cdaweb/downloader.py +152 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/downloader.py +7 -4
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/__init__.py +63 -7
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/downloader.py +1 -1
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/loader.py +2 -3
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/__init__.py +59 -2
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/downloader.py +2 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/loader.py +3 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/edraur/variable_config.py +1 -1
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/express/eiscat_dashboard.py +3 -2
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/observatory/orbit/utilities.py +1 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/visualization/mpl/dashboards.py +1 -1
- {geospacelab-0.9.1 → geospacelab-0.9.2/geospacelab.egg-info}/PKG-INFO +10 -5
- geospacelab-0.9.1/geospacelab/datahub/sources/cdaweb/downloader.py +0 -76
- {geospacelab-0.9.1 → geospacelab-0.9.2}/LICENSE +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/MANIFEST.in +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/config/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/config/_preferences.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/cs/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/cs/_aacgm.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/cs/_apex.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/cs/_cs_base.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/cs/_geo.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/cs/geo_utilities.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/__dataset_base__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/__metadata_base__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/__variable_base__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/cdaweb/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/cdaweb/dmsp/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/cdaweb/omni/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/cdaweb/omni/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/cdaweb/omni/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/cdaweb/omni/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/advanced/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_fp/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct16/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l1b/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l2d/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/l2l/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/multimission/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/fmi/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/fmi/image/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/fmi/image/ie/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/fmi/image/ie/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/fmi/image/ie/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/fmi/image/ie/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/fmi/miracle/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/fmi/miracle/abk/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/fmi/miracle/kev/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/fmi/miracle/muo/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/gfz/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/gfz/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/gfz/hpo/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/gfz/hpo/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/gfz/hpo/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/gfz/hpo/nowcast/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/gfz/hpo/nowcast/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/gfz/hpo/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/gfz/kpap/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/gfz/kpap/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/gfz/kpap/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/gfz/kpap/nowcast/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/gfz/kpap/nowcast/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/gfz/kpap/nowcast/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/gfz/kpap/nowcast/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/gfz/kpap/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/gfz/snf107/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/gfz/snf107/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/gfz/snf107/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/isee/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/isee/gnss/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/isee/gnss/tecmap/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/isee/gnss/tecmap/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/isee/gnss/tecmap/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/isee/gnss/tecmap/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/jhuapl/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/jhuapl/ampere/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/jhuapl/ampere/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/jhuapl/ampere/fitted/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/jhuapl/ampere/fitted/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/jhuapl/ampere/fitted/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/jhuapl/ampere/grd/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/jhuapl/ampere/grd/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/jhuapl/ampere/grd/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/jhuapl/ampere/grd/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/jhuapl/dmsp/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/edraur/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/edraur/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/sdrdisk/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/sdrdisk/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/sdrdisk/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/gnss/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/gnss/tecmap/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/gnss/tecmap/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/gnss/tecmap/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/gnss/tecmap/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/eiscat/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/eiscat/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/eiscat/examples/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/eiscat/examples/eiscat_hdf5_info.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/eiscat/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/eiscat/utilities.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/eiscat/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/millstonehill/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/millstonehill/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/millstonehill/gridded/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/millstonehill/gridded/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/millstonehill/gridded/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/millstonehill/vi/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/millstonehill/vi/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/millstonehill/vi/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/pfisr/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/pfisr/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/satellites/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/satellites/dmsp/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/satellites/dmsp/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/satellites/dmsp/e/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/satellites/dmsp/e/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/satellites/dmsp/e/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s1/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s1/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s1/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s4/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s4/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s4/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/madrigal/utilities.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/ncei/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/ncei/dmsp/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/ncei/dmsp/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/nipr/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/nipr/asc/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/nipr/asc/tro_wmi/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/nipr/asc/tro_wmi/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/nipr/asc/tro_wmi/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/noaa/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/noaa/swpc/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/noaa/swpc/goesxray/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/noaa/swpc/solarwind/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/superdarn/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/superdarn/potmap/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/superdarn/potmap/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/superdarn/potmap/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/superdarn/potmap/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/supermag/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/supermag/indices/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/supermag/indices/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/supermag/indices/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/supermag/indices/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/supermag/magnetometer/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/supermag/magnetometer/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/supermag/magnetometer/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/supermag/magnetometer/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/supermag/supermag_api.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/supermag/utilities.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/champ/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/champ/dns_acc/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/champ/dns_acc/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/champ/dns_acc/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/champ/dns_acc/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/champ/wnd_acc/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/champ/wnd_acc/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/champ/wnd_acc/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/champ/wnd_acc/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/goce/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/grace/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/grace/dns_acc/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/grace/dns_acc/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/grace/dns_acc/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/grace/dns_acc/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/grace/wnd_acc/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/grace/wnd_acc/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/grace/wnd_acc/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/grace/wnd_acc/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/grace_fo/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/swarm/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/swarm/dns_acc/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/swarm/dns_acc/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/swarm/dns_acc/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/swarm/dns_acc/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/swarm/dns_pod/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/swarm/dns_pod/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/swarm/dns_pod/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/tud/swarm/dns_pod/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/wdc/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/wdc/ae/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/wdc/ae/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/wdc/ae/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/wdc/ae/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/wdc/asysym/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/wdc/asysym/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/wdc/asysym/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/wdc/asysym/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/wdc/dst/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/wdc/dst/downloader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/wdc/dst/loader.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/wdc/dst/variable_config.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/express/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/express/dmsp_dashboard.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/express/millstonehill_dashboard.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/express/omni_dashboard.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/future/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/future/empiricalmodels/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/future/empiricalmodels/ovationprime2010/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/future/empiricalmodels/ovationprime2010/ovationprime.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/future/satllites/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/future/satllites/orbit_analyzer.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/future/test_sscws.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/observatory/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/observatory/constants.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/observatory/earth/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/observatory/earth/_func.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/observatory/earth/constants.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/observatory/earth/geodesy.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/observatory/earth/sun_position.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/observatory/orbit/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/observatory/orbit/sc_orbit.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/observatory/site/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/observatory/site/mixins.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/quantity/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/toolbox/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/toolbox/io/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/toolbox/io/dialog.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/toolbox/unit/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/toolbox/utilities/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/toolbox/utilities/numpyarray.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/toolbox/utilities/numpymath.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/toolbox/utilities/pybasic.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/toolbox/utilities/pyclass.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/toolbox/utilities/pydatetime.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/toolbox/utilities/pylogging.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/toolbox/utilities/pyos.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/visualization/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/visualization/mpl/__base__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/visualization/mpl/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/visualization/mpl/_helpers.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/visualization/mpl/axes.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/visualization/mpl/axis_ticks.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/visualization/mpl/colormaps.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/visualization/mpl/figure.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/visualization/mpl/geomap/__base__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/visualization/mpl/geomap/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/visualization/mpl/geomap/geodashboards.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/visualization/mpl/geomap/geopanels.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/visualization/mpl/panels.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/visualization/plotly/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/visualization/plotly/ipanel.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/wrapper/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/wrapper/geopack/LICENSE +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/wrapper/geopack/README.md +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/wrapper/geopack/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/wrapper/geopack/geopack/__init__.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/wrapper/geopack/geopack/geopack.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/wrapper/geopack/geopack/igrf13coeffs.txt +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/wrapper/geopack/geopack/t01.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/wrapper/geopack/geopack/t04.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/wrapper/geopack/geopack/t89.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/wrapper/geopack/geopack/t96.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/wrapper/geopack/geopack/test_geopack1.md +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/wrapper/geopack/geopack/test_geopack1.py +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab.egg-info/SOURCES.txt +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab.egg-info/dependency_links.txt +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab.egg-info/requires.txt +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab.egg-info/top_level.txt +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/setup.cfg +0 -0
- {geospacelab-0.9.1 → geospacelab-0.9.2}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: geospacelab
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.2
|
|
4
4
|
Summary: Collect, manage, and visualize geospace data.
|
|
5
5
|
Home-page: https://github.com/JouleCai/geospacelab
|
|
6
6
|
Author: Lei Cai
|
|
@@ -263,7 +263,7 @@ modulation = 'ant'
|
|
|
263
263
|
dh = DataHub(dt_fr, dt_to)
|
|
264
264
|
# dock the first dataset (dataset index starts from 0)
|
|
265
265
|
ds_isr = dh.dock(datasource_contents=[database_name, 'isr', facility_name],
|
|
266
|
-
site=site, antenna=antenna, modulation=modulation, data_file_type='
|
|
266
|
+
site=site, antenna=antenna, modulation=modulation, data_file_type='madrigal-hdf5')
|
|
267
267
|
# load data
|
|
268
268
|
ds_isr.load_data()
|
|
269
269
|
# assign a variable from its own dataset to the datahub
|
|
@@ -304,7 +304,8 @@ antenna = 'UHF'
|
|
|
304
304
|
modulation = '60'
|
|
305
305
|
load_mode = 'AUTO'
|
|
306
306
|
dashboard = eiscat.EISCATDashboard(
|
|
307
|
-
dt_fr, dt_to, site=site, antenna=antenna, modulation=modulation, load_mode='AUTO'
|
|
307
|
+
dt_fr, dt_to, site=site, antenna=antenna, modulation=modulation, load_mode='AUTO',
|
|
308
|
+
data_file_type="madrigal-hdf5"
|
|
308
309
|
)
|
|
309
310
|
dashboard.quicklook()
|
|
310
311
|
|
|
@@ -392,12 +393,16 @@ dashboard = geomap.GeoDashboard(dt_fr=dt_fr, dt_to=dt_to, figure_config={'figsiz
|
|
|
392
393
|
# If the orbit_id is specified, only one file will be downloaded. This option saves the downloading time.
|
|
393
394
|
# dashboard.dock(datasource_contents=['jhuapl', 'dmsp', 'ssusi', 'edraur'], pole='N', sat_id='f17', orbit_id='46863')
|
|
394
395
|
# If not specified, the data during the whole day will be downloaded.
|
|
395
|
-
dashboard.dock(
|
|
396
|
+
dashboard.dock(
|
|
397
|
+
datasource_contents=dashboard.dock(datasource_contents=['cdaweb', 'dmsp', 'ssusi', 'edr_aur'],
|
|
398
|
+
pole=pole, sat_id=sat_id, orbit_id=None
|
|
399
|
+
)
|
|
396
400
|
ds_s1 = dashboard.dock(
|
|
397
401
|
datasource_contents=['madrigal', 'satellites', 'dmsp', 's1'],
|
|
398
402
|
dt_fr=time1 - datetime.timedelta(minutes=45),
|
|
399
403
|
dt_to=time1 + datetime.timedelta(minutes=45),
|
|
400
|
-
sat_id=sat_id
|
|
404
|
+
sat_id=sat_id
|
|
405
|
+
)
|
|
401
406
|
|
|
402
407
|
dashboard.set_layout(1, 1)
|
|
403
408
|
|
|
@@ -207,7 +207,7 @@ modulation = 'ant'
|
|
|
207
207
|
dh = DataHub(dt_fr, dt_to)
|
|
208
208
|
# dock the first dataset (dataset index starts from 0)
|
|
209
209
|
ds_isr = dh.dock(datasource_contents=[database_name, 'isr', facility_name],
|
|
210
|
-
site=site, antenna=antenna, modulation=modulation, data_file_type='
|
|
210
|
+
site=site, antenna=antenna, modulation=modulation, data_file_type='madrigal-hdf5')
|
|
211
211
|
# load data
|
|
212
212
|
ds_isr.load_data()
|
|
213
213
|
# assign a variable from its own dataset to the datahub
|
|
@@ -248,7 +248,8 @@ antenna = 'UHF'
|
|
|
248
248
|
modulation = '60'
|
|
249
249
|
load_mode = 'AUTO'
|
|
250
250
|
dashboard = eiscat.EISCATDashboard(
|
|
251
|
-
dt_fr, dt_to, site=site, antenna=antenna, modulation=modulation, load_mode='AUTO'
|
|
251
|
+
dt_fr, dt_to, site=site, antenna=antenna, modulation=modulation, load_mode='AUTO',
|
|
252
|
+
data_file_type="madrigal-hdf5"
|
|
252
253
|
)
|
|
253
254
|
dashboard.quicklook()
|
|
254
255
|
|
|
@@ -336,12 +337,16 @@ dashboard = geomap.GeoDashboard(dt_fr=dt_fr, dt_to=dt_to, figure_config={'figsiz
|
|
|
336
337
|
# If the orbit_id is specified, only one file will be downloaded. This option saves the downloading time.
|
|
337
338
|
# dashboard.dock(datasource_contents=['jhuapl', 'dmsp', 'ssusi', 'edraur'], pole='N', sat_id='f17', orbit_id='46863')
|
|
338
339
|
# If not specified, the data during the whole day will be downloaded.
|
|
339
|
-
dashboard.dock(
|
|
340
|
+
dashboard.dock(
|
|
341
|
+
datasource_contents=dashboard.dock(datasource_contents=['cdaweb', 'dmsp', 'ssusi', 'edr_aur'],
|
|
342
|
+
pole=pole, sat_id=sat_id, orbit_id=None
|
|
343
|
+
)
|
|
340
344
|
ds_s1 = dashboard.dock(
|
|
341
345
|
datasource_contents=['madrigal', 'satellites', 'dmsp', 's1'],
|
|
342
346
|
dt_fr=time1 - datetime.timedelta(minutes=45),
|
|
343
347
|
dt_to=time1 + datetime.timedelta(minutes=45),
|
|
344
|
-
sat_id=sat_id
|
|
348
|
+
sat_id=sat_id
|
|
349
|
+
)
|
|
345
350
|
|
|
346
351
|
dashboard.set_layout(1, 1)
|
|
347
352
|
|
|
@@ -6,7 +6,7 @@ __author__ = "Lei Cai"
|
|
|
6
6
|
__copyright__ = "Copyright 2021, GeospaceLAB"
|
|
7
7
|
__credits__ = ["Lei Cai"]
|
|
8
8
|
__license__ = "BSD-3-Clause License"
|
|
9
|
-
__version__ = "0.9.
|
|
9
|
+
__version__ = "0.9.2"
|
|
10
10
|
__maintainer__ = "Lei Cai"
|
|
11
11
|
__email__ = "lei.cai@oulu.fi"
|
|
12
12
|
__status__ = "Developing"
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# Licensed under the BSD 3-Clause License
|
|
2
|
+
# Copyright (C) 2021 GeospaceLab (geospacelab)
|
|
3
|
+
# Author: Lei Cai, Space Physics and Astronomy, University of Oulu
|
|
4
|
+
|
|
5
|
+
__author__ = "Lei Cai"
|
|
6
|
+
__copyright__ = "Copyright 2021, GeospaceLab"
|
|
7
|
+
__license__ = "BSD-3-Clause License"
|
|
8
|
+
__email__ = "lei.cai@oulu.fi"
|
|
9
|
+
__docformat__ = "reStructureText"
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
import datetime
|
|
13
|
+
import pathlib
|
|
14
|
+
|
|
15
|
+
import requests
|
|
16
|
+
import bs4
|
|
17
|
+
import re
|
|
18
|
+
import tqdm
|
|
19
|
+
|
|
20
|
+
import geospacelab.toolbox.utilities.pydatetime as dttool
|
|
21
|
+
import geospacelab.toolbox.utilities.pylogging as mylog
|
|
22
|
+
from geospacelab.config import prf
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class Downloader(object):
|
|
26
|
+
|
|
27
|
+
def __init__(
|
|
28
|
+
self,
|
|
29
|
+
dt_fr,
|
|
30
|
+
dt_to,
|
|
31
|
+
direct_download=True,
|
|
32
|
+
force_download=False,
|
|
33
|
+
data_file_root_dir=None,
|
|
34
|
+
dry_run=False,
|
|
35
|
+
from_ftp=False,
|
|
36
|
+
):
|
|
37
|
+
|
|
38
|
+
self.url_base = "https://cdaweb.gsfc.nasa.gov/pub/data/"
|
|
39
|
+
self.force_download = force_download
|
|
40
|
+
self.dry_run=dry_run
|
|
41
|
+
self.from_ftp=from_ftp
|
|
42
|
+
|
|
43
|
+
self.dt_fr = dt_fr
|
|
44
|
+
self.dt_to = dt_to
|
|
45
|
+
self.source_file_paths = []
|
|
46
|
+
|
|
47
|
+
if data_file_root_dir is None:
|
|
48
|
+
self.data_file_root_dir = prf.datahub_data_root_dir
|
|
49
|
+
else:
|
|
50
|
+
self.data_file_root_dir = data_file_root_dir
|
|
51
|
+
|
|
52
|
+
if direct_download:
|
|
53
|
+
self.download()
|
|
54
|
+
|
|
55
|
+
def download(self,):
|
|
56
|
+
if self.from_ftp:
|
|
57
|
+
raise NotImplementedError
|
|
58
|
+
else:
|
|
59
|
+
self.download_from_http()
|
|
60
|
+
|
|
61
|
+
def search_from_http(self, subdirs=None, file_name_patterns=None):
|
|
62
|
+
url = self.url_base + '/'.join(subdirs)
|
|
63
|
+
r = requests.get(url)
|
|
64
|
+
|
|
65
|
+
soup = bs4.BeautifulSoup(r.text, 'html.parser')
|
|
66
|
+
a_tags = soup.find_all('a', href=True)
|
|
67
|
+
hrefs = [a_tag['href'] for a_tag in a_tags]
|
|
68
|
+
|
|
69
|
+
search_pattern = '.*' + '.*'.join(file_name_patterns) + '.*'
|
|
70
|
+
fn_regex = re.compile(search_pattern)
|
|
71
|
+
hrefs = list(filter(fn_regex.match, hrefs))
|
|
72
|
+
|
|
73
|
+
paths = []
|
|
74
|
+
for href in hrefs:
|
|
75
|
+
paths.append(url + '/' + href)
|
|
76
|
+
return paths
|
|
77
|
+
|
|
78
|
+
def download_from_http(self, ):
|
|
79
|
+
|
|
80
|
+
source_file_paths = self.search_from_http()
|
|
81
|
+
|
|
82
|
+
for url in source_file_paths:
|
|
83
|
+
if self.dry_run:
|
|
84
|
+
print(f"Dry run: {url}.")
|
|
85
|
+
else:
|
|
86
|
+
self.save_file_from_http(url=url)
|
|
87
|
+
|
|
88
|
+
def save_file_from_http(self, url, file_dir=None, file_name=None):
|
|
89
|
+
if file_name is None:
|
|
90
|
+
file_name = url.split('/')[-1]
|
|
91
|
+
file_path = file_dir / file_name
|
|
92
|
+
if file_path.is_file():
|
|
93
|
+
mylog.simpleinfo.info(
|
|
94
|
+
"The file {} exists in the directory {}.".format(file_path.name, file_path.parent.resolve()))
|
|
95
|
+
if not self.force_download:
|
|
96
|
+
self.done = True
|
|
97
|
+
return
|
|
98
|
+
|
|
99
|
+
file_path.parent.resolve().mkdir(parents=True, exist_ok=True)
|
|
100
|
+
mylog.simpleinfo.info(f'Downloading {file_name} ...')
|
|
101
|
+
res = self._download_by_requests_get(url, data_file_path=file_path)
|
|
102
|
+
if res:
|
|
103
|
+
mylog.simpleinfo.info(f'Saved in {file_dir}')
|
|
104
|
+
self.done = True
|
|
105
|
+
else:
|
|
106
|
+
mylog.StreamLogger.error(f"Error during downloading. Code: {res}.")
|
|
107
|
+
|
|
108
|
+
return
|
|
109
|
+
|
|
110
|
+
@staticmethod
|
|
111
|
+
def _download_by_requests_get(url, data_file_path=None, params=None, stream=True, allow_redirects=True, **kwargs):
|
|
112
|
+
r = requests.get(url, params=params, stream=stream, allow_redirects=allow_redirects, **kwargs)
|
|
113
|
+
if r.status_code != 200:
|
|
114
|
+
return -2
|
|
115
|
+
|
|
116
|
+
total_size_in_bytes = int(r.headers.get('content-length', 0))
|
|
117
|
+
block_size = 1024 # 1 Kibibyte
|
|
118
|
+
progress_bar = tqdm.tqdm(total=total_size_in_bytes, unit='iB', unit_scale=True)
|
|
119
|
+
|
|
120
|
+
with open(data_file_path, 'wb') as file:
|
|
121
|
+
for data in r.iter_content(block_size):
|
|
122
|
+
progress_bar.update(len(data))
|
|
123
|
+
file.write(data)
|
|
124
|
+
progress_bar.close()
|
|
125
|
+
if total_size_in_bytes != 0 and progress_bar.n != total_size_in_bytes:
|
|
126
|
+
mylog.StreamLogger.error("Something wrong during the download!")
|
|
127
|
+
data_file_path.unlink(missing_ok=True)
|
|
128
|
+
return -1
|
|
129
|
+
|
|
130
|
+
return 1
|
|
131
|
+
|
|
132
|
+
def search_from_ftp(self, ftp, file_name_patterns=None):
|
|
133
|
+
paths = []
|
|
134
|
+
|
|
135
|
+
return paths
|
|
136
|
+
|
|
137
|
+
def save_file(self, file_dir, file_name, r_source_file):
|
|
138
|
+
file_path = file_dir / file_name
|
|
139
|
+
|
|
140
|
+
if file_path.is_file():
|
|
141
|
+
mylog.simpleinfo.info(
|
|
142
|
+
"The file {} exists in the directory {}.".format(file_path.name, file_path.parent.resolve()))
|
|
143
|
+
|
|
144
|
+
if self.force_download:
|
|
145
|
+
file_path.parent.resolve().mkdir(parents=True, exist_ok=True)
|
|
146
|
+
with open(file_path, "wb") as f:
|
|
147
|
+
mylog.simpleinfo.info(
|
|
148
|
+
"Downloading {} to the directory {} ...".format(file_path.name, file_path.parent.resolve())
|
|
149
|
+
)
|
|
150
|
+
f.write(r_source_file.content)
|
|
151
|
+
mylog.simpleinfo.info("Done")
|
|
152
|
+
|
{geospacelab-0.9.1 → geospacelab-0.9.2}/geospacelab/datahub/sources/esa_eo/swarm/downloader.py
RENAMED
|
@@ -71,14 +71,16 @@ class Downloader(DownloaderBase):
|
|
|
71
71
|
this_month = dttool.get_next_n_months(self.dt_fr, nm)
|
|
72
72
|
file_name_patterns = copy.deepcopy(default_file_name_patterns)
|
|
73
73
|
file_name_patterns.append(this_month.strftime("%Y%m"))
|
|
74
|
+
ftp = ftplib.FTP_TLS()
|
|
75
|
+
ftp.connect(self.ftp_host, self.ftp_port, 30)
|
|
74
76
|
try:
|
|
75
|
-
ftp = ftplib.FTP_TLS()
|
|
76
|
-
ftp.connect(self.ftp_host, self.ftp_port, 30) # 30 timeout
|
|
77
77
|
ftp.login(user=self.username, passwd=self.__password__)
|
|
78
78
|
ftp.cwd(self.ftp_data_dir)
|
|
79
79
|
file_list = ftp.nlst()
|
|
80
80
|
|
|
81
81
|
file_names, versions = self.search_files(file_list=file_list, file_name_patterns=file_name_patterns)
|
|
82
|
+
if file_names is None:
|
|
83
|
+
raise FileNotFoundError
|
|
82
84
|
file_dir_root = self.data_file_root_dir
|
|
83
85
|
for ind_f, file_name in enumerate(file_names):
|
|
84
86
|
dt_regex = re.compile(r'(\d{8}T\d{6})_(\d{8}T\d{6})_(\d{4})')
|
|
@@ -129,11 +131,11 @@ class Downloader(DownloaderBase):
|
|
|
129
131
|
mylog.simpleinfo.info("Done. The zip file has been removed.")
|
|
130
132
|
|
|
131
133
|
done = True
|
|
132
|
-
ftp.quit()
|
|
133
134
|
except Exception as e:
|
|
134
135
|
print('Error during download from FTP')
|
|
135
136
|
print(e)
|
|
136
137
|
done = False
|
|
138
|
+
ftp.quit()
|
|
137
139
|
return done
|
|
138
140
|
|
|
139
141
|
def search_files(self, file_list=None, file_name_patterns=None):
|
|
@@ -166,7 +168,8 @@ class Downloader(DownloaderBase):
|
|
|
166
168
|
|
|
167
169
|
ind_dt = np.where((self.dt_fr <= stop_dts) & (self.dt_to >= start_dts))[0]
|
|
168
170
|
if not list(ind_dt):
|
|
169
|
-
|
|
171
|
+
mylog.StreamLogger.info("No matching files found on the ftp")
|
|
172
|
+
return None, None
|
|
170
173
|
file_list = [file_list[ii] for ii in ind_dt]
|
|
171
174
|
versions = [versions[ii] for ii in ind_dt]
|
|
172
175
|
|
|
@@ -14,9 +14,9 @@ from geospacelab.config import prf
|
|
|
14
14
|
import geospacelab.toolbox.utilities.pybasic as basic
|
|
15
15
|
import geospacelab.toolbox.utilities.pylogging as mylog
|
|
16
16
|
import geospacelab.toolbox.utilities.pydatetime as dttool
|
|
17
|
-
from geospacelab.datahub.sources.esa_eo.swarm.l2daily.
|
|
18
|
-
from geospacelab.datahub.sources.esa_eo.swarm.l2daily.
|
|
19
|
-
import geospacelab.datahub.sources.esa_eo.swarm.l2daily.
|
|
17
|
+
from geospacelab.datahub.sources.esa_eo.swarm.l2daily.dns_acc.loader import Loader as default_Loader
|
|
18
|
+
from geospacelab.datahub.sources.esa_eo.swarm.l2daily.dns_acc.downloader import Downloader as default_Downloader
|
|
19
|
+
import geospacelab.datahub.sources.esa_eo.swarm.l2daily.dns_acc.variable_config as var_config
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
default_dataset_attrs = {
|
|
@@ -47,8 +47,6 @@ default_variable_names = [
|
|
|
47
47
|
'SC_GEO_ALT',
|
|
48
48
|
'SC_GEO_LST',
|
|
49
49
|
'rho_n',
|
|
50
|
-
'rho_n_ORBITMEAN',
|
|
51
|
-
'FLAG',
|
|
52
50
|
]
|
|
53
51
|
|
|
54
52
|
# default_data_search_recursive = True
|
|
@@ -78,7 +76,7 @@ class Dataset(datahub.DatasetSourced):
|
|
|
78
76
|
|
|
79
77
|
self.sat_id = kwargs.pop('sat_id', 'A')
|
|
80
78
|
|
|
81
|
-
self.metadata =
|
|
79
|
+
self.metadata = {}
|
|
82
80
|
|
|
83
81
|
allow_load = kwargs.pop('allow_load', False)
|
|
84
82
|
|
|
@@ -212,6 +210,63 @@ class Dataset(datahub.DatasetSourced):
|
|
|
212
210
|
self['SC_AACGM_LON'].value = cs_aacgm['lon'].reshape(self['SC_DATETIME'].value.shape)
|
|
213
211
|
self['SC_AACGM_MLT'].value = cs_aacgm['mlt'].reshape(self['SC_DATETIME'].value.shape)
|
|
214
212
|
|
|
213
|
+
def interp_evenly(self, time_res=None, data_time_res = 30, dt_fr=None, dt_to=None, masked=False):
|
|
214
|
+
from scipy.interpolate import interp1d
|
|
215
|
+
import geospacelab.toolbox.utilities.numpymath as nm
|
|
216
|
+
|
|
217
|
+
if time_res is None:
|
|
218
|
+
time_res = data_time_res
|
|
219
|
+
|
|
220
|
+
ds_new = datahub.DatasetUser(dt_fr=self.dt_fr, dt_to=self.dt_to, visual=self.visual)
|
|
221
|
+
ds_new.clone_variables(self)
|
|
222
|
+
dts = ds_new['SC_DATETIME'].value.flatten()
|
|
223
|
+
dt0 = dttool.get_start_of_the_day(dts[0])
|
|
224
|
+
x_0 = np.array([(dt - dt0).total_seconds() for dt in dts])
|
|
225
|
+
if dt_fr is None:
|
|
226
|
+
dt_fr = dts[0] - datetime.timedelta(
|
|
227
|
+
seconds=np.floor(((dts[0] - ds_new.dt_fr).total_seconds() / time_res)) * time_res
|
|
228
|
+
)
|
|
229
|
+
if dt_to is None:
|
|
230
|
+
dt_to = dts[-1] + datetime.timedelta(
|
|
231
|
+
seconds=np.floor(((ds_new.dt_to - dts[-1]).total_seconds() / time_res)) * time_res
|
|
232
|
+
)
|
|
233
|
+
sec_fr = (dt_fr - dt0).total_seconds()
|
|
234
|
+
sec_to = (dt_to - dt0).total_seconds()
|
|
235
|
+
x_1 = np.arange(sec_fr, sec_to + time_res / 2, time_res)
|
|
236
|
+
|
|
237
|
+
f = interp1d(x_0, x_0, kind='nearest', bounds_error=False, fill_value=(x_0[0], x_0[-1]))
|
|
238
|
+
pseudo_x = f(x_1)
|
|
239
|
+
mask = np.abs(pseudo_x - x_1) > data_time_res / 1.5
|
|
240
|
+
|
|
241
|
+
dts_new = np.array([dt0 + datetime.timedelta(seconds=sec) for sec in x_1])
|
|
242
|
+
ds_new['SC_DATETIME'].value = dts_new.reshape((dts_new.size, 1))
|
|
243
|
+
|
|
244
|
+
period_var_dict = {'SC_GEO_LON': 360.,
|
|
245
|
+
'SC_AACGM_LON': 360.,
|
|
246
|
+
'SC_APEX_LON': 360.,
|
|
247
|
+
'SC_GEO_LST': 24.,
|
|
248
|
+
'SC_AACGM_MLT': 24.,
|
|
249
|
+
'SC_APEX_MLT': 24}
|
|
250
|
+
|
|
251
|
+
for var_name in ds_new.keys():
|
|
252
|
+
if var_name in ['SC_DATETIME']:
|
|
253
|
+
continue
|
|
254
|
+
if var_name in period_var_dict.keys():
|
|
255
|
+
var = ds_new[var_name].value.flatten()
|
|
256
|
+
var_new = nm.interp_period_data(x_0, var, x_1, period=period_var_dict[var_name], method='linear',
|
|
257
|
+
bounds_error=False)
|
|
258
|
+
else:
|
|
259
|
+
method = 'linear' if 'FLAG' not in var_name else 'nearest'
|
|
260
|
+
var = ds_new[var_name].value.flatten()
|
|
261
|
+
f = interp1d(x_0, var, kind=method, bounds_error=False)
|
|
262
|
+
var_new = f(x_1)
|
|
263
|
+
if masked:
|
|
264
|
+
var_new = np.ma.array(var_new, mask=mask, fill_value=np.nan)
|
|
265
|
+
else:
|
|
266
|
+
var_new[mask] = np.nan
|
|
267
|
+
ds_new[var_name].value = var_new.reshape((dts_new.size, 1))
|
|
268
|
+
return ds_new
|
|
269
|
+
|
|
215
270
|
def time_filter_by_quality(self, quality_lim=None):
|
|
216
271
|
if quality_lim is None:
|
|
217
272
|
quality_lim = 0
|
|
@@ -253,7 +308,7 @@ class Dataset(datahub.DatasetSourced):
|
|
|
253
308
|
sat_id = self.sat_id
|
|
254
309
|
file_patterns = [
|
|
255
310
|
'DNS' + sat_id.upper(),
|
|
256
|
-
'
|
|
311
|
+
'ACC_2',
|
|
257
312
|
this_day.strftime('%Y%m%d') + 'T'
|
|
258
313
|
]
|
|
259
314
|
# remove empty str
|
|
@@ -276,6 +331,7 @@ class Dataset(datahub.DatasetSourced):
|
|
|
276
331
|
search_pattern=search_pattern,
|
|
277
332
|
allow_multiple_files=True
|
|
278
333
|
)
|
|
334
|
+
self.allow_download = False
|
|
279
335
|
|
|
280
336
|
return done
|
|
281
337
|
|
|
@@ -29,7 +29,7 @@ class Downloader(DownloaderModel):
|
|
|
29
29
|
|
|
30
30
|
if ftp_data_dir is None:
|
|
31
31
|
ftp_data_dir = f'Level2daily/Latest_baselines/DNS/ACC/Sat_{sat_id.upper()}'
|
|
32
|
-
|
|
32
|
+
# ftp_data_dir = f'Level2daily/Older_baselines/DNS/ACC/Sat_{sat_id.upper()}'
|
|
33
33
|
if data_file_root_dir is None:
|
|
34
34
|
data_file_root_dir = prf.datahub_data_root_dir / "ESA" / "SWARM" / "Level2daily" / "DNS_ACC"
|
|
35
35
|
file_name_patterns = list(self._default_file_name_patterns)
|
|
@@ -14,14 +14,12 @@ from geospacelab.datahub.sources.esa_eo.swarm.loader import LoaderModel
|
|
|
14
14
|
|
|
15
15
|
# define the default variable name dictionary
|
|
16
16
|
default_variable_name_dict = {
|
|
17
|
-
'CDF_EPOCH': '
|
|
17
|
+
'CDF_EPOCH': 'time',
|
|
18
18
|
'SC_GEO_LAT': 'latitude',
|
|
19
19
|
'SC_GEO_LON': 'longitude',
|
|
20
20
|
'SC_GEO_ALT': 'altitude',
|
|
21
21
|
'SC_GEO_LST': 'local_solar_time',
|
|
22
22
|
'rho_n': 'density',
|
|
23
|
-
'rho_n_ORBITMEAN': 'density_orbitmean',
|
|
24
|
-
'FLAG': 'validity_flag',
|
|
25
23
|
}
|
|
26
24
|
|
|
27
25
|
|
|
@@ -38,4 +36,5 @@ class Loader(LoaderModel):
|
|
|
38
36
|
|
|
39
37
|
def load_data(self, **kwargs):
|
|
40
38
|
super(Loader, self).load_data(**kwargs)
|
|
39
|
+
self.variables['rho_n'][self.variables['rho_n']>1] = np.nan
|
|
41
40
|
self.variables['SC_GEO_ALT'] = self.variables['SC_GEO_ALT'] * 1e-3
|
|
@@ -78,7 +78,7 @@ class Dataset(datahub.DatasetSourced):
|
|
|
78
78
|
|
|
79
79
|
self.sat_id = kwargs.pop('sat_id', 'A')
|
|
80
80
|
|
|
81
|
-
self.metadata =
|
|
81
|
+
self.metadata = {}
|
|
82
82
|
|
|
83
83
|
allow_load = kwargs.pop('allow_load', False)
|
|
84
84
|
|
|
@@ -167,7 +167,7 @@ class Dataset(datahub.DatasetSourced):
|
|
|
167
167
|
def add_GEO_LST(self):
|
|
168
168
|
lons = self['SC_GEO_LON'].flatten()
|
|
169
169
|
uts = self['SC_DATETIME'].flatten()
|
|
170
|
-
lsts = [ut + datetime.timedelta(hours=lon / 15.) for ut, lon in zip(uts, lons)]
|
|
170
|
+
lsts = [ut + datetime.timedelta(hours=int(lon / 15.)) for ut, lon in zip(uts, lons)]
|
|
171
171
|
lsts = [lst.hour + lst.minute / 60. + lst.second / 3600. for lst in lsts]
|
|
172
172
|
var = self.add_variable(var_name='SC_GEO_LST')
|
|
173
173
|
var.value = np.array(lsts)[:, np.newaxis]
|
|
@@ -212,6 +212,63 @@ class Dataset(datahub.DatasetSourced):
|
|
|
212
212
|
self['SC_AACGM_LON'].value = cs_aacgm['lon'].reshape(self['SC_DATETIME'].value.shape)
|
|
213
213
|
self['SC_AACGM_MLT'].value = cs_aacgm['mlt'].reshape(self['SC_DATETIME'].value.shape)
|
|
214
214
|
|
|
215
|
+
def interp_evenly(self, time_res=None, data_time_res = 30, dt_fr=None, dt_to=None, masked=False):
|
|
216
|
+
from scipy.interpolate import interp1d
|
|
217
|
+
import geospacelab.toolbox.utilities.numpymath as nm
|
|
218
|
+
|
|
219
|
+
if time_res is None:
|
|
220
|
+
time_res = data_time_res
|
|
221
|
+
|
|
222
|
+
ds_new = datahub.DatasetUser(dt_fr=self.dt_fr, dt_to=self.dt_to, visual=self.visual)
|
|
223
|
+
ds_new.clone_variables(self)
|
|
224
|
+
dts = ds_new['SC_DATETIME'].value.flatten()
|
|
225
|
+
dt0 = dttool.get_start_of_the_day(dts[0])
|
|
226
|
+
x_0 = np.array([(dt - dt0).total_seconds() for dt in dts])
|
|
227
|
+
if dt_fr is None:
|
|
228
|
+
dt_fr = dts[0] - datetime.timedelta(
|
|
229
|
+
seconds=np.floor(((dts[0] - ds_new.dt_fr).total_seconds() / time_res)) * time_res
|
|
230
|
+
)
|
|
231
|
+
if dt_to is None:
|
|
232
|
+
dt_to = dts[-1] + datetime.timedelta(
|
|
233
|
+
seconds=np.floor(((ds_new.dt_to - dts[-1]).total_seconds() / time_res)) * time_res
|
|
234
|
+
)
|
|
235
|
+
sec_fr = (dt_fr - dt0).total_seconds()
|
|
236
|
+
sec_to = (dt_to - dt0).total_seconds()
|
|
237
|
+
x_1 = np.arange(sec_fr, sec_to + time_res / 2, time_res)
|
|
238
|
+
|
|
239
|
+
f = interp1d(x_0, x_0, kind='nearest', bounds_error=False, fill_value=(x_0[0], x_0[-1]))
|
|
240
|
+
pseudo_x = f(x_1)
|
|
241
|
+
mask = np.abs(pseudo_x - x_1) > data_time_res / 1.5
|
|
242
|
+
|
|
243
|
+
dts_new = np.array([dt0 + datetime.timedelta(seconds=sec) for sec in x_1])
|
|
244
|
+
ds_new['SC_DATETIME'].value = dts_new.reshape((dts_new.size, 1))
|
|
245
|
+
|
|
246
|
+
period_var_dict = {'SC_GEO_LON': 360.,
|
|
247
|
+
'SC_AACGM_LON': 360.,
|
|
248
|
+
'SC_APEX_LON': 360.,
|
|
249
|
+
'SC_GEO_LST': 24.,
|
|
250
|
+
'SC_AACGM_MLT': 24.,
|
|
251
|
+
'SC_APEX_MLT': 24}
|
|
252
|
+
|
|
253
|
+
for var_name in ds_new.keys():
|
|
254
|
+
if var_name in ['SC_DATETIME']:
|
|
255
|
+
continue
|
|
256
|
+
if var_name in period_var_dict.keys():
|
|
257
|
+
var = ds_new[var_name].value.flatten()
|
|
258
|
+
var_new = nm.interp_period_data(x_0, var, x_1, period=period_var_dict[var_name], method='linear',
|
|
259
|
+
bounds_error=False)
|
|
260
|
+
else:
|
|
261
|
+
method = 'linear' if 'FLAG' not in var_name else 'nearest'
|
|
262
|
+
var = ds_new[var_name].value.flatten()
|
|
263
|
+
f = interp1d(x_0, var, kind=method, bounds_error=False)
|
|
264
|
+
var_new = f(x_1)
|
|
265
|
+
if masked:
|
|
266
|
+
var_new = np.ma.array(var_new, mask=mask, fill_value=np.nan)
|
|
267
|
+
else:
|
|
268
|
+
var_new[mask] = np.nan
|
|
269
|
+
ds_new[var_name].value = var_new.reshape((dts_new.size, 1))
|
|
270
|
+
return ds_new
|
|
271
|
+
|
|
215
272
|
def time_filter_by_quality(self, quality_lim=None):
|
|
216
273
|
if quality_lim is None:
|
|
217
274
|
quality_lim = 0
|
|
@@ -29,9 +29,11 @@ class Downloader(DownloaderModel):
|
|
|
29
29
|
|
|
30
30
|
if ftp_data_dir is None:
|
|
31
31
|
ftp_data_dir = f'Level2daily/Latest_baselines/DNS/POD/Sat_{sat_id.upper()}'
|
|
32
|
+
# ftp_data_dir = f'Level2daily/Older_baselines/DNS/POD/Sat_{sat_id.upper()}'
|
|
32
33
|
|
|
33
34
|
if data_file_root_dir is None:
|
|
34
35
|
data_file_root_dir = prf.datahub_data_root_dir / "ESA" / "SWARM" / "Level2daily" / "DNS_POD"
|
|
36
|
+
|
|
35
37
|
file_name_patterns = list(self._default_file_name_patterns)
|
|
36
38
|
|
|
37
39
|
file_name_patterns.extend(['DNS' + sat_id.upper()])
|
|
@@ -38,4 +38,7 @@ class Loader(LoaderModel):
|
|
|
38
38
|
|
|
39
39
|
def load_data(self, **kwargs):
|
|
40
40
|
super(Loader, self).load_data(**kwargs)
|
|
41
|
+
self.variables['rho_n'][self.variables['rho_n'] > 1] = np.nan
|
|
42
|
+
self.variables['rho_n'][self.variables['rho_n'] <= 0] = np.nan
|
|
43
|
+
self.variables['rho_n'][self.variables['FLAG'] > 0] = np.nan
|
|
41
44
|
self.variables['SC_GEO_ALT'] = self.variables['SC_GEO_ALT'] * 1e-3
|
|
@@ -108,7 +108,7 @@ class EISCATDashboard(TSDashboard):
|
|
|
108
108
|
|
|
109
109
|
def save_figure(self, file_name=None, file_dir=None, append_time=True, **kwargs):
|
|
110
110
|
if file_name is None:
|
|
111
|
-
file_name =
|
|
111
|
+
file_name = '_'.join([s.strip() for s in self.title.split(',')])
|
|
112
112
|
super().save_figure(file_name=file_name, file_dir=file_dir, append_time=append_time, **kwargs)
|
|
113
113
|
|
|
114
114
|
def add_title(self, x=0.5, y=1.06, title=None, append_time=True, **kwargs):
|
|
@@ -158,7 +158,8 @@ def example():
|
|
|
158
158
|
modulation = '60'
|
|
159
159
|
load_mode = 'AUTO'
|
|
160
160
|
dashboard = EISCATDashboard(
|
|
161
|
-
dt_fr, dt_to, site=site, antenna=antenna, modulation=modulation, load_mode='AUTO'
|
|
161
|
+
dt_fr, dt_to, site=site, antenna=antenna, modulation=modulation, load_mode='AUTO',
|
|
162
|
+
data_file_type="madrigal-hdf5"
|
|
162
163
|
)
|
|
163
164
|
dashboard.quicklook()
|
|
164
165
|
|
|
@@ -385,7 +385,7 @@ class TSDashboard(Dashboard):
|
|
|
385
385
|
|
|
386
386
|
return results
|
|
387
387
|
|
|
388
|
-
def add_shading(self, dt_fr, dt_to, panel_index
|
|
388
|
+
def add_shading(self, dt_fr, dt_to, panel_index=-1,
|
|
389
389
|
label=None, label_position=None, top_extend=0., bottom_extend=0., **kwargs):
|
|
390
390
|
|
|
391
391
|
if label_position is None:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: geospacelab
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.2
|
|
4
4
|
Summary: Collect, manage, and visualize geospace data.
|
|
5
5
|
Home-page: https://github.com/JouleCai/geospacelab
|
|
6
6
|
Author: Lei Cai
|
|
@@ -263,7 +263,7 @@ modulation = 'ant'
|
|
|
263
263
|
dh = DataHub(dt_fr, dt_to)
|
|
264
264
|
# dock the first dataset (dataset index starts from 0)
|
|
265
265
|
ds_isr = dh.dock(datasource_contents=[database_name, 'isr', facility_name],
|
|
266
|
-
site=site, antenna=antenna, modulation=modulation, data_file_type='
|
|
266
|
+
site=site, antenna=antenna, modulation=modulation, data_file_type='madrigal-hdf5')
|
|
267
267
|
# load data
|
|
268
268
|
ds_isr.load_data()
|
|
269
269
|
# assign a variable from its own dataset to the datahub
|
|
@@ -304,7 +304,8 @@ antenna = 'UHF'
|
|
|
304
304
|
modulation = '60'
|
|
305
305
|
load_mode = 'AUTO'
|
|
306
306
|
dashboard = eiscat.EISCATDashboard(
|
|
307
|
-
dt_fr, dt_to, site=site, antenna=antenna, modulation=modulation, load_mode='AUTO'
|
|
307
|
+
dt_fr, dt_to, site=site, antenna=antenna, modulation=modulation, load_mode='AUTO',
|
|
308
|
+
data_file_type="madrigal-hdf5"
|
|
308
309
|
)
|
|
309
310
|
dashboard.quicklook()
|
|
310
311
|
|
|
@@ -392,12 +393,16 @@ dashboard = geomap.GeoDashboard(dt_fr=dt_fr, dt_to=dt_to, figure_config={'figsiz
|
|
|
392
393
|
# If the orbit_id is specified, only one file will be downloaded. This option saves the downloading time.
|
|
393
394
|
# dashboard.dock(datasource_contents=['jhuapl', 'dmsp', 'ssusi', 'edraur'], pole='N', sat_id='f17', orbit_id='46863')
|
|
394
395
|
# If not specified, the data during the whole day will be downloaded.
|
|
395
|
-
dashboard.dock(
|
|
396
|
+
dashboard.dock(
|
|
397
|
+
datasource_contents=dashboard.dock(datasource_contents=['cdaweb', 'dmsp', 'ssusi', 'edr_aur'],
|
|
398
|
+
pole=pole, sat_id=sat_id, orbit_id=None
|
|
399
|
+
)
|
|
396
400
|
ds_s1 = dashboard.dock(
|
|
397
401
|
datasource_contents=['madrigal', 'satellites', 'dmsp', 's1'],
|
|
398
402
|
dt_fr=time1 - datetime.timedelta(minutes=45),
|
|
399
403
|
dt_to=time1 + datetime.timedelta(minutes=45),
|
|
400
|
-
sat_id=sat_id
|
|
404
|
+
sat_id=sat_id
|
|
405
|
+
)
|
|
401
406
|
|
|
402
407
|
dashboard.set_layout(1, 1)
|
|
403
408
|
|