In [5]:
%pylab inline
import re
import pandas as pd
import log_query as lq

# Import DB
store = lq.LogQuery("../../log.h5")
df_write = store.select(where="message_type == 'sdram' and type == 'write'", columns=['time', 'len'])
df_read = store.select(where="message_type == 'sdram' and type == 'read'", columns=['time', 'len'])


Populating the interactive namespace from numpy and matplotlib
WARNING: pylab import has clobbered these variables: ['axes']
`%pylab --no-import-all` prevents importing * from pylab and numpy

In [6]:
bins = 3000
max_time = max( df_read['time'].max(), df_write['time'].max())
bin_time = (max_time + 1) / bins

time_range = np.arange(0, max_time + 1, (max_time+1)/bins)
df_read['bin'] = np.digitize(df_read['time'], time_range)
df_write['bin'] = np.digitize(df_write['time'], time_range)
df_read_group = df_read.groupby(['bin'])
df_write_group = df_write.groupby(['bin'])
ser_read_result = df_read_group['len'].aggregate(np.sum)
ser_write_result = df_write_group['len'].aggregate(np.sum)

binned_read = pd.DataFrame(ser_read_result).reset_index()
binned_write = pd.DataFrame(ser_write_result).reset_index()
binned_read['bin'] = binned_read['bin'] - 1
binned_write['bin'] = binned_write['bin'] - 1

df_result_read = pd.DataFrame()
df_result_write = pd.DataFrame()
df_result_read['time_ps'] = np.arange(0, max_time + 1, (max_time+1)/bins)
df_result_write['time_ps'] = np.arange(0, max_time + 1, (max_time+1)/bins)
df_result_read = pd.DataFrame.merge(df_result_read, binned_read, left_index=True, right_on='bin', how='outer')
df_result_write = pd.DataFrame.merge(df_result_write, binned_write, left_index=True, right_on='bin', how='outer')
df_result_read['megabytespersecond'] = ((df_result_read['len'] / 1e6) / (bin_time / 1e9))
df_result_write['megabytespersecond'] = ((df_result_write['len'] / 1e6) / (bin_time / 1e9))

In [7]:
fig, axes = plt.subplots(figsize=(20, 5))
axes.plot(df_result_read['time_ps'], df_result_read['megabytespersecond'], label="read bandwidth")
axes.plot(df_result_write['time_ps'], df_result_write['megabytespersecond'], label="write bandwidth")
axes.set_ylabel("MBit/s")
axes.set_xlabel("simulated time in ps")
axes.legend()
axes.grid()



In [8]:
from statsmodels.nonparametric.kde import KDEUnivariate

mps = df_result_read['megabytespersecond']

mps_KDE = KDEUnivariate(mps)
mps_KDE.fit()
#density = kde.gaussian_kde(mps.values)
plt.plot(mps_KDE.support, mps_KDE.density)


Out[8]:
[<matplotlib.lines.Line2D at 0xa0babd0>]

In [8]:


In [8]: