geospacelab 0.10.2__tar.gz → 0.10.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (349) hide show
  1. {geospacelab-0.10.2/geospacelab.egg-info → geospacelab-0.10.3}/PKG-INFO +1 -2
  2. {geospacelab-0.10.2 → geospacelab-0.10.3}/README.md +0 -1
  3. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/__init__.py +1 -1
  4. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/__init__.py +2 -2
  5. geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/loader.py +396 -0
  6. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/variable_config.py +1 -1
  7. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/__init__.py +5 -7
  8. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/loader.py +6 -6
  9. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/__init__.py +4 -6
  10. geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/risr_n/downloader.py +155 -0
  11. geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/risr_n/fitted/__init__.py +422 -0
  12. geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/risr_n/fitted/downloader.py +73 -0
  13. geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/risr_n/fitted/loader.py +225 -0
  14. geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/risr_n/fitted/variable_config.py +278 -0
  15. geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/risr_n/vi/__init__.py +343 -0
  16. geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/risr_n/vi/downloader.py +62 -0
  17. geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/risr_n/vi/loader.py +108 -0
  18. geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/risr_n/vi/variable_config.py +671 -0
  19. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/panels.py +6 -3
  20. geospacelab-0.10.3/geospacelab/wrapper/geopack/geopack/__init__.py +0 -0
  21. {geospacelab-0.10.2 → geospacelab-0.10.3/geospacelab.egg-info}/PKG-INFO +1 -2
  22. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab.egg-info/SOURCES.txt +10 -0
  23. geospacelab-0.10.2/geospacelab/datahub/sources/madrigal/isr/millstonehill/basic/loader.py +0 -201
  24. {geospacelab-0.10.2 → geospacelab-0.10.3}/LICENSE +0 -0
  25. {geospacelab-0.10.2 → geospacelab-0.10.3}/MANIFEST.in +0 -0
  26. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/config/__init__.py +0 -0
  27. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/config/_preferences.py +0 -0
  28. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/cs/__init__.py +0 -0
  29. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/cs/_aacgm.py +0 -0
  30. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/cs/_apex.py +0 -0
  31. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/cs/_cs_base.py +0 -0
  32. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/cs/_geo.py +0 -0
  33. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/cs/geo_utilities.py +0 -0
  34. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/__dataset_base__.py +0 -0
  35. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/__init__.py +0 -0
  36. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/__metadata_base__.py +0 -0
  37. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/__variable_base__.py +0 -0
  38. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/__init__.py +0 -0
  39. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/__init__.py +0 -0
  40. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/dmsp/__init__.py +0 -0
  41. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/__init__.py +0 -0
  42. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/__init__.py +0 -0
  43. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/downloader.py +0 -0
  44. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/loader.py +0 -0
  45. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/variable_config.py +0 -0
  46. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/downloader.py +0 -0
  47. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/omni/__init__.py +0 -0
  48. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/omni/downloader.py +0 -0
  49. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/omni/loader.py +0 -0
  50. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/cdaweb/omni/variable_config.py +0 -0
  51. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/__init__.py +0 -0
  52. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/__init__.py +0 -0
  53. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/advanced/__init__.py +0 -0
  54. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_fp/__init__.py +0 -0
  55. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/__init__.py +0 -0
  56. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/downloader.py +0 -0
  57. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/loader.py +0 -0
  58. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_lp_hm/variable_config.py +0 -0
  59. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/__init__.py +0 -0
  60. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/downloader.py +0 -0
  61. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/loader.py +0 -0
  62. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct02/variable_config.py +0 -0
  63. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/advanced/efi_tct16/__init__.py +0 -0
  64. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/downloader.py +0 -0
  65. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l1b/__init__.py +0 -0
  66. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/__init__.py +0 -0
  67. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/downloader.py +0 -0
  68. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/loader.py +0 -0
  69. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_hr/variable_config.py +0 -0
  70. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/__init__.py +0 -0
  71. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/downloader.py +0 -0
  72. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/loader.py +0 -0
  73. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l1b/mag_lr/variable_config.py +0 -0
  74. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2d/__init__.py +0 -0
  75. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/__init__.py +0 -0
  76. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/__init__.py +0 -0
  77. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/downloader.py +0 -0
  78. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/loader.py +0 -0
  79. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/aej_lpl/variable_config.py +0 -0
  80. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/__init__.py +0 -0
  81. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/downloader.py +0 -0
  82. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/loader.py +0 -0
  83. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_acc/variable_config.py +0 -0
  84. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/__init__.py +0 -0
  85. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/downloader.py +0 -0
  86. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/loader.py +0 -0
  87. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/dns_pod/variable_config.py +0 -0
  88. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/__init__.py +0 -0
  89. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/downloader.py +0 -0
  90. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/loader.py +0 -0
  91. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2daily/fac_tms/variable_config.py +0 -0
  92. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/l2l/__init__.py +0 -0
  93. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/loader.py +0 -0
  94. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/esa_eo/swarm/multimission/__init__.py +0 -0
  95. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/fmi/__init__.py +0 -0
  96. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/fmi/image/__init__.py +0 -0
  97. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/fmi/image/ie/__init__.py +0 -0
  98. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/fmi/image/ie/downloader.py +0 -0
  99. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/fmi/image/ie/loader.py +0 -0
  100. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/fmi/image/ie/variable_config.py +0 -0
  101. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/fmi/miracle/__init__.py +0 -0
  102. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/fmi/miracle/abk/__init__.py +0 -0
  103. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/fmi/miracle/kev/__init__.py +0 -0
  104. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/fmi/miracle/muo/__init__.py +0 -0
  105. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/__init__.py +0 -0
  106. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/downloader.py +0 -0
  107. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/hpo/__init__.py +0 -0
  108. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/hpo/downloader.py +0 -0
  109. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/hpo/loader.py +0 -0
  110. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/hpo/nowcast/__init__.py +0 -0
  111. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/hpo/nowcast/downloader.py +0 -0
  112. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/hpo/variable_config.py +0 -0
  113. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/kpap/__init__.py +0 -0
  114. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/kpap/downloader.py +0 -0
  115. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/kpap/loader.py +0 -0
  116. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/kpap/nowcast/__init__.py +0 -0
  117. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/kpap/nowcast/downloader.py +0 -0
  118. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/kpap/nowcast/loader.py +0 -0
  119. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/kpap/nowcast/variable_config.py +0 -0
  120. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/kpap/variable_config.py +0 -0
  121. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/snf107/__init__.py +0 -0
  122. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/snf107/loader.py +0 -0
  123. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/gfz/snf107/variable_config.py +0 -0
  124. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/isee/__init__.py +0 -0
  125. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/isee/gnss/__init__.py +0 -0
  126. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/isee/gnss/tecmap/__init__.py +0 -0
  127. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/isee/gnss/tecmap/downloader.py +0 -0
  128. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/isee/gnss/tecmap/loader.py +0 -0
  129. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/isee/gnss/tecmap/variable_config.py +0 -0
  130. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/__init__.py +0 -0
  131. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/ampere/__init__.py +0 -0
  132. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/ampere/downloader.py +0 -0
  133. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/ampere/fitted/__init__.py +0 -0
  134. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/ampere/fitted/loader.py +0 -0
  135. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/ampere/fitted/variable_config.py +0 -0
  136. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/ampere/grd/__init__.py +0 -0
  137. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/ampere/grd/downloader.py +0 -0
  138. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/ampere/grd/loader.py +0 -0
  139. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/ampere/grd/variable_config.py +0 -0
  140. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/dmsp/__init__.py +0 -0
  141. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/__init__.py +0 -0
  142. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/downloader.py +0 -0
  143. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/edraur/__init__.py +0 -0
  144. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/edraur/loader.py +0 -0
  145. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/edraur/variable_config.py +0 -0
  146. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/sdrdisk/__init__.py +0 -0
  147. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/sdrdisk/loader.py +0 -0
  148. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/jhuapl/dmsp/ssusi/sdrdisk/variable_config.py +0 -0
  149. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/__init__.py +0 -0
  150. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/downloader.py +0 -0
  151. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/gnss/__init__.py +0 -0
  152. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/gnss/tecmap/__init__.py +0 -0
  153. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/gnss/tecmap/downloader.py +0 -0
  154. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/gnss/tecmap/loader.py +0 -0
  155. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/gnss/tecmap/variable_config.py +0 -0
  156. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/__init__.py +0 -0
  157. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/eiscat/__init__.py +0 -0
  158. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/eiscat/downloader.py +0 -0
  159. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/eiscat/examples/__init__.py +0 -0
  160. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/eiscat/examples/eiscat_hdf5_info.py +0 -0
  161. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/eiscat/loader.py +0 -0
  162. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/eiscat/utilities.py +0 -0
  163. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/eiscat/variable_config.py +0 -0
  164. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/millstonehill/__init__.py +0 -0
  165. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/millstonehill/downloader.py +0 -0
  166. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/millstonehill/gridded/__init__.py +0 -0
  167. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/millstonehill/gridded/loader.py +0 -0
  168. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/millstonehill/gridded/variable_config.py +0 -0
  169. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/millstonehill/vi/__init__.py +0 -0
  170. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/millstonehill/vi/loader.py +0 -0
  171. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/millstonehill/vi/variable_config.py +0 -0
  172. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/pfisr/__init__.py +0 -0
  173. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/pfisr/downloader.py +0 -0
  174. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/downloader.py +0 -0
  175. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/pfisr/fitted/variable_config.py +0 -0
  176. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/downloader.py +0 -0
  177. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/loader.py +0 -0
  178. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/isr/pfisr/vi/variable_config.py +0 -0
  179. {geospacelab-0.10.2/geospacelab/datahub/sources/madrigal/satellites → geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/isr/risr_n}/__init__.py +0 -0
  180. {geospacelab-0.10.2/geospacelab/datahub/sources/nipr/asc → geospacelab-0.10.3/geospacelab/datahub/sources/madrigal/satellites}/__init__.py +0 -0
  181. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/satellites/dmsp/__init__.py +0 -0
  182. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/satellites/dmsp/downloader.py +0 -0
  183. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/satellites/dmsp/e/__init__.py +0 -0
  184. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/satellites/dmsp/e/loader.py +0 -0
  185. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/satellites/dmsp/e/variable_config.py +0 -0
  186. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s1/__init__.py +0 -0
  187. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s1/loader.py +0 -0
  188. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s1/variable_config.py +0 -0
  189. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s4/__init__.py +0 -0
  190. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s4/loader.py +0 -0
  191. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/satellites/dmsp/s4/variable_config.py +0 -0
  192. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/madrigal/utilities.py +0 -0
  193. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/ncei/__init__.py +0 -0
  194. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/ncei/dmsp/__init__.py +0 -0
  195. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/ncei/dmsp/downloader.py +0 -0
  196. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/__init__.py +0 -0
  197. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/downloader.py +0 -0
  198. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/loader.py +0 -0
  199. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/ncei/dmsp/ssm_mfr/variable_config.py +0 -0
  200. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/nipr/__init__.py +0 -0
  201. {geospacelab-0.10.2/geospacelab/datahub/sources/noaa → geospacelab-0.10.3/geospacelab/datahub/sources/nipr/asc}/__init__.py +0 -0
  202. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/nipr/asc/tro_wmi/__init__.py +0 -0
  203. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/nipr/asc/tro_wmi/loader.py +0 -0
  204. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/nipr/asc/tro_wmi/variable_config.py +0 -0
  205. {geospacelab-0.10.2/geospacelab/datahub/sources/noaa/swpc → geospacelab-0.10.3/geospacelab/datahub/sources/noaa}/__init__.py +0 -0
  206. {geospacelab-0.10.2/geospacelab/datahub/sources/noaa/swpc/goesxray → geospacelab-0.10.3/geospacelab/datahub/sources/noaa/swpc}/__init__.py +0 -0
  207. {geospacelab-0.10.2/geospacelab/datahub/sources/noaa/swpc/solarwind → geospacelab-0.10.3/geospacelab/datahub/sources/noaa/swpc/goesxray}/__init__.py +0 -0
  208. {geospacelab-0.10.2/geospacelab/future → geospacelab-0.10.3/geospacelab/datahub/sources/noaa/swpc/solarwind}/__init__.py +0 -0
  209. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/superdarn/__init__.py +0 -0
  210. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/superdarn/potmap/__init__.py +0 -0
  211. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/superdarn/potmap/downloader.py +0 -0
  212. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/superdarn/potmap/loader.py +0 -0
  213. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/superdarn/potmap/variable_config.py +0 -0
  214. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/supermag/__init__.py +0 -0
  215. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/supermag/indices/__init__.py +0 -0
  216. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/supermag/indices/downloader.py +0 -0
  217. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/supermag/indices/loader.py +0 -0
  218. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/supermag/indices/variable_config.py +0 -0
  219. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/supermag/magnetometer/__init__.py +0 -0
  220. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/supermag/magnetometer/downloader.py +0 -0
  221. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/supermag/magnetometer/loader.py +0 -0
  222. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/supermag/magnetometer/variable_config.py +0 -0
  223. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/supermag/supermag_api.py +0 -0
  224. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/supermag/utilities.py +0 -0
  225. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/__init__.py +0 -0
  226. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/champ/__init__.py +0 -0
  227. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/champ/dns_acc/__init__.py +0 -0
  228. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/champ/dns_acc/downloader.py +0 -0
  229. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/champ/dns_acc/loader.py +0 -0
  230. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/champ/dns_acc/variable_config.py +0 -0
  231. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/champ/wnd_acc/__init__.py +0 -0
  232. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/champ/wnd_acc/downloader.py +0 -0
  233. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/champ/wnd_acc/loader.py +0 -0
  234. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/champ/wnd_acc/variable_config.py +0 -0
  235. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/downloader.py +0 -0
  236. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/goce/__init__.py +0 -0
  237. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/__init__.py +0 -0
  238. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/downloader.py +0 -0
  239. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/loader.py +0 -0
  240. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/goce/dns_wnd_acc/variable_config.py +0 -0
  241. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace/__init__.py +0 -0
  242. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace/dns_acc/__init__.py +0 -0
  243. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace/dns_acc/downloader.py +0 -0
  244. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace/dns_acc/loader.py +0 -0
  245. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace/dns_acc/variable_config.py +0 -0
  246. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace/wnd_acc/__init__.py +0 -0
  247. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace/wnd_acc/downloader.py +0 -0
  248. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace/wnd_acc/loader.py +0 -0
  249. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace/wnd_acc/variable_config.py +0 -0
  250. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace_fo/__init__.py +0 -0
  251. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/__init__.py +0 -0
  252. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/downloader.py +0 -0
  253. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/loader.py +0 -0
  254. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace_fo/dns_acc/variable_config.py +0 -0
  255. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/__init__.py +0 -0
  256. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/downloader.py +0 -0
  257. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/loader.py +0 -0
  258. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/grace_fo/wnd_acc/variable_config.py +0 -0
  259. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/swarm/__init__.py +0 -0
  260. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/swarm/dns_acc/__init__.py +0 -0
  261. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/swarm/dns_acc/downloader.py +0 -0
  262. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/swarm/dns_acc/loader.py +0 -0
  263. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/swarm/dns_acc/variable_config.py +0 -0
  264. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/swarm/dns_pod/__init__.py +0 -0
  265. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/swarm/dns_pod/downloader.py +0 -0
  266. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/swarm/dns_pod/loader.py +0 -0
  267. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/tud/swarm/dns_pod/variable_config.py +0 -0
  268. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/__init__.py +0 -0
  269. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/ae/__init__.py +0 -0
  270. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/ae/downloader.py +0 -0
  271. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/ae/loader.py +0 -0
  272. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/ae/variable_config.py +0 -0
  273. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/asysym/__init__.py +0 -0
  274. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/asysym/downloader.py +0 -0
  275. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/asysym/loader.py +0 -0
  276. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/asysym/variable_config.py +0 -0
  277. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/dst/__init__.py +0 -0
  278. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/dst/downloader.py +0 -0
  279. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/dst/loader.py +0 -0
  280. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/datahub/sources/wdc/dst/variable_config.py +0 -0
  281. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/express/__init__.py +0 -0
  282. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/express/dmsp_dashboard.py +0 -0
  283. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/express/eiscat_dashboard.py +0 -0
  284. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/express/millstonehill_dashboard.py +0 -0
  285. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/express/omni_dashboard.py +0 -0
  286. {geospacelab-0.10.2/geospacelab/future/empiricalmodels → geospacelab-0.10.3/geospacelab/future}/__init__.py +0 -0
  287. {geospacelab-0.10.2/geospacelab/future/empiricalmodels/ovationprime2010 → geospacelab-0.10.3/geospacelab/future/empiricalmodels}/__init__.py +0 -0
  288. {geospacelab-0.10.2/geospacelab/future/satllites → geospacelab-0.10.3/geospacelab/future/empiricalmodels/ovationprime2010}/__init__.py +0 -0
  289. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/future/empiricalmodels/ovationprime2010/ovationprime.py +0 -0
  290. {geospacelab-0.10.2/geospacelab/observatory → geospacelab-0.10.3/geospacelab/future/satllites}/__init__.py +0 -0
  291. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/future/satllites/orbit_analyzer.py +0 -0
  292. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/future/test_sscws.py +0 -0
  293. {geospacelab-0.10.2/geospacelab/observatory/earth → geospacelab-0.10.3/geospacelab/observatory}/__init__.py +0 -0
  294. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/observatory/constants.py +0 -0
  295. {geospacelab-0.10.2/geospacelab/observatory/orbit → geospacelab-0.10.3/geospacelab/observatory/earth}/__init__.py +0 -0
  296. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/observatory/earth/_func.py +0 -0
  297. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/observatory/earth/constants.py +0 -0
  298. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/observatory/earth/geodesy.py +0 -0
  299. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/observatory/earth/sun_position.py +0 -0
  300. {geospacelab-0.10.2/geospacelab/observatory/site → geospacelab-0.10.3/geospacelab/observatory/orbit}/__init__.py +0 -0
  301. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/observatory/orbit/sc_orbit.py +0 -0
  302. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/observatory/orbit/utilities.py +0 -0
  303. {geospacelab-0.10.2/geospacelab/quantity → geospacelab-0.10.3/geospacelab/observatory/site}/__init__.py +0 -0
  304. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/observatory/site/mixins.py +0 -0
  305. {geospacelab-0.10.2/geospacelab/toolbox/unit → geospacelab-0.10.3/geospacelab/quantity}/__init__.py +0 -0
  306. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/toolbox/__init__.py +0 -0
  307. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/toolbox/io/__init__.py +0 -0
  308. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/toolbox/io/dialog.py +0 -0
  309. {geospacelab-0.10.2/geospacelab/visualization/plotly → geospacelab-0.10.3/geospacelab/toolbox/unit}/__init__.py +0 -0
  310. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/toolbox/utilities/__init__.py +0 -0
  311. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/toolbox/utilities/numpyarray.py +0 -0
  312. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/toolbox/utilities/numpymath.py +0 -0
  313. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/toolbox/utilities/pybasic.py +0 -0
  314. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/toolbox/utilities/pyclass.py +0 -0
  315. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/toolbox/utilities/pydatetime.py +0 -0
  316. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/toolbox/utilities/pylogging.py +0 -0
  317. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/toolbox/utilities/pyos.py +0 -0
  318. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/__init__.py +0 -0
  319. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/__base__.py +0 -0
  320. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/__init__.py +0 -0
  321. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/_helpers.py +0 -0
  322. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/axes.py +0 -0
  323. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/axis_ticks.py +0 -0
  324. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/colormaps.py +0 -0
  325. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/dashboards.py +0 -0
  326. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/figure.py +0 -0
  327. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/geomap/__base__.py +0 -0
  328. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/geomap/__init__.py +0 -0
  329. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/geomap/geodashboards.py +0 -0
  330. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/mpl/geomap/geopanels.py +0 -0
  331. {geospacelab-0.10.2/geospacelab/wrapper → geospacelab-0.10.3/geospacelab/visualization/plotly}/__init__.py +0 -0
  332. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/visualization/plotly/ipanel.py +0 -0
  333. {geospacelab-0.10.2/geospacelab/wrapper/geopack → geospacelab-0.10.3/geospacelab/wrapper}/__init__.py +0 -0
  334. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/wrapper/geopack/LICENSE +0 -0
  335. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/wrapper/geopack/README.md +0 -0
  336. {geospacelab-0.10.2/geospacelab/wrapper/geopack → geospacelab-0.10.3/geospacelab/wrapper}/geopack/__init__.py +0 -0
  337. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/wrapper/geopack/geopack/geopack.py +0 -0
  338. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/wrapper/geopack/geopack/igrf13coeffs.txt +0 -0
  339. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/wrapper/geopack/geopack/t01.py +0 -0
  340. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/wrapper/geopack/geopack/t04.py +0 -0
  341. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/wrapper/geopack/geopack/t89.py +0 -0
  342. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/wrapper/geopack/geopack/t96.py +0 -0
  343. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/wrapper/geopack/geopack/test_geopack1.md +0 -0
  344. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab/wrapper/geopack/geopack/test_geopack1.py +0 -0
  345. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab.egg-info/dependency_links.txt +0 -0
  346. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab.egg-info/requires.txt +0 -0
  347. {geospacelab-0.10.2 → geospacelab-0.10.3}/geospacelab.egg-info/top_level.txt +0 -0
  348. {geospacelab-0.10.2 → geospacelab-0.10.3}/setup.cfg +0 -0
  349. {geospacelab-0.10.2 → geospacelab-0.10.3}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: geospacelab
3
- Version: 0.10.2
3
+ Version: 0.10.3
4
4
  Summary: Collect, manage, and visualize geospace data.
5
5
  Home-page: https://github.com/JouleCai/geospacelab
6
6
  Author: Lei Cai
@@ -64,7 +64,6 @@ Dynamic: summary
64
64
  [![DOI](https://zenodo.org/badge/347315860.svg)](https://zenodo.org/badge/latestdoi/347315860)
65
65
  [![Downloads](https://pepy.tech/badge/geospacelab)](https://pepy.tech/project/geospacelab)
66
66
  ![](https://tokei.rs/b1/github/JouleCai/geospacelab)
67
- [![PyPI version fury.io](https://badge.fury.io/py/ansicolortags.svg)](https://pypi.python.org/pypi/geospacelab/)
68
67
 
69
68
 
70
69
  GeospaceLAB provides a framework of data access, analysis, and visualization for the researchers in space physics and space weather. The documentation can be found
@@ -8,7 +8,6 @@
8
8
  [![DOI](https://zenodo.org/badge/347315860.svg)](https://zenodo.org/badge/latestdoi/347315860)
9
9
  [![Downloads](https://pepy.tech/badge/geospacelab)](https://pepy.tech/project/geospacelab)
10
10
  ![](https://tokei.rs/b1/github/JouleCai/geospacelab)
11
- [![PyPI version fury.io](https://badge.fury.io/py/ansicolortags.svg)](https://pypi.python.org/pypi/geospacelab/)
12
11
 
13
12
 
14
13
  GeospaceLAB provides a framework of data access, analysis, and visualization for the researchers in space physics and space weather. The documentation can be found
@@ -6,7 +6,7 @@ __author__ = "Lei Cai"
6
6
  __copyright__ = "Copyright 2021, GeospaceLAB"
7
7
  __credits__ = ["Lei Cai"]
8
8
  __license__ = "BSD-3-Clause License"
9
- __version__ = "0.10.2"
9
+ __version__ = "0.10.3"
10
10
  __maintainer__ = "Lei Cai"
11
11
  __email__ = "lei.cai@oulu.fi"
12
12
  __status__ = "Developing"
@@ -43,7 +43,7 @@ default_dataset_attrs = {
43
43
  }
44
44
 
45
45
  default_variable_names = [
46
- 'DATETIME', 'AZ', 'AZ1', 'AZ2', 'EL', 'EL1', 'EL2', 'PULSE_LENGTH',
46
+ 'DATETIME', 'DATETIME_1', 'DATETIME_2', 'AZ', 'AZ1', 'AZ2', 'EL', 'EL1', 'EL2', 'PULSE_LENGTH',
47
47
  'T_SYS', 'POWER_NORM', 'P_Tx', 'MODE_TYPE', 'POWER_LENGTH_F',
48
48
  'LAG_SPACING', 'IPP', 'f_Tx', 'v_PHASE_Tx', 'v_PHASE_Tx_err',
49
49
  'SCAN_TYPE', 'CYCN', 'POSN', 'RANGE_RES', 'RANGE',
@@ -52,7 +52,7 @@ default_variable_names = [
52
52
  'n_e_err', 'T_i', 'T_i_err', 'T_r', 'T_r_err', 'T_e', 'T_e_err',
53
53
  'nu_i', 'nu_i_err', 'v_i_los', 'v_i_los_err', 'comp_H_p',
54
54
  'comp_H_p_err', 'comp_mix', 'comp_mix_err', 'v_DOP_los', 'v_DOP_los_err',
55
- 'HEIGHT'
55
+ 'HEIGHT',
56
56
  ]
57
57
 
58
58
  # default_data_search_recursive = True
@@ -0,0 +1,396 @@
1
+ # Licensed under the BSD 3-Clause License
2
+ # Copyright (C) 2021 GeospaceLab (geospacelab)
3
+ # Author: Lei Cai, Space Physics and Astronomy, University of Oulu
4
+
5
+ __author__ = "Lei Cai"
6
+ __copyright__ = "Copyright 2021, GeospaceLab"
7
+ __license__ = "BSD-3-Clause License"
8
+ __email__ = "lei.cai@oulu.fi"
9
+ __docformat__ = "reStructureText"
10
+
11
+
12
+ import h5py
13
+ import numpy as np
14
+ import cftime
15
+ import re
16
+ import datetime
17
+
18
+ import geospacelab.toolbox.utilities.pylogging as mylog
19
+ import geospacelab.toolbox.utilities.pydatetime as dttool
20
+
21
+ pulse_code_dict = {
22
+ 'alternating': 97,
23
+ 'barker': 98,
24
+ 'single pulse': 115,
25
+ }
26
+
27
+ antenna_code_dict = {
28
+ 'zenith': 32,
29
+ 'misa': 31,
30
+ }
31
+
32
+ antenna_code_dict_r = {v: k for k, v in antenna_code_dict.items()}
33
+ pulse_code_dict_r = {v: k for k, v in pulse_code_dict.items()}
34
+
35
+ var_name_dict = {
36
+ 'AZ1': 'az1',
37
+ 'AZ2': 'az2',
38
+ 'EL1': 'el1',
39
+ 'EL2': 'el2',
40
+ 'PULSE_LENGTH': 'pl',
41
+ 'T_SYS': 'systmp',
42
+ 'POWER_NORM': 'pnrmd',
43
+ 'P_Tx': 'power',
44
+ 'MODE_TYPE': 'mdtyp',
45
+ 'POWER_LENGTH_F': 'pulf',
46
+ 'LAG_SPACING': 'dtau',
47
+ 'IPP': 'ipp',
48
+ 'f_Tx': 'tfreq',
49
+ 'v_PHASE_Tx': 'vtx',
50
+ 'v_PHASE_Tx_err': 'dvtx',
51
+ 'SCAN_TYPE': 'scntyp',
52
+ 'CYCN': 'cycn',
53
+ 'POSN': 'posn',
54
+ 'RANGE_RES': 'mresl',
55
+ 'RANGE': 'range',
56
+ 'SNR': 'snp3',
57
+ 'RESIDUAL': 'wchsq',
58
+ 'STATUS': 'gfit',
59
+ 'FIT_TYPE': 'fit_type',
60
+ 'FPI_QUALITY': 'fpi_dataqual',
61
+ 'ACF_NORM': 'fa',
62
+ 'ACF_NORM_ERR': 'dfa',
63
+ 'n_pp': 'popl',
64
+ 'n_pp_err': 'dpopl',
65
+ 'n_e': 'ne',
66
+ 'n_e_err': 'dne',
67
+ 'T_i': 'ti',
68
+ 'T_i_err': 'dti',
69
+ 'T_r': 'tr',
70
+ 'T_r_err': 'dtr',
71
+ 'nu_i': 'co',
72
+ 'nu_i_err': 'dco',
73
+ 'v_i_los': 'vo',
74
+ 'v_i_los_err': 'dvo',
75
+ 'comp_H_p': 'ph+',
76
+ 'comp_H_p_err': 'dph+',
77
+ 'comp_mix': 'pm',
78
+ 'comp_mix_err': 'dpm',
79
+ 'v_DOP_los': 'vdopp',
80
+ 'v_DOP_los_err': 'dvdopp',
81
+ 'HEIGHT': 'gdalt'
82
+ }
83
+
84
+
85
+ class Loader:
86
+ """
87
+ :param file_path: the file's full path
88
+ :type file_path: pathlib.Path object
89
+ :param file_type: the specific file type for the file being loaded. Options: ['TEC-MAT'], 'TEC-LOS', 'TEC-sites')
90
+ :type file_type: str
91
+ :param load_data: True, load without calling the method "load_data" separately.
92
+ :type load_data: bool
93
+ """
94
+ def __init__(self, file_path, antenna='', pulse_code='', pulse_length=0, load_data=True):
95
+ self.file_path = file_path
96
+ self.antenna = antenna
97
+ self.pulse_code = pulse_code
98
+ self.pulse_length = pulse_length
99
+ self.variables = {}
100
+ self.metadata = {}
101
+
102
+ self.done = False
103
+ if load_data:
104
+ self.load_from_table_layout()
105
+
106
+
107
+ def load_from_table_layout(self):
108
+ variables = {}
109
+
110
+ with h5py.File(self.file_path, 'r') as fh5:
111
+ table = fh5['Data']['Table Layout'][::]
112
+ table_dtype = table.dtype
113
+
114
+ # Get variable names
115
+ table_var_names = list(table_dtype.fields.keys())
116
+ # Get table data
117
+ table_data = list(zip(*table))
118
+ table_vars = {k: np.array(table_data[table_var_names.index(k)]) for k in table_var_names}
119
+ # Check modes
120
+ antenna_codes = table_vars['kinst'] = table_vars['kinst'].astype(np.int32)
121
+ pulse_lengths = table_vars['pl'] = table_vars['pl'] * 1e6
122
+ pulse_codes = table_vars['mdtyp'] = table_vars['mdtyp'].astype(np.int32)
123
+ modes_ = list(zip(antenna_codes, pulse_codes, pulse_lengths))
124
+ modes = np.empty(len(modes_), dtype=object)
125
+ modes[:] = modes_
126
+ modes_unique = self.get_modes(modes)
127
+
128
+ mode = self.validate_mode(modes_unique)
129
+
130
+ inds_mode = np.where((antenna_codes==mode[0]) & (pulse_codes==mode[1]) & (pulse_lengths==mode[2]) )[0]
131
+
132
+ self.metadata['antenna'] = antenna_code_dict_r[mode[0]]
133
+ self.metadata['pulse_code'] = pulse_code_dict_r[mode[1]]
134
+ self.metadata['pulse_length'] = mode[2]
135
+
136
+ # Grid data
137
+ ut_unix_1 = table_vars['ut1_unix'][inds_mode]
138
+ ut_unix_1_unique = np.unique(ut_unix_1)
139
+ num_ut = len(ut_unix_1_unique)
140
+ vars_fh5 = {}
141
+ if len(ut_unix_1) % num_ut == 0:
142
+ num_gate = int(len(ut_unix_1) / num_ut)
143
+
144
+ for k, v in table_vars.items():
145
+ vars_fh5[k] = v[inds_mode].reshape((num_ut, num_gate))
146
+ else:
147
+ gate_inds = []
148
+ gate_nums = []
149
+ for t in ut_unix_1_unique:
150
+ ii = np.where(ut_unix_1==t)[0]
151
+ ran = table_vars['range'][inds_mode][ii]
152
+ diff_ran = np.diff(ran)
153
+ if any(diff_ran < 0): # duplicated ranges
154
+ iii = range(np.where(diff_ran<0)[0][0]+1)
155
+ ii = ii[iii]
156
+ gate_inds.append(ii)
157
+
158
+ gate_nums.append(len(gate_inds[-1]))
159
+ max_gate_num = np.max(gate_nums)
160
+
161
+ for k, v in table_vars.items():
162
+ vars_fh5[k] = np.empty((num_ut, max_gate_num))
163
+ vars_fh5[k][::] = np.nan
164
+ for i, inds in enumerate(gate_inds):
165
+ vars_fh5[k][i, 0:len(inds)] = v[inds_mode][inds]
166
+
167
+ # Assign data
168
+ records = fh5['Metadata']['_record_layout'][0]
169
+ rec_var_names = np.array(list(records.dtype.fields.keys()))
170
+ rec_vars = {str(rec_var_names[i]): int(records[i]) for i in range(len(rec_var_names))}
171
+ for var_name, var_name_fh5 in var_name_dict.items():
172
+ if var_name_fh5 not in vars_fh5.keys():
173
+ mylog.StreamLogger.warning(f"The requested variable {var_name_fh5} does not exist in the data file!")
174
+ variables[var_name] = None
175
+ continue
176
+ if rec_vars[var_name_fh5] == 1:
177
+ variables[var_name] = vars_fh5[var_name_fh5][:, 0][:, np.newaxis]
178
+ else:
179
+ variables[var_name] = vars_fh5[var_name_fh5]
180
+
181
+ variables['comp_O_p'] = 1. - variables['comp_mix'] - variables['comp_H_p']
182
+ variables['comp_O_p_err'] = np.sqrt(variables['comp_mix_err']**2 + variables['comp_H_p_err']**2)
183
+
184
+ # need to be check when AZ close to 0.
185
+ variables['AZ1'] = variables['AZ1'] % 360.
186
+ variables['AZ2'] = variables['AZ2'] % 360.
187
+ variables['AZ'] = (variables['AZ1'] + variables['AZ2']) / 2
188
+ diff_az = np.abs(variables['AZ1'] - variables['AZ2'])
189
+ variables['AZ'] = np.where(diff_az<180, variables['AZ'], ((variables['AZ1'] + variables['AZ2'] + 360) / 2) % 360)
190
+ variables['EL'] = (variables['EL1'] + variables['EL2']) / 2
191
+
192
+ variables['DATETIME_1'] = dttool.convert_unix_time_to_datetime_cftime(vars_fh5['ut1_unix'][:, 0])[:, np.newaxis]
193
+ variables['DATETIME_2'] = dttool.convert_unix_time_to_datetime_cftime(vars_fh5['ut2_unix'][:, 0])[:, np.newaxis]
194
+ variables['DATETIME'] = variables['DATETIME_1'] + (variables['DATETIME_2'] - variables['DATETIME_1']) / 2
195
+ variables['T_e'] = variables['T_i'] * variables['T_r']
196
+ variables['T_e_err'] = variables['T_e'] * np.sqrt((variables['T_i_err'] / variables['T_i']) ** 2
197
+ + (variables['T_r_err'] / variables['T_r']) ** 2)
198
+ self.variables = variables
199
+
200
+ return
201
+
202
+ def validate_mode(self, modes_unique):
203
+ mode = None
204
+
205
+ # Check antenna
206
+ modes_antenna_matched = []
207
+ try:
208
+ for m in modes_unique:
209
+ if m[0] == antenna_code_dict[self.antenna]:
210
+ modes_antenna_matched.append(m)
211
+ if len(modes_antenna_matched) == 0:
212
+ raise KeyError
213
+ elif len(modes_antenna_matched) == 1:
214
+ if str(self.pulse_code):
215
+ if pulse_code_dict[self.pulse_code] != modes_antenna_matched[0][1]:
216
+ raise ValueError
217
+ if self.pulse_length > 0:
218
+ if self.pulse_length != modes_antenna_matched[0][2]:
219
+ raise ValueError
220
+ return modes_antenna_matched[0]
221
+ else:
222
+ pass
223
+ except Exception as e:
224
+ if str(self.antenna):
225
+ mylog.StreamLogger.error("Antenna {} is not found!".format(self.antenna.upper()))
226
+ else:
227
+ mylog.StreamLogger.error("Antenna must be specified!")
228
+ self.list_modes()
229
+ return None
230
+
231
+ modes_pulse_code_matched = []
232
+ try:
233
+ for m in modes_antenna_matched:
234
+ if m[1] == pulse_code_dict[self.pulse_code]:
235
+ modes_pulse_code_matched.append(m)
236
+ if len(modes_pulse_code_matched) == 0:
237
+ raise KeyError
238
+ elif len(modes_pulse_code_matched) == 1:
239
+ if self.pulse_length > 0:
240
+ if self.pulse_length != modes_antenna_matched[0][2]:
241
+ raise ValueError
242
+ return modes_pulse_code_matched[0]
243
+ else:
244
+ pass
245
+ except Exception as e:
246
+ if str(self.pulse_code):
247
+ mylog.StreamLogger.error("Pulse code {} is not found!".format(self.pulse_code.upper()))
248
+ else:
249
+ mylog.StreamLogger.error("Pulse code must be specified!")
250
+ self.list_modes()
251
+ return None
252
+
253
+ modes_pulse_length_matched = []
254
+ try:
255
+ for m in modes_pulse_code_matched:
256
+ if m[2] == self.pulse_length:
257
+ modes_pulse_length_matched.append(m)
258
+ if len(modes_pulse_length_matched) == 0:
259
+ raise ValueError
260
+ elif len(modes_pulse_length_matched) == 1:
261
+ return modes_pulse_length_matched[0]
262
+ else:
263
+ mylog.StreamLogger.error("Multiple modes found!")
264
+ raise ValueError
265
+ except Exception as e:
266
+ if self.pulse_length > 0:
267
+ mylog.StreamLogger.error("Pulse length {} is not found!".format(self.pulse_code.upper()))
268
+ else:
269
+ mylog.StreamLogger.error("Pulse length must be specified!")
270
+ self.list_modes()
271
+ return None
272
+ return mode
273
+
274
+ def list_modes(self):
275
+ mylog.simpleinfo.info("List of the experiment modes:")
276
+
277
+ for i, m in enumerate(self.metadata['MODES']):
278
+ s = '{}, '.format(i)
279
+ for k, v in m.items():
280
+ s = s + "{}: {}, ".format(k, v)
281
+ mylog.simpleinfo.info(s)
282
+ return
283
+ def get_modes(self, modes):
284
+
285
+ modes_unique = np.unique(modes)
286
+
287
+ self.metadata['MODES'] = []
288
+ num_modes = self.metadata['NUM_MODES'] = len(modes_unique)
289
+ for i in range(num_modes):
290
+ self.metadata['MODES'].append({
291
+ 'ANTENNA_ID': modes_unique[i][0],
292
+ 'ANTENNA': antenna_code_dict_r[modes_unique[i][0]],
293
+ 'PULSE_CODE_ID': modes_unique[i][1],
294
+ 'PULSE_CODE': pulse_code_dict_r[modes_unique[i][1]],
295
+ 'PULSE_LENGTH': modes_unique[i][2]
296
+ })
297
+ return modes_unique
298
+
299
+ def load(self):
300
+ variables = {}
301
+ metadata = {}
302
+ with h5py.File(self.file_path, 'r') as fh5:
303
+ data_fh5 = fh5['Data']
304
+ array_layouts = list(data_fh5['Array Layout'].keys())
305
+
306
+ antenna_codes = []
307
+ pulse_codes = []
308
+ pulse_lengths = []
309
+ match = 0
310
+ ind_array = None
311
+ for i, array_layout_str in enumerate(array_layouts):
312
+ res = re.search(r'kinst=([\d.]+).*mdtyp=([\d.]+).*pl=([\d.]+)', array_layout_str)
313
+ antenna_code = int(float(res.groups()[0]))
314
+ pulse_code = int(float(res.groups()[1]))
315
+ pulse_length = float(res.groups()[2]) * 1e6
316
+ antenna_codes.append(antenna_code)
317
+ pulse_codes.append(pulse_code)
318
+ pulse_lengths.append(pulse_length)
319
+ if not str(self.antenna) or not str(self.pulse_code) or self.pulse_length == 0:
320
+ continue
321
+ if antenna_code != antenna_code_dict[self.antenna] or \
322
+ pulse_code != pulse_code_dict[self.pulse_code] or \
323
+ pulse_length != self.pulse_length:
324
+ continue
325
+ match = match + 1
326
+ ind_array = i
327
+ antenna_code_dict_r = {v: k for k, v in antenna_code_dict.items()}
328
+ pulse_code_dict_r = {v: k for k, v in pulse_code_dict.items()}
329
+ if match != 1:
330
+ mylog.StreamLogger.error("The inputs do not match the Array Layouts! Check the Array Layout info below:")
331
+ mylog.simpleinfo.info(
332
+ "{:10s}{:20s}{:30s}{:30s}".format(
333
+ 'No.',
334
+ 'antenna',
335
+ 'pulse_code',
336
+ 'pulse_length',
337
+ )
338
+ )
339
+ for ind, (antenna_code, pulse_code, pulse_length) \
340
+ in enumerate(zip(antenna_codes, pulse_codes, pulse_lengths)):
341
+
342
+ mylog.simpleinfo.info(
343
+ "{:<10d}{:20s}{:30s}{:<30f}".format(
344
+ ind+1,
345
+ antenna_code_dict_r[antenna_code],
346
+ pulse_code_dict_r[pulse_code],
347
+ pulse_length,
348
+ )
349
+ )
350
+ raise ValueError("Check the message above!")
351
+
352
+ metadata['antenna'] = antenna_code_dict_r[antenna_codes[ind_array]]
353
+ metadata['pulse_code'] = pulse_code_dict_r[pulse_codes[ind_array]]
354
+ metadata['pulse_length'] = pulse_lengths[ind_array]
355
+
356
+ vars_fh5 = {}
357
+ array_layout_str = array_layouts[ind_array]
358
+ fh5_vars_1d = data_fh5['Array Layout'][array_layout_str]['1D Parameters']
359
+ for var_name in fh5_vars_1d.keys():
360
+ if var_name == 'Data Parameters':
361
+ continue
362
+ vars_fh5[var_name] = np.array(fh5_vars_1d[var_name])[:, np.newaxis]
363
+ fh5_vars_2d = data_fh5['Array Layout'][array_layout_str]['2D Parameters']
364
+ for var_name in fh5_vars_2d.keys():
365
+ if var_name == 'Data Parameters':
366
+ continue
367
+ vars_fh5[var_name] = np.array(fh5_vars_2d[var_name]).T
368
+ vars_fh5['range'] = np.array(data_fh5['Array Layout'][array_layout_str]['range'])[np.newaxis, :]
369
+ vars_fh5['timestamps'] = np.array(data_fh5['Array Layout'][array_layout_str]['timestamps'])[:, np.newaxis]
370
+ for var_name, var_name_fh5 in var_name_dict.items():
371
+ if var_name_fh5 not in vars_fh5.keys():
372
+ mylog.StreamLogger.warning(f"The requested variable {var_name_fh5} does not exist in the data file!")
373
+ variables[var_name] = None
374
+ continue
375
+ variables[var_name] = vars_fh5[var_name_fh5]
376
+
377
+ variables['comp_O_p'] = 1. - variables['comp_mix'] - variables['comp_H_p']
378
+ variables['comp_O_p_err'] = np.sqrt(variables['comp_mix_err']**2 + variables['comp_H_p_err']**2)
379
+
380
+ # need to be check when AZ close to 0.
381
+ variables['AZ1'] = variables['AZ1'] % 360.
382
+ variables['AZ2'] = variables['AZ2'] % 360.
383
+ variables['AZ'] = (variables['AZ1'] + variables['AZ2']) / 2
384
+ diff_az = np.abs(variables['AZ1'] - variables['AZ2'])
385
+ variables['AZ'] = np.where(diff_az<180, variables['AZ'], ((variables['AZ1'] + variables['AZ2'] + 360) / 2) % 360)
386
+ variables['EL'] = (variables['EL1'] + variables['EL2']) / 2
387
+
388
+ variables['RANGE'] = np.tile(vars_fh5['range'], [variables['n_e'].shape[0], 1])
389
+ variables['DATETIME'] = dttool.convert_unix_time_to_datetime_cftime(vars_fh5['timestamps'])
390
+ variables['T_e'] = variables['T_i'] * variables['T_r']
391
+ variables['T_e_err'] = variables['T_e'] * np.sqrt((variables['T_i_err'] / variables['T_i']) ** 2
392
+ + (variables['T_r_err'] / variables['T_r']) ** 2)
393
+
394
+ self.variables = variables
395
+ self.metadata = metadata
396
+
@@ -87,7 +87,7 @@ axis[1].data = "@d.HEIGHT.value"
87
87
  axis[2].data = "@v.value"
88
88
  axis[1].label = 'h'
89
89
  axis[1].unit = 'km'
90
- axis[2].lim = [8e9, 9e11]
90
+ axis[2].lim = [8e9, 3e12]
91
91
  axis[2].scale = 'log'
92
92
  axis[2].label = '@v.label'
93
93
  axis[2].unit = '@v.unit_label'
@@ -232,9 +232,8 @@ class Dataset(datahub.DatasetSourced):
232
232
  search_pattern = "*EID-*/"
233
233
  exp_dirs = list(initial_file_dir.glob(search_pattern))
234
234
 
235
- if not list(exp_dirs):
236
- done = False
237
- continue
235
+ if not list(exp_dirs) and self.allow_download:
236
+ self.download_data()
238
237
 
239
238
  def dir_parser(dirs):
240
239
  dirs_out = []
@@ -252,9 +251,8 @@ class Dataset(datahub.DatasetSourced):
252
251
  return dirs_out
253
252
  file_dirs = dir_parser(exp_dirs)
254
253
 
255
- if not list(file_dirs):
256
- done=False
257
- continue
254
+ if not list(file_dirs) and self.allow_download:
255
+ self.download_data()
258
256
 
259
257
  for fd in file_dirs:
260
258
  if isinstance(self.exp_name_pattern, list):
@@ -281,7 +279,7 @@ class Dataset(datahub.DatasetSourced):
281
279
  initial_file_dir=fd, search_pattern=search_pattern,
282
280
  allow_multiple_files=True, recursive=recursive)
283
281
 
284
- # Validate file paths
282
+ # Validate file paths
285
283
 
286
284
  if not done and self.allow_download:
287
285
  done = self.download_data()
@@ -141,6 +141,12 @@ class Loader:
141
141
 
142
142
  return metadata
143
143
 
144
+ def load_from_table_layout(self):
145
+ variables = {}
146
+ metadata = {}
147
+
148
+
149
+
144
150
  def load(self):
145
151
  variables = {}
146
152
  metadata = {}
@@ -217,9 +223,3 @@ class Loader:
217
223
  self.beam_el = np.nanmedian(variables['EL'])
218
224
 
219
225
  self.metadata = metadata
220
-
221
-
222
- if __name__ == "__main__":
223
- import pathlib
224
- fp = pathlib.Path("/home/lei/Downloads/pfa140102.002.hdf5")
225
- Loader(file_path=fp, beam_az=290.5, beam_el=70.)
@@ -159,9 +159,8 @@ class Dataset(datahub.DatasetSourced):
159
159
  search_pattern = "*EID-*/"
160
160
  exp_dirs = list(initial_file_dir.glob(search_pattern))
161
161
 
162
- if not list(exp_dirs):
163
- done = False
164
- continue
162
+ if not list(exp_dirs) and self.allow_download:
163
+ self.download_data()
165
164
 
166
165
  def dir_parser(dirs):
167
166
  dirs_out = []
@@ -180,9 +179,8 @@ class Dataset(datahub.DatasetSourced):
180
179
 
181
180
  file_dirs = dir_parser(exp_dirs)
182
181
 
183
- if not list(file_dirs):
184
- done = False
185
- continue
182
+ if not list(file_dirs) and self.allow_download:
183
+ self.download_data()
186
184
 
187
185
  for fd in file_dirs:
188
186
  if isinstance(self.exp_name_pattern, list):