geospacelab 0.10.2__tar.gz → 0.10.3__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.10.2/geospacelab.egg-info → geospacelab-0.10.3}/PKG-INFO +1 -2
- {geospacelab-0.10.2 → geospacelab-0.10.3}/README.md +0 -1
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/__init__.py +1 -1
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/__init__.py +2 -2
- geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/loader.py +396 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/variable_config.py +1 -1
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/__init__.py +5 -7
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/loader.py +6 -6
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/__init__.py +4 -6
- geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/risr_n/downloader.py +155 -0
- geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/risr_n/fitted/__init__.py +422 -0
- geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/risr_n/fitted/downloader.py +73 -0
- geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/risr_n/fitted/loader.py +225 -0
- geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/risr_n/fitted/variable_config.py +278 -0
- geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/risr_n/vi/__init__.py +343 -0
- geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/risr_n/vi/downloader.py +62 -0
- geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/risr_n/vi/loader.py +108 -0
- geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/risr_n/vi/variable_config.py +671 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/panels.py +6 -3
- geospacelab-0.10.3/geospacelab/wrapper/geopack/geopack/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3/geospacelab.egg-info}/PKG-INFO +1 -2
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab.egg-info/SOURCES.txt +10 -0
- geospacelab-0.10.2/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/loader.py +0 -201
- {geospacelab-0.10.2 → geospacelab-0.10.3}/LICENSE +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/MANIFEST.in +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/config/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/config/_preferences.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/cs/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/cs/_aacgm.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/cs/_apex.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/cs/_cs_base.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/cs/_geo.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/cs/geo_utilities.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/__dataset_base__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/__metadata_base__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/__variable_base__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/dmsp/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/omni/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/omni/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/omni/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/omni/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/advanced/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_fp/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct16/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l1b/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2d/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2l/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/multimission/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/fmi/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/fmi/image/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/fmi/image/ie/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/fmi/image/ie/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/fmi/image/ie/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/fmi/image/ie/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/fmi/miracle/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/fmi/miracle/abk/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/fmi/miracle/kev/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/fmi/miracle/muo/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/hpo/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/hpo/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/hpo/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/hpo/nowcast/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/hpo/nowcast/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/hpo/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/kpap/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/kpap/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/kpap/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/kpap/nowcast/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/kpap/nowcast/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/kpap/nowcast/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/kpap/nowcast/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/kpap/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/snf107/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/snf107/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/snf107/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/isee/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/isee/gnss/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/isee/gnss/tecmap/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/isee/gnss/tecmap/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/isee/gnss/tecmap/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/isee/gnss/tecmap/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/ampere/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/ampere/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/ampere/fitted/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/ampere/fitted/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/ampere/fitted/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/ampere/grd/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/ampere/grd/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/ampere/grd/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/ampere/grd/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/dmsp/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/edraur/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/edraur/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/edraur/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/sdrdisk/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/sdrdisk/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/sdrdisk/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/gnss/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/gnss/tecmap/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/gnss/tecmap/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/gnss/tecmap/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/gnss/tecmap/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/eiscat/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/eiscat/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/eiscat/examples/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/eiscat/examples/eiscat_hdf5_info.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/eiscat/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/eiscat/utilities.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/eiscat/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/millstonehill/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/millstonehill/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/millstonehill/gridded/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/millstonehill/gridded/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/millstonehill/gridded/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/millstonehill/vi/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/millstonehill/vi/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/millstonehill/vi/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/pfisr/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/pfisr/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/variable_config.py +0 -0
- {geospacelab-0.10.2/geospacelab/datahub/sources/madrigal/satellites → geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/risr_n}/__init__.py +0 -0
- {geospacelab-0.10.2/geospacelab/datahub/sources/nipr/asc → geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/satellites}/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/satellites/dmsp/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/satellites/dmsp/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/satellites/dmsp/e/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/satellites/dmsp/e/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/satellites/dmsp/e/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s1/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s1/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s1/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s4/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s4/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s4/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/utilities.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/ncei/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/ncei/dmsp/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/ncei/dmsp/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/nipr/__init__.py +0 -0
- {geospacelab-0.10.2/geospacelab/datahub/sources/noaa → geospacelab-0.10.3/geospacelab/datahub/sources/nipr/asc}/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/nipr/asc/tro_wmi/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/nipr/asc/tro_wmi/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/nipr/asc/tro_wmi/variable_config.py +0 -0
- {geospacelab-0.10.2/geospacelab/datahub/sources/noaa/swpc → geospacelab-0.10.3/geospacelab/datahub/sources/noaa}/__init__.py +0 -0
- {geospacelab-0.10.2/geospacelab/datahub/sources/noaa/swpc/goesxray → geospacelab-0.10.3/geospacelab/datahub/sources/noaa/swpc}/__init__.py +0 -0
- {geospacelab-0.10.2/geospacelab/datahub/sources/noaa/swpc/solarwind → geospacelab-0.10.3/geospacelab/datahub/sources/noaa/swpc/goesxray}/__init__.py +0 -0
- {geospacelab-0.10.2/geospacelab/future → geospacelab-0.10.3/geospacelab/datahub/sources/noaa/swpc/solarwind}/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/superdarn/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/superdarn/potmap/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/superdarn/potmap/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/superdarn/potmap/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/superdarn/potmap/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/supermag/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/supermag/indices/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/supermag/indices/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/supermag/indices/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/supermag/indices/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/supermag/magnetometer/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/supermag/magnetometer/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/supermag/magnetometer/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/supermag/magnetometer/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/supermag/supermag_api.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/supermag/utilities.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/champ/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/champ/dns_acc/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/champ/dns_acc/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/champ/dns_acc/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/champ/dns_acc/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/champ/wnd_acc/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/champ/wnd_acc/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/champ/wnd_acc/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/champ/wnd_acc/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/goce/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace/dns_acc/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace/dns_acc/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace/dns_acc/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace/dns_acc/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace/wnd_acc/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace/wnd_acc/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace/wnd_acc/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace/wnd_acc/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace_fo/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/swarm/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/swarm/dns_acc/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/swarm/dns_acc/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/swarm/dns_acc/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/swarm/dns_acc/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/swarm/dns_pod/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/swarm/dns_pod/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/swarm/dns_pod/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/swarm/dns_pod/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/ae/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/ae/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/ae/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/ae/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/asysym/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/asysym/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/asysym/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/asysym/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/dst/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/dst/downloader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/dst/loader.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/dst/variable_config.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/express/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/express/dmsp_dashboard.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/express/eiscat_dashboard.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/express/millstonehill_dashboard.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/express/omni_dashboard.py +0 -0
- {geospacelab-0.10.2/geospacelab/future/empiricalmodels → geospacelab-0.10.3/geospacelab/future}/__init__.py +0 -0
- {geospacelab-0.10.2/geospacelab/future/empiricalmodels/ovationprime2010 → geospacelab-0.10.3/geospacelab/future/empiricalmodels}/__init__.py +0 -0
- {geospacelab-0.10.2/geospacelab/future/satllites → geospacelab-0.10.3/geospacelab/future/empiricalmodels/ovationprime2010}/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/future/empiricalmodels/ovationprime2010/ovationprime.py +0 -0
- {geospacelab-0.10.2/geospacelab/observatory → geospacelab-0.10.3/geospacelab/future/satllites}/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/future/satllites/orbit_analyzer.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/future/test_sscws.py +0 -0
- {geospacelab-0.10.2/geospacelab/observatory/earth → geospacelab-0.10.3/geospacelab/observatory}/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/observatory/constants.py +0 -0
- {geospacelab-0.10.2/geospacelab/observatory/orbit → geospacelab-0.10.3/geospacelab/observatory/earth}/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/observatory/earth/_func.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/observatory/earth/constants.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/observatory/earth/geodesy.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/observatory/earth/sun_position.py +0 -0
- {geospacelab-0.10.2/geospacelab/observatory/site → geospacelab-0.10.3/geospacelab/observatory/orbit}/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/observatory/orbit/sc_orbit.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/observatory/orbit/utilities.py +0 -0
- {geospacelab-0.10.2/geospacelab/quantity → geospacelab-0.10.3/geospacelab/observatory/site}/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/observatory/site/mixins.py +0 -0
- {geospacelab-0.10.2/geospacelab/toolbox/unit → geospacelab-0.10.3/geospacelab/quantity}/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/toolbox/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/toolbox/io/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/toolbox/io/dialog.py +0 -0
- {geospacelab-0.10.2/geospacelab/visualization/plotly → geospacelab-0.10.3/geospacelab/toolbox/unit}/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/toolbox/utilities/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/toolbox/utilities/numpyarray.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/toolbox/utilities/numpymath.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/toolbox/utilities/pybasic.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/toolbox/utilities/pyclass.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/toolbox/utilities/pydatetime.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/toolbox/utilities/pylogging.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/toolbox/utilities/pyos.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/__base__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/_helpers.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/axes.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/axis_ticks.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/colormaps.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/dashboards.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/figure.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/geomap/__base__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/geomap/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/geomap/geodashboards.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/geomap/geopanels.py +0 -0
- {geospacelab-0.10.2/geospacelab/wrapper → geospacelab-0.10.3/geospacelab/visualization/plotly}/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/plotly/ipanel.py +0 -0
- {geospacelab-0.10.2/geospacelab/wrapper/geopack → geospacelab-0.10.3/geospacelab/wrapper}/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/wrapper/geopack/LICENSE +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/wrapper/geopack/README.md +0 -0
- {geospacelab-0.10.2/geospacelab/wrapper/geopack → geospacelab-0.10.3/geospacelab/wrapper}/geopack/__init__.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/wrapper/geopack/geopack/geopack.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/wrapper/geopack/geopack/igrf13coeffs.txt +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/wrapper/geopack/geopack/t01.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/wrapper/geopack/geopack/t04.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/wrapper/geopack/geopack/t89.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/wrapper/geopack/geopack/t96.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/wrapper/geopack/geopack/test_geopack1.md +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/wrapper/geopack/geopack/test_geopack1.py +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab.egg-info/dependency_links.txt +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab.egg-info/requires.txt +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab.egg-info/top_level.txt +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/setup.cfg +0 -0
- {geospacelab-0.10.2 → geospacelab-0.10.3}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: geospacelab
|
|
3
|
-
Version: 0.10.
|
|
3
|
+
Version: 0.10.3
|
|
4
4
|
Summary: Collect, manage, and visualize geospace data.
|
|
5
5
|
Home-page: https://github.com/JouleCai/geospacelab
|
|
6
6
|
Author: Lei Cai
|
|
@@ -64,7 +64,6 @@ Dynamic: summary
|
|
|
64
64
|
[](https://zenodo.org/badge/latestdoi/347315860)
|
|
65
65
|
[](https://pepy.tech/project/geospacelab)
|
|
66
66
|

|
|
67
|
-
[](https://pypi.python.org/pypi/geospacelab/)
|
|
68
67
|
|
|
69
68
|
|
|
70
69
|
GeospaceLAB provides a framework of data access, analysis, and visualization for the researchers in space physics and space weather. The documentation can be found
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
[](https://zenodo.org/badge/latestdoi/347315860)
|
|
9
9
|
[](https://pepy.tech/project/geospacelab)
|
|
10
10
|

|
|
11
|
-
[](https://pypi.python.org/pypi/geospacelab/)
|
|
12
11
|
|
|
13
12
|
|
|
14
13
|
GeospaceLAB provides a framework of data access, analysis, and visualization for the researchers in space physics and space weather. The documentation can be found
|
|
@@ -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.10.
|
|
9
|
+
__version__ = "0.10.3"
|
|
10
10
|
__maintainer__ = "Lei Cai"
|
|
11
11
|
__email__ = "lei.cai@oulu.fi"
|
|
12
12
|
__status__ = "Developing"
|
|
@@ -43,7 +43,7 @@ default_dataset_attrs = {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
default_variable_names = [
|
|
46
|
-
'DATETIME', 'AZ', 'AZ1', 'AZ2', 'EL', 'EL1', 'EL2', 'PULSE_LENGTH',
|
|
46
|
+
'DATETIME', 'DATETIME_1', 'DATETIME_2', 'AZ', 'AZ1', 'AZ2', 'EL', 'EL1', 'EL2', 'PULSE_LENGTH',
|
|
47
47
|
'T_SYS', 'POWER_NORM', 'P_Tx', 'MODE_TYPE', 'POWER_LENGTH_F',
|
|
48
48
|
'LAG_SPACING', 'IPP', 'f_Tx', 'v_PHASE_Tx', 'v_PHASE_Tx_err',
|
|
49
49
|
'SCAN_TYPE', 'CYCN', 'POSN', 'RANGE_RES', 'RANGE',
|
|
@@ -52,7 +52,7 @@ default_variable_names = [
|
|
|
52
52
|
'n_e_err', 'T_i', 'T_i_err', 'T_r', 'T_r_err', 'T_e', 'T_e_err',
|
|
53
53
|
'nu_i', 'nu_i_err', 'v_i_los', 'v_i_los_err', 'comp_H_p',
|
|
54
54
|
'comp_H_p_err', 'comp_mix', 'comp_mix_err', 'v_DOP_los', 'v_DOP_los_err',
|
|
55
|
-
'HEIGHT'
|
|
55
|
+
'HEIGHT',
|
|
56
56
|
]
|
|
57
57
|
|
|
58
58
|
# default_data_search_recursive = True
|
|
@@ -0,0 +1,396 @@
|
|
|
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 h5py
|
|
13
|
+
import numpy as np
|
|
14
|
+
import cftime
|
|
15
|
+
import re
|
|
16
|
+
import datetime
|
|
17
|
+
|
|
18
|
+
import geospacelab.toolbox.utilities.pylogging as mylog
|
|
19
|
+
import geospacelab.toolbox.utilities.pydatetime as dttool
|
|
20
|
+
|
|
21
|
+
pulse_code_dict = {
|
|
22
|
+
'alternating': 97,
|
|
23
|
+
'barker': 98,
|
|
24
|
+
'single pulse': 115,
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
antenna_code_dict = {
|
|
28
|
+
'zenith': 32,
|
|
29
|
+
'misa': 31,
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
antenna_code_dict_r = {v: k for k, v in antenna_code_dict.items()}
|
|
33
|
+
pulse_code_dict_r = {v: k for k, v in pulse_code_dict.items()}
|
|
34
|
+
|
|
35
|
+
var_name_dict = {
|
|
36
|
+
'AZ1': 'az1',
|
|
37
|
+
'AZ2': 'az2',
|
|
38
|
+
'EL1': 'el1',
|
|
39
|
+
'EL2': 'el2',
|
|
40
|
+
'PULSE_LENGTH': 'pl',
|
|
41
|
+
'T_SYS': 'systmp',
|
|
42
|
+
'POWER_NORM': 'pnrmd',
|
|
43
|
+
'P_Tx': 'power',
|
|
44
|
+
'MODE_TYPE': 'mdtyp',
|
|
45
|
+
'POWER_LENGTH_F': 'pulf',
|
|
46
|
+
'LAG_SPACING': 'dtau',
|
|
47
|
+
'IPP': 'ipp',
|
|
48
|
+
'f_Tx': 'tfreq',
|
|
49
|
+
'v_PHASE_Tx': 'vtx',
|
|
50
|
+
'v_PHASE_Tx_err': 'dvtx',
|
|
51
|
+
'SCAN_TYPE': 'scntyp',
|
|
52
|
+
'CYCN': 'cycn',
|
|
53
|
+
'POSN': 'posn',
|
|
54
|
+
'RANGE_RES': 'mresl',
|
|
55
|
+
'RANGE': 'range',
|
|
56
|
+
'SNR': 'snp3',
|
|
57
|
+
'RESIDUAL': 'wchsq',
|
|
58
|
+
'STATUS': 'gfit',
|
|
59
|
+
'FIT_TYPE': 'fit_type',
|
|
60
|
+
'FPI_QUALITY': 'fpi_dataqual',
|
|
61
|
+
'ACF_NORM': 'fa',
|
|
62
|
+
'ACF_NORM_ERR': 'dfa',
|
|
63
|
+
'n_pp': 'popl',
|
|
64
|
+
'n_pp_err': 'dpopl',
|
|
65
|
+
'n_e': 'ne',
|
|
66
|
+
'n_e_err': 'dne',
|
|
67
|
+
'T_i': 'ti',
|
|
68
|
+
'T_i_err': 'dti',
|
|
69
|
+
'T_r': 'tr',
|
|
70
|
+
'T_r_err': 'dtr',
|
|
71
|
+
'nu_i': 'co',
|
|
72
|
+
'nu_i_err': 'dco',
|
|
73
|
+
'v_i_los': 'vo',
|
|
74
|
+
'v_i_los_err': 'dvo',
|
|
75
|
+
'comp_H_p': 'ph+',
|
|
76
|
+
'comp_H_p_err': 'dph+',
|
|
77
|
+
'comp_mix': 'pm',
|
|
78
|
+
'comp_mix_err': 'dpm',
|
|
79
|
+
'v_DOP_los': 'vdopp',
|
|
80
|
+
'v_DOP_los_err': 'dvdopp',
|
|
81
|
+
'HEIGHT': 'gdalt'
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
class Loader:
|
|
86
|
+
"""
|
|
87
|
+
:param file_path: the file's full path
|
|
88
|
+
:type file_path: pathlib.Path object
|
|
89
|
+
:param file_type: the specific file type for the file being loaded. Options: ['TEC-MAT'], 'TEC-LOS', 'TEC-sites')
|
|
90
|
+
:type file_type: str
|
|
91
|
+
:param load_data: True, load without calling the method "load_data" separately.
|
|
92
|
+
:type load_data: bool
|
|
93
|
+
"""
|
|
94
|
+
def __init__(self, file_path, antenna='', pulse_code='', pulse_length=0, load_data=True):
|
|
95
|
+
self.file_path = file_path
|
|
96
|
+
self.antenna = antenna
|
|
97
|
+
self.pulse_code = pulse_code
|
|
98
|
+
self.pulse_length = pulse_length
|
|
99
|
+
self.variables = {}
|
|
100
|
+
self.metadata = {}
|
|
101
|
+
|
|
102
|
+
self.done = False
|
|
103
|
+
if load_data:
|
|
104
|
+
self.load_from_table_layout()
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def load_from_table_layout(self):
|
|
108
|
+
variables = {}
|
|
109
|
+
|
|
110
|
+
with h5py.File(self.file_path, 'r') as fh5:
|
|
111
|
+
table = fh5['Data']['Table Layout'][::]
|
|
112
|
+
table_dtype = table.dtype
|
|
113
|
+
|
|
114
|
+
# Get variable names
|
|
115
|
+
table_var_names = list(table_dtype.fields.keys())
|
|
116
|
+
# Get table data
|
|
117
|
+
table_data = list(zip(*table))
|
|
118
|
+
table_vars = {k: np.array(table_data[table_var_names.index(k)]) for k in table_var_names}
|
|
119
|
+
# Check modes
|
|
120
|
+
antenna_codes = table_vars['kinst'] = table_vars['kinst'].astype(np.int32)
|
|
121
|
+
pulse_lengths = table_vars['pl'] = table_vars['pl'] * 1e6
|
|
122
|
+
pulse_codes = table_vars['mdtyp'] = table_vars['mdtyp'].astype(np.int32)
|
|
123
|
+
modes_ = list(zip(antenna_codes, pulse_codes, pulse_lengths))
|
|
124
|
+
modes = np.empty(len(modes_), dtype=object)
|
|
125
|
+
modes[:] = modes_
|
|
126
|
+
modes_unique = self.get_modes(modes)
|
|
127
|
+
|
|
128
|
+
mode = self.validate_mode(modes_unique)
|
|
129
|
+
|
|
130
|
+
inds_mode = np.where((antenna_codes==mode[0]) & (pulse_codes==mode[1]) & (pulse_lengths==mode[2]) )[0]
|
|
131
|
+
|
|
132
|
+
self.metadata['antenna'] = antenna_code_dict_r[mode[0]]
|
|
133
|
+
self.metadata['pulse_code'] = pulse_code_dict_r[mode[1]]
|
|
134
|
+
self.metadata['pulse_length'] = mode[2]
|
|
135
|
+
|
|
136
|
+
# Grid data
|
|
137
|
+
ut_unix_1 = table_vars['ut1_unix'][inds_mode]
|
|
138
|
+
ut_unix_1_unique = np.unique(ut_unix_1)
|
|
139
|
+
num_ut = len(ut_unix_1_unique)
|
|
140
|
+
vars_fh5 = {}
|
|
141
|
+
if len(ut_unix_1) % num_ut == 0:
|
|
142
|
+
num_gate = int(len(ut_unix_1) / num_ut)
|
|
143
|
+
|
|
144
|
+
for k, v in table_vars.items():
|
|
145
|
+
vars_fh5[k] = v[inds_mode].reshape((num_ut, num_gate))
|
|
146
|
+
else:
|
|
147
|
+
gate_inds = []
|
|
148
|
+
gate_nums = []
|
|
149
|
+
for t in ut_unix_1_unique:
|
|
150
|
+
ii = np.where(ut_unix_1==t)[0]
|
|
151
|
+
ran = table_vars['range'][inds_mode][ii]
|
|
152
|
+
diff_ran = np.diff(ran)
|
|
153
|
+
if any(diff_ran < 0): # duplicated ranges
|
|
154
|
+
iii = range(np.where(diff_ran<0)[0][0]+1)
|
|
155
|
+
ii = ii[iii]
|
|
156
|
+
gate_inds.append(ii)
|
|
157
|
+
|
|
158
|
+
gate_nums.append(len(gate_inds[-1]))
|
|
159
|
+
max_gate_num = np.max(gate_nums)
|
|
160
|
+
|
|
161
|
+
for k, v in table_vars.items():
|
|
162
|
+
vars_fh5[k] = np.empty((num_ut, max_gate_num))
|
|
163
|
+
vars_fh5[k][::] = np.nan
|
|
164
|
+
for i, inds in enumerate(gate_inds):
|
|
165
|
+
vars_fh5[k][i, 0:len(inds)] = v[inds_mode][inds]
|
|
166
|
+
|
|
167
|
+
# Assign data
|
|
168
|
+
records = fh5['Metadata']['_record_layout'][0]
|
|
169
|
+
rec_var_names = np.array(list(records.dtype.fields.keys()))
|
|
170
|
+
rec_vars = {str(rec_var_names[i]): int(records[i]) for i in range(len(rec_var_names))}
|
|
171
|
+
for var_name, var_name_fh5 in var_name_dict.items():
|
|
172
|
+
if var_name_fh5 not in vars_fh5.keys():
|
|
173
|
+
mylog.StreamLogger.warning(f"The requested variable {var_name_fh5} does not exist in the data file!")
|
|
174
|
+
variables[var_name] = None
|
|
175
|
+
continue
|
|
176
|
+
if rec_vars[var_name_fh5] == 1:
|
|
177
|
+
variables[var_name] = vars_fh5[var_name_fh5][:, 0][:, np.newaxis]
|
|
178
|
+
else:
|
|
179
|
+
variables[var_name] = vars_fh5[var_name_fh5]
|
|
180
|
+
|
|
181
|
+
variables['comp_O_p'] = 1. - variables['comp_mix'] - variables['comp_H_p']
|
|
182
|
+
variables['comp_O_p_err'] = np.sqrt(variables['comp_mix_err']**2 + variables['comp_H_p_err']**2)
|
|
183
|
+
|
|
184
|
+
# need to be check when AZ close to 0.
|
|
185
|
+
variables['AZ1'] = variables['AZ1'] % 360.
|
|
186
|
+
variables['AZ2'] = variables['AZ2'] % 360.
|
|
187
|
+
variables['AZ'] = (variables['AZ1'] + variables['AZ2']) / 2
|
|
188
|
+
diff_az = np.abs(variables['AZ1'] - variables['AZ2'])
|
|
189
|
+
variables['AZ'] = np.where(diff_az<180, variables['AZ'], ((variables['AZ1'] + variables['AZ2'] + 360) / 2) % 360)
|
|
190
|
+
variables['EL'] = (variables['EL1'] + variables['EL2']) / 2
|
|
191
|
+
|
|
192
|
+
variables['DATETIME_1'] = dttool.convert_unix_time_to_datetime_cftime(vars_fh5['ut1_unix'][:, 0])[:, np.newaxis]
|
|
193
|
+
variables['DATETIME_2'] = dttool.convert_unix_time_to_datetime_cftime(vars_fh5['ut2_unix'][:, 0])[:, np.newaxis]
|
|
194
|
+
variables['DATETIME'] = variables['DATETIME_1'] + (variables['DATETIME_2'] - variables['DATETIME_1']) / 2
|
|
195
|
+
variables['T_e'] = variables['T_i'] * variables['T_r']
|
|
196
|
+
variables['T_e_err'] = variables['T_e'] * np.sqrt((variables['T_i_err'] / variables['T_i']) ** 2
|
|
197
|
+
+ (variables['T_r_err'] / variables['T_r']) ** 2)
|
|
198
|
+
self.variables = variables
|
|
199
|
+
|
|
200
|
+
return
|
|
201
|
+
|
|
202
|
+
def validate_mode(self, modes_unique):
|
|
203
|
+
mode = None
|
|
204
|
+
|
|
205
|
+
# Check antenna
|
|
206
|
+
modes_antenna_matched = []
|
|
207
|
+
try:
|
|
208
|
+
for m in modes_unique:
|
|
209
|
+
if m[0] == antenna_code_dict[self.antenna]:
|
|
210
|
+
modes_antenna_matched.append(m)
|
|
211
|
+
if len(modes_antenna_matched) == 0:
|
|
212
|
+
raise KeyError
|
|
213
|
+
elif len(modes_antenna_matched) == 1:
|
|
214
|
+
if str(self.pulse_code):
|
|
215
|
+
if pulse_code_dict[self.pulse_code] != modes_antenna_matched[0][1]:
|
|
216
|
+
raise ValueError
|
|
217
|
+
if self.pulse_length > 0:
|
|
218
|
+
if self.pulse_length != modes_antenna_matched[0][2]:
|
|
219
|
+
raise ValueError
|
|
220
|
+
return modes_antenna_matched[0]
|
|
221
|
+
else:
|
|
222
|
+
pass
|
|
223
|
+
except Exception as e:
|
|
224
|
+
if str(self.antenna):
|
|
225
|
+
mylog.StreamLogger.error("Antenna {} is not found!".format(self.antenna.upper()))
|
|
226
|
+
else:
|
|
227
|
+
mylog.StreamLogger.error("Antenna must be specified!")
|
|
228
|
+
self.list_modes()
|
|
229
|
+
return None
|
|
230
|
+
|
|
231
|
+
modes_pulse_code_matched = []
|
|
232
|
+
try:
|
|
233
|
+
for m in modes_antenna_matched:
|
|
234
|
+
if m[1] == pulse_code_dict[self.pulse_code]:
|
|
235
|
+
modes_pulse_code_matched.append(m)
|
|
236
|
+
if len(modes_pulse_code_matched) == 0:
|
|
237
|
+
raise KeyError
|
|
238
|
+
elif len(modes_pulse_code_matched) == 1:
|
|
239
|
+
if self.pulse_length > 0:
|
|
240
|
+
if self.pulse_length != modes_antenna_matched[0][2]:
|
|
241
|
+
raise ValueError
|
|
242
|
+
return modes_pulse_code_matched[0]
|
|
243
|
+
else:
|
|
244
|
+
pass
|
|
245
|
+
except Exception as e:
|
|
246
|
+
if str(self.pulse_code):
|
|
247
|
+
mylog.StreamLogger.error("Pulse code {} is not found!".format(self.pulse_code.upper()))
|
|
248
|
+
else:
|
|
249
|
+
mylog.StreamLogger.error("Pulse code must be specified!")
|
|
250
|
+
self.list_modes()
|
|
251
|
+
return None
|
|
252
|
+
|
|
253
|
+
modes_pulse_length_matched = []
|
|
254
|
+
try:
|
|
255
|
+
for m in modes_pulse_code_matched:
|
|
256
|
+
if m[2] == self.pulse_length:
|
|
257
|
+
modes_pulse_length_matched.append(m)
|
|
258
|
+
if len(modes_pulse_length_matched) == 0:
|
|
259
|
+
raise ValueError
|
|
260
|
+
elif len(modes_pulse_length_matched) == 1:
|
|
261
|
+
return modes_pulse_length_matched[0]
|
|
262
|
+
else:
|
|
263
|
+
mylog.StreamLogger.error("Multiple modes found!")
|
|
264
|
+
raise ValueError
|
|
265
|
+
except Exception as e:
|
|
266
|
+
if self.pulse_length > 0:
|
|
267
|
+
mylog.StreamLogger.error("Pulse length {} is not found!".format(self.pulse_code.upper()))
|
|
268
|
+
else:
|
|
269
|
+
mylog.StreamLogger.error("Pulse length must be specified!")
|
|
270
|
+
self.list_modes()
|
|
271
|
+
return None
|
|
272
|
+
return mode
|
|
273
|
+
|
|
274
|
+
def list_modes(self):
|
|
275
|
+
mylog.simpleinfo.info("List of the experiment modes:")
|
|
276
|
+
|
|
277
|
+
for i, m in enumerate(self.metadata['MODES']):
|
|
278
|
+
s = '{}, '.format(i)
|
|
279
|
+
for k, v in m.items():
|
|
280
|
+
s = s + "{}: {}, ".format(k, v)
|
|
281
|
+
mylog.simpleinfo.info(s)
|
|
282
|
+
return
|
|
283
|
+
def get_modes(self, modes):
|
|
284
|
+
|
|
285
|
+
modes_unique = np.unique(modes)
|
|
286
|
+
|
|
287
|
+
self.metadata['MODES'] = []
|
|
288
|
+
num_modes = self.metadata['NUM_MODES'] = len(modes_unique)
|
|
289
|
+
for i in range(num_modes):
|
|
290
|
+
self.metadata['MODES'].append({
|
|
291
|
+
'ANTENNA_ID': modes_unique[i][0],
|
|
292
|
+
'ANTENNA': antenna_code_dict_r[modes_unique[i][0]],
|
|
293
|
+
'PULSE_CODE_ID': modes_unique[i][1],
|
|
294
|
+
'PULSE_CODE': pulse_code_dict_r[modes_unique[i][1]],
|
|
295
|
+
'PULSE_LENGTH': modes_unique[i][2]
|
|
296
|
+
})
|
|
297
|
+
return modes_unique
|
|
298
|
+
|
|
299
|
+
def load(self):
|
|
300
|
+
variables = {}
|
|
301
|
+
metadata = {}
|
|
302
|
+
with h5py.File(self.file_path, 'r') as fh5:
|
|
303
|
+
data_fh5 = fh5['Data']
|
|
304
|
+
array_layouts = list(data_fh5['Array Layout'].keys())
|
|
305
|
+
|
|
306
|
+
antenna_codes = []
|
|
307
|
+
pulse_codes = []
|
|
308
|
+
pulse_lengths = []
|
|
309
|
+
match = 0
|
|
310
|
+
ind_array = None
|
|
311
|
+
for i, array_layout_str in enumerate(array_layouts):
|
|
312
|
+
res = re.search(r'kinst=([\d.]+).*mdtyp=([\d.]+).*pl=([\d.]+)', array_layout_str)
|
|
313
|
+
antenna_code = int(float(res.groups()[0]))
|
|
314
|
+
pulse_code = int(float(res.groups()[1]))
|
|
315
|
+
pulse_length = float(res.groups()[2]) * 1e6
|
|
316
|
+
antenna_codes.append(antenna_code)
|
|
317
|
+
pulse_codes.append(pulse_code)
|
|
318
|
+
pulse_lengths.append(pulse_length)
|
|
319
|
+
if not str(self.antenna) or not str(self.pulse_code) or self.pulse_length == 0:
|
|
320
|
+
continue
|
|
321
|
+
if antenna_code != antenna_code_dict[self.antenna] or \
|
|
322
|
+
pulse_code != pulse_code_dict[self.pulse_code] or \
|
|
323
|
+
pulse_length != self.pulse_length:
|
|
324
|
+
continue
|
|
325
|
+
match = match + 1
|
|
326
|
+
ind_array = i
|
|
327
|
+
antenna_code_dict_r = {v: k for k, v in antenna_code_dict.items()}
|
|
328
|
+
pulse_code_dict_r = {v: k for k, v in pulse_code_dict.items()}
|
|
329
|
+
if match != 1:
|
|
330
|
+
mylog.StreamLogger.error("The inputs do not match the Array Layouts! Check the Array Layout info below:")
|
|
331
|
+
mylog.simpleinfo.info(
|
|
332
|
+
"{:10s}{:20s}{:30s}{:30s}".format(
|
|
333
|
+
'No.',
|
|
334
|
+
'antenna',
|
|
335
|
+
'pulse_code',
|
|
336
|
+
'pulse_length',
|
|
337
|
+
)
|
|
338
|
+
)
|
|
339
|
+
for ind, (antenna_code, pulse_code, pulse_length) \
|
|
340
|
+
in enumerate(zip(antenna_codes, pulse_codes, pulse_lengths)):
|
|
341
|
+
|
|
342
|
+
mylog.simpleinfo.info(
|
|
343
|
+
"{:<10d}{:20s}{:30s}{:<30f}".format(
|
|
344
|
+
ind+1,
|
|
345
|
+
antenna_code_dict_r[antenna_code],
|
|
346
|
+
pulse_code_dict_r[pulse_code],
|
|
347
|
+
pulse_length,
|
|
348
|
+
)
|
|
349
|
+
)
|
|
350
|
+
raise ValueError("Check the message above!")
|
|
351
|
+
|
|
352
|
+
metadata['antenna'] = antenna_code_dict_r[antenna_codes[ind_array]]
|
|
353
|
+
metadata['pulse_code'] = pulse_code_dict_r[pulse_codes[ind_array]]
|
|
354
|
+
metadata['pulse_length'] = pulse_lengths[ind_array]
|
|
355
|
+
|
|
356
|
+
vars_fh5 = {}
|
|
357
|
+
array_layout_str = array_layouts[ind_array]
|
|
358
|
+
fh5_vars_1d = data_fh5['Array Layout'][array_layout_str]['1D Parameters']
|
|
359
|
+
for var_name in fh5_vars_1d.keys():
|
|
360
|
+
if var_name == 'Data Parameters':
|
|
361
|
+
continue
|
|
362
|
+
vars_fh5[var_name] = np.array(fh5_vars_1d[var_name])[:, np.newaxis]
|
|
363
|
+
fh5_vars_2d = data_fh5['Array Layout'][array_layout_str]['2D Parameters']
|
|
364
|
+
for var_name in fh5_vars_2d.keys():
|
|
365
|
+
if var_name == 'Data Parameters':
|
|
366
|
+
continue
|
|
367
|
+
vars_fh5[var_name] = np.array(fh5_vars_2d[var_name]).T
|
|
368
|
+
vars_fh5['range'] = np.array(data_fh5['Array Layout'][array_layout_str]['range'])[np.newaxis, :]
|
|
369
|
+
vars_fh5['timestamps'] = np.array(data_fh5['Array Layout'][array_layout_str]['timestamps'])[:, np.newaxis]
|
|
370
|
+
for var_name, var_name_fh5 in var_name_dict.items():
|
|
371
|
+
if var_name_fh5 not in vars_fh5.keys():
|
|
372
|
+
mylog.StreamLogger.warning(f"The requested variable {var_name_fh5} does not exist in the data file!")
|
|
373
|
+
variables[var_name] = None
|
|
374
|
+
continue
|
|
375
|
+
variables[var_name] = vars_fh5[var_name_fh5]
|
|
376
|
+
|
|
377
|
+
variables['comp_O_p'] = 1. - variables['comp_mix'] - variables['comp_H_p']
|
|
378
|
+
variables['comp_O_p_err'] = np.sqrt(variables['comp_mix_err']**2 + variables['comp_H_p_err']**2)
|
|
379
|
+
|
|
380
|
+
# need to be check when AZ close to 0.
|
|
381
|
+
variables['AZ1'] = variables['AZ1'] % 360.
|
|
382
|
+
variables['AZ2'] = variables['AZ2'] % 360.
|
|
383
|
+
variables['AZ'] = (variables['AZ1'] + variables['AZ2']) / 2
|
|
384
|
+
diff_az = np.abs(variables['AZ1'] - variables['AZ2'])
|
|
385
|
+
variables['AZ'] = np.where(diff_az<180, variables['AZ'], ((variables['AZ1'] + variables['AZ2'] + 360) / 2) % 360)
|
|
386
|
+
variables['EL'] = (variables['EL1'] + variables['EL2']) / 2
|
|
387
|
+
|
|
388
|
+
variables['RANGE'] = np.tile(vars_fh5['range'], [variables['n_e'].shape[0], 1])
|
|
389
|
+
variables['DATETIME'] = dttool.convert_unix_time_to_datetime_cftime(vars_fh5['timestamps'])
|
|
390
|
+
variables['T_e'] = variables['T_i'] * variables['T_r']
|
|
391
|
+
variables['T_e_err'] = variables['T_e'] * np.sqrt((variables['T_i_err'] / variables['T_i']) ** 2
|
|
392
|
+
+ (variables['T_r_err'] / variables['T_r']) ** 2)
|
|
393
|
+
|
|
394
|
+
self.variables = variables
|
|
395
|
+
self.metadata = metadata
|
|
396
|
+
|
|
@@ -232,9 +232,8 @@ class Dataset(datahub.DatasetSourced):
|
|
|
232
232
|
search_pattern = "*EID-*/"
|
|
233
233
|
exp_dirs = list(initial_file_dir.glob(search_pattern))
|
|
234
234
|
|
|
235
|
-
if not list(exp_dirs):
|
|
236
|
-
|
|
237
|
-
continue
|
|
235
|
+
if not list(exp_dirs) and self.allow_download:
|
|
236
|
+
self.download_data()
|
|
238
237
|
|
|
239
238
|
def dir_parser(dirs):
|
|
240
239
|
dirs_out = []
|
|
@@ -252,9 +251,8 @@ class Dataset(datahub.DatasetSourced):
|
|
|
252
251
|
return dirs_out
|
|
253
252
|
file_dirs = dir_parser(exp_dirs)
|
|
254
253
|
|
|
255
|
-
if not list(file_dirs):
|
|
256
|
-
|
|
257
|
-
continue
|
|
254
|
+
if not list(file_dirs) and self.allow_download:
|
|
255
|
+
self.download_data()
|
|
258
256
|
|
|
259
257
|
for fd in file_dirs:
|
|
260
258
|
if isinstance(self.exp_name_pattern, list):
|
|
@@ -281,7 +279,7 @@ class Dataset(datahub.DatasetSourced):
|
|
|
281
279
|
initial_file_dir=fd, search_pattern=search_pattern,
|
|
282
280
|
allow_multiple_files=True, recursive=recursive)
|
|
283
281
|
|
|
284
|
-
|
|
282
|
+
# Validate file paths
|
|
285
283
|
|
|
286
284
|
if not done and self.allow_download:
|
|
287
285
|
done = self.download_data()
|
|
@@ -141,6 +141,12 @@ class Loader:
|
|
|
141
141
|
|
|
142
142
|
return metadata
|
|
143
143
|
|
|
144
|
+
def load_from_table_layout(self):
|
|
145
|
+
variables = {}
|
|
146
|
+
metadata = {}
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
144
150
|
def load(self):
|
|
145
151
|
variables = {}
|
|
146
152
|
metadata = {}
|
|
@@ -217,9 +223,3 @@ class Loader:
|
|
|
217
223
|
self.beam_el = np.nanmedian(variables['EL'])
|
|
218
224
|
|
|
219
225
|
self.metadata = metadata
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
if __name__ == "__main__":
|
|
223
|
-
import pathlib
|
|
224
|
-
fp = pathlib.Path("/home/lei/Downloads/pfa140102.002.hdf5")
|
|
225
|
-
Loader(file_path=fp, beam_az=290.5, beam_el=70.)
|
|
@@ -159,9 +159,8 @@ class Dataset(datahub.DatasetSourced):
|
|
|
159
159
|
search_pattern = "*EID-*/"
|
|
160
160
|
exp_dirs = list(initial_file_dir.glob(search_pattern))
|
|
161
161
|
|
|
162
|
-
if not list(exp_dirs):
|
|
163
|
-
|
|
164
|
-
continue
|
|
162
|
+
if not list(exp_dirs) and self.allow_download:
|
|
163
|
+
self.download_data()
|
|
165
164
|
|
|
166
165
|
def dir_parser(dirs):
|
|
167
166
|
dirs_out = []
|
|
@@ -180,9 +179,8 @@ class Dataset(datahub.DatasetSourced):
|
|
|
180
179
|
|
|
181
180
|
file_dirs = dir_parser(exp_dirs)
|
|
182
181
|
|
|
183
|
-
if not list(file_dirs):
|
|
184
|
-
|
|
185
|
-
continue
|
|
182
|
+
if not list(file_dirs) and self.allow_download:
|
|
183
|
+
self.download_data()
|
|
186
184
|
|
|
187
185
|
for fd in file_dirs:
|
|
188
186
|
if isinstance(self.exp_name_pattern, list):
|