Skip to content
Snippets Groups Projects

index array was missing

Merged Ghost User requested to merge lukas_issue298_feat_periodogram into develop
1 file
+ 11
9
Compare changes
  • Side-by-side
  • Inline
@@ -643,9 +643,9 @@ class PlotPeriodogram(AbstractPlotClass): # pragma: no cover
plot_data_single = dict()
plot_data_raw_single = dict()
plot_data_mean_single = dict()
self.f_index = np.logspace(-3, 0 if self._sampling == "daily" else np.log10(24), 1000)
raw_data_single = self._prepare_pgram_parallel_gen(generator, m, pos, use_multiprocessing)
# raw_data_single = self._prepare_pgram_parallel_var(generator, m, pos, use_multiprocessing)
self.f_index = np.logspace(-3, 0 if self._sampling == "daily" else np.log10(24), 1000)
for var in raw_data_single.keys():
pgram_com = []
pgram_mean = 0
@@ -705,14 +705,14 @@ class PlotPeriodogram(AbstractPlotClass): # pragma: no cover
pool = multiprocessing.Pool(
min([psutil.cpu_count(logical=False), len(generator), 16])) # use only physical cpus
output = [
pool.apply_async(f_proc_2, args=(g, m, pos, self.variables_dim, self.time_dim))
pool.apply_async(f_proc_2, args=(g, m, pos, self.variables_dim, self.time_dim, self.f_index))
for g in generator]
for i, p in enumerate(output):
res.append(p.get())
pool.close()
else:
for g in generator:
res.append(f_proc_2(g, m, pos, self.variables_dim, self.time_dim))
res.append(f_proc_2(g, m, pos, self.variables_dim, self.time_dim, self.f_index))
for res_dict in res:
for k, v in res_dict.items():
if k not in raw_data_single.keys():
@@ -735,7 +735,7 @@ class PlotPeriodogram(AbstractPlotClass): # pragma: no cover
"""
ax.set_yscale('log')
ax.set_xscale('log')
ax.set_ylabel("power", fontsize='x-large')
ax.set_ylabel("power spectral density", fontsize='x-large') # unit depends on variable: [unit^2 day^-1]
ax.set_xlabel("frequency $[day^{-1}$]", fontsize='x-large')
lims = ax.get_ylim()
self._add_annotation_line(ax, [1, 2, 3], 365.25, lims, "yr") # per year
@@ -826,14 +826,16 @@ class PlotPeriodogram(AbstractPlotClass): # pragma: no cover
plt.close('all')
def f_proc(var, d_var): # pragma: no cover
def f_proc(var, d_var, f_index): # pragma: no cover
var_str = str(var)
t = (d_var.datetime - d_var.datetime[0]).astype("timedelta64[h]").values / np.timedelta64(1, "D")
f, pgram = LombScargle(t, d_var.values.flatten(), nterms=1).autopower()
return var_str, f, pgram
pgram = LombScargle(t, d_var.values.flatten(), nterms=1, normalization="psd").power(f_index)
# f, pgram = LombScargle(t, d_var.values.flatten(), nterms=1, normalization="psd").autopower()
return var_str, f_index, pgram
def f_proc_2(g, m, pos, variables_dim, time_dim): # pragma: no cover
def f_proc_2(g, m, pos, variables_dim, time_dim, f_index): # pragma: no cover
raw_data_single = dict()
if m == 0:
d = g.id_class._data
@@ -844,7 +846,7 @@ def f_proc_2(g, m, pos, variables_dim, time_dim): # pragma: no cover
d = d[pos] if isinstance(d, tuple) else d
for var in d[variables_dim].values:
d_var = d.loc[{variables_dim: var}].squeeze().dropna(time_dim)
var_str, f, pgram = f_proc(var, d_var)
var_str, f, pgram = f_proc(var, d_var, f_index)
raw_data_single[var_str] = [(f, pgram)]
return raw_data_single
Loading