geospacelab 0.10.0__tar.gz → 0.10.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. {geospacelab-0.10.0/geospacelab.egg-info → geospacelab-0.10.2}/PKG-INFO +39 -34
  2. {geospacelab-0.10.0 → geospacelab-0.10.2}/README.md +38 -33
  3. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/__init__.py +1 -1
  4. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/eiscat/__init__.py +17 -6
  5. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/eiscat/downloader.py +2 -2
  6. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/eiscat/loader.py +72 -36
  7. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/__init__.py +5 -5
  8. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/downloader.py +1 -1
  9. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/loader.py +2 -0
  10. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s1/__init__.py +2 -2
  11. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s4/__init__.py +2 -2
  12. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/toolbox/utilities/numpyarray.py +137 -1
  13. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/visualization/mpl/panels.py +16 -0
  14. {geospacelab-0.10.0 → geospacelab-0.10.2/geospacelab.egg-info}/PKG-INFO +39 -34
  15. {geospacelab-0.10.0 → geospacelab-0.10.2}/LICENSE +0 -0
  16. {geospacelab-0.10.0 → geospacelab-0.10.2}/MANIFEST.in +0 -0
  17. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/config/__init__.py +0 -0
  18. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/config/_preferences.py +0 -0
  19. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/cs/__init__.py +0 -0
  20. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/cs/_aacgm.py +0 -0
  21. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/cs/_apex.py +0 -0
  22. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/cs/_cs_base.py +0 -0
  23. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/cs/_geo.py +0 -0
  24. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/cs/geo_utilities.py +0 -0
  25. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/__dataset_base__.py +0 -0
  26. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/__init__.py +0 -0
  27. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/__metadata_base__.py +0 -0
  28. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/__variable_base__.py +0 -0
  29. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/__init__.py +0 -0
  30. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/cdaweb/__init__.py +0 -0
  31. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/cdaweb/dmsp/__init__.py +0 -0
  32. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/__init__.py +0 -0
  33. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/__init__.py +0 -0
  34. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/downloader.py +0 -0
  35. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/loader.py +0 -0
  36. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/variable_config.py +0 -0
  37. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/cdaweb/downloader.py +0 -0
  38. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/cdaweb/omni/__init__.py +0 -0
  39. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/cdaweb/omni/downloader.py +0 -0
  40. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/cdaweb/omni/loader.py +0 -0
  41. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/cdaweb/omni/variable_config.py +0 -0
  42. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/__init__.py +0 -0
  43. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/__init__.py +0 -0
  44. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/advanced/__init__.py +0 -0
  45. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_fp/__init__.py +0 -0
  46. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/__init__.py +0 -0
  47. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/downloader.py +0 -0
  48. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/loader.py +0 -0
  49. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/variable_config.py +0 -0
  50. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/__init__.py +0 -0
  51. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/downloader.py +0 -0
  52. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/loader.py +0 -0
  53. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/variable_config.py +0 -0
  54. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct16/__init__.py +0 -0
  55. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/downloader.py +0 -0
  56. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l1b/__init__.py +0 -0
  57. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/__init__.py +0 -0
  58. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/downloader.py +0 -0
  59. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/loader.py +0 -0
  60. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/variable_config.py +0 -0
  61. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/__init__.py +0 -0
  62. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/downloader.py +0 -0
  63. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/loader.py +0 -0
  64. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/variable_config.py +0 -0
  65. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l2d/__init__.py +0 -0
  66. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/__init__.py +0 -0
  67. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/__init__.py +0 -0
  68. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/downloader.py +0 -0
  69. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/loader.py +0 -0
  70. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/variable_config.py +0 -0
  71. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/__init__.py +0 -0
  72. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/downloader.py +0 -0
  73. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/loader.py +0 -0
  74. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/variable_config.py +0 -0
  75. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/__init__.py +0 -0
  76. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/downloader.py +0 -0
  77. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/loader.py +0 -0
  78. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/variable_config.py +0 -0
  79. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/__init__.py +0 -0
  80. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/downloader.py +0 -0
  81. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/loader.py +0 -0
  82. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/variable_config.py +0 -0
  83. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/l2l/__init__.py +0 -0
  84. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/loader.py +0 -0
  85. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/esa_eo/swarm/multimission/__init__.py +0 -0
  86. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/fmi/__init__.py +0 -0
  87. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/fmi/image/__init__.py +0 -0
  88. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/fmi/image/ie/__init__.py +0 -0
  89. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/fmi/image/ie/downloader.py +0 -0
  90. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/fmi/image/ie/loader.py +0 -0
  91. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/fmi/image/ie/variable_config.py +0 -0
  92. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/fmi/miracle/__init__.py +0 -0
  93. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/fmi/miracle/abk/__init__.py +0 -0
  94. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/fmi/miracle/kev/__init__.py +0 -0
  95. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/fmi/miracle/muo/__init__.py +0 -0
  96. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/gfz/__init__.py +0 -0
  97. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/gfz/downloader.py +0 -0
  98. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/gfz/hpo/__init__.py +0 -0
  99. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/gfz/hpo/downloader.py +0 -0
  100. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/gfz/hpo/loader.py +0 -0
  101. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/gfz/hpo/nowcast/__init__.py +0 -0
  102. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/gfz/hpo/nowcast/downloader.py +0 -0
  103. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/gfz/hpo/variable_config.py +0 -0
  104. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/gfz/kpap/__init__.py +0 -0
  105. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/gfz/kpap/downloader.py +0 -0
  106. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/gfz/kpap/loader.py +0 -0
  107. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/gfz/kpap/nowcast/__init__.py +0 -0
  108. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/gfz/kpap/nowcast/downloader.py +0 -0
  109. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/gfz/kpap/nowcast/loader.py +0 -0
  110. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/gfz/kpap/nowcast/variable_config.py +0 -0
  111. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/gfz/kpap/variable_config.py +0 -0
  112. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/gfz/snf107/__init__.py +0 -0
  113. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/gfz/snf107/loader.py +0 -0
  114. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/gfz/snf107/variable_config.py +0 -0
  115. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/isee/__init__.py +0 -0
  116. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/isee/gnss/__init__.py +0 -0
  117. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/isee/gnss/tecmap/__init__.py +0 -0
  118. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/isee/gnss/tecmap/downloader.py +0 -0
  119. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/isee/gnss/tecmap/loader.py +0 -0
  120. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/isee/gnss/tecmap/variable_config.py +0 -0
  121. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/jhuapl/__init__.py +0 -0
  122. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/jhuapl/ampere/__init__.py +0 -0
  123. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/jhuapl/ampere/downloader.py +0 -0
  124. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/jhuapl/ampere/fitted/__init__.py +0 -0
  125. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/jhuapl/ampere/fitted/loader.py +0 -0
  126. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/jhuapl/ampere/fitted/variable_config.py +0 -0
  127. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/jhuapl/ampere/grd/__init__.py +0 -0
  128. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/jhuapl/ampere/grd/downloader.py +0 -0
  129. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/jhuapl/ampere/grd/loader.py +0 -0
  130. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/jhuapl/ampere/grd/variable_config.py +0 -0
  131. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/jhuapl/dmsp/__init__.py +0 -0
  132. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/__init__.py +0 -0
  133. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/downloader.py +0 -0
  134. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/edraur/__init__.py +0 -0
  135. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/edraur/loader.py +0 -0
  136. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/edraur/variable_config.py +0 -0
  137. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/sdrdisk/__init__.py +0 -0
  138. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/sdrdisk/loader.py +0 -0
  139. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/sdrdisk/variable_config.py +0 -0
  140. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/__init__.py +0 -0
  141. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/downloader.py +0 -0
  142. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/gnss/__init__.py +0 -0
  143. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/gnss/tecmap/__init__.py +0 -0
  144. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/gnss/tecmap/downloader.py +0 -0
  145. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/gnss/tecmap/loader.py +0 -0
  146. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/gnss/tecmap/variable_config.py +0 -0
  147. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/__init__.py +0 -0
  148. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/eiscat/examples/__init__.py +0 -0
  149. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/eiscat/examples/eiscat_hdf5_info.py +0 -0
  150. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/eiscat/utilities.py +0 -0
  151. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/eiscat/variable_config.py +0 -0
  152. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/millstonehill/__init__.py +0 -0
  153. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/__init__.py +0 -0
  154. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/loader.py +0 -0
  155. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/variable_config.py +0 -0
  156. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/millstonehill/downloader.py +0 -0
  157. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/millstonehill/gridded/__init__.py +0 -0
  158. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/millstonehill/gridded/loader.py +0 -0
  159. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/millstonehill/gridded/variable_config.py +0 -0
  160. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/millstonehill/vi/__init__.py +0 -0
  161. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/millstonehill/vi/loader.py +0 -0
  162. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/millstonehill/vi/variable_config.py +0 -0
  163. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/pfisr/__init__.py +0 -0
  164. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/pfisr/downloader.py +0 -0
  165. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/variable_config.py +0 -0
  166. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/__init__.py +0 -0
  167. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/downloader.py +0 -0
  168. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/loader.py +0 -0
  169. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/variable_config.py +0 -0
  170. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/satellites/__init__.py +0 -0
  171. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/satellites/dmsp/__init__.py +0 -0
  172. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/satellites/dmsp/downloader.py +0 -0
  173. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/satellites/dmsp/e/__init__.py +0 -0
  174. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/satellites/dmsp/e/loader.py +0 -0
  175. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/satellites/dmsp/e/variable_config.py +0 -0
  176. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s1/loader.py +0 -0
  177. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s1/variable_config.py +0 -0
  178. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s4/loader.py +0 -0
  179. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s4/variable_config.py +0 -0
  180. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/madrigal/utilities.py +0 -0
  181. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/ncei/__init__.py +0 -0
  182. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/ncei/dmsp/__init__.py +0 -0
  183. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/ncei/dmsp/downloader.py +0 -0
  184. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/__init__.py +0 -0
  185. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/downloader.py +0 -0
  186. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/loader.py +0 -0
  187. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/variable_config.py +0 -0
  188. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/nipr/__init__.py +0 -0
  189. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/nipr/asc/__init__.py +0 -0
  190. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/nipr/asc/tro_wmi/__init__.py +0 -0
  191. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/nipr/asc/tro_wmi/loader.py +0 -0
  192. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/nipr/asc/tro_wmi/variable_config.py +0 -0
  193. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/noaa/__init__.py +0 -0
  194. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/noaa/swpc/__init__.py +0 -0
  195. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/noaa/swpc/goesxray/__init__.py +0 -0
  196. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/noaa/swpc/solarwind/__init__.py +0 -0
  197. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/superdarn/__init__.py +0 -0
  198. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/superdarn/potmap/__init__.py +0 -0
  199. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/superdarn/potmap/downloader.py +0 -0
  200. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/superdarn/potmap/loader.py +0 -0
  201. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/superdarn/potmap/variable_config.py +0 -0
  202. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/supermag/__init__.py +0 -0
  203. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/supermag/indices/__init__.py +0 -0
  204. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/supermag/indices/downloader.py +0 -0
  205. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/supermag/indices/loader.py +0 -0
  206. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/supermag/indices/variable_config.py +0 -0
  207. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/supermag/magnetometer/__init__.py +0 -0
  208. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/supermag/magnetometer/downloader.py +0 -0
  209. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/supermag/magnetometer/loader.py +0 -0
  210. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/supermag/magnetometer/variable_config.py +0 -0
  211. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/supermag/supermag_api.py +0 -0
  212. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/supermag/utilities.py +0 -0
  213. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/__init__.py +0 -0
  214. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/champ/__init__.py +0 -0
  215. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/champ/dns_acc/__init__.py +0 -0
  216. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/champ/dns_acc/downloader.py +0 -0
  217. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/champ/dns_acc/loader.py +0 -0
  218. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/champ/dns_acc/variable_config.py +0 -0
  219. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/champ/wnd_acc/__init__.py +0 -0
  220. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/champ/wnd_acc/downloader.py +0 -0
  221. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/champ/wnd_acc/loader.py +0 -0
  222. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/champ/wnd_acc/variable_config.py +0 -0
  223. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/downloader.py +0 -0
  224. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/goce/__init__.py +0 -0
  225. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/__init__.py +0 -0
  226. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/downloader.py +0 -0
  227. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/loader.py +0 -0
  228. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/variable_config.py +0 -0
  229. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/grace/__init__.py +0 -0
  230. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/grace/dns_acc/__init__.py +0 -0
  231. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/grace/dns_acc/downloader.py +0 -0
  232. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/grace/dns_acc/loader.py +0 -0
  233. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/grace/dns_acc/variable_config.py +0 -0
  234. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/grace/wnd_acc/__init__.py +0 -0
  235. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/grace/wnd_acc/downloader.py +0 -0
  236. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/grace/wnd_acc/loader.py +0 -0
  237. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/grace/wnd_acc/variable_config.py +0 -0
  238. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/grace_fo/__init__.py +0 -0
  239. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/__init__.py +0 -0
  240. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/downloader.py +0 -0
  241. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/loader.py +0 -0
  242. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/variable_config.py +0 -0
  243. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/__init__.py +0 -0
  244. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/downloader.py +0 -0
  245. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/loader.py +0 -0
  246. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/variable_config.py +0 -0
  247. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/swarm/__init__.py +0 -0
  248. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/swarm/dns_acc/__init__.py +0 -0
  249. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/swarm/dns_acc/downloader.py +0 -0
  250. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/swarm/dns_acc/loader.py +0 -0
  251. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/swarm/dns_acc/variable_config.py +0 -0
  252. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/swarm/dns_pod/__init__.py +0 -0
  253. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/swarm/dns_pod/downloader.py +0 -0
  254. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/swarm/dns_pod/loader.py +0 -0
  255. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/tud/swarm/dns_pod/variable_config.py +0 -0
  256. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/wdc/__init__.py +0 -0
  257. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/wdc/ae/__init__.py +0 -0
  258. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/wdc/ae/downloader.py +0 -0
  259. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/wdc/ae/loader.py +0 -0
  260. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/wdc/ae/variable_config.py +0 -0
  261. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/wdc/asysym/__init__.py +0 -0
  262. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/wdc/asysym/downloader.py +0 -0
  263. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/wdc/asysym/loader.py +0 -0
  264. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/wdc/asysym/variable_config.py +0 -0
  265. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/wdc/dst/__init__.py +0 -0
  266. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/wdc/dst/downloader.py +0 -0
  267. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/wdc/dst/loader.py +0 -0
  268. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/datahub/sources/wdc/dst/variable_config.py +0 -0
  269. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/express/__init__.py +0 -0
  270. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/express/dmsp_dashboard.py +0 -0
  271. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/express/eiscat_dashboard.py +0 -0
  272. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/express/millstonehill_dashboard.py +0 -0
  273. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/express/omni_dashboard.py +0 -0
  274. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/future/__init__.py +0 -0
  275. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/future/empiricalmodels/__init__.py +0 -0
  276. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/future/empiricalmodels/ovationprime2010/__init__.py +0 -0
  277. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/future/empiricalmodels/ovationprime2010/ovationprime.py +0 -0
  278. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/future/satllites/__init__.py +0 -0
  279. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/future/satllites/orbit_analyzer.py +0 -0
  280. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/future/test_sscws.py +0 -0
  281. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/observatory/__init__.py +0 -0
  282. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/observatory/constants.py +0 -0
  283. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/observatory/earth/__init__.py +0 -0
  284. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/observatory/earth/_func.py +0 -0
  285. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/observatory/earth/constants.py +0 -0
  286. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/observatory/earth/geodesy.py +0 -0
  287. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/observatory/earth/sun_position.py +0 -0
  288. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/observatory/orbit/__init__.py +0 -0
  289. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/observatory/orbit/sc_orbit.py +0 -0
  290. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/observatory/orbit/utilities.py +0 -0
  291. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/observatory/site/__init__.py +0 -0
  292. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/observatory/site/mixins.py +0 -0
  293. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/quantity/__init__.py +0 -0
  294. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/toolbox/__init__.py +0 -0
  295. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/toolbox/io/__init__.py +0 -0
  296. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/toolbox/io/dialog.py +0 -0
  297. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/toolbox/unit/__init__.py +0 -0
  298. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/toolbox/utilities/__init__.py +0 -0
  299. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/toolbox/utilities/numpymath.py +0 -0
  300. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/toolbox/utilities/pybasic.py +0 -0
  301. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/toolbox/utilities/pyclass.py +0 -0
  302. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/toolbox/utilities/pydatetime.py +0 -0
  303. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/toolbox/utilities/pylogging.py +0 -0
  304. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/toolbox/utilities/pyos.py +0 -0
  305. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/visualization/__init__.py +0 -0
  306. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/visualization/mpl/__base__.py +0 -0
  307. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/visualization/mpl/__init__.py +0 -0
  308. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/visualization/mpl/_helpers.py +0 -0
  309. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/visualization/mpl/axes.py +0 -0
  310. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/visualization/mpl/axis_ticks.py +0 -0
  311. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/visualization/mpl/colormaps.py +0 -0
  312. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/visualization/mpl/dashboards.py +0 -0
  313. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/visualization/mpl/figure.py +0 -0
  314. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/visualization/mpl/geomap/__base__.py +0 -0
  315. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/visualization/mpl/geomap/__init__.py +0 -0
  316. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/visualization/mpl/geomap/geodashboards.py +0 -0
  317. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/visualization/mpl/geomap/geopanels.py +0 -0
  318. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/visualization/plotly/__init__.py +0 -0
  319. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/visualization/plotly/ipanel.py +0 -0
  320. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/wrapper/__init__.py +0 -0
  321. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/wrapper/geopack/LICENSE +0 -0
  322. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/wrapper/geopack/README.md +0 -0
  323. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/wrapper/geopack/__init__.py +0 -0
  324. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/wrapper/geopack/geopack/__init__.py +0 -0
  325. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/wrapper/geopack/geopack/geopack.py +0 -0
  326. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/wrapper/geopack/geopack/igrf13coeffs.txt +0 -0
  327. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/wrapper/geopack/geopack/t01.py +0 -0
  328. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/wrapper/geopack/geopack/t04.py +0 -0
  329. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/wrapper/geopack/geopack/t89.py +0 -0
  330. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/wrapper/geopack/geopack/t96.py +0 -0
  331. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/wrapper/geopack/geopack/test_geopack1.md +0 -0
  332. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab/wrapper/geopack/geopack/test_geopack1.py +0 -0
  333. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab.egg-info/SOURCES.txt +0 -0
  334. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab.egg-info/dependency_links.txt +0 -0
  335. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab.egg-info/requires.txt +0 -0
  336. {geospacelab-0.10.0 → geospacelab-0.10.2}/geospacelab.egg-info/top_level.txt +0 -0
  337. {geospacelab-0.10.0 → geospacelab-0.10.2}/setup.cfg +0 -0
  338. {geospacelab-0.10.0 → geospacelab-0.10.2}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: geospacelab
3
- Version: 0.10.0
3
+ Version: 0.10.2
4
4
  Summary: Collect, manage, and visualize geospace data.
5
5
  Home-page: https://github.com/JouleCai/geospacelab
6
6
  Author: Lei Cai
@@ -378,14 +378,9 @@ Output:
378
378
  From then on, the data source has been switched from JHUAPL to CDAWeb.
379
379
 
380
380
  ```python
381
- import datetime
382
- import matplotlib.pyplot as plt
383
-
384
- import geospacelab.visualization.mpl.geomap.geodashboards as geomap
385
-
386
381
  dt_fr = datetime.datetime(2015, 9, 8, 8)
387
382
  dt_to = datetime.datetime(2015, 9, 8, 23, 59)
388
- time1 = datetime.datetime(2015, 9, 8, 20, 21)
383
+ time_c = datetime.datetime(2015, 9, 8, 20, 21)
389
384
  pole = 'N'
390
385
  sat_id = 'f16'
391
386
  band = 'LBHS'
@@ -396,49 +391,51 @@ dashboard = geomap.GeoDashboard(dt_fr=dt_fr, dt_to=dt_to, figure_config={'figsiz
396
391
  # If the orbit_id is specified, only one file will be downloaded. This option saves the downloading time.
397
392
  # dashboard.dock(datasource_contents=['jhuapl', 'dmsp', 'ssusi', 'edraur'], pole='N', sat_id='f17', orbit_id='46863')
398
393
  # If not specified, the data during the whole day will be downloaded.
399
- dashboard.dock(
400
- datasource_contents=dashboard.dock(datasource_contents=['cdaweb', 'dmsp', 'ssusi', 'edr_aur'],
401
- pole=pole, sat_id=sat_id, orbit_id=None
402
- )
394
+ ds_ssusi = dashboard.dock(datasource_contents=['cdaweb', 'dmsp', 'ssusi', 'edr_aur'], pole=pole, sat_id=sat_id, orbit_id=None)
403
395
  ds_s1 = dashboard.dock(
404
396
  datasource_contents=['madrigal', 'satellites', 'dmsp', 's1'],
405
- dt_fr=time1 - datetime.timedelta(minutes=45),
406
- dt_to=time1 + datetime.timedelta(minutes=45),
407
- sat_id=sat_id
408
- )
397
+ dt_fr=time_c - datetime.timedelta(minutes=45),
398
+ dt_to=time_c + datetime.timedelta(minutes=45),
399
+ sat_id=sat_id, replace_orbit=True)
409
400
 
410
401
  dashboard.set_layout(1, 1)
411
402
 
412
403
  # Get the variables: LBHS emission intensiy, corresponding times and locations
413
- lbhs = dashboard.assign_variable('GRID_AUR_' + band, dataset_index=0)
414
- dts = dashboard.assign_variable('DATETIME', dataset_index=0).value.flatten()
415
- mlat = dashboard.assign_variable('GRID_MLAT', dataset_index=0).value
416
- mlon = dashboard.assign_variable('GRID_MLON', dataset_index=0).value
417
- mlt = dashboard.assign_variable(('GRID_MLT'), dataset_index=0).value
404
+ lbhs = ds_ssusi['GRID_AUR_' + band]
405
+ dts = ds_ssusi['DATETIME'].flatten()
406
+ mlat = ds_ssusi['GRID_MLAT']
407
+ mlon = ds_ssusi['GRID_MLON']
408
+ mlt = ds_ssusi['GRID_MLT']
418
409
 
419
410
  # Search the index for the time to plot, used as an input to the following polar map
420
- ind_t = dashboard.datasets[0].get_time_ind(ut=time1)
411
+ ind_t = dashboard.datasets[0].get_time_ind(ut=time_c)
412
+ if (dts[ind_t] - time_c).total_seconds()/60 > 60: # in minutes
413
+ raise ValueError("The time does not match any SSUSI data!")
421
414
  lbhs_ = lbhs.value[ind_t]
422
- mlat_ = mlat[ind_t]
423
- mlon_ = mlon[ind_t]
424
- mlt_ = mlt[ind_t]
415
+ mlat_ = mlat.value[ind_t]
416
+ mlon_ = mlon.value[ind_t]
417
+ mlt_ = mlt.value[ind_t]
425
418
  # Add a polar map panel to the dashboard. Currently the style is the fixed MLT at mlt_c=0. See the keywords below:
426
- panel1 = dashboard.add_polar_map(row_ind=0, col_ind=0, style='mlt-fixed', cs='AACGM', mlt_c=0., pole=pole, ut=time1, boundary_lat=65., mirror_south=True)
419
+ panel = dashboard.add_polar_map(
420
+ row_ind=0, col_ind=0, style='mlt-fixed', cs='AACGM',
421
+ mlt_c=0., pole=pole, ut=time_c, boundary_lat=55., mirror_south=True
422
+ )
427
423
 
428
424
  # Some settings for plotting.
429
425
  pcolormesh_config = lbhs.visual.plot_config.pcolormesh
430
426
  # Overlay the SSUSI image in the map.
431
- ipm = panel1.overlay_pcolormesh(data=lbhs_, coords={'lat': mlat_, 'lon': mlon_, 'mlt': mlt_}, cs='AACGM',
432
- regridding=True, **pcolormesh_config)
427
+ ipc = panel.overlay_pcolormesh(
428
+ data=lbhs_, coords={'lat': mlat_, 'lon': mlon_, 'mlt': mlt_}, cs='AACGM',
429
+ regridding=False, **pcolormesh_config)
433
430
  # Add a color bar
434
- panel1.add_colorbar(ipm, c_label=band + " (R)", c_scale=pcolormesh_config['c_scale'], left=1.1, bottom=0.1,
431
+ panel.add_colorbar(ipc, c_label=band + " (R)", c_scale=pcolormesh_config['c_scale'], left=1.1, bottom=0.1,
435
432
  width=0.05, height=0.7)
436
433
 
437
434
  # Overlay the gridlines
438
- panel1.overlay_gridlines(lat_res=5, lon_label_separator=5)
435
+ panel.overlay_gridlines(lat_res=5, lon_label_separator=5)
439
436
 
440
437
  # Overlay the coastlines in the AACGM coordinate
441
- panel1.overlay_coastlines()
438
+ panel.overlay_coastlines()
442
439
 
443
440
  # Overlay cross-track velocity along satellite trajectory
444
441
  sc_dt = ds_s1['SC_DATETIME'].value.flatten()
@@ -448,14 +445,22 @@ sc_alt = ds_s1['SC_GEO_ALT'].value.flatten()
448
445
  sc_coords = {'lat': sc_lat, 'lon': sc_lon, 'height': sc_alt}
449
446
 
450
447
  v_H = ds_s1['v_i_H'].value.flatten()
451
- panel1.overlay_cross_track_vector(vector=v_H, unit_vector=1000, alpha=0.5, color='r', sc_coords=sc_coords, sc_ut=sc_dt, cs='GEOC')
448
+ panel.overlay_cross_track_vector(
449
+ vector=v_H, unit_vector=1000, vector_unit='m/s', alpha=0.3, color='red',
450
+ sc_coords=sc_coords, sc_ut=sc_dt, cs='GEO',
451
+ )
452
452
  # Overlay the satellite trajectory with ticks
453
- panel1.overlay_sc_trajectory(sc_ut=sc_dt, sc_coords=sc_coords, cs='GEOC')
453
+ panel.overlay_sc_trajectory(sc_ut=sc_dt, sc_coords=sc_coords, cs='GEO')
454
+
455
+ # Overlay sites
456
+ panel.overlay_sites(
457
+ site_ids=['TRO', 'ESR'], coords={'lat': [69.58, 78.15], 'lon': [19.23, 16.02], 'height': 0.},
458
+ cs='GEO', marker='^', markersize=2)
454
459
 
455
460
  # Add the title and save the figure
456
461
  polestr = 'North' if pole == 'N' else 'South'
457
- panel1.add_title(title='DMSP/SSUSI, ' + band + ', ' + sat_id.upper() + ', ' + polestr + ', ' + time1.strftime('%Y-%m-%d %H%M UT'))
458
- plt.savefig('DMSP_SSUSI_' + time1.strftime('%Y%m%d-%H%M') + '_' + band + '_' + sat_id.upper() + '_' + pole, dpi=300)
462
+ panel.add_title(title='DMSP/SSUSI, ' + band + ', ' + sat_id.upper() + ', ' + polestr + ', ' + time_c.strftime('%Y-%m-%d %H%M UT'))
463
+ plt.savefig('DMSP_SSUSI_' + time_c.strftime('%Y%m%d-%H%M') + '_' + band + '_' + sat_id.upper() + '_' + pole, dpi=300)
459
464
 
460
465
  # show the figure
461
466
  plt.show()
@@ -322,14 +322,9 @@ Output:
322
322
  From then on, the data source has been switched from JHUAPL to CDAWeb.
323
323
 
324
324
  ```python
325
- import datetime
326
- import matplotlib.pyplot as plt
327
-
328
- import geospacelab.visualization.mpl.geomap.geodashboards as geomap
329
-
330
325
  dt_fr = datetime.datetime(2015, 9, 8, 8)
331
326
  dt_to = datetime.datetime(2015, 9, 8, 23, 59)
332
- time1 = datetime.datetime(2015, 9, 8, 20, 21)
327
+ time_c = datetime.datetime(2015, 9, 8, 20, 21)
333
328
  pole = 'N'
334
329
  sat_id = 'f16'
335
330
  band = 'LBHS'
@@ -340,49 +335,51 @@ dashboard = geomap.GeoDashboard(dt_fr=dt_fr, dt_to=dt_to, figure_config={'figsiz
340
335
  # If the orbit_id is specified, only one file will be downloaded. This option saves the downloading time.
341
336
  # dashboard.dock(datasource_contents=['jhuapl', 'dmsp', 'ssusi', 'edraur'], pole='N', sat_id='f17', orbit_id='46863')
342
337
  # If not specified, the data during the whole day will be downloaded.
343
- dashboard.dock(
344
- datasource_contents=dashboard.dock(datasource_contents=['cdaweb', 'dmsp', 'ssusi', 'edr_aur'],
345
- pole=pole, sat_id=sat_id, orbit_id=None
346
- )
338
+ ds_ssusi = dashboard.dock(datasource_contents=['cdaweb', 'dmsp', 'ssusi', 'edr_aur'], pole=pole, sat_id=sat_id, orbit_id=None)
347
339
  ds_s1 = dashboard.dock(
348
340
  datasource_contents=['madrigal', 'satellites', 'dmsp', 's1'],
349
- dt_fr=time1 - datetime.timedelta(minutes=45),
350
- dt_to=time1 + datetime.timedelta(minutes=45),
351
- sat_id=sat_id
352
- )
341
+ dt_fr=time_c - datetime.timedelta(minutes=45),
342
+ dt_to=time_c + datetime.timedelta(minutes=45),
343
+ sat_id=sat_id, replace_orbit=True)
353
344
 
354
345
  dashboard.set_layout(1, 1)
355
346
 
356
347
  # Get the variables: LBHS emission intensiy, corresponding times and locations
357
- lbhs = dashboard.assign_variable('GRID_AUR_' + band, dataset_index=0)
358
- dts = dashboard.assign_variable('DATETIME', dataset_index=0).value.flatten()
359
- mlat = dashboard.assign_variable('GRID_MLAT', dataset_index=0).value
360
- mlon = dashboard.assign_variable('GRID_MLON', dataset_index=0).value
361
- mlt = dashboard.assign_variable(('GRID_MLT'), dataset_index=0).value
348
+ lbhs = ds_ssusi['GRID_AUR_' + band]
349
+ dts = ds_ssusi['DATETIME'].flatten()
350
+ mlat = ds_ssusi['GRID_MLAT']
351
+ mlon = ds_ssusi['GRID_MLON']
352
+ mlt = ds_ssusi['GRID_MLT']
362
353
 
363
354
  # Search the index for the time to plot, used as an input to the following polar map
364
- ind_t = dashboard.datasets[0].get_time_ind(ut=time1)
355
+ ind_t = dashboard.datasets[0].get_time_ind(ut=time_c)
356
+ if (dts[ind_t] - time_c).total_seconds()/60 > 60: # in minutes
357
+ raise ValueError("The time does not match any SSUSI data!")
365
358
  lbhs_ = lbhs.value[ind_t]
366
- mlat_ = mlat[ind_t]
367
- mlon_ = mlon[ind_t]
368
- mlt_ = mlt[ind_t]
359
+ mlat_ = mlat.value[ind_t]
360
+ mlon_ = mlon.value[ind_t]
361
+ mlt_ = mlt.value[ind_t]
369
362
  # Add a polar map panel to the dashboard. Currently the style is the fixed MLT at mlt_c=0. See the keywords below:
370
- panel1 = dashboard.add_polar_map(row_ind=0, col_ind=0, style='mlt-fixed', cs='AACGM', mlt_c=0., pole=pole, ut=time1, boundary_lat=65., mirror_south=True)
363
+ panel = dashboard.add_polar_map(
364
+ row_ind=0, col_ind=0, style='mlt-fixed', cs='AACGM',
365
+ mlt_c=0., pole=pole, ut=time_c, boundary_lat=55., mirror_south=True
366
+ )
371
367
 
372
368
  # Some settings for plotting.
373
369
  pcolormesh_config = lbhs.visual.plot_config.pcolormesh
374
370
  # Overlay the SSUSI image in the map.
375
- ipm = panel1.overlay_pcolormesh(data=lbhs_, coords={'lat': mlat_, 'lon': mlon_, 'mlt': mlt_}, cs='AACGM',
376
- regridding=True, **pcolormesh_config)
371
+ ipc = panel.overlay_pcolormesh(
372
+ data=lbhs_, coords={'lat': mlat_, 'lon': mlon_, 'mlt': mlt_}, cs='AACGM',
373
+ regridding=False, **pcolormesh_config)
377
374
  # Add a color bar
378
- panel1.add_colorbar(ipm, c_label=band + " (R)", c_scale=pcolormesh_config['c_scale'], left=1.1, bottom=0.1,
375
+ panel.add_colorbar(ipc, c_label=band + " (R)", c_scale=pcolormesh_config['c_scale'], left=1.1, bottom=0.1,
379
376
  width=0.05, height=0.7)
380
377
 
381
378
  # Overlay the gridlines
382
- panel1.overlay_gridlines(lat_res=5, lon_label_separator=5)
379
+ panel.overlay_gridlines(lat_res=5, lon_label_separator=5)
383
380
 
384
381
  # Overlay the coastlines in the AACGM coordinate
385
- panel1.overlay_coastlines()
382
+ panel.overlay_coastlines()
386
383
 
387
384
  # Overlay cross-track velocity along satellite trajectory
388
385
  sc_dt = ds_s1['SC_DATETIME'].value.flatten()
@@ -392,14 +389,22 @@ sc_alt = ds_s1['SC_GEO_ALT'].value.flatten()
392
389
  sc_coords = {'lat': sc_lat, 'lon': sc_lon, 'height': sc_alt}
393
390
 
394
391
  v_H = ds_s1['v_i_H'].value.flatten()
395
- panel1.overlay_cross_track_vector(vector=v_H, unit_vector=1000, alpha=0.5, color='r', sc_coords=sc_coords, sc_ut=sc_dt, cs='GEOC')
392
+ panel.overlay_cross_track_vector(
393
+ vector=v_H, unit_vector=1000, vector_unit='m/s', alpha=0.3, color='red',
394
+ sc_coords=sc_coords, sc_ut=sc_dt, cs='GEO',
395
+ )
396
396
  # Overlay the satellite trajectory with ticks
397
- panel1.overlay_sc_trajectory(sc_ut=sc_dt, sc_coords=sc_coords, cs='GEOC')
397
+ panel.overlay_sc_trajectory(sc_ut=sc_dt, sc_coords=sc_coords, cs='GEO')
398
+
399
+ # Overlay sites
400
+ panel.overlay_sites(
401
+ site_ids=['TRO', 'ESR'], coords={'lat': [69.58, 78.15], 'lon': [19.23, 16.02], 'height': 0.},
402
+ cs='GEO', marker='^', markersize=2)
398
403
 
399
404
  # Add the title and save the figure
400
405
  polestr = 'North' if pole == 'N' else 'South'
401
- panel1.add_title(title='DMSP/SSUSI, ' + band + ', ' + sat_id.upper() + ', ' + polestr + ', ' + time1.strftime('%Y-%m-%d %H%M UT'))
402
- plt.savefig('DMSP_SSUSI_' + time1.strftime('%Y%m%d-%H%M') + '_' + band + '_' + sat_id.upper() + '_' + pole, dpi=300)
406
+ panel.add_title(title='DMSP/SSUSI, ' + band + ', ' + sat_id.upper() + ', ' + polestr + ', ' + time_c.strftime('%Y-%m-%d %H%M UT'))
407
+ plt.savefig('DMSP_SSUSI_' + time_c.strftime('%Y%m%d-%H%M') + '_' + band + '_' + sat_id.upper() + '_' + pole, dpi=300)
403
408
 
404
409
  # show the figure
405
410
  plt.show()
@@ -6,7 +6,7 @@ __author__ = "Lei Cai"
6
6
  __copyright__ = "Copyright 2021, GeospaceLAB"
7
7
  __credits__ = ["Lei Cai"]
8
8
  __license__ = "BSD-3-Clause License"
9
- __version__ = "0.10.0"
9
+ __version__ = "0.10.2"
10
10
  __maintainer__ = "Lei Cai"
11
11
  __email__ = "lei.cai@oulu.fi"
12
12
  __status__ = "Developing"
@@ -72,7 +72,8 @@ class Dataset(datahub.DatasetSourced):
72
72
  self.data_file_type = kwargs.pop('data_file_type', '')
73
73
  self.affiliation = kwargs.pop('affiliation', '')
74
74
  self.allow_download = kwargs.pop('allow_download', True)
75
- self.metadata = None
75
+ self.gate_num = kwargs.pop('gate_num', None)
76
+ self.metadata = {}
76
77
  self.add_AACGM = kwargs.pop('add_AACGM', True)
77
78
  self.add_APEX = kwargs.pop('add_APEX', False)
78
79
 
@@ -116,7 +117,9 @@ class Dataset(datahub.DatasetSourced):
116
117
  self.check_data_files(**kwargs)
117
118
 
118
119
  for file_path in self.data_file_paths:
119
- load_obj = self.loader(file_path, file_type=self.data_file_type)
120
+ load_obj = self.loader(file_path, file_type=self.data_file_type, gate_num=self.gate_num)
121
+ if self.gate_num is None:
122
+ self.gate_num = load_obj.gate_num
120
123
 
121
124
  for var_name in self._variables.keys():
122
125
  self._variables[var_name].join(load_obj.variables[var_name])
@@ -130,6 +133,12 @@ class Dataset(datahub.DatasetSourced):
130
133
  self.experiment = rawdata_path.split('/')[-1].split('@')[0]
131
134
  self.affiliation = load_obj.metadata['affiliation']
132
135
  self.metadata = load_obj.metadata
136
+
137
+ inds_cmb = np.argsort(self['DATETIME'].flatten())
138
+ if any(np.diff(np.array(inds_cmb))<0):
139
+ for var_name in self.keys():
140
+ self[var_name].value = self[var_name].value[inds_cmb, :]
141
+
133
142
  if self.add_AACGM or self.add_APEX:
134
143
  self.calc_lat_lon()
135
144
  # self.select_beams(field_aligned=True)
@@ -357,21 +366,23 @@ class Dataset(datahub.DatasetSourced):
357
366
  fps_sub = []
358
367
  for ii in inds_id:
359
368
  fp = file_paths[ii]
360
- rc = re.compile(r".*_([\d]{8}T[\d]{6}).*_([\d]{8}T[\d]{6}).*[\d]{4}\-[\d]{2}\-[\d]{2}_([\w]+)@.*")
369
+ rc = re.compile(r".*_([\d]{8}T[\d]{6}).*_([\d]{8}T[\d]{6}).*[\d]{4}\-[\d]{2}\-[\d]{2}_([\w.]+)@.*")
361
370
  res = rc.search(str(fp))
362
371
  dt_0 = datetime.datetime.strptime(res.groups()[0], '%Y%m%dT%H%M%S')
363
372
  dt_1 = datetime.datetime.strptime(res.groups()[1], '%Y%m%dT%H%M%S')
364
373
  if (dt_0 >= self.dt_to) or (dt_1<=self.dt_fr):
365
374
  continue
366
375
  if str(self.pulse_code):
367
- if self.pulse_code not in res.groups()[2]:
376
+ if self.pulse_code not in res.groups()[2].lower():
368
377
  continue
369
378
  if str(self.modulation):
370
- if self.modulation not in res.groups()[2]:
379
+ if self.modulation not in res.groups()[2].lower():
371
380
  continue
381
+ if '_v' in res.groups()[2].lower():
382
+ continue
372
383
  fps_sub.extend([fp])
373
384
  if len(fps_sub) > 1:
374
- mylog.StreamLogger.warning("Multiple data files for a single experiment detected! Only the first one is selected.")
385
+ mylog.StreamLogger.warning("Multiple data files for a single experiment detected!")
375
386
  # for fp in fps_sub:
376
387
  # mylog.simpleinfo.info(str(fp))
377
388
  # fps_sub = fps_sub[0]
@@ -207,8 +207,8 @@ class Downloader(DownloaderBase):
207
207
  dt_to_exp = datetime.datetime(
208
208
  exp.endyear, exp.endmonth, exp.endday, exp.endhour, exp.endmin, exp.endsec
209
209
  )
210
- if (dt_fr_exp >= self.dt_to) or (dt_to_exp <= self.dt_fr):
211
- continue
210
+ # if (dt_fr_exp >= self.dt_to) or (dt_to_exp <= self.dt_fr):
211
+ # continue
212
212
  for file in list(exp.files):
213
213
 
214
214
  file_path_remote = pathlib.Path(file.name)
@@ -13,6 +13,7 @@ import h5py
13
13
  import numpy as np
14
14
  import pathlib
15
15
  import re
16
+ import scipy.interpolate as si
16
17
 
17
18
  from geospacelab.config import pref as prf
18
19
 
@@ -32,12 +33,12 @@ default_variable_names = [
32
33
 
33
34
 
34
35
  class Loader:
35
- def __init__(self, file_path, file_type="eiscat-hdf5"):
36
+ def __init__(self, file_path, file_type="eiscat-hdf5", gate_num=None):
36
37
  self.variables = {}
37
38
  self.metadata = {}
38
39
  self.file_path = file_path
39
40
  self.file_type = file_type
40
-
41
+ self.gate_num = gate_num
41
42
  self.load_data()
42
43
 
43
44
  def load_data(self):
@@ -131,8 +132,20 @@ class Loader:
131
132
  if num_col != nrec[0]:
132
133
  print("Note: the number of range gates doesn't match nrec!")
133
134
  var = var.reshape(num_row, num_col)
135
+ if self.gate_num is None:
136
+ num_gates=self.gate_num = num_col
137
+ else:
138
+ num_gates = self.gate_num
139
+ var_array = np.empty((num_row, num_gates))
140
+ var_array[::] = np.nan
141
+ for i in range(num_row):
142
+ var_array[i, 0:num_col] = var[i, :]
143
+ var = var_array
134
144
  elif nrec_group == 'par1d':
135
- num_gates = int(np.max(nrec))
145
+ if self.gate_num is None:
146
+ self.gate_num = num_gates = int(np.max(nrec))
147
+ else:
148
+ num_gates = self.gate_num
136
149
  var_array = np.empty((num_row, num_gates))
137
150
  var_array[:, :] = np.nan
138
151
  rec_ind_1 = 0
@@ -201,21 +214,30 @@ class Loader:
201
214
  # check height and range
202
215
  vars['HEIGHT'] = vars['HEIGHT'] / 1000.
203
216
  vars['RANGE'] = vars['RANGE'] / 1000.
204
- inds = np.where(np.isnan(vars['HEIGHT']))
205
- for i in range(len(inds[0])):
206
- ind_0 = inds[0][i]
207
- ind_1 = inds[1][i]
208
- x0 = np.arange(vars['HEIGHT'].shape[0])
209
- y0 = vars['HEIGHT'][:, ind_1]
210
- xp = x0[np.where(np.isfinite(y0))[0]]
211
- yp = y0[np.isfinite(y0)]
212
- vars['HEIGHT'][ind_0, ind_1] = np.interp(x0[ind_0], xp, yp)
213
-
214
- x0 = np.arange(vars['RANGE'].shape[0])
215
- y0 = vars['RANGE'][:, ind_1]
216
- xp = x0[np.isfinite(y0)]
217
- yp = y0[np.isfinite(y0)]
218
- vars['RANGE'][ind_0, ind_1] = np.interp(x0[ind_0], xp, yp)
217
+
218
+ inds_nan = np.where(np.isnan(vars['HEIGHT']))
219
+ if list(inds_nan):
220
+ m, n = vars['HEIGHT'].shape
221
+ for i in range(m):
222
+ yy = vars['HEIGHT'][i, :].flatten()
223
+ iii = np.where(~np.isfinite(yy))
224
+ if not list(iii):
225
+ continue
226
+ iii = np.where(np.isfinite(yy))[0]
227
+ xx = np.arange(0, n)
228
+ f = si.interp1d(xx[iii], yy[iii], kind='linear', bounds_error=False, fill_value='extrapolate')
229
+ yy_new = f(xx)
230
+ vars['HEIGHT'][i, :] = yy_new
231
+
232
+ yy = vars['RANGE'][i, :].flatten()
233
+ iii = np.where(~np.isfinite(yy))
234
+ if not list(iii):
235
+ continue
236
+ iii = np.where(np.isfinite(yy))[0]
237
+ xx = np.arange(0, n)
238
+ f = si.interp1d(xx[iii], yy[iii], kind='linear', bounds_error=False, fill_value='extrapolate')
239
+ yy_new = f(xx)
240
+ vars['RANGE'][i, :] = yy_new
219
241
 
220
242
  if np.isscalar(vars['AZ']):
221
243
  az = np.empty((vars['DATETIME_1'].shape[0], 1))
@@ -336,8 +358,12 @@ class Loader:
336
358
  inds_ran_max = np.append(inds_ran_max, len(ran)-1)
337
359
  inds_ran_max.sort()
338
360
 
339
- ngates_max = np.max(np.diff(inds_ran_max))
340
- data_array = np.empty((nvar_h5, inds_ran_min.shape[0], ngates_max))
361
+ if self.gate_num is None:
362
+ self.gate_num = ngates_max = np.max(np.diff(inds_ran_max))
363
+ else:
364
+ ngates_max = self.gate_num
365
+ num_row = inds_ran_min.shape[0]
366
+ data_array = np.empty((nvar_h5, num_row, ngates_max))
341
367
  data_array[::] = np.nan
342
368
  for ip in range(nvar_h5):
343
369
  var_tmp = np.array(data[ip])
@@ -345,7 +371,7 @@ class Loader:
345
371
  ind1 = inds_ran_min[i]
346
372
  ind2 = inds_ran_max[i]
347
373
  data_array[ip, i, 0: ind2-ind1+1] = var_tmp[ind1: ind2+1]
348
- num_row = inds_ran_min.shape[0]
374
+
349
375
  vars_h5 = {}
350
376
  for ip in range(nvar_h5):
351
377
 
@@ -382,21 +408,31 @@ class Loader:
382
408
  vars['T_e_err'] = vars['T_e'] * np.sqrt((vars['T_i_err'] / vars['T_i']) ** 2
383
409
  + (vars['T_r_err'] / vars['T_r']) ** 2)
384
410
  vars['AZ'] = vars['AZ'] % 360.
385
- inds = np.where(np.isnan(vars['HEIGHT']))
386
- for i in range(len(inds[0])):
387
- ind_0 = inds[0][i]
388
- ind_1 = inds[1][i]
389
- x0 = np.arange(vars['HEIGHT'].shape[0])
390
- y0 = vars['HEIGHT'][:, ind_1]
391
- xp = x0[np.where(np.isfinite(y0))[0]]
392
- yp = y0[np.isfinite(y0)]
393
- vars['HEIGHT'][ind_0, ind_1] = np.interp(x0[ind_0], xp, yp)
394
-
395
- x0 = np.arange(vars['RANGE'].shape[0])
396
- y0 = vars['RANGE'][:, ind_1]
397
- xp = x0[np.isfinite(y0)]
398
- yp = y0[np.isfinite(y0)]
399
- vars['RANGE'][ind_0, ind_1] = np.interp(x0[ind_0], xp, yp)
411
+
412
+ inds_nan = np.where(np.isnan(vars['HEIGHT']))
413
+ if list(inds_nan):
414
+ m, n = vars['HEIGHT'].shape
415
+ for i in range(m):
416
+ yy = vars['HEIGHT'][i, :].flatten()
417
+ iii = np.where(~np.isfinite(yy))
418
+ if not list(iii):
419
+ continue
420
+ iii = np.where(np.isfinite(yy))[0]
421
+ xx = np.arange(0, n)
422
+ f = si.interp1d(xx[iii], yy[iii], kind='linear', bounds_error=False, fill_value='extrapolate')
423
+ yy_new = f(xx)
424
+ vars['HEIGHT'][i, :] = yy_new
425
+
426
+ yy = vars['RANGE'][i, :].flatten()
427
+ iii = np.where(~np.isfinite(yy))
428
+ if not list(iii):
429
+ continue
430
+ iii = np.where(np.isfinite(yy))[0]
431
+ xx = np.arange(0, n)
432
+ f = si.interp1d(xx[iii], yy[iii], kind='linear', bounds_error=False, fill_value='extrapolate')
433
+ yy_new = f(xx)
434
+ vars['RANGE'][i, :] = yy_new
435
+
400
436
 
401
437
  self.variables = vars
402
438
  self.metadata = metadata
@@ -46,7 +46,7 @@ default_variable_names = [
46
46
  'DATETIME', 'AZ', 'EL', 'PULSE_LENGTH',
47
47
  'P_Tx', 'n_e', 'n_e_err', 'T_i', 'T_i_err', 'T_e', 'T_e_err',
48
48
  'v_i_los', 'v_i_los_err', 'comp_mix', 'comp_mix_err',
49
- 'HEIGHT', 'RANGE', 'CGM_LAT', 'CGM_LON'
49
+ 'HEIGHT', 'RANGE', 'CGM_LAT', 'CGM_LON', 'BEAM_ID', 'CHISQ'
50
50
  ]
51
51
 
52
52
  # default_data_search_recursive = True
@@ -55,7 +55,7 @@ default_attrs_required = []
55
55
 
56
56
  pulse_code_dict = {
57
57
  'alternating code': 'AC',
58
- 'long pulse': 'PL',
58
+ 'long pulse': 'LP',
59
59
  }
60
60
 
61
61
 
@@ -138,8 +138,8 @@ class Dataset(datahub.DatasetSourced):
138
138
  self.beam_az = load_obj.beam_az
139
139
  self.beam_el = load_obj.beam_el
140
140
 
141
- if self.add_APEX or self.add_AACGM:
142
- self.calc_lat_lon()
141
+ # if self.add_APEX or self.add_AACGM:
142
+ self.calc_lat_lon()
143
143
 
144
144
  if self['HEIGHT'].value is None:
145
145
  self['HEIGHT'] = self['GEO_ALT']
@@ -353,7 +353,7 @@ class Dataset(datahub.DatasetSourced):
353
353
  pulse_code=self.pulse_code,
354
354
  dry_run=dry_run,
355
355
  data_file_root_dir=self.data_root_dir,
356
- include_exp_ids=self.exp_ids,
356
+ include_exp_ids=self.experiment_ids,
357
357
  include_exp_name_patterns=include_exp_name_patterns)
358
358
  return download_obj.data_file_paths
359
359
 
@@ -15,7 +15,7 @@ EXCLUDE_FILE_TYPE_PATTERNS = [['from power'], ['velocity'], ['uncorrected']]
15
15
 
16
16
  pulse_code_dict = {
17
17
  'alternating code': 'AC',
18
- 'long pulse': 'PL',
18
+ 'long pulse': 'LP',
19
19
  }
20
20
 
21
21
 
@@ -37,6 +37,8 @@ var_name_dict = {
37
37
  'CGM_LAT': 'cgm_lat',
38
38
  'CGM_LON': 'cgm_long',
39
39
  'HEIGHT': 'gdalt',
40
+ 'BEAM_ID': 'beamid',
41
+ 'CHISQ': 'chisq',
40
42
  }
41
43
 
42
44
 
@@ -205,8 +205,8 @@ class Dataset(datahub.DatasetSourced):
205
205
  sin_glon_1 = np.sin(glon_1 * factor)
206
206
  sin_glon_2 = np.sin(glon_2 * factor)
207
207
  cos_glon_2 = np.cos(glon_2 * factor)
208
- itpf_sin = interp1d(sectime_2, sin_glon_2, kind='cubic', bounds_error=False, fill_value='extrapolate')
209
- itpf_cos = interp1d(sectime_2, cos_glon_2, kind='cubic', bounds_error=False, fill_value='extrapolate')
208
+ itpf_sin = interp1d(sectime_2, sin_glon_2, kind='linear', bounds_error=False, fill_value='extrapolate')
209
+ itpf_cos = interp1d(sectime_2, cos_glon_2, kind='linear', bounds_error=False, fill_value='extrapolate')
210
210
  sin_glon_2_i = itpf_sin(sectime_1)
211
211
  sin_glon_2_i = np.where(sin_glon_2_i > 1., 1., sin_glon_2_i)
212
212
  sin_glon_2_i = np.where(sin_glon_2_i < -1., -1., sin_glon_2_i)
@@ -177,8 +177,8 @@ class Dataset(datahub.DatasetSourced):
177
177
  sin_glon_1 = np.sin(glon_1 * factor)
178
178
  sin_glon_2 = np.sin(glon_2 * factor)
179
179
  cos_glon_2 = np.cos(glon_2 * factor)
180
- itpf_sin = interp1d(sectime_2, sin_glon_2, kind='cubic', bounds_error=False, fill_value='extrapolate')
181
- itpf_cos = interp1d(sectime_2, cos_glon_2, kind='cubic', bounds_error=False, fill_value='extrapolate')
180
+ itpf_sin = interp1d(sectime_2, sin_glon_2, kind='linear', bounds_error=False, fill_value='extrapolate')
181
+ itpf_cos = interp1d(sectime_2, cos_glon_2, kind='linear', bounds_error=False, fill_value='extrapolate')
182
182
  sin_glon_2_i = itpf_sin(sectime_1)
183
183
  cos_glon_2_i = itpf_cos(sectime_1)
184
184
  rad = np.sign(sin_glon_2_i) * (np.pi / 2 - np.arcsin(cos_glon_2_i))