Changes
- Previously, the sampling of the diffusion coefficient allowed for negative values, this was determined to be unphysical. Therefore, a Bayesian prior of a [Heaviside step function](https://en.wikipedia.org/wiki/Heaviside_step_function) at 0 has been assigned to the gradient/diffusion coefficient to stop this.
- It was noted that for very large number of atoms/timesteps (which are typically handled using `MDAnalysis`), there could be a memory overflow. This is due to the creation of a list of numpy arrays, for which the largest could be in the gigabyte range.
item_size * atoms * timesteps * dimensions * to Gb
8 * 20000 * 10000 * 3 * 1e-9 = 4.8 Gb
Therefore, in addition to being able to `sub_sample_traj`, it is also possible to `sub_sample_atoms` (current this is only supported of `MDAnalysis` objects), which performed the same function as `sub_sample_traj` but on the atoms instead of timesteps.
- The code is now fully [typed](https://docs.python.org/3/library/typing.html) and formatted to follow PEP8 formatted guidelines (with the exception of a 120 max line length).