Internals

Overview of the repository structure:

.
├── benchmark
│   ├── benchmarks.jl   # Benchmark suite definition
│   └── make.jl         # Benchmark runner
├── docs
│   ├── src             # Documentation source
│   └── make.jl         # Documentation builder
├── examples            # Examples (included in the documentation)
├── src
│   ├── HMMBase.jl      # Main module file
│   ├── hmm.jl          # HMM type, rand, size, ...
│   ├── *_api.jl        # Public interfaces
│   ├── *.jl            # Internal in-place implementations
└── test
    ├── integration.jl  # Integration tests
    ├── pyhsmm.jl       # Python tests
    ├── runtests.jl     # Integration+Unit tests runner
    └── unit.jl         # Unit tests

In-place versions

Internally HMMBase uses in-place implementations for most of the algorithms.

Public interfaces are defined in _api.jl files, and are responsible for copying user provided data.

In-placePublic interface
likelihoods!, loglikelihoods!likelihoods
forward!, forwardlog!forward
backward!, backwardlog!backward
posteriors!posteriors
viterbi!, viterbilog!viterbi
fit_mle!fit_mle