geospacelab 0.9.2__tar.gz → 0.9.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 (338) hide show
  1. {geospacelab-0.9.2/geospacelab.egg-info → geospacelab-0.9.4}/PKG-INFO +5 -2
  2. {geospacelab-0.9.2 → geospacelab-0.9.4}/README.md +4 -1
  3. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/__init__.py +1 -1
  4. {geospacelab-0.9.2/geospacelab/datahub/sources/esa_eo/swarm/advanced → geospacelab-0.9.4/geospacelab/datahub/sources/cdaweb/dmsp/ssusi}/__init__.py +0 -0
  5. geospacelab-0.9.4/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/__init__.py +234 -0
  6. geospacelab-0.9.4/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/downloader.py +93 -0
  7. geospacelab-0.9.4/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/loader.py +112 -0
  8. geospacelab-0.9.4/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/variable_config.py +139 -0
  9. {geospacelab-0.9.2/geospacelab/datahub/sources/esa_eo/swarm/multimission → geospacelab-0.9.4/geospacelab/datahub/sources/esa_eo/swarm/l2l}/__init__.py +0 -0
  10. {geospacelab-0.9.2/geospacelab/datahub/sources/fmi/image → geospacelab-0.9.4/geospacelab/datahub/sources/esa_eo/swarm/multimission}/__init__.py +0 -0
  11. geospacelab-0.9.4/geospacelab/wrapper/geopack/geopack/__init__.py +0 -0
  12. {geospacelab-0.9.2 → geospacelab-0.9.4/geospacelab.egg-info}/PKG-INFO +5 -2
  13. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab.egg-info/SOURCES.txt +5 -0
  14. {geospacelab-0.9.2 → geospacelab-0.9.4}/LICENSE +0 -0
  15. {geospacelab-0.9.2 → geospacelab-0.9.4}/MANIFEST.in +0 -0
  16. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/config/__init__.py +0 -0
  17. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/config/_preferences.py +0 -0
  18. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/cs/__init__.py +0 -0
  19. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/cs/_aacgm.py +0 -0
  20. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/cs/_apex.py +0 -0
  21. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/cs/_cs_base.py +0 -0
  22. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/cs/_geo.py +0 -0
  23. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/cs/geo_utilities.py +0 -0
  24. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/__dataset_base__.py +0 -0
  25. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/__init__.py +0 -0
  26. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/__metadata_base__.py +0 -0
  27. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/__variable_base__.py +0 -0
  28. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/__init__.py +0 -0
  29. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/cdaweb/__init__.py +0 -0
  30. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/cdaweb/dmsp/__init__.py +0 -0
  31. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/cdaweb/downloader.py +0 -0
  32. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/cdaweb/omni/__init__.py +0 -0
  33. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/cdaweb/omni/downloader.py +0 -0
  34. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/cdaweb/omni/loader.py +0 -0
  35. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/cdaweb/omni/variable_config.py +0 -0
  36. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/__init__.py +0 -0
  37. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/__init__.py +0 -0
  38. {geospacelab-0.9.2/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_fp → geospacelab-0.9.4/geospacelab/datahub/sources/esa_eo/swarm/advanced}/__init__.py +0 -0
  39. {geospacelab-0.9.2/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct16 → geospacelab-0.9.4/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_fp}/__init__.py +0 -0
  40. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/__init__.py +0 -0
  41. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/downloader.py +0 -0
  42. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/loader.py +0 -0
  43. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/variable_config.py +0 -0
  44. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/__init__.py +0 -0
  45. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/downloader.py +0 -0
  46. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/loader.py +0 -0
  47. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/variable_config.py +0 -0
  48. {geospacelab-0.9.2/geospacelab/datahub/sources/esa_eo/swarm/l1b → geospacelab-0.9.4/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct16}/__init__.py +0 -0
  49. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/downloader.py +0 -0
  50. {geospacelab-0.9.2/geospacelab/datahub/sources/esa_eo/swarm/l2d → geospacelab-0.9.4/geospacelab/datahub/sources/esa_eo/swarm/l1b}/__init__.py +0 -0
  51. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/__init__.py +0 -0
  52. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/downloader.py +0 -0
  53. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/loader.py +0 -0
  54. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/variable_config.py +0 -0
  55. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/__init__.py +0 -0
  56. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/downloader.py +0 -0
  57. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/loader.py +0 -0
  58. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/variable_config.py +0 -0
  59. {geospacelab-0.9.2/geospacelab/datahub/sources/esa_eo/swarm/l2daily → geospacelab-0.9.4/geospacelab/datahub/sources/esa_eo/swarm/l2d}/__init__.py +0 -0
  60. {geospacelab-0.9.2/geospacelab/datahub/sources/esa_eo/swarm/l2l → geospacelab-0.9.4/geospacelab/datahub/sources/esa_eo/swarm/l2daily}/__init__.py +0 -0
  61. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/__init__.py +0 -0
  62. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/downloader.py +0 -0
  63. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/loader.py +0 -0
  64. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/variable_config.py +0 -0
  65. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/__init__.py +0 -0
  66. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/downloader.py +0 -0
  67. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/loader.py +0 -0
  68. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/variable_config.py +0 -0
  69. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/__init__.py +0 -0
  70. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/downloader.py +0 -0
  71. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/loader.py +0 -0
  72. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/variable_config.py +0 -0
  73. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/__init__.py +0 -0
  74. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/downloader.py +0 -0
  75. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/loader.py +0 -0
  76. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/variable_config.py +0 -0
  77. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/esa_eo/swarm/loader.py +0 -0
  78. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/fmi/__init__.py +0 -0
  79. {geospacelab-0.9.2/geospacelab/datahub/sources/fmi/miracle → geospacelab-0.9.4/geospacelab/datahub/sources/fmi/image}/__init__.py +0 -0
  80. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/fmi/image/ie/__init__.py +0 -0
  81. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/fmi/image/ie/downloader.py +0 -0
  82. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/fmi/image/ie/loader.py +0 -0
  83. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/fmi/image/ie/variable_config.py +0 -0
  84. {geospacelab-0.9.2/geospacelab/datahub/sources/fmi/miracle/abk → geospacelab-0.9.4/geospacelab/datahub/sources/fmi/miracle}/__init__.py +0 -0
  85. {geospacelab-0.9.2/geospacelab/datahub/sources/fmi/miracle/kev → geospacelab-0.9.4/geospacelab/datahub/sources/fmi/miracle/abk}/__init__.py +0 -0
  86. {geospacelab-0.9.2/geospacelab/datahub/sources/fmi/miracle/muo → geospacelab-0.9.4/geospacelab/datahub/sources/fmi/miracle/kev}/__init__.py +0 -0
  87. {geospacelab-0.9.2/geospacelab/datahub/sources/isee/gnss → geospacelab-0.9.4/geospacelab/datahub/sources/fmi/miracle/muo}/__init__.py +0 -0
  88. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/gfz/__init__.py +0 -0
  89. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/gfz/downloader.py +0 -0
  90. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/gfz/hpo/__init__.py +0 -0
  91. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/gfz/hpo/downloader.py +0 -0
  92. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/gfz/hpo/loader.py +0 -0
  93. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/gfz/hpo/nowcast/__init__.py +0 -0
  94. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/gfz/hpo/nowcast/downloader.py +0 -0
  95. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/gfz/hpo/variable_config.py +0 -0
  96. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/gfz/kpap/__init__.py +0 -0
  97. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/gfz/kpap/downloader.py +0 -0
  98. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/gfz/kpap/loader.py +0 -0
  99. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/gfz/kpap/nowcast/__init__.py +0 -0
  100. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/gfz/kpap/nowcast/downloader.py +0 -0
  101. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/gfz/kpap/nowcast/loader.py +0 -0
  102. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/gfz/kpap/nowcast/variable_config.py +0 -0
  103. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/gfz/kpap/variable_config.py +0 -0
  104. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/gfz/snf107/__init__.py +0 -0
  105. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/gfz/snf107/loader.py +0 -0
  106. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/gfz/snf107/variable_config.py +0 -0
  107. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/isee/__init__.py +0 -0
  108. {geospacelab-0.9.2/geospacelab/datahub/sources/jhuapl/dmsp/ssusi → geospacelab-0.9.4/geospacelab/datahub/sources/isee/gnss}/__init__.py +0 -0
  109. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/isee/gnss/tecmap/__init__.py +0 -0
  110. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/isee/gnss/tecmap/downloader.py +0 -0
  111. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/isee/gnss/tecmap/loader.py +0 -0
  112. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/isee/gnss/tecmap/variable_config.py +0 -0
  113. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/jhuapl/__init__.py +0 -0
  114. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/jhuapl/ampere/__init__.py +0 -0
  115. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/jhuapl/ampere/downloader.py +0 -0
  116. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/jhuapl/ampere/fitted/__init__.py +0 -0
  117. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/jhuapl/ampere/fitted/loader.py +0 -0
  118. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/jhuapl/ampere/fitted/variable_config.py +0 -0
  119. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/jhuapl/ampere/grd/__init__.py +0 -0
  120. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/jhuapl/ampere/grd/downloader.py +0 -0
  121. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/jhuapl/ampere/grd/loader.py +0 -0
  122. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/jhuapl/ampere/grd/variable_config.py +0 -0
  123. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/jhuapl/dmsp/__init__.py +0 -0
  124. {geospacelab-0.9.2/geospacelab/datahub/sources/madrigal/gnss → geospacelab-0.9.4/geospacelab/datahub/sources/jhuapl/dmsp/ssusi}/__init__.py +0 -0
  125. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/downloader.py +0 -0
  126. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/edraur/__init__.py +0 -0
  127. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/edraur/loader.py +0 -0
  128. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/edraur/variable_config.py +0 -0
  129. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/sdrdisk/__init__.py +0 -0
  130. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/sdrdisk/loader.py +0 -0
  131. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/sdrdisk/variable_config.py +0 -0
  132. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/__init__.py +0 -0
  133. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/downloader.py +0 -0
  134. {geospacelab-0.9.2/geospacelab/datahub/sources/madrigal/isr → geospacelab-0.9.4/geospacelab/datahub/sources/madrigal/gnss}/__init__.py +0 -0
  135. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/gnss/tecmap/__init__.py +0 -0
  136. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/gnss/tecmap/downloader.py +0 -0
  137. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/gnss/tecmap/loader.py +0 -0
  138. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/gnss/tecmap/variable_config.py +0 -0
  139. {geospacelab-0.9.2/geospacelab/datahub/sources/madrigal/isr/eiscat/examples → geospacelab-0.9.4/geospacelab/datahub/sources/madrigal/isr}/__init__.py +0 -0
  140. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/eiscat/__init__.py +0 -0
  141. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/eiscat/downloader.py +0 -0
  142. {geospacelab-0.9.2/geospacelab/datahub/sources/madrigal/isr/millstonehill → geospacelab-0.9.4/geospacelab/datahub/sources/madrigal/isr/eiscat/examples}/__init__.py +0 -0
  143. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/eiscat/examples/eiscat_hdf5_info.py +0 -0
  144. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/eiscat/loader.py +0 -0
  145. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/eiscat/utilities.py +0 -0
  146. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/eiscat/variable_config.py +0 -0
  147. {geospacelab-0.9.2/geospacelab/datahub/sources/madrigal/isr/pfisr → geospacelab-0.9.4/geospacelab/datahub/sources/madrigal/isr/millstonehill}/__init__.py +0 -0
  148. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/__init__.py +0 -0
  149. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/loader.py +0 -0
  150. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/variable_config.py +0 -0
  151. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/millstonehill/downloader.py +0 -0
  152. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/millstonehill/gridded/__init__.py +0 -0
  153. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/millstonehill/gridded/loader.py +0 -0
  154. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/millstonehill/gridded/variable_config.py +0 -0
  155. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/millstonehill/vi/__init__.py +0 -0
  156. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/millstonehill/vi/loader.py +0 -0
  157. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/millstonehill/vi/variable_config.py +0 -0
  158. {geospacelab-0.9.2/geospacelab/datahub/sources/madrigal/satellites → geospacelab-0.9.4/geospacelab/datahub/sources/madrigal/isr/pfisr}/__init__.py +0 -0
  159. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/pfisr/downloader.py +0 -0
  160. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/__init__.py +0 -0
  161. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/downloader.py +0 -0
  162. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/loader.py +0 -0
  163. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/variable_config.py +0 -0
  164. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/__init__.py +0 -0
  165. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/downloader.py +0 -0
  166. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/loader.py +0 -0
  167. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/variable_config.py +0 -0
  168. {geospacelab-0.9.2/geospacelab/datahub/sources/nipr/asc → geospacelab-0.9.4/geospacelab/datahub/sources/madrigal/satellites}/__init__.py +0 -0
  169. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/satellites/dmsp/__init__.py +0 -0
  170. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/satellites/dmsp/downloader.py +0 -0
  171. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/satellites/dmsp/e/__init__.py +0 -0
  172. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/satellites/dmsp/e/loader.py +0 -0
  173. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/satellites/dmsp/e/variable_config.py +0 -0
  174. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s1/__init__.py +0 -0
  175. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s1/loader.py +0 -0
  176. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s1/variable_config.py +0 -0
  177. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s4/__init__.py +0 -0
  178. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s4/loader.py +0 -0
  179. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s4/variable_config.py +0 -0
  180. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/madrigal/utilities.py +0 -0
  181. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/ncei/__init__.py +0 -0
  182. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/ncei/dmsp/__init__.py +0 -0
  183. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/ncei/dmsp/downloader.py +0 -0
  184. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/__init__.py +0 -0
  185. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/downloader.py +0 -0
  186. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/loader.py +0 -0
  187. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/variable_config.py +0 -0
  188. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/nipr/__init__.py +0 -0
  189. {geospacelab-0.9.2/geospacelab/datahub/sources/noaa → geospacelab-0.9.4/geospacelab/datahub/sources/nipr/asc}/__init__.py +0 -0
  190. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/nipr/asc/tro_wmi/__init__.py +0 -0
  191. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/nipr/asc/tro_wmi/loader.py +0 -0
  192. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/nipr/asc/tro_wmi/variable_config.py +0 -0
  193. {geospacelab-0.9.2/geospacelab/datahub/sources/noaa/swpc → geospacelab-0.9.4/geospacelab/datahub/sources/noaa}/__init__.py +0 -0
  194. {geospacelab-0.9.2/geospacelab/datahub/sources/noaa/swpc/goesxray → geospacelab-0.9.4/geospacelab/datahub/sources/noaa/swpc}/__init__.py +0 -0
  195. {geospacelab-0.9.2/geospacelab/datahub/sources/noaa/swpc/solarwind → geospacelab-0.9.4/geospacelab/datahub/sources/noaa/swpc/goesxray}/__init__.py +0 -0
  196. {geospacelab-0.9.2/geospacelab/future → geospacelab-0.9.4/geospacelab/datahub/sources/noaa/swpc/solarwind}/__init__.py +0 -0
  197. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/superdarn/__init__.py +0 -0
  198. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/superdarn/potmap/__init__.py +0 -0
  199. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/superdarn/potmap/downloader.py +0 -0
  200. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/superdarn/potmap/loader.py +0 -0
  201. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/superdarn/potmap/variable_config.py +0 -0
  202. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/supermag/__init__.py +0 -0
  203. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/supermag/indices/__init__.py +0 -0
  204. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/supermag/indices/downloader.py +0 -0
  205. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/supermag/indices/loader.py +0 -0
  206. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/supermag/indices/variable_config.py +0 -0
  207. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/supermag/magnetometer/__init__.py +0 -0
  208. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/supermag/magnetometer/downloader.py +0 -0
  209. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/supermag/magnetometer/loader.py +0 -0
  210. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/supermag/magnetometer/variable_config.py +0 -0
  211. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/supermag/supermag_api.py +0 -0
  212. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/supermag/utilities.py +0 -0
  213. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/__init__.py +0 -0
  214. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/champ/__init__.py +0 -0
  215. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/champ/dns_acc/__init__.py +0 -0
  216. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/champ/dns_acc/downloader.py +0 -0
  217. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/champ/dns_acc/loader.py +0 -0
  218. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/champ/dns_acc/variable_config.py +0 -0
  219. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/champ/wnd_acc/__init__.py +0 -0
  220. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/champ/wnd_acc/downloader.py +0 -0
  221. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/champ/wnd_acc/loader.py +0 -0
  222. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/champ/wnd_acc/variable_config.py +0 -0
  223. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/downloader.py +0 -0
  224. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/goce/__init__.py +0 -0
  225. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/__init__.py +0 -0
  226. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/downloader.py +0 -0
  227. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/loader.py +0 -0
  228. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/variable_config.py +0 -0
  229. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/grace/__init__.py +0 -0
  230. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/grace/dns_acc/__init__.py +0 -0
  231. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/grace/dns_acc/downloader.py +0 -0
  232. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/grace/dns_acc/loader.py +0 -0
  233. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/grace/dns_acc/variable_config.py +0 -0
  234. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/grace/wnd_acc/__init__.py +0 -0
  235. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/grace/wnd_acc/downloader.py +0 -0
  236. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/grace/wnd_acc/loader.py +0 -0
  237. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/grace/wnd_acc/variable_config.py +0 -0
  238. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/grace_fo/__init__.py +0 -0
  239. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/__init__.py +0 -0
  240. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/downloader.py +0 -0
  241. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/loader.py +0 -0
  242. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/variable_config.py +0 -0
  243. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/__init__.py +0 -0
  244. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/downloader.py +0 -0
  245. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/loader.py +0 -0
  246. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/variable_config.py +0 -0
  247. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/swarm/__init__.py +0 -0
  248. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/swarm/dns_acc/__init__.py +0 -0
  249. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/swarm/dns_acc/downloader.py +0 -0
  250. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/swarm/dns_acc/loader.py +0 -0
  251. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/swarm/dns_acc/variable_config.py +0 -0
  252. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/swarm/dns_pod/__init__.py +0 -0
  253. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/swarm/dns_pod/downloader.py +0 -0
  254. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/swarm/dns_pod/loader.py +0 -0
  255. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/tud/swarm/dns_pod/variable_config.py +0 -0
  256. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/wdc/__init__.py +0 -0
  257. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/wdc/ae/__init__.py +0 -0
  258. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/wdc/ae/downloader.py +0 -0
  259. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/wdc/ae/loader.py +0 -0
  260. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/wdc/ae/variable_config.py +0 -0
  261. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/wdc/asysym/__init__.py +0 -0
  262. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/wdc/asysym/downloader.py +0 -0
  263. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/wdc/asysym/loader.py +0 -0
  264. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/wdc/asysym/variable_config.py +0 -0
  265. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/wdc/dst/__init__.py +0 -0
  266. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/wdc/dst/downloader.py +0 -0
  267. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/wdc/dst/loader.py +0 -0
  268. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/datahub/sources/wdc/dst/variable_config.py +0 -0
  269. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/express/__init__.py +0 -0
  270. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/express/dmsp_dashboard.py +0 -0
  271. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/express/eiscat_dashboard.py +0 -0
  272. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/express/millstonehill_dashboard.py +0 -0
  273. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/express/omni_dashboard.py +0 -0
  274. {geospacelab-0.9.2/geospacelab/future/empiricalmodels → geospacelab-0.9.4/geospacelab/future}/__init__.py +0 -0
  275. {geospacelab-0.9.2/geospacelab/future/empiricalmodels/ovationprime2010 → geospacelab-0.9.4/geospacelab/future/empiricalmodels}/__init__.py +0 -0
  276. {geospacelab-0.9.2/geospacelab/future/satllites → geospacelab-0.9.4/geospacelab/future/empiricalmodels/ovationprime2010}/__init__.py +0 -0
  277. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/future/empiricalmodels/ovationprime2010/ovationprime.py +0 -0
  278. {geospacelab-0.9.2/geospacelab/observatory → geospacelab-0.9.4/geospacelab/future/satllites}/__init__.py +0 -0
  279. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/future/satllites/orbit_analyzer.py +0 -0
  280. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/future/test_sscws.py +0 -0
  281. {geospacelab-0.9.2/geospacelab/observatory/earth → geospacelab-0.9.4/geospacelab/observatory}/__init__.py +0 -0
  282. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/observatory/constants.py +0 -0
  283. {geospacelab-0.9.2/geospacelab/observatory/orbit → geospacelab-0.9.4/geospacelab/observatory/earth}/__init__.py +0 -0
  284. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/observatory/earth/_func.py +0 -0
  285. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/observatory/earth/constants.py +0 -0
  286. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/observatory/earth/geodesy.py +0 -0
  287. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/observatory/earth/sun_position.py +0 -0
  288. {geospacelab-0.9.2/geospacelab/observatory/site → geospacelab-0.9.4/geospacelab/observatory/orbit}/__init__.py +0 -0
  289. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/observatory/orbit/sc_orbit.py +0 -0
  290. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/observatory/orbit/utilities.py +0 -0
  291. {geospacelab-0.9.2/geospacelab/quantity → geospacelab-0.9.4/geospacelab/observatory/site}/__init__.py +0 -0
  292. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/observatory/site/mixins.py +0 -0
  293. {geospacelab-0.9.2/geospacelab/toolbox/unit → geospacelab-0.9.4/geospacelab/quantity}/__init__.py +0 -0
  294. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/toolbox/__init__.py +0 -0
  295. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/toolbox/io/__init__.py +0 -0
  296. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/toolbox/io/dialog.py +0 -0
  297. {geospacelab-0.9.2/geospacelab/visualization/plotly → geospacelab-0.9.4/geospacelab/toolbox/unit}/__init__.py +0 -0
  298. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/toolbox/utilities/__init__.py +0 -0
  299. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/toolbox/utilities/numpyarray.py +0 -0
  300. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/toolbox/utilities/numpymath.py +0 -0
  301. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/toolbox/utilities/pybasic.py +0 -0
  302. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/toolbox/utilities/pyclass.py +0 -0
  303. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/toolbox/utilities/pydatetime.py +0 -0
  304. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/toolbox/utilities/pylogging.py +0 -0
  305. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/toolbox/utilities/pyos.py +0 -0
  306. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/visualization/__init__.py +0 -0
  307. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/visualization/mpl/__base__.py +0 -0
  308. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/visualization/mpl/__init__.py +0 -0
  309. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/visualization/mpl/_helpers.py +0 -0
  310. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/visualization/mpl/axes.py +0 -0
  311. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/visualization/mpl/axis_ticks.py +0 -0
  312. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/visualization/mpl/colormaps.py +0 -0
  313. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/visualization/mpl/dashboards.py +0 -0
  314. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/visualization/mpl/figure.py +0 -0
  315. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/visualization/mpl/geomap/__base__.py +0 -0
  316. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/visualization/mpl/geomap/__init__.py +0 -0
  317. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/visualization/mpl/geomap/geodashboards.py +0 -0
  318. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/visualization/mpl/geomap/geopanels.py +0 -0
  319. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/visualization/mpl/panels.py +0 -0
  320. {geospacelab-0.9.2/geospacelab/wrapper → geospacelab-0.9.4/geospacelab/visualization/plotly}/__init__.py +0 -0
  321. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/visualization/plotly/ipanel.py +0 -0
  322. {geospacelab-0.9.2/geospacelab/wrapper/geopack → geospacelab-0.9.4/geospacelab/wrapper}/__init__.py +0 -0
  323. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/wrapper/geopack/LICENSE +0 -0
  324. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/wrapper/geopack/README.md +0 -0
  325. {geospacelab-0.9.2/geospacelab/wrapper/geopack → geospacelab-0.9.4/geospacelab/wrapper}/geopack/__init__.py +0 -0
  326. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/wrapper/geopack/geopack/geopack.py +0 -0
  327. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/wrapper/geopack/geopack/igrf13coeffs.txt +0 -0
  328. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/wrapper/geopack/geopack/t01.py +0 -0
  329. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/wrapper/geopack/geopack/t04.py +0 -0
  330. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/wrapper/geopack/geopack/t89.py +0 -0
  331. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/wrapper/geopack/geopack/t96.py +0 -0
  332. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/wrapper/geopack/geopack/test_geopack1.md +0 -0
  333. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab/wrapper/geopack/geopack/test_geopack1.py +0 -0
  334. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab.egg-info/dependency_links.txt +0 -0
  335. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab.egg-info/requires.txt +0 -0
  336. {geospacelab-0.9.2 → geospacelab-0.9.4}/geospacelab.egg-info/top_level.txt +0 -0
  337. {geospacelab-0.9.2 → geospacelab-0.9.4}/setup.cfg +0 -0
  338. {geospacelab-0.9.2 → geospacelab-0.9.4}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: geospacelab
3
- Version: 0.9.2
3
+ Version: 0.9.4
4
4
  Summary: Collect, manage, and visualize geospace data.
5
5
  Home-page: https://github.com/JouleCai/geospacelab
6
6
  Author: Lei Cai
@@ -104,6 +104,7 @@ on [readthedocs.io](https://geospacelab.readthedocs.io/en/latest/).
104
104
  | Data Source | Variables | File Format | Downloadable | Express | Status |
105
105
  |------------------------------|------------------------------------|-----------------------|---------------|-------------------------------|--------|
106
106
  | CDAWeb/OMNI | Solar wind and IMF |*cdf* | *True* | __OMNIDashboard__ | stable |
107
+ | CDAWeb/DMSP/SSUSI/EDR_AUR | DMSP SSUSI EDR_AUR emission lines | *netcdf* | *True* | __DMSPSSUSIDashboard__ | stable |
107
108
  | Madrigal/EISCAT | Ionospheric Ne, Te, Ti, ... | *EISCAT-hdf5*, *Madrigal-hdf5* | *True* | __EISCATDashboard__ | stable |
108
109
  | Madrigal/GNSS/TECMAP | Ionospheric GPS TEC map | *hdf5* | *True* | - | beta |
109
110
  | Madrigal/DMSP/s1 | DMSP SSM, SSIES, etc | *hdf5* | *True* | __DMSPTSDashboard__ | stable |
@@ -111,7 +112,6 @@ on [readthedocs.io](https://geospacelab.readthedocs.io/en/latest/).
111
112
  | Madrigal/DMSP/e | DMSP SSJ | *hdf5* | *True* | __DMSPTSDashboard__ | stable |
112
113
  | Madrigal/Millstone Hill ISR+ | Millstone Hill ISR | *hdf5* | *True* | __MillstoneHillISRDashboard__ | stable |
113
114
  | Madrigal/Poker Flat ISR | Poker Flat ISR | *hdf5* | *True* | __-_ | stable |
114
- | JHUAPL/DMSP/SSUSI | DMSP SSUSI | *netcdf* | *True* | __DMSPSSUSIDashboard__ | stable |
115
115
  | JHUAPL/AMPERE/fitted | AMPERE FAC | *netcdf* | *False* | __AMPEREDashboard__ | stable |
116
116
  | SuperDARN/POTMAP | SuperDARN potential map | *ascii* | *False* | - | stable |
117
117
  | WDC/Dst | Dst index | *IAGA2002-ASCII* | *True* | - | stable |
@@ -374,6 +374,9 @@ Output:
374
374
  > ![alt text](https://github.com/JouleCai/geospacelab/blob/master/examples/OMNI_1min_20160314-060000-20160320-060000.png?raw=true)
375
375
 
376
376
  ### Example 4: Mapping geospatial data in the polar map.
377
+ > **_NOTE_**: JHUAPL stopped supporting DMSP SSUSI on 14 Feb 2025.
378
+ From then on, the data source has been switched from JHUAPL to CDAWeb.
379
+
377
380
  ```python
378
381
  import datetime
379
382
  import matplotlib.pyplot as plt
@@ -48,6 +48,7 @@ on [readthedocs.io](https://geospacelab.readthedocs.io/en/latest/).
48
48
  | Data Source | Variables | File Format | Downloadable | Express | Status |
49
49
  |------------------------------|------------------------------------|-----------------------|---------------|-------------------------------|--------|
50
50
  | CDAWeb/OMNI | Solar wind and IMF |*cdf* | *True* | __OMNIDashboard__ | stable |
51
+ | CDAWeb/DMSP/SSUSI/EDR_AUR | DMSP SSUSI EDR_AUR emission lines | *netcdf* | *True* | __DMSPSSUSIDashboard__ | stable |
51
52
  | Madrigal/EISCAT | Ionospheric Ne, Te, Ti, ... | *EISCAT-hdf5*, *Madrigal-hdf5* | *True* | __EISCATDashboard__ | stable |
52
53
  | Madrigal/GNSS/TECMAP | Ionospheric GPS TEC map | *hdf5* | *True* | - | beta |
53
54
  | Madrigal/DMSP/s1 | DMSP SSM, SSIES, etc | *hdf5* | *True* | __DMSPTSDashboard__ | stable |
@@ -55,7 +56,6 @@ on [readthedocs.io](https://geospacelab.readthedocs.io/en/latest/).
55
56
  | Madrigal/DMSP/e | DMSP SSJ | *hdf5* | *True* | __DMSPTSDashboard__ | stable |
56
57
  | Madrigal/Millstone Hill ISR+ | Millstone Hill ISR | *hdf5* | *True* | __MillstoneHillISRDashboard__ | stable |
57
58
  | Madrigal/Poker Flat ISR | Poker Flat ISR | *hdf5* | *True* | __-_ | stable |
58
- | JHUAPL/DMSP/SSUSI | DMSP SSUSI | *netcdf* | *True* | __DMSPSSUSIDashboard__ | stable |
59
59
  | JHUAPL/AMPERE/fitted | AMPERE FAC | *netcdf* | *False* | __AMPEREDashboard__ | stable |
60
60
  | SuperDARN/POTMAP | SuperDARN potential map | *ascii* | *False* | - | stable |
61
61
  | WDC/Dst | Dst index | *IAGA2002-ASCII* | *True* | - | stable |
@@ -318,6 +318,9 @@ Output:
318
318
  > ![alt text](https://github.com/JouleCai/geospacelab/blob/master/examples/OMNI_1min_20160314-060000-20160320-060000.png?raw=true)
319
319
 
320
320
  ### Example 4: Mapping geospatial data in the polar map.
321
+ > **_NOTE_**: JHUAPL stopped supporting DMSP SSUSI on 14 Feb 2025.
322
+ From then on, the data source has been switched from JHUAPL to CDAWeb.
323
+
321
324
  ```python
322
325
  import datetime
323
326
  import matplotlib.pyplot as plt
@@ -6,7 +6,7 @@ __author__ = "Lei Cai"
6
6
  __copyright__ = "Copyright 2021, GeospaceLAB"
7
7
  __credits__ = ["Lei Cai"]
8
8
  __license__ = "BSD-3-Clause License"
9
- __version__ = "0.9.2"
9
+ __version__ = "0.9.4"
10
10
  __maintainer__ = "Lei Cai"
11
11
  __email__ = "lei.cai@oulu.fi"
12
12
  __status__ = "Developing"
@@ -0,0 +1,234 @@
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
+ import datetime
6
+
7
+ import numpy as np
8
+
9
+ import geospacelab.datahub as datahub
10
+ from geospacelab.datahub import DatabaseModel, FacilityModel, InstrumentModel, ProductModel
11
+ from geospacelab.datahub.sources.cdaweb import cdaweb_database
12
+ from geospacelab.config import prf
13
+ import geospacelab.toolbox.utilities.pydatetime as dttool
14
+ import geospacelab.toolbox.utilities.pybasic as basic
15
+ import geospacelab.toolbox.utilities.pylogging as mylog
16
+ from geospacelab.datahub.sources.cdaweb.dmsp.ssusi.edr_aur.loader import Loader as default_Loader
17
+ from geospacelab.datahub.sources.cdaweb.dmsp.ssusi.edr_aur.downloader import Downloader as default_Downloader
18
+ import geospacelab.datahub.sources.cdaweb.dmsp.ssusi.edr_aur.variable_config as var_config
19
+
20
+
21
+ default_dataset_attrs = {
22
+ 'database': cdaweb_database,
23
+ 'facility': 'DMSP',
24
+ 'instrument': 'SSUSI',
25
+ 'product': 'EDR_AUR',
26
+ 'data_file_ext': 'nc',
27
+ 'data_root_dir': prf.datahub_data_root_dir / 'CDAWeb' / 'DMSP' / 'SSUSI' / 'EDR_AUR',
28
+ 'allow_load': True,
29
+ 'allow_download': True,
30
+ 'data_search_recursive': False,
31
+ 'label_fields': ['database', 'facility', 'instrument', 'product'],
32
+ 'time_clip': False,
33
+ }
34
+
35
+ default_variable_names = [
36
+ 'DATETIME', 'STARTING_TIME', 'STOPPING_TIME',
37
+ 'GRID_MLAT', 'GRID_MLON', 'GRID_MLT', 'GRID_UT',
38
+ 'GRID_AUR_1216', 'GRID_AUR_1304', 'GRID_AUR_1356', 'GRID_AUR_LBHS', 'GRID_AUR_LBHL',
39
+ ]
40
+
41
+ # default_data_search_recursive = True
42
+
43
+ default_attrs_required = []
44
+
45
+
46
+ class Dataset(datahub.DatasetSourced):
47
+ def __init__(self, **kwargs):
48
+ kwargs = basic.dict_set_default(kwargs, **default_dataset_attrs)
49
+
50
+ super().__init__(**kwargs)
51
+
52
+ self.database = kwargs.pop('database', 'CDAWeb')
53
+ self.facility = kwargs.pop('facility', 'DMSP')
54
+ self.instrument = kwargs.pop('instrument', 'SSUSI')
55
+ self.product = kwargs.pop('product', 'EDR-EUR')
56
+ self.allow_download = kwargs.pop('allow_download', True)
57
+
58
+ self.sat_id = kwargs.pop('sat_id', '')
59
+ self.orbit_id = kwargs.pop('orbit_id', None)
60
+ self.pole = kwargs.pop('pole', '')
61
+
62
+ self.metadata = None
63
+
64
+ allow_load = kwargs.pop('allow_load', False)
65
+
66
+ # self.config(**kwargs)
67
+
68
+ if self.loader is None:
69
+ self.loader = default_Loader
70
+
71
+ if self.downloader is None:
72
+ self.downloader = default_Downloader
73
+
74
+ self._validate_attrs()
75
+
76
+ if allow_load:
77
+ self.load_data()
78
+
79
+ def _validate_attrs(self):
80
+ for attr_name in default_attrs_required:
81
+ attr = getattr(self, attr_name)
82
+ if not str(attr):
83
+ mylog.StreamLogger.warning("The parameter {} is required before loading data!".format(attr_name))
84
+
85
+ def label(self, **kwargs):
86
+ label = super().label()
87
+ return label
88
+
89
+ def load_data(self, **kwargs):
90
+ self.check_data_files(**kwargs)
91
+
92
+ self._set_default_variables(
93
+ default_variable_names,
94
+ configured_variables=var_config.configured_variables
95
+ )
96
+ for file_path in self.data_file_paths:
97
+ try:
98
+ load_obj = self.loader(file_path, file_type=self.product.lower(), pole=self.pole)
99
+ except Exception as e:
100
+ mylog.StreamLogger.warning(("Cannot load the data file: {}".format(file_path)))
101
+ print(e)
102
+ for var_name in self._variables.keys():
103
+ if var_name == 'EMISSION_SPECTRA':
104
+ self._variables[var_name].value = load_obj.variables[var_name]
105
+ continue
106
+ if var_name in ['DATETIME', 'STARTING_TIME', 'STOPPING_TIME']:
107
+ value = np.array([load_obj.variables[var_name]])[np.newaxis, :]
108
+ else:
109
+ value = np.empty((1, ), dtype=object)
110
+ value[0] = load_obj.variables[var_name]
111
+ # value = load_obj.variables[var_name][np.newaxis, ::]
112
+ self._variables[var_name].join(value)
113
+
114
+ self.orbit_id = load_obj.metadata['ORBIT_ID']
115
+ # self.select_beams(field_aligned=True)
116
+ if self.time_clip:
117
+ self.time_filter_by_range()
118
+
119
+ def get_time_ind(self, ut, time_res=20*60, var_datetime_name='DATETIME', edge_cutoff=False, **kwargs):
120
+ ind = super().get_time_ind(ut, time_res=time_res, var_datetime_name=var_datetime_name, edge_cutoff=edge_cutoff, **kwargs)
121
+ return ind
122
+
123
+ def search_data_files(self, **kwargs):
124
+ dt_fr_1 = self.dt_fr - datetime.timedelta(hours=3)
125
+ dt_to_1 = self.dt_to + datetime.timedelta(hours=3)
126
+
127
+ diff_days = dttool.get_diff_days(dt_fr_1, dt_to_1)
128
+
129
+ dt0 = dttool.get_start_of_the_day(dt_fr_1)
130
+ for i in range(diff_days + 1):
131
+ thisday = dt0 + datetime.timedelta(days=i)
132
+ initial_file_dir = kwargs.pop('initial_file_dir', None)
133
+ if initial_file_dir is None:
134
+ initial_file_dir = self.data_root_dir / self.sat_id.upper() / str(thisday.year) /thisday.strftime("%Y%m%d")
135
+
136
+ file_patterns = [
137
+ 'dmsp' + self.sat_id.lower(),
138
+ 'edr-aurora',
139
+ thisday.strftime("%Y%j") + 'T',
140
+ ]
141
+
142
+ if self.orbit_id is not None:
143
+ file_patterns.extend(['REV', self.orbit_id])
144
+ multiple_files = False
145
+ else:
146
+ multiple_files = True
147
+ # remove empty str
148
+ file_patterns = [pattern for pattern in file_patterns if str(pattern)]
149
+
150
+ search_pattern = '*' + '*'.join(file_patterns) + '*'
151
+
152
+ done = super().search_data_files(
153
+ initial_file_dir=initial_file_dir,
154
+ search_pattern=search_pattern,
155
+ allow_multiple_files=multiple_files,
156
+ )
157
+ if done and self.orbit_id is not None:
158
+ return True
159
+
160
+ # Validate file paths
161
+
162
+ if not done and self.allow_download:
163
+ done = self.download_data(dt_fr=thisday, dt_to=thisday)
164
+ if done:
165
+ done = super().search_data_files(
166
+ initial_file_dir=initial_file_dir,
167
+ search_pattern=search_pattern,
168
+ allow_multiple_files=multiple_files
169
+ )
170
+
171
+ return done
172
+
173
+ def download_data(self, dt_fr=None, dt_to=None):
174
+ if dt_fr is None:
175
+ dt_fr = self.dt_fr
176
+ if dt_to is None:
177
+ dt_to = self.dt_to
178
+ download_obj = self.downloader(
179
+ dt_fr, dt_to,
180
+ orbit_id=self.orbit_id, sat_id=self.sat_id,
181
+ )
182
+ return download_obj.done
183
+
184
+ @property
185
+ def database(self):
186
+ return self._database
187
+
188
+ @database.setter
189
+ def database(self, value):
190
+ if isinstance(value, str):
191
+ self._database = DatabaseModel(value)
192
+ elif issubclass(value.__class__, DatabaseModel):
193
+ self._database = value
194
+ else:
195
+ raise TypeError
196
+
197
+ @property
198
+ def product(self):
199
+ return self._product
200
+
201
+ @product.setter
202
+ def product(self, value):
203
+ if isinstance(value, str):
204
+ self._product = ProductModel(value)
205
+ elif issubclass(value.__class__, ProductModel):
206
+ self._product = value
207
+ else:
208
+ raise TypeError
209
+
210
+ @property
211
+ def facility(self):
212
+ return self._facility
213
+
214
+ @facility.setter
215
+ def facility(self, value):
216
+ if isinstance(value, str):
217
+ self._facility = FacilityModel(value)
218
+ elif issubclass(value.__class__, FacilityModel):
219
+ self._facility = value
220
+ else:
221
+ raise TypeError
222
+
223
+ @property
224
+ def instrument(self):
225
+ return self._instrument
226
+
227
+ @instrument.setter
228
+ def instrument(self, value):
229
+ if isinstance(value, str):
230
+ self._instrument = InstrumentModel(value)
231
+ elif issubclass(value.__class__, InstrumentModel):
232
+ self._instrument = value
233
+ else:
234
+ raise TypeError
@@ -0,0 +1,93 @@
1
+ import datetime
2
+ import pathlib
3
+ import copy
4
+
5
+ import geospacelab.toolbox.utilities.pydatetime as dttool
6
+ import geospacelab.toolbox.utilities.pylogging as mylog
7
+ from geospacelab.config import prf
8
+ from geospacelab.datahub.sources.cdaweb.downloader import Downloader as DownloaderBase
9
+
10
+
11
+ class Downloader(DownloaderBase):
12
+
13
+ def __init__(
14
+ self,
15
+ dt_fr=None, dt_to=None,
16
+ sat_id=None,
17
+ orbit_id=None,
18
+ direct_download=True,
19
+ force_download=False,
20
+ data_file_root_dir = None,
21
+ dry_run=False,
22
+ ):
23
+ product = 'EDR_AUR'
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()
26
+ self.sat_id = sat_id
27
+ self.orbit_id = orbit_id
28
+ self.source_subdirs = ['dmsp', 'dmsp'+self.sat_id.lower(), 'ssusi', 'data', 'edr-aurora']
29
+
30
+ super().__init__(
31
+ dt_fr, dt_to,
32
+ data_file_root_dir=data_file_root_dir,
33
+ direct_download=direct_download,force_download=force_download,dry_run=dry_run
34
+ )
35
+
36
+
37
+ def search_from_http(self, file_name_patterns=None, allow_multiple_files=True):
38
+
39
+ dt_fr_1 = self.dt_fr - datetime.timedelta(hours=3)
40
+ dt_to_1 = self.dt_to + datetime.timedelta(hours=3)
41
+ diff_days = dttool.get_diff_days(dt_fr_1, dt_to_1)
42
+ dt0 = dttool.get_start_of_the_day(dt_fr_1)
43
+ source_file_paths = []
44
+ for nd in range(diff_days + 1):
45
+ this_day = dt0 + datetime.timedelta(days=nd)
46
+ doy = dttool.get_doy(this_day)
47
+ sdoy = '{:03d}'.format(doy)
48
+ subdirs = copy.deepcopy(self.source_subdirs)
49
+ subdirs.extend(
50
+ [str(this_day.year), sdoy]
51
+ )
52
+
53
+ if self.orbit_id is None:
54
+ file_name_patterns = [
55
+ 'dmsp' + self.sat_id.lower(),
56
+ 'ssusi',
57
+ 'edr-aurora',
58
+ this_day.strftime("%Y") + sdoy + 'T',
59
+ '.nc'
60
+ ]
61
+ else:
62
+ file_name_patterns = [
63
+ 'dmsp' + self.sat_id.lower(),
64
+ 'ssusi',
65
+ 'edr-aurora',
66
+ 'REV',
67
+ self.orbit_id,
68
+ '.nc'
69
+ ]
70
+ paths = super().search_from_http(subdirs=subdirs, file_name_patterns=file_name_patterns)
71
+ source_file_paths.extend(paths)
72
+ return source_file_paths
73
+
74
+ def save_file_from_http(self, url, file_dir=None, file_name=None):
75
+
76
+ sy = url.split('/')[-3]
77
+ sdoy = url.split('/')[-2]
78
+ year = int(sy)
79
+ this_day = dttool.convert_doy_to_datetime(year, int(sdoy))
80
+ if file_dir is None:
81
+ file_dir = self.data_file_root_dir / sy / this_day.strftime("%Y%m%d")
82
+ super().save_file_from_http(url, file_dir=file_dir)
83
+
84
+
85
+
86
+ if __name__ == "__main__":
87
+ downloader = Downloader(
88
+ dt_fr = datetime.datetime(2011, 1, 6),
89
+ dt_to = datetime.datetime(2011, 1, 6, 12),
90
+ sat_id='F17',
91
+ orbit_id='21523',
92
+ dry_run=False,
93
+ )
@@ -0,0 +1,112 @@
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
+ import netCDF4
6
+ import datetime
7
+ import numpy as np
8
+ import geospacelab.toolbox.utilities.pydatetime as dttool
9
+
10
+
11
+ class Loader(object):
12
+
13
+ def __init__(self, file_path, file_type='edr-aur', pole='N'):
14
+
15
+ self.variables = {}
16
+ self.metadata = {}
17
+ self.file_path = file_path
18
+ self.file_type = file_type
19
+ self.pole = pole
20
+
21
+ self.load_data()
22
+
23
+ def load_data(self):
24
+ dataset = netCDF4.Dataset(self.file_path)
25
+ variables = {}
26
+ metadata = {}
27
+
28
+ if self.pole == 'N':
29
+ pole = self.pole
30
+ pole_str = 'NORTH'
31
+ elif self.pole == 'S':
32
+ pole = self.pole
33
+ pole_str = 'SOUTH'
34
+ else:
35
+ raise ValueError
36
+ # Time and Position
37
+ # sectime = int(np.array(dataset.variables['TIME']).flatten()[0])
38
+ # doy = int(np.array(dataset.variables['DOY']).flatten()[0])
39
+ # year = int(np.array(dataset.variables['YEAR']).flatten()[0])
40
+ # dt0 = dttool.convert_doy_to_datetime(year, doy)
41
+ starting_time = datetime.datetime.strptime(dataset.STARTING_TIME, "%Y%j%H%M%S")
42
+ variables['STARTING_TIME'] = starting_time
43
+ stopping_time = datetime.datetime.strptime(dataset.STOPPING_TIME, "%Y%j%H%M%S")
44
+ variables['STOPPING_TIME'] = stopping_time
45
+ dt0 = dttool.get_start_of_the_day(starting_time)
46
+
47
+ variables['SC_LAT'] = np.array(dataset.variables['LATITUDE'])
48
+ variables['SC_LON'] = np.array(dataset.variables['LONGITUDE'])
49
+ variables['SC_ALT'] = np.array(dataset.variables['ALTITUDE'])
50
+
51
+ variables['GRID_MLAT'] = np.array(dataset.variables['LATITUDE_GEOMAGNETIC_GRID_MAP'])
52
+ variables['GRID_MLON'] = np.array(
53
+ dataset.variables['LONGITUDE_GEOMAGNETIC_' + pole_str + '_GRID_MAP'])
54
+ variables['GRID_MLT'] = np.array(dataset.variables['MLT_GRID_MAP'])
55
+ if self.pole == 'S':
56
+ variables['GRID_MLAT'] = - variables['GRID_MLAT']
57
+ variables['GRID_UT'] = np.array(dataset.variables['UT_' + pole])
58
+ lat = np.array(variables['GRID_MLAT'])
59
+ ut = np.array(variables['GRID_UT'])
60
+ lat = np.where(ut == 0, np.nan, lat)
61
+ if self.pole == 'N':
62
+ ind_mid_t = np.where(lat == np.nanmax(lat.flatten()))
63
+ else:
64
+ ind_mid_t = np.where(lat == np.nanmin(lat.flatten()))
65
+ sectime0 = variables['GRID_UT'][ind_mid_t][0] * 3600
66
+
67
+ diff_days = dttool.get_diff_days(starting_time, stopping_time)
68
+ if diff_days > 0 and sectime0 < 0.5 * 86400.:
69
+ dt = dt0 + datetime.timedelta(seconds=int(sectime0 + 86400))
70
+ else:
71
+ dt = dt0 + datetime.timedelta(seconds=int(sectime0))
72
+ variables['DATETIME'] = dt
73
+
74
+ invalid_ut_inds = np.where(ut == 0)
75
+ # Auroral map, #colors: 0: '1216', 1: '1304', 2: '1356', 3: 'LBHS', 4: 'LBHL'.
76
+ variables['EMISSION_SPECTRA'] = ['1216', '1304', '1356', 'LBHS', 'LBHL']
77
+ disk_aur = np.array(dataset.variables['DISK_RADIANCEDATA_INTENSITY_' + pole_str])
78
+ # disk_aur[:, invalid_ut_inds] = np.nan
79
+ disk_aur[disk_aur <= 0] = 0.1
80
+ variables['GRID_AUR_1216'] = disk_aur[0, ::]
81
+ variables['GRID_AUR_1216'][invalid_ut_inds] = np.nan
82
+ variables['GRID_AUR_1304'] = disk_aur[1, ::]
83
+ variables['GRID_AUR_1304'][invalid_ut_inds] = np.nan
84
+ variables['GRID_AUR_1356'] = disk_aur[2, ::]
85
+ variables['GRID_AUR_1356'][invalid_ut_inds] = np.nan
86
+ variables['GRID_AUR_LBHS'] = disk_aur[3, ::]
87
+ variables['GRID_AUR_LBHS'][invalid_ut_inds] = np.nan
88
+ variables['GRID_AUR_LBHL'] = disk_aur[4, ::]
89
+ variables['GRID_AUR_LBHL'][invalid_ut_inds] = np.nan
90
+
91
+ # Auroral oval boundary
92
+ variables['AOB_EQ_MLAT'] = np.array(dataset.variables[pole_str + '_GEOMAGNETIC_LATITUDE'])
93
+ variables['AOB_EQ_MLON'] = np.array(dataset.variables[pole_str + '_GEOMAGNETIC_LONGITUDE'])
94
+ variables['AOB_EQ_MLT'] = np.array(dataset.variables[pole_str + '_MAGNETIC_LOCAL_TIME'])
95
+
96
+ variables['AOB_PL_MLAT'] = np.array(dataset.variables[pole_str + '_POLAR_GEOMAGNETIC_LATITUDE'])
97
+ variables['AOB_PL_MLON'] = np.array(dataset.variables[pole_str + '_POLAR_GEOMAGNETIC_LONGITUDE'])
98
+ variables['AOB_PL_MLT'] = np.array(dataset.variables[pole_str + '_POLAR_MAGNETIC_LOCAL_TIME'])
99
+
100
+ variables['MAOB_EQ_MLAT'] = np.array(dataset.variables['MODEL_' + pole_str + '_GEOMAGNETIC_LATITUDE'])
101
+ variables['MAOB_EQ_MLON'] = np.array(dataset.variables['MODEL_' + pole_str + '_GEOMAGNETIC_LONGITUDE'])
102
+ variables['MAOB_EQ_MLT'] = np.array(dataset.variables['MODEL_' + pole_str + '_MAGNETIC_LOCAL_TIME'])
103
+
104
+ variables['MAOB_PL_MLAT'] = np.array(dataset.variables['MODEL_' + pole_str + '_POLAR_GEOMAGNETIC_LATITUDE'])
105
+ variables['MAOB_PL_MLON'] = np.array(dataset.variables['MODEL_' + pole_str + '_POLAR_GEOMAGNETIC_LONGITUDE'])
106
+ variables['MAOB_PL_MLT'] = np.array(dataset.variables['MODEL_' + pole_str + '_POLAR_MAGNETIC_LOCAL_TIME'])
107
+
108
+ metadata.setdefault('ORBIT_ID', dataset.STARTING_ORBIT_NUMBER)
109
+ dataset.close()
110
+
111
+ self.variables = variables
112
+ self.metadata = metadata
@@ -0,0 +1,139 @@
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
+ from geospacelab.datahub import VariableModel as Var
12
+ import geospacelab.visualization.mpl.colormaps as cm
13
+
14
+ database = 'jhuapl'
15
+
16
+ timestamps = {
17
+ 'DATETIME': 'DATETIME',
18
+ }
19
+
20
+
21
+ default_colormap = cm.cmap_aurora()
22
+
23
+ default_plot_config = {
24
+ 'line': {
25
+ 'linestyle': '-',
26
+ 'linewidth': 1.5,
27
+ 'marker': '',
28
+ 'markersize': 3,
29
+ },
30
+ 'pcolormesh': {
31
+ 'cmap': default_colormap,
32
+ 'c_scale': 'log',
33
+ 'c_lim': [50, 6000],
34
+ 'alpha': 0.9,
35
+ }
36
+ }
37
+
38
+ configured_variables = {}
39
+ visual = 'on'
40
+
41
+ depend_0 = {'UT': 'DATETIME'}
42
+ depend_1 = {'AACGM_LAT': 'GRID_MLAT'}
43
+ depend_2 = {'AACGM_LON': 'GRID_MLON'}
44
+ depend_c = {'SPECTRA': 'EMISSION_SPECTRA'}
45
+
46
+ ####################################################################################################################
47
+ var_name = 'GRID_AUR_LBHS'
48
+ var = Var(name=var_name, ndim=3, variable_type='scalar', visual=visual)
49
+ # set variable attrs
50
+ var.fullname = 'Auroral emission intensity at LBHS'
51
+ var.label = r'LBHS'
52
+ var.group = 'Emission intensity'
53
+ var.unit = 'R'
54
+ var.depends = {0: depend_0, 1: {'AACGM_LAT': 'GRID_MLAT'}, 2: {'AACGM_LON': 'GRID_MLON'}}
55
+ # set plot attrs
56
+ plot_config = var.visual.plot_config
57
+ plot_config.config(**default_plot_config)
58
+ plot_config.style = '2P'
59
+ # set axis attrs
60
+ axis = var.visual.axis
61
+
62
+
63
+ configured_variables[var_name] = var
64
+
65
+ ####################################################################################################################
66
+ var_name = 'GRID_AUR_LBHL'
67
+ var = Var(name=var_name, ndim=3, variable_type='scalar', visual=visual)
68
+ # set variable attrs
69
+ var.fullname = 'Auroral emission intensity at LBHL'
70
+ var.label = r'LBHL'
71
+ var.group = 'Emission intensity'
72
+ var.unit = 'R'
73
+ var.depends = {0: depend_0, 1: {'AACGM_LAT': 'GRID_MLAT'}, 2: {'AACGM_LON': 'GRID_MLON'}}
74
+ # set plot attrs
75
+ plot_config = var.visual.plot_config
76
+ plot_config.config(**default_plot_config)
77
+ plot_config.style = '2P'
78
+ # set axis attrs
79
+ axis = var.visual.axis
80
+
81
+
82
+ configured_variables[var_name] = var
83
+
84
+ ####################################################################################################################
85
+ var_name = 'GRID_AUR_1304'
86
+ var = Var(name=var_name, ndim=3, variable_type='scalar', visual=visual)
87
+ # set variable attrs
88
+ var.fullname = 'Auroral emission intensity at 130.4 nm'
89
+ var.label = r'1304'
90
+ var.group = 'Emission intensity'
91
+ var.unit = 'R'
92
+ var.depends = {0: depend_0, 1: {'AACGM_LAT': 'GRID_MLAT'}, 2: {'AACGM_LON': 'GRID_MLON'}}
93
+ # set plot attrs
94
+ plot_config = var.visual.plot_config
95
+ plot_config.config(**default_plot_config)
96
+ plot_config.style = '2P'
97
+ # set axis attrs
98
+ axis = var.visual.axis
99
+
100
+
101
+ configured_variables[var_name] = var
102
+
103
+ ####################################################################################################################
104
+ var_name = 'GRID_AUR_1356'
105
+ var = Var(name=var_name, ndim=3, variable_type='scalar', visual=visual)
106
+ # set variable attrs
107
+ var.fullname = 'Auroral emission intensity at 135.6 nm'
108
+ var.label = r'1356'
109
+ var.group = 'Emission intensity'
110
+ var.unit = 'R'
111
+ var.depends = {0: depend_0, 1: {'AACGM_LAT': 'GRID_MLAT'}, 2: {'AACGM_LON': 'GRID_MLON'}}
112
+ # set plot attrs
113
+ plot_config = var.visual.plot_config
114
+ plot_config.config(**default_plot_config)
115
+ plot_config.style = '2P'
116
+ # set axis attrs
117
+ axis = var.visual.axis
118
+
119
+
120
+ configured_variables[var_name] = var
121
+
122
+ ####################################################################################################################
123
+ var_name = 'GRID_AUR_1216'
124
+ var = Var(name=var_name, ndim=3, variable_type='scalar', visual=visual)
125
+ # set variable attrs
126
+ var.fullname = 'Auroral emission intensity at 121.6 nm'
127
+ var.label = r'1216'
128
+ var.group = 'Emission intensity'
129
+ var.unit = 'R'
130
+ var.depends = {0: depend_0, 1: {'AACGM_LAT': 'GRID_MLAT'}, 2: {'AACGM_LON': 'GRID_MLON'}}
131
+ # set plot attrs
132
+ plot_config = var.visual.plot_config
133
+ plot_config.config(**default_plot_config)
134
+ plot_config.style = '2P'
135
+ # set axis attrs
136
+ axis = var.visual.axis
137
+
138
+
139
+ configured_variables[var_name] = var