This is the first experimental release of ``cryojax``. Changes from the pre-release v0.1.0-alpha include
- Unit testing against and matched conventions with ``cisTEM``
- Support for ``Detector`` and ``Ice`` models. Each are currently treated as gaussian noise (the ``Ice`` has the CTF applied to it), but they also have more general base classes to anticipate more flexibility. ``Detector`` models treat pixel size as a model parameter.
- ``Cloud`` has been changed to ``ElectronCloud``, which is a base class of a ``Specimen``. ``Specimen`` should be general enough to add future support for imaging from atomic coordinates. ``Specimen`` can have parameters that can be evaluated in ``Image`` models, which anticipates support for models with conformational heterogeneity. They are also now JSON serializable when using the ``Specimen.from_file`` autoloader.
- ``CryojaxObject`` is the base class for ``cryojax`` serializable dataclasses. They have a ``CryojaxObject.update`` routine that searches over data fields to update them only from a dictionary. This makes loss function APIs very simple to use with JAX---after configuring a model, simply add any parameters in an ``Image`` model's ``Specimen`` or ``PipelineState`` to a dictionary, and evaluate ``Image``s at this dictionary (or apply JAX functional transformations to them).
Currently there is no documentation generated for ``cryojax``---future releases should add this as well as more thorough unit testing!