Skip to content

Commit

Permalink
Finalized naming and requiremnts before making public
Browse files Browse the repository at this point in the history
  • Loading branch information
Adrien Corenflos committed Jan 31, 2021
1 parent 49fa1f4 commit 66b6ade
Show file tree
Hide file tree
Showing 23 changed files with 151 additions and 74 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ Example
-------

```python
from pekf.parallel import ieks
from pekf.utils import MVNormalParameters
from parsmooth.parallel import ieks
from parsmooth.utils import MVNormalParameters

initial_guess = MVNormalParameters(...)
data = ...
Expand Down
13 changes: 13 additions & 0 deletions notebooks/READM.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Examples for the paper Temporal Parallelization of Bayesian Smoothers [1]

### Author: [Adrien Corenflos](https://github.com/AdrienCorenflos/)

These notebooks illustrate the parallel implementation of iterated Kalman filters and smoothers on GPU. They can be downloaded to be run locally or on Google Colab:

### Last run with:
jax==0.1.77
jaxlib==0.1.55+cuda101


### References
[1] Simo Särkkä and Ángel F. García-Fernández (2021). Temporal Parallelization of Bayesian Smoothers. IEEE Transactions on Automatic Control, Volume: 66, Issue: 1, Pages 299-306. arXiv: https://arxiv.org/abs/1905.13002 DOI: https://doi.org/10.1109/TAC.2020.2976316
30 changes: 22 additions & 8 deletions notebooks/cubature_example.ipynb
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"!pip install git+https://github.com/EEA-sensors/parallel-non-linear-gaussian-smoothers.git@master"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If running on Colab please run the command above."
]
},
{
"cell_type": "markdown",
"metadata": {},
Expand All @@ -18,10 +32,10 @@
"\n",
"from jax.config import config\n",
"\n",
"from pekf.parallel import ckf, cks, icks\n",
"from pekf.sequential import ckf as seq_ckf, cks as seq_cks, icks as seq_icks\n",
"from pekf.models.bearings import get_data, make_parameters, plot_bearings\n",
"from pekf.utils import MVNormalParameters\n",
"from parsmooth.parallel import ckf, cks, icks\n",
"from parsmooth.sequential import ckf as seq_ckf, cks as seq_cks, icks as seq_icks\n",
"from parsmooth.models.bearings import get_data, make_parameters, plot_bearings\n",
"from parsmooth.utils import MVNormalParameters\n",
"\n",
"config.update(\"jax_debug_nans\", True)\n",
"config.update(\"jax_enable_x64\", True)"
Expand Down Expand Up @@ -255,9 +269,9 @@
],
"metadata": {
"kernelspec": {
"display_name": "parallelEKF",
"display_name": "parsmooth",
"language": "python",
"name": "parallelekf"
"name": "parsmooth"
},
"language_info": {
"codemirror_mode": {
Expand All @@ -269,9 +283,9 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.6"
"version": "3.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
}
28 changes: 21 additions & 7 deletions notebooks/ekf_example.ipynb
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"!pip install git+https://github.com/EEA-sensors/parallel-non-linear-gaussian-smoothers.git@master"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If running on Colab please run the command above."
]
},
{
"cell_type": "markdown",
"metadata": {},
Expand All @@ -18,10 +32,10 @@
"\n",
"from jax.config import config\n",
"\n",
"from pekf.parallel import ekf, eks, ieks\n",
"from pekf.sequential import ekf as seq_ekf, eks as seq_eks, ieks as seq_ieks\n",
"from pekf.models.bearings import get_data, make_parameters, plot_bearings\n",
"from pekf.utils import MVNormalParameters\n",
"from parsmooth.parallel import ekf, eks, ieks\n",
"from parsmooth.sequential import ekf as seq_ekf, eks as seq_eks, ieks as seq_ieks\n",
"from parsmooth.models.bearings import get_data, make_parameters, plot_bearings\n",
"from parsmooth.utils import MVNormalParameters\n",
"\n",
"config.update(\"jax_debug_nans\", True)\n",
"config.update(\"jax_enable_x64\", True)"
Expand Down Expand Up @@ -271,9 +285,9 @@
],
"metadata": {
"kernelspec": {
"display_name": "parallelEKF",
"display_name": "parsmooth",
"language": "python",
"name": "parallelekf"
"name": "parsmooth"
},
"language_info": {
"codemirror_mode": {
Expand All @@ -285,7 +299,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.6"
"version": "3.8.5"
}
},
"nbformat": 4,
Expand Down
65 changes: 28 additions & 37 deletions notebooks/linear_test.ipynb
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"!pip install git+https://github.com/EEA-sensors/parallel-non-linear-gaussian-smoothers.git@master"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If running on Colab please run the command above."
]
},
{
"cell_type": "markdown",
"metadata": {},
Expand All @@ -15,10 +29,10 @@
"source": [
"import jax.numpy as jnp\n",
"from jax import jit\n",
"from pekf.parallel import ekf, eks\n",
"from pekf.sequential import ekf as seq_ekf, eks as seq_eks, ckf as seq_ckf, cks as seq_cks\n",
"from pekf.models.linear import get_data, make_parameters\n",
"from pekf.utils import MVNormalParameters"
"from parsmooth.parallel import ekf, eks\n",
"from parsmooth.sequential import ekf as seq_ekf, eks as seq_eks, ckf as seq_ckf, cks as seq_cks\n",
"from parsmooth.models.linear import get_data, make_parameters\n",
"from parsmooth.utils import MVNormalParameters"
]
},
{
Expand All @@ -37,8 +51,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
"/u/95/corenfa1/unix/PycharmProjects/parallelEKF/venv/lib/python3.7/site-packages/jax/lib/xla_bridge.py:130: UserWarning: No GPU/TPU found, falling back to CPU.\n",
" warnings.warn('No GPU/TPU found, falling back to CPU.')\n"
"WARNING:absl:No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)\n"
]
}
],
Expand Down Expand Up @@ -134,7 +147,7 @@
},
{
"cell_type": "code",
"execution_count": 7,
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
Expand All @@ -152,20 +165,9 @@
},
{
"cell_type": "code",
"execution_count": 8,
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"8.940697e-08\n",
"8.940697e-08\n",
"1.4901161e-08\n",
"1.4901161e-08\n"
]
}
],
"outputs": [],
"source": [
"print(jnp.max(jnp.abs(par_ekf_filtered.mean - seq_ekf_filtered.mean)))\n",
"print(jnp.max(jnp.abs(par_ekf_filtered.mean - seq_ckf_filtered.mean)))\n",
Expand All @@ -183,7 +185,7 @@
},
{
"cell_type": "code",
"execution_count": 9,
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
Expand All @@ -194,20 +196,9 @@
},
{
"cell_type": "code",
"execution_count": 10,
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"5.9604645e-08\n",
"5.9604645e-08\n",
"2.9802322e-08\n",
"2.9802322e-08\n"
]
}
],
"outputs": [],
"source": [
"print(jnp.max(jnp.abs(par_eks_smoothed.mean - seq_eks_smoothed.mean)))\n",
"print(jnp.max(jnp.abs(par_eks_smoothed.mean - seq_cks_smoothed.mean)))\n",
Expand All @@ -226,9 +217,9 @@
],
"metadata": {
"kernelspec": {
"display_name": "parallelEKF",
"display_name": "parsmooth",
"language": "python",
"name": "parallelekf"
"name": "parsmooth"
},
"language_info": {
"codemirror_mode": {
Expand All @@ -240,7 +231,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.6"
"version": "3.8.5"
}
},
"nbformat": 4,
Expand Down
28 changes: 21 additions & 7 deletions notebooks/runtime.ipynb
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"!pip install git+https://github.com/EEA-sensors/parallel-non-linear-gaussian-smoothers.git@master"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If running on Colab please run the command above."
]
},
{
"cell_type": "markdown",
"metadata": {},
Expand Down Expand Up @@ -103,10 +117,10 @@
"import time\n",
"import tqdm\n",
"\n",
"from pekf.parallel import ieks, icks\n",
"from pekf.sequential import ieks as seq_ieks, icks as seq_icks\n",
"from pekf.models.bearings import get_data, make_parameters, plot_bearings\n",
"from pekf.utils import MVNormalParameters"
"from parsmooth.parallel import ieks, icks\n",
"from parsmooth.sequential import ieks as seq_ieks, icks as seq_icks\n",
"from parsmooth.models.bearings import get_data, make_parameters, plot_bearings\n",
"from parsmooth.utils import MVNormalParameters"
]
},
{
Expand Down Expand Up @@ -389,9 +403,9 @@
"toc_visible": true
},
"kernelspec": {
"display_name": "parallelEKF",
"display_name": "parsmooth",
"language": "python",
"name": "parallelekf"
"name": "parsmooth"
},
"language_info": {
"codemirror_mode": {
Expand All @@ -403,7 +417,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.6"
"version": "3.8.5"
}
},
"nbformat": 4,
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion pekf/parallel/ckf.py → parsmooth/parallel/ckf.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import jax.scipy.linalg as jlinalg
from jax import lax, vmap

from pekf.utils import MVNormalParameters, make_matrices_parameters
from parsmooth.utils import MVNormalParameters, make_matrices_parameters
from .operators import filtering_operator
from ..cubature_common import get_sigma_points, get_mv_normal_parameters, covariance_sigma_points, SigmaPoints

Expand Down
4 changes: 2 additions & 2 deletions pekf/parallel/cks.py → parsmooth/parallel/cks.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
import jax.scipy.linalg as jlinalg
from jax import lax, vmap

from pekf.parallel.ckf import filter_routine
from pekf.utils import MVNormalParameters
from parsmooth.parallel.ckf import filter_routine
from parsmooth.utils import MVNormalParameters
from .operators import smoothing_operator
from ..cubature_common import get_sigma_points, SigmaPoints, get_mv_normal_parameters, covariance_sigma_points

Expand Down
2 changes: 1 addition & 1 deletion pekf/parallel/ekf.py → parsmooth/parallel/ekf.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import jax.scipy.linalg as jlinalg
from jax import lax, vmap, jacfwd

from pekf.utils import MVNormalParameters
from parsmooth.utils import MVNormalParameters
from .operators import filtering_operator


Expand Down
2 changes: 1 addition & 1 deletion pekf/parallel/eks.py → parsmooth/parallel/eks.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import jax.scipy.linalg as jlinalg
from jax import lax, vmap, jacfwd

from pekf.utils import MVNormalParameters
from parsmooth.utils import MVNormalParameters
from .ekf import filter_routine
from .operators import smoothing_operator

Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loading

0 comments on commit 66b6ade

Please sign in to comment.