geospacelab 0.11.3__tar.gz → 0.12.1__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 (378) hide show
  1. {geospacelab-0.11.3/geospacelab.egg-info → geospacelab-0.12.1}/PKG-INFO +5 -6
  2. {geospacelab-0.11.3 → geospacelab-0.12.1}/README.md +1 -1
  3. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/__init__.py +1 -1
  4. geospacelab-0.12.1/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/downloader.py +103 -0
  5. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/__init__.py +17 -7
  6. geospacelab-0.12.1/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/downloader.py +44 -0
  7. geospacelab-0.12.1/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/sdr_disk/__init__.py +317 -0
  8. geospacelab-0.12.1/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/sdr_disk/downloader.py +44 -0
  9. geospacelab-0.12.1/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/sdr_disk/loader.py +198 -0
  10. geospacelab-0.12.1/geospacelab/datahub/sources/cdaweb/downloader.py +452 -0
  11. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/cdaweb/omni/__init__.py +26 -14
  12. geospacelab-0.12.1/geospacelab/datahub/sources/cdaweb/omni/downloader.py +129 -0
  13. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/__init__.py +1 -1
  14. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/downloader.py +1 -1
  15. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/__init__.py +1 -0
  16. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/loader.py +1 -0
  17. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/gfz/hpo/__init__.py +1 -1
  18. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/gfz/hpo/variable_config.py +3 -1
  19. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/jhuapl/ampere/__init__.py +2 -0
  20. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/jhuapl/ampere/grd/__init__.py +1 -1
  21. geospacelab-0.12.1/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/sdrdisk/variable_config.py +149 -0
  22. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/loader.py +1 -1
  23. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/satellites/dmsp/downloader.py +2 -1
  24. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/supermag/__init__.py +3 -0
  25. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/supermag/indices/__init__.py +1 -1
  26. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/supermag/magnetometer/__init__.py +1 -1
  27. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/champ/dns_acc/__init__.py +24 -7
  28. geospacelab-0.12.1/geospacelab/datahub/sources/tud/champ/dns_acc/downloader.py +42 -0
  29. geospacelab-0.12.1/geospacelab/datahub/sources/tud/champ/dns_acc/loader.py +86 -0
  30. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/champ/wnd_acc/__init__.py +68 -10
  31. geospacelab-0.12.1/geospacelab/datahub/sources/tud/champ/wnd_acc/downloader.py +42 -0
  32. geospacelab-0.12.1/geospacelab/datahub/sources/tud/champ/wnd_acc/loader.py +97 -0
  33. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/champ/wnd_acc/variable_config.py +3 -3
  34. geospacelab-0.12.1/geospacelab/datahub/sources/tud/downloader.py +327 -0
  35. geospacelab-0.12.1/geospacelab/datahub/sources/tud/goce/dns_acc/__init__.py +354 -0
  36. geospacelab-0.12.1/geospacelab/datahub/sources/tud/goce/dns_acc/downloader.py +42 -0
  37. {geospacelab-0.11.3/geospacelab/datahub/sources/tud/champ → geospacelab-0.12.1/geospacelab/datahub/sources/tud/goce}/dns_acc/loader.py +13 -7
  38. {geospacelab-0.11.3/geospacelab/datahub/sources/tud/goce/dns_wnd_acc → geospacelab-0.12.1/geospacelab/datahub/sources/tud/goce/dns_wnd_acc_v01}/__init__.py +48 -7
  39. geospacelab-0.12.1/geospacelab/datahub/sources/tud/goce/dns_wnd_acc_v01/downloader.py +42 -0
  40. {geospacelab-0.11.3/geospacelab/datahub/sources/tud/goce/dns_wnd_acc → geospacelab-0.12.1/geospacelab/datahub/sources/tud/goce/dns_wnd_acc_v01}/loader.py +11 -3
  41. {geospacelab-0.11.3/geospacelab/datahub/sources/tud/goce/dns_wnd_acc → geospacelab-0.12.1/geospacelab/datahub/sources/tud/goce/dns_wnd_acc_v01}/variable_config.py +3 -3
  42. geospacelab-0.12.1/geospacelab/datahub/sources/tud/goce/wnd_acc/__init__.py +339 -0
  43. geospacelab-0.12.1/geospacelab/datahub/sources/tud/goce/wnd_acc/downloader.py +42 -0
  44. {geospacelab-0.11.3/geospacelab/datahub/sources/tud/grace_fo → geospacelab-0.12.1/geospacelab/datahub/sources/tud/goce}/wnd_acc/loader.py +3 -0
  45. geospacelab-0.12.1/geospacelab/datahub/sources/tud/goce/wnd_acc/variable_config.py +188 -0
  46. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/grace/dns_acc/__init__.py +6 -3
  47. geospacelab-0.12.1/geospacelab/datahub/sources/tud/grace/dns_acc/downloader.py +42 -0
  48. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/grace/wnd_acc/__init__.py +21 -4
  49. geospacelab-0.12.1/geospacelab/datahub/sources/tud/grace/wnd_acc/downloader.py +42 -0
  50. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/grace/wnd_acc/loader.py +5 -1
  51. geospacelab-0.12.1/geospacelab/datahub/sources/tud/grace/wnd_acc/variable_config.py +190 -0
  52. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/__init__.py +6 -3
  53. geospacelab-0.12.1/geospacelab/datahub/sources/tud/grace_fo/dns_acc/downloader.py +50 -0
  54. geospacelab-0.12.1/geospacelab/datahub/sources/tud/grace_fo/dns_acc/variable_config.py +139 -0
  55. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/__init__.py +20 -4
  56. geospacelab-0.12.1/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/downloader.py +42 -0
  57. geospacelab-0.12.1/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/loader.py +66 -0
  58. geospacelab-0.12.1/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/variable_config.py +189 -0
  59. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/swarm/dns_acc/__init__.py +27 -5
  60. geospacelab-0.12.1/geospacelab/datahub/sources/tud/swarm/dns_acc/downloader.py +42 -0
  61. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/swarm/dns_pod/__init__.py +24 -5
  62. geospacelab-0.12.1/geospacelab/datahub/sources/tud/swarm/dns_pod/downloader.py +42 -0
  63. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/swarm/dns_pod/loader.py +3 -0
  64. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/wdc/asysym/downloader.py +2 -2
  65. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/visualization/mpl/dashboards.py +2 -1
  66. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/visualization/mpl/geomap/geopanels.py +15 -2
  67. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/visualization/mpl/panels.py +7 -3
  68. {geospacelab-0.11.3 → geospacelab-0.12.1/geospacelab.egg-info}/PKG-INFO +5 -6
  69. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab.egg-info/SOURCES.txt +18 -4
  70. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab.egg-info/requires.txt +1 -1
  71. {geospacelab-0.11.3 → geospacelab-0.12.1}/setup.py +3 -4
  72. geospacelab-0.11.3/geospacelab/datahub/sources/cdaweb/downloader.py +0 -153
  73. geospacelab-0.11.3/geospacelab/datahub/sources/cdaweb/omni/downloader.py +0 -116
  74. geospacelab-0.11.3/geospacelab/datahub/sources/tud/champ/dns_acc/downloader.py +0 -49
  75. geospacelab-0.11.3/geospacelab/datahub/sources/tud/champ/wnd_acc/downloader.py +0 -49
  76. geospacelab-0.11.3/geospacelab/datahub/sources/tud/champ/wnd_acc/loader.py +0 -68
  77. geospacelab-0.11.3/geospacelab/datahub/sources/tud/downloader.py +0 -152
  78. geospacelab-0.11.3/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/downloader.py +0 -49
  79. geospacelab-0.11.3/geospacelab/datahub/sources/tud/grace/dns_acc/downloader.py +0 -50
  80. geospacelab-0.11.3/geospacelab/datahub/sources/tud/grace/wnd_acc/downloader.py +0 -52
  81. geospacelab-0.11.3/geospacelab/datahub/sources/tud/grace/wnd_acc/variable_config.py +0 -116
  82. geospacelab-0.11.3/geospacelab/datahub/sources/tud/grace_fo/dns_acc/downloader.py +0 -55
  83. geospacelab-0.11.3/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/downloader.py +0 -57
  84. geospacelab-0.11.3/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/variable_config.py +0 -116
  85. geospacelab-0.11.3/geospacelab/datahub/sources/tud/swarm/dns_acc/downloader.py +0 -51
  86. geospacelab-0.11.3/geospacelab/datahub/sources/tud/swarm/dns_pod/downloader.py +0 -51
  87. {geospacelab-0.11.3 → geospacelab-0.12.1}/LICENSE +0 -0
  88. {geospacelab-0.11.3 → geospacelab-0.12.1}/MANIFEST.in +0 -0
  89. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/config/__init__.py +0 -0
  90. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/config/__mpl__.py +0 -0
  91. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/config/_preferences.py +0 -0
  92. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/cs/__init__.py +0 -0
  93. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/cs/_aacgm.py +0 -0
  94. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/cs/_apex.py +0 -0
  95. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/cs/_cs_base.py +0 -0
  96. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/cs/_geo.py +0 -0
  97. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/cs/geo_utilities.py +0 -0
  98. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/__dataset_base__.py +0 -0
  99. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/__init__.py +0 -0
  100. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/__metadata_base__.py +0 -0
  101. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/__variable_base__.py +0 -0
  102. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/__init__.py +0 -0
  103. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/cdaweb/__init__.py +0 -0
  104. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/cdaweb/dmsp/__init__.py +0 -0
  105. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/__init__.py +0 -0
  106. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/loader.py +0 -0
  107. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/variable_config.py +0 -0
  108. {geospacelab-0.11.3/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/sdrdisk → geospacelab-0.12.1/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/sdr_disk}/variable_config.py +0 -0
  109. /geospacelab-0.11.3/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/downloader.py → /geospacelab-0.12.1/geospacelab/datahub/sources/cdaweb/downloader_backup.py +0 -0
  110. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/cdaweb/omni/loader.py +0 -0
  111. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/cdaweb/omni/variable_config.py +0 -0
  112. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/__init__.py +0 -0
  113. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/__init__.py +0 -0
  114. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/advanced/__init__.py +0 -0
  115. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_fp/__init__.py +0 -0
  116. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/__init__.py +0 -0
  117. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/downloader.py +0 -0
  118. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/loader.py +0 -0
  119. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/variable_config.py +0 -0
  120. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/loader.py +0 -0
  121. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/variable_config.py +0 -0
  122. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct16/__init__.py +0 -0
  123. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/downloader.py +0 -0
  124. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l1b/__init__.py +0 -0
  125. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/__init__.py +0 -0
  126. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/downloader.py +0 -0
  127. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/loader.py +0 -0
  128. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/variable_config.py +0 -0
  129. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/__init__.py +0 -0
  130. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/downloader.py +0 -0
  131. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/loader.py +0 -0
  132. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/variable_config.py +0 -0
  133. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l2d/__init__.py +0 -0
  134. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/__init__.py +0 -0
  135. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/__init__.py +0 -0
  136. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/downloader.py +0 -0
  137. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/loader.py +0 -0
  138. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/variable_config.py +0 -0
  139. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/__init__.py +0 -0
  140. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/downloader.py +0 -0
  141. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/loader.py +0 -0
  142. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/variable_config.py +0 -0
  143. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/__init__.py +0 -0
  144. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/downloader.py +0 -0
  145. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/loader.py +0 -0
  146. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/variable_config.py +0 -0
  147. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/downloader.py +0 -0
  148. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/variable_config.py +0 -0
  149. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/l2l/__init__.py +0 -0
  150. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/loader.py +0 -0
  151. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/esa_eo/swarm/multimission/__init__.py +0 -0
  152. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/fmi/__init__.py +0 -0
  153. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/fmi/image/__init__.py +0 -0
  154. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/fmi/image/ie/__init__.py +0 -0
  155. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/fmi/image/ie/downloader.py +0 -0
  156. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/fmi/image/ie/loader.py +0 -0
  157. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/fmi/image/ie/variable_config.py +0 -0
  158. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/fmi/miracle/__init__.py +0 -0
  159. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/fmi/miracle/abk/__init__.py +0 -0
  160. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/fmi/miracle/kev/__init__.py +0 -0
  161. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/fmi/miracle/muo/__init__.py +0 -0
  162. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/gfz/__init__.py +0 -0
  163. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/gfz/downloader.py +0 -0
  164. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/gfz/hpo/downloader.py +0 -0
  165. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/gfz/hpo/loader.py +0 -0
  166. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/gfz/hpo/nowcast/__init__.py +0 -0
  167. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/gfz/hpo/nowcast/downloader.py +0 -0
  168. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/gfz/kpap/__init__.py +0 -0
  169. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/gfz/kpap/downloader.py +0 -0
  170. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/gfz/kpap/loader.py +0 -0
  171. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/gfz/kpap/nowcast/__init__.py +0 -0
  172. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/gfz/kpap/nowcast/downloader.py +0 -0
  173. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/gfz/kpap/nowcast/loader.py +0 -0
  174. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/gfz/kpap/nowcast/variable_config.py +0 -0
  175. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/gfz/kpap/variable_config.py +0 -0
  176. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/gfz/snf107/__init__.py +0 -0
  177. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/gfz/snf107/loader.py +0 -0
  178. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/gfz/snf107/variable_config.py +0 -0
  179. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/isee/__init__.py +0 -0
  180. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/isee/gnss/__init__.py +0 -0
  181. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/isee/gnss/tecmap/__init__.py +0 -0
  182. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/isee/gnss/tecmap/downloader.py +0 -0
  183. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/isee/gnss/tecmap/loader.py +0 -0
  184. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/isee/gnss/tecmap/variable_config.py +0 -0
  185. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/jhuapl/__init__.py +0 -0
  186. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/jhuapl/ampere/downloader.py +0 -0
  187. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/jhuapl/ampere/fitted/__init__.py +0 -0
  188. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/jhuapl/ampere/fitted/loader.py +0 -0
  189. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/jhuapl/ampere/fitted/variable_config.py +0 -0
  190. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/jhuapl/ampere/grd/downloader.py +0 -0
  191. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/jhuapl/ampere/grd/loader.py +0 -0
  192. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/jhuapl/ampere/grd/variable_config.py +0 -0
  193. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/jhuapl/dmsp/__init__.py +0 -0
  194. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/__init__.py +0 -0
  195. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/downloader.py +0 -0
  196. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/edraur/__init__.py +0 -0
  197. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/edraur/loader.py +0 -0
  198. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/edraur/variable_config.py +0 -0
  199. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/sdrdisk/__init__.py +0 -0
  200. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/sdrdisk/loader.py +0 -0
  201. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/__init__.py +0 -0
  202. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/downloader.py +0 -0
  203. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/gnss/__init__.py +0 -0
  204. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/gnss/tecmap/__init__.py +0 -0
  205. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/gnss/tecmap/downloader.py +0 -0
  206. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/gnss/tecmap/loader.py +0 -0
  207. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/gnss/tecmap/variable_config.py +0 -0
  208. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/__init__.py +0 -0
  209. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/eiscat/__init__.py +0 -0
  210. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/eiscat/downloader.py +0 -0
  211. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/eiscat/examples/__init__.py +0 -0
  212. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/eiscat/examples/eiscat_hdf5_info.py +0 -0
  213. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/eiscat/loader.py +0 -0
  214. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/eiscat/utilities.py +0 -0
  215. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/eiscat/variable_config.py +0 -0
  216. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/millstonehill/__init__.py +0 -0
  217. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/__init__.py +0 -0
  218. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/loader.py +0 -0
  219. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/variable_config.py +0 -0
  220. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/millstonehill/downloader.py +0 -0
  221. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/millstonehill/gridded/__init__.py +0 -0
  222. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/millstonehill/gridded/loader.py +0 -0
  223. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/millstonehill/gridded/variable_config.py +0 -0
  224. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/millstonehill/vi/__init__.py +0 -0
  225. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/millstonehill/vi/loader.py +0 -0
  226. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/millstonehill/vi/variable_config.py +0 -0
  227. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/pfisr/__init__.py +0 -0
  228. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/pfisr/downloader.py +0 -0
  229. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/__init__.py +0 -0
  230. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/downloader.py +0 -0
  231. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/variable_config.py +0 -0
  232. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/__init__.py +0 -0
  233. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/downloader.py +0 -0
  234. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/loader.py +0 -0
  235. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/variable_config.py +0 -0
  236. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/risr_n/__init__.py +0 -0
  237. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/risr_n/downloader.py +0 -0
  238. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/risr_n/fitted/__init__.py +0 -0
  239. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/risr_n/fitted/downloader.py +0 -0
  240. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/risr_n/fitted/loader.py +0 -0
  241. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/risr_n/fitted/variable_config.py +0 -0
  242. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/risr_n/vi/__init__.py +0 -0
  243. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/risr_n/vi/downloader.py +0 -0
  244. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/risr_n/vi/loader.py +0 -0
  245. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/isr/risr_n/vi/variable_config.py +0 -0
  246. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/satellites/__init__.py +0 -0
  247. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/satellites/dmsp/__init__.py +0 -0
  248. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/satellites/dmsp/e/__init__.py +0 -0
  249. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/satellites/dmsp/e/loader.py +0 -0
  250. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/satellites/dmsp/e/variable_config.py +0 -0
  251. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s1/__init__.py +0 -0
  252. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s1/loader.py +0 -0
  253. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s1/variable_config.py +0 -0
  254. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s4/__init__.py +0 -0
  255. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s4/loader.py +0 -0
  256. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s4/variable_config.py +0 -0
  257. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/madrigal/utilities.py +0 -0
  258. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/ncei/__init__.py +0 -0
  259. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/ncei/dmsp/__init__.py +0 -0
  260. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/ncei/dmsp/downloader.py +0 -0
  261. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/__init__.py +0 -0
  262. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/downloader.py +0 -0
  263. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/loader.py +0 -0
  264. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/variable_config.py +0 -0
  265. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/nipr/__init__.py +0 -0
  266. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/nipr/asc/__init__.py +0 -0
  267. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/nipr/asc/tro_wmi/__init__.py +0 -0
  268. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/nipr/asc/tro_wmi/loader.py +0 -0
  269. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/nipr/asc/tro_wmi/variable_config.py +0 -0
  270. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/noaa/__init__.py +0 -0
  271. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/noaa/swpc/__init__.py +0 -0
  272. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/noaa/swpc/goesxray/__init__.py +0 -0
  273. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/noaa/swpc/solarwind/__init__.py +0 -0
  274. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/superdarn/__init__.py +0 -0
  275. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/superdarn/potmap/__init__.py +0 -0
  276. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/superdarn/potmap/downloader.py +0 -0
  277. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/superdarn/potmap/loader.py +0 -0
  278. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/superdarn/potmap/variable_config.py +0 -0
  279. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/supermag/indices/downloader.py +0 -0
  280. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/supermag/indices/loader.py +0 -0
  281. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/supermag/indices/variable_config.py +0 -0
  282. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/supermag/magnetometer/downloader.py +0 -0
  283. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/supermag/magnetometer/loader.py +0 -0
  284. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/supermag/magnetometer/variable_config.py +0 -0
  285. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/supermag/supermag_api.py +0 -0
  286. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/supermag/utilities.py +0 -0
  287. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/__init__.py +0 -0
  288. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/champ/__init__.py +0 -0
  289. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/champ/dns_acc/variable_config.py +0 -0
  290. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/goce/__init__.py +0 -0
  291. {geospacelab-0.11.3/geospacelab/datahub/sources/tud/grace → geospacelab-0.12.1/geospacelab/datahub/sources/tud/goce}/dns_acc/variable_config.py +0 -0
  292. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/grace/__init__.py +0 -0
  293. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/grace/dns_acc/loader.py +0 -0
  294. {geospacelab-0.11.3/geospacelab/datahub/sources/tud/grace_fo → geospacelab-0.12.1/geospacelab/datahub/sources/tud/grace}/dns_acc/variable_config.py +0 -0
  295. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/grace_fo/__init__.py +0 -0
  296. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/loader.py +0 -0
  297. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/swarm/__init__.py +0 -0
  298. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/swarm/dns_acc/loader.py +0 -0
  299. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/swarm/dns_acc/variable_config.py +0 -0
  300. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/tud/swarm/dns_pod/variable_config.py +0 -0
  301. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/wdc/__init__.py +0 -0
  302. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/wdc/ae/__init__.py +0 -0
  303. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/wdc/ae/downloader.py +0 -0
  304. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/wdc/ae/loader.py +0 -0
  305. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/wdc/ae/variable_config.py +0 -0
  306. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/wdc/asysym/__init__.py +0 -0
  307. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/wdc/asysym/loader.py +0 -0
  308. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/wdc/asysym/variable_config.py +0 -0
  309. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/wdc/dst/__init__.py +0 -0
  310. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/wdc/dst/downloader.py +0 -0
  311. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/wdc/dst/loader.py +0 -0
  312. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/datahub/sources/wdc/dst/variable_config.py +0 -0
  313. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/express/__init__.py +0 -0
  314. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/express/dmsp_dashboard.py +0 -0
  315. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/express/eiscat_dashboard.py +0 -0
  316. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/express/millstonehill_dashboard.py +0 -0
  317. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/express/omni_dashboard.py +0 -0
  318. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/future/__init__.py +0 -0
  319. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/future/empiricalmodels/__init__.py +0 -0
  320. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/future/empiricalmodels/ovationprime2010/__init__.py +0 -0
  321. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/future/empiricalmodels/ovationprime2010/ovationprime.py +0 -0
  322. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/future/satllites/__init__.py +0 -0
  323. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/future/satllites/orbit_analyzer.py +0 -0
  324. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/future/test_sscws.py +0 -0
  325. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/observatory/__init__.py +0 -0
  326. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/observatory/constants.py +0 -0
  327. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/observatory/earth/__init__.py +0 -0
  328. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/observatory/earth/_func.py +0 -0
  329. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/observatory/earth/constants.py +0 -0
  330. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/observatory/earth/geodesy.py +0 -0
  331. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/observatory/earth/sun_position.py +0 -0
  332. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/observatory/orbit/__init__.py +0 -0
  333. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/observatory/orbit/sc_orbit.py +0 -0
  334. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/observatory/orbit/utilities.py +0 -0
  335. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/observatory/site/__init__.py +0 -0
  336. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/observatory/site/mixins.py +0 -0
  337. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/quantity/__init__.py +0 -0
  338. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/toolbox/__init__.py +0 -0
  339. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/toolbox/io/__init__.py +0 -0
  340. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/toolbox/io/dialog.py +0 -0
  341. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/toolbox/unit/__init__.py +0 -0
  342. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/toolbox/utilities/__init__.py +0 -0
  343. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/toolbox/utilities/numpyarray.py +0 -0
  344. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/toolbox/utilities/numpymath.py +0 -0
  345. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/toolbox/utilities/pybasic.py +0 -0
  346. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/toolbox/utilities/pyclass.py +0 -0
  347. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/toolbox/utilities/pydatetime.py +0 -0
  348. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/toolbox/utilities/pylogging.py +0 -0
  349. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/toolbox/utilities/pyos.py +0 -0
  350. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/visualization/__init__.py +0 -0
  351. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/visualization/mpl/__base__.py +0 -0
  352. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/visualization/mpl/__init__.py +0 -0
  353. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/visualization/mpl/_helpers.py +0 -0
  354. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/visualization/mpl/axes.py +0 -0
  355. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/visualization/mpl/axis_ticks.py +0 -0
  356. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/visualization/mpl/colormaps.py +0 -0
  357. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/visualization/mpl/figure.py +0 -0
  358. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/visualization/mpl/geomap/__base__.py +0 -0
  359. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/visualization/mpl/geomap/__init__.py +0 -0
  360. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/visualization/mpl/geomap/geodashboards.py +0 -0
  361. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/visualization/plotly/__init__.py +0 -0
  362. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/visualization/plotly/ipanel.py +0 -0
  363. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/wrapper/__init__.py +0 -0
  364. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/wrapper/geopack/LICENSE +0 -0
  365. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/wrapper/geopack/README.md +0 -0
  366. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/wrapper/geopack/__init__.py +0 -0
  367. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/wrapper/geopack/geopack/__init__.py +0 -0
  368. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/wrapper/geopack/geopack/geopack.py +0 -0
  369. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/wrapper/geopack/geopack/igrf13coeffs.txt +0 -0
  370. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/wrapper/geopack/geopack/t01.py +0 -0
  371. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/wrapper/geopack/geopack/t04.py +0 -0
  372. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/wrapper/geopack/geopack/t89.py +0 -0
  373. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/wrapper/geopack/geopack/t96.py +0 -0
  374. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/wrapper/geopack/geopack/test_geopack1.md +0 -0
  375. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab/wrapper/geopack/geopack/test_geopack1.py +0 -0
  376. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab.egg-info/dependency_links.txt +0 -0
  377. {geospacelab-0.11.3 → geospacelab-0.12.1}/geospacelab.egg-info/top_level.txt +0 -0
  378. {geospacelab-0.11.3 → geospacelab-0.12.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: geospacelab
3
- Version: 0.11.3
3
+ Version: 0.12.1
4
4
  Summary: Collect, manage, and visualize geospace data.
5
5
  Home-page: https://github.com/JouleCai/geospacelab
6
6
  Author: Lei Cai
@@ -14,19 +14,18 @@ Classifier: Topic :: Scientific/Engineering :: Visualization
14
14
  Classifier: Topic :: Scientific/Engineering :: Astronomy
15
15
  Classifier: Topic :: Software Development :: Build Tools
16
16
  Classifier: License :: OSI Approved :: BSD License
17
- Classifier: Programming Language :: Python :: 3.7
18
- Classifier: Programming Language :: Python :: 3.8
19
17
  Classifier: Programming Language :: Python :: 3.9
20
18
  Classifier: Programming Language :: Python :: 3.10
21
19
  Classifier: Programming Language :: Python :: 3.11
22
- Requires-Python: >=3.7
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Requires-Python: >=3.9,<3.13
23
22
  Description-Content-Type: text/markdown
24
23
  License-File: LICENSE
25
24
  Requires-Dist: cython
26
25
  Requires-Dist: requests>=2.26.0
27
26
  Requires-Dist: beautifulsoup4>=4.9.3
28
27
  Requires-Dist: natsort>=7.1.1
29
- Requires-Dist: numpy>=1.23.0
28
+ Requires-Dist: numpy<2.4.0
30
29
  Requires-Dist: scipy>=1.6.0
31
30
  Requires-Dist: h5py>=3.2.1
32
31
  Requires-Dist: netcdf4>=1.5.7
@@ -340,7 +339,7 @@ dashboard.save_figure()
340
339
  dashboard.show()
341
340
  ```
342
341
  Output:
343
- > ![alt text](https://github.com/JouleCai/geospacelab/blob/master/examples/EISCAT_UHF_beata_cp1_60_20201209-180000-20201210-060000.png?raw=true)
342
+ > ![alt text](https://github.com/JouleCai/geospacelab/blob/master/examples/EISCAT_UHF_beata__60_20201209-180000-20201210-060000.png?raw=true)
344
343
 
345
344
  ### Example 3: OMNI data and geomagnetic indices (WDC + GFZ):
346
345
 
@@ -284,7 +284,7 @@ dashboard.save_figure()
284
284
  dashboard.show()
285
285
  ```
286
286
  Output:
287
- > ![alt text](https://github.com/JouleCai/geospacelab/blob/master/examples/EISCAT_UHF_beata_cp1_60_20201209-180000-20201210-060000.png?raw=true)
287
+ > ![alt text](https://github.com/JouleCai/geospacelab/blob/master/examples/EISCAT_UHF_beata__60_20201209-180000-20201210-060000.png?raw=true)
288
288
 
289
289
  ### Example 3: OMNI data and geomagnetic indices (WDC + GFZ):
290
290
 
@@ -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.11.3"
9
+ __version__ = "0.12.1"
10
10
  __maintainer__ = "Lei Cai"
11
11
  __email__ = "lei.cai@oulu.fi"
12
12
  __status__ = "Developing"
@@ -0,0 +1,103 @@
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 CDAWebHTTPDownloader 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
+ product='EDR_AUR',
19
+ direct_download=True,
20
+ force_download=False,
21
+ dry_run=False,
22
+ root_dir_local = None,
23
+ ):
24
+
25
+ self.sat_id = sat_id
26
+ self.orbit_id = orbit_id
27
+ self.product = product
28
+ if root_dir_local is None:
29
+ root_dir_local = prf.datahub_data_root_dir / 'CDAWeb' / 'DMSP' / 'SSUSI' / self.product.upper
30
+ else:
31
+ root_dir_local = pathlib.Path(root_dir_local)
32
+ root_dir_remote = '/'.join([
33
+ self.root_dir_remote, 'dmsp', 'dmsp'+self.sat_id.lower(), 'ssusi', 'data', product_dict[self.product]
34
+ ])
35
+ super().__init__(
36
+ dt_fr, dt_to,
37
+ root_dir_local=root_dir_local,
38
+ root_dir_remote=root_dir_remote,
39
+ direct_download=direct_download,
40
+ force_download=force_download,
41
+ dry_run=dry_run,
42
+ )
43
+
44
+
45
+ def search_from_http(self, *args, **kwargs):
46
+
47
+ dt_fr_1 = self.dt_fr - datetime.timedelta(hours=3)
48
+ dt_to_1 = self.dt_to + datetime.timedelta(hours=3)
49
+ diff_days = dttool.get_diff_days(dt_fr_1, dt_to_1)
50
+ dt0 = dttool.get_start_of_the_day(dt_fr_1)
51
+ file_paths_remote = []
52
+ for nd in range(diff_days + 1):
53
+ this_day = dt0 + datetime.timedelta(days=nd)
54
+ doy = dttool.get_doy(this_day)
55
+ sdoy = '{:03d}'.format(doy)
56
+ subdirs = [str(this_day.year), sdoy]
57
+
58
+ if self.orbit_id is None:
59
+ file_name_patterns = [
60
+ 'dmsp' + self.sat_id.lower(),
61
+ 'ssusi',
62
+ product_dict[self.product],
63
+ this_day.strftime("%Y") + sdoy + 'T',
64
+ '.nc'
65
+ ]
66
+ else:
67
+ file_name_patterns = [
68
+ 'dmsp' + self.sat_id.lower(),
69
+ 'ssusi',
70
+ product_dict[self.product],
71
+ 'REV',
72
+ self.orbit_id,
73
+ '.nc'
74
+ ]
75
+ paths = super().search_from_http(subdirs=subdirs, file_name_patterns=file_name_patterns)
76
+ file_paths_remote.extend(paths)
77
+ return file_paths_remote
78
+
79
+ def save_files_from_http(self, file_paths_local=None, root_dir_remote=None):
80
+ if file_paths_local is None:
81
+ file_paths_local = []
82
+ for fp_remote in self.file_paths_remote:
83
+ sy = fp_remote.split('/')[-3]
84
+ sdoy = fp_remote.split('/')[-2]
85
+ year = int(sy)
86
+ this_day = dttool.convert_doy_to_datetime(year, int(sdoy))
87
+ file_dir_local = self.root_dir_local / self.sat_id.upper() / sy / this_day.strftime("%Y%m%d")
88
+ file_paths_local.append(file_dir_local / fp_remote.split('/')[-1])
89
+ return super().save_files_from_http(file_paths_local, root_dir_remote)
90
+
91
+
92
+ product_dict = {
93
+ 'EDR_AUR': 'edr-aurora',
94
+ 'EDR_DAY_LIMB': 'edr-day-limb',
95
+ 'EDR_IONO': 'edr-iono',
96
+ 'EDR_NIGHT_LIMB': 'edr-night-limb',
97
+ 'L1B': 'l1b',
98
+ 'SDR_DISK': 'sdr-disk',
99
+ 'SDR_LIMB': 'sdr-limb',
100
+ 'SDR2_DISK': 'sdr2-disk',
101
+ 'SPECT_L1B': 'spect-l1b',
102
+ }
103
+
@@ -53,8 +53,10 @@ class Dataset(datahub.DatasetSourced):
53
53
  self.database = kwargs.pop('database', 'CDAWeb')
54
54
  self.facility = kwargs.pop('facility', 'DMSP')
55
55
  self.instrument = kwargs.pop('instrument', 'SSUSI')
56
- self.product = kwargs.pop('product', 'EDR-EUR')
56
+ self.product = kwargs.pop('product', 'EDR_AUR')
57
57
  self.allow_download = kwargs.pop('allow_download', True)
58
+ self.force_download = kwargs.pop('force_download', False)
59
+ self.download_dry_run = kwargs.pop('download_dry_run', False)
58
60
 
59
61
  self.sat_id = kwargs.pop('sat_id', '')
60
62
  self.orbit_id = kwargs.pop('orbit_id', None)
@@ -149,14 +151,20 @@ class Dataset(datahub.DatasetSourced):
149
151
 
150
152
  if self.orbit_id is not None:
151
153
  file_patterns.extend(['REV', self.orbit_id])
152
- multiple_files = False
153
- else:
154
- multiple_files = True
154
+
155
155
  # remove empty str
156
156
  file_patterns = [pattern for pattern in file_patterns if str(pattern)]
157
157
 
158
158
  search_pattern = '*' + '*'.join(file_patterns) + '*'
159
159
 
160
+ if self.orbit_id is not None:
161
+ multiple_files = False
162
+ else:
163
+ fp_log = initial_file_dir / (self.product.upper() + '.full.log')
164
+ if not fp_log.is_file():
165
+ self.download_data(dt_fr=thisday, dt_to=thisday)
166
+ multiple_files = True
167
+
160
168
  done = super().search_data_files(
161
169
  initial_file_dir=initial_file_dir,
162
170
  search_pattern=search_pattern,
@@ -167,7 +175,7 @@ class Dataset(datahub.DatasetSourced):
167
175
 
168
176
  # Validate file paths
169
177
 
170
- if not done and self.allow_download:
178
+ if (not done and self.allow_download) or (self.force_download):
171
179
  done = self.download_data(dt_fr=thisday, dt_to=thisday)
172
180
  if done:
173
181
  done = super().search_data_files(
@@ -186,9 +194,11 @@ class Dataset(datahub.DatasetSourced):
186
194
  download_obj = self.downloader(
187
195
  dt_fr, dt_to,
188
196
  orbit_id=self.orbit_id, sat_id=self.sat_id,
189
- data_file_root_dir=self.data_root_dir
197
+ root_dir_local=self.data_root_dir,
198
+ force_download=self.force_download,
199
+ dry_run=self.download_dry_run,
190
200
  )
191
- return download_obj.done
201
+ return any(download_obj.done)
192
202
 
193
203
  @property
194
204
  def database(self):
@@ -0,0 +1,44 @@
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.dmsp.ssusi.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
+ dry_run=False,
21
+ root_dir_local = None,
22
+ ):
23
+
24
+ super().__init__(
25
+ dt_fr, dt_to,
26
+ sat_id=sat_id,
27
+ orbit_id=orbit_id,
28
+ product='EDR_AUR',
29
+ root_dir_local=root_dir_local,
30
+ direct_download=direct_download,
31
+ force_download=force_download,
32
+ dry_run=dry_run,
33
+ )
34
+
35
+
36
+ if __name__ == "__main__":
37
+ downloader = Downloader(
38
+ dt_fr = datetime.datetime(2011, 1, 6),
39
+ dt_to = datetime.datetime(2011, 1, 6, 12),
40
+ sat_id='F17',
41
+ orbit_id=None, #'21523',
42
+ force_download=True,
43
+ dry_run=False,
44
+ )
@@ -0,0 +1,317 @@
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.jhuapl import jhuapl_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.sdr_disk.loader import Loader as default_Loader
17
+ from geospacelab.datahub.sources.cdaweb.dmsp.ssusi.sdr_disk.downloader import Downloader as default_Downloader
18
+ import geospacelab.datahub.sources.cdaweb.dmsp.ssusi.sdr_disk.variable_config as var_config
19
+
20
+
21
+ default_dataset_attrs = {
22
+ 'database': jhuapl_database,
23
+ 'facility': 'DMSP',
24
+ 'instrument': 'SSUSI',
25
+ 'product': 'SDR_DISK',
26
+ 'data_file_ext': 'nc',
27
+ 'data_root_dir': prf.datahub_data_root_dir / 'CDAWeb' / 'DMSP' / 'SSUSI' / 'SDR_DISK',
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
+ 'STARTING_TIME', 'STOPPING_TIME', 'DATETIME',
37
+ 'FILE_VERSION', 'DATA_PRODUCT_VERSION', 'SOFTWARE_VERSION_NUMBER', 'CALIBRATION_PERIOD_VERSION', 'EMISSION_SPECTRA',
38
+ 'SC_DATETIME', 'SC_ORBIT_ID', 'SC_GEO_LAT', 'SC_GEO_LON', 'SC_GEO_ALT',
39
+ 'DISK_GEO_LAT', 'DISK_GEO_LON', 'DISK_GEO_ALT', 'DISK_SZA', 'DISK_SAA',
40
+ 'ACROSS_PIXEL_SIZE', 'ALONG_PIXEL_SIZE', 'EFFECTIVE_LOOK_ANGLE', 'EXPOSURE', 'SAA_COUNT', 'DARK_COUNT_CORRECTION',
41
+ 'SCATTER_LIGHT_1216_CORRECTION', 'SCATTER_LIGHT_1304_CORRECTION', 'OVERLAP_1304_1356_CORRECTION', 'LONG_WAVE_SCATTER_CORRECTION',
42
+ 'RED_LEAK_CORRECTION', 'DQI',
43
+ 'DISK_COUNTS_1216', 'DISK_COUNTS_1304', 'DISK_COUNTS_1356', 'DISK_COUNTS_LBHS', 'DISK_COUNTS_LBHL',
44
+ 'DISK_R_1216', 'DISK_R_1304', 'DISK_R_1356', 'DISK_R_LBHS', 'DISK_R_LBHL',
45
+ 'DISK_R_RECT_1216', 'DISK_R_RECT_1304', 'DISK_R_RECT_1356', 'DISK_R_RECT_LBHS', 'DISK_R_RECT_LBHL',
46
+ 'DISK_R_1216_ERROR', 'DISK_R_1304_ERROR', 'DISK_R_1356_ERROR', 'DISK_R_LBHS_ERROR', 'DISK_R_LBHL_ERROR',
47
+ 'DISK_R_RECT_1216_ERROR', 'DISK_R_RECT_1304_ERROR', 'DISK_R_RECT_1356_ERROR', 'DISK_R_RECT_LBHS_ERROR', 'DISK_R_RECT_LBHL_ERROR',
48
+ 'DISK_DECOMP_1216_ERROR', 'DISK_DECOMP_1304_ERROR', 'DISK_DECOMP_1356_ERROR', 'DISK_DECOMP_LBHS_ERROR', 'DISK_DECOMP_LBHL_ERROR',
49
+ 'DISK_CALIB_1216_ERROR', 'DISK_CALIB_1304_ERROR', 'DISK_CALIB_1356_ERROR', 'DISK_CALIB_LBHS_ERROR', 'DISK_CALIB_LBHL_ERROR',
50
+ 'DQI_1216', 'DQI_1304', 'DQI_1356', 'DQI_LBHS', 'DQI_LBHL'
51
+ ]
52
+
53
+ # default_data_search_recursive = True
54
+
55
+ default_attrs_required = ['sat_id', 'orbit_id', 'pp_type', 'pole']
56
+
57
+
58
+ class Dataset(datahub.DatasetSourced):
59
+ def __init__(self, **kwargs):
60
+ kwargs = basic.dict_set_default(kwargs, **default_dataset_attrs)
61
+
62
+ super().__init__(**kwargs)
63
+
64
+ self.database = kwargs.pop('database', 'JHUAPL')
65
+ self.facility = kwargs.pop('facility', 'DMSP')
66
+ self.instrument = kwargs.pop('instrument', 'SSUSI')
67
+ self.product = kwargs.pop('product', 'SDR_DISK')
68
+ self.allow_download = kwargs.pop('allow_download', True)
69
+ self.force_download = kwargs.pop('force_download', False)
70
+ self.download_dry_run = kwargs.pop('download_dry_run', False)
71
+
72
+ self.sat_id = kwargs.pop('sat_id', '')
73
+ self.orbit_id = kwargs.pop('orbit_id', None)
74
+ self.pole = kwargs.pop('pole', '')
75
+ self.pp_type = kwargs.pop('pp_type', '')
76
+
77
+ self.metadata = None
78
+
79
+ allow_load = kwargs.pop('allow_load', False)
80
+
81
+ # self.config(**kwargs)
82
+
83
+ if self.loader is None:
84
+ self.loader = default_Loader
85
+
86
+ if self.downloader is None:
87
+ self.downloader = default_Downloader
88
+
89
+ self._validate_attrs()
90
+
91
+ if allow_load:
92
+ self.load_data()
93
+
94
+ def _validate_attrs(self):
95
+ for attr_name in default_attrs_required:
96
+ attr = getattr(self, attr_name)
97
+ if not str(attr):
98
+ mylog.StreamLogger.warning("The parameter {} is required before loading data!".format(attr_name))
99
+ if attr_name == 'orbit_id':
100
+ if attr is None or attr == '':
101
+ mylog.StreamLogger.warning("For a fast process, it's better to specify the orbit id.")
102
+
103
+ def label(self, **kwargs):
104
+ label = super().label()
105
+ return label
106
+
107
+ def load_data(self, **kwargs):
108
+ self.check_data_files(**kwargs)
109
+
110
+ self._set_default_variables(
111
+ default_variable_names,
112
+ configured_variables=var_config.configured_variables
113
+ )
114
+ for file_path in self.data_file_paths:
115
+ load_obj = self.loader(file_path, file_type=self.product.lower(), pole=self.pole, pp_type=self.pp_type)
116
+
117
+ for var_name in self._variables.keys():
118
+ if var_name == 'EMISSION_SPECTRA':
119
+ self._variables[var_name].value = load_obj.variables[var_name]
120
+ continue
121
+ if var_name in ['DATETIME', 'STARTING_TIME', 'STOPPING_TIME',
122
+ 'FILE_VERSION', 'DATA_PRODUCT_VERSION', 'SOFTWARE_VERSION_NUMBER',
123
+ 'CALIBRATION_PERIOD_VERSION']:
124
+ value = np.array([load_obj.variables[var_name]])[np.newaxis, :]
125
+ else:
126
+ value = np.empty((1, ), dtype=object)
127
+ value[0] = load_obj.variables[var_name]
128
+ # value = np.array([[load_obj.variables[var_name]]], dtype=object)
129
+ self._variables[var_name].join(value)
130
+
131
+ # self.orbit_id = load_obj.metadata['ORBIT_ID']
132
+ # self.select_beams(field_aligned=True)
133
+ if self.time_clip:
134
+ self.time_filter_by_range()
135
+
136
+ def get_time_ind(self, ut, time_res=20*60, var_datetime_name='DATETIME', edge_cutoff=False, **kwargs):
137
+ ind = super().get_time_ind(ut, time_res=time_res, var_datetime_name=var_datetime_name, edge_cutoff=edge_cutoff, **kwargs)
138
+ return ind
139
+
140
+ def regriddata(self, disk_data=None, disk_geo_lat=None, disk_geo_lon=None, *, across_res=20., interp_method='linear'):
141
+ from scipy.interpolate import interp1d, griddata
142
+
143
+ data_pts = disk_data.flatten()
144
+ ind_valid = np.where(np.isfinite(data_pts))[0]
145
+ xd = range(disk_data.shape[0])
146
+ yd = range(disk_data.shape[1])
147
+
148
+ # create the new grids
149
+ ps_across = self['ACROSS_PIXEL_SIZE'].value[0]
150
+ xx = range(disk_data.shape[0])
151
+ yy = []
152
+ for ind in range(disk_data.shape[1]-1):
153
+ ps1 = ps_across[ind]
154
+ ps2 = ps_across[ind+1]
155
+ n_insert = int(np.round((ps1 + ps2) / 2 / across_res) - 1)
156
+ yy.extend(np.linspace(ind, ind+1-0.001, n_insert + 2)[0: -1])
157
+ yy.extend([ind+1])
158
+ # grid_x, grid_y = np.meshgrid(xx, yy, indexing='ij')
159
+
160
+ factor = np.pi / 180.
161
+ sin_glat = np.sin(disk_geo_lat * factor)
162
+ itpf_sin = interp1d(yd, sin_glat, kind='cubic', bounds_error=False, fill_value='extrapolate')
163
+ sin_glat_i = itpf_sin(yy)
164
+ sin_glat_i[sin_glat_i>1.] = 1.
165
+ sin_glat_i[sin_glat_i<-1.] = -1.
166
+
167
+ cos_glat = np.cos(disk_geo_lat * factor)
168
+ itpf_cos = interp1d(yd, cos_glat, kind='cubic', bounds_error=False, fill_value='extrapolate')
169
+ cos_glat_i = itpf_cos(yy)
170
+ cos_glat_i[cos_glat_i>1.] = 1.
171
+ cos_glat_i[cos_glat_i<-1.] = -1.
172
+
173
+ rad = np.sign(sin_glat_i) * (np.pi / 2 - np.arcsin(cos_glat_i))
174
+ grid_lat = rad / factor
175
+
176
+ sin_glon = np.sin(disk_geo_lon * factor)
177
+ itpf_sin = interp1d(yd, sin_glon, kind='cubic', bounds_error=False, fill_value='extrapolate')
178
+ sin_glon_i = itpf_sin(yy)
179
+ sin_glon_i[sin_glon_i>1.] = 1.
180
+ sin_glon_i[sin_glon_i<-1.] = -1.
181
+
182
+ cos_glon = np.cos(disk_geo_lon * factor)
183
+ itpf_cos = interp1d(yd, cos_glon, kind='cubic', bounds_error=False, fill_value='extrapolate')
184
+ cos_glon_i = itpf_cos(yy)
185
+ cos_glon_i[cos_glon_i>1.] = 1.
186
+ cos_glon_i[cos_glon_i<-1.] = -1.
187
+
188
+ rad = np.sign(sin_glon_i) * (np.pi / 2 - np.arcsin(cos_glon_i))
189
+ grid_lon = rad / factor
190
+
191
+ itpf_data = interp1d(yd, disk_data, kind='linear', bounds_error=False, fill_value='extrapolate')
192
+ grid_data = itpf_data(yy)
193
+ return grid_lat, grid_lon, grid_data
194
+
195
+
196
+ def search_data_files(self, **kwargs):
197
+ dt_fr = self.dt_fr
198
+ if self.dt_to.hour > 22:
199
+ dt_to = self.dt_to + datetime.timedelta(days=1)
200
+ else:
201
+ dt_to = self.dt_to
202
+ diff_days = dttool.get_diff_days(dt_fr, dt_to)
203
+ dt0 = dttool.get_start_of_the_day(dt_fr)
204
+ for i in range(diff_days + 1):
205
+ thisday = dt0 + datetime.timedelta(days=i)
206
+ initial_file_dir = kwargs.pop('initial_file_dir', None)
207
+
208
+ if initial_file_dir is None:
209
+ initial_file_dir = self.data_root_dir / self.sat_id.upper() / str(thisday.year) /thisday.strftime("%Y%m%d")
210
+
211
+ file_patterns = [
212
+ 'dmsp' + self.sat_id.lower(),
213
+ 'sdr-disk',
214
+ thisday.strftime("%Y%j") + 'T',
215
+ ]
216
+
217
+ if self.orbit_id is not None:
218
+ file_patterns.extend(['REV', self.orbit_id])
219
+
220
+ # remove empty str
221
+ file_patterns = [pattern for pattern in file_patterns if str(pattern)]
222
+
223
+ search_pattern = '*' + '*'.join(file_patterns) + '*'
224
+
225
+ if self.orbit_id is not None:
226
+ multiple_files = False
227
+ else:
228
+ fp_log = initial_file_dir / (self.product.upper() + '.full.log')
229
+ if not fp_log.is_file():
230
+ self.download_data(dt_fr=thisday, dt_to=thisday)
231
+ multiple_files = True
232
+ done = super().search_data_files(
233
+ initial_file_dir=initial_file_dir,
234
+ search_pattern=search_pattern,
235
+ allow_multiple_files=multiple_files,
236
+ )
237
+ if done and self.orbit_id is not None:
238
+ return True
239
+
240
+ # Validate file paths
241
+
242
+ if (not done and self.allow_download) or (self.force_download):
243
+ done = self.download_data(dt_fr=thisday, dt_to=thisday)
244
+ if done:
245
+ done = super().search_data_files(
246
+ initial_file_dir=initial_file_dir,
247
+ search_pattern=search_pattern,
248
+ allow_multiple_files=multiple_files
249
+ )
250
+
251
+ return done
252
+
253
+ def download_data(self, dt_fr=None, dt_to=None):
254
+ if dt_fr is None:
255
+ dt_fr = self.dt_fr
256
+ if dt_to is None:
257
+ dt_to = self.dt_to
258
+ download_obj = self.downloader(
259
+ dt_fr, dt_to,
260
+ orbit_id=self.orbit_id, sat_id=self.sat_id,
261
+ root_dir_local=self.data_root_dir,
262
+ force_download=self.force_download,
263
+ dry_run=self.download_dry_run,
264
+ )
265
+ return any(download_obj.done)
266
+
267
+ @property
268
+ def database(self):
269
+ return self._database
270
+
271
+ @database.setter
272
+ def database(self, value):
273
+ if isinstance(value, str):
274
+ self._database = DatabaseModel(value)
275
+ elif issubclass(value.__class__, DatabaseModel):
276
+ self._database = value
277
+ else:
278
+ raise TypeError
279
+
280
+ @property
281
+ def product(self):
282
+ return self._product
283
+
284
+ @product.setter
285
+ def product(self, value):
286
+ if isinstance(value, str):
287
+ self._product = ProductModel(value)
288
+ elif issubclass(value.__class__, ProductModel):
289
+ self._product = value
290
+ else:
291
+ raise TypeError
292
+
293
+ @property
294
+ def facility(self):
295
+ return self._facility
296
+
297
+ @facility.setter
298
+ def facility(self, value):
299
+ if isinstance(value, str):
300
+ self._facility = FacilityModel(value)
301
+ elif issubclass(value.__class__, FacilityModel):
302
+ self._facility = value
303
+ else:
304
+ raise TypeError
305
+
306
+ @property
307
+ def instrument(self):
308
+ return self._instrument
309
+
310
+ @instrument.setter
311
+ def instrument(self, value):
312
+ if isinstance(value, str):
313
+ self._instrument = InstrumentModel(value)
314
+ elif issubclass(value.__class__, InstrumentModel):
315
+ self._instrument = value
316
+ else:
317
+ raise TypeError
@@ -0,0 +1,44 @@
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.dmsp.ssusi.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
+ dry_run=False,
21
+ root_dir_local = None,
22
+ ):
23
+
24
+ super().__init__(
25
+ dt_fr, dt_to,
26
+ sat_id=sat_id,
27
+ orbit_id=orbit_id,
28
+ product='SDR_DISK',
29
+ root_dir_local=root_dir_local,
30
+ direct_download=direct_download,
31
+ force_download=force_download,
32
+ dry_run=dry_run,
33
+ )
34
+
35
+
36
+ if __name__ == "__main__":
37
+ downloader = Downloader(
38
+ dt_fr = datetime.datetime(2011, 1, 6),
39
+ dt_to = datetime.datetime(2011, 1, 6, 12),
40
+ sat_id='F17',
41
+ orbit_id='21523',
42
+ force_download=True,
43
+ dry_run=False,
44
+ )