geospacelab 0.10.3__tar.gz → 0.10.4__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.
Files changed (349) hide show
  1. {geospacelab-0.10.3/geospacelab.egg-info → geospacelab-0.10.4}/PKG-INFO +1 -1
  2. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/__init__.py +1 -1
  3. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/config/__init__.py +3 -2
  4. geospacelab-0.10.4/geospacelab/config/__mpl__.py +98 -0
  5. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/config/_preferences.py +3 -0
  6. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/__init__.py +9 -2
  7. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/downloader.py +2 -2
  8. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/downloader.py +15 -5
  9. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/gnss/tecmap/variable_config.py +3 -2
  10. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/eiscat/__init__.py +6 -5
  11. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/__init__.py +48 -10
  12. {geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/risr_n → geospacelab-0.10.4/geospacelab/datahub/sources/madrigal/isr/pfisr}/fitted/loader.py +22 -3
  13. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/observatory/orbit/utilities.py +14 -3
  14. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/visualization/mpl/__base__.py +1 -97
  15. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/visualization/mpl/colormaps.py +10 -0
  16. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/visualization/mpl/geomap/geopanels.py +11 -1
  17. {geospacelab-0.10.3 → geospacelab-0.10.4/geospacelab.egg-info}/PKG-INFO +1 -1
  18. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab.egg-info/SOURCES.txt +1 -0
  19. {geospacelab-0.10.3 → geospacelab-0.10.4}/LICENSE +0 -0
  20. {geospacelab-0.10.3 → geospacelab-0.10.4}/MANIFEST.in +0 -0
  21. {geospacelab-0.10.3 → geospacelab-0.10.4}/README.md +0 -0
  22. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/cs/__init__.py +0 -0
  23. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/cs/_aacgm.py +0 -0
  24. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/cs/_apex.py +0 -0
  25. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/cs/_cs_base.py +0 -0
  26. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/cs/_geo.py +0 -0
  27. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/cs/geo_utilities.py +0 -0
  28. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/__dataset_base__.py +0 -0
  29. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/__init__.py +0 -0
  30. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/__metadata_base__.py +0 -0
  31. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/__variable_base__.py +0 -0
  32. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/__init__.py +0 -0
  33. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/cdaweb/__init__.py +0 -0
  34. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/cdaweb/dmsp/__init__.py +0 -0
  35. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/__init__.py +0 -0
  36. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/loader.py +0 -0
  37. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/variable_config.py +0 -0
  38. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/cdaweb/downloader.py +0 -0
  39. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/cdaweb/omni/__init__.py +0 -0
  40. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/cdaweb/omni/downloader.py +0 -0
  41. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/cdaweb/omni/loader.py +0 -0
  42. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/cdaweb/omni/variable_config.py +0 -0
  43. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/__init__.py +0 -0
  44. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/__init__.py +0 -0
  45. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/advanced/__init__.py +0 -0
  46. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_fp/__init__.py +0 -0
  47. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/__init__.py +0 -0
  48. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/downloader.py +0 -0
  49. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/loader.py +0 -0
  50. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/variable_config.py +0 -0
  51. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/__init__.py +0 -0
  52. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/downloader.py +0 -0
  53. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/loader.py +0 -0
  54. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/variable_config.py +0 -0
  55. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct16/__init__.py +0 -0
  56. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/downloader.py +0 -0
  57. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l1b/__init__.py +0 -0
  58. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/__init__.py +0 -0
  59. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/downloader.py +0 -0
  60. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/loader.py +0 -0
  61. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/variable_config.py +0 -0
  62. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/__init__.py +0 -0
  63. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/downloader.py +0 -0
  64. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/loader.py +0 -0
  65. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/variable_config.py +0 -0
  66. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l2d/__init__.py +0 -0
  67. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/__init__.py +0 -0
  68. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/__init__.py +0 -0
  69. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/downloader.py +0 -0
  70. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/loader.py +0 -0
  71. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/variable_config.py +0 -0
  72. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/__init__.py +0 -0
  73. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/downloader.py +0 -0
  74. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/loader.py +0 -0
  75. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/variable_config.py +0 -0
  76. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/__init__.py +0 -0
  77. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/downloader.py +0 -0
  78. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/loader.py +0 -0
  79. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/variable_config.py +0 -0
  80. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/__init__.py +0 -0
  81. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/downloader.py +0 -0
  82. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/loader.py +0 -0
  83. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/variable_config.py +0 -0
  84. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/l2l/__init__.py +0 -0
  85. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/loader.py +0 -0
  86. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/esa_eo/swarm/multimission/__init__.py +0 -0
  87. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/fmi/__init__.py +0 -0
  88. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/fmi/image/__init__.py +0 -0
  89. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/fmi/image/ie/__init__.py +0 -0
  90. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/fmi/image/ie/downloader.py +0 -0
  91. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/fmi/image/ie/loader.py +0 -0
  92. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/fmi/image/ie/variable_config.py +0 -0
  93. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/fmi/miracle/__init__.py +0 -0
  94. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/fmi/miracle/abk/__init__.py +0 -0
  95. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/fmi/miracle/kev/__init__.py +0 -0
  96. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/fmi/miracle/muo/__init__.py +0 -0
  97. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/gfz/__init__.py +0 -0
  98. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/gfz/downloader.py +0 -0
  99. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/gfz/hpo/__init__.py +0 -0
  100. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/gfz/hpo/downloader.py +0 -0
  101. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/gfz/hpo/loader.py +0 -0
  102. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/gfz/hpo/nowcast/__init__.py +0 -0
  103. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/gfz/hpo/nowcast/downloader.py +0 -0
  104. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/gfz/hpo/variable_config.py +0 -0
  105. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/gfz/kpap/__init__.py +0 -0
  106. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/gfz/kpap/downloader.py +0 -0
  107. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/gfz/kpap/loader.py +0 -0
  108. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/gfz/kpap/nowcast/__init__.py +0 -0
  109. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/gfz/kpap/nowcast/downloader.py +0 -0
  110. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/gfz/kpap/nowcast/loader.py +0 -0
  111. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/gfz/kpap/nowcast/variable_config.py +0 -0
  112. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/gfz/kpap/variable_config.py +0 -0
  113. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/gfz/snf107/__init__.py +0 -0
  114. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/gfz/snf107/loader.py +0 -0
  115. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/gfz/snf107/variable_config.py +0 -0
  116. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/isee/__init__.py +0 -0
  117. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/isee/gnss/__init__.py +0 -0
  118. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/isee/gnss/tecmap/__init__.py +0 -0
  119. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/isee/gnss/tecmap/downloader.py +0 -0
  120. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/isee/gnss/tecmap/loader.py +0 -0
  121. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/isee/gnss/tecmap/variable_config.py +0 -0
  122. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/jhuapl/__init__.py +0 -0
  123. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/jhuapl/ampere/__init__.py +0 -0
  124. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/jhuapl/ampere/downloader.py +0 -0
  125. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/jhuapl/ampere/fitted/__init__.py +0 -0
  126. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/jhuapl/ampere/fitted/loader.py +0 -0
  127. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/jhuapl/ampere/fitted/variable_config.py +0 -0
  128. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/jhuapl/ampere/grd/__init__.py +0 -0
  129. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/jhuapl/ampere/grd/downloader.py +0 -0
  130. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/jhuapl/ampere/grd/loader.py +0 -0
  131. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/jhuapl/ampere/grd/variable_config.py +0 -0
  132. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/jhuapl/dmsp/__init__.py +0 -0
  133. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/__init__.py +0 -0
  134. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/downloader.py +0 -0
  135. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/edraur/__init__.py +0 -0
  136. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/edraur/loader.py +0 -0
  137. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/edraur/variable_config.py +0 -0
  138. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/sdrdisk/__init__.py +0 -0
  139. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/sdrdisk/loader.py +0 -0
  140. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/sdrdisk/variable_config.py +0 -0
  141. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/__init__.py +0 -0
  142. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/gnss/__init__.py +0 -0
  143. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/gnss/tecmap/__init__.py +0 -0
  144. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/gnss/tecmap/downloader.py +0 -0
  145. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/gnss/tecmap/loader.py +0 -0
  146. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/__init__.py +0 -0
  147. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/eiscat/downloader.py +0 -0
  148. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/eiscat/examples/__init__.py +0 -0
  149. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/eiscat/examples/eiscat_hdf5_info.py +0 -0
  150. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/eiscat/loader.py +0 -0
  151. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/eiscat/utilities.py +0 -0
  152. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/eiscat/variable_config.py +0 -0
  153. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/millstonehill/__init__.py +0 -0
  154. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/__init__.py +0 -0
  155. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/loader.py +0 -0
  156. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/variable_config.py +0 -0
  157. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/millstonehill/downloader.py +0 -0
  158. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/millstonehill/gridded/__init__.py +0 -0
  159. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/millstonehill/gridded/loader.py +0 -0
  160. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/millstonehill/gridded/variable_config.py +0 -0
  161. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/millstonehill/vi/__init__.py +0 -0
  162. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/millstonehill/vi/loader.py +0 -0
  163. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/millstonehill/vi/variable_config.py +0 -0
  164. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/pfisr/__init__.py +0 -0
  165. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/pfisr/downloader.py +0 -0
  166. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/downloader.py +0 -0
  167. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/variable_config.py +0 -0
  168. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/__init__.py +0 -0
  169. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/downloader.py +0 -0
  170. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/loader.py +0 -0
  171. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/variable_config.py +0 -0
  172. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/risr_n/__init__.py +0 -0
  173. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/risr_n/downloader.py +0 -0
  174. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/risr_n/fitted/__init__.py +0 -0
  175. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/risr_n/fitted/downloader.py +0 -0
  176. {geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/pfisr → geospacelab-0.10.4/geospacelab/datahub/sources/madrigal/isr/risr_n}/fitted/loader.py +0 -0
  177. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/risr_n/fitted/variable_config.py +0 -0
  178. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/risr_n/vi/__init__.py +0 -0
  179. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/risr_n/vi/downloader.py +0 -0
  180. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/risr_n/vi/loader.py +0 -0
  181. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/isr/risr_n/vi/variable_config.py +0 -0
  182. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/satellites/__init__.py +0 -0
  183. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/satellites/dmsp/__init__.py +0 -0
  184. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/satellites/dmsp/downloader.py +0 -0
  185. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/satellites/dmsp/e/__init__.py +0 -0
  186. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/satellites/dmsp/e/loader.py +0 -0
  187. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/satellites/dmsp/e/variable_config.py +0 -0
  188. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s1/__init__.py +0 -0
  189. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s1/loader.py +0 -0
  190. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s1/variable_config.py +0 -0
  191. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s4/__init__.py +0 -0
  192. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s4/loader.py +0 -0
  193. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s4/variable_config.py +0 -0
  194. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/madrigal/utilities.py +0 -0
  195. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/ncei/__init__.py +0 -0
  196. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/ncei/dmsp/__init__.py +0 -0
  197. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/ncei/dmsp/downloader.py +0 -0
  198. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/__init__.py +0 -0
  199. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/downloader.py +0 -0
  200. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/loader.py +0 -0
  201. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/variable_config.py +0 -0
  202. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/nipr/__init__.py +0 -0
  203. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/nipr/asc/__init__.py +0 -0
  204. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/nipr/asc/tro_wmi/__init__.py +0 -0
  205. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/nipr/asc/tro_wmi/loader.py +0 -0
  206. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/nipr/asc/tro_wmi/variable_config.py +0 -0
  207. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/noaa/__init__.py +0 -0
  208. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/noaa/swpc/__init__.py +0 -0
  209. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/noaa/swpc/goesxray/__init__.py +0 -0
  210. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/noaa/swpc/solarwind/__init__.py +0 -0
  211. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/superdarn/__init__.py +0 -0
  212. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/superdarn/potmap/__init__.py +0 -0
  213. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/superdarn/potmap/downloader.py +0 -0
  214. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/superdarn/potmap/loader.py +0 -0
  215. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/superdarn/potmap/variable_config.py +0 -0
  216. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/supermag/__init__.py +0 -0
  217. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/supermag/indices/__init__.py +0 -0
  218. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/supermag/indices/downloader.py +0 -0
  219. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/supermag/indices/loader.py +0 -0
  220. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/supermag/indices/variable_config.py +0 -0
  221. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/supermag/magnetometer/__init__.py +0 -0
  222. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/supermag/magnetometer/downloader.py +0 -0
  223. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/supermag/magnetometer/loader.py +0 -0
  224. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/supermag/magnetometer/variable_config.py +0 -0
  225. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/supermag/supermag_api.py +0 -0
  226. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/supermag/utilities.py +0 -0
  227. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/__init__.py +0 -0
  228. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/champ/__init__.py +0 -0
  229. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/champ/dns_acc/__init__.py +0 -0
  230. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/champ/dns_acc/downloader.py +0 -0
  231. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/champ/dns_acc/loader.py +0 -0
  232. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/champ/dns_acc/variable_config.py +0 -0
  233. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/champ/wnd_acc/__init__.py +0 -0
  234. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/champ/wnd_acc/downloader.py +0 -0
  235. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/champ/wnd_acc/loader.py +0 -0
  236. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/champ/wnd_acc/variable_config.py +0 -0
  237. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/downloader.py +0 -0
  238. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/goce/__init__.py +0 -0
  239. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/__init__.py +0 -0
  240. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/downloader.py +0 -0
  241. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/loader.py +0 -0
  242. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/variable_config.py +0 -0
  243. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/grace/__init__.py +0 -0
  244. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/grace/dns_acc/__init__.py +0 -0
  245. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/grace/dns_acc/downloader.py +0 -0
  246. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/grace/dns_acc/loader.py +0 -0
  247. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/grace/dns_acc/variable_config.py +0 -0
  248. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/grace/wnd_acc/__init__.py +0 -0
  249. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/grace/wnd_acc/downloader.py +0 -0
  250. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/grace/wnd_acc/loader.py +0 -0
  251. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/grace/wnd_acc/variable_config.py +0 -0
  252. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/grace_fo/__init__.py +0 -0
  253. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/__init__.py +0 -0
  254. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/downloader.py +0 -0
  255. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/loader.py +0 -0
  256. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/variable_config.py +0 -0
  257. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/__init__.py +0 -0
  258. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/downloader.py +0 -0
  259. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/loader.py +0 -0
  260. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/variable_config.py +0 -0
  261. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/swarm/__init__.py +0 -0
  262. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/swarm/dns_acc/__init__.py +0 -0
  263. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/swarm/dns_acc/downloader.py +0 -0
  264. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/swarm/dns_acc/loader.py +0 -0
  265. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/swarm/dns_acc/variable_config.py +0 -0
  266. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/swarm/dns_pod/__init__.py +0 -0
  267. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/swarm/dns_pod/downloader.py +0 -0
  268. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/swarm/dns_pod/loader.py +0 -0
  269. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/tud/swarm/dns_pod/variable_config.py +0 -0
  270. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/wdc/__init__.py +0 -0
  271. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/wdc/ae/__init__.py +0 -0
  272. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/wdc/ae/downloader.py +0 -0
  273. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/wdc/ae/loader.py +0 -0
  274. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/wdc/ae/variable_config.py +0 -0
  275. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/wdc/asysym/__init__.py +0 -0
  276. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/wdc/asysym/downloader.py +0 -0
  277. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/wdc/asysym/loader.py +0 -0
  278. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/wdc/asysym/variable_config.py +0 -0
  279. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/wdc/dst/__init__.py +0 -0
  280. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/wdc/dst/downloader.py +0 -0
  281. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/wdc/dst/loader.py +0 -0
  282. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/datahub/sources/wdc/dst/variable_config.py +0 -0
  283. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/express/__init__.py +0 -0
  284. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/express/dmsp_dashboard.py +0 -0
  285. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/express/eiscat_dashboard.py +0 -0
  286. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/express/millstonehill_dashboard.py +0 -0
  287. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/express/omni_dashboard.py +0 -0
  288. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/future/__init__.py +0 -0
  289. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/future/empiricalmodels/__init__.py +0 -0
  290. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/future/empiricalmodels/ovationprime2010/__init__.py +0 -0
  291. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/future/empiricalmodels/ovationprime2010/ovationprime.py +0 -0
  292. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/future/satllites/__init__.py +0 -0
  293. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/future/satllites/orbit_analyzer.py +0 -0
  294. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/future/test_sscws.py +0 -0
  295. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/observatory/__init__.py +0 -0
  296. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/observatory/constants.py +0 -0
  297. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/observatory/earth/__init__.py +0 -0
  298. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/observatory/earth/_func.py +0 -0
  299. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/observatory/earth/constants.py +0 -0
  300. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/observatory/earth/geodesy.py +0 -0
  301. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/observatory/earth/sun_position.py +0 -0
  302. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/observatory/orbit/__init__.py +0 -0
  303. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/observatory/orbit/sc_orbit.py +0 -0
  304. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/observatory/site/__init__.py +0 -0
  305. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/observatory/site/mixins.py +0 -0
  306. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/quantity/__init__.py +0 -0
  307. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/toolbox/__init__.py +0 -0
  308. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/toolbox/io/__init__.py +0 -0
  309. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/toolbox/io/dialog.py +0 -0
  310. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/toolbox/unit/__init__.py +0 -0
  311. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/toolbox/utilities/__init__.py +0 -0
  312. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/toolbox/utilities/numpyarray.py +0 -0
  313. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/toolbox/utilities/numpymath.py +0 -0
  314. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/toolbox/utilities/pybasic.py +0 -0
  315. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/toolbox/utilities/pyclass.py +0 -0
  316. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/toolbox/utilities/pydatetime.py +0 -0
  317. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/toolbox/utilities/pylogging.py +0 -0
  318. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/toolbox/utilities/pyos.py +0 -0
  319. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/visualization/__init__.py +0 -0
  320. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/visualization/mpl/__init__.py +0 -0
  321. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/visualization/mpl/_helpers.py +0 -0
  322. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/visualization/mpl/axes.py +0 -0
  323. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/visualization/mpl/axis_ticks.py +0 -0
  324. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/visualization/mpl/dashboards.py +0 -0
  325. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/visualization/mpl/figure.py +0 -0
  326. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/visualization/mpl/geomap/__base__.py +0 -0
  327. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/visualization/mpl/geomap/__init__.py +0 -0
  328. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/visualization/mpl/geomap/geodashboards.py +0 -0
  329. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/visualization/mpl/panels.py +0 -0
  330. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/visualization/plotly/__init__.py +0 -0
  331. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/visualization/plotly/ipanel.py +0 -0
  332. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/wrapper/__init__.py +0 -0
  333. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/wrapper/geopack/LICENSE +0 -0
  334. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/wrapper/geopack/README.md +0 -0
  335. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/wrapper/geopack/__init__.py +0 -0
  336. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/wrapper/geopack/geopack/__init__.py +0 -0
  337. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/wrapper/geopack/geopack/geopack.py +0 -0
  338. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/wrapper/geopack/geopack/igrf13coeffs.txt +0 -0
  339. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/wrapper/geopack/geopack/t01.py +0 -0
  340. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/wrapper/geopack/geopack/t04.py +0 -0
  341. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/wrapper/geopack/geopack/t89.py +0 -0
  342. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/wrapper/geopack/geopack/t96.py +0 -0
  343. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/wrapper/geopack/geopack/test_geopack1.md +0 -0
  344. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab/wrapper/geopack/geopack/test_geopack1.py +0 -0
  345. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab.egg-info/dependency_links.txt +0 -0
  346. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab.egg-info/requires.txt +0 -0
  347. {geospacelab-0.10.3 → geospacelab-0.10.4}/geospacelab.egg-info/top_level.txt +0 -0
  348. {geospacelab-0.10.3 → geospacelab-0.10.4}/setup.cfg +0 -0
  349. {geospacelab-0.10.3 → geospacelab-0.10.4}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: geospacelab
3
- Version: 0.10.3
3
+ Version: 0.10.4
4
4
  Summary: Collect, manage, and visualize geospace data.
5
5
  Home-page: https://github.com/JouleCai/geospacelab
6
6
  Author: Lei Cai
@@ -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.3"
9
+ __version__ = "0.10.4"
10
10
  __maintainer__ = "Lei Cai"
11
11
  __email__ = "lei.cai@oulu.fi"
12
12
  __status__ = "Developing"
@@ -9,9 +9,8 @@ __email__ = "lei.cai@oulu.fi"
9
9
  __docformat__ = "reStructureText"
10
10
 
11
11
 
12
- from geospacelab.config._preferences import Preferences
12
+ from geospacelab.config._preferences import prf, pref
13
13
 
14
- prf = pref = Preferences()
15
14
 
16
15
  try:
17
16
  opt = pref.user_config['visualization']
@@ -20,3 +19,5 @@ except KeyError:
20
19
  uc['visualization'] = dict()
21
20
  uc['visualization']['mpl'] = dict()
22
21
  pref.set_user_config(user_config=uc, set_as_default=True)
22
+
23
+ from geospacelab.config.__mpl__ import mpl, plt
@@ -0,0 +1,98 @@
1
+ import matplotlib as mpl
2
+ import matplotlib.pyplot as plt
3
+
4
+ from geospacelab.config._preferences import pref
5
+
6
+
7
+ from cycler import cycler
8
+
9
+ try:
10
+ mpl_style = pref.user_config['visualization']['mpl']['style']
11
+ except KeyError:
12
+ uc = pref.user_config
13
+ uc['visualization']['mpl']['style'] = 'light'
14
+ pref.set_user_config(user_config=uc, set_as_default=True)
15
+
16
+
17
+ # plt.rcParams['font.serif'] = 'Ubuntu'
18
+ # plt.rcParams['font.monospace'] = 'Ubuntu Mono'
19
+ plt.rcParams['font.size'] = 10
20
+ plt.rcParams['axes.labelsize'] = 10
21
+ plt.rcParams['axes.labelweight'] = 'book'
22
+ plt.rcParams['axes.titlesize'] = 10
23
+ plt.rcParams['xtick.labelsize'] = 10
24
+ plt.rcParams['ytick.labelsize'] = 10
25
+ plt.rcParams['legend.fontsize'] = 10
26
+ plt.rcParams['figure.titlesize'] = 12
27
+
28
+ # plt.style.use('https://github.com/dhaitz/matplotlib-stylesheets/raw/master/pacoty.mplstyle')
29
+ mpl_style = pref.user_config['visualization']['mpl']['style']
30
+
31
+ if mpl_style == 'light':
32
+ plt.rcParams['axes.facecolor'] = '#FCFCFC'
33
+ plt.rcParams['text.color'] = 'k'
34
+ default_cycler = (cycler(color=['tab:blue', 'tab:red', 'tab:green', 'tab:purple', 'tab:orange', 'tab:brown', 'tab:pink', 'tab:gray', 'tab:olive', 'tab:cyan']))
35
+ default_cycler = (cycler(color=['#1f77b4DD', '#ff7f0eDD', '#2ca02cDD', '#d62728DD', '#9467bdDD', '#8c564bDD', '#e377c2DD', '#7f7f7fDD', '#bcbd22DD', '#17becfDD']))
36
+ # colors = [
37
+ # (0.8980392156862745, 0.5254901960784314, 0.023529411764705882),
38
+ # (0.36470588235294116, 0.4117647058823529, 0.6941176470588235),
39
+ # (0.3215686274509804, 0.7372549019607844, 0.6392156862745098),
40
+ # (0.6, 0.788235294117647, 0.27058823529411763),
41
+ # (0.8, 0.3803921568627451, 0.6901960784313725),
42
+ # (0.1411764705882353, 0.4745098039215686, 0.4235294117647059),
43
+ # (0.8549019607843137, 0.6470588235294118, 0.10588235294117647),
44
+ # (0.1843137254901961, 0.5411764705882353, 0.7686274509803922),
45
+ # (0.4627450980392157, 0.3058823529411765, 0.6235294117647059),
46
+ # (0.9294117647058824, 0.39215686274509803, 0.35294117647058826),
47
+ # ]
48
+ colors = [
49
+ (0.36470588235294116, 0.4117647058823529, 0.6941176470588235),
50
+ (0.9294117647058824, 0.39215686274509803, 0.35294117647058826),
51
+ (0.3215686274509804, 0.7372549019607844, 0.6392156862745098),
52
+ (0.8980392156862745, 0.5254901960784314, 0.023529411764705882),
53
+ (0.6, 0.788235294117647, 0.27058823529411763),
54
+ (0.8, 0.3803921568627451, 0.6901960784313725),
55
+ (0.1411764705882353, 0.4745098039215686, 0.4235294117647059),
56
+ (0.8549019607843137, 0.6470588235294118, 0.10588235294117647),
57
+ (0.1843137254901961, 0.5411764705882353, 0.7686274509803922),
58
+ (0.4627450980392157, 0.3058823529411765, 0.6235294117647059),
59
+
60
+ ]
61
+ default_cycler = (cycler(color=colors))
62
+ plt.rc('axes', prop_cycle=default_cycler)
63
+ elif mpl_style == 'dark':
64
+ plt.rcParams['figure.facecolor'] = '#0C1C23'
65
+ plt.rcParams['savefig.facecolor'] = '#0C1C23'
66
+
67
+ plt.rcParams['axes.facecolor'] = '#FFFFFF20'
68
+ plt.rcParams['axes.edgecolor'] = '#FFFFFF3D'
69
+ plt.rcParams['axes.labelcolor'] = '#FFFFFFD9'
70
+
71
+ plt.rcParams['xtick.color'] = '#FFFFFFD9'
72
+ plt.rcParams['ytick.color'] = '#FFFFFFD9'
73
+ plt.rcParams['text.color'] = 'white'
74
+
75
+ plt.rcParams['grid.color'] = '#FFFFFF'
76
+ plt.rcParams['legend.facecolor'] = plt.rcParams['axes.facecolor']
77
+ plt.rcParams['legend.edgecolor'] = '#FFFFFFD9'
78
+
79
+ # seaborn dark:['#001c7f', '#b1400d', '#12711c', '#8c0800', '#591e71', '#592f0d', '#a23582', '#3c3c3c', '#b8850a', '#006374']
80
+ # seaborn pastel '#a1c9f4', '#ffb482', '#8de5a1', '#ff9f9b', '#d0bbff', '#debb9b', '#fab0e4', '#cfcfcf', '#fffea3', '#b9f2f0'
81
+ default_cycler = (cycler(color=['#F5EE33', '#33FF99', 'r', '#9467bd', '#08C7FE', '#FE66BB', ]))
82
+ colors = [
83
+ (0.1843137254901961, 0.5411764705882353, 0.7686274509803922),
84
+ (0.9294117647058824, 0.39215686274509803, 0.35294117647058826),
85
+ (0.3215686274509804, 0.7372549019607844, 0.6392156862745098),
86
+ (0.8980392156862745, 0.5254901960784314, 0.023529411764705882),
87
+ (0.6, 0.788235294117647, 0.27058823529411763),
88
+ (0.8, 0.3803921568627451, 0.6901960784313725),
89
+ (0.1411764705882353, 0.4745098039215686, 0.4235294117647059),
90
+ (0.8549019607843137, 0.6470588235294118, 0.10588235294117647),
91
+ (0.36470588235294116, 0.4117647058823529, 0.6941176470588235),
92
+ (0.4627450980392157, 0.3058823529411765, 0.6235294117647059),
93
+ ]
94
+ default_cycler = (cycler(color=colors))
95
+ # default_cycler = (cycler(color=palettable.cartocolors.qualitative.Safe_10.mpl_colors))
96
+ plt.rc('axes', prop_cycle=default_cycler)
97
+ else:
98
+ plt.style.use(mpl_style)
@@ -126,3 +126,6 @@ data_root_dir = \"\"
126
126
  user_config_dict = toml.load(config_file_path)
127
127
  self.user_config = user_config_dict
128
128
  return user_config_dict
129
+
130
+
131
+ prf = pref = Preferences()
@@ -34,6 +34,7 @@ default_dataset_attrs = {
34
34
 
35
35
  default_variable_names = [
36
36
  'DATETIME', 'STARTING_TIME', 'STOPPING_TIME',
37
+ 'ORBIT_ID',
37
38
  'GRID_MLAT', 'GRID_MLON', 'GRID_MLT', 'GRID_UT',
38
39
  'GRID_AUR_1216', 'GRID_AUR_1304', 'GRID_AUR_1356', 'GRID_AUR_LBHS', 'GRID_AUR_LBHL',
39
40
  ]
@@ -93,6 +94,8 @@ class Dataset(datahub.DatasetSourced):
93
94
  default_variable_names,
94
95
  configured_variables=var_config.configured_variables
95
96
  )
97
+ if self.orbit_id is None:
98
+ self.orbit_id = []
96
99
  for file_path in self.data_file_paths:
97
100
  try:
98
101
  load_obj = self.loader(file_path, file_type=self.product.lower(), pole=self.pole)
@@ -105,14 +108,17 @@ class Dataset(datahub.DatasetSourced):
105
108
  continue
106
109
  if var_name in ['DATETIME', 'STARTING_TIME', 'STOPPING_TIME']:
107
110
  value = np.array([load_obj.variables[var_name]])[np.newaxis, :]
111
+ elif var_name == 'ORBIT_ID':
112
+ value = np.array([load_obj.metadata['ORBIT_ID']], dtype=str)
108
113
  else:
109
114
  value = np.empty((1, ), dtype=object)
110
115
  value[0] = load_obj.variables[var_name]
111
116
  # value = load_obj.variables[var_name][np.newaxis, ::]
112
117
  self._variables[var_name].join(value)
113
118
 
114
- self.orbit_id = load_obj.metadata['ORBIT_ID']
115
- # self.select_beams(field_aligned=True)
119
+ self.orbit_id = self['ORBIT_ID'].value
120
+ if len(self.orbit_id):
121
+ self.orbit_id = self.orbit_id[0]
116
122
  if self.time_clip:
117
123
  self.time_filter_by_range()
118
124
 
@@ -178,6 +184,7 @@ class Dataset(datahub.DatasetSourced):
178
184
  download_obj = self.downloader(
179
185
  dt_fr, dt_to,
180
186
  orbit_id=self.orbit_id, sat_id=self.sat_id,
187
+ data_file_root_dir=self.data_root_dir
181
188
  )
182
189
  return download_obj.done
183
190
 
@@ -22,7 +22,7 @@ class Downloader(DownloaderBase):
22
22
  ):
23
23
  product = 'EDR_AUR'
24
24
  if data_file_root_dir is None:
25
- data_file_root_dir = prf.datahub_data_root_dir / 'CDAWeb' / 'DMSP' / 'SSUSI' /product / sat_id.upper()
25
+ data_file_root_dir = prf.datahub_data_root_dir / 'CDAWeb' / 'DMSP' / 'SSUSI' / product
26
26
  self.sat_id = sat_id
27
27
  self.orbit_id = orbit_id
28
28
  self.source_subdirs = ['dmsp', 'dmsp'+self.sat_id.lower(), 'ssusi', 'data', 'edr-aurora']
@@ -78,7 +78,7 @@ class Downloader(DownloaderBase):
78
78
  year = int(sy)
79
79
  this_day = dttool.convert_doy_to_datetime(year, int(sdoy))
80
80
  if file_dir is None:
81
- file_dir = self.data_file_root_dir / sy / this_day.strftime("%Y%m%d")
81
+ file_dir = self.data_file_root_dir / self.sat_id.upper() / sy / this_day.strftime("%Y%m%d")
82
82
  super().save_file_from_http(url, file_dir=file_dir)
83
83
 
84
84
 
@@ -331,7 +331,7 @@ class Downloader(object):
331
331
  exclude_exp_name_patterns=None,
332
332
  include_exp_ids=None,
333
333
  exclude_exp_ids=None,
334
- icodes=None, madrigal_url=None, display=True,
334
+ icodes=None, madrigal_url=None, display=True, level=0,
335
335
  ):
336
336
 
337
337
  def try_to_get_database(max=3, interval=30):
@@ -383,8 +383,9 @@ class Downloader(object):
383
383
 
384
384
  exps_new = []
385
385
  another_madrigal_url = ''
386
+
386
387
  for exp in exps:
387
- if exp.id == -1:
388
+ if exp.id == -1 and level==0:
388
389
  if another_madrigal_url != exp.madrigalUrl:
389
390
  mylog.StreamLogger.warning(
390
391
  f'Another Madrigal site detected: {exp.madrigalUrl}!'
@@ -400,12 +401,21 @@ class Downloader(object):
400
401
 
401
402
  exps = np.array(exps_new, dtype=object)
402
403
 
403
- if not list(exps):
404
+ if not list(exps) and not str(another_madrigal_url):
404
405
  raise ValueError('Cannot find available experiments from the current database! Check the input values!')
405
- elif str(another_madrigal_url):
406
+ elif str(another_madrigal_url) and level==0:
406
407
  mylog.StreamLogger.warning(
407
- 'Some data are located in another Madrigal site and will not be processed!'
408
+ 'Some data are located in another Madrigal site: {}.'.format(another_madrigal_url)
408
409
  )
410
+
411
+ exps, database = Downloader.get_exp_list(
412
+ dt_fr=dt_fr, dt_to=dt_to,
413
+ include_exp_name_patterns=include_exp_name_patterns,
414
+ exclude_exp_name_patterns=exclude_exp_name_patterns,
415
+ include_exp_ids=include_exp_ids,
416
+ exclude_exp_ids=exclude_exp_ids,
417
+ icodes=icodes, madrigal_url=another_madrigal_url, display=display, level=level+1
418
+ )
409
419
  else:
410
420
  pass
411
421
 
@@ -45,7 +45,7 @@ var = Var(name=var_name, ndim=3, variable_type='scalar', visual=visual)
45
45
  var.fullname = 'GNSS TEC MAP'
46
46
  var.label = r'TEC'
47
47
  var.group = r'TEC'
48
- var.unit = 'TECu'
48
+ var.unit = 'TECU'
49
49
  var.depends = {0: depend_0, 1: depend_1}
50
50
  # set plot attrs
51
51
  plot_config = var.visual.plot_config
@@ -53,6 +53,7 @@ plot_config.config(**default_plot_config)
53
53
  plot_config.style = '2P'
54
54
  # set axis attrs
55
55
  axis = var.visual.axis
56
-
56
+ axis[2].label = '@v.label'
57
+ axis[2].unit = '@v.unit'
57
58
 
58
59
  configured_variables[var_name] = var
@@ -134,16 +134,17 @@ class Dataset(datahub.DatasetSourced):
134
134
  self.affiliation = load_obj.metadata['affiliation']
135
135
  self.metadata = load_obj.metadata
136
136
 
137
- inds_cmb = np.argsort(self['DATETIME'].flatten())
138
- if any(np.diff(np.array(inds_cmb))<0):
139
- for var_name in self.keys():
140
- self[var_name].value = self[var_name].value[inds_cmb, :]
141
-
142
137
  if self.add_AACGM or self.add_APEX:
143
138
  self.calc_lat_lon()
144
139
  # self.select_beams(field_aligned=True)
145
140
  if self.time_clip:
146
141
  self.time_filter_by_range()
142
+
143
+ inds_cmb = np.argsort(self['DATETIME'].flatten())
144
+ if any(np.diff(np.array(inds_cmb)) < 0):
145
+ for var_name in self.keys():
146
+ self[var_name].value = self[var_name].value[inds_cmb, :]
147
+
147
148
  if self.status_control:
148
149
  self.status_mask()
149
150
  if self.residual_control:
@@ -33,6 +33,7 @@ default_dataset_attrs = {
33
33
  'exp_check': False,
34
34
  'data_file_ext': ['h5', 'hdf5'],
35
35
  'data_root_dir': prf.datahub_data_root_dir / 'Madrigal' / 'PFISR',
36
+ 'force_download': False,
36
37
  'allow_download': True,
37
38
  'status_control': False,
38
39
  'residual_control': False,
@@ -76,6 +77,8 @@ class Dataset(datahub.DatasetSourced):
76
77
  self.affiliation = kwargs.pop('affiliation', '')
77
78
  self.pulse_code = kwargs.pop('pulse_code', 'alternating code')
78
79
  self.allow_download = kwargs.pop('allow_download', True)
80
+ self.force_download = kwargs.pop('force_download', False)
81
+ self.gate_num = kwargs.pop('gate_num', None)
79
82
  self.beam_id = kwargs.pop('beam_id', None)
80
83
  self.beam_az = kwargs.pop('beam_az', None)
81
84
  self.beam_el = kwargs.pop('beam_el', None)
@@ -124,15 +127,29 @@ class Dataset(datahub.DatasetSourced):
124
127
  def load_data(self, **kwargs):
125
128
  self.check_data_files(**kwargs)
126
129
 
130
+ load_objs = []
131
+ gate_nums = []
127
132
  for file_path in self.data_file_paths:
128
- load_obj = self.loader(file_path, beam_az=self.beam_az, beam_el=self.beam_el, beam_id=self.beam_id)
129
-
133
+ load_obj = self.loader(file_path, beam_az=self.beam_az, beam_el=self.beam_el, beam_id=self.beam_id, gate_num=self.gate_num)
134
+ load_objs.append(load_obj)
135
+ gate_nums.append(load_obj.gate_num)
136
+
137
+ if len(np.unique(gate_nums)) > 1:
138
+ mylog.StreamLogger.warning(
139
+ "Multiple types of experiments detected with different gate" +
140
+ "numbers (maximum: {})! Set 'gate_num' to this number!".format(np.max(gate_nums)))
141
+ self.gate_num = np.max(gate_nums)
142
+ load_objs = []
143
+ for file_path in self.data_file_paths:
144
+ load_obj = self.loader(file_path, beam_az=self.beam_az, beam_el=self.beam_el, beam_id=self.beam_id,
145
+ gate_num=self.gate_num)
146
+ load_objs.append(load_obj)
147
+
148
+ for load_obj in load_objs:
130
149
  for var_name in self._variables.keys():
131
150
  self._variables[var_name].join(load_obj.variables[var_name])
132
151
  self.metadata = load_obj.metadata
133
152
 
134
- if self.show_beams:
135
- load_obj.list_beams()
136
153
  self.beams = load_obj.beams
137
154
  self.beam_id = load_obj.beam_id
138
155
  self.beam_az = load_obj.beam_az
@@ -147,6 +164,23 @@ class Dataset(datahub.DatasetSourced):
147
164
  if self.time_clip:
148
165
  self.time_filter_by_range()
149
166
 
167
+ inds_cmb = np.argsort(self['DATETIME'].flatten())
168
+ if any(np.diff(np.array(inds_cmb))<0):
169
+ mylog.StreamLogger.warning("Multiple types of experiments detected! The times are re-sorted and data are combined!")
170
+ multi_experiments = True
171
+ for var_name in self.keys():
172
+ self[var_name].value = self[var_name].value[inds_cmb, :]
173
+ else:
174
+ multi_experiments = False
175
+
176
+
177
+ if self.show_beams:
178
+ if multi_experiments:
179
+ for load_obj in load_objs:
180
+ load_obj.list_beams()
181
+ else:
182
+ load_objs[0].list_beams()
183
+
150
184
  def calc_lat_lon(self):
151
185
  from geospacelab.cs import LENUSpherical
152
186
  az = self['AZ'].value
@@ -205,7 +239,7 @@ class Dataset(datahub.DatasetSourced):
205
239
  search_pattern=search_pattern, recursive=True, allow_multiple_files=True
206
240
  )
207
241
 
208
- if not done and self.allow_download:
242
+ if (not done and self.allow_download) or self.force_download:
209
243
  done = self.download_data()
210
244
  if done:
211
245
  done = super().search_data_files(
@@ -227,13 +261,16 @@ class Dataset(datahub.DatasetSourced):
227
261
 
228
262
  else:
229
263
  diff_years = dt_to.year - dt_fr.year
264
+ download_check = 0
230
265
  for ny in range(diff_years + 1):
231
266
  initial_file_dir = self.data_root_dir / str(dt_to.year + ny)
232
267
  search_pattern = "*EID-*/"
233
268
  exp_dirs = list(initial_file_dir.glob(search_pattern))
234
269
 
235
- if not list(exp_dirs) and self.allow_download:
236
- self.download_data()
270
+ if (not list(exp_dirs) and self.allow_download) or self.force_download:
271
+ self.download_data()
272
+ download_check = 1
273
+ exp_dirs = list(initial_file_dir.glob(search_pattern))
237
274
 
238
275
  def dir_parser(dirs):
239
276
  dirs_out = []
@@ -251,8 +288,8 @@ class Dataset(datahub.DatasetSourced):
251
288
  return dirs_out
252
289
  file_dirs = dir_parser(exp_dirs)
253
290
 
254
- if not list(file_dirs) and self.allow_download:
255
- self.download_data()
291
+ # if not list(file_dirs) and self.allow_download and download_check:
292
+ # self.download_data()
256
293
 
257
294
  for fd in file_dirs:
258
295
  if isinstance(self.exp_name_pattern, list):
@@ -281,7 +318,7 @@ class Dataset(datahub.DatasetSourced):
281
318
 
282
319
  # Validate file paths
283
320
 
284
- if not done and self.allow_download:
321
+ if not done and self.allow_download and download_check:
285
322
  done = self.download_data()
286
323
  if done:
287
324
  done = super().search_data_files(
@@ -349,6 +386,7 @@ class Dataset(datahub.DatasetSourced):
349
386
  download_obj = self.downloader(
350
387
  dt_fr=self.dt_fr, dt_to=self.dt_to,
351
388
  pulse_code=self.pulse_code,
389
+ force_download=self.force_download,
352
390
  dry_run=dry_run,
353
391
  data_file_root_dir=self.data_root_dir,
354
392
  include_exp_ids=self.experiment_ids,
@@ -51,7 +51,7 @@ class Loader:
51
51
  :param load_data: True, load without calling the method "load_data" separately.
52
52
  :type load_data: bool
53
53
  """
54
- def __init__(self, file_path, beam_id=None, beam_az=None, beam_el=None, direct_load=True):
54
+ def __init__(self, file_path, beam_id=None, beam_az=None, beam_el=None, direct_load=True, gate_num=None):
55
55
  self.file_path = file_path
56
56
  self.beam_id = beam_id
57
57
  self.beam_az = beam_az
@@ -59,6 +59,7 @@ class Loader:
59
59
  self.beams = None
60
60
  self.variables = {}
61
61
  self.metadata = {}
62
+ self.gate_num = gate_num
62
63
 
63
64
  self.done = False
64
65
  if direct_load:
@@ -184,9 +185,27 @@ class Loader:
184
185
  elif var_name == 'dnel':
185
186
  vars_fh5['dne'] = 10 ** np.array(fh5_vars_2d[var_name]).T
186
187
  else:
187
- vars_fh5[var_name] = np.array(fh5_vars_2d[var_name]).T
188
+ arr = np.array(fh5_vars_2d[var_name]).T
189
+
190
+ if self.gate_num is None:
191
+ vars_fh5[var_name] = arr
192
+
193
+ else:
194
+ arr_new = np.empty((arr.shape[0], self.gate_num))
195
+ arr_new[::] = np.nan
196
+ for ii in range(arr.shape[0]):
197
+ arr_new[ii, 0: arr.shape[1]] = arr[ii, :]
198
+ vars_fh5[var_name] = arr_new
199
+ self.gate_num = vars_fh5['ne'].shape[1]
200
+
188
201
  vars_fh5['range'] = np.array(data_fh5['Array Layout'][array_layout_str]['range'])[np.newaxis, :]
189
- if np.median(vars_fh5['range'].flatten()) > 1e5:
202
+ if vars_fh5['range'].shape[1] < self.gate_num:
203
+ arr = np.empty((1, self.gate_num))
204
+ arr[::] = np.nan
205
+ arr[0, 0:vars_fh5['range'].shape[1]] = vars_fh5['range'].flatten()
206
+ vars_fh5['range'] = arr
207
+
208
+ if np.nanmedian(vars_fh5['range'].flatten()) > 1e5:
190
209
  mylog.StreamLogger.warning(f"The variable range is detected in [m]. It is converted into [km].")
191
210
  vars_fh5['range'] = vars_fh5['range'] * 1e-3
192
211
  vars_fh5['timestamps'] = np.array(data_fh5['Array Layout'][array_layout_str]['timestamps'])[:, np.newaxis]
@@ -47,7 +47,9 @@ class LEOToolbox(DatasetUser):
47
47
  if list(inds_abnormal):
48
48
  iiii = np.array(inds_abnormal) + 1
49
49
  nodes['INDEX'] = np.delete(nodes['INDEX'], iiii)
50
+ nodes['GEO_LAT'] = np.delete(nodes['GEO_LAT'], iiii)
50
51
  nodes['GEO_LON'] = np.delete(nodes['GEO_LON'], iiii)
52
+ nodes['GEO_ALT'] = np.delete(nodes['GEO_ALT'], iiii)
51
53
  nodes['GEO_LST'] = np.delete(nodes['GEO_LST'], iiii)
52
54
  nodes['DATETIME'] = np.delete(nodes['DATETIME'], iiii)
53
55
 
@@ -55,6 +57,7 @@ class LEOToolbox(DatasetUser):
55
57
  glat = self['SC_GEO_LAT'].value.flatten()
56
58
  glat_ = glat[0::data_interval]
57
59
  glon = self['SC_GEO_LON'].value.flatten()
60
+ alt = self['SC_GEO_ALT'].flatten()
58
61
  lst = self['SC_GEO_LST'].value.flatten()
59
62
  dts = self['SC_DATETIME'].value.flatten()
60
63
  ind_1 = argrelextrema(np.abs(glat_), np.less, )[0]
@@ -74,26 +77,34 @@ class LEOToolbox(DatasetUser):
74
77
  ind_between = np.where(ind_1 > ind_N)[0]
75
78
  inds_asc.append(ind_1[ind_between[0]-1])
76
79
  inds_dsc.append(ind_1[ind_between[0]])
77
- self.ascending_nodes['INDEX'] = inds_asc
78
- self.ascending_nodes['GEO_LON'] = glon[inds_asc]
80
+ self.ascending_nodes['INDEX'] = np.array(inds_asc)
81
+ self.ascending_nodes['GEO_LON'] = glon[inds_asc]
82
+ self.ascending_nodes['GEO_LAT'] = glat[inds_asc]
83
+ self.ascending_nodes['GEO_ALT'] = alt[inds_asc]
79
84
  self.ascending_nodes['GEO_LST'] = lst[inds_asc]
80
85
  self.ascending_nodes['DATETIME'] = dts[inds_asc]
81
86
  check_nodes(self.ascending_nodes)
82
87
 
83
- self.descending_nodes['INDEX']= inds_dsc
88
+ self.descending_nodes['INDEX']= np.array(inds_dsc)
84
89
  self.descending_nodes['GEO_LON'] = glon[inds_dsc]
90
+ self.descending_nodes['GEO_LAT'] = glat[inds_dsc]
91
+ self.descending_nodes['GEO_ALT'] = alt[inds_dsc]
85
92
  self.descending_nodes['GEO_LST'] = lst[inds_dsc]
86
93
  self.descending_nodes['DATETIME'] = dts[inds_dsc]
87
94
  check_nodes(self.descending_nodes)
88
95
 
89
96
  self.northern_nodes['INDEX'] = ind_2
90
97
  self.northern_nodes['GEO_LON'] = glon[ind_2]
98
+ self.northern_nodes['GEO_LAT'] = glat[ind_2]
99
+ self.northern_nodes['GEO_ALT'] = alt[ind_2]
91
100
  self.northern_nodes['GEO_LST'] = lst[ind_2]
92
101
  self.northern_nodes['DATETIME'] = dts[ind_2]
93
102
  check_nodes(self.northern_nodes)
94
103
 
95
104
  self.southern_nodes['INDEX'] = ind_3
96
105
  self.southern_nodes['GEO_LON'] = glon[ind_3]
106
+ self.southern_nodes['GEO_LAT'] = glat[ind_3]
107
+ self.southern_nodes['GEO_ALT'] = alt[ind_3]
97
108
  self.southern_nodes['GEO_LST'] = lst[ind_3]
98
109
  self.southern_nodes['DATETIME'] = dts[ind_3]
99
110
  check_nodes(self.southern_nodes)
@@ -2,8 +2,6 @@ import copy
2
2
  import weakref
3
3
  import string
4
4
  import numpy as np
5
- import matplotlib.pyplot as plt
6
- import matplotlib as mpl
7
5
  import pathlib
8
6
  from matplotlib.axes import Axes
9
7
  from typing import Dict
@@ -12,9 +10,7 @@ from typing import Dict
12
10
  from matplotlib.gridspec import GridSpec, SubplotSpec
13
11
  from matplotlib.figure import Figure
14
12
 
15
- from cycler import cycler
16
-
17
- from geospacelab.config import pref
13
+ from geospacelab.config import pref, mpl, plt
18
14
  from geospacelab.toolbox.utilities.pyclass import StrBase
19
15
  import geospacelab.toolbox.utilities.pybasic as pybasic
20
16
  from geospacelab.visualization.mpl._helpers import check_panel_ax
@@ -22,98 +18,6 @@ import geospacelab.toolbox.utilities.pylogging as mylog
22
18
  # from geospacelab.visualization.mpl.dashboards import Dashboard
23
19
 
24
20
 
25
- try:
26
- mpl_style = pref.user_config['visualization']['mpl']['style']
27
- except KeyError:
28
- uc = pref.user_config
29
- uc['visualization']['mpl']['style'] = 'light'
30
- pref.set_user_config(user_config=uc, set_as_default=True)
31
-
32
-
33
- # plt.rcParams['font.serif'] = 'Ubuntu'
34
- # plt.rcParams['font.monospace'] = 'Ubuntu Mono'
35
- plt.rcParams['font.size'] = 10
36
- plt.rcParams['axes.labelsize'] = 10
37
- plt.rcParams['axes.labelweight'] = 'book'
38
- plt.rcParams['axes.titlesize'] = 10
39
- plt.rcParams['xtick.labelsize'] = 10
40
- plt.rcParams['ytick.labelsize'] = 10
41
- plt.rcParams['legend.fontsize'] = 10
42
- plt.rcParams['figure.titlesize'] = 12
43
-
44
- # plt.style.use('https://github.com/dhaitz/matplotlib-stylesheets/raw/master/pacoty.mplstyle')
45
- mpl_style = pref.user_config['visualization']['mpl']['style']
46
-
47
- if mpl_style == 'light':
48
- plt.rcParams['axes.facecolor'] = '#FCFCFC'
49
- plt.rcParams['text.color'] = 'k'
50
- default_cycler = (cycler(color=['tab:blue', 'tab:red', 'tab:green', 'tab:purple', 'tab:orange', 'tab:brown', 'tab:pink', 'tab:gray', 'tab:olive', 'tab:cyan']))
51
- default_cycler = (cycler(color=['#1f77b4DD', '#ff7f0eDD', '#2ca02cDD', '#d62728DD', '#9467bdDD', '#8c564bDD', '#e377c2DD', '#7f7f7fDD', '#bcbd22DD', '#17becfDD']))
52
- # colors = [
53
- # (0.8980392156862745, 0.5254901960784314, 0.023529411764705882),
54
- # (0.36470588235294116, 0.4117647058823529, 0.6941176470588235),
55
- # (0.3215686274509804, 0.7372549019607844, 0.6392156862745098),
56
- # (0.6, 0.788235294117647, 0.27058823529411763),
57
- # (0.8, 0.3803921568627451, 0.6901960784313725),
58
- # (0.1411764705882353, 0.4745098039215686, 0.4235294117647059),
59
- # (0.8549019607843137, 0.6470588235294118, 0.10588235294117647),
60
- # (0.1843137254901961, 0.5411764705882353, 0.7686274509803922),
61
- # (0.4627450980392157, 0.3058823529411765, 0.6235294117647059),
62
- # (0.9294117647058824, 0.39215686274509803, 0.35294117647058826),
63
- # ]
64
- colors = [
65
- (0.36470588235294116, 0.4117647058823529, 0.6941176470588235),
66
- (0.9294117647058824, 0.39215686274509803, 0.35294117647058826),
67
- (0.3215686274509804, 0.7372549019607844, 0.6392156862745098),
68
- (0.8980392156862745, 0.5254901960784314, 0.023529411764705882),
69
- (0.6, 0.788235294117647, 0.27058823529411763),
70
- (0.8, 0.3803921568627451, 0.6901960784313725),
71
- (0.1411764705882353, 0.4745098039215686, 0.4235294117647059),
72
- (0.8549019607843137, 0.6470588235294118, 0.10588235294117647),
73
- (0.1843137254901961, 0.5411764705882353, 0.7686274509803922),
74
- (0.4627450980392157, 0.3058823529411765, 0.6235294117647059),
75
-
76
- ]
77
- default_cycler = (cycler(color=colors))
78
- plt.rc('axes', prop_cycle=default_cycler)
79
- elif mpl_style == 'dark':
80
- plt.rcParams['figure.facecolor'] = '#0C1C23'
81
- plt.rcParams['savefig.facecolor'] = '#0C1C23'
82
-
83
- plt.rcParams['axes.facecolor'] = '#FFFFFF20'
84
- plt.rcParams['axes.edgecolor'] = '#FFFFFF3D'
85
- plt.rcParams['axes.labelcolor'] = '#FFFFFFD9'
86
-
87
- plt.rcParams['xtick.color'] = '#FFFFFFD9'
88
- plt.rcParams['ytick.color'] = '#FFFFFFD9'
89
- plt.rcParams['text.color'] = 'white'
90
-
91
- plt.rcParams['grid.color'] = '#FFFFFF'
92
- plt.rcParams['legend.facecolor'] = plt.rcParams['axes.facecolor']
93
- plt.rcParams['legend.edgecolor'] = '#FFFFFFD9'
94
-
95
- # seaborn dark:['#001c7f', '#b1400d', '#12711c', '#8c0800', '#591e71', '#592f0d', '#a23582', '#3c3c3c', '#b8850a', '#006374']
96
- # seaborn pastel '#a1c9f4', '#ffb482', '#8de5a1', '#ff9f9b', '#d0bbff', '#debb9b', '#fab0e4', '#cfcfcf', '#fffea3', '#b9f2f0'
97
- default_cycler = (cycler(color=['#F5EE33', '#33FF99', 'r', '#9467bd', '#08C7FE', '#FE66BB', ]))
98
- colors = [
99
- (0.1843137254901961, 0.5411764705882353, 0.7686274509803922),
100
- (0.9294117647058824, 0.39215686274509803, 0.35294117647058826),
101
- (0.3215686274509804, 0.7372549019607844, 0.6392156862745098),
102
- (0.8980392156862745, 0.5254901960784314, 0.023529411764705882),
103
- (0.6, 0.788235294117647, 0.27058823529411763),
104
- (0.8, 0.3803921568627451, 0.6901960784313725),
105
- (0.1411764705882353, 0.4745098039215686, 0.4235294117647059),
106
- (0.8549019607843137, 0.6470588235294118, 0.10588235294117647),
107
- (0.36470588235294116, 0.4117647058823529, 0.6941176470588235),
108
- (0.4627450980392157, 0.3058823529411765, 0.6235294117647059),
109
- ]
110
- default_cycler = (cycler(color=colors))
111
- # default_cycler = (cycler(color=palettable.cartocolors.qualitative.Safe_10.mpl_colors))
112
- plt.rc('axes', prop_cycle=default_cycler)
113
- else:
114
- plt.style.use(mpl_style)
115
-
116
-
117
21
  class FigureBase(Figure):
118
22
  """
119
23
  GeospaceLab canvas inherits from ``matplotlib.figure.Figure`` with additional functions and settings.
@@ -54,6 +54,16 @@ def cmap_jhuapl_ssj_like():
54
54
  return mycmap
55
55
 
56
56
 
57
+ def cmap_jhuapl_ssusi_like():
58
+ c1 = ['#000000', "#330066",
59
+ '#0000CC', '#0080FF',
60
+ "#00CC00", '#80FF00',
61
+ '#FFFF00', '#FF8000',
62
+ '#FF0000', '#FF6666']
63
+ mycmap = colors.LinearSegmentedColormap.from_list("jhuapl_ssusi_like", c1, N=500)
64
+ return mycmap
65
+
66
+
57
67
  def cmap_aurora():
58
68
  c1 = ['#848F9E', '#6A4CA1', '#4035A3', '#395EA6', '#003300', '#006600', '#009900', '#00BB00', '#00DD00', '#00FF00', '#80FF80', '#B3FFB3']
59
69
  c1 = ['#AEAAB0', '#78519A', '#51227B', '#310073',