geospacelab 0.10.4__py3-none-any.whl → 0.11.0__py3-none-any.whl
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.
- geospacelab/__init__.py +1 -1
- geospacelab/datahub/__variable_base__.py +2 -2
- geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/__init__.py +2 -0
- geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/loader.py +84 -83
- geospacelab/datahub/sources/cdaweb/omni/loader.py +2 -0
- geospacelab/datahub/sources/madrigal/gnss/tecmap/loader.py +1 -0
- geospacelab/visualization/mpl/__base__.py +24 -16
- geospacelab/visualization/mpl/geomap/geopanels.py +11 -1
- {geospacelab-0.10.4.dist-info → geospacelab-0.11.0.dist-info}/METADATA +1 -1
- {geospacelab-0.10.4.dist-info → geospacelab-0.11.0.dist-info}/RECORD +13 -13
- {geospacelab-0.10.4.dist-info → geospacelab-0.11.0.dist-info}/WHEEL +1 -1
- {geospacelab-0.10.4.dist-info → geospacelab-0.11.0.dist-info}/licenses/LICENSE +0 -0
- {geospacelab-0.10.4.dist-info → geospacelab-0.11.0.dist-info}/top_level.txt +0 -0
geospacelab/__init__.py
CHANGED
|
@@ -6,7 +6,7 @@ __author__ = "Lei Cai"
|
|
|
6
6
|
__copyright__ = "Copyright 2021, GeospaceLAB"
|
|
7
7
|
__credits__ = ["Lei Cai"]
|
|
8
8
|
__license__ = "BSD-3-Clause License"
|
|
9
|
-
__version__ = "0.
|
|
9
|
+
__version__ = "0.11.0"
|
|
10
10
|
__maintainer__ = "Lei Cai"
|
|
11
11
|
__email__ = "lei.cai@oulu.fi"
|
|
12
12
|
__status__ = "Developing"
|
|
@@ -461,9 +461,9 @@ class VariableBase(object):
|
|
|
461
461
|
:return:
|
|
462
462
|
"""
|
|
463
463
|
if issubclass(var_new.__class__, VariableBase):
|
|
464
|
-
v = var_new.value
|
|
464
|
+
v = copy.deepcopy(var_new.value)
|
|
465
465
|
else:
|
|
466
|
-
v = var_new
|
|
466
|
+
v = copy.deepcopy(var_new)
|
|
467
467
|
|
|
468
468
|
if self.value is None:
|
|
469
469
|
self.value = v
|
|
@@ -121,6 +121,8 @@ class Dataset(datahub.DatasetSourced):
|
|
|
121
121
|
self.orbit_id = self.orbit_id[0]
|
|
122
122
|
if self.time_clip:
|
|
123
123
|
self.time_filter_by_range()
|
|
124
|
+
|
|
125
|
+
del load_obj
|
|
124
126
|
|
|
125
127
|
def get_time_ind(self, ut, time_res=20*60, var_datetime_name='DATETIME', edge_cutoff=False, **kwargs):
|
|
126
128
|
ind = super().get_time_ind(ut, time_res=time_res, var_datetime_name=var_datetime_name, edge_cutoff=edge_cutoff, **kwargs)
|
|
@@ -21,92 +21,93 @@ class Loader(object):
|
|
|
21
21
|
self.load_data()
|
|
22
22
|
|
|
23
23
|
def load_data(self):
|
|
24
|
-
dataset = netCDF4.Dataset(self.file_path)
|
|
25
24
|
variables = {}
|
|
26
25
|
metadata = {}
|
|
26
|
+
with netCDF4.Dataset(self.file_path) as dataset:
|
|
27
|
+
|
|
28
|
+
if self.pole == 'N':
|
|
29
|
+
pole = self.pole
|
|
30
|
+
pole_str = 'NORTH'
|
|
31
|
+
elif self.pole == 'S':
|
|
32
|
+
pole = self.pole
|
|
33
|
+
pole_str = 'SOUTH'
|
|
34
|
+
else:
|
|
35
|
+
raise ValueError
|
|
36
|
+
# Time and Position
|
|
37
|
+
# sectime = int(np.array(dataset.variables['TIME']).flatten()[0])
|
|
38
|
+
# doy = int(np.array(dataset.variables['DOY']).flatten()[0])
|
|
39
|
+
# year = int(np.array(dataset.variables['YEAR']).flatten()[0])
|
|
40
|
+
# dt0 = dttool.convert_doy_to_datetime(year, doy)
|
|
41
|
+
starting_time = datetime.datetime.strptime(dataset.STARTING_TIME, "%Y%j%H%M%S")
|
|
42
|
+
variables['STARTING_TIME'] = starting_time
|
|
43
|
+
stopping_time = datetime.datetime.strptime(dataset.STOPPING_TIME, "%Y%j%H%M%S")
|
|
44
|
+
variables['STOPPING_TIME'] = stopping_time
|
|
45
|
+
dt0 = dttool.get_start_of_the_day(starting_time)
|
|
46
|
+
|
|
47
|
+
variables['SC_LAT'] = np.array(dataset.variables['LATITUDE'])
|
|
48
|
+
variables['SC_LON'] = np.array(dataset.variables['LONGITUDE'])
|
|
49
|
+
variables['SC_ALT'] = np.array(dataset.variables['ALTITUDE'])
|
|
50
|
+
|
|
51
|
+
variables['GRID_MLAT'] = np.array(dataset.variables['LATITUDE_GEOMAGNETIC_GRID_MAP'])
|
|
52
|
+
variables['GRID_MLON'] = np.array(
|
|
53
|
+
dataset.variables['LONGITUDE_GEOMAGNETIC_' + pole_str + '_GRID_MAP'])
|
|
54
|
+
variables['GRID_MLT'] = np.array(dataset.variables['MLT_GRID_MAP'])
|
|
55
|
+
if self.pole == 'S':
|
|
56
|
+
variables['GRID_MLAT'] = - variables['GRID_MLAT']
|
|
57
|
+
variables['GRID_UT'] = np.array(dataset.variables['UT_' + pole])
|
|
58
|
+
lat = np.array(variables['GRID_MLAT'])
|
|
59
|
+
ut = np.array(variables['GRID_UT'])
|
|
60
|
+
lat = np.where(ut == 0, np.nan, lat)
|
|
61
|
+
if self.pole == 'N':
|
|
62
|
+
ind_mid_t = np.where(lat == np.nanmax(lat.flatten()))
|
|
63
|
+
else:
|
|
64
|
+
ind_mid_t = np.where(lat == np.nanmin(lat.flatten()))
|
|
65
|
+
sectime0 = variables['GRID_UT'][ind_mid_t][0] * 3600
|
|
66
|
+
|
|
67
|
+
diff_days = dttool.get_diff_days(starting_time, stopping_time)
|
|
68
|
+
if diff_days > 0 and sectime0 < 0.5 * 86400.:
|
|
69
|
+
dt = dt0 + datetime.timedelta(seconds=int(sectime0 + 86400))
|
|
70
|
+
else:
|
|
71
|
+
dt = dt0 + datetime.timedelta(seconds=int(sectime0))
|
|
72
|
+
variables['DATETIME'] = dt
|
|
73
|
+
|
|
74
|
+
invalid_ut_inds = np.where(ut == 0)
|
|
75
|
+
# Auroral map, #colors: 0: '1216', 1: '1304', 2: '1356', 3: 'LBHS', 4: 'LBHL'.
|
|
76
|
+
variables['EMISSION_SPECTRA'] = ['1216', '1304', '1356', 'LBHS', 'LBHL']
|
|
77
|
+
disk_aur = np.array(dataset.variables['DISK_RADIANCEDATA_INTENSITY_' + pole_str])
|
|
78
|
+
# disk_aur[:, invalid_ut_inds] = np.nan
|
|
79
|
+
disk_aur[disk_aur <= 0] = 0.1
|
|
80
|
+
variables['GRID_AUR_1216'] = disk_aur[0, ::]
|
|
81
|
+
variables['GRID_AUR_1216'][invalid_ut_inds] = np.nan
|
|
82
|
+
variables['GRID_AUR_1304'] = disk_aur[1, ::]
|
|
83
|
+
variables['GRID_AUR_1304'][invalid_ut_inds] = np.nan
|
|
84
|
+
variables['GRID_AUR_1356'] = disk_aur[2, ::]
|
|
85
|
+
variables['GRID_AUR_1356'][invalid_ut_inds] = np.nan
|
|
86
|
+
variables['GRID_AUR_LBHS'] = disk_aur[3, ::]
|
|
87
|
+
variables['GRID_AUR_LBHS'][invalid_ut_inds] = np.nan
|
|
88
|
+
variables['GRID_AUR_LBHL'] = disk_aur[4, ::]
|
|
89
|
+
variables['GRID_AUR_LBHL'][invalid_ut_inds] = np.nan
|
|
90
|
+
|
|
91
|
+
# Auroral oval boundary
|
|
92
|
+
variables['AOB_EQ_MLAT'] = np.array(dataset.variables[pole_str + '_GEOMAGNETIC_LATITUDE'])
|
|
93
|
+
variables['AOB_EQ_MLON'] = np.array(dataset.variables[pole_str + '_GEOMAGNETIC_LONGITUDE'])
|
|
94
|
+
variables['AOB_EQ_MLT'] = np.array(dataset.variables[pole_str + '_MAGNETIC_LOCAL_TIME'])
|
|
95
|
+
|
|
96
|
+
variables['AOB_PL_MLAT'] = np.array(dataset.variables[pole_str + '_POLAR_GEOMAGNETIC_LATITUDE'])
|
|
97
|
+
variables['AOB_PL_MLON'] = np.array(dataset.variables[pole_str + '_POLAR_GEOMAGNETIC_LONGITUDE'])
|
|
98
|
+
variables['AOB_PL_MLT'] = np.array(dataset.variables[pole_str + '_POLAR_MAGNETIC_LOCAL_TIME'])
|
|
99
|
+
|
|
100
|
+
variables['MAOB_EQ_MLAT'] = np.array(dataset.variables['MODEL_' + pole_str + '_GEOMAGNETIC_LATITUDE'])
|
|
101
|
+
variables['MAOB_EQ_MLON'] = np.array(dataset.variables['MODEL_' + pole_str + '_GEOMAGNETIC_LONGITUDE'])
|
|
102
|
+
variables['MAOB_EQ_MLT'] = np.array(dataset.variables['MODEL_' + pole_str + '_MAGNETIC_LOCAL_TIME'])
|
|
103
|
+
|
|
104
|
+
variables['MAOB_PL_MLAT'] = np.array(dataset.variables['MODEL_' + pole_str + '_POLAR_GEOMAGNETIC_LATITUDE'])
|
|
105
|
+
variables['MAOB_PL_MLON'] = np.array(dataset.variables['MODEL_' + pole_str + '_POLAR_GEOMAGNETIC_LONGITUDE'])
|
|
106
|
+
variables['MAOB_PL_MLT'] = np.array(dataset.variables['MODEL_' + pole_str + '_POLAR_MAGNETIC_LOCAL_TIME'])
|
|
107
|
+
|
|
108
|
+
metadata.setdefault('ORBIT_ID', dataset.STARTING_ORBIT_NUMBER)
|
|
27
109
|
|
|
28
|
-
if self.pole == 'N':
|
|
29
|
-
pole = self.pole
|
|
30
|
-
pole_str = 'NORTH'
|
|
31
|
-
elif self.pole == 'S':
|
|
32
|
-
pole = self.pole
|
|
33
|
-
pole_str = 'SOUTH'
|
|
34
|
-
else:
|
|
35
|
-
raise ValueError
|
|
36
|
-
# Time and Position
|
|
37
|
-
# sectime = int(np.array(dataset.variables['TIME']).flatten()[0])
|
|
38
|
-
# doy = int(np.array(dataset.variables['DOY']).flatten()[0])
|
|
39
|
-
# year = int(np.array(dataset.variables['YEAR']).flatten()[0])
|
|
40
|
-
# dt0 = dttool.convert_doy_to_datetime(year, doy)
|
|
41
|
-
starting_time = datetime.datetime.strptime(dataset.STARTING_TIME, "%Y%j%H%M%S")
|
|
42
|
-
variables['STARTING_TIME'] = starting_time
|
|
43
|
-
stopping_time = datetime.datetime.strptime(dataset.STOPPING_TIME, "%Y%j%H%M%S")
|
|
44
|
-
variables['STOPPING_TIME'] = stopping_time
|
|
45
|
-
dt0 = dttool.get_start_of_the_day(starting_time)
|
|
46
|
-
|
|
47
|
-
variables['SC_LAT'] = np.array(dataset.variables['LATITUDE'])
|
|
48
|
-
variables['SC_LON'] = np.array(dataset.variables['LONGITUDE'])
|
|
49
|
-
variables['SC_ALT'] = np.array(dataset.variables['ALTITUDE'])
|
|
50
|
-
|
|
51
|
-
variables['GRID_MLAT'] = np.array(dataset.variables['LATITUDE_GEOMAGNETIC_GRID_MAP'])
|
|
52
|
-
variables['GRID_MLON'] = np.array(
|
|
53
|
-
dataset.variables['LONGITUDE_GEOMAGNETIC_' + pole_str + '_GRID_MAP'])
|
|
54
|
-
variables['GRID_MLT'] = np.array(dataset.variables['MLT_GRID_MAP'])
|
|
55
|
-
if self.pole == 'S':
|
|
56
|
-
variables['GRID_MLAT'] = - variables['GRID_MLAT']
|
|
57
|
-
variables['GRID_UT'] = np.array(dataset.variables['UT_' + pole])
|
|
58
|
-
lat = np.array(variables['GRID_MLAT'])
|
|
59
|
-
ut = np.array(variables['GRID_UT'])
|
|
60
|
-
lat = np.where(ut == 0, np.nan, lat)
|
|
61
|
-
if self.pole == 'N':
|
|
62
|
-
ind_mid_t = np.where(lat == np.nanmax(lat.flatten()))
|
|
63
|
-
else:
|
|
64
|
-
ind_mid_t = np.where(lat == np.nanmin(lat.flatten()))
|
|
65
|
-
sectime0 = variables['GRID_UT'][ind_mid_t][0] * 3600
|
|
66
|
-
|
|
67
|
-
diff_days = dttool.get_diff_days(starting_time, stopping_time)
|
|
68
|
-
if diff_days > 0 and sectime0 < 0.5 * 86400.:
|
|
69
|
-
dt = dt0 + datetime.timedelta(seconds=int(sectime0 + 86400))
|
|
70
|
-
else:
|
|
71
|
-
dt = dt0 + datetime.timedelta(seconds=int(sectime0))
|
|
72
|
-
variables['DATETIME'] = dt
|
|
73
|
-
|
|
74
|
-
invalid_ut_inds = np.where(ut == 0)
|
|
75
|
-
# Auroral map, #colors: 0: '1216', 1: '1304', 2: '1356', 3: 'LBHS', 4: 'LBHL'.
|
|
76
|
-
variables['EMISSION_SPECTRA'] = ['1216', '1304', '1356', 'LBHS', 'LBHL']
|
|
77
|
-
disk_aur = np.array(dataset.variables['DISK_RADIANCEDATA_INTENSITY_' + pole_str])
|
|
78
|
-
# disk_aur[:, invalid_ut_inds] = np.nan
|
|
79
|
-
disk_aur[disk_aur <= 0] = 0.1
|
|
80
|
-
variables['GRID_AUR_1216'] = disk_aur[0, ::]
|
|
81
|
-
variables['GRID_AUR_1216'][invalid_ut_inds] = np.nan
|
|
82
|
-
variables['GRID_AUR_1304'] = disk_aur[1, ::]
|
|
83
|
-
variables['GRID_AUR_1304'][invalid_ut_inds] = np.nan
|
|
84
|
-
variables['GRID_AUR_1356'] = disk_aur[2, ::]
|
|
85
|
-
variables['GRID_AUR_1356'][invalid_ut_inds] = np.nan
|
|
86
|
-
variables['GRID_AUR_LBHS'] = disk_aur[3, ::]
|
|
87
|
-
variables['GRID_AUR_LBHS'][invalid_ut_inds] = np.nan
|
|
88
|
-
variables['GRID_AUR_LBHL'] = disk_aur[4, ::]
|
|
89
|
-
variables['GRID_AUR_LBHL'][invalid_ut_inds] = np.nan
|
|
90
|
-
|
|
91
|
-
# Auroral oval boundary
|
|
92
|
-
variables['AOB_EQ_MLAT'] = np.array(dataset.variables[pole_str + '_GEOMAGNETIC_LATITUDE'])
|
|
93
|
-
variables['AOB_EQ_MLON'] = np.array(dataset.variables[pole_str + '_GEOMAGNETIC_LONGITUDE'])
|
|
94
|
-
variables['AOB_EQ_MLT'] = np.array(dataset.variables[pole_str + '_MAGNETIC_LOCAL_TIME'])
|
|
95
|
-
|
|
96
|
-
variables['AOB_PL_MLAT'] = np.array(dataset.variables[pole_str + '_POLAR_GEOMAGNETIC_LATITUDE'])
|
|
97
|
-
variables['AOB_PL_MLON'] = np.array(dataset.variables[pole_str + '_POLAR_GEOMAGNETIC_LONGITUDE'])
|
|
98
|
-
variables['AOB_PL_MLT'] = np.array(dataset.variables[pole_str + '_POLAR_MAGNETIC_LOCAL_TIME'])
|
|
99
|
-
|
|
100
|
-
variables['MAOB_EQ_MLAT'] = np.array(dataset.variables['MODEL_' + pole_str + '_GEOMAGNETIC_LATITUDE'])
|
|
101
|
-
variables['MAOB_EQ_MLON'] = np.array(dataset.variables['MODEL_' + pole_str + '_GEOMAGNETIC_LONGITUDE'])
|
|
102
|
-
variables['MAOB_EQ_MLT'] = np.array(dataset.variables['MODEL_' + pole_str + '_MAGNETIC_LOCAL_TIME'])
|
|
103
|
-
|
|
104
|
-
variables['MAOB_PL_MLAT'] = np.array(dataset.variables['MODEL_' + pole_str + '_POLAR_GEOMAGNETIC_LATITUDE'])
|
|
105
|
-
variables['MAOB_PL_MLON'] = np.array(dataset.variables['MODEL_' + pole_str + '_POLAR_GEOMAGNETIC_LONGITUDE'])
|
|
106
|
-
variables['MAOB_PL_MLT'] = np.array(dataset.variables['MODEL_' + pole_str + '_POLAR_MAGNETIC_LOCAL_TIME'])
|
|
107
|
-
|
|
108
|
-
metadata.setdefault('ORBIT_ID', dataset.STARTING_ORBIT_NUMBER)
|
|
109
|
-
dataset.close()
|
|
110
110
|
|
|
111
111
|
self.variables = variables
|
|
112
112
|
self.metadata = metadata
|
|
113
|
+
|
|
@@ -5,6 +5,7 @@ import numpy as np
|
|
|
5
5
|
import pathlib
|
|
6
6
|
from matplotlib.axes import Axes
|
|
7
7
|
from typing import Dict
|
|
8
|
+
import gc
|
|
8
9
|
# import palettable
|
|
9
10
|
|
|
10
11
|
from matplotlib.gridspec import GridSpec, SubplotSpec
|
|
@@ -15,6 +16,7 @@ from geospacelab.toolbox.utilities.pyclass import StrBase
|
|
|
15
16
|
import geospacelab.toolbox.utilities.pybasic as pybasic
|
|
16
17
|
from geospacelab.visualization.mpl._helpers import check_panel_ax
|
|
17
18
|
import geospacelab.toolbox.utilities.pylogging as mylog
|
|
19
|
+
|
|
18
20
|
# from geospacelab.visualization.mpl.dashboards import Dashboard
|
|
19
21
|
|
|
20
22
|
|
|
@@ -168,9 +170,10 @@ class DashboardBase(object):
|
|
|
168
170
|
for ind_p in keys:
|
|
169
171
|
self.remove_panel(ind_p)
|
|
170
172
|
for ax in self.extra_axes.values():
|
|
171
|
-
ax.
|
|
173
|
+
ax.clear()
|
|
172
174
|
self.extra_axes = {}
|
|
173
|
-
|
|
175
|
+
gc.collect()
|
|
176
|
+
|
|
174
177
|
|
|
175
178
|
def set_layout(self, num_rows=None, num_cols=None, **kwargs):
|
|
176
179
|
"""
|
|
@@ -450,7 +453,7 @@ class PanelBase(object):
|
|
|
450
453
|
self.figure = figure
|
|
451
454
|
self.axes = {}
|
|
452
455
|
self.label = kwargs.pop('label', None)
|
|
453
|
-
self.
|
|
456
|
+
# self._current_ax_ref = None
|
|
454
457
|
# self.objectives = kwargs.pop('objectives', {})
|
|
455
458
|
if from_subplot:
|
|
456
459
|
ax = self.figure.add_subplot(*args, **kwargs)
|
|
@@ -463,7 +466,7 @@ class PanelBase(object):
|
|
|
463
466
|
ax = self.figure.add_axes(*args, **kwargs)
|
|
464
467
|
self.axes['major'] = ax
|
|
465
468
|
self.axes_overview[ax] = copy.deepcopy(self._ax_attr_model)
|
|
466
|
-
self.
|
|
469
|
+
self.sca(ax)
|
|
467
470
|
|
|
468
471
|
def __call__(self, ax=None) -> Axes:
|
|
469
472
|
"""
|
|
@@ -483,10 +486,15 @@ class PanelBase(object):
|
|
|
483
486
|
raise AttributeError
|
|
484
487
|
|
|
485
488
|
def clear(self):
|
|
486
|
-
|
|
487
|
-
|
|
489
|
+
self._current_ax_ref = None
|
|
490
|
+
self.axes_overview.clear()
|
|
491
|
+
for key, ax in self.axes.items():
|
|
492
|
+
ax.clear()
|
|
493
|
+
del ax
|
|
494
|
+
self.axes[key] = None
|
|
488
495
|
|
|
489
|
-
self.axes
|
|
496
|
+
self.axes.clear()
|
|
497
|
+
gc.collect()
|
|
490
498
|
|
|
491
499
|
def sca(self, ax):
|
|
492
500
|
"""
|
|
@@ -495,7 +503,7 @@ class PanelBase(object):
|
|
|
495
503
|
:param ax: the ax instance belong to the attribute axes.
|
|
496
504
|
"""
|
|
497
505
|
plt.sca(ax)
|
|
498
|
-
self.
|
|
506
|
+
self._current_ax_ref = weakref.ref(ax)
|
|
499
507
|
|
|
500
508
|
def gca(self):
|
|
501
509
|
"""
|
|
@@ -503,7 +511,7 @@ class PanelBase(object):
|
|
|
503
511
|
|
|
504
512
|
:return: Axes instance.
|
|
505
513
|
"""
|
|
506
|
-
return self.
|
|
514
|
+
return self._current_ax_ref()
|
|
507
515
|
|
|
508
516
|
def add_axes(self, *args, major=False, label=None, **kwargs):
|
|
509
517
|
"""
|
|
@@ -555,13 +563,13 @@ class PanelBase(object):
|
|
|
555
563
|
self.sca(ax)
|
|
556
564
|
plt.grid(visible=visible, which=which, axis=axis, **kwargs)
|
|
557
565
|
|
|
558
|
-
@check_panel_ax
|
|
559
|
-
def clear_axes(self, ax=None, collection_names=('lines', 'collections', 'images', 'patches')):
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
566
|
+
# @check_panel_ax
|
|
567
|
+
# def clear_axes(self, ax=None, collection_names=('lines', 'collections', 'images', 'patches', 'spines')):
|
|
568
|
+
# for cn in collection_names:
|
|
569
|
+
# cs = getattr(ax, cn)
|
|
570
|
+
# ncs = len(cs)
|
|
571
|
+
# for i in range(ncs):
|
|
572
|
+
# cs.pop(ncs-1-i)
|
|
565
573
|
|
|
566
574
|
def add_text(self, x, y, text, ax=None, **kwargs):
|
|
567
575
|
|
|
@@ -13,6 +13,7 @@ import datetime
|
|
|
13
13
|
import cartopy.crs as ccrs
|
|
14
14
|
import re
|
|
15
15
|
import copy
|
|
16
|
+
import gc
|
|
16
17
|
from cartopy.mpl.ticker import (
|
|
17
18
|
LongitudeLocator, LatitudeLocator,
|
|
18
19
|
LongitudeFormatter, LatitudeFormatter)
|
|
@@ -23,6 +24,8 @@ import matplotlib.colors as mcolors
|
|
|
23
24
|
import matplotlib.cm as mcm
|
|
24
25
|
from scipy.interpolate import interp1d, griddata
|
|
25
26
|
import matplotlib.cm as cm
|
|
27
|
+
import cartopy.mpl.geoaxes as geoaxes
|
|
28
|
+
import weakref
|
|
26
29
|
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
|
|
27
30
|
|
|
28
31
|
import geospacelab.visualization.mpl as mpl
|
|
@@ -159,6 +162,12 @@ class PolarMapPanel(GeoPanel):
|
|
|
159
162
|
if self.depend_mlt:
|
|
160
163
|
cs2.coords.lon = self._transform_mlt_to_lon(cs2.coords.mlt)
|
|
161
164
|
return cs2
|
|
165
|
+
def clear(self):
|
|
166
|
+
self.projection = None
|
|
167
|
+
self._proj_class = None
|
|
168
|
+
geoaxes._PATH_TRANSFORM_CACHE.clear()
|
|
169
|
+
gc.collect()
|
|
170
|
+
super().clear()
|
|
162
171
|
|
|
163
172
|
def overlay_coastlines(self, linestyle='-', linewidth=0.5, color='#797A7D', zorder=100, alpha=0.7,
|
|
164
173
|
resolution='110m', **kwargs):
|
|
@@ -202,7 +211,8 @@ class PolarMapPanel(GeoPanel):
|
|
|
202
211
|
**kwargs)
|
|
203
212
|
# self.ax.scatter(x_new, y_new, transform=self.default_transform,
|
|
204
213
|
# marker='.', edgecolors='none', color='#C0C0C0', s=1)
|
|
205
|
-
|
|
214
|
+
del x_new, y_new
|
|
215
|
+
coords = None
|
|
206
216
|
return
|
|
207
217
|
|
|
208
218
|
def overlay_gridlines(self,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
geospacelab/__init__.py,sha256=
|
|
1
|
+
geospacelab/__init__.py,sha256=o9UGHuHohTJI5hQ6S62CZ35dSnAnkD-M5-ayloaqsLU,801
|
|
2
2
|
geospacelab/config/__init__.py,sha256=--F2bcKRCNIbPaFz4bySMkuxGg1ZxF1j1uyxMA0t3xA,660
|
|
3
3
|
geospacelab/config/__mpl__.py,sha256=bO10-mtYDF1EhnRFuXX4H8TUU3esxOZe-qfTrzRhBk0,4705
|
|
4
4
|
geospacelab/config/_preferences.py,sha256=VKXXWNvFzIMXGmvb7Udd900DoubMlqrcu-gLmzHmzMk,4754
|
|
@@ -16,7 +16,7 @@ geospacelab/datahub/__init_dataset.py,sha256=5k87VqEgYGr8F77gpKVeiHNPEsk9u2XmbQ-
|
|
|
16
16
|
geospacelab/datahub/__init_metadata.py,sha256=sYBQFIbEZh-TWPvdbDBsTQYqlvwNw2iJloyXWYcVgE4,2996
|
|
17
17
|
geospacelab/datahub/__init_variable.py,sha256=L11PK-eBOFbGv90sDgH70DGilOndnvQczG41ZNHy7Ks,25233
|
|
18
18
|
geospacelab/datahub/__metadata_base__.py,sha256=AbMaV5iuonTekS9fLy9Eq2h3ixblPC3BpsaWEdZv7f0,2825
|
|
19
|
-
geospacelab/datahub/__variable_base__.py,sha256=
|
|
19
|
+
geospacelab/datahub/__variable_base__.py,sha256=AkSbmsbjqXPjce7at_0BXpYkSCzZA3huh_04zUd6iBA,39120
|
|
20
20
|
geospacelab/datahub/_dataset_base.py,sha256=Y0ntQ7FtRmnCND2AtEaehJ3DtgxVG_2pwS1B5Z9BOVw,11283
|
|
21
21
|
geospacelab/datahub/_metadata_base.py,sha256=sYBQFIbEZh-TWPvdbDBsTQYqlvwNw2iJloyXWYcVgE4,2996
|
|
22
22
|
geospacelab/datahub/_variable_base.py,sha256=dUm15Y012FQ0hAdeA48ky0tKEc9il59FHvOP7KncYWE,25050
|
|
@@ -26,13 +26,13 @@ geospacelab/datahub/sources/cdaweb/__init__.py,sha256=fP1ziTZFxTOz-HF07az67F5Afv
|
|
|
26
26
|
geospacelab/datahub/sources/cdaweb/downloader.py,sha256=CIq6LjlfGM73ipxabFH7P22dV8ptKs1O18S5W1kKh94,5038
|
|
27
27
|
geospacelab/datahub/sources/cdaweb/dmsp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
28
|
geospacelab/datahub/sources/cdaweb/dmsp/ssusi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
|
-
geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/__init__.py,sha256=
|
|
29
|
+
geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/__init__.py,sha256=44dlkn7t2HMcGBAhh0oj4ne4NP3LXCEQkS34qgh0f4E,8490
|
|
30
30
|
geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/downloader.py,sha256=LCn0tupzAkir9Z_280tBulHEPlqoX6DWe8HKFk1h4IE,3191
|
|
31
|
-
geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/loader.py,sha256=
|
|
31
|
+
geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/loader.py,sha256=U8ucK-rstKRSxf1gSTiduE5fZ6n9nfxheGpBJoI1D7Y,5603
|
|
32
32
|
geospacelab/datahub/sources/cdaweb/dmsp/ssusi/edr_aur/variable_config.py,sha256=6-BMqRDSAxuND1WtiXD4_70hr4RbmbflvUBT61Fn7s8,4346
|
|
33
33
|
geospacelab/datahub/sources/cdaweb/omni/__init__.py,sha256=Cx34OLYuX_zLIialhXlI6F0x4rXbCWLC7yCYBse6s2c,11529
|
|
34
34
|
geospacelab/datahub/sources/cdaweb/omni/downloader.py,sha256=Rle46rGxWmnM46BMO6hGpZR16vLF6DusYacpH_eMjw0,4129
|
|
35
|
-
geospacelab/datahub/sources/cdaweb/omni/loader.py,sha256=
|
|
35
|
+
geospacelab/datahub/sources/cdaweb/omni/loader.py,sha256=5ISQ9V2mMhf2JXVL9jUQlsQdsETgRd_KIc-CgBApFis,3234
|
|
36
36
|
geospacelab/datahub/sources/cdaweb/omni/variable_config.py,sha256=WWVuuy28FSHV-DUAOx9hB80zCarTJJoObSgCbq7lgWM,12424
|
|
37
37
|
geospacelab/datahub/sources/esa_eo/__init__.py,sha256=Z-X5gUc21PNcCSCHoaP4ieQjTUBtMft8cK0hfJnezWo,521
|
|
38
38
|
geospacelab/datahub/sources/esa_eo/swarm/__init__.py,sha256=VCgXC15rp09kebnDY9GW0cy-BXH0RrEo6jscilobv_w,2386
|
|
@@ -152,7 +152,7 @@ geospacelab/datahub/sources/madrigal/eiscat/examples/eiscat_hdf5_info.py,sha256=
|
|
|
152
152
|
geospacelab/datahub/sources/madrigal/gnss/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
153
153
|
geospacelab/datahub/sources/madrigal/gnss/tecmap/__init__.py,sha256=oEoetqS16QE31AY-1TInDBk0FwjaigLiT9DXQmSArmg,5958
|
|
154
154
|
geospacelab/datahub/sources/madrigal/gnss/tecmap/downloader.py,sha256=9Z4zZm-xNS0jYHaD--Nc-HVnCzcn65NLMb3eZzBHWJk,4286
|
|
155
|
-
geospacelab/datahub/sources/madrigal/gnss/tecmap/loader.py,sha256=
|
|
155
|
+
geospacelab/datahub/sources/madrigal/gnss/tecmap/loader.py,sha256=uAXQFDSnSJIUokpiXPKT5TlAcSbbaPM5pJpEVLA23Y4,2896
|
|
156
156
|
geospacelab/datahub/sources/madrigal/gnss/tecmap/variable_config.py,sha256=lLeJkcTqO0qJErkYlBq1kt0sDBGxOcNeNHRykq5ajPQ,1568
|
|
157
157
|
geospacelab/datahub/sources/madrigal/isr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
158
158
|
geospacelab/datahub/sources/madrigal/isr/eiscat/__init__.py,sha256=ObrGv-fsYWbEmXMQ6YftoEnydu6slmOE4uKKbBFn4x4,20416
|
|
@@ -344,7 +344,7 @@ geospacelab/visualization/tsviewer.py,sha256=qkPVhLuQYVLQKSvmQJYtYKql8GkcFfDXVlg
|
|
|
344
344
|
geospacelab/visualization/map_proj/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
345
345
|
geospacelab/visualization/map_proj/geopanel.py,sha256=FLNDyRyyQ2aeGPFxEY3JkKyZcSv6nOeH0AmeUExR_V8,8961
|
|
346
346
|
geospacelab/visualization/map_proj/geoviewer.py,sha256=tVd9g3bEyZLBTbVYg2lVv4JoEtc1IeeKcZ5k-l5aHl0,1436
|
|
347
|
-
geospacelab/visualization/mpl/__base__.py,sha256=
|
|
347
|
+
geospacelab/visualization/mpl/__base__.py,sha256=olAVyAntfL_RADs4rJgMjbzF2HX71PaJWzfuhOEE_ig,27284
|
|
348
348
|
geospacelab/visualization/mpl/__init__.py,sha256=eNng7abvdzotwUltTYwFtlIeqUtCpI3d5yA4pr9kPKg,825
|
|
349
349
|
geospacelab/visualization/mpl/_helpers.py,sha256=L-Cf_NXhe7FZE0fUNwQOOIZorLR1qEhj7bRkP4_jSAE,747
|
|
350
350
|
geospacelab/visualization/mpl/axes.py,sha256=YcFkmOGWXNiOXWsMFxFPhn32UnbxmeSrluTp6OHVTpQ,328
|
|
@@ -357,7 +357,7 @@ geospacelab/visualization/mpl/ts_viewer.py,sha256=4sOwXeWkdn5Z0BA6c-zxj4dAYxHP9t
|
|
|
357
357
|
geospacelab/visualization/mpl/geomap/__base__.py,sha256=v3lVV5NVQMi0csNxq1ioORyizULqGN92M0DrlGjjBRQ,2940
|
|
358
358
|
geospacelab/visualization/mpl/geomap/__init__.py,sha256=lsCyNIg5d5ZiMyRvE1zIuCnIhL47x8aYbOKZUX5E8fE,327
|
|
359
359
|
geospacelab/visualization/mpl/geomap/geodashboards.py,sha256=oCt18JDXor4pg5qotzThu3Myg-uc_Gz6D3TnFwC0Nqs,2847
|
|
360
|
-
geospacelab/visualization/mpl/geomap/geopanels.py,sha256=
|
|
360
|
+
geospacelab/visualization/mpl/geomap/geopanels.py,sha256=WGvhDAKCZUkMiZkPKHwTSQ06DdPr5bXCnY38SnSHK0o,52993
|
|
361
361
|
geospacelab/visualization/mpl_toolbox/__init__.py,sha256=AXKQoIwd3UCOMnmdIBXin2BH5t4UcZhmQRf8Ptr5o14,132
|
|
362
362
|
geospacelab/visualization/mpl_toolbox/axes.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
363
363
|
geospacelab/visualization/mpl_toolbox/axis_ticks.py,sha256=WV7bR_lgaNFvs59WektWVUgVZlVAuvQny6i_LJ39t2Y,11772
|
|
@@ -382,7 +382,7 @@ geospacelab/wrapper/geopack/geopack/t89.py,sha256=zDVNPrmtK1NnNHgohQEPqOOJDsm2Z-
|
|
|
382
382
|
geospacelab/wrapper/geopack/geopack/t96.py,sha256=ktcoo1R7Z3NtkWHENuseu48ub4-JfQGqFV0ZOtd0zH8,65292
|
|
383
383
|
geospacelab/wrapper/geopack/geopack/test_geopack1.md,sha256=dMUY0O1BgZsKpmJ6BLSQ80B6p6DZcB7OceFeyPOlFK0,15324
|
|
384
384
|
geospacelab/wrapper/geopack/geopack/test_geopack1.py,sha256=qjLz6O3BAk3H58IpmxXyftwZTkh3vPGp49C-al4hjf0,6669
|
|
385
|
-
geospacelab-0.
|
|
385
|
+
geospacelab-0.11.0.dist-info/licenses/LICENSE,sha256=2yRlwLt4o5Z6OZAGcyvBj-zfFX1Uw7E6CzqODg7khqs,1515
|
|
386
386
|
test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
387
387
|
test/test_ampere.py,sha256=0-HZURubpv1mBK3bJ_qTqx39L1jezgRoU5neXMPYgZQ,2968
|
|
388
388
|
test/test_dmsp_s1.py,sha256=5m_7mjdDGja8ovshNPV3LKW_6q6mIwT9XKqoyRiH79A,3588
|
|
@@ -392,7 +392,7 @@ test/test_omni.py,sha256=Zk1LZozPiY5V0aSRmK6GTQuB01hHn_j2j3Brm6Ea_po,1632
|
|
|
392
392
|
test/test_superdarn.py,sha256=uP55muvXryPzNGHinWkiGv2PxvRs4f9M9h1WIBEBW7k,2846
|
|
393
393
|
test/test_swarm.py,sha256=PDDE9nUshhQpXZbV_ZwcsjbMhI73fRaojTZv9rtRzZE,15568
|
|
394
394
|
test/test_swarm_new.py,sha256=mzhMAx-M9W3Ue5noTyfBx4c3Vtc3b_ZUEvGgL9v8UE4,853
|
|
395
|
-
geospacelab-0.
|
|
396
|
-
geospacelab-0.
|
|
397
|
-
geospacelab-0.
|
|
398
|
-
geospacelab-0.
|
|
395
|
+
geospacelab-0.11.0.dist-info/METADATA,sha256=IM_FXqyGJexx3lJm9sbC7H_HSJxbkRinuHpiAa6NxBg,24238
|
|
396
|
+
geospacelab-0.11.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
397
|
+
geospacelab-0.11.0.dist-info/top_level.txt,sha256=98eDwrSNgyQFAtSA06QMP71gw9BzgIj0uvkTudpGly4,12
|
|
398
|
+
geospacelab-0.11.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|