Hi Jock,
Thanks for the kind words. To be clear those two packages do only _discrete_ x's and y's. ahwillia's HiddenMarkovModel.jl does more general emissions. He and I are talking about merging our packages now.
"Deep modelling" means that you define in a front-end package a mapping from "deep" statistical parameters (call them "theta") to the transition matrix "m" for z=(x,y), and then DynamicDiscreteModels.jl takes care of the rest. So you can simulate for some value theta0, estimate theta by maximum likelihood (generic optimization or EM algorithm), do viterbi filtering at some theta0 etc. The README provides an example which I hope is illustrative.
This is the way HiddenMarkovModels.jl is implemented, with little more than defining a function coef!(model,(a,b)) which maps the transition matrix "a" and the emission matrix "b" to the corresponding transition mapping "m" for z=(x,y) (a very simple mapping in this case obviously).
The point is that coef!(model,deep-parameters) can be arbitrarily complex, like solving an economic equilibrium model given a bunch of deep structural parameters of the economy, etc. With DynamicDiscreteModels.jl you can focus on that step and DynamicDiscreteModels.jl takes care of the rest.
Time-varying covariates are not immediately supported but individual covariates in a panel data yes.
Best,
Ben