If anyone’s interested in discussing agent-based/individual-based modeling with Clojure, it probably doesn’t belong in a data science thread, but please contact me for a side conversation. I’ve been involved with agent-based modeling for a while, and since Clojure is one of my favorite languages, I like doing ABM work in it when that makes sense.
I’m in Operations Research, primarily focusing on discrete event simulation and various forms of optimization (often times via mathematical programming). Simulating complex processes and plans is the bulk of my work though. Distributed simulation is a current topic of interest. Basic stats and analysis also pops up regularly.
[general data science topics]
Over the last ~7 years or so, I’ve written gobs of stuff for internal use, although large chunks are publicly available in a monolith. My primary intersection with “data science” has been via Incanter, of which I maintain a fork, trying to revamp the extant design (case in point, plotting functions) and porting internally developed fixes and extensions. There seems to be little love for Incanter on this thread so far
Regarding dataframe-ish stuff, I built a typed columnar table years ago, with a little SQL-like edsl ported from Practical Common Lisp. After core.matrix came out with its dataset implementation, I extended the relevant protocols to spork.util.table to enable use in incanter. I haven’t really needed or missed any dataframe stuff as a consequence. The table implementation provides typed schemas for all the fields, as well as efficient mutable construction, string canonicalization (this is pretty huge in practice for me), and some other goodies.
I’ve only recently began pushing to apply ML front; definitely interested in opinions of practitioners here.
I’ve messed with vega (via Oz and a fork I wrote to use javafx webview as the canvas). I think the grammar of graphics approach is powerful, but also a bit static…You can encode all sorts of higher minded things, which are then compiled into something Vega understands to create slick graphics, but lack of IMO low-level access to the actual plotting and rendering (via the resulting scene) is a bit of a downside to me. I’ve been looking at a solution that affords the data-driven specification of vega, but allows better control of the resultant product (via something like Processing/Quil or another renderer). In my ideal world, I should be allowed to mess with the plot however I want; Vega/ggplot would provide a nice porcelain layer to get up and running fast.