├── cran-comments.md ├── src ├── .gitignore ├── constants.h ├── samc_types.h ├── Makevars ├── Makevars.win ├── solver-cache.h ├── solver-cache.cpp ├── mortality.cpp ├── convolution.h ├── survival.cpp ├── distribution.cpp └── cond_passage.cpp ├── tests ├── testthat.R └── testthat │ ├── test-survival.R │ ├── test-samc.R │ ├── test-conv.R │ ├── test-cond_passage.R │ └── test-check.R ├── data ├── example_maze.rda ├── example_toy_res.rda └── example_split_corridor.rda ├── vignettes ├── img │ ├── br.png │ ├── bt.png │ ├── btr.png │ ├── btt.png │ ├── ggplot1.png │ ├── ggplot2.png │ ├── ggplot3.png │ ├── ggplot4.png │ ├── ggplot5.png │ ├── gifski.gif │ └── gganimate.gif ├── code-snippets.Rmd ├── tutorial-ggplot.Rmd ├── tutorial-animations.Rmd ├── article-models.Rmd ├── data-disconnected.Rmd └── scripts │ └── example-coinflip.R ├── docs ├── articles │ ├── img │ │ ├── br.png │ │ ├── bt.png │ │ ├── btr.png │ │ ├── btt.png │ │ ├── gifski.gif │ │ ├── gganimate.gif │ │ ├── ggplot1.png │ │ ├── ggplot2.png │ │ ├── ggplot3.png │ │ ├── ggplot4.png │ │ └── ggplot5.png │ ├── performance_files │ │ ├── figure-html │ │ │ ├── fig1-1.png │ │ │ ├── fig2-1.png │ │ │ └── fig3-1.png │ │ ├── header-attrs-2.10 │ │ │ └── header-attrs.js │ │ ├── header-attrs-2.11 │ │ │ └── header-attrs.js │ │ └── header-attrs-2.14 │ │ │ └── header-attrs.js │ ├── overview_files │ │ ├── figure-html │ │ │ ├── unnamed-chunk-1-1.png │ │ │ ├── unnamed-chunk-1-2.png │ │ │ └── unnamed-chunk-1-3.png │ │ ├── header-attrs-2.10 │ │ │ └── header-attrs.js │ │ ├── header-attrs-2.11 │ │ │ └── header-attrs.js │ │ └── header-attrs-2.14 │ │ │ └── header-attrs.js │ ├── article-models_files │ │ └── figure-html │ │ │ ├── unnamed-chunk-1-1.png │ │ │ ├── unnamed-chunk-1-2.png │ │ │ ├── unnamed-chunk-1-3.png │ │ │ ├── unnamed-chunk-1-4.png │ │ │ ├── unnamed-chunk-1-5.png │ │ │ └── unnamed-chunk-1-6.png │ ├── tutorial-basic_files │ │ ├── figure-html │ │ │ ├── unnamed-chunk-2-1.png │ │ │ ├── unnamed-chunk-2-2.png │ │ │ ├── unnamed-chunk-2-3.png │ │ │ ├── unnamed-chunk-5-1.png │ │ │ ├── unnamed-chunk-5-2.png │ │ │ └── unnamed-chunk-5-3.png │ │ ├── header-attrs-2.10 │ │ │ └── header-attrs.js │ │ ├── header-attrs-2.11 │ │ │ └── header-attrs.js │ │ └── header-attrs-2.14 │ │ │ └── header-attrs.js │ ├── tutorial-temporal_files │ │ ├── figure-html │ │ │ ├── unnamed-chunk-3-1.png │ │ │ ├── unnamed-chunk-4-1.png │ │ │ ├── unnamed-chunk-4-2.png │ │ │ ├── unnamed-chunk-4-3.png │ │ │ ├── unnamed-chunk-4-4.png │ │ │ ├── unnamed-chunk-5-1.png │ │ │ ├── unnamed-chunk-5-2.png │ │ │ ├── unnamed-chunk-5-3.png │ │ │ └── unnamed-chunk-5-4.png │ │ ├── header-attrs-2.10 │ │ │ └── header-attrs.js │ │ ├── header-attrs-2.11 │ │ │ └── header-attrs.js │ │ └── header-attrs-2.14 │ │ │ └── header-attrs.js │ ├── example-maze-part1_files │ │ ├── figure-html │ │ │ ├── unnamed-chunk-10-1.png │ │ │ ├── unnamed-chunk-11-1.png │ │ │ ├── unnamed-chunk-12-1.png │ │ │ ├── unnamed-chunk-13-1.png │ │ │ ├── unnamed-chunk-14-1.png │ │ │ ├── unnamed-chunk-15-1.png │ │ │ ├── unnamed-chunk-16-1.png │ │ │ ├── unnamed-chunk-17-1.png │ │ │ ├── unnamed-chunk-18-1.png │ │ │ ├── unnamed-chunk-19-1.png │ │ │ ├── unnamed-chunk-2-1.png │ │ │ ├── unnamed-chunk-21-1.png │ │ │ ├── unnamed-chunk-22-1.png │ │ │ ├── unnamed-chunk-23-1.png │ │ │ ├── unnamed-chunk-24-1.png │ │ │ ├── unnamed-chunk-3-1.png │ │ │ ├── unnamed-chunk-4-1.png │ │ │ ├── unnamed-chunk-5-1.png │ │ │ ├── unnamed-chunk-7-1.png │ │ │ ├── unnamed-chunk-8-1.png │ │ │ └── unnamed-chunk-9-1.png │ │ ├── header-attrs-2.10 │ │ │ └── header-attrs.js │ │ ├── header-attrs-2.11 │ │ │ └── header-attrs.js │ │ └── header-attrs-2.14 │ │ │ └── header-attrs.js │ ├── example-maze-part2_files │ │ ├── figure-html │ │ │ ├── unnamed-chunk-1-1.png │ │ │ ├── unnamed-chunk-1-2.png │ │ │ ├── unnamed-chunk-1-3.png │ │ │ ├── unnamed-chunk-1-4.png │ │ │ ├── unnamed-chunk-1-5.png │ │ │ ├── unnamed-chunk-10-1.png │ │ │ ├── unnamed-chunk-10-2.png │ │ │ ├── unnamed-chunk-11-1.png │ │ │ ├── unnamed-chunk-13-1.png │ │ │ ├── unnamed-chunk-13-2.png │ │ │ ├── unnamed-chunk-14-1.png │ │ │ ├── unnamed-chunk-14-2.png │ │ │ ├── unnamed-chunk-15-1.png │ │ │ ├── unnamed-chunk-17-1.png │ │ │ ├── unnamed-chunk-18-1.png │ │ │ ├── unnamed-chunk-18-2.png │ │ │ ├── unnamed-chunk-19-1.png │ │ │ ├── unnamed-chunk-19-2.png │ │ │ ├── unnamed-chunk-2-1.png │ │ │ ├── unnamed-chunk-20-1.png │ │ │ ├── unnamed-chunk-21-1.png │ │ │ ├── unnamed-chunk-23-1.png │ │ │ ├── unnamed-chunk-23-2.png │ │ │ ├── unnamed-chunk-24-1.png │ │ │ ├── unnamed-chunk-24-2.png │ │ │ ├── unnamed-chunk-5-1.png │ │ │ ├── unnamed-chunk-6-1.png │ │ │ ├── unnamed-chunk-7-1.png │ │ │ ├── unnamed-chunk-7-2.png │ │ │ ├── unnamed-chunk-8-1.png │ │ │ ├── unnamed-chunk-8-2.png │ │ │ ├── unnamed-chunk-9-1.png │ │ │ └── unnamed-chunk-9-2.png │ │ ├── header-attrs-2.10 │ │ │ └── header-attrs.js │ │ ├── header-attrs-2.11 │ │ │ └── header-attrs.js │ │ └── header-attrs-2.14 │ │ │ └── header-attrs.js │ ├── example-maze-part3_files │ │ ├── figure-html │ │ │ ├── unnamed-chunk-1-1.png │ │ │ ├── unnamed-chunk-1-2.png │ │ │ ├── unnamed-chunk-1-3.png │ │ │ ├── unnamed-chunk-1-4.png │ │ │ ├── unnamed-chunk-1-5.png │ │ │ ├── unnamed-chunk-1-6.png │ │ │ ├── unnamed-chunk-1-7.png │ │ │ ├── unnamed-chunk-10-1.png │ │ │ ├── unnamed-chunk-11-1.png │ │ │ ├── unnamed-chunk-11-2.png │ │ │ ├── unnamed-chunk-13-1.png │ │ │ ├── unnamed-chunk-2-1.png │ │ │ ├── unnamed-chunk-6-1.png │ │ │ └── unnamed-chunk-9-1.png │ │ ├── header-attrs-2.10 │ │ │ └── header-attrs.js │ │ ├── header-attrs-2.11 │ │ │ └── header-attrs.js │ │ └── header-attrs-2.14 │ │ │ └── header-attrs.js │ ├── tutorial-locations_files │ │ ├── figure-html │ │ │ ├── unnamed-chunk-3-1.png │ │ │ ├── unnamed-chunk-3-2.png │ │ │ ├── unnamed-chunk-4-1.png │ │ │ └── unnamed-chunk-4-2.png │ │ ├── header-attrs-2.10 │ │ │ └── header-attrs.js │ │ ├── header-attrs-2.11 │ │ │ └── header-attrs.js │ │ └── header-attrs-2.14 │ │ │ └── header-attrs.js │ ├── article-circuit-theory_files │ │ └── figure-html │ │ │ ├── unnamed-chunk-1-1.png │ │ │ ├── unnamed-chunk-1-2.png │ │ │ ├── unnamed-chunk-2-1.png │ │ │ ├── unnamed-chunk-2-2.png │ │ │ ├── unnamed-chunk-5-1.png │ │ │ ├── unnamed-chunk-5-2.png │ │ │ ├── unnamed-chunk-6-1.png │ │ │ ├── unnamed-chunk-6-2.png │ │ │ ├── unnamed-chunk-6-3.png │ │ │ ├── unnamed-chunk-6-4.png │ │ │ ├── unnamed-chunk-7-1.png │ │ │ ├── unnamed-chunk-7-2.png │ │ │ ├── unnamed-chunk-8-1.png │ │ │ ├── unnamed-chunk-8-2.png │ │ │ └── unnamed-chunk-9-1.png │ ├── tutorial-multiple-absorption_files │ │ ├── figure-html │ │ │ ├── unnamed-chunk-2-1.png │ │ │ ├── unnamed-chunk-3-1.png │ │ │ ├── unnamed-chunk-4-1.png │ │ │ └── unnamed-chunk-5-1.png │ │ ├── header-attrs-2.10 │ │ │ └── header-attrs.js │ │ ├── header-attrs-2.11 │ │ │ └── header-attrs.js │ │ └── header-attrs-2.14 │ │ │ └── header-attrs.js │ ├── parallel_files │ │ ├── header-attrs-2.10 │ │ │ └── header-attrs.js │ │ ├── header-attrs-2.11 │ │ │ └── header-attrs.js │ │ └── header-attrs-2.14 │ │ │ └── header-attrs.js │ ├── code-snippets_files │ │ ├── header-attrs-2.10 │ │ │ └── header-attrs.js │ │ ├── header-attrs-2.11 │ │ │ └── header-attrs.js │ │ └── header-attrs-2.14 │ │ │ └── header-attrs.js │ ├── example-coinflip_files │ │ ├── header-attrs-2.11 │ │ │ └── header-attrs.js │ │ └── header-attrs-2.14 │ │ │ └── header-attrs.js │ ├── troubleshooting_files │ │ ├── header-attrs-2.10 │ │ │ └── header-attrs.js │ │ ├── header-attrs-2.11 │ │ │ └── header-attrs.js │ │ └── header-attrs-2.14 │ │ │ └── header-attrs.js │ ├── tutorial-ggplot_files │ │ ├── header-attrs-2.10 │ │ │ └── header-attrs.js │ │ ├── header-attrs-2.11 │ │ │ └── header-attrs.js │ │ └── header-attrs-2.14 │ │ │ └── header-attrs.js │ ├── data-disconnected_files │ │ ├── header-attrs-2.10 │ │ │ └── header-attrs.js │ │ ├── header-attrs-2.11 │ │ │ └── header-attrs.js │ │ └── header-attrs-2.14 │ │ │ └── header-attrs.js │ └── tutorial-animations_files │ │ ├── header-attrs-2.10 │ │ └── header-attrs.js │ │ ├── header-attrs-2.11 │ │ └── header-attrs.js │ │ └── header-attrs-2.14 │ │ └── header-attrs.js ├── reference │ ├── Rplot001.png │ ├── locate-1.png │ └── figures │ │ ├── 3d-stack.png │ │ └── 3d-stack-small.png ├── deps │ ├── Lato-0.4.9 │ │ ├── S6uyw4BMUTPHjx4wXg.woff2 │ │ ├── S6uyw4BMUTPHjxAwXjeu.woff2 │ │ └── font.css │ ├── Roboto-0.4.9 │ │ ├── KFOmCnqEu92Fr1Mu4mxK.woff2 │ │ ├── KFOmCnqEu92Fr1Mu4WxKOzY.woff2 │ │ ├── KFOmCnqEu92Fr1Mu5mxKOzY.woff2 │ │ ├── KFOmCnqEu92Fr1Mu72xKOzY.woff2 │ │ ├── KFOmCnqEu92Fr1Mu7GxKOzY.woff2 │ │ ├── KFOmCnqEu92Fr1Mu7WxKOzY.woff2 │ │ ├── KFOmCnqEu92Fr1Mu7mxKOzY.woff2 │ │ └── font.css │ ├── bootstrap-5.3.1 │ │ └── fonts │ │ │ ├── S6uyw4BMUTPHjx4wXg.woff2 │ │ │ ├── 4iCs6KVjbNBYlgoKfw72.woff2 │ │ │ ├── KFOmCnqEu92Fr1Mu4mxK.woff2 │ │ │ ├── S6u8w4BMUTPHjxsAXC-q.woff2 │ │ │ ├── S6uyw4BMUTPHjxAwXjeu.woff2 │ │ │ ├── XRXV3I6Li01BKofINeaB.woff2 │ │ │ ├── q5uGsou0JOdh94bfvQlt.woff2 │ │ │ ├── 1Ptug8zYS_SKggPNyC0ITw.woff2 │ │ │ ├── 4iCs6KVjbNBYlgoKcQ72j00.woff2 │ │ │ ├── 4iCs6KVjbNBYlgoKcg72j00.woff2 │ │ │ ├── 4iCs6KVjbNBYlgoKcw72j00.woff2 │ │ │ ├── 4iCs6KVjbNBYlgoKew72j00.woff2 │ │ │ ├── 4iCs6KVjbNBYlgoKfA72j00.woff2 │ │ │ ├── KFOmCnqEu92Fr1Mu4WxKOzY.woff2 │ │ │ ├── KFOmCnqEu92Fr1Mu5mxKOzY.woff2 │ │ │ ├── KFOmCnqEu92Fr1Mu72xKOzY.woff2 │ │ │ ├── KFOmCnqEu92Fr1Mu7GxKOzY.woff2 │ │ │ ├── KFOmCnqEu92Fr1Mu7WxKOzY.woff2 │ │ │ ├── KFOmCnqEu92Fr1Mu7mxKOzY.woff2 │ │ │ ├── S6u8w4BMUTPHjxsAUi-qJCY.woff2 │ │ │ ├── S6u9w4BMUTPHh6UVSwiPGQ.woff2 │ │ │ ├── S6u9w4BMUTPHh7USSwiPGQ.woff2 │ │ │ ├── XRXV3I6Li01BKofIMeaBXso.woff2 │ │ │ ├── XRXV3I6Li01BKofIO-aBXso.woff2 │ │ │ ├── XRXV3I6Li01BKofIOOaBXso.woff2 │ │ │ ├── XRXV3I6Li01BKofIOuaBXso.woff2 │ │ │ ├── q5uGsou0JOdh94bfuQltOxU.woff2 │ │ │ ├── 1Ptug8zYS_SKggPNyCAIT5lu.woff2 │ │ │ ├── 1Ptug8zYS_SKggPNyCIIT5lu.woff2 │ │ │ ├── 1Ptug8zYS_SKggPNyCMIT5lu.woff2 │ │ │ ├── 1Ptug8zYS_SKggPNyCkIT5lu.woff2 │ │ │ ├── 4iCv6KVjbNBYlgoCxCvjsGyN.woff2 │ │ │ ├── KFOlCnqEu92Fr1MmEU9fBBc4.woff2 │ │ │ ├── KFOlCnqEu92Fr1MmSU5fBBc4.woff2 │ │ │ ├── KFOlCnqEu92Fr1MmWUlfBBc4.woff2 │ │ │ ├── S6u9w4BMUTPHh6UVSwaPGR_p.woff2 │ │ │ ├── S6u9w4BMUTPHh7USSwaPGR_p.woff2 │ │ │ ├── 4iCv6KVjbNBYlgoCxCvjs2yNL4U.woff2 │ │ │ ├── 4iCv6KVjbNBYlgoCxCvjtGyNL4U.woff2 │ │ │ ├── 4iCv6KVjbNBYlgoCxCvjvGyNL4U.woff2 │ │ │ ├── 4iCv6KVjbNBYlgoCxCvjvWyNL4U.woff2 │ │ │ ├── 4iCv6KVjbNBYlgoCxCvjvmyNL4U.woff2 │ │ │ ├── CSR64z1Qlv-GDxkbKVQ_fO4KTet_.woff2 │ │ │ ├── CSR64z1Qlv-GDxkbKVQ_fOAKTQ.woff2 │ │ │ ├── JTUSjIg1_i6t8kCHKm459W1hyzbi.woff2 │ │ │ ├── JTUSjIg1_i6t8kCHKm459WRhyzbi.woff2 │ │ │ ├── JTUSjIg1_i6t8kCHKm459WZhyzbi.woff2 │ │ │ ├── JTUSjIg1_i6t8kCHKm459Wdhyzbi.woff2 │ │ │ ├── JTUSjIg1_i6t8kCHKm459Wlhyw.woff2 │ │ │ ├── KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2 │ │ │ ├── KFOlCnqEu92Fr1MmEU9fBxc4EsA.woff2 │ │ │ ├── KFOlCnqEu92Fr1MmEU9fCBc4EsA.woff2 │ │ │ ├── KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2 │ │ │ ├── KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2 │ │ │ ├── KFOlCnqEu92Fr1MmEU9fCxc4EsA.woff2 │ │ │ ├── KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 │ │ │ ├── KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2 │ │ │ ├── KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2 │ │ │ ├── KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 │ │ │ ├── KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 │ │ │ ├── KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2 │ │ │ ├── KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 │ │ │ ├── KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2 │ │ │ ├── KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2 │ │ │ ├── KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 │ │ │ ├── KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 │ │ │ ├── KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2 │ │ │ ├── QGYpz_kZZAGCONcK2A4bGOj8mNhN.woff2 │ │ │ ├── CSR54z1Qlv-GDxkbKVQ_dFsvWNReuQ.woff2 │ │ │ ├── 07d40e985ad7c747025dabb9f22142c4.woff2 │ │ │ ├── 1f5e011d6aae0d98fc0518e1a303e99a.woff2 │ │ │ ├── 626330658504e338ee86aec8e957426b.woff2 │ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2 │ │ │ ├── CSR54z1Qlv-GDxkbKVQ_dFsvWNpeudwk.woff2 │ │ │ ├── HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevW.woff2 │ │ │ ├── c2f002b3a87d3f9bfeebb23d32cfd9f8.woff2 │ │ │ ├── ee91700cdbf7ce16c054c2bb8946c736.woff2 │ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2 │ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lqDY.woff2 │ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lqDY.woff2 │ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lqDY.woff2 │ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lqDY.woff2 │ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lqDY.woff2 │ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lqDY.woff2 │ │ │ ├── HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvUlMI.woff2 │ │ │ ├── HI_SiYsKILxRpg3hIP6sJ7fM7PqlM-vWjMY.woff2 │ │ │ ├── HI_SiYsKILxRpg3hIP6sJ7fM7PqlMOvWjMY.woff2 │ │ │ ├── HI_SiYsKILxRpg3hIP6sJ7fM7PqlMevWjMY.woff2 │ │ │ ├── HI_SiYsKILxRpg3hIP6sJ7fM7PqlMuvWjMY.woff2 │ │ │ ├── HI_SiYsKILxRpg3hIP6sJ7fM7PqlOevWjMY.woff2 │ │ │ ├── HI_SiYsKILxRpg3hIP6sJ7fM7PqlPuvWjMY.woff2 │ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7jsDJT9g.woff2 │ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7ksDJT9g.woff2 │ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7osDJT9g.woff2 │ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7psDJT9g.woff2 │ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7qsDJT9g.woff2 │ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7rsDJT9g.woff2 │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2 │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2 │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2 │ │ │ ├── HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvQlMIXxw.woff2 │ │ │ ├── HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvXlMIXxw.woff2 │ │ │ ├── HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvYlMIXxw.woff2 │ │ │ ├── HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvZlMIXxw.woff2 │ │ │ ├── HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvalMIXxw.woff2 │ │ │ ├── HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvblMIXxw.woff2 │ │ │ ├── UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7.woff2 │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwkxduz8A.woff2 │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlBduz8A.woff2 │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmBduz8A.woff2 │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmRduz8A.woff2 │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmhduz8A.woff2 │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmxduz8A.woff2 │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwkxduz8A.woff2 │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlBduz8A.woff2 │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmBduz8A.woff2 │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmRduz8A.woff2 │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmhduz8A.woff2 │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmxduz8A.woff2 │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwkxduz8A.woff2 │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlBduz8A.woff2 │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmBduz8A.woff2 │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmRduz8A.woff2 │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmhduz8A.woff2 │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmxduz8A.woff2 │ │ │ ├── UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa0ZL7SUc.woff2 │ │ │ ├── UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1pL7SUc.woff2 │ │ │ ├── UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7SUc.woff2 │ │ │ ├── UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2JL7SUc.woff2 │ │ │ ├── UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2ZL7SUc.woff2 │ │ │ ├── UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2pL7SUc.woff2 │ │ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-muw.woff2 │ │ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6F.woff2 │ │ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu1aB.woff2 │ │ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu1aB.woff2 │ │ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu1aB.woff2 │ │ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu1aB.woff2 │ │ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu1aB.woff2 │ │ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu1aB.woff2 │ │ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu1aB.woff2 │ │ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTUGmu1aB.woff2 │ │ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTVOmu1aB.woff2 │ │ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqW106F15M.woff2 │ │ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06F15M.woff2 │ │ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6F15M.woff2 │ │ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6F15M.woff2 │ │ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6F15M.woff2 │ │ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06F15M.woff2 │ │ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6F15M.woff2 │ │ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6F15M.woff2 │ │ │ └── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWxU6F15M.woff2 │ ├── font-awesome-6.4.2 │ │ └── webfonts │ │ │ ├── fa-brands-400.ttf │ │ │ ├── fa-regular-400.ttf │ │ │ ├── fa-solid-900.ttf │ │ │ ├── fa-solid-900.woff2 │ │ │ ├── fa-brands-400.woff2 │ │ │ ├── fa-regular-400.woff2 │ │ │ ├── fa-v4compatibility.ttf │ │ │ └── fa-v4compatibility.woff2 │ ├── Montserrat-0.4.9 │ │ ├── JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw5aXo.woff2 │ │ ├── JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw0aXpsog.woff2 │ │ ├── JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw2aXpsog.woff2 │ │ ├── JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw3aXpsog.woff2 │ │ ├── JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw9aXpsog.woff2 │ │ └── font.css │ ├── Open_Sans-0.4.9 │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVI.woff2 │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4iaVIGxA.woff2 │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4jaVIGxA.woff2 │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4kaVIGxA.woff2 │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4saVIGxA.woff2 │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4taVIGxA.woff2 │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4uaVIGxA.woff2 │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4vaVIGxA.woff2 │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B5OaVIGxA.woff2 │ │ └── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B5caVIGxA.woff2 │ ├── headroom-0.11.0 │ │ └── jQuery.headroom.min.js │ ├── data-deps.txt │ └── bootstrap-toc-1.0.1 │ │ └── bootstrap-toc.min.js ├── katex-auto.js ├── link.svg ├── pkgdown.yml ├── bootstrap-toc.css ├── docsearch.js ├── lightswitch.js └── sitemap.xml ├── man └── figures │ ├── 3d-stack.png │ └── 3d-stack-small.png ├── CRAN-SUBMISSION ├── man-roxygen ├── param-samc.R ├── section-perf.R ├── param-init.R ├── param-dest.R ├── param-origin.R └── param-time.R ├── .gitignore ├── NAMESPACE ├── .Rbuildignore ├── samc.Rproj ├── R ├── zzz.R ├── location-class.R ├── internal-utils.R ├── data.R ├── internal-classes.R ├── rasterize.R └── survival.R ├── inst ├── examples │ ├── pairwise.R │ ├── locate.R │ └── example.R └── CITATION ├── DESCRIPTION ├── _pkgdown.yml └── README.md /cran-comments.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/.gitignore: -------------------------------------------------------------------------------- 1 | *.o 2 | *.so 3 | *.dll 4 | -------------------------------------------------------------------------------- /tests/testthat.R: -------------------------------------------------------------------------------- 1 | library(testthat) 2 | library(samc) 3 | 4 | test_check("samc") 5 | -------------------------------------------------------------------------------- /data/example_maze.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/data/example_maze.rda -------------------------------------------------------------------------------- /vignettes/img/br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/vignettes/img/br.png -------------------------------------------------------------------------------- /vignettes/img/bt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/vignettes/img/bt.png -------------------------------------------------------------------------------- /vignettes/img/btr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/vignettes/img/btr.png -------------------------------------------------------------------------------- /vignettes/img/btt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/vignettes/img/btt.png -------------------------------------------------------------------------------- /data/example_toy_res.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/data/example_toy_res.rda -------------------------------------------------------------------------------- /docs/articles/img/br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/img/br.png -------------------------------------------------------------------------------- /docs/articles/img/bt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/img/bt.png -------------------------------------------------------------------------------- /docs/articles/img/btr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/img/btr.png -------------------------------------------------------------------------------- /docs/articles/img/btt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/img/btt.png -------------------------------------------------------------------------------- /man/figures/3d-stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/man/figures/3d-stack.png -------------------------------------------------------------------------------- /vignettes/img/ggplot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/vignettes/img/ggplot1.png -------------------------------------------------------------------------------- /vignettes/img/ggplot2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/vignettes/img/ggplot2.png -------------------------------------------------------------------------------- /vignettes/img/ggplot3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/vignettes/img/ggplot3.png -------------------------------------------------------------------------------- /vignettes/img/ggplot4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/vignettes/img/ggplot4.png -------------------------------------------------------------------------------- /vignettes/img/ggplot5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/vignettes/img/ggplot5.png -------------------------------------------------------------------------------- /vignettes/img/gifski.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/vignettes/img/gifski.gif -------------------------------------------------------------------------------- /docs/articles/img/gifski.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/img/gifski.gif -------------------------------------------------------------------------------- /docs/reference/Rplot001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/reference/Rplot001.png -------------------------------------------------------------------------------- /docs/reference/locate-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/reference/locate-1.png -------------------------------------------------------------------------------- /vignettes/img/gganimate.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/vignettes/img/gganimate.gif -------------------------------------------------------------------------------- /data/example_split_corridor.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/data/example_split_corridor.rda -------------------------------------------------------------------------------- /docs/articles/img/gganimate.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/img/gganimate.gif -------------------------------------------------------------------------------- /docs/articles/img/ggplot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/img/ggplot1.png -------------------------------------------------------------------------------- /docs/articles/img/ggplot2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/img/ggplot2.png -------------------------------------------------------------------------------- /docs/articles/img/ggplot3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/img/ggplot3.png -------------------------------------------------------------------------------- /docs/articles/img/ggplot4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/img/ggplot4.png -------------------------------------------------------------------------------- /docs/articles/img/ggplot5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/img/ggplot5.png -------------------------------------------------------------------------------- /man/figures/3d-stack-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/man/figures/3d-stack-small.png -------------------------------------------------------------------------------- /CRAN-SUBMISSION: -------------------------------------------------------------------------------- 1 | Version: 4.0.0 2 | Date: 2024-10-30 22:17:43 UTC 3 | SHA: 42c198ff5e53bcd381aeba5fc4967c93b7f07bc2 4 | -------------------------------------------------------------------------------- /docs/reference/figures/3d-stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/reference/figures/3d-stack.png -------------------------------------------------------------------------------- /man-roxygen/param-samc.R: -------------------------------------------------------------------------------- 1 | #' @param samc A \code{\link{samc-class}} object created using the \code{\link{samc}} function. 2 | -------------------------------------------------------------------------------- /docs/reference/figures/3d-stack-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/reference/figures/3d-stack-small.png -------------------------------------------------------------------------------- /docs/deps/Lato-0.4.9/S6uyw4BMUTPHjx4wXg.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Lato-0.4.9/S6uyw4BMUTPHjx4wXg.woff2 -------------------------------------------------------------------------------- /docs/deps/Lato-0.4.9/S6uyw4BMUTPHjxAwXjeu.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Lato-0.4.9/S6uyw4BMUTPHjxAwXjeu.woff2 -------------------------------------------------------------------------------- /docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu4mxK.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu4mxK.woff2 -------------------------------------------------------------------------------- /src/constants.h: -------------------------------------------------------------------------------- 1 | // constants.h 2 | #ifndef CONSTANTS_H 3 | #define CONSTANTS_H 4 | 5 | const int INTERRUPT_CHECK_INTERVAL = 1000; 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu4WxKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 -------------------------------------------------------------------------------- /docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu5mxKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 -------------------------------------------------------------------------------- /docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu72xKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu72xKOzY.woff2 -------------------------------------------------------------------------------- /docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu7GxKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 -------------------------------------------------------------------------------- /docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu7WxKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 -------------------------------------------------------------------------------- /docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu7mxKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 -------------------------------------------------------------------------------- /docs/articles/performance_files/figure-html/fig1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/performance_files/figure-html/fig1-1.png -------------------------------------------------------------------------------- /docs/articles/performance_files/figure-html/fig2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/performance_files/figure-html/fig2-1.png -------------------------------------------------------------------------------- /docs/articles/performance_files/figure-html/fig3-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/performance_files/figure-html/fig3-1.png -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/S6uyw4BMUTPHjx4wXg.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/S6uyw4BMUTPHjx4wXg.woff2 -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.4.2/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/font-awesome-6.4.2/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.4.2/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/font-awesome-6.4.2/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.4.2/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/font-awesome-6.4.2/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.4.2/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/font-awesome-6.4.2/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKfw72.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKfw72.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu4mxK.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu4mxK.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/S6u8w4BMUTPHjxsAXC-q.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/S6u8w4BMUTPHjxsAXC-q.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/S6uyw4BMUTPHjxAwXjeu.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/S6uyw4BMUTPHjxAwXjeu.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofINeaB.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofINeaB.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/q5uGsou0JOdh94bfvQlt.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/q5uGsou0JOdh94bfvQlt.woff2 -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.4.2/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/font-awesome-6.4.2/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.4.2/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/font-awesome-6.4.2/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyC0ITw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyC0ITw.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKcQ72j00.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKcQ72j00.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKcg72j00.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKcg72j00.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKcw72j00.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKcw72j00.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKew72j00.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKew72j00.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKfA72j00.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKfA72j00.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu4WxKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu5mxKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu72xKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu72xKOzY.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu7GxKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu7WxKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu7mxKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/S6u8w4BMUTPHjxsAUi-qJCY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/S6u8w4BMUTPHjxsAUi-qJCY.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh6UVSwiPGQ.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh6UVSwiPGQ.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh7USSwiPGQ.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh7USSwiPGQ.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofIMeaBXso.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofIMeaBXso.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofIO-aBXso.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofIO-aBXso.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofIOOaBXso.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofIOOaBXso.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofIOuaBXso.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofIOuaBXso.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/q5uGsou0JOdh94bfuQltOxU.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/q5uGsou0JOdh94bfuQltOxU.woff2 -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.4.2/webfonts/fa-v4compatibility.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/font-awesome-6.4.2/webfonts/fa-v4compatibility.ttf -------------------------------------------------------------------------------- /docs/articles/overview_files/figure-html/unnamed-chunk-1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/overview_files/figure-html/unnamed-chunk-1-1.png -------------------------------------------------------------------------------- /docs/articles/overview_files/figure-html/unnamed-chunk-1-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/overview_files/figure-html/unnamed-chunk-1-2.png -------------------------------------------------------------------------------- /docs/articles/overview_files/figure-html/unnamed-chunk-1-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/overview_files/figure-html/unnamed-chunk-1-3.png -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyCAIT5lu.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyCAIT5lu.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyCIIT5lu.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyCIIT5lu.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyCMIT5lu.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyCMIT5lu.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyCkIT5lu.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyCkIT5lu.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjsGyN.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjsGyN.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fBBc4.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fBBc4.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fBBc4.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fBBc4.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfBBc4.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh6UVSwaPGR_p.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh6UVSwaPGR_p.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh7USSwaPGR_p.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh7USSwaPGR_p.woff2 -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.4.2/webfonts/fa-v4compatibility.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/font-awesome-6.4.2/webfonts/fa-v4compatibility.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjs2yNL4U.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjs2yNL4U.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjtGyNL4U.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjtGyNL4U.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjvGyNL4U.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjvGyNL4U.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjvWyNL4U.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjvWyNL4U.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjvmyNL4U.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjvmyNL4U.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/CSR64z1Qlv-GDxkbKVQ_fO4KTet_.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/CSR64z1Qlv-GDxkbKVQ_fO4KTet_.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/CSR64z1Qlv-GDxkbKVQ_fOAKTQ.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/CSR64z1Qlv-GDxkbKVQ_fOAKTQ.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459W1hyzbi.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459W1hyzbi.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459WRhyzbi.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459WRhyzbi.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459WZhyzbi.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459WZhyzbi.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459Wdhyzbi.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459Wdhyzbi.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fBxc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fBxc4EsA.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fCBc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fCBc4EsA.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fCxc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fCxc4EsA.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhN.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhN.woff2 -------------------------------------------------------------------------------- /docs/articles/article-models_files/figure-html/unnamed-chunk-1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/article-models_files/figure-html/unnamed-chunk-1-1.png -------------------------------------------------------------------------------- /docs/articles/article-models_files/figure-html/unnamed-chunk-1-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/article-models_files/figure-html/unnamed-chunk-1-2.png -------------------------------------------------------------------------------- /docs/articles/article-models_files/figure-html/unnamed-chunk-1-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/article-models_files/figure-html/unnamed-chunk-1-3.png -------------------------------------------------------------------------------- /docs/articles/article-models_files/figure-html/unnamed-chunk-1-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/article-models_files/figure-html/unnamed-chunk-1-4.png -------------------------------------------------------------------------------- /docs/articles/article-models_files/figure-html/unnamed-chunk-1-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/article-models_files/figure-html/unnamed-chunk-1-5.png -------------------------------------------------------------------------------- /docs/articles/article-models_files/figure-html/unnamed-chunk-1-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/article-models_files/figure-html/unnamed-chunk-1-6.png -------------------------------------------------------------------------------- /docs/articles/tutorial-basic_files/figure-html/unnamed-chunk-2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-basic_files/figure-html/unnamed-chunk-2-1.png -------------------------------------------------------------------------------- /docs/articles/tutorial-basic_files/figure-html/unnamed-chunk-2-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-basic_files/figure-html/unnamed-chunk-2-2.png -------------------------------------------------------------------------------- /docs/articles/tutorial-basic_files/figure-html/unnamed-chunk-2-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-basic_files/figure-html/unnamed-chunk-2-3.png -------------------------------------------------------------------------------- /docs/articles/tutorial-basic_files/figure-html/unnamed-chunk-5-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-basic_files/figure-html/unnamed-chunk-5-1.png -------------------------------------------------------------------------------- /docs/articles/tutorial-basic_files/figure-html/unnamed-chunk-5-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-basic_files/figure-html/unnamed-chunk-5-2.png -------------------------------------------------------------------------------- /docs/articles/tutorial-basic_files/figure-html/unnamed-chunk-5-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-basic_files/figure-html/unnamed-chunk-5-3.png -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNReuQ.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNReuQ.woff2 -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .Rproj.user 2 | .Rhistory 3 | .RData 4 | .Ruserdata 5 | inst/doc 6 | doc 7 | Meta 8 | **/performance_cache 9 | *.pdf 10 | other 11 | benchmark 12 | man/*.Rd 13 | docs 14 | -------------------------------------------------------------------------------- /docs/articles/tutorial-temporal_files/figure-html/unnamed-chunk-3-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-temporal_files/figure-html/unnamed-chunk-3-1.png -------------------------------------------------------------------------------- /docs/articles/tutorial-temporal_files/figure-html/unnamed-chunk-4-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-temporal_files/figure-html/unnamed-chunk-4-1.png -------------------------------------------------------------------------------- /docs/articles/tutorial-temporal_files/figure-html/unnamed-chunk-4-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-temporal_files/figure-html/unnamed-chunk-4-2.png -------------------------------------------------------------------------------- /docs/articles/tutorial-temporal_files/figure-html/unnamed-chunk-4-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-temporal_files/figure-html/unnamed-chunk-4-3.png -------------------------------------------------------------------------------- /docs/articles/tutorial-temporal_files/figure-html/unnamed-chunk-4-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-temporal_files/figure-html/unnamed-chunk-4-4.png -------------------------------------------------------------------------------- /docs/articles/tutorial-temporal_files/figure-html/unnamed-chunk-5-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-temporal_files/figure-html/unnamed-chunk-5-1.png -------------------------------------------------------------------------------- /docs/articles/tutorial-temporal_files/figure-html/unnamed-chunk-5-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-temporal_files/figure-html/unnamed-chunk-5-2.png -------------------------------------------------------------------------------- /docs/articles/tutorial-temporal_files/figure-html/unnamed-chunk-5-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-temporal_files/figure-html/unnamed-chunk-5-3.png -------------------------------------------------------------------------------- /docs/articles/tutorial-temporal_files/figure-html/unnamed-chunk-5-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-temporal_files/figure-html/unnamed-chunk-5-4.png -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/07d40e985ad7c747025dabb9f22142c4.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/07d40e985ad7c747025dabb9f22142c4.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/1f5e011d6aae0d98fc0518e1a303e99a.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/1f5e011d6aae0d98fc0518e1a303e99a.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/626330658504e338ee86aec8e957426b.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/626330658504e338ee86aec8e957426b.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNpeudwk.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNpeudwk.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevW.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevW.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/c2f002b3a87d3f9bfeebb23d32cfd9f8.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/c2f002b3a87d3f9bfeebb23d32cfd9f8.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/ee91700cdbf7ce16c054c2bb8946c736.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/ee91700cdbf7ce16c054c2bb8946c736.woff2 -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-10-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-10-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-11-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-11-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-12-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-12-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-13-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-13-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-14-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-14-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-15-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-15-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-16-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-16-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-17-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-17-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-18-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-18-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-19-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-19-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-2-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-21-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-21-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-22-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-22-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-23-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-23-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-24-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-24-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-3-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-3-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-4-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-4-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-5-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-5-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-7-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-7-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-8-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-8-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-9-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part1_files/figure-html/unnamed-chunk-9-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-1-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-1-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-1-2.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-1-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-1-3.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-1-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-1-4.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-1-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-1-5.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-10-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-10-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-10-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-10-2.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-11-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-11-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-13-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-13-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-13-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-13-2.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-14-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-14-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-14-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-14-2.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-15-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-15-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-17-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-17-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-18-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-18-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-18-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-18-2.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-19-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-19-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-19-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-19-2.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-2-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-20-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-20-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-21-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-21-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-23-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-23-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-23-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-23-2.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-24-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-24-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-24-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-24-2.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-5-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-5-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-6-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-6-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-7-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-7-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-7-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-7-2.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-8-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-8-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-8-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-8-2.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-9-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-9-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-9-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part2_files/figure-html/unnamed-chunk-9-2.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-1-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-1-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-1-2.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-1-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-1-3.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-1-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-1-4.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-1-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-1-5.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-1-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-1-6.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-1-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-1-7.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-10-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-10-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-11-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-11-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-11-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-11-2.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-13-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-13-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-2-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-6-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-6-1.png -------------------------------------------------------------------------------- /docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-9-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/example-maze-part3_files/figure-html/unnamed-chunk-9-1.png -------------------------------------------------------------------------------- /docs/articles/tutorial-locations_files/figure-html/unnamed-chunk-3-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-locations_files/figure-html/unnamed-chunk-3-1.png -------------------------------------------------------------------------------- /docs/articles/tutorial-locations_files/figure-html/unnamed-chunk-3-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-locations_files/figure-html/unnamed-chunk-3-2.png -------------------------------------------------------------------------------- /docs/articles/tutorial-locations_files/figure-html/unnamed-chunk-4-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-locations_files/figure-html/unnamed-chunk-4-1.png -------------------------------------------------------------------------------- /docs/articles/tutorial-locations_files/figure-html/unnamed-chunk-4-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-locations_files/figure-html/unnamed-chunk-4-2.png -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lqDY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lqDY.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lqDY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lqDY.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lqDY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lqDY.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lqDY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lqDY.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lqDY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lqDY.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lqDY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lqDY.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvUlMI.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvUlMI.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlM-vWjMY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlM-vWjMY.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMOvWjMY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMOvWjMY.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMevWjMY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMevWjMY.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMuvWjMY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMuvWjMY.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlOevWjMY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlOevWjMY.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPuvWjMY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPuvWjMY.woff2 -------------------------------------------------------------------------------- /docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-1-1.png -------------------------------------------------------------------------------- /docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-1-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-1-2.png -------------------------------------------------------------------------------- /docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-2-1.png -------------------------------------------------------------------------------- /docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-2-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-2-2.png -------------------------------------------------------------------------------- /docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-5-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-5-1.png -------------------------------------------------------------------------------- /docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-5-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-5-2.png -------------------------------------------------------------------------------- /docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-6-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-6-1.png -------------------------------------------------------------------------------- /docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-6-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-6-2.png -------------------------------------------------------------------------------- /docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-6-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-6-3.png -------------------------------------------------------------------------------- /docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-6-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-6-4.png -------------------------------------------------------------------------------- /docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-7-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-7-1.png -------------------------------------------------------------------------------- /docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-7-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-7-2.png -------------------------------------------------------------------------------- /docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-8-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-8-1.png -------------------------------------------------------------------------------- /docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-8-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-8-2.png -------------------------------------------------------------------------------- /docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-9-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/article-circuit-theory_files/figure-html/unnamed-chunk-9-1.png -------------------------------------------------------------------------------- /docs/deps/Montserrat-0.4.9/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw5aXo.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Montserrat-0.4.9/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw5aXo.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7jsDJT9g.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7jsDJT9g.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7ksDJT9g.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7ksDJT9g.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7osDJT9g.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7osDJT9g.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7psDJT9g.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7psDJT9g.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7qsDJT9g.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7qsDJT9g.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7rsDJT9g.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7rsDJT9g.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvQlMIXxw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvQlMIXxw.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvXlMIXxw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvXlMIXxw.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvYlMIXxw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvYlMIXxw.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvZlMIXxw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvZlMIXxw.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvalMIXxw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvalMIXxw.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvblMIXxw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvblMIXxw.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwkxduz8A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwkxduz8A.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlBduz8A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlBduz8A.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmBduz8A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmBduz8A.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmRduz8A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmRduz8A.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmhduz8A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmhduz8A.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmxduz8A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmxduz8A.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwkxduz8A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwkxduz8A.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlBduz8A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlBduz8A.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmBduz8A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmBduz8A.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmRduz8A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmRduz8A.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmhduz8A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmhduz8A.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmxduz8A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmxduz8A.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwkxduz8A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwkxduz8A.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlBduz8A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlBduz8A.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmBduz8A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmBduz8A.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmRduz8A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmRduz8A.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmhduz8A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmhduz8A.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmxduz8A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmxduz8A.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa0ZL7SUc.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa0ZL7SUc.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1pL7SUc.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1pL7SUc.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7SUc.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7SUc.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2JL7SUc.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2JL7SUc.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2ZL7SUc.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2ZL7SUc.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2pL7SUc.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2pL7SUc.woff2 -------------------------------------------------------------------------------- /docs/deps/Montserrat-0.4.9/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw0aXpsog.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Montserrat-0.4.9/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw0aXpsog.woff2 -------------------------------------------------------------------------------- /docs/deps/Montserrat-0.4.9/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw2aXpsog.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Montserrat-0.4.9/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw2aXpsog.woff2 -------------------------------------------------------------------------------- /docs/deps/Montserrat-0.4.9/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw3aXpsog.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Montserrat-0.4.9/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw3aXpsog.woff2 -------------------------------------------------------------------------------- /docs/deps/Montserrat-0.4.9/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw9aXpsog.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Montserrat-0.4.9/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw9aXpsog.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-muw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-muw.woff2 -------------------------------------------------------------------------------- /docs/articles/tutorial-multiple-absorption_files/figure-html/unnamed-chunk-2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-multiple-absorption_files/figure-html/unnamed-chunk-2-1.png -------------------------------------------------------------------------------- /docs/articles/tutorial-multiple-absorption_files/figure-html/unnamed-chunk-3-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-multiple-absorption_files/figure-html/unnamed-chunk-3-1.png -------------------------------------------------------------------------------- /docs/articles/tutorial-multiple-absorption_files/figure-html/unnamed-chunk-4-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-multiple-absorption_files/figure-html/unnamed-chunk-4-1.png -------------------------------------------------------------------------------- /docs/articles/tutorial-multiple-absorption_files/figure-html/unnamed-chunk-5-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/articles/tutorial-multiple-absorption_files/figure-html/unnamed-chunk-5-1.png -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6F.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6F.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu1aB.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu1aB.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu1aB.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu1aB.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu1aB.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu1aB.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu1aB.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu1aB.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu1aB.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu1aB.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu1aB.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu1aB.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu1aB.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu1aB.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTUGmu1aB.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTUGmu1aB.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTVOmu1aB.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTVOmu1aB.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqW106F15M.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqW106F15M.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06F15M.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06F15M.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6F15M.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6F15M.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6F15M.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6F15M.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6F15M.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6F15M.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06F15M.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06F15M.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6F15M.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6F15M.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6F15M.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6F15M.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWxU6F15M.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWxU6F15M.woff2 -------------------------------------------------------------------------------- /docs/deps/Open_Sans-0.4.9/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVI.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Open_Sans-0.4.9/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVI.woff2 -------------------------------------------------------------------------------- /docs/deps/Open_Sans-0.4.9/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4iaVIGxA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Open_Sans-0.4.9/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4iaVIGxA.woff2 -------------------------------------------------------------------------------- /docs/deps/Open_Sans-0.4.9/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4jaVIGxA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Open_Sans-0.4.9/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4jaVIGxA.woff2 -------------------------------------------------------------------------------- /docs/deps/Open_Sans-0.4.9/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4kaVIGxA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Open_Sans-0.4.9/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4kaVIGxA.woff2 -------------------------------------------------------------------------------- /docs/deps/Open_Sans-0.4.9/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4saVIGxA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Open_Sans-0.4.9/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4saVIGxA.woff2 -------------------------------------------------------------------------------- /docs/deps/Open_Sans-0.4.9/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4taVIGxA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Open_Sans-0.4.9/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4taVIGxA.woff2 -------------------------------------------------------------------------------- /docs/deps/Open_Sans-0.4.9/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4uaVIGxA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Open_Sans-0.4.9/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4uaVIGxA.woff2 -------------------------------------------------------------------------------- /docs/deps/Open_Sans-0.4.9/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4vaVIGxA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Open_Sans-0.4.9/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4vaVIGxA.woff2 -------------------------------------------------------------------------------- /docs/deps/Open_Sans-0.4.9/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B5OaVIGxA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Open_Sans-0.4.9/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B5OaVIGxA.woff2 -------------------------------------------------------------------------------- /docs/deps/Open_Sans-0.4.9/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B5caVIGxA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andrewmarx/samc/HEAD/docs/deps/Open_Sans-0.4.9/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B5caVIGxA.woff2 -------------------------------------------------------------------------------- /man-roxygen/section-perf.R: -------------------------------------------------------------------------------- 1 | #' @section Performance: 2 | #' 3 | #' Any relevant performance information about this function can be found in the 4 | #' performance vignette: \href{../doc/performance.html}{\code{vignette("performance", package = "samc")}} 5 | -------------------------------------------------------------------------------- /man-roxygen/param-init.R: -------------------------------------------------------------------------------- 1 | #' @param init Sets the initial state \eqn{\psi} of the transients states. Input 2 | #' must be able to pass the \code{\link{check}} function when compared against 3 | #' the \code{\link{samc-class}} object. Can only contain positive finite values. 4 | #' 5 | -------------------------------------------------------------------------------- /src/samc_types.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2024 Andrew Marx where applicable. 2 | // Licensed under AGPLv3.0. See LICENSE file in the project root for details. 3 | 4 | #ifndef SAMC_TYPES_H 5 | #define SAMC_TYPES_H 6 | 7 | #include "solver-cache.h" 8 | #include "convolution.h" 9 | 10 | #endif 11 | -------------------------------------------------------------------------------- /src/Makevars: -------------------------------------------------------------------------------- 1 | ## Sets -latomic/-lpthread if required by the system. 2 | PKG_LIBS = `"$(R_HOME)/bin/Rscript" -e "RcppThread::LdFlags()"` 3 | 4 | ## With R 3.1.0 or later, you can uncomment the following line to tell R to 5 | ## enable compilation with C++11 (or even C++14) where available 6 | CXX_STD = CXX17 7 | -------------------------------------------------------------------------------- /man-roxygen/param-dest.R: -------------------------------------------------------------------------------- 1 | #' @param dest A positive integer or character name representing transient state 2 | #' \eqn{\mathit{j}}. Corresponds to column \eqn{\mathit{j}} of matrix \eqn{\mathbf{P}} 3 | #' in the \code{\link{samc-class}} object. When paired with the \code{origin} parameter, 4 | #' multiple values may be provided as a vector. 5 | -------------------------------------------------------------------------------- /man-roxygen/param-origin.R: -------------------------------------------------------------------------------- 1 | #' @param origin A positive integer or character name representing transient state 2 | #' \eqn{\mathit{i}}. Corresponds to row \eqn{\mathit{i}} of matrix \eqn{\mathbf{P}} 3 | #' in the \code{\link{samc-class}} object. When paired with the \code{dest} 4 | #' parameter, multiple values may be provided as a vector. 5 | -------------------------------------------------------------------------------- /man-roxygen/param-time.R: -------------------------------------------------------------------------------- 1 | #' @param time A positive integer or a vector of positive integers representing 2 | #' \eqn{\mathit{t}} time steps. Vectors must be ordered and contain no duplicates. 3 | #' Vectors may not be used for metrics that return dense matrices. The maximum time 4 | #' step value is capped at 10,000 due to numerical precision issues. 5 | -------------------------------------------------------------------------------- /src/Makevars.win: -------------------------------------------------------------------------------- 1 | ## With Rcpp 0.11.0 and later, we no longer need to set PKG_LIBS as there is 2 | ## no user-facing library. The include path to headers is already set by R. 3 | #PKG_LIBS = 4 | 5 | ## With R 3.1.0 or later, you can uncomment the following line to tell R to 6 | ## enable compilation with C++11 (or even C++14) where available 7 | CXX_STD = CXX17 8 | -------------------------------------------------------------------------------- /NAMESPACE: -------------------------------------------------------------------------------- 1 | useDynLib(samc) 2 | importClassesFrom("Matrix", "CsparseMatrix") 3 | importClassesFrom("Matrix", "dgCMatrix") 4 | importClassesFrom("raster", "RasterLayer") 5 | importClassesFrom("terra", "SpatRaster") 6 | importFrom("methods", "as") 7 | importFrom("methods", "new") 8 | importFrom("methods", "is") 9 | importFrom("stats", "aggregate") 10 | exportPattern("^[[:alpha:]]+") 11 | -------------------------------------------------------------------------------- /.Rbuildignore: -------------------------------------------------------------------------------- 1 | ^CRAN-RELEASE$ 2 | man-roxygen 3 | CONTRIBUTING.md 4 | other 5 | ^docs$ 6 | ^_pkgdown\.yml$ 7 | ^\.git$ 8 | ^corridor example$ 9 | ^.*\.Rproj$ 10 | ^\.Rproj\.user$ 11 | ^README\.md$ 12 | ^\.gitignore$ 13 | ^codebits\.R$ 14 | ^doc$ 15 | ^Meta$ 16 | benchmark 17 | LICENSE 18 | index.md 19 | ^CRAN-SUBMISSION$ 20 | ^cran-comments\.md$ 21 | ^vignettes/(?!overview.Rmd) 22 | ^LICENSE\.md$ 23 | -------------------------------------------------------------------------------- /samc.Rproj: -------------------------------------------------------------------------------- 1 | Version: 1.0 2 | 3 | RestoreWorkspace: Default 4 | SaveWorkspace: Default 5 | AlwaysSaveHistory: Default 6 | 7 | EnableCodeIndexing: Yes 8 | UseSpacesForTab: Yes 9 | NumSpacesForTab: 2 10 | Encoding: UTF-8 11 | 12 | RnwWeave: Sweave 13 | LaTeX: pdfLaTeX 14 | 15 | AutoAppendNewline: Yes 16 | StripTrailingWhitespace: Yes 17 | 18 | BuildType: Package 19 | PackageUseDevtools: Yes 20 | PackageInstallArgs: --no-multiarch --with-keep.source 21 | -------------------------------------------------------------------------------- /R/zzz.R: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024 Andrew Marx. All rights reserved. 2 | # Licensed under AGPLv3.0. See LICENSE file in the project root for details. 3 | 4 | # .onLoad <- function(libname, pkgname) { 5 | # assign("samc_env", new.env(parent = emptyenv()), parent.env()) 6 | # } 7 | 8 | .onAttach <- function(libname, pkgname) { 9 | msg = paste("Old code may be affected by breaking changes. Check the package website and release notes for details.") 10 | packageStartupMessage(msg) 11 | } 12 | -------------------------------------------------------------------------------- /inst/examples/pairwise.R: -------------------------------------------------------------------------------- 1 | library(samc) 2 | 3 | # Load example data 4 | res_data <- samc::example_split_corridor$res 5 | abs_data <- samc::example_split_corridor$abs 6 | 7 | 8 | # Create samc-class object 9 | samc_obj <- samc(res_data, abs_data, 10 | model = list(fun = function(x) 1/mean(x), dir = 8, sym = TRUE)) 11 | 12 | # pairwise() example 13 | pw <- pairwise(cond_passage, samc_obj, origin = 1:4, dest = 5) 14 | print(pw) 15 | 16 | # pairwise() example without dest 17 | pw <- pairwise(dispersal, samc_obj, origin = c(2, 7)) 18 | print(pw) 19 | 20 | 21 | -------------------------------------------------------------------------------- /docs/articles/overview_files/header-attrs-2.10/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/overview_files/header-attrs-2.11/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/overview_files/header-attrs-2.14/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/parallel_files/header-attrs-2.10/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/parallel_files/header-attrs-2.11/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/parallel_files/header-attrs-2.14/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/performance_files/header-attrs-2.10/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/performance_files/header-attrs-2.11/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/performance_files/header-attrs-2.14/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/code-snippets_files/header-attrs-2.10/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/code-snippets_files/header-attrs-2.11/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/code-snippets_files/header-attrs-2.14/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/example-coinflip_files/header-attrs-2.11/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/example-coinflip_files/header-attrs-2.14/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/troubleshooting_files/header-attrs-2.10/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/troubleshooting_files/header-attrs-2.11/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/troubleshooting_files/header-attrs-2.14/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/tutorial-basic_files/header-attrs-2.10/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/tutorial-basic_files/header-attrs-2.11/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/tutorial-basic_files/header-attrs-2.14/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/tutorial-ggplot_files/header-attrs-2.10/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/tutorial-ggplot_files/header-attrs-2.11/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/tutorial-ggplot_files/header-attrs-2.14/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/data-disconnected_files/header-attrs-2.10/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/data-disconnected_files/header-attrs-2.11/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/data-disconnected_files/header-attrs-2.14/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/header-attrs-2.10/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/header-attrs-2.11/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/example-maze-part1_files/header-attrs-2.14/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/header-attrs-2.10/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/header-attrs-2.11/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/example-maze-part2_files/header-attrs-2.14/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/example-maze-part3_files/header-attrs-2.10/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/example-maze-part3_files/header-attrs-2.11/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/example-maze-part3_files/header-attrs-2.14/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/tutorial-animations_files/header-attrs-2.10/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/tutorial-animations_files/header-attrs-2.11/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/tutorial-animations_files/header-attrs-2.14/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/tutorial-locations_files/header-attrs-2.10/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/tutorial-locations_files/header-attrs-2.11/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/tutorial-locations_files/header-attrs-2.14/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/tutorial-temporal_files/header-attrs-2.10/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/tutorial-temporal_files/header-attrs-2.11/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/tutorial-temporal_files/header-attrs-2.14/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /R/location-class.R: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024 Andrew Marx. All rights reserved. 2 | # Licensed under AGPLv3.0. See LICENSE file in the project root for details. 3 | 4 | 5 | #' location class 6 | #' 7 | #' Union class for location inputs 8 | #' 9 | #' The location class is a union class of the "numeric" and "character" classes. 10 | #' Users generally do not need to worry about it except to know that any method 11 | #' parameter with "location" as the type can have either an integer or a character 12 | #' name provided as input. 13 | #' 14 | #' @export location 15 | 16 | setClassUnion("location", c("numeric", "matrix", "character")) 17 | -------------------------------------------------------------------------------- /docs/articles/tutorial-multiple-absorption_files/header-attrs-2.10/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/tutorial-multiple-absorption_files/header-attrs-2.11/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/articles/tutorial-multiple-absorption_files/header-attrs-2.14/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/deps/headroom-0.11.0/jQuery.headroom.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * headroom.js v0.9.4 - Give your page some headroom. Hide your header until you need it 3 | * Copyright (c) 2017 Nick Williams - http://wicky.nillia.ms/headroom.js 4 | * License: MIT 5 | */ 6 | 7 | !function(a){a&&(a.fn.headroom=function(b){return this.each(function(){var c=a(this),d=c.data("headroom"),e="object"==typeof b&&b;e=a.extend(!0,{},Headroom.options,e),d||(d=new Headroom(this,e),d.init(),c.data("headroom",d)),"string"==typeof b&&(d[b](),"destroy"===b&&c.removeData("headroom"))})},a("[data-headroom]").each(function(){var b=a(this);b.headroom(b.data())}))}(window.Zepto||window.jQuery); -------------------------------------------------------------------------------- /src/solver-cache.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2024 Andrew Marx where applicable. 2 | // Licensed under AGPLv3.0. See LICENSE file in the project root for details. 3 | 4 | #ifndef SOLVERCACHE_H 5 | #define SOLVERCACHE_H 6 | 7 | #include 8 | #include 9 | #include 10 | 11 | class SolverCache { 12 | typedef Eigen::SparseLU > Solver; 13 | 14 | Solver m_solver; 15 | std::string name; 16 | 17 | public: 18 | SolverCache() : name("") { } 19 | void buildSolver(const Eigen::SparseMatrix &M, const std::string &fun); 20 | Solver& solver() { return m_solver; } 21 | }; 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /inst/CITATION: -------------------------------------------------------------------------------- 1 | citation(auto = meta) 2 | 3 | bibentry( 4 | bibtype = "Article", 5 | title = "samc: an R package for connectivity modeling with spatial absorbing Markov chains", 6 | author = c(person(c("Andrew", "J."), "Marx"), 7 | person(c("Chao"), "Wang"), 8 | person(c("Jorge", "A."), "Sefair"), 9 | person(c("Miguel", "A."), "Acevedo"), 10 | person(c("Robert", "J."), "Fletcher Jr.")), 11 | journal = "Ecography", 12 | year = "2020", 13 | volume = "43", 14 | number = "4", 15 | pages = "518-527", 16 | url = "https://onlinelibrary.wiley.com/doi/abs/10.1111/ecog.04891" 17 | ) 18 | -------------------------------------------------------------------------------- /docs/katex-auto.js: -------------------------------------------------------------------------------- 1 | // https://github.com/jgm/pandoc/blob/29fa97ab96b8e2d62d48326e1b949a71dc41f47a/src/Text/Pandoc/Writers/HTML.hs#L332-L345 2 | document.addEventListener("DOMContentLoaded", function () { 3 | var mathElements = document.getElementsByClassName("math"); 4 | var macros = []; 5 | for (var i = 0; i < mathElements.length; i++) { 6 | var texText = mathElements[i].firstChild; 7 | if (mathElements[i].tagName == "SPAN") { 8 | katex.render(texText.data, mathElements[i], { 9 | displayMode: mathElements[i].classList.contains("display"), 10 | throwOnError: false, 11 | macros: macros, 12 | fleqn: false 13 | }); 14 | }}}); 15 | -------------------------------------------------------------------------------- /src/solver-cache.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2024 Andrew Marx where applicable. 2 | // Licensed under AGPLv3.0. See LICENSE file in the project root for details. 3 | 4 | #include 5 | #include 6 | 7 | #include "solver-cache.h" 8 | 9 | // [[Rcpp::export(".solver_cache")]] 10 | Rcpp::XPtr solver_cache() 11 | { 12 | SolverCache* sc = new SolverCache(); 13 | Rcpp::XPtr ptr(sc, true); 14 | return ptr; 15 | } 16 | 17 | void SolverCache::buildSolver(const Eigen::SparseMatrix &M, 18 | const std::string &fun) 19 | { 20 | if (name != fun) { 21 | m_solver.compute(M); 22 | if (m_solver.info() != Eigen::Success) { 23 | Rcpp::stop("Solver failed in buildSolver"); 24 | } 25 | 26 | name = fun; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /docs/deps/Lato-0.4.9/font.css: -------------------------------------------------------------------------------- 1 | /* latin-ext */ 2 | @font-face { 3 | font-family: 'Lato'; 4 | font-style: normal; 5 | font-weight: 400; 6 | font-display: swap; 7 | src: url(S6uyw4BMUTPHjxAwXjeu.woff2) format('woff2'); 8 | unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 9 | } 10 | /* latin */ 11 | @font-face { 12 | font-family: 'Lato'; 13 | font-style: normal; 14 | font-weight: 400; 15 | font-display: swap; 16 | src: url(S6uyw4BMUTPHjx4wXg.woff2) format('woff2'); 17 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 18 | } 19 | -------------------------------------------------------------------------------- /R/internal-utils.R: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024 Andrew Marx. All rights reserved. 2 | # Licensed under AGPLv3.0. See LICENSE file in the project root for details. 3 | 4 | # This file is for internal functions. They are subject to change and should not 5 | # be used by users. 6 | 7 | 8 | #' Used to disable CRW 9 | #' 10 | #' Disable CRW 11 | #' 12 | #' @param samc samc model 13 | #' @noRd 14 | .disable_crw = function(samc) { 15 | if (samc@model$name == "CRW") stop("Metric/parameter combination not currently supported for CRW", call. = FALSE) 16 | } 17 | 18 | #' Used to disable convolution 19 | #' 20 | #' Disable convolution 21 | #' 22 | #' @param samc samc model 23 | #' @noRd 24 | .disable_conv = function(samc) { 25 | if (samc@solver == "conv") stop("Metric/parameter combinaton not currently supported for the convolution algorithm", call. = FALSE) 26 | } 27 | -------------------------------------------------------------------------------- /docs/link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /R/data.R: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024 Andrew Marx. All rights reserved. 2 | # Licensed under AGPLv3.0. See LICENSE file in the project root for details. 3 | 4 | #' Simple split corridor example 5 | #' 6 | #' A fabricated dataset of a simple split corridor. Contains resistance, 7 | #' absorption, and occupancy data. 8 | #' 9 | #' @format A list of three matrices. Matrices have 34 rows and 202 columns. 10 | #' 11 | #' @source Fletcher et al (2019) 12 | "example_split_corridor" 13 | 14 | 15 | #' Simple maze example 16 | #' 17 | #' A simple maze layout. 18 | #' 19 | #' @format A 20x20 matrix. 20 | #' 21 | #' @source Generated for Maze Example vignettes 22 | "example_maze" 23 | 24 | #' Toy resistance data 25 | #' 26 | #' Toy resistance data used in a workshop at IALE 2021 27 | #' 28 | #' @format A 10x10 matrix. 29 | #' 30 | #' @source IALE 2021 workshop 31 | "example_toy_res" 32 | -------------------------------------------------------------------------------- /docs/deps/data-deps.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /docs/pkgdown.yml: -------------------------------------------------------------------------------- 1 | pandoc: '3.5' 2 | pkgdown: 2.1.1 3 | pkgdown_sha: ~ 4 | articles: 5 | article-circuit-theory: article-circuit-theory.html 6 | article-computation-methods: article-computation-methods.html 7 | article-models: article-models.html 8 | code-snippets: code-snippets.html 9 | data-disconnected: data-disconnected.html 10 | example-coinflip: example-coinflip.html 11 | example-maze-part1: example-maze-part1.html 12 | example-maze-part2: example-maze-part2.html 13 | example-maze-part3: example-maze-part3.html 14 | overview: overview.html 15 | parallel: parallel.html 16 | performance: performance.html 17 | troubleshooting: troubleshooting.html 18 | tutorial-animations: tutorial-animations.html 19 | tutorial-basic: tutorial-basic.html 20 | tutorial-ggplot: tutorial-ggplot.html 21 | tutorial-locations: tutorial-locations.html 22 | tutorial-multiple-absorption: tutorial-multiple-absorption.html 23 | tutorial-temporal: tutorial-temporal.html 24 | last_built: 2024-10-31T01:58Z 25 | -------------------------------------------------------------------------------- /inst/examples/locate.R: -------------------------------------------------------------------------------- 1 | library(terra) 2 | library(samc) 3 | 4 | 5 | # Load example data 6 | res_data <- samc::example_split_corridor$res 7 | abs_data <- samc::example_split_corridor$abs 8 | 9 | 10 | # Create samc-class object 11 | samc_obj <- samc(res_data, abs_data, 12 | model = list(fun = function(x) 1/mean(x), dir = 8, sym = TRUE)) 13 | 14 | 15 | # We can use locate() to return an object with the cell numbers encoded as data 16 | # in the cells 17 | cell_raster <- locate(samc_obj) 18 | print(cell_raster) 19 | 20 | # We can use a variety of spatial inputs to get cell numbers using locate() 21 | # The simplest is a two-column data.frame 22 | coords <- data.frame(x = c(50, 79, 22), 23 | y = c(25, 11, 19)) 24 | print(coords) 25 | locate(samc_obj, coords) 26 | 27 | # You will get an error if you input a coordinate that does not correspond 28 | # to a non-NA cell 29 | coords <- data.frame(x = c(1), 30 | y = c(1)) 31 | print(coords) 32 | try(locate(samc_obj, coords)) 33 | -------------------------------------------------------------------------------- /src/mortality.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2024 Andrew Marx where applicable. 2 | // Licensed under AGPLv3.0. See LICENSE file in the project root for details. 3 | 4 | #include 5 | #include 6 | 7 | #include "solver-cache.h" 8 | #include "constants.h" 9 | 10 | // [[Rcpp::export(".sum_qpowrv")]] 11 | Rcpp::List sum_qpowrv(const Eigen::Map > &M, 12 | const Eigen::Map &rv, 13 | const Rcpp::NumericVector &t) 14 | { 15 | int n = t.size(); 16 | 17 | Rcpp::List res(n - 1); 18 | 19 | Eigen::VectorXd qrv = rv; 20 | Eigen::VectorXd time_res = qrv; 21 | 22 | for(int i = 1; i < n; i++) { 23 | int t_start = t[i - 1]; 24 | int t_end = t[i]; 25 | 26 | for (int j = t_start; j < t_end; j++) { 27 | if(j % INTERRUPT_CHECK_INTERVAL == 0) { 28 | Rcpp::checkUserInterrupt(); 29 | } 30 | 31 | qrv = M * qrv; 32 | time_res += qrv; 33 | } 34 | 35 | res[i - 1] = Rcpp::wrap(time_res); 36 | } 37 | 38 | return res; 39 | } 40 | -------------------------------------------------------------------------------- /tests/testthat/test-survival.R: -------------------------------------------------------------------------------- 1 | context("Survival") 2 | 3 | for(test in testlist) { 4 | # Create the samc object 5 | samc_obj <- test$samc 6 | 7 | # Extract Q 8 | Q <- samc_obj$q_matrix 9 | Q <- as.matrix(Q) 10 | 11 | # Create an indentity matrix 12 | I <- diag(nrow(Q)) 13 | 14 | # Fundamental matrix 15 | F_mat <- solve(I - Q) 16 | 17 | # Prepare the occupancy data 18 | occ_ras <- raster::raster(test$init) 19 | pv <- as.vector(occ_ras) 20 | pv <- pv[is.finite(pv)] 21 | 22 | 23 | # Run the tests 24 | test_that("Testing survival(samc)", { 25 | 26 | r1 <- survival(samc_obj) 27 | 28 | v1 <- numeric(nrow(Q)) 29 | v1[] <- 1 30 | 31 | r2 <- F_mat %*% v1 32 | 33 | # Verify equality 34 | expect_equal(as.vector(r1), as.vector(r2)) 35 | }) 36 | 37 | test_that("Testing survival(samc, init)", { 38 | # Calculate psi*z using survival(samc, init) 39 | r1 <- survival(samc_obj, test$init) 40 | 41 | v1 <- numeric(nrow(Q)) 42 | v1[] <- 1 43 | 44 | r2 <- pv %*% F_mat %*% v1 45 | 46 | # Verify equality 47 | expect_equal(as.vector(r1), as.vector(r2)) 48 | }) 49 | } 50 | -------------------------------------------------------------------------------- /vignettes/code-snippets.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Code Snippets" 3 | author: "Andrew Marx" 4 | date: "`r Sys.Date()`" 5 | license: "CC BY-NC-SA 4.0" 6 | output: rmarkdown::html_vignette 7 | vignette: > 8 | %\VignetteIndexEntry{Code Snippets} 9 | %\VignetteEngine{knitr::rmarkdown} 10 | %\VignetteEncoding{UTF-8} 11 | --- 12 | 13 | ```{r setup, include = FALSE} 14 | knitr::opts_chunk$set( 15 | collapse = TRUE, 16 | comment = "#>" 17 | ) 18 | ``` 19 | 20 | ## Introduction 21 | 22 | This page is home to code that isn't suitable for inclusion in the samc package or dedicated vignettes, but that users may find beneficial nonetheless. Some of what is included here may eventually be integrated into the package. Code here is not as thoroughly tested as the package and may not work in all situations or versions of the package. 23 | 24 | 25 | ## Reshaping output from pairwise() 26 | 27 | 28 | ```{r eval = FALSE} 29 | # df will be a "long" format data.frame with columns "origin", "dest", and "result" 30 | df <- pairwise(...) 31 | 32 | # Use reshape2 to convert to a pairwise matrix 33 | reshape2::acast(df, origin ~ dest, value.var = "result") 34 | 35 | ``` 36 | 37 | -------------------------------------------------------------------------------- /src/convolution.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2024 Andrew Marx where applicable. 2 | // Licensed under GPLv3.0. See LICENSE file in the project root for details. 3 | // 4 | // Derived from https://github.com/LandSciTech/LSTDConnect/blob/8927cac418454bb7910be8f832dffb9b62b34223/inst/include/samc.h 5 | // Which was licensed under GPLv3.0 at the time of use 6 | 7 | #ifndef __CONVOLUTION_H__ 8 | #define __CONVOLUTION_H__ 9 | 10 | #include 11 | 12 | template 13 | struct kernel_point_t{ 14 | std::ptrdiff_t x_off; 15 | std::ptrdiff_t y_off; 16 | T num = 1; 17 | }; 18 | 19 | template 20 | struct convolution_cache{ 21 | std::size_t ncol; 22 | std::size_t nrow; 23 | std::size_t cell_count; 24 | std::size_t kernel_size; 25 | std::size_t left_extra_cols; 26 | std::size_t right_extra_cols; 27 | std::vector movement_rate; /* size should be ncol*nrow*kernel_size */ 28 | std::vector absorption; /* size should be ncol*nrow or empty*/ 29 | std::vector kernel; /* a list of offsets from a given point to all of the places that it needs to look in the list of points */ 30 | }; 31 | 32 | #endif /* __CONVOLUTION_H__ */ 33 | -------------------------------------------------------------------------------- /R/internal-classes.R: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024 Andrew Marx. All rights reserved. 2 | # Licensed under AGPLv3.0. See LICENSE file in the project root for details. 3 | NULL 4 | 5 | #' data class 6 | #' 7 | #' Contains the data fields used in the samc-class 8 | #' 9 | #' @slot f F matrix 10 | #' @slot t_abs Total absorption 11 | #' @slot c_abs Component absorption states 12 | #' 13 | #' @name samc_data-class 14 | #' @keywords internal 15 | 16 | setClass( 17 | # set the name of the class 18 | "samc_data", 19 | 20 | # define the slots 21 | slots = list(f = "CsparseMatrix", 22 | t_abs = "numeric", 23 | c_abs = "matrix") 24 | 25 | # set default values 26 | #prototype = list(p = NA) 27 | 28 | # create a function to validate the data 29 | # validity=function(object) 30 | # { 31 | # return(TRUE) 32 | # } 33 | ) 34 | 35 | 36 | #' samc char_null class 37 | #' 38 | #' Class for grouping character and NULL data types 39 | #' 40 | #' @name char_null-class 41 | #' @keywords internal 42 | #' 43 | setClassUnion("char_null", c("character", "NULL")) 44 | 45 | 46 | #' samc mat_null class 47 | #' 48 | #' Class for grouping matrix and NULL data types 49 | #' 50 | #' @name mat_null-class 51 | #' @keywords internal 52 | #' 53 | setClassUnion("mat_null", c("matrix", "NULL")) 54 | -------------------------------------------------------------------------------- /src/survival.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2024 Andrew Marx where applicable. 2 | // Licensed under AGPLv3.0. See LICENSE file in the project root for details. 3 | 4 | #include 5 | #include 6 | 7 | #include "solver-cache.h" 8 | 9 | // [[Rcpp::export(".f1")]] 10 | Rcpp::NumericVector f1(const Eigen::Map > &M, 11 | Rcpp::XPtr &SC) 12 | { 13 | Eigen::VectorXd one(M.rows()); 14 | one.fill(1.0); 15 | 16 | SC->buildSolver(M, "m"); 17 | 18 | Eigen::VectorXd res = SC->solver().solve(one); 19 | if(SC->solver().info() != Eigen::Success) { 20 | Rcpp::stop("Solver failed in f1"); 21 | } 22 | 23 | return Rcpp::wrap(res); 24 | } 25 | 26 | // [[Rcpp::export(".f1_iter")]] 27 | Rcpp::NumericVector f1_iter(const Eigen::Map > &M) 28 | { 29 | Eigen::VectorXd one(M.rows()); 30 | one.fill(1.0); 31 | 32 | Eigen::BiCGSTAB, Eigen::IncompleteLUT > solver; 33 | 34 | solver.compute(M); 35 | if(solver.info() != Eigen::Success) { 36 | Rcpp::stop("Decomposition failed in f1_iter"); 37 | } 38 | 39 | Eigen::VectorXd res = solver.solve(one); 40 | if(solver.info() != Eigen::Success) { 41 | Rcpp::stop("Solver failed in f1_iter"); 42 | } 43 | 44 | return Rcpp::wrap(res); 45 | } 46 | -------------------------------------------------------------------------------- /tests/testthat/test-samc.R: -------------------------------------------------------------------------------- 1 | context("SAMC test") 2 | 3 | 4 | test_that("samc p matrix row sums equal 1 without fidelity data", { 5 | 6 | # Create the samc object and get the row sums of the p matrix 7 | samc_obj <- samc(testlist[[1]]$res, testlist[[1]]$abs, model = list(fun = function(x) 1/mean(x), dir = 8, sym = TRUE)) 8 | rs <- Matrix::rowSums(samc_obj$p_matrix) 9 | 10 | # Create a vector of the expected result based on the number of non-NA cells 11 | # in the original data and an extra entry for the last row of the p matrix 12 | length <- sum(!is.na(as.vector(testlist[[1]]$res))) 13 | v <- numeric(length + 1) 14 | v[] <- 1 15 | 16 | # Verify equality 17 | expect_equal(rs, v, check.names = FALSE) 18 | }) 19 | 20 | test_that("samc p matrix row sums equal 1 with fidelity data", { 21 | 22 | # Create the samc object and get the row sums of the p matrix 23 | samc_obj <- samc(testlist[[1]]$res, testlist[[1]]$abs, testlist[[1]]$fid, model = list(fun = function(x) 1/mean(x), dir = 8, sym = TRUE)) 24 | rs <- Matrix::rowSums(samc_obj$p_matrix) 25 | 26 | # Create a vector of the expected result based on the number of non-NA cells 27 | # in the original data and an extra entry for the last row of the p matrix 28 | length <- sum(!is.na(as.vector(testlist[[1]]$res))) 29 | v <- numeric(length + 1) 30 | v[] <- 1 31 | 32 | # Verify equality 33 | expect_equal(rs, v, check.names = FALSE) 34 | }) 35 | -------------------------------------------------------------------------------- /vignettes/tutorial-ggplot.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "ggplot Visualization" 3 | author: "Andrew Marx" 4 | date: "`r Sys.Date()`" 5 | license: "CC BY-NC-SA 4.0" 6 | output: rmarkdown::html_vignette 7 | vignette: > 8 | %\VignetteIndexEntry{ggplot Visualization} 9 | %\VignetteEngine{knitr::rmarkdown} 10 | %\VignetteEncoding{UTF-8} 11 | --- 12 | 13 | ```{r setup, include = FALSE} 14 | knitr::opts_chunk$set( 15 | collapse = TRUE, 16 | comment = "#>" 17 | ) 18 | 19 | do.call(knitr::read_chunk, list(path = "scripts/tutorial-ggplot.R")) 20 | ``` 21 | 22 | ## Introduction 23 | 24 | This tutorial shows how to plot samc analyses using ggplot2. It is based on the code in the basic tutorial. 25 | 26 | 27 | ## Setup 28 | 29 | ```{r eval=FALSE} 30 | <> 31 | ``` 32 | 33 | 34 | ## Visualization With ggplot2 35 | 36 | ```{r eval=FALSE} 37 | <> 38 | ``` 39 | 40 | ```{r fig1, out.width = '100%', fig.align = "center", echo = FALSE} 41 | knitr::include_graphics("img/ggplot1.png") 42 | ``` 43 | 44 | ```{r fig2, out.width = '100%', fig.align = "center", echo = FALSE} 45 | knitr::include_graphics("img/ggplot2.png") 46 | ``` 47 | 48 | ```{r eval=FALSE} 49 | <> 50 | ``` 51 | 52 | ```{r fig3, out.width = '100%', fig.align = "center", echo = FALSE} 53 | knitr::include_graphics("img/ggplot3.png") 54 | ``` 55 | 56 | ```{r fig4, out.width = '100%', fig.align = "center", echo = FALSE} 57 | knitr::include_graphics("img/ggplot4.png") 58 | ``` 59 | 60 | ```{r fig5, out.width = '100%', fig.align = "center", echo = FALSE} 61 | knitr::include_graphics("img/ggplot5.png") 62 | ``` 63 | -------------------------------------------------------------------------------- /src/distribution.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2024 Andrew Marx where applicable. 2 | // Licensed under AGPLv3.0. See LICENSE file in the project root for details. 3 | 4 | #include 5 | #include 6 | 7 | #include "constants.h" 8 | 9 | // [[Rcpp::export(".qpow_row")]] 10 | Rcpp::List qpow_row(const Eigen::Map > &M, 11 | const Eigen::Map &vec, 12 | const Rcpp::NumericVector &t) 13 | { 14 | int n = t.size(); 15 | 16 | Rcpp::List res(n - 1); 17 | 18 | Eigen::RowVectorXd time_res = vec; 19 | 20 | for(int i = 1; i < n; i++) { 21 | int t_start = t[i - 1]; 22 | int t_end = t[i]; 23 | 24 | for (int j = t_start; j < t_end; j++) { 25 | if(j % INTERRUPT_CHECK_INTERVAL == 0) { 26 | Rcpp::checkUserInterrupt(); 27 | } 28 | 29 | time_res = time_res * M; 30 | } 31 | 32 | res[i - 1] = Rcpp::wrap(time_res); 33 | } 34 | 35 | return res; 36 | } 37 | 38 | // [[Rcpp::export(".qpow_col")]] 39 | Rcpp::List qpow_col(const Eigen::Map > &M, 40 | const Eigen::Map &vec, 41 | const Rcpp::NumericVector &t) 42 | { 43 | int n = t.size(); 44 | 45 | Rcpp::List res(n - 1); 46 | 47 | Eigen::VectorXd time_res = M * vec; 48 | 49 | for(int i = 1; i < n; i++) { 50 | int t_start = t[i - 1]; 51 | int t_end = t[i]; 52 | 53 | for (int j = t_start; j < t_end; j++) { 54 | if(j % INTERRUPT_CHECK_INTERVAL == 0) { 55 | Rcpp::checkUserInterrupt(); 56 | } 57 | 58 | time_res = M * time_res; 59 | } 60 | 61 | res[i - 1] = Rcpp::wrap(time_res); 62 | } 63 | 64 | return res; 65 | } 66 | -------------------------------------------------------------------------------- /tests/testthat/test-conv.R: -------------------------------------------------------------------------------- 1 | context("Convolution") 2 | 3 | 4 | conv_samc = samc(testlist[[1]]$res, 5 | pmax(testlist[[1]]$abs, 0.00001), 6 | testlist[[1]]$fid, 7 | model = list(fun = "1/mean(x)", dir = 8, sym = TRUE), 8 | options = list(threads = 1, 9 | method = "conv", 10 | override = FALSE)) 11 | 12 | samc_obj = samc(testlist[[1]]$res, 13 | pmax(testlist[[1]]$abs, 0.00001), 14 | testlist[[1]]$fid, 15 | model = list(fun = function(x) 1/mean(x), dir = 8, sym = TRUE)) 16 | 17 | 18 | test_that("Convolution short-term distribution()", { 19 | r1 = distribution(samc_obj, testlist[[1]]$init, time = time) 20 | r2 = distribution(conv_samc, testlist[[1]]$init, time = time) 21 | 22 | expect_equal(r1, r2) 23 | }) 24 | 25 | test_that("Convolution short-term mortality()", { 26 | r1 = mortality(samc_obj, testlist[[1]]$init, time = time) 27 | r2 = mortality(conv_samc, testlist[[1]]$init, time = time) 28 | 29 | expect_equal(r1, r2) 30 | }) 31 | 32 | test_that("Convolution short-term visitation()", { 33 | r1 = as.vector(visitation(samc_obj, testlist[[1]]$init, time = time)) 34 | r2 = visitation(conv_samc, testlist[[1]]$init, time = time) 35 | 36 | expect_equal(r1, r2) 37 | }) 38 | 39 | test_that("Convolution long-term mortality()", { 40 | r1 = mortality(samc_obj, testlist[[1]]$init) 41 | r2 = mortality(conv_samc, testlist[[1]]$init) 42 | 43 | expect_equal(r1, r2) 44 | }) 45 | 46 | test_that("Convolution long-term visitation()", { 47 | r1 = as.vector(visitation(samc_obj, testlist[[1]]$init)) 48 | r2 = visitation(conv_samc, testlist[[1]]$init) 49 | 50 | expect_equal(r1, r2) 51 | }) 52 | -------------------------------------------------------------------------------- /vignettes/tutorial-animations.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Animations" 3 | author: "Andrew Marx" 4 | date: "`r Sys.Date()`" 5 | license: "CC BY-NC-SA 4.0" 6 | output: rmarkdown::html_vignette 7 | vignette: > 8 | %\VignetteIndexEntry{Animations} 9 | %\VignetteEngine{knitr::rmarkdown} 10 | %\VignetteEncoding{UTF-8} 11 | --- 12 | 13 | ```{r setup, include = FALSE} 14 | knitr::opts_chunk$set( 15 | collapse = TRUE, 16 | comment = "#>" 17 | ) 18 | 19 | do.call(knitr::read_chunk, list(path = "scripts/tutorial-animations.R")) 20 | ``` 21 | 22 | ## Introduction 23 | 24 | This tutorial illustrates two different approaches for creating animated plots from temporal analyses. The first is using the base plot tools in R with the gifski package. The second is using gganimate (which uses gifski under the hood). While the gganimate approach might be the more user friendly of the two, it does not appear to have a mechanism available for dynamically adjusting the color scale each frame, so later frames will appear dark as the probability values in the results decrease over time (as seen below). The gifski package simply merges several different plots, so the color scale can be different for each frame. It can also be used with ggplot instead of base plot if users desire the style of ggplot with dynamic color scales. 25 | 26 | 27 | ## Setup 28 | 29 | ```{r eval = FALSE} 30 | <> 31 | ``` 32 | 33 | 34 | ## Using gifski 35 | 36 | ```{r eval = FALSE} 37 | <> 38 | ``` 39 | 40 | ```{r fig1, out.width = '100%', fig.align = "center", echo = FALSE} 41 | knitr::include_graphics("img/gifski.gif") 42 | ``` 43 | 44 | 45 | ## Using gganimate 46 | 47 | ```{r eval = FALSE} 48 | <> 49 | ``` 50 | 51 | ```{r fig2, out.width = '100%', fig.align = "center", echo = FALSE} 52 | knitr::include_graphics("img/gganimate.gif") 53 | ``` 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /src/cond_passage.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2024 Andrew Marx where applicable. 2 | // Licensed under AGPLv3.0. See LICENSE file in the project root for details. 3 | 4 | #include 5 | #include 6 | 7 | // [[Rcpp::export(".cond_t")]] 8 | Rcpp::List cond_t(const Eigen::Map > &IQ, 9 | const Eigen::VectorXd &qj) 10 | { 11 | Eigen::SparseLU > solver; 12 | 13 | solver.compute(IQ); 14 | if(solver.info() != Eigen::Success) { 15 | Rcpp::stop("Decomposition failed in cond_t"); 16 | } 17 | 18 | Eigen::VectorXd b = solver.solve(qj); 19 | if(solver.info() != Eigen::Success) { 20 | Rcpp::stop("Solver failed in cond_t (1)"); 21 | } 22 | 23 | Eigen::VectorXd fb = solver.solve(b); 24 | if(solver.info() != Eigen::Success) { 25 | Rcpp::stop("Solver failed in cond_t (2)"); 26 | } 27 | 28 | Rcpp::List res = Rcpp::List::create(Rcpp::Named("b") = b, Rcpp::Named("fb") = fb); 29 | 30 | return res; 31 | } 32 | 33 | // [[Rcpp::export(".cond_t_iter")]] 34 | Rcpp::List cond_t_iter(const Eigen::Map > &IQ, 35 | const Eigen::VectorXd &qj) 36 | { 37 | Eigen::BiCGSTAB, Eigen::IncompleteLUT > solver; 38 | 39 | solver.compute(IQ); 40 | if(solver.info() != Eigen::Success) { 41 | Rcpp::stop("Decomposition failed in cond_t_iter"); 42 | } 43 | 44 | Eigen::VectorXd b = solver.solve(qj); 45 | if(solver.info() != Eigen::Success) { 46 | Rcpp::stop("Solver failed in cond_t_iter (1)"); 47 | } 48 | 49 | Eigen::VectorXd fb = solver.solve(b); 50 | if(solver.info() != Eigen::Success) { 51 | Rcpp::stop("Solver failed in cond_t_iter (2)"); 52 | } 53 | 54 | Rcpp::List res = Rcpp::List::create(Rcpp::Named("b") = b, Rcpp::Named("fb") = fb); 55 | 56 | return res; 57 | } 58 | -------------------------------------------------------------------------------- /inst/examples/example.R: -------------------------------------------------------------------------------- 1 | # "Load" the data. In this case we are using data built into the package. 2 | # In practice, users will likely load raster data using the raster() function 3 | # from the raster package. 4 | res_data <- samc::example_split_corridor$res 5 | abs_data <- samc::example_split_corridor$abs 6 | init_data <- samc::example_split_corridor$init 7 | 8 | 9 | # Make sure our data meets the basic input requirements of the package using 10 | # the check() function. 11 | check(res_data, abs_data) 12 | check(res_data, init_data) 13 | 14 | # Setup the details for a random-walk model 15 | rw_model <- list(fun = function(x) 1/mean(x), # Function for calculating transition probabilities 16 | dir = 8, # Directions of the transitions. Either 4 or 8. 17 | sym = TRUE) # Is the function symmetric? 18 | 19 | 20 | # Create a `samc-class` object with the resistance and absorption data using 21 | # the samc() function. We use the recipricol of the arithmetic mean for 22 | # calculating the transition matrix. Note, the input data here are matrices, 23 | # not RasterLayers. 24 | samc_obj <- samc(res_data, abs_data, model = rw_model) 25 | 26 | 27 | # Convert the initial state data to probabilities 28 | init_prob_data <- init_data / sum(init_data, na.rm = TRUE) 29 | 30 | 31 | # Calculate short- and long-term metrics using the analytical functions 32 | short_mort <- mortality(samc_obj, init_prob_data, time = 50) 33 | short_dist <- distribution(samc_obj, origin = 3, time = 50) 34 | long_disp <- dispersal(samc_obj, init_prob_data) 35 | visit <- visitation(samc_obj, dest = 4) 36 | surv <- survival(samc_obj) 37 | 38 | 39 | # Use the map() function to turn vector results into RasterLayer objects. 40 | short_mort_map <- map(samc_obj, short_mort) 41 | short_dist_map <- map(samc_obj, short_dist) 42 | long_disp_map <- map(samc_obj, long_disp) 43 | visit_map <- map(samc_obj, visit) 44 | surv_map <- map(samc_obj, surv) 45 | -------------------------------------------------------------------------------- /docs/deps/Montserrat-0.4.9/font.css: -------------------------------------------------------------------------------- 1 | /* cyrillic-ext */ 2 | @font-face { 3 | font-family: 'Montserrat'; 4 | font-style: normal; 5 | font-weight: 400; 6 | font-display: swap; 7 | src: url(JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw0aXpsog.woff2) format('woff2'); 8 | unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 9 | } 10 | /* cyrillic */ 11 | @font-face { 12 | font-family: 'Montserrat'; 13 | font-style: normal; 14 | font-weight: 400; 15 | font-display: swap; 16 | src: url(JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw9aXpsog.woff2) format('woff2'); 17 | unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 18 | } 19 | /* vietnamese */ 20 | @font-face { 21 | font-family: 'Montserrat'; 22 | font-style: normal; 23 | font-weight: 400; 24 | font-display: swap; 25 | src: url(JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw2aXpsog.woff2) format('woff2'); 26 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; 27 | } 28 | /* latin-ext */ 29 | @font-face { 30 | font-family: 'Montserrat'; 31 | font-style: normal; 32 | font-weight: 400; 33 | font-display: swap; 34 | src: url(JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw3aXpsog.woff2) format('woff2'); 35 | unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 36 | } 37 | /* latin */ 38 | @font-face { 39 | font-family: 'Montserrat'; 40 | font-style: normal; 41 | font-weight: 400; 42 | font-display: swap; 43 | src: url(JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw5aXo.woff2) format('woff2'); 44 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 45 | } 46 | -------------------------------------------------------------------------------- /docs/bootstrap-toc.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/) 3 | * Copyright 2015 Aidan Feldman 4 | * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ 5 | 6 | /* modified from https://github.com/twbs/bootstrap/blob/94b4076dd2efba9af71f0b18d4ee4b163aa9e0dd/docs/assets/css/src/docs.css#L548-L601 */ 7 | 8 | /* All levels of nav */ 9 | nav[data-toggle='toc'] .nav > li > a { 10 | display: block; 11 | padding: 4px 20px; 12 | font-size: 13px; 13 | font-weight: 500; 14 | color: #767676; 15 | } 16 | nav[data-toggle='toc'] .nav > li > a:hover, 17 | nav[data-toggle='toc'] .nav > li > a:focus { 18 | padding-left: 19px; 19 | color: #563d7c; 20 | text-decoration: none; 21 | background-color: transparent; 22 | border-left: 1px solid #563d7c; 23 | } 24 | nav[data-toggle='toc'] .nav > .active > a, 25 | nav[data-toggle='toc'] .nav > .active:hover > a, 26 | nav[data-toggle='toc'] .nav > .active:focus > a { 27 | padding-left: 18px; 28 | font-weight: bold; 29 | color: #563d7c; 30 | background-color: transparent; 31 | border-left: 2px solid #563d7c; 32 | } 33 | 34 | /* Nav: second level (shown on .active) */ 35 | nav[data-toggle='toc'] .nav .nav { 36 | display: none; /* Hide by default, but at >768px, show it */ 37 | padding-bottom: 10px; 38 | } 39 | nav[data-toggle='toc'] .nav .nav > li > a { 40 | padding-top: 1px; 41 | padding-bottom: 1px; 42 | padding-left: 30px; 43 | font-size: 12px; 44 | font-weight: normal; 45 | } 46 | nav[data-toggle='toc'] .nav .nav > li > a:hover, 47 | nav[data-toggle='toc'] .nav .nav > li > a:focus { 48 | padding-left: 29px; 49 | } 50 | nav[data-toggle='toc'] .nav .nav > .active > a, 51 | nav[data-toggle='toc'] .nav .nav > .active:hover > a, 52 | nav[data-toggle='toc'] .nav .nav > .active:focus > a { 53 | padding-left: 28px; 54 | font-weight: 500; 55 | } 56 | 57 | /* from https://github.com/twbs/bootstrap/blob/e38f066d8c203c3e032da0ff23cd2d6098ee2dd6/docs/assets/css/src/docs.css#L631-L634 */ 58 | nav[data-toggle='toc'] .nav > .active > ul { 59 | display: block; 60 | } 61 | -------------------------------------------------------------------------------- /docs/deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Table of Contents v1.0.1 (http://afeld.github.io/bootstrap-toc/) 3 | * Copyright 2015 Aidan Feldman 4 | * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ 5 | !function(a){"use strict";window.Toc={helpers:{findOrFilter:function(e,t){var n=e.find(t);return e.filter(t).add(n).filter(":not([data-toc-skip])")},generateUniqueIdBase:function(e){return a(e).text().trim().replace(/\'/gi,"").replace(/[& +$,:;=?@"#{}|^~[`%!'<>\]\.\/\(\)\*\\\n\t\b\v]/g,"-").replace(/-{2,}/g,"-").substring(0,64).replace(/^-+|-+$/gm,"").toLowerCase()||e.tagName.toLowerCase()},generateUniqueId:function(e){for(var t=this.generateUniqueIdBase(e),n=0;;n++){var r=t;if(0')},createChildNavList:function(e){var t=this.createNavList();return e.append(t),t},generateNavEl:function(e,t){var n=a('');n.attr("href","#"+e),n.text(t);var r=a("
  • ");return r.append(n),r},generateNavItem:function(e){var t=this.generateAnchor(e),n=a(e),r=n.data("toc-text")||n.text();return this.generateNavEl(t,r)},getTopLevel:function(e){for(var t=1;t<=6;t++){if(1 8 | %\VignetteIndexEntry{Models} 9 | %\VignetteEngine{knitr::rmarkdown} 10 | %\VignetteEncoding{UTF-8} 11 | --- 12 | 13 | ```{r setup, include = FALSE} 14 | knitr::opts_chunk$set( 15 | collapse = TRUE, 16 | comment = "#>" 17 | ) 18 | ``` 19 | 20 | ## Background 21 | 22 | The samc package currently supports a random-walk (RW) model. The random-walk is the default model that always has been used by the package. Version 3 made breaking changes to the samc() function to setup a structure for specifying different models, with plans for a correlated random-walk model in the future. 23 | 24 | ## Models 25 | 26 | Models in the samc package are defined as a list with various components depending on the context: 27 | 28 | ``` 29 | list(name, fun, dir, sym) 30 | ``` 31 | 32 | ### Random-Walk 33 | 34 | The basic random-walk is the default model used by the package and uses the following properties: 35 | 36 | - `name`: can be omitted or set to `"RW"` 37 | - `fun`: a function for calculating transition probabilities from the data input. The convolution algorithm does not allow for custom functions, so this should be omitted in that context. 38 | - `dir` can be either `4` or `8` 39 | - `sym` can be either `TRUE` or `FALSE`, and is used as an optimization when calculating transition probabilities. 40 | 41 | 42 | ## Examples 43 | 44 | ```{r, message = FALSE, fig.show='hold', fig.width=5, fig.height=3, fig.align='center'} 45 | library("terra") 46 | library("samc") 47 | library("viridisLite") 48 | 49 | res_data <- samc::rasterize(example_toy_res) 50 | abs_data <- samc::rasterize(example_toy_res * 0 + 0.05) 51 | 52 | plot(res_data, main = "Resistance") 53 | 54 | rw_model <- list(fun = "1/mean(x)", dir = 8, sym = TRUE) 55 | 56 | samc_rw <- samc(res_data, abs_data, model = rw_model) 57 | 58 | origin = 85 # Centered near the bottom 59 | dir = 1 # Up and left 60 | 61 | vis_rw <- as.vector(visitation(samc_rw, origin = origin)) 62 | 63 | # The RW results 64 | plot(map(samc_rw, vis_rw), col = viridis(1024), main = "RW") 65 | 66 | ``` 67 | -------------------------------------------------------------------------------- /docs/deps/Roboto-0.4.9/font.css: -------------------------------------------------------------------------------- 1 | /* cyrillic-ext */ 2 | @font-face { 3 | font-family: 'Roboto'; 4 | font-style: normal; 5 | font-weight: 400; 6 | font-display: swap; 7 | src: url(KFOmCnqEu92Fr1Mu72xKOzY.woff2) format('woff2'); 8 | unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 9 | } 10 | /* cyrillic */ 11 | @font-face { 12 | font-family: 'Roboto'; 13 | font-style: normal; 14 | font-weight: 400; 15 | font-display: swap; 16 | src: url(KFOmCnqEu92Fr1Mu5mxKOzY.woff2) format('woff2'); 17 | unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 18 | } 19 | /* greek-ext */ 20 | @font-face { 21 | font-family: 'Roboto'; 22 | font-style: normal; 23 | font-weight: 400; 24 | font-display: swap; 25 | src: url(KFOmCnqEu92Fr1Mu7mxKOzY.woff2) format('woff2'); 26 | unicode-range: U+1F00-1FFF; 27 | } 28 | /* greek */ 29 | @font-face { 30 | font-family: 'Roboto'; 31 | font-style: normal; 32 | font-weight: 400; 33 | font-display: swap; 34 | src: url(KFOmCnqEu92Fr1Mu4WxKOzY.woff2) format('woff2'); 35 | unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; 36 | } 37 | /* vietnamese */ 38 | @font-face { 39 | font-family: 'Roboto'; 40 | font-style: normal; 41 | font-weight: 400; 42 | font-display: swap; 43 | src: url(KFOmCnqEu92Fr1Mu7WxKOzY.woff2) format('woff2'); 44 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; 45 | } 46 | /* latin-ext */ 47 | @font-face { 48 | font-family: 'Roboto'; 49 | font-style: normal; 50 | font-weight: 400; 51 | font-display: swap; 52 | src: url(KFOmCnqEu92Fr1Mu7GxKOzY.woff2) format('woff2'); 53 | unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 54 | } 55 | /* latin */ 56 | @font-face { 57 | font-family: 'Roboto'; 58 | font-style: normal; 59 | font-weight: 400; 60 | font-display: swap; 61 | src: url(KFOmCnqEu92Fr1Mu4mxK.woff2) format('woff2'); 62 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 63 | } 64 | -------------------------------------------------------------------------------- /docs/docsearch.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | 3 | // register a handler to move the focus to the search bar 4 | // upon pressing shift + "/" (i.e. "?") 5 | $(document).on('keydown', function(e) { 6 | if (e.shiftKey && e.keyCode == 191) { 7 | e.preventDefault(); 8 | $("#search-input").focus(); 9 | } 10 | }); 11 | 12 | $(document).ready(function() { 13 | // do keyword highlighting 14 | /* modified from https://jsfiddle.net/julmot/bL6bb5oo/ */ 15 | var mark = function() { 16 | 17 | var referrer = document.URL ; 18 | var paramKey = "q" ; 19 | 20 | if (referrer.indexOf("?") !== -1) { 21 | var qs = referrer.substr(referrer.indexOf('?') + 1); 22 | var qs_noanchor = qs.split('#')[0]; 23 | var qsa = qs_noanchor.split('&'); 24 | var keyword = ""; 25 | 26 | for (var i = 0; i < qsa.length; i++) { 27 | var currentParam = qsa[i].split('='); 28 | 29 | if (currentParam.length !== 2) { 30 | continue; 31 | } 32 | 33 | if (currentParam[0] == paramKey) { 34 | keyword = decodeURIComponent(currentParam[1].replace(/\+/g, "%20")); 35 | } 36 | } 37 | 38 | if (keyword !== "") { 39 | $(".contents").unmark({ 40 | done: function() { 41 | $(".contents").mark(keyword); 42 | } 43 | }); 44 | } 45 | } 46 | }; 47 | 48 | mark(); 49 | }); 50 | }); 51 | 52 | /* Search term highlighting ------------------------------*/ 53 | 54 | function matchedWords(hit) { 55 | var words = []; 56 | 57 | var hierarchy = hit._highlightResult.hierarchy; 58 | // loop to fetch from lvl0, lvl1, etc. 59 | for (var idx in hierarchy) { 60 | words = words.concat(hierarchy[idx].matchedWords); 61 | } 62 | 63 | var content = hit._highlightResult.content; 64 | if (content) { 65 | words = words.concat(content.matchedWords); 66 | } 67 | 68 | // return unique words 69 | var words_uniq = [...new Set(words)]; 70 | return words_uniq; 71 | } 72 | 73 | function updateHitURL(hit) { 74 | 75 | var words = matchedWords(hit); 76 | var url = ""; 77 | 78 | if (hit.anchor) { 79 | url = hit.url_without_anchor + '?q=' + escape(words.join(" ")) + '#' + hit.anchor; 80 | } else { 81 | url = hit.url + '?q=' + escape(words.join(" ")); 82 | } 83 | 84 | return url; 85 | } 86 | -------------------------------------------------------------------------------- /vignettes/data-disconnected.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Disconnected Data" 3 | author: "Andrew Marx" 4 | date: "`r Sys.Date()`" 5 | license: "CC BY-NC-SA 4.0" 6 | output: rmarkdown::html_vignette 7 | vignette: > 8 | %\VignetteIndexEntry{Disconnected Data} 9 | %\VignetteEngine{knitr::rmarkdown} 10 | %\VignetteEncoding{UTF-8} 11 | --- 12 | 13 | ```{r setup, include = FALSE} 14 | knitr::opts_chunk$set( 15 | collapse = TRUE, 16 | comment = "#>" 17 | ) 18 | 19 | required <- c("viridis") 20 | if (!all(sapply(required, requireNamespace, quietly = TRUE))) { 21 | knitr::opts_chunk$set(eval = FALSE) 22 | } 23 | 24 | library("raster") 25 | library("samc") 26 | library("viridisLite") 27 | ``` 28 | 29 | *Note: this vignette is far from complete and only contains a brief discussion (originally from an email) of the topic in the context of rasters. It will be rewritten and expanded in future releases.* 30 | 31 | ## Rasters 32 | 33 | Imagine you have a raster with 2 islands, and that water separating the islands in the raster is represented with `NA`'s. These two islands would be disconnected and will result in `"Warning: Input contains disconnected regions. This does not work with the cond_passage() metric."`. The warning isn't an issue if you don't need the `cond_passage()` function. 34 | 35 | Now, each island (aka region) must have at least one pixel with a non-zero absorbing value. The math algorithms don't work without that. If a region does not have at least one non-zero absorbing value, then the `samc()` function will result in `Error: All disconnected regions must have at least one non-zero absorption value` 36 | 37 | Now the tricky part; an island/region can be as small as a single pixel. So, if you're not careful with your raster, you might have very small, isolated patches as small as a pixel floating around somewhere. If you're using just 4 directions for the transition function, they could even be immediately diagonal to another patch. 38 | 39 | The easiest way to spot these is to pick one of your rasters and set all your non-`NA` values to the same value, like 1. Then turn all the `NA`'s to a different value, like 0. Then plot it. Code: 40 | 41 | ```{r eval = FALSE} 42 | raster[!is.na(raster[])) <- 1 43 | raster[is.na(raster[])) <- 0 44 | plot(raster) 45 | ``` 46 | 47 | If your raster is particularly large, then you might need to save it to a high-res image to spot solo pixels in an external picture editor or viewer. 48 | 49 | -------------------------------------------------------------------------------- /R/rasterize.R: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024 Andrew Marx. All rights reserved. 2 | # Licensed under AGPLv3.0. See LICENSE file in the project root for details. 3 | 4 | #' @include samc-class.R 5 | NULL 6 | 7 | 8 | #' Rasterize input 9 | #' 10 | #' Convert input to a SpatRaster object 11 | #' 12 | #' This function is primarily used to convert an input matrix or raster to a SpatRaster 13 | #' object. The main thing it is useful for is setting a standard extent and CRS for 14 | #' converting matrices. It is used internally by the package to ensure consistent 15 | #' results for the different data types for maps. 16 | #' 17 | #' When converting matrices, the extents are set to match the number of rows and 18 | #' columns of the matrix. Pixels in the result are centered on whole number coordinates 19 | #' with (1,1) corresponding to the bottom left pixel. The CRS is set to "local", which 20 | #' treats it as Euclidean (Cartesian) plane with the units in meters. 21 | #' 22 | #' The main benefit will be for users that want an easy way to plot matrix data. 23 | #' If the input type to the \code{\link{samc}} function is matrices, then the output 24 | #' of \code{\link{map}} will also be matrices. Plotting these matrices can require 25 | #' more work than simply using SpatRaster objects for \code{\link{samc}} and getting 26 | #' SpatRaster results back from \code{\link{map}}. 27 | #' 28 | #' The raster and terra packages both also have a rasterize function that serves 29 | #' a different purpose. If either of these packages are used directly, then the order of 30 | #' package loading becomes very important because it will determine which version 31 | #' of rasterize is used by default. 32 | #' 33 | #' @param x A matrix, RasterLayer, or SpatRaster 34 | # 35 | #' @return A SpatRaster object 36 | #' 37 | #' @example inst/examples/example.R 38 | #' 39 | #' @export 40 | setGeneric( 41 | "rasterize", 42 | function(x) { 43 | standardGeneric("rasterize") 44 | }) 45 | 46 | #' @rdname rasterize 47 | setMethod( 48 | "rasterize", 49 | signature(x = "matrix"), 50 | function(x) { 51 | terra::rast(x, extent = terra::ext(0.5, ncol(x) + 0.5, 0.5, nrow(x) + 0.5), crs = "local") 52 | }) 53 | 54 | #' @rdname rasterize 55 | setMethod( 56 | "rasterize", 57 | signature(x = "RasterLayer"), 58 | function(x) { 59 | terra::rast(x) 60 | }) 61 | 62 | #' @rdname rasterize 63 | setMethod( 64 | "rasterize", 65 | signature(x = "SpatRaster"), 66 | function(x) { 67 | x 68 | }) 69 | -------------------------------------------------------------------------------- /tests/testthat/test-cond_passage.R: -------------------------------------------------------------------------------- 1 | context("Conditional Passage Time") 2 | 3 | br_function <- function(samc, col) { 4 | # Calculate the results based on De Sanctis and de Koning 2018 5 | Q <- samc$q_matrix 6 | Q <- as.matrix(Q) 7 | 8 | qj <- Q[-col, col] 9 | Qj <- Q[-col, -col] 10 | 11 | I <- diag(nrow(Qj)) 12 | 13 | r <- samc@data@t_abs 14 | r <- r[-col] 15 | 16 | R <- cbind(r, qj) 17 | 18 | f <- solve(I - Qj) 19 | 20 | b <- as.matrix(f %*% R) 21 | bdg <- Matrix::sparseMatrix(i = 1:nrow(b), 22 | j = 1:nrow(b), 23 | x = b[, 2], 24 | index1 = TRUE) 25 | 26 | bdg <- as.matrix(bdg) 27 | 28 | res <- solve(bdg) %*% f %*% bdg %*% rep(1, nrow(bdg)) 29 | return(as.numeric(res)) 30 | } 31 | 32 | test_num = 0 33 | for(test in testlist) { 34 | test_num = test_num + 1 35 | 36 | # TODO cond_passage does not work in all cases yet. Remove this when it does 37 | if (!(test$id %in% c(1, 2))) next 38 | 39 | # Create the samc object 40 | samc_obj <- test$samc 41 | 42 | # Create a version from P matrix 43 | samc_p <- samc(samc_obj$p_matrix) 44 | samc_p@clumps = samc_obj@clumps # TODO: remove when creation of samc object from P matrix calculates clumps 45 | 46 | 47 | # Run the tests 48 | test_that(paste("Testing cond_passage(samc, dest):", test_num), { 49 | 50 | base_result <- br_function(samc_obj, col_vec[1]) 51 | 52 | r1 <- cond_passage(samc_p, dest = col_vec[1]) 53 | r2 <- cond_passage(samc_p, dest = as.character(col_vec[1])) 54 | 55 | r1 <- r1[-col_vec[1]] 56 | r2 <- r2[-col_vec[1]] 57 | 58 | # Verify 59 | expect_equal(dim(r1), dim(base_result)) 60 | expect_equal(as.vector(r1), as.vector(base_result)) 61 | expect_equal(r1, r2) 62 | }) 63 | 64 | test_that(paste("Testing cond_passage(samc, origin, dest)", test_num), { 65 | vector_result <- cond_passage(samc_p, origin = row_vec, dest = col_vec) 66 | vector_result_char <- cond_passage(samc_p, origin = as.character(row_vec), dest = as.character(col_vec)) 67 | 68 | expect_equal(vector_result, vector_result_char) 69 | 70 | for (i in 1:length(row_vec)) { 71 | base_result <- cond_passage(samc_obj, dest = col_vec[i]) 72 | 73 | r <- cond_passage(samc_p, origin = row_vec[i], dest = col_vec[i]) 74 | 75 | expect_equal(r, unname(base_result[row_vec[i]])) 76 | expect_equal(vector_result[i], r) 77 | } 78 | }) 79 | } 80 | -------------------------------------------------------------------------------- /vignettes/scripts/example-coinflip.R: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024 Andrew Marx. All rights reserved. 2 | # Licensed under AGPLv3.0. See LICENSE file in the project root for details. 3 | 4 | # This script is the source of the code for the coin flip example vignette 5 | # The lines with `@knitr` are for processing by knitr 6 | 7 | # TODO Incorporate more comments to make the script more useful on it's own 8 | # without the vignette 9 | 10 | 11 | ## @knitr Part1 12 | # 13 | # Part 1 ---- 14 | # 15 | 16 | ## @knitr library_1 17 | library(samc) 18 | 19 | 20 | ## @knitr setup_1 21 | # Coin flip probabilities 22 | p <- 0.5 # Probability of heads 23 | q <- 1 - p # Probability of tails 24 | 25 | p_mat <- matrix(c(0, 0, 0, 0, 0, 0, q, p, 26 | q, p, 0, 0, 0, 0, 0, 0, 27 | 0, 0, 0, 0, 0, 0, q, p, 28 | q, p, 0, 0, 0, 0, 0, 0, 29 | 0, 0, 0, 0, q, p, 0, 0, 30 | 0, 0, q, p, 0, 0, 0, 0, 31 | 0, 0, 0, 0, q, p, 0, 0, 32 | 0, 0, 0, 0, 0, 0, 0, 1), 33 | 8, byrow = TRUE) 34 | 35 | rownames(p_mat) <- c("HHT", "HHH", "THT", "THH", "TTT", "TTH", "HTT", "HTH") 36 | colnames(p_mat) <- rownames(p_mat) 37 | 38 | # A samc object is the core of the package 39 | samc_obj <- samc(p_mat) 40 | 41 | 42 | ## @knitr metric_1 43 | # Given the last 3 flips, how many more flips until we hit HTH (absorption)? 44 | survival(samc_obj) 45 | 46 | 47 | ## @knitr metric_2_1 48 | # Given a starting point (in this case, a sequence of 3 flips), how many times 49 | # would we expect the different combinations of 3 flips to occur before absorption? 50 | visitation(samc_obj, origin = "HHT") 51 | 52 | sum(visitation(samc_obj, origin = "HHT")) # Compare to survival() result 53 | 54 | 55 | ## @knitr metric_2_2 56 | # Instead of a start point, we can look at an endpoint and how often we expect 57 | # it to occur for each of the possible starting points 58 | visitation(samc_obj, dest = "THT") 59 | 60 | # These results are just rows/cols of a larger matrix. We can get the entire matrix 61 | # of the start/end possibilities but first, we have to disable some safety measures 62 | # in place because this package is designed to work with extremely large P matrices 63 | # (millions of rows/cols) where these types of results will consume too much RAM and 64 | # crash R 65 | samc_obj$override <- TRUE 66 | visitation(samc_obj) 67 | 68 | rowSums(visitation(samc_obj)) # equivalent to survival() above 69 | 70 | 71 | ## @knitr metric_3 72 | dispersal(samc_obj, dest = "TTT", time = 5) 73 | 74 | -------------------------------------------------------------------------------- /DESCRIPTION: -------------------------------------------------------------------------------- 1 | Package: samc 2 | Type: Package 3 | Title: Spatial Absorbing Markov Chains 4 | Version: 4.0.0 5 | Authors@R: c( 6 | person("Andrew", "Marx", , "ajm.rpackages@gmail.com", role = c("aut", "cre", "cph"), 7 | comment = c(ORCID = "0000-0002-7456-1631") 8 | ), 9 | person("Robert", "Fletcher", , , role = c("ctb"), 10 | comment = c(ORCID = "0000-0003-1717-5707") 11 | ), 12 | person("Miguel", "Acevedo", , , role = c("ctb"), 13 | comment = c(ORCID = "0000-0002-8289-1497") 14 | ), 15 | person("Jorge", "Sefair", , , role = c("ctb"), 16 | comment = c(ORCID = "0000-0002-5887-8938") 17 | ), 18 | person("Chao", "Wang", , , role = c("ctb"), 19 | comment = c(ORCID = "0000-0003-2706-5122") 20 | ), 21 | person("Hughes", "Josie", , , role = c("ctb"), 22 | comment = c(ORCID = "0000-0001-7875-9015") 23 | ), 24 | person("Barrett", "Griffin", , , role = c("ctb")) 25 | ) 26 | Description: Implements functions for working with absorbing Markov chains. The 27 | implementation is based on the framework described in "Toward a unified 28 | framework for connectivity that disentangles movement and mortality in space 29 | and time" by Fletcher et al. (2019) , which applies 30 | them to spatial ecology. This framework incorporates both resistance and 31 | absorption with spatial absorbing Markov chains (SAMC) to provide several 32 | short-term and long-term predictions for metrics related to connectivity in 33 | landscapes. Despite the ecological context of the framework, this package 34 | can be used in any application of absorbing Markov chains. 35 | License: AGPL (>= 3) 36 | URL: https://andrewmarx.github.io/samc/ 37 | BugReports: https://github.com/andrewmarx/samc/issues/ 38 | Encoding: UTF-8 39 | LazyData: true 40 | Depends: R (>= 3.6.0) 41 | Imports: 42 | methods, 43 | Matrix (>= 1.5-3), 44 | raster, 45 | terra (>= 1.7-3), 46 | circular 47 | RoxygenNote: 7.3.2 48 | Suggests: knitr, 49 | rmarkdown, 50 | testthat, 51 | gdistance, 52 | viridisLite 53 | VignetteBuilder: knitr 54 | Collate: 55 | 'RcppExports.R' 56 | 'location-class.R' 57 | 'internal-classes.R' 58 | 'samc-class.R' 59 | 'absorption.R' 60 | 'check.R' 61 | 'cond_passage.R' 62 | 'data.R' 63 | 'visitation.R' 64 | 'dispersal.R' 65 | 'distribution.R' 66 | 'generics.R' 67 | 'internal-data.R' 68 | 'internal-functions.R' 69 | 'internal-utils.R' 70 | 'internal-validation.R' 71 | 'locate.R' 72 | 'map.R' 73 | 'mortality.R' 74 | 'pairwise.R' 75 | 'rasterize.R' 76 | 'samc.R' 77 | 'survival.R' 78 | 'zzz.R' 79 | LinkingTo: Rcpp (>= 1.0.10), RcppEigen (>= 0.3.3.9.3), RcppThread (>= 2.1.3) 80 | -------------------------------------------------------------------------------- /_pkgdown.yml: -------------------------------------------------------------------------------- 1 | template: 2 | bootstrap: 5 3 | bootswatch: cosmo 4 | 5 | navbar: 6 | bg: dark 7 | title: "samc" 8 | left: 9 | - text: "Articles" 10 | menu: 11 | - text: "Overview" 12 | href: articles/overview.html 13 | - text: "Circuit Theory" 14 | href: articles/article-circuit-theory.html 15 | - text: "Computation Methods" 16 | href: articles/article-computation-methods.html 17 | - text: "Models" 18 | href: articles/article-models.html 19 | - text: "Performance" 20 | href: articles/performance.html 21 | - text: "Parallel Computing" 22 | href: articles/parallel.html 23 | - text: "Troubleshooting" 24 | href: articles/troubleshooting.html 25 | - text: "Code Snippets" 26 | href: articles/code-snippets.html 27 | - text: "Data" 28 | menu: 29 | - text: "Disconnected Data" 30 | href: articles/data-disconnected.html 31 | - text: "Tutorials" 32 | menu: 33 | - text: "Basic Tutorial" 34 | href: articles/tutorial-basic.html 35 | - text: "Locations" 36 | href: articles/tutorial-locations.html 37 | - text: "ggplot Visualization" 38 | href: articles/tutorial-ggplot.html 39 | - text: "Temporal Analysis" 40 | href: articles/tutorial-temporal.html 41 | - text: "Animations" 42 | href: articles/tutorial-animations.html 43 | - text: "Multiple Absorption" 44 | href: articles/tutorial-multiple-absorption.html 45 | - text: "Examples" 46 | menu: 47 | - text: "Coin Flip" 48 | href: articles/example-coinflip.html 49 | - text: "Maze (Part 1)" 50 | href: articles/example-maze-part1.html 51 | - text: "Maze (Part 2)" 52 | href: articles/example-maze-part2.html 53 | - text: "Maze (Part 3)" 54 | href: articles/example-maze-part3.html 55 | - text: "Reference" 56 | href: reference/index.html 57 | - text: News 58 | href: news/index.html 59 | right: 60 | - icon: fa-github 61 | href: https://github.com/andrewmarx/samc 62 | 63 | reference: 64 | - title: "Classes" 65 | contents: 66 | - samc-class 67 | - location-class 68 | - title: "Utility Functions" 69 | contents: 70 | - check 71 | - locate 72 | - map 73 | - pairwise 74 | - rasterize 75 | - samc 76 | - title: "Analytical Functions" 77 | contents: 78 | - absorption 79 | - cond_passage 80 | - dispersal 81 | - distribution 82 | - mortality 83 | - survival 84 | - visitation 85 | - visitation_net 86 | - title: "Built-in Data" 87 | contents: 88 | - example_maze 89 | - example_split_corridor 90 | - example_toy_res 91 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # samc 2 | 3 | [![CRAN_Status_Badge](https://www.r-pkg.org/badges/version/samc)](https://cran.r-project.org/package=samc) 4 | [![metacran downloads](https://cranlogs.r-pkg.org/badges/grand-total/samc)](https://cran.r-project.org/package=samc) 5 | [![Gitter](https://badges.gitter.im/samc-package/community.svg)](https://gitter.im/samc-package/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) 6 | 7 | 8 | ## Introduction 9 | 10 | This is an R package that implements functions for working with absorbing Markov chains using theorems described in the book "Finite Markov Chains" by Kemeny and Snell. The design of this package is based on the implementation of these theorems in the framework described by Fletcher et al. in [*Toward a unified framework for connectivity that disentangles movement and mortality in space and time*](https://onlinelibrary.wiley.com/doi/abs/10.1111/ele.13333) (Ecology Letters, 2019; DOI: [10.1111/ele.13333](https://doi.org/10.1111/ele.13333)), which applies them to spatial ecology. Despite the ecological context of the package, these functions can be used in any application of absorbing Markov chains. 11 | 12 | For more information, and recommended installation instructions, most users should visit the main home page at https://andrewmarx.github.io/samc. The remainder of this document is dedicated to installing the package from the source (not recommended). 13 | 14 | 15 | ## Installing From GitHub 16 | 17 | #### Pre v1.0.0 18 | 19 | Specific versions of the package can be installed by using the `ref` parameter. In the case of Fletcher et al. (2019), version 0.1.0 of the package was used. To run the code example in the SI of that paper, you would need to install that specific version of samc using: 20 | 21 | ```R 22 | devtools::install_github("andrewmarx/samc", ref = "0.1.0") 23 | ``` 24 | 25 | #### v1.0.0 and Later 26 | 27 | Version 1.0.0 and newer requires C++ development tools to install from source. The steps required to install the appropriate development tools vary by the operating system and are beyond the scope of this document. Users will have to locate and follow appropriate external documentation to set up the devtools if they wish to install the newest version of the samc package from the source. 28 | 29 | If the devtools are installed and setup correctly, then the latest version of the package can be installed directly from GitHub using the following command: 30 | 31 | ```R 32 | devtools::install_github("andrewmarx/samc") 33 | ``` 34 | 35 | ## Support 36 | 37 | We have a Github discussions page for anything and everything related to the package here: [Github Discussions](https://github.com/andrewmarx/samc/discussions) 38 | -------------------------------------------------------------------------------- /docs/lightswitch.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Color mode toggler for Bootstrap's docs (https://getbootstrap.com/) 4 | * Copyright 2011-2023 The Bootstrap Authors 5 | * Licensed under the Creative Commons Attribution 3.0 Unported License. 6 | * Updates for {pkgdown} by the {bslib} authors, also licensed under CC-BY-3.0. 7 | */ 8 | 9 | const getStoredTheme = () => localStorage.getItem('theme') 10 | const setStoredTheme = theme => localStorage.setItem('theme', theme) 11 | 12 | const getPreferredTheme = () => { 13 | const storedTheme = getStoredTheme() 14 | if (storedTheme) { 15 | return storedTheme 16 | } 17 | 18 | return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' 19 | } 20 | 21 | const setTheme = theme => { 22 | if (theme === 'auto') { 23 | document.documentElement.setAttribute('data-bs-theme', (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')) 24 | } else { 25 | document.documentElement.setAttribute('data-bs-theme', theme) 26 | } 27 | } 28 | 29 | function bsSetupThemeToggle () { 30 | 'use strict' 31 | 32 | const showActiveTheme = (theme, focus = false) => { 33 | var activeLabel, activeIcon; 34 | 35 | document.querySelectorAll('[data-bs-theme-value]').forEach(element => { 36 | const buttonTheme = element.getAttribute('data-bs-theme-value') 37 | const isActive = buttonTheme == theme 38 | 39 | element.classList.toggle('active', isActive) 40 | element.setAttribute('aria-pressed', isActive) 41 | 42 | if (isActive) { 43 | activeLabel = element.textContent; 44 | activeIcon = element.querySelector('span').classList.value; 45 | } 46 | }) 47 | 48 | const themeSwitcher = document.querySelector('#dropdown-lightswitch') 49 | if (!themeSwitcher) { 50 | return 51 | } 52 | 53 | themeSwitcher.setAttribute('aria-label', activeLabel) 54 | themeSwitcher.querySelector('span').classList.value = activeIcon; 55 | 56 | if (focus) { 57 | themeSwitcher.focus() 58 | } 59 | } 60 | 61 | window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => { 62 | const storedTheme = getStoredTheme() 63 | if (storedTheme !== 'light' && storedTheme !== 'dark') { 64 | setTheme(getPreferredTheme()) 65 | } 66 | }) 67 | 68 | window.addEventListener('DOMContentLoaded', () => { 69 | showActiveTheme(getPreferredTheme()) 70 | 71 | document 72 | .querySelectorAll('[data-bs-theme-value]') 73 | .forEach(toggle => { 74 | toggle.addEventListener('click', () => { 75 | const theme = toggle.getAttribute('data-bs-theme-value') 76 | setTheme(theme) 77 | setStoredTheme(theme) 78 | showActiveTheme(theme, true) 79 | }) 80 | }) 81 | }) 82 | } 83 | 84 | setTheme(getPreferredTheme()); 85 | bsSetupThemeToggle(); 86 | -------------------------------------------------------------------------------- /tests/testthat/test-check.R: -------------------------------------------------------------------------------- 1 | context("Check") 2 | 3 | 4 | # Fail cases for check() 5 | check_fail <- list( 6 | check1 = matrix(c(5, 5, 5, 5, 5, 5, 5, 5, 5, 7 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 8 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 9 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 10 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 11 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 12 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 13 | 5, 5, 5, 5, 5, 5, 5, 5, 5), 14 | nrow = 8), 15 | check2 = matrix(c(5, 5, 5, 5, 5, 5, 5, 5, 5, 16 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 17 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 18 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 19 | 5, 5, 5, 5,Inf, 5, 5, 5, 5, 20 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 21 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 22 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 23 | 5, 5, 5, 5, 5, 5, 5, 5, 5), 24 | nrow = 9), 25 | check3 = matrix(c(5, 5, 5, 5, 5, 5, 5, 5, 5, 26 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 27 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 28 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 29 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 30 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 31 | 5, 5, 5, 5, 5, 5, 5,NaN, 5, 32 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 33 | 5, 5, 5, 5, 5, 5, 5, 5, 5), 34 | nrow = 9), 35 | check4 = matrix(c(5, 5, 5, 5, 5, 5, 5, 5, 5, 36 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 37 | 5, 5, NA, 5, 5, 5, 5, 5, 5, 38 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 39 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 40 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 41 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 42 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 43 | 5, 5, 5, 5, 5, 5, 5, 5, 5), 44 | nrow = 9) 45 | ) 46 | 47 | test_that("check() works as intended", { 48 | # Check that the testlist scenarios all work 49 | for (t in testlist) { 50 | expect_true(check(t$res, t$init)) # Not really needed because samc() uses it, but included anyway 51 | expect_true(check(t$samc, t$init)) 52 | } 53 | 54 | # Check that fail cases are producing errors 55 | r <- testlist[[1]]$res 56 | s <- testlist[[1]]$samc 57 | for (cf in check_fail) { 58 | expect_error(check(r, cf)) # Not really needed because samc() uses it, but included anyway 59 | expect_error(check(s, cf)) 60 | } 61 | }) 62 | -------------------------------------------------------------------------------- /docs/sitemap.xml: -------------------------------------------------------------------------------- 1 | 2 | /404.html 3 | /LICENSE-text.html 4 | /LICENSE.html 5 | /articles/article-circuit-theory.html 6 | /articles/article-computation-methods.html 7 | /articles/article-models.html 8 | /articles/code-snippets.html 9 | /articles/data-disconnected.html 10 | /articles/example-coinflip.html 11 | /articles/example-maze-part1.html 12 | /articles/example-maze-part2.html 13 | /articles/example-maze-part3.html 14 | /articles/index.html 15 | /articles/overview.html 16 | /articles/parallel.html 17 | /articles/performance.html 18 | /articles/troubleshooting.html 19 | /articles/tutorial-animations.html 20 | /articles/tutorial-basic.html 21 | /articles/tutorial-ggplot.html 22 | /articles/tutorial-locations.html 23 | /articles/tutorial-multiple-absorption.html 24 | /articles/tutorial-temporal.html 25 | /authors.html 26 | /index.html 27 | /news/index.html 28 | /reference/absorption.html 29 | /reference/char_null-class.html 30 | /reference/check.html 31 | /reference/cond_passage.html 32 | /reference/dispersal.html 33 | /reference/distribution.html 34 | /reference/ex_abs_data.html 35 | /reference/ex_occ_data.html 36 | /reference/ex_res_data.html 37 | /reference/example_maze.html 38 | /reference/example_split_corridor.html 39 | /reference/example_toy_res.html 40 | /reference/index.html 41 | /reference/locate.html 42 | /reference/location-class.html 43 | /reference/map.html 44 | /reference/mat_null-class.html 45 | /reference/mortality.html 46 | /reference/pairwise.html 47 | /reference/rasterize.html 48 | /reference/samc-class-access.html 49 | /reference/samc-class-modify.html 50 | /reference/samc-class.html 51 | /reference/samc.html 52 | /reference/samc_data-class.html 53 | /reference/survival.html 54 | /reference/visitation.html 55 | /reference/visitation_net.html 56 | 57 | 58 | -------------------------------------------------------------------------------- /R/survival.R: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024 Andrew Marx. All rights reserved. 2 | # Licensed under AGPLv3.0. See LICENSE file in the project root for details. 3 | 4 | #' @include samc-class.R visitation.R 5 | NULL 6 | 7 | 8 | #' Calculate survival metrics 9 | #' 10 | #' Calculates the expected time to absorption 11 | #' 12 | #' \eqn{z=(I-Q)^{-1}{\cdot}1=F{\cdot}1} 13 | #' \itemize{ 14 | #' \item \strong{survival(samc)} 15 | #' 16 | #' The result is a vector \eqn{\mathbf{v}} where \eqn{\mathbf{v}_i} is the expected 17 | #' time to absorption if starting at transient state \eqn{\mathit{i}}. 18 | #' 19 | #' If the samc-class object was created using matrix or RasterLayer maps, then 20 | #' vector \eqn{\mathbf{v}} can be mapped to a RasterLayer using the 21 | #' \code{\link{map}} function. 22 | #' } 23 | #' 24 | #' \eqn{\psi^Tz} 25 | #' \itemize{ 26 | #' \item \strong{survival(samc, init)} 27 | #' 28 | #' The result is a numeric that is the expected time to absorption given an initial 29 | #' state \eqn{\psi}. 30 | #' } 31 | #' 32 | #' @template section-perf 33 | #' 34 | #' @template param-samc 35 | #' @template param-init 36 | #' @template param-origin 37 | #' 38 | #' @return See Details 39 | #' 40 | #' @example inst/examples/example.R 41 | #' 42 | #' @export 43 | 44 | setGeneric( 45 | "survival", 46 | function(samc, init, origin) { 47 | standardGeneric("survival") 48 | }) 49 | 50 | # survival(samc) ---- 51 | #' @rdname survival 52 | setMethod( 53 | "survival", 54 | signature(samc = "samc", init = "missing", origin = "missing"), 55 | function(samc) { 56 | .disable_conv(samc) 57 | 58 | # TODO If multiple dest becomes supported, this can be replaced with visitation(dest) 59 | if (samc@solver == "iter") { 60 | z = .f1_iter(samc@data@f) 61 | } else { 62 | z = .f1(samc@data@f, samc@.cache$sc) 63 | } 64 | 65 | if (samc@model$name == "CRW") { 66 | vec = as.vector(samc@prob_mat) 67 | vec = vec[!is.na(vec)] 68 | 69 | z = vec * z 70 | z = .summarize_crw(samc, z, sum) 71 | } 72 | 73 | return(z) 74 | }) 75 | 76 | # survival(samc, origin) ---- 77 | #' @rdname survival 78 | setMethod( 79 | "survival", 80 | signature(samc = "samc", init = "missing", origin = "location"), 81 | function(samc, origin) { 82 | if (is(origin, "matrix")) { 83 | if (nrow(origin) > 1) stop("Only a single origin is supported for CRW", call. = FALSE) 84 | } else { 85 | if (length(origin) != 1) 86 | stop("origin can only contain a single value for this version of the function", call. = FALSE) 87 | } 88 | 89 | origin = .process_locations(samc, origin) 90 | init = .map_location(samc, origin) 91 | 92 | return(survival(samc, init = init)) 93 | }) 94 | 95 | # survival(samc, init) ---- 96 | #' @rdname survival 97 | setMethod( 98 | "survival", 99 | signature(samc = "samc", init = "ANY", origin = "missing"), 100 | function(samc, init) { 101 | sum(visitation(samc, init)) 102 | }) 103 | --------------------------------------------------------------------------------