It has been some time since I gave you any updates on my Numba project, so here is the post. The first coding phase of GSoC 19 has ended, and in fact, we are already a week into the second phase. By the way, I have successfully passed the first evaluation of GSoC 2019..yay! So now, time for the update.

Plots

As mentioned in my previous blog post, the next step of my project is to work on arviz.plots. Just like with stats, the first thing to do was profiling every single plot via line_profiler. The best thing about working on plots is that the majority of them are based on plot_kde, which can be optimised substantially using numba.

plot_kde

Here are the notebooks associated with plots and plot_utils. As you all can see from the notebooks, plot_kde (mainly _fast_kde_) is the main bottleneck of the following

Optimising plot_kde can improve the above-mentioned methods significantly.

plot_khat

The main bottleneck is ax.scatter which unfortunately is not compatible with Numba.

parallel_plot

The bottleneck is ax.plot which is not compatible with Numba.

plot_utils

Even though plot_util methods are not the major bottlenecks for the plots, I still improved a few of the more demanding methods such as xarray_var_iter(which in-turn speeds up xarray_to_ndarray.

plot_autocorr

The bottlenecks here once again are matplotlib functions which cannot be improved using Numba

Next Step

I need to work on the remaining few plots and write the required tests. I have also been asked by one of my mentors to look into precompiling numba functions. This task is something new for me and looks like it is going to be fun :). Plus need to keep fixing the bugs which pop up as a result of my previous pull requests. I will update you all soon !!