In [96]:
import os
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import dask
from dask import delayed, multiprocessing, compute
from dask.diagnostics import ProgressBar
from astropy.time import Time
import seaborn.apionly as sns
from icecube import dataclasses
import comptools as comp
%matplotlib inline
In [29]:
df_data = comp.load_data(config='IC86.2012')
In [ ]:
# def handle_mjd(f):
# def inner(mjd_date):
# date_time = dataclasses.I3Time(56043.448794).date_time
# return f(date_time)
# return
In [24]:
%timeit event_times = to_datetime(df_data.start_time_mjd[:100])
In [25]:
%timeit event_times = to_datetime(df_data.start_time_mjd.values[:100])
In [ ]:
event_times
In [27]:
df_data.start_time_mjd[:100]
Out[27]:
In [38]:
ts = [56043.448917, 56043.448925, 56043.448963]
In [31]:
astro_times = Time(ts, format='mjd')
In [78]:
%timeit pd.to_datetime(Time(df_data.start_time_mjd[:1000], format='mjd').datetime)
In [72]:
%timeit Time(df_data.start_time_mjd.values[:1000], format='mjd').datetime
In [67]:
astro_times = pd.to_datetime(Time(df_data.start_time_mjd, format='mjd').datetime)
In [68]:
astro_times
Out[68]:
In [82]:
day_count = pd.Series([1]*len(astro_times), index=astro_times).resample('D').sum()
In [83]:
# with plt.rc_context({'text.usetex': False}):
fig, ax = plt.subplots()
day_count.plot(ls='-', marker='None', alpha=0.75, ax=ax)
ax.set_ylabel('Events / day')
ax.grid()
plt.show()
In [12]:
comp.datafunctions.get_data_configs()
Out[12]:
In [23]:
@np.vectorize
def mjd_to_datetime(mjd_date):
date_time = dataclasses.I3Time(mjd_date).date_time
return pd.to_datetime(date_time)
In [24]:
mjd_to_datetime([56043.452767, 56043.452798])
Out[24]:
In [25]:
@delayed
def get_event_rate_series(config):
df_data = comp.load_data(config=config)
# date_times = pd.to_datetime(Time(df_data.start_time_mjd, format='mjd').datetime)
date_times = mjd_to_datetime(df_data.start_time_mjd)
day_count = pd.Series([1]*len(date_times), index=date_times).resample('D').sum()
return day_count
In [64]:
configs = comp.datafunctions.get_data_configs()
# configs = ['IC86.2012', 'IC86.2013']
n_jobs = len(configs)
config_day_counts = {config: get_event_rate_series(config) for config in configs}
with ProgressBar():
config_day_counts = compute(config_day_counts, get=multiprocessing.get, num_workers=n_jobs)[0]
In [111]:
with sns.color_palette('Blues_d', len(configs)):
fig, ax = plt.subplots()
for config in configs:
day_count = config_day_counts[config]
day_count.plot(logy=False, ls='-', marker='None', alpha=0.75, label=config, ax=ax)
ax.axvline(day_count.index.max(), marker='None', ls='-', color='k', lw=0.5)
ax.text(day_count.index[len(day_count)//5], 2.65e4, config)
ax.set_ylim(0)
ax.set_ylabel('Events / day')
ax.set_xlabel('Time [UTC]')
ax.grid(axis='y')
# ax.legend()
plt.savefig(os.path.join(comp.paths.figures_dir, 'data-event-rate.png'))
plt.show()
In [79]:
day_count.index[len(day_count)//2]
Out[79]:
In [34]:
%%timeit
date_times = mjd_to_datetime(df_data.start_time_mjd[:100])
In [35]:
%%timeit
date_times = mjd_to_datetime(df_data.start_time_mjd[:100].values)
In [36]:
%%timeit
date_times = pd.to_datetime(Time(df_data.start_time_mjd[:100], format='mjd').datetime)
In [43]:
In [46]:
@delayed
def get_arange(l):
return np.arange(l)
In [56]:
d = {l: get_arange(l) for l in range(1, 10)}
In [57]:
d = compute(d, get=multiprocessing.get, num_workers=len(d))[0]
In [60]:
d
Out[60]:
In [ ]: