reduced to Python only.  Targeting data sets of about ~10K data points.  Larger sets will be dealt with using a separate C/C++ parallel cluster code.