My utilities package for julia. This is a collection of useful functions that are shared across projects. None of this work functions as a useful standalone project, and hence does not follow the julia convention of minimal projects which perform one thing well.
This is very much a WIP, and usually includes things that are specific to whatever I'm currently developing. It is also includes ports of things from pyalexutil
. Briefly, it currently has the following modules:
-
Arr
: array functions, operations that I find useful which are not part ofBase
. This is at present kind of trivial. -
dpmeans
: A dirichlet process kmeans algorithm, following Kulis & Jordan, 2012. -
Flux
: some additions to Flux supported operations for Automatic Differentiation that I have used. The more useful ones (inv
,ldiv
,rdiv
) have been moved into Flux itself. -
gmm
: my own version of Gaussian Mixture Models. Various choices inDistributions.jl
make these a little slow, and furthermore there's no generic MLE fitting routine. This includes a (weighted) EM algorithm for fitting, Bayes-by-Backprop for (unnormalised) density functions, plus some of the usual utilities for Distributions, such asrand
,logpdf
,show
etc. -
Logging
: Only one<: AbstractLogger
at present: this adds a timestamp toSimpleLogger
and shifts the output around a little. The fileTimeStampLog.sublime-syntax
provides useful highlighting of the log if using Sublime Text 3. -
Math
: a few softmax-y logsumexp-y type functions, plus numerical gradient checking. -
MCDiagnostic
: Some Monte Carlo diagnostics, including a few different Effective Sample Size functions and$\hat{R}$ . -
MCMC
: Currently just an implementation of (Truncated) Metropolis Adjusted Langevin Algorithm (T-MALA). -
Misc
: Misc functions I miss from python/MATLAB, a faster version ofcountmap
forInt
s, andrepelem
-like behaviour forrepeat
. -
Plot
: A few useful plotting utilities, including pairplot, axis operations and image tiling. -
Random
: Mostly implementations of Multinomial sampling that are currently unavailable in Distributions.jl. [Update: I've subsequently noticed this is just calledCategorical
inDistributions.jl
, however the linear scan version in particular appears to be substantially faster still than their version.].