Skip to content

Add conventions page to docs#220

Draft
SamDuffield wants to merge 1 commit intomainfrom
conventions
Draft

Add conventions page to docs#220
SamDuffield wants to merge 1 commit intomainfrom
conventions

Conversation

@SamDuffield
Copy link
Contributor

Closes #189

It's possible this page would also have sufficient detail to close #217 but that's up for discussion - we could also have an "explain the backend design" page

I've drafted the first few conventions and left placeholders for the remaining ones listed in #189

Very open to help filling those out, suggestions on more to add and suggestions to make it a bit easier to read - more code? tables? figures?

- Home: index.md
- Quick Start: quickstart.md
- Quickstart: quickstart.md
- cuthbert conventions: conventions.md

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Taking your headings, I think I would create a new docs subsection called "Under the hood" or "Backend" or something like that with the following

- Under the hood
  - What cuthbert does and does not do
  - Backend design
  - Conventions: conventions.md
  - Parallel filter

I would focus on the why it was designed like this and not other ways.

What cuthbert does and does not do: basically explain cuthbert does inner loop (list current methods, future methods and possibly a roadmap for the library), not parameter estimation outer loop.

Conventions can contain: No initial observation, Square root covariance matrices

Backend design can contain:

  • Overview of the design/Unified interfact: Filter, Smoother (common) and build_filter (the part that is different between inference algorithms). My notes from someone fresh to the project may be helpful documentation: explain the backend design #217
  • No predict and update. This is what's in the textbook, but we don't do it because we want to make an affine map from $m_{t+1|t+1} = A m_{t|t} + b$ so that parallel inference is easier (I think that's why). And then some notes on prepare and combine and how they work, with nuances for each method (noop for SMC?)
  • Degenerate dynamics

Parallel filter can explain how the associative scan gets a speedup. Feel free to just copy / edit my notes that I wrote here #217 (comment)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Definitely agree on the why it was designed like this and not other ways !

I'm currently mainly concerned that it's a bit dense and unreadable lol. Splitting it up should help with that!

Similarly an `update` step can be achieved through degenerate dynamics
i.e. $p(x_t \mid x_{t-1}) = \delta(x_t \mid x_{t-1})$.

All `cuthbert` methods support these degenerate cases through appropriate specification

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe I'm unfamiliar with the context. Why would a user want to do predict and update steps? When would they not just want the full filter step?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Main one that comes to mind is online inference when they wanted to make decisions based on predict before observing the data

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

documentation: explain the backend design Add "Conventions" page to docs

2 participants