├── .gitattributes ├── data-raw ├── .gitignore ├── EW_Laender.csv ├── hospital_beds.csv ├── EW_Alter.csv ├── data_prep.R └── EW_Kreise.csv ├── LICENSE ├── .gitignore ├── data ├── ew_alter.rda ├── ew_kreise.rda ├── ew_laender.rda └── hospital_beds.rda ├── blog_post ├── covid19_model.init.R ├── .gitignore ├── rsconnect │ └── documents │ │ └── bayesian_analysis_Stephan.Rmd │ │ └── rpubs.com │ │ └── rpubs │ │ ├── Publish Document.dcf │ │ └── Document.dcf ├── covid19_model.data.R ├── covid19_model.stan ├── clemens_blog_post.R ├── bayesian_analysis_Stephan.Rmd └── sampling.csv ├── man ├── figures │ ├── README_plot.png │ └── README_plot_vac.png ├── ew_alter.Rd ├── hospital_beds.Rd ├── ew_laender.Rd ├── ew_kreise.Rd ├── group_RKI_timeseries.Rd ├── get_RKI_vaccination_timeseries.Rd ├── get_RKI_spatial.Rd ├── plot_RKI_timeseries.Rd ├── get_RKI_timeseries.Rd └── estimatepast_RKI_timeseries.Rd ├── tests ├── testthat.R └── testthat │ └── test-basic_pipeline.R ├── playground ├── plots │ └── log-lin-predictions.jpg ├── clemens_plots.R ├── model_timeseries.R ├── simple_plots.R └── example_code_snippets.Rmd ├── .Rbuildignore ├── R ├── zzz.R ├── utils.R ├── get_RKI_vaccination_timeseries.R ├── data.R ├── get_RKI_spatial.R ├── group_RKI_timeseries.R ├── estimatepast_RKI_timeseries.R ├── plot_RKI_timeseries.R └── get_RKI_timeseries.R ├── NAMESPACE ├── covid19germany.Rproj ├── LICENSE.md ├── NEWS.md ├── DESCRIPTION ├── README.md └── README.Rmd /.gitattributes: -------------------------------------------------------------------------------- 1 | *.html linguist-generated 2 | -------------------------------------------------------------------------------- /data-raw/.gitignore: -------------------------------------------------------------------------------- 1 | .~lock.EW_Alter.csv# 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | YEAR: 2020 2 | COPYRIGHT HOLDER: Clemens Schmid 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .Rproj.user 2 | .Rhistory 3 | .RData 4 | .Ruserdata 5 | 6 | cache -------------------------------------------------------------------------------- /data/ew_alter.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nevrome/covid19germany/HEAD/data/ew_alter.rda -------------------------------------------------------------------------------- /data/ew_kreise.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nevrome/covid19germany/HEAD/data/ew_kreise.rda -------------------------------------------------------------------------------- /data/ew_laender.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nevrome/covid19germany/HEAD/data/ew_laender.rda -------------------------------------------------------------------------------- /data/hospital_beds.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nevrome/covid19germany/HEAD/data/hospital_beds.rda -------------------------------------------------------------------------------- /blog_post/covid19_model.init.R: -------------------------------------------------------------------------------- 1 | alpha0 <- 2 | 0.1 3 | beta <- 4 | 0.1 5 | I0 <- 6 | 10 7 | gamma <- 8 | 0.5 9 | -------------------------------------------------------------------------------- /man/figures/README_plot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nevrome/covid19germany/HEAD/man/figures/README_plot.png -------------------------------------------------------------------------------- /man/figures/README_plot_vac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nevrome/covid19germany/HEAD/man/figures/README_plot_vac.png -------------------------------------------------------------------------------- /tests/testthat.R: -------------------------------------------------------------------------------- 1 | library(testthat) 2 | library(covid19germany) 3 | library(magrittr) 4 | 5 | test_check("covid19germany") 6 | -------------------------------------------------------------------------------- /playground/plots/log-lin-predictions.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nevrome/covid19germany/HEAD/playground/plots/log-lin-predictions.jpg -------------------------------------------------------------------------------- /blog_post/.gitignore: -------------------------------------------------------------------------------- 1 | covid19_model 2 | covid19_model.d 3 | covid19_model.hpp 4 | covid19_model.o 5 | bayesian_analysis_Stephan.nb.html 6 | covid19_model.data.R 7 | doubling_time.png 8 | model_predictions.png 9 | -------------------------------------------------------------------------------- /.Rbuildignore: -------------------------------------------------------------------------------- 1 | ^.*\.Rproj$ 2 | ^\.Rproj\.user$ 3 | ^LICENSE\.md$ 4 | ^playground$ 5 | ^data-raw$ 6 | ^shinyapp$ 7 | ^\.travis\.yml$ 8 | ^blog_post$ 9 | ^\.gitattributes$ 10 | ^README\.Rmd$ 11 | ^cache$ 12 | ^NEWS\.md$ 13 | ^\.github$ 14 | -------------------------------------------------------------------------------- /R/zzz.R: -------------------------------------------------------------------------------- 1 | # defining global variables 2 | # ugly solution to avoid magrittr NOTE 3 | # see http://stackoverflow.com/questions/9439256/how-can-i-handle-r-cmd-check-no-visible-binding-for-global-variable-notes-when 4 | globalVariables(".") 5 | globalVariables("where") 6 | 7 | #'@importFrom magrittr "%>%" 8 | #'@importFrom rlang .data 9 | #' 10 | NULL -------------------------------------------------------------------------------- /NAMESPACE: -------------------------------------------------------------------------------- 1 | # Generated by roxygen2: do not edit by hand 2 | 3 | export(estimatepast_RKI_timeseries) 4 | export(get_RKI_spatial) 5 | export(get_RKI_timeseries) 6 | export(get_RKI_vaccination_timeseries) 7 | export(group_RKI_timeseries) 8 | export(plot_RKI_timeseries) 9 | import(data.table) 10 | importFrom(magrittr,"%>%") 11 | importFrom(rlang,.data) 12 | -------------------------------------------------------------------------------- /blog_post/rsconnect/documents/bayesian_analysis_Stephan.Rmd/rpubs.com/rpubs/Publish Document.dcf: -------------------------------------------------------------------------------- 1 | name: Publish Document 2 | title: 3 | username: 4 | account: rpubs 5 | server: rpubs.com 6 | hostUrl: rpubs.com 7 | appId: https://api.rpubs.com/api/v1/document/592641/6835d3baf8cc4ee3ad888394bdaa8730 8 | bundleId: https://api.rpubs.com/api/v1/document/592641/6835d3baf8cc4ee3ad888394bdaa8730 9 | url: http://rpubs.com/stschiff/592641 10 | when: 1585827315.191 11 | -------------------------------------------------------------------------------- /covid19germany.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 | BuildType: Package 16 | PackageUseDevtools: Yes 17 | PackageCleanBeforeInstall: Yes 18 | PackageInstallArgs: --no-multiarch --with-keep.source 19 | PackageRoxygenize: rd,collate,namespace 20 | -------------------------------------------------------------------------------- /blog_post/rsconnect/documents/bayesian_analysis_Stephan.Rmd/rpubs.com/rpubs/Document.dcf: -------------------------------------------------------------------------------- 1 | name: Document 2 | title: 3 | username: 4 | account: rpubs 5 | server: rpubs.com 6 | hostUrl: rpubs.com 7 | appId: https://api.rpubs.com/api/v1/document/592641/6835d3baf8cc4ee3ad888394bdaa8730 8 | bundleId: https://api.rpubs.com/api/v1/document/592641/6835d3baf8cc4ee3ad888394bdaa8730 9 | url: http://rpubs.com/publish/claim/592641/48a9a9b044764724ad5e057461eca45a 10 | when: 1585675936.36325 11 | -------------------------------------------------------------------------------- /blog_post/covid19_model.data.R: -------------------------------------------------------------------------------- 1 | day <- 2 | c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3 | 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 4 | 34, 35, 36) 5 | cases <- 6 | c(13, 3, 2, 9, 23, 42, 20, 34, 42, 73, 147, 181, 176, 135, 91, 7 | 340, 579, 730, 967, 1399, 1287, 930, 2002, 3006, 3486, 3953, 8 | 3996, 3240, 2274, 3621, 4751, 5548, 5763, 5967, 4687, 3037, 3860 9 | ) 10 | deaths <- 11 | c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 3, 0, 4, 3, 5, 9, 12, 12 | 12, 8, 19, 25, 37, 31, 70, 43, 42, 59, 58, 65, 83, 80, 63, 29, 13 | 46) 14 | N <- 15 | 37L 16 | tau_t <- 17 | 7 18 | tau_delta <- 19 | 17 20 | delta <- 21 | 0.01 22 | -------------------------------------------------------------------------------- /R/utils.R: -------------------------------------------------------------------------------- 1 | #' check_if_packages_are_available 2 | #' 3 | #' @param packages_ch packages that should be available 4 | #' 5 | #' @return NULL - called for side effect stop() 6 | #' 7 | #' @keywords internal 8 | #' @noRd 9 | check_if_packages_are_available <- function(packages_ch) { 10 | if ( 11 | packages_ch %>% 12 | sapply(function(x) {requireNamespace(x, quietly = TRUE)}) %>% 13 | all %>% `!` 14 | ) { 15 | stop( 16 | paste0( 17 | "R packages ", 18 | paste(packages_ch, collapse = ", "), 19 | " needed for this function to work. Please install with ", 20 | "install.packages(c('", paste(packages_ch, collapse = "', '"), "'))" 21 | ), 22 | call. = FALSE 23 | ) 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /man/ew_alter.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/data.R 3 | \name{ew_alter} 4 | \alias{ew_alter} 5 | \title{ew_alter} 6 | \format{ 7 | A data frame with 6 rows and 4 variables. 8 | \itemize{ 9 | \item \bold{Age} 10 | \item \bold{PopulationTotal} 11 | \item \bold{PopulationMale} 12 | \item \bold{PopulationFemale} 13 | } 14 | } 15 | \description{ 16 | Source: \url{https://www-genesis.destatis.de/genesis/online}, 17 | Licence: Deutschland 2.0, 18 | Please see the README for more information: \url{https://github.com/nevrome/covid19germany} 19 | } 20 | \seealso{ 21 | Other context_data: 22 | \code{\link{ew_kreise}}, 23 | \code{\link{ew_laender}}, 24 | \code{\link{hospital_beds}} 25 | } 26 | \concept{context_data} 27 | -------------------------------------------------------------------------------- /blog_post/covid19_model.stan: -------------------------------------------------------------------------------- 1 | functions { 2 | real growth_model(real I0, real alpha0, real beta, real t) { 3 | return I0 * exp((alpha0 - beta * t) * t); 4 | } 5 | } 6 | data { 7 | int N; 8 | real cases[N]; 9 | real deaths[N]; 10 | int day[N]; 11 | real tau_t; 12 | real tau_delta; 13 | real delta; 14 | } 15 | parameters { 16 | real gamma; 17 | real alpha0; 18 | real beta; 19 | real I0; 20 | } 21 | model { 22 | for(i in 1:N) { 23 | real nc = growth_model(I0, alpha0, beta, day[i] - tau_t); 24 | cases[i] ~ normal(nc * gamma, nc * gamma * (1 - gamma)); 25 | real nd = growth_model(I0, alpha0, beta, day[i] - tau_delta); 26 | deaths[i] ~ normal(nd * delta, nd * delta * (1 - delta)); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /man/hospital_beds.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/data.R 3 | \name{hospital_beds} 4 | \alias{hospital_beds} 5 | \title{hospital_beds} 6 | \format{ 7 | A data frame with 16 rows and 7 variables. 8 | \itemize{ 9 | \item \bold{Bundesland} 10 | \item \bold{NumberHospital} 11 | \item \bold{NumberHospitalwithICU} 12 | \item \bold{NumberICUBed} 13 | \item \bold{NumberDaysICUBedinUse} 14 | \item \bold{NumberICUCase} 15 | \item \bold{NumberICUCasewithRespirator} 16 | } 17 | } 18 | \description{ 19 | Source: \url{http://www.gbe-bund.de/gbe10/f?f=328::Intensivstation}, 20 | Please see the README for more information: \url{https://github.com/nevrome/covid19germany} 21 | } 22 | \seealso{ 23 | Other context_data: 24 | \code{\link{ew_alter}}, 25 | \code{\link{ew_kreise}}, 26 | \code{\link{ew_laender}} 27 | } 28 | \concept{context_data} 29 | -------------------------------------------------------------------------------- /tests/testthat/test-basic_pipeline.R: -------------------------------------------------------------------------------- 1 | context("test of all functions with an arbitrary setting") 2 | 3 | rki_spatial <- get_RKI_spatial("Bundesland") 4 | rki_timeseries <- get_RKI_timeseries() 5 | vac_ts <- covid19germany::get_RKI_vaccination_timeseries() 6 | 7 | test_that("everything works at least generally", { 8 | expect_s3_class(rki_spatial, "sf") 9 | expect_s3_class(rki_timeseries, "data.frame") 10 | expect_s3_class(vac_ts, "data.frame") 11 | expect_s3_class( 12 | rki_timeseries %>% group_RKI_timeseries(), 13 | "data.frame" 14 | ) 15 | expect_silent( 16 | rki_timeseries %>% plot_RKI_timeseries() 17 | ) 18 | expect_s3_class( 19 | rki_timeseries %>% 20 | estimatepast_RKI_timeseries( 21 | ., 22 | prop_death = 0.01, 23 | mean_days_until_death = 17, 24 | doubling_time = 10 25 | ), 26 | "data.frame" 27 | ) 28 | }) 29 | 30 | -------------------------------------------------------------------------------- /man/ew_laender.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/data.R 3 | \name{ew_laender} 4 | \alias{ew_laender} 5 | \title{ew_laender} 6 | \format{ 7 | A data frame with 16 rows and 6 variables. 8 | \itemize{ 9 | \item \bold{Bundesland} 10 | \item \bold{AreaKm2} 11 | \item \bold{PopulationTotal} 12 | \item \bold{PopulationMale} 13 | \item \bold{PopulationFemale} 14 | \item \bold{PopulationperKm2} 15 | } 16 | } 17 | \description{ 18 | Source: \url{https://www.destatis.de/DE/Themen/Laender-Regionen/Regionales/Gemeindeverzeichnis/Administrativ/04-kreise.html}, 19 | Licence: Deutschland 2.0, 20 | Please see the README for more information: \url{https://github.com/nevrome/covid19germany} 21 | } 22 | \seealso{ 23 | Other context_data: 24 | \code{\link{ew_alter}}, 25 | \code{\link{ew_kreise}}, 26 | \code{\link{hospital_beds}} 27 | } 28 | \concept{context_data} 29 | -------------------------------------------------------------------------------- /data-raw/EW_Laender.csv: -------------------------------------------------------------------------------- 1 | Bundesland;FlaecheKm2;EwGesamt;EwMaennlich;EwWeiblich;EwProKm2 2 | Schleswig-Holstein;15804.3;2896712;1419457;1477255;183 3 | Hamburg;755.09;1841179;902048;939131;2438 4 | Niedersachsen;47709.51;7982448;3943243;4039205;167 5 | Bremen;419.36;682986;338035;344951;1629 6 | Nordrhein-Westfalen;34112.31;17932651;8798631;9134020;526 7 | Hessen;21115.67;6265809;3093044;3172765;297 8 | Rheinland-Pfalz;19851.82;4084844;2017576;2067268;206 9 | Baden-Württemberg;35748.2;11069533;5501693;5567840;310 10 | Bayern;70541.61;13076721;6483793;6592928;185 11 | Saarland;2571.11;990509;486159;504350;385 12 | Berlin;891.12;3644826;1792801;1852025;4090 13 | Brandenburg;29654.48;2511917;1239460;1272457;85 14 | Mecklenburg-Vorpommern;23293.61;1609675;793639;816036;69 15 | Sachsen;18449.95;4077937;2009619;2068318;221 16 | Sachsen-Anhalt;20454.31;2208321;1086679;1121642;108 17 | Thüringen;16202.39;2143145;1060814;1082331;132 18 | -------------------------------------------------------------------------------- /man/ew_kreise.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/data.R 3 | \name{ew_kreise} 4 | \alias{ew_kreise} 5 | \title{ew_kreise} 6 | \format{ 7 | A data frame with 401 rows and 8 variables. 8 | \itemize{ 9 | \item \bold{IdLandkreis} 10 | \item \bold{Landkreis} 11 | \item \bold{NUTS3} 12 | \item \bold{AreaKm2} 13 | \item \bold{PopulationTotal} 14 | \item \bold{PopulationMale} 15 | \item \bold{PopulationFemale} 16 | \item \bold{PopulationperKm2} 17 | } 18 | } 19 | \description{ 20 | Source: \url{https://www.statistikportal.de/de/bevoelkerung/flaeche-und-bevoelkerung}, 21 | Licence: Deutschland 2.0, 22 | Please see the README for more information: \url{https://github.com/nevrome/covid19germany} 23 | } 24 | \seealso{ 25 | Other context_data: 26 | \code{\link{ew_alter}}, 27 | \code{\link{ew_laender}}, 28 | \code{\link{hospital_beds}} 29 | } 30 | \concept{context_data} 31 | -------------------------------------------------------------------------------- /data-raw/hospital_beds.csv: -------------------------------------------------------------------------------- 1 | Bundesland,AnzahlKrankenhaeuser,AnzahlKrankenhaeusermitIntensiv,AnzahlBettenIntensiv,AnzahlBelegungstageIntensiv,AnzahlBehandlungsfaelleIntensiv,AnzahlBehandlungsfaelleIntensivmitBeatmung 2 | Baden-Württemberg,265,123,3262,900678,259066,47528 3 | Bayern,354,178,3790,1085912,300728,62044 4 | Berlin,83,35,1450,439183,94480,22887 5 | Brandenburg,57,46,745,227884,60472,10367 6 | Bremen,14,10,294,70939,21458,5319 7 | Hamburg,58,25,802,226420,49627,12366 8 | Hessen,159,91,1845,529893,144537,30393 9 | Mecklenburg-Vorpommern,39,30,1014,286333,68050,10804 10 | Niedersachsen,180,116,2362,667296,190313,40417 11 | Nordrhein-Westfalen,344,263,6148,1891532,537148,97448 12 | Rheinland-Pfalz,87,58,1343,334611,94716,18619 13 | Saarland,23,18,548,158573,42879,8658 14 | Sachsen,77,69,1859,539645,89816,21518 15 | Sachsen-Anhalt,48,34,972,278526,67842,11232 16 | Schleswig-Holstein,111,34,867,234244,60448,14936 17 | Thüringen,43,30,730,209791,49636,15916 -------------------------------------------------------------------------------- /playground/clemens_plots.R: -------------------------------------------------------------------------------- 1 | library(magrittr) 2 | 3 | rki <- covid19germany::get_RKI_timeseries() 4 | 5 | rki_timeseries_landkreis <- group_RKI_timeseries(rki, "Landkreis") 6 | 7 | plot_RKI_timeseries(rki, "Geschlecht", "KumAnzahlTodesfall", logy = T) 8 | 9 | #### 10 | 11 | library(covid19germany) 12 | 13 | rki <- get_RKI_timeseries() 14 | rki_timeseries_bundesland <- group_RKI_timeseries(rki, "Bundesland") 15 | 16 | rki_timeseries_bundesland_split <- split(rki_timeseries_bundesland, rki_timeseries_bundesland$Bundesland) 17 | 18 | r0_bavaria <- rki_timeseries_bundesland_split$Bayern %$% 19 | KumAnzahlFall %>% 20 | EpiEstim::estimate_R(method = "uncertain_si", config = config) %$% 21 | R 22 | 23 | r0_bavaria %>% 24 | ggplot() + 25 | geom_line( 26 | aes(t_start, `Mean(R)`) 27 | ) + 28 | geom_ribbon( 29 | aes( 30 | x = t_start, 31 | ymin = `Mean(R)` - `Std(R)`, 32 | ymax = `Mean(R)` + `Std(R)` 33 | ), 34 | alpha = 0.5 35 | ) 36 | 37 | 38 | -------------------------------------------------------------------------------- /man/group_RKI_timeseries.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/group_RKI_timeseries.R 3 | \name{group_RKI_timeseries} 4 | \alias{group_RKI_timeseries} 5 | \title{group_RKI_timeseries} 6 | \usage{ 7 | group_RKI_timeseries(x, ...) 8 | } 9 | \arguments{ 10 | \item{x}{data.frame. RKI data as downloaded with \code{\link{get_RKI_timeseries}}} 11 | 12 | \item{...}{variable names. One or multiple grouping columns of x, so Bundesland, Landkreis, Gender or Age} 13 | } 14 | \description{ 15 | Restructures the RKI data to a grouped time series data.frame. Days with no observations are added to make them 16 | explicit. Grouping can be done with one or multiple variables (see parameter \code{...}). 17 | Please see the README for more information: \url{https://github.com/nevrome/covid19germany} 18 | } 19 | \examples{ 20 | \donttest{ 21 | rki_timeseries <- get_RKI_timeseries() 22 | 23 | group_RKI_timeseries(rki_timeseries, Bundesland, Gender) 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /man/get_RKI_vaccination_timeseries.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/get_RKI_vaccination_timeseries.R 3 | \name{get_RKI_vaccination_timeseries} 4 | \alias{get_RKI_vaccination_timeseries} 5 | \title{get_RKI_vaccination_timeseries} 6 | \usage{ 7 | get_RKI_vaccination_timeseries( 8 | url = paste0("https://www.rki.de/", 9 | "DE/Content/InfAZ/N/Neuartiges_Coronavirus/Daten/Impfquotenmonitoring.xlsx", 10 | "?__blob=publicationFile"), 11 | raw_only = FALSE 12 | ) 13 | } 14 | \arguments{ 15 | \item{url}{character. Data source url} 16 | 17 | \item{raw_only}{logical. Should covid19germany data cleaning not be applied} 18 | } 19 | \value{ 20 | A tibble with the dataset 21 | } 22 | \description{ 23 | Downloads the latest version of a COVID-19 vaccination time series dataset by the 24 | Robert Koch Institute. 25 | Please see the README for more information: \url{https://github.com/nevrome/covid19germany} 26 | } 27 | \examples{ 28 | \donttest{ 29 | rki_vaccination_progress <- get_RKI_vaccination_timeseries() 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # MIT License 2 | 3 | Copyright (c) 2020 Clemens Schmid 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /man/get_RKI_spatial.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/get_RKI_spatial.R 3 | \name{get_RKI_spatial} 4 | \alias{get_RKI_spatial} 5 | \title{get_RKI_spatial} 6 | \usage{ 7 | get_RKI_spatial( 8 | resolution = "Bundesland", 9 | urls = c(Bundesland = 10 | "https://opendata.arcgis.com/datasets/ef4b445a53c1406892257fe63129a8ea_0.zip", 11 | Landkreis = 12 | "https://opendata.arcgis.com/datasets/917fc37a709542548cc3be077a786c17_0.zip"), 13 | cache = T, 14 | cache_dir = tempdir(), 15 | cache_max_age = "today" 16 | ) 17 | } 18 | \arguments{ 19 | \item{resolution}{character. Resolution of the spatial data: "Bundesland" or "Landkreis"} 20 | 21 | \item{urls}{named character vector. Data source urls} 22 | 23 | \item{cache}{logical. Should the data be cached?} 24 | 25 | \item{cache_dir}{character. Path to cache directory} 26 | 27 | \item{cache_max_age}{numeric. Maximum age of cache in seconds} 28 | } 29 | \value{ 30 | An object of class sf with the dataset 31 | } 32 | \description{ 33 | Downloads the latest version of a COVID-19 spatial dataset by the Robert Koch Institute. 34 | Please see the README for more information: \url{https://github.com/nevrome/covid19germany} 35 | } 36 | \examples{ 37 | \donttest{ 38 | rki_spatial_Bundesland <- get_RKI_spatial() 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /playground/model_timeseries.R: -------------------------------------------------------------------------------- 1 | ## globals: 2 | MIN.CASES=5 3 | N.DAYS.FUTURE=7 4 | 5 | ## read data: 6 | df = get_RKI_timeseries() 7 | 8 | ## aggregate case-counts by regions: 9 | ag=aggregate(df$AnzahlFall,by=list(Bundesland=df$Bundesland,Meldedatum=df$Meldedatum),sum) 10 | 11 | ## split data by regions: 12 | ag.split=split(ag,ag$Bundesland) 13 | 14 | jpeg("plots/log-lin-predictions.jpg",width=1440,height=1440) 15 | ## plot 16 | par(mfrow=c(4,4)) 17 | par(cex=1.2) 18 | for (this.ag in ag.split){ 19 | keep=(this.ag$x>=MIN.CASES) 20 | this.ag=this.ag[keep,] 21 | this.region=unique(this.ag$Bundesland) 22 | 23 | ## create model 24 | this.ag = this.ag[order(this.ag$Meldedatum),] 25 | this.ag[,"x.log"]=log(this.ag[,"x"]) 26 | mdl=lm("x.log ~ Meldedatum",data=this.ag) 27 | 28 | ## append N.DAYS.FUTURE to data 29 | n=(nrow(this.ag)+1) 30 | last.date=as.Date(max(this.ag$Meldedatum)) 31 | this.ag[n:(n+N.DAYS.FUTURE-1),]=NA 32 | this.ag[n:(n+N.DAYS.FUTURE-1),"Meldedatum"]=seq(last.date+1,by=1,length.out=N.DAYS.FUTURE) 33 | 34 | ## predict on all dates (including future dates) 35 | this.ag[,"x.pred"]=exp(predict(mdl,newdata=this.ag)) 36 | 37 | ## plot data and prediction 38 | ymax=max(this.ag[,c("x.pred","x")],na.rm=TRUE) 39 | plot(this.ag[,"Meldedatum"],this.ag[,"x"],type="b",col="black",pch=20,main=this.region,xlab="date",ylab="cases",ylim=c(0,ymax)) 40 | points(this.ag[,"Meldedatum"],this.ag[,"x.pred"],type="b",col="red") 41 | } 42 | dev.off() 43 | -------------------------------------------------------------------------------- /man/plot_RKI_timeseries.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/plot_RKI_timeseries.R 3 | \name{plot_RKI_timeseries} 4 | \alias{plot_RKI_timeseries} 5 | \title{plot_RKI_timeseries} 6 | \usage{ 7 | plot_RKI_timeseries( 8 | x, 9 | group = "Bundesland", 10 | type = "CumNumberTestedIll", 11 | label = T, 12 | logy = F, 13 | by_month = T, 14 | by_week = F 15 | ) 16 | } 17 | \arguments{ 18 | \item{x}{data.frame. RKI data as downloaded with \code{\link{get_RKI_timeseries}}} 19 | 20 | \item{group}{character. Grouping of the underlying timeseries. One of: "Bundesland", "Landkreis", "Gender", "Age". See \code{\link{group_RKI_timeseries}} for more information} 21 | 22 | \item{type}{character. Type of count information. 23 | One of: "NumberNewTestedIll", "NumberNewDead", "NumberNewRecovered", "CumNumberTestedIll", "CumNumberDead", "CumNumberRecovered"} 24 | 25 | \item{label}{logical. Should labels be added?} 26 | 27 | \item{logy}{logical. Should the y-axis be log10-scaled?} 28 | 29 | \item{by_month}{logical. Should the output plot be grouped by month or by days?} 30 | 31 | \item{by_week}{logical. Deprecated and replaced by by_month} 32 | } 33 | \description{ 34 | Simple plotting function for the RKI data. 35 | Please see the README for more information: \url{https://github.com/nevrome/covid19germany} 36 | } 37 | \examples{ 38 | \donttest{ 39 | rki_timeseries <- get_RKI_timeseries() 40 | 41 | plot_RKI_timeseries(rki_timeseries, "Gender", "CumNumberTestedIll") 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /man/get_RKI_timeseries.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/get_RKI_timeseries.R 3 | \name{get_RKI_timeseries} 4 | \alias{get_RKI_timeseries} 5 | \title{get_RKI_timeseries} 6 | \usage{ 7 | get_RKI_timeseries( 8 | url = paste0("https://www.arcgis.com", 9 | "/sharing/rest/content/items/f10774f1c63e40168479a1feb6c7ca74/data"), 10 | cache = T, 11 | cache_dir = tempdir(), 12 | cache_max_age = "today", 13 | raw_only = F, 14 | timeout_for_download = 1000 15 | ) 16 | } 17 | \arguments{ 18 | \item{url}{character. Data source url} 19 | 20 | \item{cache}{logical. Should the data be cached?} 21 | 22 | \item{cache_dir}{character. Path to cache directory} 23 | 24 | \item{cache_max_age}{numeric. Maximum age of cache in seconds or "today"} 25 | 26 | \item{raw_only}{logical. Do not apply covid19germany filters to RKI data (raw_only = T) or do filter them (default, raw_only = F)} 27 | 28 | \item{timeout_for_download}{integer. The download of the raw data can take a long time 29 | with slow internet connections. It may fail then when the timeout limit for 30 | \link[utils]{download.file} is reached. This option allows to increase it.} 31 | } 32 | \value{ 33 | A tibble with the dataset 34 | } 35 | \description{ 36 | Downloads the latest version of a COVID-19 timeseries dataset by the Robert Koch Institute. 37 | Please see the README for more information: \url{https://github.com/nevrome/covid19germany} 38 | } 39 | \examples{ 40 | \donttest{ 41 | rki_timeseries <- get_RKI_timeseries() 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /NEWS.md: -------------------------------------------------------------------------------- 1 | # 0.3.4 2 | 3 | - fixed file name issue with the shape files for `get_RKI_spatial()` 4 | 5 | # 0.3.3 6 | 7 | - fixed another breaking column name change in the vaccination table 8 | 9 | # 0.3.2 10 | 11 | - fixed an indexing issue in the reading procedure for the vaccination table 12 | - fixed a breaking file name issue in the spatial data download for the Bundesland-level 13 | 14 | # 0.3.1 15 | 16 | - replaced dplyr with dtplyr in the processing of the cases timeseries, which gives a massive speed boost 17 | 18 | # 0.3.0 19 | 20 | - updated `get_RKI_vaccination_timeseries()` to include booster vaccination numbers and changed the output column names to better represent the current situation 21 | - adjusted the README figures to the new vaccination data 22 | - more simplification of the already extremely basic unit tests 23 | 24 | # 0.2.5 25 | 26 | - the spatial datasets were renamed 27 | 28 | # 0.2.4 29 | 30 | - tiny fix in the plot function to avoid a ggplot2 warning 31 | 32 | # 0.2.3 33 | 34 | - vaccination dataset was changed again 35 | 36 | # 0.2.2 37 | 38 | - vaccination dataset was slightly changed yet again and the parser code required a column name change 39 | 40 | # 0.2.1 41 | 42 | - deleted shinyapp code - never got any updates and there are many good dashboards available 43 | 44 | # 0.2.0 45 | 46 | - simplified README to make maintenance more easy 47 | - fixed `get_RKI_vaccination_timeseries()` after another change of the source dataset structure - this also forced a rename of the output columns 48 | - three new columns for the `get_RKI_timeseries()` output after intense discussion in #47 49 | -------------------------------------------------------------------------------- /DESCRIPTION: -------------------------------------------------------------------------------- 1 | Package: covid19germany 2 | Title: Load, Visualise and Analyse Daily Updated Data on the COVID-19 Outbreak in Germany 3 | Version: 0.3.4 4 | Authors@R: 5 | c(person(given = "Clemens", 6 | family = "Schmid", 7 | role = c("aut", "cre"), 8 | email = "clemens@nevrome.de", 9 | comment = c(ORCID = "0000-0003-3448-5715")), 10 | person(given = "Stephan", 11 | family = "Schiffels", 12 | role = "aut", 13 | email = "stephan_schiffels@mac.com", 14 | comment = c(ORCID = "0000-0002-1017-9150")), 15 | person(given = "Johannes", 16 | family = "Boog", 17 | role = "aut", 18 | email = "johannesboog@yahoo.de", 19 | comment = c(ORCID = "0000-0003-1094-9255")), 20 | person(given = "Martin", 21 | family = "Lange", 22 | role = "aut", 23 | email = "martin_lange_@gmx.net"), 24 | person(given = "Moritz", 25 | family = "Aschoff", 26 | role = "aut", 27 | email = "not available")) 28 | Description: A basic interface to access and prepare data from the Robert Koch Institute and other relevant sources. 29 | License: MIT + file LICENSE 30 | Encoding: UTF-8 31 | LazyData: true 32 | Depends: 33 | R (>= 2.10) 34 | Imports: 35 | data.table, 36 | dplyr, 37 | dtplyr, 38 | lubridate, 39 | magrittr, 40 | readr, 41 | rlang, 42 | scales, 43 | tibble, 44 | tidyr, 45 | tidyselect, 46 | utils, 47 | readxl 48 | Suggests: 49 | ggplot2, 50 | sf, 51 | testthat (>= 2.1.0) 52 | RoxygenNote: 7.2.1 53 | -------------------------------------------------------------------------------- /R/get_RKI_vaccination_timeseries.R: -------------------------------------------------------------------------------- 1 | #' get_RKI_vaccination_timeseries 2 | #' 3 | #' Downloads the latest version of a COVID-19 vaccination time series dataset by the 4 | #' Robert Koch Institute. 5 | #' Please see the README for more information: \url{https://github.com/nevrome/covid19germany} 6 | #' 7 | #' @param url character. Data source url 8 | #' @param raw_only logical. Should covid19germany data cleaning not be applied 9 | #' 10 | #' @return A tibble with the dataset 11 | #' 12 | #' @examples 13 | #' \donttest{ 14 | #' rki_vaccination_progress <- get_RKI_vaccination_timeseries() 15 | #' } 16 | #' 17 | #' @export 18 | get_RKI_vaccination_timeseries <- function( 19 | url = paste0( 20 | "https://www.rki.de/", 21 | "DE/Content/InfAZ/N/Neuartiges_Coronavirus/Daten/Impfquotenmonitoring.xlsx", 22 | "?__blob=publicationFile" 23 | ), 24 | raw_only = FALSE 25 | ) { 26 | 27 | message("Downloading file...") 28 | excel_table <- tempfile() 29 | utils::download.file(url, excel_table) 30 | 31 | message("Loading file into R...") 32 | 33 | vaccination_ts <- readxl::read_xlsx( 34 | excel_table, sheet = 4, n_max = as.numeric( 35 | lubridate::today() - lubridate::date("2020-12-27") 36 | ) 37 | ) %>% 38 | dplyr::mutate( 39 | Datum = lubridate::as_date(.data[["Datum"]], format = "%d.%m.%Y") 40 | ) 41 | 42 | file.remove(excel_table) 43 | 44 | if (raw_only) { 45 | return(vaccination_ts) 46 | } 47 | 48 | message("Processing...") 49 | res <- vaccination_ts %>% 50 | dplyr::rename( 51 | Date = "Datum", 52 | NumberFirstInjections = "Erstimpfung", 53 | NumberSecondInjections = "Zweitimpfung", 54 | NumberFirstBoosterInjections = "Erste Auffrischimpfung", 55 | NumberSecondBoosterInjections = "Zweite Auffrischimpfung", 56 | NumberVaccinations = "Gesamtzahl verabreichter Impfstoffdosen" 57 | ) %>% 58 | dplyr::mutate( 59 | dplyr::across(where(is.numeric), as.integer) 60 | ) 61 | 62 | return(res) 63 | } 64 | -------------------------------------------------------------------------------- /playground/simple_plots.R: -------------------------------------------------------------------------------- 1 | library(ggplot2) 2 | library(magrittr) 3 | 4 | data("ew_laender") 5 | 6 | dat <- get_RKI_timeseries(cache=F) 7 | 8 | group_RKI_timeseries(dat, Bundesland) %>% 9 | dplyr::filter(Meldedatum > "2020-02-25") %>% 10 | tidyr::drop_na(Bundesland) %>% 11 | ggplot() + 12 | geom_bar(mapping = aes(x = Meldedatum, 13 | y = AnzahlFall, 14 | fill = Bundesland), 15 | stat = 'identity') + 16 | theme_minimal() + 17 | ggtitle("Gemeldete Infektionen (täglich)") + 18 | theme(axis.title.x=element_blank(), 19 | axis.title.y=element_blank()) 20 | ggsave("man/figures/daily_numbers.jpg") 21 | 22 | group_RKI_timeseries(dat, Bundesland) %>% 23 | dplyr::filter(Meldedatum > "2020-02-25") %>% 24 | tidyr::drop_na(Bundesland) %>% 25 | dplyr::group_by(Bundesland) %>% 26 | dplyr::mutate(kum_fall = cumsum(AnzahlFall)) %>% 27 | dplyr::ungroup() %>% 28 | ggplot() + 29 | geom_area(mapping = aes(x = Meldedatum, 30 | y = kum_fall, 31 | fill = Bundesland), 32 | stat = 'identity', 33 | na.rm = T) + 34 | theme_minimal() + 35 | ggtitle("Gemeldete Infektionen (kumulativ)") + 36 | theme(axis.title.x=element_blank(), 37 | axis.title.y=element_blank()) 38 | ggsave("man/figures/cumul_numbers.jpg") 39 | 40 | group_RKI_timeseries(dat, Bundesland) %>% 41 | dplyr::left_join(ew_laender, by="Bundesland") %>% 42 | dplyr::filter(Meldedatum > "2020-02-25") %>% 43 | tidyr::drop_na(Bundesland) %>% 44 | dplyr::group_by(Bundesland) %>% 45 | dplyr::mutate(kum_fall_per100k_ew = 100000 * cumsum(AnzahlFall) / EwGesamt) %>% 46 | dplyr::ungroup() %>% 47 | ggplot() + 48 | geom_line(mapping = aes(x = Meldedatum, 49 | y = kum_fall_per100k_ew, 50 | col = Bundesland)) + 51 | theme_minimal() + 52 | ggtitle("Gemeldete Infektionen pro 100K Einwohner (kumulativ)") + 53 | theme(axis.title.x=element_blank(), 54 | axis.title.y=element_blank()) 55 | ggsave("man/figures/cumul_numbers_per_100k.jpg") 56 | -------------------------------------------------------------------------------- /data-raw/EW_Alter.csv: -------------------------------------------------------------------------------- 1 | alter,m,w,total 2 | 0,402082,381896,783978 3 | 1,408361,388013,796374 4 | 2,410978,391673,802651 5 | 3,398943,377820,776763 6 | 4,393733,372898,766631 7 | 5,380099,359630,739729 8 | 6,378881,357868,736749 9 | 7,370192,350421,720613 10 | 8,379116,359122,738238 11 | 9,373887,353022,726909 12 | 10,383341,363004,746345 13 | 11,381581,359949,741530 14 | 12,374579,352344,726923 15 | 13,378368,357392,735760 16 | 14,386561,365061,751622 17 | 15,387438,364913,752351 18 | 16,395934,370583,766517 19 | 17,408869,378876,787745 20 | 18,435928,399834,835762 21 | 19,454530,406572,861102 22 | 20,467967,423692,891659 23 | 21,491057,443461,934518 24 | 22,487046,442477,929523 25 | 23,480366,436558,916924 26 | 24,488576,446072,934648 27 | 25,503960,463132,967092 28 | 26,511892,473472,985364 29 | 27,530016,491903,1021919 30 | 28,579978,536481,1116459 31 | 29,570090,532411,1102501 32 | 30,584198,543391,1127589 33 | 31,570259,533376,1103635 34 | 32,556951,526706,1083657 35 | 33,538944,511849,1050793 36 | 34,533729,509626,1043355 37 | 35,532794,512390,1045184 38 | 36,542053,523622,1065675 39 | 37,534163,522353,1056516 40 | 38,535440,525329,1060769 41 | 39,508867,500405,1009272 42 | 40,501847,493223,995070 43 | 41,497409,488232,985641 44 | 42,486195,480318,966513 45 | 43,474698,466735,941433 46 | 44,478809,474272,953081 47 | 45,481345,478323,959668 48 | 46,522398,515871,1038269 49 | 47,574308,565711,1140019 50 | 48,594783,585955,1180738 51 | 49,639383,626442,1265825 52 | 50,668504,655193,1323697 53 | 51,684228,671992,1356220 54 | 52,701292,688474,1389766 55 | 53,703108,688686,1391794 56 | 54,713090,701381,1414471 57 | 55,703977,695389,1399366 58 | 56,677539,674050,1351589 59 | 57,662644,665293,1327937 60 | 58,637082,642613,1279695 61 | 59,616432,623199,1239631 62 | 60,578689,587953,1166642 63 | 61,560949,574142,1135091 64 | 62,540345,558648,1098993 65 | 63,516948,542697,1059645 66 | 64,498794,534749,1033543 67 | 65,476419,517881,994300 68 | 66,471077,515496,986573 69 | 67,457083,503090,960173 70 | 68,452873,500441,953314 71 | 69,434182,479955,914137 72 | 70,392831,434360,827191 73 | 71,362555,407525,770080 74 | 72,309855,352989,662844 75 | 73,265056,310937,575993 76 | 74,349589,410848,760437 77 | 75,348468,413063,761531 78 | 76,329782,396284,726066 79 | 77,386471,478586,865057 80 | 78,390499,497105,887604 81 | 79,368391,480735,849126 82 | 80,326093,435137,761230 83 | 81,285975,393435,679410 84 | 82,256856,365701,622557 85 | 83,227215,336350,563565 86 | 84,190985,293850,484835 87 | 85,737893,1539616,2277509 88 | -------------------------------------------------------------------------------- /man/estimatepast_RKI_timeseries.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/estimatepast_RKI_timeseries.R 3 | \name{estimatepast_RKI_timeseries} 4 | \alias{estimatepast_RKI_timeseries} 5 | \title{estimatepast_RKI_timeseries} 6 | \usage{ 7 | estimatepast_RKI_timeseries( 8 | x, 9 | ..., 10 | prop_death, 11 | mean_days_until_death, 12 | doubling_time 13 | ) 14 | } 15 | \arguments{ 16 | \item{x}{data.frame. RKI data as downloaded with \code{\link{get_RKI_timeseries}}} 17 | 18 | \item{...}{variable names. One or multiple grouping columns of x, so Bundesland, Landkreis, Gender or Age} 19 | 20 | \item{prop_death}{numeric. Probability of death} 21 | 22 | \item{mean_days_until_death}{integer. Mean number of days from infection to death (in case of death)} 23 | 24 | \item{doubling_time}{numeric. Mean number of days for the number of infected to double} 25 | } 26 | \description{ 27 | This function implements two sequential methods to estimate the real number of infected based on the current 28 | cumulative death count as presented by Tomas Pueyo in this 29 | (\url{https://medium.com/@tomaspueyo/coronavirus-act-today-or-people-will-die-f4d3d9cd99ca}) blog post. 30 | } 31 | \details{ 32 | \emph{EstimationCumNumberIllPast}, the actual number of infected, is calculated with the current 33 | cumulative number of deaths \strong{CumNumberDead}, the death rate \strong{prop_death} and the average number 34 | of days \strong{mean_days_until_death} from infection to death (in case of death). 35 | This approach only allows to estimate values at least \strong{mean_days_until_death} days in the past. 36 | \emph{EstimationCumNumberIllPresent} employs the last value in \emph{EstimationCumNumberIllPast} to estimate the number 37 | of actually infected people beyond the \strong{mean_days_until_death} threshold with a simple exponential growth model considering 38 | \strong{doubling_time}. 39 | With \emph{EstimationCumNumberIllPast}, \emph{EstimationCumNumberIllPresent} and \strong{prop_death} we can calculate an 40 | expected number of deaths \emph{EstimationCumNumberDeadFuture}. 41 | } 42 | \examples{ 43 | \donttest{ 44 | rki_timeseries <- get_RKI_timeseries() 45 | 46 | estimatepast_RKI_timeseries( 47 | rki_timeseries, 48 | prop_death = 0.01, mean_days_until_death = 17, doubling_time = 4 49 | ) 50 | 51 | estimatepast_RKI_timeseries( 52 | rki_timeseries, Bundesland, 53 | prop_death = 0.03, mean_days_until_death = 17, doubling_time = 3 54 | ) 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /R/data.R: -------------------------------------------------------------------------------- 1 | #' hospital_beds 2 | #' 3 | #' Source: \url{http://www.gbe-bund.de/gbe10/f?f=328::Intensivstation}, 4 | #' Please see the README for more information: \url{https://github.com/nevrome/covid19germany} 5 | #' 6 | #' @format A data frame with 16 rows and 7 variables. 7 | #' \itemize{ 8 | #' \item \bold{Bundesland} 9 | #' \item \bold{NumberHospital} 10 | #' \item \bold{NumberHospitalwithICU} 11 | #' \item \bold{NumberICUBed} 12 | #' \item \bold{NumberDaysICUBedinUse} 13 | #' \item \bold{NumberICUCase} 14 | #' \item \bold{NumberICUCasewithRespirator} 15 | #' } 16 | #' 17 | #' @family context_data 18 | #' 19 | #' @name hospital_beds 20 | NULL 21 | 22 | #' ew_laender 23 | #' 24 | #' Source: \url{https://www.destatis.de/DE/Themen/Laender-Regionen/Regionales/Gemeindeverzeichnis/Administrativ/04-kreise.html}, 25 | #' Licence: Deutschland 2.0, 26 | #' Please see the README for more information: \url{https://github.com/nevrome/covid19germany} 27 | #' 28 | #' @format A data frame with 16 rows and 6 variables. 29 | #' \itemize{ 30 | #' \item \bold{Bundesland} 31 | #' \item \bold{AreaKm2} 32 | #' \item \bold{PopulationTotal} 33 | #' \item \bold{PopulationMale} 34 | #' \item \bold{PopulationFemale} 35 | #' \item \bold{PopulationperKm2} 36 | #' } 37 | #' 38 | #' @family context_data 39 | #' 40 | #' @name ew_laender 41 | NULL 42 | 43 | #' ew_kreise 44 | #' 45 | #' Source: \url{https://www.statistikportal.de/de/bevoelkerung/flaeche-und-bevoelkerung}, 46 | #' Licence: Deutschland 2.0, 47 | #' Please see the README for more information: \url{https://github.com/nevrome/covid19germany} 48 | #' 49 | #' @format A data frame with 401 rows and 8 variables. 50 | #' \itemize{ 51 | #' \item \bold{IdLandkreis} 52 | #' \item \bold{Landkreis} 53 | #' \item \bold{NUTS3} 54 | #' \item \bold{AreaKm2} 55 | #' \item \bold{PopulationTotal} 56 | #' \item \bold{PopulationMale} 57 | #' \item \bold{PopulationFemale} 58 | #' \item \bold{PopulationperKm2} 59 | #' } 60 | #' 61 | #' @family context_data 62 | #' 63 | #' @name ew_kreise 64 | NULL 65 | 66 | #' ew_alter 67 | #' 68 | #' Source: \url{https://www-genesis.destatis.de/genesis/online}, 69 | #' Licence: Deutschland 2.0, 70 | #' Please see the README for more information: \url{https://github.com/nevrome/covid19germany} 71 | #' 72 | #' @format A data frame with 6 rows and 4 variables. 73 | #' \itemize{ 74 | #' \item \bold{Age} 75 | #' \item \bold{PopulationTotal} 76 | #' \item \bold{PopulationMale} 77 | #' \item \bold{PopulationFemale} 78 | #' } 79 | #' 80 | #' @family context_data 81 | #' 82 | #' @name ew_alter 83 | NULL 84 | -------------------------------------------------------------------------------- /R/get_RKI_spatial.R: -------------------------------------------------------------------------------- 1 | #' get_RKI_spatial 2 | #' 3 | #' Downloads the latest version of a COVID-19 spatial dataset by the Robert Koch Institute. 4 | #' Please see the README for more information: \url{https://github.com/nevrome/covid19germany} 5 | #' 6 | #' @param resolution character. Resolution of the spatial data: "Bundesland" or "Landkreis" 7 | #' @param urls named character vector. Data source urls 8 | #' @param cache logical. Should the data be cached? 9 | #' @param cache_dir character. Path to cache directory 10 | #' @param cache_max_age numeric. Maximum age of cache in seconds 11 | #' 12 | #' @return An object of class sf with the dataset 13 | #' 14 | #' @examples 15 | #' \donttest{ 16 | #' rki_spatial_Bundesland <- get_RKI_spatial() 17 | #' } 18 | #' 19 | #' @export 20 | get_RKI_spatial <- function( 21 | resolution = "Bundesland", 22 | urls = c( 23 | "Bundesland" = "https://opendata.arcgis.com/datasets/ef4b445a53c1406892257fe63129a8ea_0.zip", 24 | "Landkreis" = "https://opendata.arcgis.com/datasets/917fc37a709542548cc3be077a786c17_0.zip" 25 | ), 26 | cache = T, cache_dir = tempdir(), cache_max_age = "today" 27 | ) { 28 | 29 | check_if_packages_are_available("sf") 30 | 31 | if (cache_max_age == "today") { 32 | cache_threshold <- lubridate::now() - lubridate::as.duration( 33 | lubridate::interval(lubridate::today(), lubridate::now()) 34 | ) 35 | } else { 36 | cache_threshold <- lubridate::now() - lubridate::as.duration( 37 | cache_max_age 38 | ) 39 | } 40 | 41 | url <- urls[names(urls) == resolution] 42 | 43 | # caching is activated 44 | if (cache) { 45 | if (!dir.exists(cache_dir)) { dir.create(cache_dir) } 46 | tab_cache_file <- file.path(cache_dir, paste0("RKI_spatial_", resolution, ".RData")) 47 | if (file.exists(tab_cache_file) & file.mtime(tab_cache_file) > cache_threshold) { 48 | message("Loading file from cache...") 49 | load(tab_cache_file) 50 | } else { 51 | message("Downloading file...") 52 | this_tab <- download_RKI_spatial(url, resolution) 53 | save(this_tab, file = tab_cache_file) 54 | } 55 | # caching is not activated 56 | } else { 57 | this_tab <- download_RKI_spatial(url, resolution) 58 | } 59 | 60 | return(this_tab) 61 | 62 | } 63 | 64 | download_RKI_spatial <- function(url, resolution) { 65 | 66 | shape_zip <- tempfile() 67 | unzip_dir <- file.path(tempdir(), "RKI_spatial_shapefiles") 68 | utils::download.file(url, destfile = shape_zip) 69 | utils::unzip(shape_zip, exdir = unzip_dir) 70 | 71 | if (resolution == "Bundesland") { 72 | path_to_shp <- list.files(unzip_dir, pattern = ".*Bundes.*\\.shp", full.names = TRUE) 73 | sf_object <- sf::read_sf(path_to_shp) %>% 74 | dplyr::mutate( 75 | Bundesland = .data[["LAN_ew_GEN"]] 76 | ) 77 | } else if (resolution == "Landkreis") { 78 | path_to_shp <- list.files(unzip_dir, pattern = ".*Land.*\\.shp", full.names = TRUE) 79 | sf_object <- sf::read_sf(path_to_shp) %>% 80 | dplyr::mutate( 81 | IdLandkreis = as.integer(.data[["RS"]]) 82 | ) 83 | } 84 | 85 | return(sf_object) 86 | } -------------------------------------------------------------------------------- /data-raw/data_prep.R: -------------------------------------------------------------------------------- 1 | hospital_beds <- readr::read_csv( 2 | "data-raw/hospital_beds.csv", 3 | col_types = readr::cols( 4 | AnzahlKrankenhaeuser = readr::col_character(), 5 | AnzahlKrankenhaeusermitIntensiv = readr::col_integer(), 6 | AnzahlBettenIntensiv = readr::col_integer(), 7 | AnzahlBelegungstageIntensiv = readr::col_integer(), 8 | AnzahlBehandlungsfaelleIntensiv = readr::col_integer(), 9 | AnzahlBehandlungsfaelleIntensivmitBeatmung = readr::col_integer() 10 | ) 11 | ) %>% 12 | dplyr::rename( 13 | NumberHospital = AnzahlKrankenhaeuser, 14 | NumberHospitalwithICU = AnzahlKrankenhaeusermitIntensiv, 15 | NumberICUBed = AnzahlBettenIntensiv, 16 | NumberDaysICUBedinUse = AnzahlBelegungstageIntensiv, 17 | NumberICUCase = AnzahlBehandlungsfaelleIntensiv, 18 | NumberICUCasewithRespirator = AnzahlBehandlungsfaelleIntensivmitBeatmung 19 | ) 20 | 21 | ew_laender <- readr::read_delim( 22 | "data-raw/EW_Laender.csv", delim=";", 23 | col_types = readr::cols( 24 | Bundesland = readr::col_character(), 25 | FlaecheKm2 = readr::col_double(), 26 | EwGesamt = readr::col_integer(), 27 | EwMaennlich = readr::col_integer(), 28 | EwWeiblich = readr::col_integer(), 29 | EwProKm2 = readr::col_double() 30 | ) 31 | ) %>% 32 | dplyr::rename( 33 | AreaKm2 = FlaecheKm2, 34 | PopulationTotal = EwGesamt, 35 | PopulationMale = EwMaennlich, 36 | PopulationFemale = EwWeiblich, 37 | PopulationperKm2 = EwProKm2 38 | ) 39 | 40 | ew_kreise <- readr::read_delim( 41 | "data-raw/EW_Kreise.csv", ";", 42 | col_types = readr::cols( 43 | IdLandkreis = readr::col_integer(), 44 | NameLandkreis = readr::col_character(), 45 | NUTS3 = readr::col_character(), 46 | FlaecheKm2 = readr::col_double(), 47 | EwGesamt = readr::col_integer(), 48 | EwMaennlich = readr::col_integer(), 49 | EwWeiblich = readr::col_integer(), 50 | EwProKm2 = readr::col_double() 51 | ) 52 | ) %>% 53 | dplyr::rename( 54 | AreaKm2 = FlaecheKm2, 55 | PopulationTotal = EwGesamt, 56 | PopulationMale = EwMaennlich, 57 | PopulationFemale = EwWeiblich, 58 | PopulationperKm2 = EwProKm2 59 | ) 60 | 61 | ew_alter <- readr::read_csv( 62 | "data-raw/EW_Alter.csv", 63 | col_types = readr::cols( 64 | alter = col_double(), 65 | m = col_double(), 66 | w = col_double(), 67 | total = col_double() 68 | )) %>% 69 | dplyr::group_by( 70 | gr = cut( 71 | alter, 72 | breaks = c(0, 4, 14, 34, 59, 79, 100), 73 | labels = c("A00-A04", "A05-A14", "A15-A34", "A35-A59", "A60-A79", "A80+"), 74 | include.lowest = TRUE 75 | ) 76 | ) %>% 77 | dplyr::summarise( 78 | EwGesamt = sum(total), 79 | EwMaennlich = sum(m), 80 | EwWeiblich = sum(w) 81 | ) %>% 82 | dplyr::mutate(Altersgruppe = gr) %>% 83 | dplyr::select(.data$Altersgruppe, .data$EwGesamt, .data$EwMaennlich, .data$EwWeiblich) %>% 84 | dplyr::rename( 85 | Age = Altersgruppe, 86 | PopulationTotal = EwGesamt, 87 | PopulationMale = EwMaennlich, 88 | PopulationFemale = EwWeiblich 89 | ) 90 | 91 | 92 | 93 | 94 | usethis::use_data(hospital_beds, overwrite = TRUE) 95 | usethis::use_data(ew_laender, overwrite = TRUE) 96 | usethis::use_data(ew_kreise, overwrite = TRUE) 97 | usethis::use_data(ew_alter, overwrite = TRUE) 98 | -------------------------------------------------------------------------------- /R/group_RKI_timeseries.R: -------------------------------------------------------------------------------- 1 | #' group_RKI_timeseries 2 | #' 3 | #' Restructures the RKI data to a grouped time series data.frame. Days with no observations are added to make them 4 | #' explicit. Grouping can be done with one or multiple variables (see parameter \code{...}). 5 | #' Please see the README for more information: \url{https://github.com/nevrome/covid19germany} 6 | #' 7 | #' @param x data.frame. RKI data as downloaded with \code{\link{get_RKI_timeseries}} 8 | #' @param ... variable names. One or multiple grouping columns of x, so Bundesland, Landkreis, Gender or Age 9 | #' 10 | #' @examples 11 | #' \donttest{ 12 | #' rki_timeseries <- get_RKI_timeseries() 13 | #' 14 | #' group_RKI_timeseries(rki_timeseries, Bundesland, Gender) 15 | #' } 16 | #' 17 | #' @export 18 | group_RKI_timeseries <- function(x, ...) { 19 | 20 | .grouping_var <- rlang::ensyms(...) 21 | 22 | res <- x %>% 23 | dplyr::select( 24 | !!!.grouping_var, 25 | "NumberNewTestedIll", "NumberNewDead", "NumberNewRecovered", 26 | "MovingCorrectionTestedIll", "MovingCorrectionDead", "MovingCorrectionRecovered", 27 | "Date" 28 | ) %>% 29 | dplyr::group_by( 30 | !!!.grouping_var, .data[["Date"]] 31 | ) %>% 32 | dplyr::summarise( 33 | NumberNewTestedIll = sum(.data[["NumberNewTestedIll"]], na.rm = T), 34 | NumberNewDead = sum(.data[["NumberNewDead"]], na.rm = T), 35 | NumberNewRecovered = sum(.data[["NumberNewRecovered"]], na.rm = T), 36 | MovingCorrectionTestedIll = sum(.data[["MovingCorrectionTestedIll"]], na.rm = T), 37 | MovingCorrectionDead = sum(.data[["MovingCorrectionDead"]], na.rm = T), 38 | MovingCorrectionRecovered = sum(.data[["MovingCorrectionRecovered"]], na.rm = T) 39 | ) %>% 40 | dplyr::ungroup() 41 | 42 | # add missing days with explicit 0 values 43 | if (lubridate::is.Date(res$Date)) { 44 | res <- res %>% 45 | tidyr::complete( 46 | tidyr::nesting(!!!.grouping_var), 47 | Date = tidyr::full_seq(.data[["Date"]], 1), 48 | fill = list( 49 | NumberNewTestedIll = 0, NumberNewDead = 0, NumberNewRecovered = 0, 50 | MovingCorrectionTestedIll = 0, MovingCorrectionDead = 0, MovingCorrectionRecovered = 0 51 | ) 52 | ) 53 | } 54 | 55 | res <- res %>% dplyr::group_by( 56 | !!!.grouping_var 57 | ) %>% 58 | dplyr::mutate( 59 | CumNumberTestedIll = cumsum(.data[["NumberNewTestedIll"]]), 60 | CumNumberDead = cumsum(.data[["NumberNewDead"]]), 61 | CumNumberRecovered = cumsum(.data[["NumberNewRecovered"]]), 62 | CumMovingCorrectionTestedIll = cumsum(.data[["MovingCorrectionTestedIll"]]), 63 | CumMovingCorrectionDead = cumsum(.data[["MovingCorrectionDead"]]), 64 | CumMovingCorrectionRecovered = cumsum(.data[["MovingCorrectionRecovered"]]) 65 | ) %>% 66 | dplyr::ungroup() 67 | 68 | if ("Bundesland" %in% colnames(res)) { 69 | res <- res %>% 70 | dplyr::left_join( 71 | x %>% dplyr::select("IdBundesland", "Bundesland") %>% unique, by = "Bundesland" 72 | ) 73 | } 74 | 75 | if ("Landkreis" %in% colnames(res)) { 76 | res <- res %>% 77 | dplyr::left_join( 78 | x %>% dplyr::select("IdLandkreis", "Landkreis") %>% unique, by = "Landkreis" 79 | ) 80 | } 81 | 82 | return(res) 83 | 84 | } 85 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ![](man/figures/README_plot.png) 5 | 6 | ![](man/figures/README_plot_vac.png) 7 | 8 | # covid19germany 9 | 10 | An R package to load, visualise and analyse daily updated data on the 11 | COVID-19 outbreak in Germany. This package exists to simplify data 12 | analysis and was developed in the context of the [\#WirvsVirus 13 | hackathon](https://www.bundesregierung.de/breg-de/themen/coronavirus/wir-vs-virus-1731968). 14 | 15 | - [**Install**](#Install) 16 | - [**Functions and data**](#functions-and-data) 17 | - [RKI vaccination progress](#rki-vaccination-progress) 18 | - [RKI timeseries](#rki-timeseries) 19 | - [RKI spatial](#rki-spatial) 20 | - [Population numbers](#population-numbers) 21 | - [Hospital beds](#hospital-beds) 22 | 23 | ## Install 24 | 25 | Install the development version from github with 26 | 27 | if(!require('remotes')) install.packages('remotes') 28 | remotes::install_github("nevrome/covid19germany") 29 | 30 | ## Functions and data 31 | 32 | ### RKI vaccination progress 33 | 34 | [Daily updated RKI data about COVID-19 vaccinations in 35 | germany](https://www.rki.de/DE/Content/InfAZ/N/Neuartiges_Coronavirus/Daten/Impfquoten-Tab.html). 36 | Provided by the Robert Koch Institut. 37 | 38 | rki_vaccinations_timeseries <- covid19germany::get_RKI_vaccination_timeseries() 39 | 40 | ### RKI timeseries 41 | 42 | rki <- covid19germany::get_RKI_timeseries() 43 | 44 | [Daily updated RKI data about COVID-19 cases and deaths for germany 45 | (timeseries)](https://npgeo-corona-npgeo-de.hub.arcgis.com/datasets/dd4580c810204019a7b8eb3e0b329dd6_0). 46 | Provided by the Bundesamt für Kartographie und Geodäsie as well as the 47 | Robert Koch Institut. 48 | 49 | You can convert this RKI data to daily timeseries for federal states 50 | (Bundesland), administrative districts (Landkreis), gender (Gender) 51 | and/or age (Age). 52 | 53 | covid19germany::group_RKI_timeseries(rki, Bundesland) 54 | covid19germany::group_RKI_timeseries(rki, Landkreis) 55 | covid19germany::group_RKI_timeseries(rki, Gender) 56 | covid19germany::group_RKI_timeseries(rki, Age) 57 | 58 | It’s possible to group by multiple of these at once, e.g. 59 | 60 | covid19germany::group_RKI_timeseries(rki, Bundesland, Age) 61 | 62 | ### RKI spatial 63 | 64 | covid19germany::get_RKI_spatial("Bundesland") 65 | covid19germany::get_RKI_spatial("Landkreis") 66 | 67 | [Daily updated RKI data about COVID-19 cases and deaths for germany 68 | (spatial)](https://npgeo-corona-npgeo-de.hub.arcgis.com/search?groupIds=b28109b18022405bb965c602b13e1bbc). 69 | Provided by the Bundesamt für Kartographie und Geodäsie as well as the 70 | Robert Koch Institut. 71 | 72 | ### Population numbers 73 | 74 | covid19germany::ew_laender 75 | covid19germany::ew_kreise 76 | covid19germany::ew_alter 77 | 78 | [Population numbers for the german 79 | Länder](https://www.statistikportal.de/de/bevoelkerung/flaeche-und-bevoelkerung) 80 | and 81 | [Kreise](https://www.destatis.de/DE/Themen/Laender-Regionen/Regionales/Gemeindeverzeichnis/Administrativ/04-kreise.html) 82 | on 2018-12-31. Provided by the Statistisches Bundesamt. (Population data 83 | for administrative units of Berlin in dataset ew_laender is missing.) 84 | 85 | ### Hospital beds 86 | 87 | covid19germany::hospital_beds 88 | 89 | [Hospital beds and ICUs in 90 | Germany](http://www.gbe-bund.de/gbe10/f?f=328::Intensivstation) in 2017 91 | with a last update from 2018-11-13. Provided by the Statistisches 92 | Bundesamt as well as the Robert Koch Institut. 93 | -------------------------------------------------------------------------------- /R/estimatepast_RKI_timeseries.R: -------------------------------------------------------------------------------- 1 | #' estimatepast_RKI_timeseries 2 | #' 3 | #' This function implements two sequential methods to estimate the real number of infected based on the current 4 | #' cumulative death count as presented by Tomas Pueyo in this 5 | #' (\url{https://medium.com/@tomaspueyo/coronavirus-act-today-or-people-will-die-f4d3d9cd99ca}) blog post. 6 | #' 7 | #' \emph{EstimationCumNumberIllPast}, the actual number of infected, is calculated with the current 8 | #' cumulative number of deaths \strong{CumNumberDead}, the death rate \strong{prop_death} and the average number 9 | #' of days \strong{mean_days_until_death} from infection to death (in case of death). 10 | #' This approach only allows to estimate values at least \strong{mean_days_until_death} days in the past. 11 | #' \emph{EstimationCumNumberIllPresent} employs the last value in \emph{EstimationCumNumberIllPast} to estimate the number 12 | #' of actually infected people beyond the \strong{mean_days_until_death} threshold with a simple exponential growth model considering 13 | #' \strong{doubling_time}. 14 | #' With \emph{EstimationCumNumberIllPast}, \emph{EstimationCumNumberIllPresent} and \strong{prop_death} we can calculate an 15 | #' expected number of deaths \emph{EstimationCumNumberDeadFuture}. 16 | #' 17 | #' @param x data.frame. RKI data as downloaded with \code{\link{get_RKI_timeseries}} 18 | #' @param ... variable names. One or multiple grouping columns of x, so Bundesland, Landkreis, Gender or Age 19 | #' @param prop_death numeric. Probability of death 20 | #' @param mean_days_until_death integer. Mean number of days from infection to death (in case of death) 21 | #' @param doubling_time numeric. Mean number of days for the number of infected to double 22 | #' 23 | #' @examples 24 | #' \donttest{ 25 | #' rki_timeseries <- get_RKI_timeseries() 26 | #' 27 | #' estimatepast_RKI_timeseries( 28 | #' rki_timeseries, 29 | #' prop_death = 0.01, mean_days_until_death = 17, doubling_time = 4 30 | #' ) 31 | #' 32 | #' estimatepast_RKI_timeseries( 33 | #' rki_timeseries, Bundesland, 34 | #' prop_death = 0.03, mean_days_until_death = 17, doubling_time = 3 35 | #' ) 36 | #' } 37 | #' 38 | #' @export 39 | estimatepast_RKI_timeseries <- function(x, ..., prop_death, mean_days_until_death, doubling_time) { 40 | 41 | grouped_x <- group_RKI_timeseries(x, ...) %>% 42 | dplyr::group_split(...) 43 | 44 | lapply( 45 | grouped_x, 46 | function(y) { 47 | 48 | new_dates <- tidyr::full_seq( 49 | c(max(y[["Date"]]) + lubridate::days(1), max(y[["Date"]]) + lubridate::days(mean_days_until_death - 1)), 1 50 | ) 51 | 52 | new_rows <- y[1:length(new_dates),] %>% 53 | dplyr::mutate( 54 | Date = new_dates, 55 | NumberNewTestedIll = NA, 56 | NumberNewDead = NA, 57 | NumberNewRecovered = NA, 58 | CumNumberTestedIll = NA, 59 | CumNumberDead = NA, 60 | CumNumberRecovered = NA, 61 | EstimationCumNumberIllPast = NA, 62 | EstimationCumNumberIllPresent = NA 63 | ) 64 | 65 | y %>% 66 | dplyr::mutate( 67 | EstimationCumNumberIllPast = dplyr::lead(.data[["CumNumberDead"]], mean_days_until_death - 1) / 68 | prop_death, 69 | EstimationCumNumberIllPresent = c( 70 | rep(NA, length(.data[["EstimationCumNumberIllPast"]]) - (mean_days_until_death)), 71 | max(.data[["EstimationCumNumberIllPast"]], na.rm = T) * 2^((0:(mean_days_until_death - 1))/doubling_time) 72 | ) 73 | ) %>% 74 | rbind(., new_rows) %>% 75 | dplyr::mutate( 76 | EstimationCumNumberDeadFuture = dplyr::lag(.data[["EstimationCumNumberIllPresent"]], mean_days_until_death - 1) * prop_death 77 | ) 78 | } 79 | ) %>% 80 | dplyr::bind_rows() 81 | 82 | } 83 | -------------------------------------------------------------------------------- /R/plot_RKI_timeseries.R: -------------------------------------------------------------------------------- 1 | #' plot_RKI_timeseries 2 | #' 3 | #' Simple plotting function for the RKI data. 4 | #' Please see the README for more information: \url{https://github.com/nevrome/covid19germany} 5 | #' 6 | #' @param x data.frame. RKI data as downloaded with \code{\link{get_RKI_timeseries}} 7 | #' @param group character. Grouping of the underlying timeseries. One of: "Bundesland", "Landkreis", "Gender", "Age". See \code{\link{group_RKI_timeseries}} for more information 8 | #' @param type character. Type of count information. 9 | #' One of: "NumberNewTestedIll", "NumberNewDead", "NumberNewRecovered", "CumNumberTestedIll", "CumNumberDead", "CumNumberRecovered" 10 | #' @param label logical. Should labels be added? 11 | #' @param logy logical. Should the y-axis be log10-scaled? 12 | #' @param by_month logical. Should the output plot be grouped by month or by days? 13 | #' @param by_week logical. Deprecated and replaced by by_month 14 | #' 15 | #' @examples 16 | #' \donttest{ 17 | #' rki_timeseries <- get_RKI_timeseries() 18 | #' 19 | #' plot_RKI_timeseries(rki_timeseries, "Gender", "CumNumberTestedIll") 20 | #' } 21 | #' 22 | #' @export 23 | plot_RKI_timeseries <- function(x, group = "Bundesland", type = "CumNumberTestedIll", label = T, logy = F, by_month = T, by_week = F) { 24 | 25 | check_if_packages_are_available("ggplot2") 26 | 27 | # group by month 28 | if (by_month) { 29 | x <- x %>% dplyr::group_by( 30 | month = lubridate::month(.data[["Date"]], label = FALSE), year = lubridate::year(.data[["Date"]]), 31 | .data[["IdBundesland"]], .data[["Bundesland"]], 32 | .data[["IdLandkreis"]], .data[["Landkreis"]], 33 | .data[["Age"]], .data[["Gender"]] 34 | ) %>% dplyr::summarise( 35 | dplyr::across( 36 | tidyselect::one_of( 37 | "NumberNewTestedIll", "NumberNewDead", "NumberNewRecovered", 38 | "MovingCorrectionTestedIll", "MovingCorrectionDead", "MovingCorrectionRecovered" 39 | ), 40 | function(x) {sum(x, na.rm = T)} 41 | ), 42 | .groups = "drop" 43 | ) %>% 44 | dplyr::ungroup() %>% 45 | dplyr::mutate( 46 | month = formatC(.data[["month"]], width = 2, format = "d", flag = "0") 47 | ) %>% 48 | tidyr::unite( 49 | col = "Date", 50 | .data[["year"]], 51 | .data[["month"]] 52 | ) 53 | } 54 | 55 | # group by input grouping variable 56 | if (is.na(group)) { 57 | x <- group_RKI_timeseries(x) 58 | } else { 59 | x <- group_RKI_timeseries(x, !!group) 60 | } 61 | 62 | prep_data <- x %>% 63 | tidyr::pivot_longer(cols = tidyselect::contains("Number"), names_to = "Counter", values_to = "Number") %>% 64 | dplyr::filter(.data[["Counter"]] == type) 65 | 66 | if (is.na(group)) { 67 | p <- prep_data %>% 68 | ggplot2::ggplot( 69 | ggplot2::aes_string( 70 | "Date", "Number" 71 | ) 72 | ) 73 | } else { 74 | p <- prep_data %>% 75 | ggplot2::ggplot( 76 | ggplot2::aes_string( 77 | "Date", "Number", 78 | color = group, fill = group, group = group, label = group 79 | ) 80 | ) 81 | } 82 | 83 | # parse title 84 | title <- dplyr::case_when( 85 | type == "NumberNewTestedIll" ~ "Number of confirmed cases", 86 | type == "NumberNewDead" ~ "Number of deaths", 87 | type == "CumNumberTestedIll" ~ "Total number of confirmed cases", 88 | type == "CumNumberDead" ~ "Total number of deaths", 89 | type == "NumberNewRecovered" ~ "Number of recoverings (estimated)", 90 | type == "CumNumberRecovered" ~ "Total number of recoverings (estimated)", 91 | ) 92 | title <- paste0(Sys.Date(), ": ", title) 93 | 94 | p <- p + 95 | ggplot2::ggtitle(title) + 96 | ggplot2::theme_minimal() + 97 | ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 60, vjust = 1, hjust = 1)) 98 | 99 | if (!logy) { 100 | p <- p + 101 | ggplot2::geom_bar(stat = "identity") 102 | } else { 103 | p <- p + 104 | ggplot2::geom_line(stat = "identity") + 105 | ggplot2::scale_y_log10() 106 | } 107 | 108 | if (!label) { 109 | p <- p + ggplot2::guides( 110 | fill = "none", 111 | color = "none" 112 | ) 113 | } 114 | 115 | p <- p + ggplot2::scale_y_continuous(labels = scales::comma) 116 | 117 | return(p) 118 | } 119 | -------------------------------------------------------------------------------- /playground/example_code_snippets.Rmd: -------------------------------------------------------------------------------- 1 | ## Example code snippets 2 | 3 | ### Get and join data 4 | 5 | ```{r} 6 | library(magrittr) 7 | library(covid19germany) 8 | 9 | # Get RKI data and transform to daily time series, e.g. per "Bundesland" and "Landkreis" 10 | rki <- get_RKI_timeseries() 11 | rki_timeseries_bundesland <- rki %>% group_RKI_timeseries("Bundesland") 12 | rki_timeseries_landkreis <- rki %>% group_RKI_timeseries("Landkreis") 13 | 14 | # Join population info to RKI data 15 | rki_timeseries_bundesland <- rki_timeseries_bundesland %>% 16 | dplyr::left_join(ew_laender, by = "Bundesland") 17 | 18 | rki_timeseries_landkreis <- rki_timeseries_landkreis %>% 19 | dplyr::left_join(ew_kreise, by = "IdLandkreis") 20 | 21 | # Join hospital info to RKI data 22 | rki_timeseries_bundesland <- rki_timeseries_bundesland %>% 23 | dplyr::left_join(hospital_beds, by = "Bundesland") 24 | ``` 25 | 26 | ### Simple plots 27 | 28 | ```{r} 29 | library(magrittr) 30 | library(covid19germany) 31 | 32 | get_RKI_timeseries() %>% plot_RKI_timeseries("Age", "CumNumberDead") 33 | ``` 34 | 35 | ```{r} 36 | library(ggplot2) 37 | library(magrittr) 38 | library(covid19germany) 39 | 40 | rki <- get_RKI_timeseries(cache=F) 41 | 42 | group_RKI_timeseries(rki, Bundesland) %>% 43 | dplyr::filter(Date > "2020-02-25") %>% 44 | tidyr::drop_na(Bundesland) %>% 45 | ggplot() + 46 | geom_bar(mapping = aes(x = Date, 47 | y = NumberNewTestedIll, 48 | fill = Bundesland), 49 | stat = 'identity') + 50 | theme_minimal() + 51 | ggtitle("Gemeldete Infektionen (täglich)") + 52 | theme(axis.title.x=element_blank(), 53 | axis.title.y=element_blank()) 54 | ``` 55 | 56 | ```{r} 57 | library(ggplot2) 58 | library(magrittr) 59 | library(covid19germany) 60 | 61 | rki <- get_RKI_timeseries(cache=F) 62 | 63 | group_RKI_timeseries(rki, Bundesland) %>% 64 | dplyr::filter(Date > "2020-02-25") %>% 65 | tidyr::drop_na(Bundesland) %>% 66 | dplyr::group_by(Bundesland) %>% 67 | dplyr::mutate(kum_fall = cumsum(NumberNewTestedIll)) %>% 68 | dplyr::ungroup() %>% 69 | ggplot() + 70 | geom_area(mapping = aes(x = Date, 71 | y = kum_fall, 72 | fill = Bundesland), 73 | stat = 'identity', 74 | na.rm = T) + 75 | theme_minimal() + 76 | ggtitle("Gemeldete Infektionen (kumulativ)") + 77 | theme(axis.title.x=element_blank(), 78 | axis.title.y=element_blank()) 79 | ``` 80 | 81 | Since we have the inhabitant numbers right in the package, co-analysing them toegther with the epidemiologocal data is straight forward: 82 | 83 | ```{r} 84 | library(ggplot2) 85 | library(magrittr) 86 | library(covid19germany) 87 | 88 | rki <- get_RKI_timeseries(cache=F) 89 | 90 | group_RKI_timeseries(rki, Bundesland) %>% 91 | dplyr::left_join(ew_laender, by="Bundesland") %>% 92 | dplyr::filter(Date > "2020-02-25") %>% 93 | tidyr::drop_na(Bundesland) %>% 94 | dplyr::group_by(Bundesland) %>% 95 | dplyr::mutate(kum_fall_per100k_ew = cumsum(NumberNewTestedIll) / PopulationTotal) %>% 96 | dplyr::ungroup() %>% 97 | ggplot() + 98 | geom_line(mapping = aes(x = Date, 99 | y = kum_fall_per100k_ew, 100 | col = Bundesland)) + 101 | theme_minimal() + 102 | ggtitle("Gemeldete Infektionen pro 100K Einwohner (kumulativ)") + 103 | theme(axis.title.x=element_blank(), 104 | axis.title.y=element_blank()) 105 | ``` 106 | 107 | ### Simple Map 108 | 109 | ```{r} 110 | library(sf) 111 | library(ggplot2) 112 | library(lubridate) 113 | library(magrittr) 114 | library(covid19germany) 115 | 116 | # download rki data 117 | rki <- get_RKI_timeseries() 118 | 119 | # download a shapefile with geoinformation for the german Landkreise 120 | landkreis_sf <- get_RKI_spatial("Landkreis") 121 | 122 | # download and filter rki data to 2020-03-21 123 | rki_202003021_landkreise <- group_RKI_timeseries(rki, "Landkreis") %>% 124 | dplyr::filter(Date == as_datetime("2020-03-21")) 125 | 126 | # merge spatial data and rki data 127 | landkreis_sf_COVID19 <- landkreis_sf %>% 128 | dplyr::left_join( 129 | rki_202003021_landkreise, by = c("IdLandkreis") 130 | ) 131 | 132 | # plot 133 | landkreis_sf_COVID19 %>% 134 | ggplot() + 135 | geom_sf( 136 | aes(fill = CumNumberTestedIll) 137 | ) + 138 | scale_fill_viridis_c(direction = -1) + 139 | theme_minimal() + 140 | ggtitle("Summe der gemeldeten Infektionen pro Landkreis am 21.03.2020") + 141 | theme( 142 | axis.title.x = element_blank(), 143 | axis.title.y = element_blank() 144 | ) 145 | ``` 146 | 147 | ### Simple Model 148 | 149 | A simple modelling approach to predict the number of future cases regresses historical counts on time. These predictions assume no further interventions like social distancing! Since the spread-dynamics are exponential, we choose a simple log-linear regression approach on new cases per day (i.e. not cumulative in this analysis): 150 | 151 | ```{r} 152 | library(covid19germany) 153 | 154 | ## globals: 155 | MIN.CASES=5 156 | N.DAYS.FUTURE=7 157 | 158 | ## read data: 159 | df = get_RKI_timeseries() 160 | 161 | ## aggregate case-counts by regions: 162 | ag=aggregate(df$NumberNewTestedIll,by=list(Bundesland=df$Bundesland,Date=df$Date),sum) 163 | 164 | ## split data by regions: 165 | ag.split=split(ag,ag$Bundesland) 166 | 167 | ## plot 168 | par(mfrow=c(4,4)) 169 | par(cex=1.2) 170 | for (this.ag in ag.split){ 171 | keep=(this.ag$x>=MIN.CASES) 172 | this.ag=this.ag[keep,] 173 | this.region=unique(this.ag$Bundesland) 174 | 175 | ## create model 176 | this.ag = this.ag[order(this.ag$Date),] 177 | this.ag[,"x.log"]=log(this.ag[,"x"]) 178 | mdl=lm("x.log ~ Date",data=this.ag) 179 | 180 | ## append N.DAYS.FUTURE to data 181 | n=(nrow(this.ag)+1) 182 | last.date=as.Date(max(this.ag$Date, na.rm = T)) 183 | this.ag[n:(n+N.DAYS.FUTURE-1),]=NA 184 | this.ag[n:(n+N.DAYS.FUTURE-1),"Date"]=seq(last.date+1,by=1,length.out=N.DAYS.FUTURE) 185 | 186 | ## predict on all dates (including future dates) 187 | this.ag[,"x.pred"]=exp(predict(mdl,newdata=this.ag)) 188 | 189 | ## plot data and prediction 190 | ymax=max(this.ag[,c("x.pred","x")],na.rm=TRUE) 191 | plot(this.ag[,"Date"],this.ag[,"x"],type="b",col="black",pch=20,main=this.region,xlab="date",ylab="cases",ylim=c(0,ymax)) 192 | points(this.ag[,"Date"],this.ag[,"x.pred"],type="b",col="red") 193 | } 194 | ``` 195 | -------------------------------------------------------------------------------- /README.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | output: github_document 3 | editor_options: 4 | chunk_output_type: console 5 | --- 6 | 7 | 8 | 9 | ```{r, echo=FALSE, message=FALSE} 10 | library(magrittr) 11 | library(covid19germany) 12 | library(ggplot2) 13 | 14 | rki <- get_RKI_timeseries(cache_dir = "cache", timeout_for_download = 100000) 15 | 16 | p1 <- rki %>% plot_RKI_timeseries("Age", "NumberNewTestedIll", label = F) + 17 | theme(axis.text.x = element_blank(), axis.title.x = element_blank()) 18 | p2 <- rki %>% plot_RKI_timeseries("Age", "NumberNewDead") + 19 | theme(axis.text.x = element_blank(), axis.title.x = element_blank(), 20 | axis.title.y = element_blank()) 21 | p4 <- rki %>% plot_RKI_timeseries("Age", "CumNumberTestedIll", label = F) + 22 | xlab("") 23 | p5 <- rki %>% plot_RKI_timeseries("Age", "CumNumberDead") + 24 | theme(axis.title.y = element_blank()) + 25 | xlab("") 26 | 27 | p <- cowplot::plot_grid(p1, p2, p4, p5, 28 | nrow = 2, ncol = 2, 29 | rel_widths = c(0.9,1), 30 | rel_heights = c(0.9,1), align = "v", axis = 'l' 31 | ) 32 | 33 | ggsave("man/figures/README_plot.png", device = "png", p, width = 10, height = 4, scale = 1.7, bg = "white") 34 | ``` 35 | 36 | ![](man/figures/README_plot.png) 37 | 38 | ```{r, echo=FALSE, message=FALSE, warning=FALSE} 39 | library(magrittr) 40 | library(ggplot2) 41 | 42 | vac_ts <- covid19germany::get_RKI_vaccination_timeseries() 43 | 44 | p_vac <- vac_ts %>% 45 | dplyr::select(-NumberVaccinations) %>% 46 | tidyr::pivot_longer( 47 | cols = tidyselect::starts_with("Number"), 48 | names_to = "Type", 49 | values_to = "Number" 50 | ) %>% 51 | dplyr::mutate( 52 | Type = dplyr::recode( 53 | Type, 54 | "NumberFirstInjections" = "First dose", 55 | "NumberSecondInjections" = "Second dose", 56 | "NumberFirstBoosterInjections" = "First Booster", 57 | "NumberSecondBoosterInjections" = "Second Booster", 58 | ) %>% factor(levels = c( 59 | "First dose", "Second dose", "First Booster", "Second Booster" 60 | ) %>% rev) 61 | ) %>% 62 | dplyr::group_by( 63 | month = formatC(lubridate::month(Date, label = FALSE), width = 2, format = "d", flag = "0"), 64 | year = lubridate::year(Date), 65 | Type 66 | ) %>% 67 | dplyr::summarise( 68 | Number = sum(Number, na.rm = T), 69 | .groups = "drop" 70 | ) %>% 71 | tidyr::unite(col = "year_month", year, month) %>% 72 | ggplot() + 73 | geom_bar(aes(x = year_month, y = Number, fill = Type), stat = "identity") + 74 | scale_y_continuous(labels = scales::comma) + 75 | ggtitle(paste0(lubridate::today(), ": Number of vaccination doses administered")) + 76 | theme_minimal() + 77 | theme( 78 | axis.title.x = element_blank(), 79 | axis.text.x = ggplot2::element_text(angle = 60, vjust = 1, hjust = 1) 80 | ) 81 | 82 | ggsave("man/figures/README_plot_vac.png", device = "png", p_vac, width = 10, height = 3, scale = 1, bg = "white") 83 | ``` 84 | 85 | ```{r, echo=FALSE, message=FALSE, warning=FALSE} 86 | spatial <- covid19germany::get_RKI_spatial() 87 | ``` 88 | 89 | ![](man/figures/README_plot_vac.png) 90 | 91 | [![R-CMD-check](https://github.com/nevrome/covid19germany/actions/workflows/check-release.yaml/badge.svg)](https://github.com/nevrome/covid19germany/actions/workflows/check-release.yaml) 92 | [![Coverage Status](https://img.shields.io/codecov/c/github/nevrome/covid19germany/master.svg)](https://codecov.io/github/nevrome/covid19germany?branch=master) 93 | 94 | # covid19germany 95 | 96 | An R package to load, visualise and analyse daily updated data on the COVID-19 outbreak in Germany. This package exists to simplify data analysis and was developed in the context of the [#WirvsVirus hackathon](https://www.bundesregierung.de/breg-de/themen/coronavirus/wir-vs-virus-1731968). 97 | 98 | - [**Install**](#Install) 99 | - [**Functions and data**](#functions-and-data) 100 | - [RKI vaccination progress](#rki-vaccination-progress) 101 | - [RKI timeseries](#rki-timeseries) 102 | - [RKI spatial](#rki-spatial) 103 | - [Population numbers](#population-numbers) 104 | - [Hospital beds](#hospital-beds) 105 | 106 | ## Install 107 | 108 | Install the development version from github with 109 | 110 | ``` 111 | if(!require('remotes')) install.packages('remotes') 112 | remotes::install_github("nevrome/covid19germany") 113 | ``` 114 | 115 | ## Functions and data 116 | 117 | ### RKI vaccination progress 118 | 119 | [Daily updated RKI data about COVID-19 vaccinations in germany](https://www.rki.de/DE/Content/InfAZ/N/Neuartiges_Coronavirus/Daten/Impfquoten-Tab.html). Provided by the Robert Koch Institut. 120 | 121 | ``` 122 | rki_vaccinations_timeseries <- covid19germany::get_RKI_vaccination_timeseries() 123 | ``` 124 | 125 | ### RKI timeseries 126 | 127 | ``` 128 | rki <- covid19germany::get_RKI_timeseries() 129 | ``` 130 | 131 | [Daily updated RKI data about COVID-19 cases and deaths for germany (timeseries)](https://npgeo-corona-npgeo-de.hub.arcgis.com/datasets/dd4580c810204019a7b8eb3e0b329dd6_0). Provided by the Bundesamt für Kartographie und Geodäsie as well as the Robert Koch Institut. 132 | 133 | You can convert this RKI data to daily timeseries for federal states (Bundesland), administrative districts (Landkreis), gender (Gender) and/or age (Age). 134 | 135 | ``` 136 | covid19germany::group_RKI_timeseries(rki, Bundesland) 137 | covid19germany::group_RKI_timeseries(rki, Landkreis) 138 | covid19germany::group_RKI_timeseries(rki, Gender) 139 | covid19germany::group_RKI_timeseries(rki, Age) 140 | ``` 141 | 142 | It's possible to group by multiple of these at once, e.g. 143 | 144 | ``` 145 | covid19germany::group_RKI_timeseries(rki, Bundesland, Age) 146 | ``` 147 | 148 | ### RKI spatial 149 | 150 | ``` 151 | covid19germany::get_RKI_spatial("Bundesland") 152 | covid19germany::get_RKI_spatial("Landkreis") 153 | ``` 154 | 155 | [Daily updated RKI data about COVID-19 cases and deaths for germany (spatial)](https://npgeo-corona-npgeo-de.hub.arcgis.com/search?groupIds=b28109b18022405bb965c602b13e1bbc). Provided by the Bundesamt für Kartographie und Geodäsie as well as the Robert Koch Institut. 156 | 157 | ### Population numbers 158 | 159 | ``` 160 | covid19germany::ew_laender 161 | covid19germany::ew_kreise 162 | covid19germany::ew_alter 163 | ``` 164 | 165 | [Population numbers for the german Länder](https://www.statistikportal.de/de/bevoelkerung/flaeche-und-bevoelkerung) and [Kreise](https://www.destatis.de/DE/Themen/Laender-Regionen/Regionales/Gemeindeverzeichnis/Administrativ/04-kreise.html) on 2018-12-31. Provided by the Statistisches Bundesamt. (Population data for administrative units of Berlin in dataset ew_laender is missing.) 166 | 167 | ### Hospital beds 168 | 169 | ``` 170 | covid19germany::hospital_beds 171 | ``` 172 | 173 | [Hospital beds and ICUs in Germany](http://www.gbe-bund.de/gbe10/f?f=328::Intensivstation) in 2017 with a last update from 2018-11-13. Provided by the Statistisches Bundesamt as well as the Robert Koch Institut. 174 | -------------------------------------------------------------------------------- /R/get_RKI_timeseries.R: -------------------------------------------------------------------------------- 1 | #' get_RKI_timeseries 2 | #' 3 | #' Downloads the latest version of a COVID-19 timeseries dataset by the Robert Koch Institute. 4 | #' Please see the README for more information: \url{https://github.com/nevrome/covid19germany} 5 | #' 6 | #' @param url character. Data source url 7 | #' @param cache logical. Should the data be cached? 8 | #' @param cache_dir character. Path to cache directory 9 | #' @param cache_max_age numeric. Maximum age of cache in seconds or "today" 10 | #' @param raw_only logical. Do not apply covid19germany filters to RKI data (raw_only = T) or do filter them (default, raw_only = F) 11 | #' @param timeout_for_download integer. The download of the raw data can take a long time 12 | #' with slow internet connections. It may fail then when the timeout limit for 13 | #' \link[utils]{download.file} is reached. This option allows to increase it. 14 | #' 15 | #' @return A tibble with the dataset 16 | #' 17 | #' @examples 18 | #' \donttest{ 19 | #' rki_timeseries <- get_RKI_timeseries() 20 | #' } 21 | #' 22 | #' @import data.table 23 | #' @export 24 | get_RKI_timeseries <- function( 25 | url = paste0( 26 | "https://www.arcgis.com", 27 | "/sharing/rest/content/items/f10774f1c63e40168479a1feb6c7ca74/data" 28 | ), 29 | cache = T, cache_dir = tempdir(), cache_max_age = "today", 30 | raw_only = F, 31 | timeout_for_download = 1000 32 | ) { 33 | 34 | if (cache_max_age == "today") { 35 | cache_threshold <- lubridate::now() - lubridate::as.duration( 36 | lubridate::interval(lubridate::today(), lubridate::now()) 37 | ) 38 | } else { 39 | cache_threshold <- lubridate::now() - lubridate::as.duration( 40 | cache_max_age 41 | ) 42 | } 43 | 44 | # caching is activated 45 | # (too cumbersome to check contents of chached dataset if raw_only is active) 46 | if (cache && !raw_only) { 47 | if (!dir.exists(cache_dir)) { dir.create(cache_dir) } 48 | tab_cache_file <- file.path(cache_dir, paste0("RKI_timeseries.RData")) 49 | if (file.exists(tab_cache_file) & file.mtime(tab_cache_file) > cache_threshold) { 50 | message("Loading file from cache...") 51 | load(tab_cache_file) 52 | } else { 53 | this_tab <- download_RKI(url, timeout_for_download = timeout_for_download) 54 | save(this_tab, file = tab_cache_file) 55 | } 56 | # caching is not activated 57 | } else { 58 | this_tab <- download_RKI(url, raw_only, timeout_for_download = timeout_for_download) 59 | } 60 | 61 | return(this_tab) 62 | } 63 | 64 | download_RKI <- function(url, raw_only = F, timeout_for_download = 1000) { 65 | 66 | message("Downloading file...") 67 | naked_download_file <- tempfile(fileext = ".csv") 68 | default_timeout <- getOption("timeout") 69 | options(timeout=timeout_for_download) 70 | utils::download.file(url, naked_download_file) 71 | options(timeout=default_timeout) 72 | 73 | message("Loading file into R...") 74 | download <- readr::read_csv( 75 | naked_download_file, 76 | na = c("0-1", "unbekannt", "-nicht erhoben-", "Nicht \u00FCbermittelt"), 77 | col_types = readr::cols( 78 | # depending on if the original URL or the alternative one is used either 79 | # ObjectId or FID exists - to avoid a warning we let readr figure out the type 80 | # automatically 81 | #FID = readr::col_integer(), 82 | #ObjectId = readr::col_integer(), 83 | IdBundesland = readr::col_integer(), 84 | Bundesland = readr::col_character(), 85 | Landkreis = readr::col_character(), 86 | Altersgruppe = readr::col_factor( 87 | levels = c("A00-A04", "A05-A14", "A15-A34", "A35-A59", "A60-A79", "A80+"), 88 | ordered = T, 89 | include_na = T 90 | ), 91 | Altersgruppe2 = readr::col_skip(), 92 | Geschlecht = readr::col_factor(include_na = T), 93 | AnzahlFall = readr::col_integer(), 94 | AnzahlTodesfall = readr::col_integer(), 95 | AnzahlGenesen = readr::col_integer(), 96 | Meldedatum = readr::col_date(format = "%Y/%m/%d %H:%M:%S"), 97 | IdLandkreis = readr::col_integer(), 98 | Datenstand = readr::col_date(format = "%d.%m.%Y, %H:%M Uhr"), 99 | NeuerFall = readr::col_integer(), 100 | NeuerTodesfall = readr::col_integer(), 101 | NeuGenesen = readr::col_integer(), 102 | Refdatum = readr::col_date(format = "%Y/%m/%d %H:%M:%S"), 103 | IstErkrankungsbeginn = readr::col_integer() 104 | ) 105 | ) 106 | 107 | file.remove(naked_download_file) 108 | 109 | if ( raw_only ){ 110 | return(download) 111 | } 112 | 113 | message("Processing...") 114 | # name change for alternative URL 115 | if ("FID" %in% colnames(download)) { 116 | download <- download %>% dplyr::rename(ObjectId = .data[["FID"]]) 117 | } 118 | 119 | # get correct count of testedill, dead and recovered 120 | processed <- download %>% 121 | dplyr::transmute( 122 | Version = .data[["Datenstand"]], 123 | ObjectId = .data[["ObjectId"]], 124 | Date = .data[["Meldedatum"]], 125 | IdBundesland = .data[["IdBundesland"]], 126 | Bundesland = .data[["Bundesland"]], 127 | IdLandkreis = .data[["IdLandkreis"]], 128 | Landkreis = .data[["Landkreis"]], 129 | Age = .data[["Altersgruppe"]], 130 | Gender = .data[["Geschlecht"]], 131 | StartOfDiseaseDate = lubridate::as_date(ifelse( 132 | .data[["IstErkrankungsbeginn"]] == 1, 133 | .data[["Refdatum"]], 134 | NA 135 | )), 136 | NumberNewTestedIll = ifelse( 137 | .data[["NeuerFall"]] %in% c(0, 1), 138 | .data[["AnzahlFall"]], 139 | NA 140 | ), 141 | MovingCorrectionTestedIll = ifelse( 142 | .data[["NeuerFall"]] %in% c(-1, 1), 143 | .data[["AnzahlFall"]], 144 | NA 145 | ), 146 | NumberNewDead = ifelse( 147 | .data[["NeuerTodesfall"]] %in% c(0, 1), 148 | .data[["AnzahlTodesfall"]], 149 | NA 150 | ), 151 | MovingCorrectionDead = ifelse( 152 | .data[["NeuerTodesfall"]] %in% c(-1, 1), 153 | .data[["AnzahlTodesfall"]], 154 | NA 155 | ), 156 | NumberNewRecovered = ifelse( 157 | .data[["NeuGenesen"]] %in% c(0, 1), 158 | .data[["AnzahlGenesen"]], 159 | NA 160 | ), 161 | MovingCorrectionRecovered = ifelse( 162 | .data[["NeuGenesen"]] %in% c(-1, 1), 163 | .data[["AnzahlGenesen"]], 164 | NA 165 | ) 166 | ) 167 | 168 | res <- processed %>% 169 | dtplyr::lazy_dt() %>% 170 | # merge double observations 171 | dplyr::group_by( 172 | .data[["Version"]], 173 | .data[["Date"]], 174 | .data[["StartOfDiseaseDate"]], 175 | .data[["IdBundesland"]], 176 | .data[["Bundesland"]], 177 | .data[["IdLandkreis"]], 178 | .data[["Landkreis"]], 179 | .data[["Age"]], 180 | .data[["Gender"]] 181 | ) %>% 182 | dplyr::summarise( 183 | NumberNewTestedIll = sum(.data[["NumberNewTestedIll"]], na.rm = T), 184 | NumberNewDead = sum(.data[["NumberNewDead"]], na.rm = T), 185 | NumberNewRecovered = sum(.data[["NumberNewRecovered"]], na.rm = T), 186 | MovingCorrectionTestedIll = sum(.data[["MovingCorrectionTestedIll"]], na.rm = T), 187 | MovingCorrectionDead = sum(.data[["MovingCorrectionDead"]], na.rm = T), 188 | MovingCorrectionRecovered = sum(.data[["MovingCorrectionRecovered"]], na.rm = T) 189 | ) %>% 190 | tibble::as_tibble() 191 | 192 | return(res) 193 | 194 | } 195 | -------------------------------------------------------------------------------- /blog_post/clemens_blog_post.R: -------------------------------------------------------------------------------- 1 | library(magrittr) 2 | library(ggplot2) 3 | 4 | rki <- covid19germany::get_RKI_timeseries(cache = F) %>% 5 | dplyr::filter( 6 | Date >= lubridate::as_datetime("2020-03-02") 7 | ) 8 | 9 | rki_grouped <- covid19germany::group_RKI_timeseries(rki, Bundesland) 10 | 11 | p1a <- rki_grouped %>% 12 | ggplot() + 13 | geom_area( 14 | aes(Date, CumNumberDead, fill = Bundesland, group = Bundesland), 15 | color = "white", size = 0.3 16 | ) + 17 | scale_y_continuous(labels = scales::comma) + 18 | ggtitle("Total number of deaths by federated state (Bundesland)") + ylab("") + xlab("") + 19 | theme_minimal() + theme(axis.text = element_text(size = 12)) + 20 | guides(fill = FALSE) 21 | 22 | p1b <- rki_grouped %>% 23 | ggplot() + 24 | geom_area( 25 | aes(Date, CumNumberTestedIll, fill = Bundesland, group = Bundesland), 26 | color = "white", size = 0.3 27 | ) + 28 | scale_y_continuous(labels = scales::comma) + 29 | ggtitle("Total number of confirmed cases") + ylab("") + xlab("") + 30 | theme_minimal() + theme(axis.text = element_text(size = 12), legend.title = element_blank()) 31 | 32 | p1 <- cowplot::plot_grid(p1a, p1b, align = "h", ncol = 2, rel_widths = c(1, 1.5)) 33 | cowplot::ggsave2("p1.png", p1, "png", "~/Desktop/covid19/", scale = 3, width = 10, height = 4, units = "cm") 34 | 35 | p2a <- rki_grouped %>% 36 | ggplot() + 37 | geom_area( 38 | aes(Date, NumberNewDead, fill = Bundesland, group = Bundesland), 39 | color = "white", size = 0.3 40 | ) + 41 | scale_y_continuous(labels = scales::comma) + 42 | ggtitle("Number of daily deaths") + ylab("") + xlab("") + 43 | theme_minimal() + theme(axis.text = element_text(size = 12)) + 44 | guides(fill = FALSE) 45 | 46 | p2b <- rki_grouped %>% 47 | ggplot() + 48 | geom_area( 49 | aes(Date, NumberNewTestedIll, fill = Bundesland, group = Bundesland), 50 | color = "white", size = 0.3 51 | ) + 52 | scale_y_continuous(labels = scales::comma) + 53 | ggtitle("Number of daily confirmed cases") + ylab("") + xlab("") + 54 | theme_minimal() + theme(axis.text = element_text(size = 12), legend.title = element_blank()) 55 | 56 | p2 <- cowplot::plot_grid(p2a, p2b, align = "h", ncol = 2, rel_widths = c(1, 1.5)) 57 | cowplot::ggsave2("p2.png", p2, "png", "~/Desktop/covid19/", scale = 3, width = 10, height = 4, units = "cm") 58 | 59 | #### map #### 60 | 61 | library(sf) 62 | library(ggplot2) 63 | library(covid19germany) 64 | 65 | landkreis_sf <- get_RKI_spatial("Landkreis", cache = F) 66 | 67 | rki_day_landkreise <- group_RKI_timeseries(rki, "Landkreis") %>% 68 | dplyr::filter(Date == lubridate::as_datetime("2020-04-01")) 69 | 70 | landkreis_sf_COVID19 <- landkreis_sf %>% 71 | dplyr::left_join( 72 | rki_day_landkreise, by = c("IdLandkreis") 73 | ) %>% 74 | dplyr::mutate( 75 | CumNumberDeadPopulation = CumNumberDead/EWZ * 100000, 76 | CumNumberTestedIllPopulation = CumNumberTestedIll/EWZ * 100000 77 | ) %>% 78 | dplyr::mutate( 79 | CumNumberDead = replace(CumNumberDead, CumNumberDead == 0, NA), 80 | CumNumberTestedIll = replace(CumNumberTestedIll, CumNumberTestedIll == 0, NA), 81 | CumNumberDeadPopulation = replace(CumNumberDeadPopulation, CumNumberDeadPopulation == 0, NA), 82 | CumNumberTestedIllPopulation = replace(CumNumberTestedIllPopulation, CumNumberTestedIllPopulation == 0, NA) 83 | ) 84 | 85 | m1a <- landkreis_sf_COVID19 %>% 86 | ggplot() + 87 | geom_sf(aes(fill = CumNumberDead, color = "0"), size = 0) + 88 | scale_fill_viridis_c(direction = -1, option = "plasma", na.value = "grey50") + 89 | scale_colour_manual(values = NA) + 90 | guides( 91 | fill = guide_colorbar(order = 2), 92 | color = guide_legend(override.aes = list(fill = "grey50")) 93 | ) + 94 | theme_minimal() + 95 | ggtitle("Total number of deaths (2020-04-01)") + 96 | theme( 97 | axis.title = element_blank(), 98 | axis.text = element_blank(), 99 | panel.grid = element_blank(), 100 | legend.title = element_blank() 101 | ) 102 | 103 | m1b <- landkreis_sf_COVID19 %>% 104 | ggplot() + 105 | geom_sf(aes(fill = CumNumberTestedIll, color = "0"), size = 0) + 106 | scale_fill_viridis_c(direction = -1, option = "viridis", na.value = "grey50") + 107 | scale_colour_manual(values = NA) + 108 | guides( 109 | fill = guide_colorbar(order = 2), 110 | color = guide_legend(override.aes = list(fill = "grey50")) 111 | ) + 112 | theme_minimal() + 113 | ggtitle("Total number of confirmed cases (2020-04-01)") + 114 | theme( 115 | axis.title = element_blank(), 116 | axis.text = element_blank(), 117 | panel.grid = element_blank(), 118 | legend.title = element_blank() 119 | ) 120 | 121 | map1 <- cowplot::plot_grid(m1a, m1b, align = "hv", ncol = 2) 122 | cowplot::ggsave2("map1.png", map1, "png", "~/Desktop/covid19/", scale = 3, width = 10, height = 4, units = "cm") 123 | 124 | m2a <- landkreis_sf_COVID19 %>% 125 | ggplot() + 126 | geom_sf(aes(fill = CumNumberDeadPopulation, color = "0"), size = 0) + 127 | scale_fill_viridis_c(direction = -1, option = "plasma", na.value = "grey50") + 128 | scale_colour_manual(values = NA) + 129 | guides( 130 | fill = guide_colorbar(order = 2), 131 | color = guide_legend(override.aes = list(fill = "grey50")) 132 | ) + 133 | theme_minimal() + 134 | ggtitle("Deaths by 100,000 inhabitants (2020-04-01)") + 135 | theme( 136 | axis.title = element_blank(), 137 | axis.text = element_blank(), 138 | panel.grid = element_blank(), 139 | legend.title = element_blank() 140 | ) 141 | 142 | m2b <- landkreis_sf_COVID19 %>% 143 | ggplot() + 144 | geom_sf(aes(fill = CumNumberTestedIllPopulation, color = "0"), size = 0) + 145 | scale_fill_viridis_c(direction = -1, option = "viridis", na.value = "grey50") + 146 | scale_colour_manual(values = NA) + 147 | guides( 148 | fill = guide_colorbar(order = 2), 149 | color = guide_legend(override.aes = list(fill = "grey50")) 150 | ) + 151 | theme_minimal() + 152 | ggtitle("Confirmed cases by 100,000 inhabitants (2020-04-01)") + 153 | theme( 154 | axis.title = element_blank(), 155 | axis.text = element_blank(), 156 | panel.grid = element_blank(), 157 | legend.title = element_blank() 158 | ) 159 | 160 | map2 <- cowplot::plot_grid(m2a, m2b, align = "hv", ncol = 2) 161 | cowplot::ggsave2("map2.png", map2, "png", "~/Desktop/covid19/", scale = 3, width = 10, height = 4, units = "cm") 162 | 163 | #### estimation #### 164 | 165 | rki_full <- covid19germany::get_RKI_timeseries(cache = F) 166 | 167 | model_grid <- expand.grid( 168 | prop_death = c(0.01, 0.05), 169 | doubling_time = c(3, 7, 12) 170 | ) 171 | 172 | est_multi <- lapply(1:nrow(model_grid), function(i) { 173 | pd <- model_grid$prop_death[i] 174 | dti <- model_grid$doubling_time[i] 175 | est <- covid19germany::estimatepast_RKI_timeseries(rki_full, prop_death = pd, mean_days_until_death = 17, doubling_time = dti) %>% 176 | dplyr::select(-NumberNewTestedIll, -NumberNewDead) %>% 177 | tidyr::pivot_longer(cols = c( 178 | "CumNumberTestedIll", "EstimationCumNumberIllPast", "EstimationCumNumberIllPresent", 179 | "CumNumberDead", "EstimationCumNumberDeadFuture" 180 | ), names_to = "CountType") %>% 181 | dplyr::mutate( 182 | prop_death = pd, 183 | doubling_time = dti 184 | ) 185 | return(est) 186 | }) %>% dplyr::bind_rows() 187 | 188 | pest1a <- ggplot() + 189 | geom_line( 190 | data = est_multi %>% dplyr::filter(CountType == "CumNumberTestedIll", value >= 1) %>% dplyr::select(Date, value) %>% unique, 191 | mapping = aes( 192 | Date, value 193 | ), 194 | size = 1, 195 | color = "red" 196 | ) + 197 | geom_line( 198 | data = est_multi %>% dplyr::filter(CountType == "EstimationCumNumberIllPast", value >= 1), 199 | mapping = aes( 200 | Date, value, 201 | color = as.character(prop_death) 202 | ), 203 | size = 1, 204 | alpha = 0.6 205 | ) + 206 | geom_line( 207 | data = est_multi %>% dplyr::filter(CountType == "EstimationCumNumberIllPresent", value >= 1), 208 | mapping = aes( 209 | Date, value, 210 | color = as.character(prop_death), linetype = as.factor(doubling_time), group = interaction(prop_death, doubling_time) 211 | ), 212 | size = 1, 213 | alpha = 0.6 214 | ) + 215 | scale_y_continuous(labels = scales::comma) + 216 | ggtitle("Estimated number of infected (y-axis scaling: linear 🡄 | 🡆 log10)") + ylab("") + xlab("") + 217 | theme_minimal() + 218 | guides(color = F, linetype = F) + 219 | geom_vline( 220 | aes(xintercept = lubridate::as_datetime(lubridate::today() - lubridate::days(17))) 221 | ) + 222 | geom_vline( 223 | aes(xintercept = lubridate::as_datetime(lubridate::today() - 1)), 224 | color = "blue" 225 | ) 226 | 227 | pest1b <- ggplot() + 228 | geom_line( 229 | data = est_multi %>% dplyr::filter(CountType == "CumNumberTestedIll", value >= 1) %>% dplyr::select(Date, value) %>% unique, 230 | mapping = aes( 231 | Date, value, color = "Cumulative, confirmed cases" 232 | ), 233 | size = 1 234 | ) + 235 | scale_color_manual(values = "red", guide = guide_legend(title = "")) + 236 | ggnewscale::new_scale_color() + 237 | geom_line( 238 | data = est_multi %>% dplyr::filter(CountType == "EstimationCumNumberIllPast", value >= 1), 239 | mapping = aes( 240 | Date, value, 241 | color = as.character(prop_death) 242 | ), 243 | size = 1, 244 | alpha = 0.6 245 | ) + 246 | geom_line( 247 | data = est_multi %>% dplyr::filter(CountType == "EstimationCumNumberIllPresent", value >= 1), 248 | mapping = aes( 249 | Date, value, 250 | color = as.character(prop_death), linetype = as.factor(doubling_time), group = interaction(prop_death, doubling_time) 251 | ), 252 | size = 1, 253 | alpha = 0.6 254 | ) + 255 | scale_y_log10(labels = scales::comma) + 256 | ggtitle("") + ylab("") + xlab("") + 257 | theme_minimal() + 258 | guides( 259 | color = guide_legend(title = "Lethality scenarios", keywidth = 5), 260 | linetype = guide_legend(title = "Doubling time scenarios", keywidth = 5) 261 | ) + 262 | geom_vline( 263 | aes(xintercept = lubridate::as_datetime(lubridate::today() - lubridate::days(17))) 264 | ) + 265 | geom_vline( 266 | aes(xintercept = lubridate::as_datetime(lubridate::today() - 1)), 267 | color = "blue" 268 | ) 269 | 270 | pest1 <- cowplot::plot_grid(pest1a, pest1b, align = "h", ncol = 2, rel_widths = c(1, 1.5)) 271 | cowplot::ggsave2("pest1.png", pest1, "png", "~/Desktop/covid19/", scale = 3, width = 10, height = 4, units = "cm") 272 | 273 | pest2a <- ggplot() + 274 | geom_line( 275 | data = est_multi %>% dplyr::filter(CountType == "CumNumberDead", value >= 1) %>% dplyr::select(Date, value) %>% unique, 276 | mapping = aes( 277 | Date, value 278 | ), 279 | size = 1, 280 | color = "red" 281 | ) + 282 | geom_line( 283 | data = est_multi %>% dplyr::filter(CountType == "EstimationCumNumberDeadFuture", value >= 1) %>% dplyr::select(Date, value, doubling_time) %>% unique, 284 | mapping = aes( 285 | Date, value, 286 | linetype = as.factor(doubling_time), group = doubling_time 287 | ), 288 | size = 1, 289 | alpha = 0.6 290 | ) + 291 | scale_y_continuous(labels = scales::comma) + 292 | ggtitle("Estimated number of indeathsy-axis scaling: linear 🡄 | 🡆 log10)") + ylab("") + xlab("") + 293 | theme_minimal() + 294 | guides(color = F, linetype = F) + 295 | geom_vline( 296 | aes(xintercept = lubridate::as_datetime(lubridate::today() - lubridate::days(17))) 297 | ) + 298 | geom_vline( 299 | aes(xintercept = lubridate::as_datetime(lubridate::today() - 1)), 300 | color = "blue" 301 | ) 302 | 303 | pest2b <- ggplot() + 304 | geom_line( 305 | data = est_multi %>% dplyr::filter(CountType == "CumNumberDead", value >= 1) %>% dplyr::select(Date, value) %>% unique, 306 | mapping = aes( 307 | Date, value, color = "Cumulative, confirmed deaths" 308 | ), 309 | size = 1 310 | ) + 311 | scale_color_manual(values = "red", guide = guide_legend(title = "", order = 2)) + 312 | geom_line( 313 | data = est_multi %>% dplyr::filter(CountType == "EstimationCumNumberDeadFuture", value >= 1) %>% dplyr::select(Date, value, doubling_time) %>% unique, 314 | mapping = aes( 315 | Date, value, 316 | linetype = as.factor(doubling_time), group = doubling_time 317 | ), 318 | size = 1, 319 | alpha = 0.6 320 | ) + 321 | scale_y_log10(labels = scales::comma) + 322 | ggtitle("") + ylab("") + xlab("") + 323 | theme_minimal() + 324 | guides(linetype = guide_legend(title = "Doubling time scenarios", keywidth = 5)) + 325 | geom_vline( 326 | aes(xintercept = lubridate::as_datetime(lubridate::today() - lubridate::days(17))) 327 | ) + 328 | geom_vline( 329 | aes(xintercept = lubridate::as_datetime(lubridate::today() - 1)), 330 | color = "blue" 331 | ) 332 | 333 | pest2 <- cowplot::plot_grid(pest2a, pest2b, align = "h", ncol = 2, rel_widths = c(1, 1.5)) 334 | cowplot::ggsave2("pest2.png", pest2, "png", "~/Desktop/covid19/", scale = 3, width = 10, height = 4, units = "cm") 335 | 336 | -------------------------------------------------------------------------------- /blog_post/bayesian_analysis_Stephan.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Bayesian estimation of COVID-19 epidemic" 3 | output: html_notebook 4 | --- 5 | 6 | Last update: April 2nd 2020 7 | 8 | # Theory 9 | 10 | We define as key quantity 11 | 12 | * $I_t$, the _true_ number of new infections at day $t$. 13 | 14 | The two key observed quantities are 15 | 16 | * $c_t$, the _reported_ number of new cases at day $t$, and 17 | * $d_t$, the reported number of new deaths at day $t$. 18 | 19 | We assume a growth model with slow-down of the form 20 | 21 | $$ 22 | I_t = I_0 \exp((\alpha_0 - \beta t) t) 23 | $$ 24 | with a starting number of infected people, $I_0$, and a dynamicaly decreasing growth rate $\alpha_0-\beta t$. 25 | 26 | We now consider the testing process, and the process by which people die of the desease as random processes with fixed probability. The probability that a person with an infection gets tested is $\gamma$, and the probability that an infected person dies is $\delta$. We need two more parameters for our sampling processes, which are $\tau_t$, the average time between infection and test, and $\tau_\delta$, the average time between infecton and death. We can then have the following binomial sampling probabilities: 27 | 28 | $$ 29 | \begin{split} 30 | c_t &\sim \text{Bin}(c_t; I_{t-\tau_t}, \gamma)\\ 31 | d_t &\sim \text{Bin}(d_t; I_{t-\tau_\delta}, \delta) 32 | \end{split} 33 | $$ 34 | 35 | In summary, the key parameters are, together with short descriptions and prior information: 36 | 37 | | Parameter | Description | Prior | 38 | |---------------|----------------------------------|---------------| 39 | | $I_0$ | Starting nr of infected people | $[0, \infty)$ | 40 | | $\alpha_0$ | Exp. starting growth rate | $[0, \infty)$ | 41 | | $\beta$ | Slow-down rate | $[0, \infty)$ | 42 | | $\gamma$ | Prob. to get tested | $[0,1]$ | 43 | 44 | 45 | In addition, we fix the following parameters: 46 | 47 | | Parameter | Description | Value | 48 | |---------------|----------------------------------|-----------| 49 | | $\tau_t$ | Time from infection to test | 7 | 50 | | $\tau_\delta$ | Time from infection to death | 17 | 51 | | $\delta$ | Death rate | 0.01 | 52 | 53 | 54 | Note that for technical reasons we introduce some upper bounds on the prior probabilities in practice, to constrain the parameter search space, but that has no influence on the estimates (because the posteriors are far away from these upper boundaries). 55 | 56 | So we can write down a likelihood of the data given the model simply as the product of all these binomial probabilities across all time points where possible. So: 57 | 58 | $$ 59 | \mathcal{L} = \prod_t \text{Bin}(c_t; I_{t-\tau_t}, \gamma) \prod_t\text{Bin}(d_t; I_{t-\tau_\delta}, \delta) 60 | $$ 61 | where the products run over all days for which we have know $c_t$ or $d_t$, respectively. 62 | 63 | This then allows us to compute posterior distributions of all parameters using Monte Carlo sampling, as for example implemented in the package [Stan](https://mc-stan.org/rstan/). 64 | 65 | # Analysis 66 | 67 | We first defined the model in [STAN](https://mc-stan.org) as follows: 68 | 69 | ```{stan model} 70 | functions { 71 | real growth_model(real I0, real alpha0, real beta, real t) { 72 | return I0 * exp((alpha0 - beta * t) * t); 73 | } 74 | } 75 | data { 76 | int N; 77 | real cases[N]; 78 | real deaths[N]; 79 | int day[N]; 80 | real tau_t; 81 | real tau_delta; 82 | real delta; 83 | } 84 | parameters { 85 | real gamma; 86 | real alpha0; 87 | real beta; 88 | real I0; 89 | } 90 | model { 91 | for(i in 1:N) { 92 | real nc = growth_model(I0, alpha0, beta, day[i] - tau_t); 93 | cases[i] ~ normal(nc * gamma, nc * gamma * (1 - gamma)); 94 | real nd = growth_model(I0, alpha0, beta, day[i] - tau_delta); 95 | deaths[i] ~ normal(nd * delta, nd * delta * (1 - delta)); 96 | } 97 | } 98 | ``` 99 | 100 | and compiled it with [CmdStan](https://mc-stan.org/users/interfaces/cmdstan). To prepare the input parameters, we first need to determine a valid time range for our analysis during which we can assume exponential growth: 101 | 102 | ```{r plotting rates, message=FALSE, warning=FALSE} 103 | library(magrittr) 104 | library(ggplot2) 105 | 106 | dat <- covid19germany::get_RKI_timeseries() %>% covid19germany::group_RKI_timeseries() 107 | dat %>% 108 | dplyr::select(Date, NumberNewTestedIll, NumberNewDead) %>% 109 | tidyr::pivot_longer(c(NumberNewTestedIll, NumberNewDead), names_to="type", values_to = "Count") %>% 110 | ggplot() + geom_point(mapping = aes(x = Date, y = Count, col=type)) + scale_y_log10() 111 | ``` 112 | 113 | This reveals a lag of about 10 days between the onset of exponential growth between test cases and deaths. With around 17 days from infection to death (see [this post](https://medium.com/@tomaspueyo/coronavirus-act-today-or-people-will-die-f4d3d9cd99ca)), this yields an average time of 7 days between infection and reported test case, justifying our choice for $\tau_t=7$. 114 | 115 | We then prepared the input for the model: 116 | 117 | ```{r input data and params} 118 | selected_dat <- dplyr::filter(dat, 119 | Date >= as.POSIXct("2020-02-23") & 120 | Date <= as.POSIXct("2020-03-31")) 121 | 122 | day <- as.numeric(difftime(selected_dat$Date, as.Date("2020-02-23"), units="days")) 123 | cases <- selected_dat$NumberNewTestedIll 124 | deaths <- selected_dat$NumberNewDead 125 | N <- length(cases) 126 | tau_t <- 7 127 | tau_delta <- 17 128 | delta <- 0.01 129 | alpha0 <- 0.1 130 | beta <- 0.1 131 | I0 <- 10 132 | gamma <- 0.5 133 | 134 | dump(c("day", "cases", "deaths", "N", "tau_t", "tau_delta", "delta"), file="covid19_model.data.R") 135 | dump(c("alpha0", "beta", "I0", "gamma"), file="covid19_model.init.R") 136 | ``` 137 | 138 | We then ran the model and sampled from the posterior using 139 | ```{bash} 140 | # The stan model was compiled to ./covid19_model 141 | ./covid19_model sample data file=covid19_model.data.R init=covid19_model.init.R output file=sampling.csv 142 | ``` 143 | 144 | We load the posterior as a table: 145 | ```{r loading, message=FALSE} 146 | stan_output <- readr::read_csv("sampling.csv", comment = "#") 147 | ``` 148 | 149 | Let's first just look at marginal summary statistics for each parameter 150 | ```{r stan summary} 151 | stan_output %>% 152 | tidyr::pivot_longer(c('I0', 'alpha0', 'beta', 'gamma'), 153 | names_to = "param", 154 | values_to = "value") %>% 155 | dplyr::group_by(param) %>% 156 | dplyr::summarise(perc5 = quantile(value, 0.05), 157 | perc50_median = median(value), 158 | perc95 = quantile(value, 0.95)) 159 | ``` 160 | 161 | Here are correlations between these posteriors: 162 | ```{r message=FALSE} 163 | stan_output %>% 164 | dplyr::select(I0, alpha0, beta, gamma) %>% 165 | GGally::ggpairs() 166 | ``` 167 | 168 | This is all reasonable and more or less expected given the model set up. For example, the correlation between $\alpha_0$ and $\beta$ is expected (you can afford to have steeper growth in the beginning if you have a stronger slow-down). 169 | 170 | ## Visualising the model 171 | 172 | OK, here are the model predictions 173 | 174 | So we can use the many samples from our posterior to check some predictions. First, we prepare the model predictions in a new table `plot_curves`: 175 | 176 | ```{r plot_curves} 177 | growth_func <- function(I0, alpha0, beta, t) { 178 | return(I0 * exp(t * (alpha0 - beta * t))) 179 | } 180 | 181 | day_tbl <- tibble::tibble(days = 0:60) %>% 182 | dplyr::mutate(date = as.POSIXct("2020-02-23") + lubridate::days(days)) 183 | plot_curves <- stan_output %>% 184 | dplyr::select(alpha0, gamma, beta, I0) %>% 185 | dplyr::mutate(id=1:nrow(stan_output)) %>% 186 | tidyr::expand_grid(day_tbl) %>% 187 | dplyr::mutate(true_cases = growth_func(I0, alpha0, beta, days), 188 | predicted_testcases = gamma * growth_func(I0, alpha0, beta, days - 7), 189 | predicted_deaths = 0.01 * growth_func(I0, alpha0, beta, days - 17)) %>% 190 | dplyr::group_by(id) %>% 191 | dplyr::mutate(cum_true_cases = cumsum(true_cases), 192 | cum_predicted_testcases = cumsum(predicted_testcases), 193 | cum_predicted_deaths = cumsum(predicted_deaths)) %>% 194 | dplyr::ungroup() 195 | ``` 196 | 197 | We can then plot the posteriors as a function of time together with the data: 198 | 199 | ```{r model posteriors over time} 200 | plot_curves %>% 201 | dplyr::group_by(date) %>% 202 | dplyr::summarise( 203 | true_cases_5 = quantile(true_cases, 0.05), 204 | true_cases_95 = quantile(true_cases, 0.95), 205 | predicted_testcases_5 = quantile(predicted_testcases, 0.05), 206 | predicted_testcases_95 = quantile(predicted_testcases, 0.95), 207 | predicted_deaths_5 = quantile(predicted_deaths, 0.05), 208 | predicted_deaths_95 = quantile(predicted_deaths, 0.95) 209 | ) %>% 210 | ggplot() + 211 | geom_ribbon(mapping = aes(x = date, ymin = true_cases_5, ymax=true_cases_95), 212 | fill = "dark green", alpha = 0.5) + 213 | geom_ribbon(mapping = aes(x = date, ymin = predicted_testcases_5, ymax=predicted_testcases_95), 214 | fill = "blue", alpha = 0.5) + 215 | geom_ribbon(mapping = aes(x = date, ymin = predicted_deaths_5, ymax=predicted_deaths_95), 216 | fill = "red", alpha = 0.5) + 217 | geom_point(dat, mapping = aes(x = Date, y = NumberNewTestedIll), 218 | col = "blue") + 219 | geom_point(dplyr::filter(dat, NumberNewDead > 0), mapping = aes(x = Date, y = NumberNewDead), col = "red") + 220 | scale_y_log10(labels = function(x) format(x, big.mark = ",", scientific = FALSE), 221 | breaks = c(1, 10, 100, 1000, 10000, 100000), 222 | limits = c(1, 1e5)) + 223 | theme_minimal() + 224 | ggtitle("Bayesian model predictions") + 225 | theme(axis.title.x=element_blank(), 226 | axis.title.y=element_blank()) + 227 | annotate("text", x = as.POSIXct("2020-03-5"), y = 5e4, label = "true infections\n(given 1% fatality rate)", col="dark green") + 228 | annotate("text", x = as.POSIXct("2020-03-25"), y = 1e3, label = "tested positive", col="blue") + 229 | annotate("text", x = as.POSIXct("2020-03-25"), y = 10, label = "deaths", col="red") 230 | ``` 231 | 232 | ```{r cumulative model posteriors over time} 233 | plot_curves %>% 234 | dplyr::group_by(date) %>% 235 | dplyr::summarise( 236 | cum_true_cases_5 = quantile(cum_true_cases, 0.05), 237 | cum_true_cases_95 = quantile(cum_true_cases, 0.95), 238 | cum_predicted_testcases_5 = quantile(cum_predicted_testcases, 0.05), 239 | cum_predicted_testcases_95 = quantile(cum_predicted_testcases, 0.95), 240 | cum_predicted_deaths_5 = quantile(cum_predicted_deaths, 0.05), 241 | cum_predicted_deaths_95 = quantile(cum_predicted_deaths, 0.95) 242 | ) %>% 243 | ggplot() + 244 | geom_ribbon(mapping = aes(x = date, ymin = cum_true_cases_5, ymax=cum_true_cases_95), 245 | fill = "dark green", alpha = 0.5) + 246 | geom_ribbon(mapping = aes(x = date, ymin = cum_predicted_testcases_5, ymax=cum_predicted_testcases_95), 247 | fill = "blue", alpha = 0.5) + 248 | geom_ribbon(mapping = aes(x = date, ymin = cum_predicted_deaths_5, ymax=cum_predicted_deaths_95), 249 | fill = "red", alpha = 0.5) + 250 | geom_point(dat, mapping = aes(x = Date, y = CumNumberTestedIll), 251 | col = "blue") + 252 | geom_point(dplyr::filter(dat, CumNumberDead > 0), mapping = aes(x = Date, y = CumNumberDead), col = "red") + 253 | scale_y_log10(labels = function(x) format(x, big.mark = ",", scientific = FALSE), 254 | breaks = c(1, 10, 100, 1000, 10000, 100000, 1000000), 255 | limits = c(1, 1e7)) + 256 | theme_minimal() + 257 | ggtitle("Bayesian model predictions") + 258 | theme(axis.title.x=element_blank(), 259 | axis.title.y=element_blank()) + 260 | annotate("text", x = as.POSIXct("2020-03-10"), y = 1e6, label = "true infections\n(given 1% fatality rate)", col="dark green") + 261 | annotate("text", x = as.POSIXct("2020-03-20"), y = 2e3, label = "tested positive", col="blue") + 262 | annotate("text", x = as.POSIXct("2020-03-20"), y = 20, label = "deaths", col="red") 263 | ``` 264 | 265 | ```{r save fig1} 266 | ggsave("model_predictions.png", width = 8, height = 5) 267 | ``` 268 | 269 | We can convert the growth rate into a doubling time and plot that as well: 270 | 271 | ```{r doubling time} 272 | doubling_time <- function(alpha0, beta, t) { 273 | return (log(2) / (alpha0 - beta * t)) 274 | } 275 | 276 | day_tbl <- tibble::tibble(days = 0:45) %>% 277 | dplyr::mutate(date = as.POSIXct("2020-02-23") + lubridate::days(days)) 278 | dt_curves <- stan_output %>% 279 | dplyr::select(alpha0, beta) %>% 280 | dplyr::mutate(id=1:nrow(stan_output)) %>% 281 | tidyr::expand_grid(day_tbl) %>% 282 | dplyr::mutate(dt = doubling_time(alpha0, beta, days)) 283 | 284 | dt_curves %>% 285 | dplyr::group_by(date) %>% 286 | dplyr::summarise(dt5 = quantile(dt, 0.05), dt50 = quantile(dt, 0.5), dt95 = quantile(dt, 0.95)) %>% 287 | ggplot() + 288 | geom_ribbon(mapping = aes(x = date, ymin = dt5, ymax=dt95), alpha=0.5) + 289 | geom_line(mapping = aes(x = date, y = dt50)) + 290 | theme_minimal() + 291 | ggtitle("Modelling of doubling time (in days)") + 292 | theme(axis.title.x=element_blank(), 293 | axis.title.y=element_blank()) + 294 | geom_vline(xintercept = as.POSIXct("2020-04-01")) 295 | ``` 296 | 297 | ```{r save fig2} 298 | ggsave("doubling_time.png", width=8, height=5) 299 | ``` 300 | 301 | 302 | -------------------------------------------------------------------------------- /data-raw/EW_Kreise.csv: -------------------------------------------------------------------------------- 1 | IdLandkreis;NameLandkreis;NUTS3;FlaecheKm2;EwGesamt;EwMaennlich;EwWeiblich;EwProKm2 2 | 1001;Flensburg, Stadt;DEF01;56.73;89504;44599;44905;1578 3 | 1002;Kiel, Landeshauptstadt;DEF02;118.65;247548;120566;126982;2086 4 | 1003;Lübeck, Hansestadt;DEF03;214.19;217198;104371;112827;1014 5 | 1004;Neumünster, Stadt;DEF04;71.66;79487;39241;40246;1109 6 | 1051;Dithmarschen;DEF05;1428.17;133210;65720;67490;93 7 | 1053;Herzogtum Lauenburg;DEF06;1263.07;197264;96881;100383;156 8 | 1054;Nordfriesland;DEF07;2083.55;165507;81099;84408;79 9 | 1055;Ostholstein;DEF08;1393.02;200581;96765;103816;144 10 | 1056;Pinneberg;DEF09;664.25;314391;154211;160180;473 11 | 1057;Plön;DEF0A;1083.56;128647;62532;66115;119 12 | 1058;Rendsburg-Eckernförde;DEF0B;2189.79;272775;134109;138666;125 13 | 1059;Schleswig-Flensburg;DEF0C;2071.28;200025;99092;100933;97 14 | 1060;Segeberg;DEF0D;1344.47;276032;136517;139515;205 15 | 1061;Steinburg;DEF0E;1055.7;131347;64923;66424;124 16 | 1062;Stormarn;DEF0F;766.21;243196;118831;124365;317 17 | 2000;Hamburg;DE600;755.09;1841179;902048;939131;2438 18 | 4011;Bremen, Stadt;DE501;317.83;569352;281336;288016;1791 19 | 4012;Bremerhaven, Stadt;DE502;101.53;113634;56699;56935;1119 20 | 3101;Braunschweig, Stadt;DE911;192.7;248292;122985;125307;1288 21 | 3102;Salzgitter, Stadt;DE912;224.49;104948;52202;52746;467 22 | 3103;Wolfsburg, Stadt;DE913;204.61;124151;61820;62331;607 23 | 3151;Gifhorn;DE914;1567.45;175920;88035;87885;112 24 | 3153;Goslar;DE916;966.72;137014;67834;69180;142 25 | 3154;Helmstedt;DE917;676.15;91307;45241;46066;135 26 | 3155;Northeim;DE918;1268.76;132765;65445;67320;105 27 | 3157;Peine;DE91A;536.5;133965;66286;67679;250 28 | 3158;Wolfenbüttel;DE91B;724.3;119960;59370;60590;166 29 | 3159;Göttingen;DE91C;1755.41;328074;161187;166887;187 30 | 3241;Region Hannover;DE929;2297.13;1157624;567201;590423;504 31 | 3251;Diepholz;DE922;1991.01;216886;107853;109033;109 32 | 3252;Hameln-Pyrmont;DE923;797.54;148559;71840;76719;186 33 | 3254;Hildesheim;DE925;1208.33;276594;134912;141682;229 34 | 3255;Holzminden;DE926;694.27;70975;35187;35788;102 35 | 3256;Nienburg (Weser);DE927;1400.82;121386;60400;60986;87 36 | 3257;Schaumburg;DE928;675.65;157781;77174;80607;234 37 | 3351;Celle;DE931;1550.82;178936;88054;90882;115 38 | 3352;Cuxhaven;DE932;2058.96;198213;97044;101169;96 39 | 3353;Harburg;DE933;1248.45;252776;124502;128274;202 40 | 3354;Lüchow-Dannenberg;DE934;1227.16;48424;23839;24585;39 41 | 3355;Lüneburg;DE935;1327.8;183372;89543;93829;138 42 | 3356;Osterholz;DE936;652.67;113517;55765;57752;174 43 | 3357;Rotenburg (Wümme);DE937;2074.78;163455;82132;81323;79 44 | 3358;Heidekreis;DE938;1881.45;139755;69757;69998;74 45 | 3359;Stade;DE939;1267.38;203102;101043;102059;160 46 | 3360;Uelzen;DE93A;1462.59;92572;45241;47331;63 47 | 3361;Verden;DE93B;789.33;136792;67166;69626;173 48 | 3401;Delmenhorst, Stadt;DE941;62.45;77607;38437;39170;1243 49 | 3402;Emden, Stadt;DE942;112.34;50195;25084;25111;447 50 | 3403;Oldenburg (Oldenburg), Stadt;DE943;103.09;168210;80501;87709;1632 51 | 3404;Osnabrück, Stadt;DE944;119.8;164748;79756;84992;1375 52 | 3405;Wilhelmshaven, Stadt;DE945;107.07;76278;37596;38682;712 53 | 3451;Ammerland;DE946;730.64;124071;60658;63413;170 54 | 3452;Aurich;DE947;1287.35;189848;93555;96293;147 55 | 3453;Cloppenburg;DE948;1420.35;169348;85707;83641;119 56 | 3454;Emsland;DE949;2883.66;325657;165784;159873;113 57 | 3455;Friesland;DE94A;609.53;98460;48064;50396;162 58 | 3456;Grafschaft Bentheim;DE94B;981.79;136511;68305;68206;139 59 | 3457;Leer;DE94C;1085.72;169809;84810;84999;156 60 | 3458;Oldenburg;DE94D;1064.84;130144;64574;65570;122 61 | 3459;Osnabrück;DE94E;2121.81;357343;177430;179913;168 62 | 3460;Vechta;DE94F;814.2;141598;71595;70003;174 63 | 3461;Wesermarsch;DE94G;824.78;88624;44410;44214;107 64 | 3462;Wittmund;DE94H;656.86;56882;27919;28963;87 65 | 5111;Düsseldorf, Stadt;DEA11;217.41;619294;299315;319979;2849 66 | 5112;Duisburg, Stadt;DEA12;232.8;498590;246588;252002;2142 67 | 5113;Essen, Stadt;DEA13;210.34;583109;283005;300104;2772 68 | 5114;Krefeld, Stadt;DEA14;137.77;227020;110745;116275;1648 69 | 5116;Mönchengladbach, Stadt;DEA15;170.47;261454;128655;132799;1534 70 | 5117;Mülheim an der Ruhr, Stadt;DEA16;91.28;170880;82387;88493;1872 71 | 5119;Oberhausen, Stadt;DEA17;77.09;210829;103612;107217;2735 72 | 5120;Remscheid, Stadt;DEA18;74.52;110994;54664;56330;1489 73 | 5122;Solingen, Klingenstadt;DEA19;89.54;159360;77471;81889;1780 74 | 5124;Wuppertal, Stadt;DEA1A;168.39;354382;173687;180695;2105 75 | 5154;Kleve;DEA1B;1232.99;310974;154628;156346;252 76 | 5158;Mettmann;DEA1C;407.22;485684;234705;250979;1193 77 | 5162;Rhein-Kreis Neuss;DEA1D;576.28;451007;219214;231793;783 78 | 5166;Viersen;DEA1E;563.28;298935;145913;153022;531 79 | 5170;Wesel;DEA1F;1042.8;459809;224137;235672;441 80 | 5314;Bonn, Stadt;DEA22;141.06;327258;156328;170930;2320 81 | 5315;Köln, Stadt;DEA23;405.01;1085664;529368;556296;2681 82 | 5316;Leverkusen, Stadt;DEA24;78.87;163838;79787;84051;2077 83 | 5334;Städteregion Aachen;DEA2D;706.91;555465;280162;275303;786 84 | 5358;Düren;DEA26;941.49;263722;130761;132961;280 85 | 5362;Rhein-Erft-Kreis;DEA27;704.71;470089;230062;240027;667 86 | 5366;Euskirchen;DEA28;1248.73;192840;95124;97716;154 87 | 5370;Heinsberg;DEA29;627.91;254322;125849;128473;405 88 | 5374;Oberbergischer Kreis;DEA2A;918.85;272471;134069;138402;297 89 | 5378;Rheinisch-Bergischer Kreis;DEA2B;437.32;283455;137572;145883;648 90 | 5382;Rhein-Sieg-Kreis;DEA2C;1153.2;599780;294093;305687;520 91 | 5512;Bottrop, Stadt;DEA31;100.61;117383;57101;60282;1167 92 | 5513;Gelsenkirchen, Stadt;DEA32;104.94;260654;129778;130876;2484 93 | 5515;Münster, Stadt;DEA33;303.28;314319;150836;163483;1036 94 | 5554;Borken;DEA34;1420.98;370676;185195;185481;261 95 | 5558;Coesfeld;DEA35;1112.05;219929;108564;111365;198 96 | 5562;Recklinghausen;DEA36;761.31;615261;300019;315242;808 97 | 5566;Steinfurt;DEA37;1795.76;447614;222633;224981;249 98 | 5570;Warendorf;DEA38;1319.42;277783;137298;140485;211 99 | 5711;Bielefeld, Stadt;DEA41;258.83;333786;161078;172708;1290 100 | 5754;Gütersloh;DEA42;969.21;364083;181844;182239;376 101 | 5758;Herford;DEA43;450.41;250783;122959;127824;557 102 | 5762;Höxter;DEA44;1201.42;140667;70059;70608;117 103 | 5766;Lippe;DEA45;1246.22;348391;170965;177426;280 104 | 5770;Minden-Lübbecke;DEA46;1152.41;310710;153305;157405;270 105 | 5774;Paderborn;DEA47;1246.8;306890;153622;153268;246 106 | 5911;Bochum, Stadt;DEA51;145.66;364628;177699;186929;2503 107 | 5913;Dortmund, Stadt;DEA52;280.71;587010;288386;298624;2091 108 | 5914;Hagen, Stadt der FernUniversität;DEA53;160.45;188814;92168;96646;1177 109 | 5915;Hamm, Stadt;DEA54;226.43;179111;88024;91087;791 110 | 5916;Herne, Stadt;DEA55;51.42;156374;76649;79725;3041 111 | 5954;Ennepe-Ruhr-Kreis;DEA56;409.64;324296;157490;166806;792 112 | 5958;Hochsauerlandkreis;DEA57;1960.17;260475;129947;130528;133 113 | 5962;Märkischer Kreis;DEA58;1061.06;412120;202817;209303;388 114 | 5966;Olpe;DEA59;712.14;134775;67610;67165;189 115 | 5970;Siegen-Wittgenstein;DEA5A;1132.89;278210;138358;139852;246 116 | 5974;Soest;DEA5B;1328.64;301902;150022;151880;227 117 | 5978;Unna;DEA5C;543.21;394782;192304;202478;727 118 | 6411;Darmstadt, Wissenschaftsstadt;DE711;122.07;159207;81217;77990;1304 119 | 6412;Frankfurt am Main, Stadt;DE712;248.31;753056;371671;381385;3033 120 | 6413;Offenbach am Main, Stadt;DE713;44.88;128744;63699;65045;2869 121 | 6414;Wiesbaden, Landeshauptstadt;DE714;203.87;278342;132943;145399;1365 122 | 6431;Bergstraße;DE715;719.47;269694;133318;136376;375 123 | 6432;Darmstadt-Dieburg;DE716;658.64;297399;147786;149613;452 124 | 6433;Groß-Gerau;DE717;453.03;274526;137325;137201;606 125 | 6434;Hochtaunuskreis;DE718;481.84;236564;114878;121686;491 126 | 6435;Main-Kinzig-Kreis;DE719;1397.32;418950;206555;212395;300 127 | 6436;Main-Taunus-Kreis;DE71A;222.53;237735;116332;121403;1068 128 | 6437;Odenwaldkreis;DE71B;623.97;96798;47875;48923;155 129 | 6438;Offenbach;DE71C;356.24;354092;174417;179675;994 130 | 6439;Rheingau-Taunus-Kreis;DE71D;811.41;187157;91962;95195;231 131 | 6440;Wetteraukreis;DE71E;1100.66;306460;151276;155184;278 132 | 6531;Gießen;DE721;854.56;268876;132135;136741;315 133 | 6532;Lahn-Dill-Kreis;DE722;1066.3;253777;125090;128687;238 134 | 6533;Limburg-Weilburg;DE723;738.44;172083;85571;86512;233 135 | 6534;Marburg-Biedenkopf;DE724;1262.37;246648;121414;125234;195 136 | 6535;Vogelsbergkreis;DE725;1458.91;105878;52992;52886;73 137 | 6611;Kassel, documenta-Stadt;DE731;106.8;201585;99007;102578;1888 138 | 6631;Fulda;DE732;1380.41;222584;110592;111992;161 139 | 6632;Hersfeld-Rotenburg;DE733;1097.75;120829;60523;60306;110 140 | 6633;Kassel;DE734;1293.35;236633;116122;120511;183 141 | 6634;Schwalm-Eder-Kreis;DE735;1539.01;180222;90181;90041;117 142 | 6635;Waldeck-Frankenberg;DE736;1848.7;156953;78198;78755;85 143 | 6636;Werra-Meißner-Kreis;DE737;1024.83;101017;49965;51052;99 144 | 7111;Koblenz, kreisfreie Stadt;DEB11;105.25;114024;55628;58396;1083 145 | 7131;Ahrweiler;DEB12;787.02;129727;63755;65972;165 146 | 7132;Altenkirchen (Westerwald);DEB13;642.38;128705;63859;64846;200 147 | 7133;Bad Kreuznach;DEB14;863.89;158080;77185;80895;183 148 | 7134;Birkenfeld;DEB15;776.83;80720;40021;40699;104 149 | 7135;Cochem-Zell;DEB1C;692.43;61587;30841;30746;89 150 | 7137;Mayen-Koblenz;DEB17;817.73;214259;105746;108513;262 151 | 7138;Neuwied;DEB18;627.06;181941;89488;92453;290 152 | 7140;Rhein-Hunsrück-Kreis;DEB1D;991.06;102937;51206;51731;104 153 | 7141;Rhein-Lahn-Kreis;DEB1A;782.24;122308;60525;61783;156 154 | 7143;Westerwaldkreis;DEB1B;989.04;201597;100218;101379;204 155 | 7211;Trier, kreisfreie Stadt;DEB21;117.06;110636;54444;56192;945 156 | 7231;Bernkastel-Wittlich;DEB22;1167.92;112262;56124;56138;96 157 | 7232;Eifelkreis Bitburg-Prüm;DEB23;1626.95;98561;49576;48985;61 158 | 7233;Vulkaneifel;DEB24;911.64;60603;30427;30176;66 159 | 7235;Trier-Saarburg;DEB25;1102.26;148945;73673;75272;135 160 | 7311;Frankenthal (Pfalz), kreisfreie Stadt;DEB31;43.88;48561;23489;25072;1107 161 | 7312;Kaiserslautern, kreisfreie Stadt;DEB32;139.7;99845;50353;49492;715 162 | 7313;Landau in der Pfalz, kreisfreie Stadt;DEB33;82.94;46677;22078;24599;563 163 | 7314;Ludwigshafen am Rhein, kreisfreie Stadt;DEB34;77.43;171061;85820;85241;2209 164 | 7315;Mainz, kreisfreie Stadt;DEB35;97.73;217118;105599;111519;2222 165 | 7316;Neustadt an der Weinstraße, kreisfreie Stadt;DEB36;117.09;53148;25955;27193;454 166 | 7317;Pirmasens, kreisfreie Stadt;DEB37;61.36;40403;19780;20623;658 167 | 7318;Speyer, kreisfreie Stadt;DEB38;42.71;50378;24363;26015;1180 168 | 7319;Worms, kreisfreie Stadt;DEB39;108.73;83330;41080;42250;766 169 | 7320;Zweibrücken, kreisfreie Stadt;DEB3A;70.64;34209;16954;17255;484 170 | 7331;Alzey-Worms;DEB3B;588.07;129244;64389;64855;220 171 | 7332;Bad Dürkheim;DEB3C;594.64;132660;64838;67822;223 172 | 7333;Donnersbergkreis;DEB3D;645.41;75101;37194;37907;116 173 | 7334;Germersheim;DEB3E;463.32;129075;64379;64696;279 174 | 7335;Kaiserslautern;DEB3F;640;106057;52135;53922;166 175 | 7336;Kusel;DEB3G;573.61;70526;35052;35474;123 176 | 7337;Südliche Weinstraße;DEB3H;639.93;110356;54441;55915;172 177 | 7338;Rhein-Pfalz-Kreis;DEB3I;304.99;154201;76030;78171;506 178 | 7339;Mainz-Bingen;DEB3J;605.36;210889;104015;106874;348 179 | 7340;Südwestpfalz;DEB3K;953.52;95113;46916;48197;100 180 | 8111;Stuttgart, Stadtkreis;DE111;207.33;634830;317139;317691;3062 181 | 8115;Böblingen;DE112;617.76;391640;194989;196651;634 182 | 8116;Esslingen;DE113;641.28;533859;266783;267076;832 183 | 8117;Göppingen;DE114;642.34;257253;128093;129160;400 184 | 8118;Ludwigsburg;DE115;686.77;543984;269961;274023;792 185 | 8119;Rems-Murr-Kreis;DE116;858.08;426158;210861;215297;497 186 | 8121;Heilbronn, Stadtkreis;DE117;99.89;125960;63527;62433;1261 187 | 8125;Heilbronn;DE118;1099.91;343068;172382;170686;312 188 | 8126;Hohenlohekreis;DE119;776.76;112010;56550;55460;144 189 | 8127;Schwäbisch Hall;DE11A;1484.07;195861;98314;97547;132 190 | 8128;Main-Tauber-Kreis;DE11B;1304.12;132321;65923;66398;101 191 | 8135;Heidenheim;DE11C;627.13;132472;66092;66380;211 192 | 8136;Ostalbkreis;DE11D;1511.39;314002;156480;157522;208 193 | 8211;Baden-Baden, Stadtkreis;DE121;140.19;55123;26442;28681;393 194 | 8212;Karlsruhe, Stadtkreis;DE122;173.42;313092;160429;152663;1805 195 | 8215;Karlsruhe;DE123;1085.29;444232;221339;222893;409 196 | 8216;Rastatt;DE124;738.43;231018;114797;116221;313 197 | 8221;Heidelberg, Stadtkreis;DE125;108.83;160355;77112;83243;1473 198 | 8222;Mannheim, Stadtkreis;DE126;144.97;309370;154273;155097;2134 199 | 8225;Neckar-Odenwald-Kreis;DE127;1125.95;143535;72057;71478;127 200 | 8226;Rhein-Neckar-Kreis;DE128;1061.55;547625;269317;278308;516 201 | 8231;Pforzheim, Stadtkreis;DE129;97.99;125542;61699;63843;1281 202 | 8235;Calw;DE12A;797.29;158397;79514;78883;199 203 | 8236;Enzkreis;DE12B;573.6;198905;98744;100161;347 204 | 8237;Freudenstadt;DE12C;870.4;117935;58898;59037;135 205 | 8311;Freiburg im Breisgau, Stadtkreis;DE131;153.04;230241;109829;120412;1504 206 | 8315;Breisgau-Hochschwarzwald;DE132;1378.32;262795;129641;133154;191 207 | 8316;Emmendingen;DE133;679.8;165383;81772;83611;243 208 | 8317;Ortenaukreis;DE134;1860.29;429479;214221;215258;231 209 | 8325;Rottweil;DE135;769.42;139455;69767;69688;181 210 | 8326;Schwarzwald-Baar-Kreis;DE136;1025.34;212381;105542;106839;207 211 | 8327;Tuttlingen;DE137;734.38;140152;70452;69700;191 212 | 8335;Konstanz;DE138;817.98;285325;139046;146279;349 213 | 8336;Lörrach;DE139;806.72;228639;111981;116658;283 214 | 8337;Waldshut;DE13A;1131.14;170619;84587;86032;151 215 | 8415;Reutlingen;DE141;1092.48;286748;142232;144516;262 216 | 8416;Tübingen;DE142;519.11;227331;110795;116536;438 217 | 8417;Zollernalbkreis;DE143;917.58;188935;93808;95127;206 218 | 8421;Ulm, Stadtkreis;DE144;118.68;126329;62660;63669;1064 219 | 8425;Alb-Donau-Kreis;DE145;1358.55;196047;99041;97006;144 220 | 8426;Biberach;DE146;1409.52;199742;100634;99108;142 221 | 8435;Bodenseekreis;DE147;664.8;216227;106544;109683;325 222 | 8436;Ravensburg;DE148;1632.08;284285;141777;142508;174 223 | 8437;Sigmaringen;DE149;1204.23;130873;65649;65224;109 224 | 9161;Ingolstadt;DE211;133.35;136981;69252;67729;1027 225 | 9162;München, Landeshauptstadt;DE212;310.7;1471508;717308;754200;4736 226 | 9163;Rosenheim;DE213;37.22;63324;31321;32003;1701 227 | 9171;Altötting;DE214;569.28;111210;54942;56268;195 228 | 9172;Berchtesgadener Land;DE215;839.82;105722;52007;53715;126 229 | 9173;Bad Tölz-Wolfratshausen;DE216;1110.66;127227;62731;64496;115 230 | 9174;Dachau;DE217;579.16;153884;77120;76764;266 231 | 9175;Ebersberg;DE218;549.39;142142;70972;71170;259 232 | 9176;Eichstätt;DE219;1213.85;132341;67325;65016;109 233 | 9177;Erding;DE21A;870.74;137660;69367;68293;158 234 | 9178;Freising;DE21B;799.85;179116;91393;87723;224 235 | 9179;Fürstenfeldbruck;DE21C;434.8;219320;107686;111634;504 236 | 9180;Garmisch-Partenkirchen;DE21D;1012.17;88467;42969;45498;87 237 | 9181;Landsberg am Lech;DE21E;804.36;120071;60077;59994;149 238 | 9182;Miesbach;DE21F;866.22;99726;48870;50856;115 239 | 9183;Mühldorf a.Inn;DE21G;805.33;115250;58360;56890;143 240 | 9184;München;DE21H;664.25;348871;173601;175270;525 241 | 9185;Neuburg-Schrobenhausen;DE21I;739.71;96680;48679;48001;131 242 | 9186;Pfaffenhofen a.d.Ilm;DE21J;761.05;127151;64639;62512;167 243 | 9187;Rosenheim;DE21K;1439.44;260983;129253;131730;181 244 | 9188;Starnberg;DE21L;487.72;136092;66020;70072;279 245 | 9189;Traunstein;DE21M;1533.76;177089;87564;89525;115 246 | 9190;Weilheim-Schongau;DE21N;966.28;135348;67321;68027;140 247 | 9261;Landshut;DE221;65.83;72404;35403;37001;1100 248 | 9262;Passau;DE222;69.56;52469;25344;27125;754 249 | 9263;Straubing;DE223;67.59;47794;24117;23677;707 250 | 9271;Deggendorf;DE224;861.17;119326;59547;59779;139 251 | 9272;Freyung-Grafenau;DE225;983.85;78355;39103;39252;80 252 | 9273;Kelheim;DE226;1065.13;122258;62137;60121;115 253 | 9274;Landshut;DE227;1347.56;158698;80519;78179;118 254 | 9275;Passau;DE228;1530.09;192043;95471;96572;126 255 | 9276;Regen;DE229;974.78;77656;38745;38911;80 256 | 9277;Rottal-Inn;DE22A;1281.2;120659;60346;60313;94 257 | 9278;Straubing-Bogen;DE22B;1201.61;100649;50627;50022;84 258 | 9279;Dingolfing-Landau;DE22C;877.58;96217;49450;46767;110 259 | 9361;Amberg;DE231;50.13;41970;20673;21297;837 260 | 9362;Regensburg;DE232;80.86;152610;74225;78385;1887 261 | 9363;Weiden i.d.OPf.;DE233;70.57;42520;20542;21978;603 262 | 9371;Amberg-Sulzbach;DE234;1255.86;103109;51665;51444;82 263 | 9372;Cham;DE235;1526.82;127882;64248;63634;84 264 | 9373;Neumarkt i.d.OPf.;DE236;1343.96;133561;67499;66062;99 265 | 9374;Neustadt a.d.Waldnaab;DE237;1427.69;94352;46943;47409;66 266 | 9375;Regensburg;DE238;1391.65;193572;97081;96491;139 267 | 9376;Schwandorf;DE239;1458.34;147189;73964;73225;101 268 | 9377;Tirschenreuth;DE23A;1084.25;72504;36121;36383;67 269 | 9461;Bamberg;DE241;54.62;77592;37464;40128;1421 270 | 9462;Bayreuth;DE242;66.89;74657;36469;38188;1116 271 | 9463;Coburg;DE243;48.29;41249;20162;21087;854 272 | 9464;Hof;DE244;58.02;45930;22098;23832;792 273 | 9471;Bamberg;DE245;1167.79;147086;73725;73361;126 274 | 9472;Bayreuth;DE246;1273.62;103656;51310;52346;81 275 | 9473;Coburg;DE247;590.42;86906;42912;43994;147 276 | 9474;Forchheim;DE248;642.82;116099;57703;58396;181 277 | 9475;Hof;DE249;892.52;95311;46646;48665;107 278 | 9476;Kronach;DE24A;651.49;67135;33184;33951;103 279 | 9477;Kulmbach;DE24B;658.33;71845;35345;36500;109 280 | 9478;Lichtenfels;DE24C;519.94;66838;33027;33811;129 281 | 9479;Wunsiedel i.Fichtelgebirge;DE24D;606.37;73178;35718;37460;121 282 | 9561;Ansbach;DE251;99.91;41847;20048;21799;419 283 | 9562;Erlangen;DE252;76.96;111962;55864;56098;1455 284 | 9563;Fürth;DE253;63.35;127748;62603;65145;2017 285 | 9564;Nürnberg;DE254;186.45;518365;252807;265558;2780 286 | 9565;Schwabach;DE255;40.8;40792;19895;20897;1000 287 | 9571;Ansbach;DE256;1971.33;183949;92450;91499;93 288 | 9572;Erlangen-Höchstadt;DE257;564.56;136271;67763;68508;241 289 | 9573;Fürth;DE258;307.44;117387;57064;60323;382 290 | 9574;Nürnberger Land;DE259;799.51;170365;83946;86419;213 291 | 9575;Neustadt a.d.Aisch-Bad Windsheim;DE25A;1267.44;100364;50331;50033;79 292 | 9576;Roth;DE25B;895.16;126958;63206;63752;142 293 | 9577;Weißenburg-Gunzenhausen;DE25C;970.78;94393;47093;47300;97 294 | 9661;Aschaffenburg;DE261;62.45;70527;34316;36211;1129 295 | 9662;Schweinfurt;DE262;35.7;54032;26553;27479;1514 296 | 9663;Würzburg;DE263;87.6;127880;61151;66729;1460 297 | 9671;Aschaffenburg;DE264;698.9;174208;86570;87638;249 298 | 9672;Bad Kissingen;DE265;1136.9;103218;50865;52353;91 299 | 9673;Rhön-Grabfeld;DE266;1021.68;79690;39677;40013;78 300 | 9674;Haßberge;DE267;956.19;84599;42468;42131;88 301 | 9675;Kitzingen;DE268;684.14;90909;45791;45118;133 302 | 9676;Miltenberg;DE269;715.58;128756;64190;64566;180 303 | 9677;Main-Spessart;DE26A;1321.2;126365;62953;63412;96 304 | 9678;Schweinfurt;DE26B;841.39;115106;57768;57338;137 305 | 9679;Würzburg;DE26C;968.35;161834;80594;81240;167 306 | 9761;Augsburg;DE271;146.85;295135;145158;149977;2010 307 | 9762;Kaufbeuren;DE272;40.02;43893;21610;22283;1097 308 | 9763;Kempten (Allgäu);DE273;63.28;68907;34141;34766;1089 309 | 9764;Memmingen;DE274;70.11;43837;21710;22127;625 310 | 9771;Aichach-Friedberg;DE275;780.23;133596;66651;66945;171 311 | 9772;Augsburg;DE276;1070.64;251534;124807;126727;235 312 | 9773;Dillingen a.d.Donau;DE277;792.23;96021;48135;47886;121 313 | 9774;Günzburg;DE278;762.4;125747;63576;62171;165 314 | 9775;Neu-Ulm;DE279;515.84;174200;86470;87730;338 315 | 9776;Lindau (Bodensee);DE27A;323.39;81669;40285;41384;253 316 | 9777;Ostallgäu;DE27B;1394.43;140316;69968;70348;101 317 | 9778;Unterallgäu;DE27C;1229.57;144041;72608;71433;117 318 | 9779;Donau-Ries;DE27D;1274.58;133496;67821;65675;105 319 | 9780;Oberallgäu;DE27E;1527.96;155362;76577;78785;102 320 | 10041;Regionalverband Saarbrücken;DEC01;410.95;329708;162003;167705;802 321 | 10042;Merzig-Wadern;DEC02;556.66;103366;51108;52258;186 322 | 10043;Neunkirchen;DEC03;249.8;132206;64915;67291;529 323 | 10044;Saarlouis;DEC04;459.35;195201;95550;99651;425 324 | 10045;Saarpfalz-Kreis;DEC05;418.28;142631;69385;73246;341 325 | 10046;St. Wendel;DEC06;476.07;87397;43198;44199;184 326 | 11000;Berlin, Stadt;DE300;891.12;3644826;1792801;1852025;4090 327 | 12051;Brandenburg an der Havel, Stadt;DE401;229.71;72124;35617;36507;314 328 | 12052;Cottbus, Stadt;DE402;165.63;100219;49201;51018;605 329 | 12053;Frankfurt (Oder), Stadt;DE403;147.85;57873;28023;29850;391 330 | 12054;Potsdam, Stadt;DE404;188.25;178089;86179;91910;946 331 | 12060;Barnim;DE405;1479.61;182760;90615;92145;124 332 | 12061;Dahme-Spreewald;DE406;2274.53;169067;83943;85124;74 333 | 12062;Elbe-Elster;DE407;1899.16;102638;50832;51806;54 334 | 12063;Havelland;DE408;1727.31;161909;80121;81788;94 335 | 12064;Märkisch-Oderland;DE409;2158.65;194328;96483;97845;90 336 | 12065;Oberhavel;DE40A;1808.17;211249;104111;107138;117 337 | 12066;Oberspreewald-Lausitz;DE40B;1223.46;110476;54307;56169;90 338 | 12067;Oder-Spree;DE40C;2256.75;178658;87681;90977;79 339 | 12068;Ostprignitz-Ruppin;DE40D;2526.55;99078;49331;49747;39 340 | 12069;Potsdam-Mittelmark;DE40E;2592.06;214664;106258;108406;83 341 | 12070;Prignitz;DE40F;2138.58;76508;37977;38531;36 342 | 12071;Spree-Neiße;DE40G;1656.98;114429;56269;58160;69 343 | 12072;Teltow-Fläming;DE40H;2104.22;168296;83842;84454;80 344 | 12073;Uckermark;DE40I;3077.01;119552;58670;60882;39 345 | 13003;Rostock;DE803;181.36;208886;102911;105975;1152 346 | 13004;Schwerin;DE804;130.52;95818;46054;49764;734 347 | 13071;Mecklenburgische Seenplatte;DE80J;5495.6;259130;127108;132022;47 348 | 13072;Landkreis Rostock;DE80K;3431.29;215113;107111;108002;63 349 | 13073;Vorpommern-Rügen;DE80L;3215.41;224684;110477;114207;70 350 | 13074;Nordwestmecklenburg;DE80M;2127.08;156729;77899;78830;74 351 | 13075;Vorpommern-Greifswald;DE80N;3945.56;236697;115881;120816;60 352 | 13076;Ludwigslust-Parchim;DE80O;4766.79;212618;106198;106420;45 353 | 14511;Chemnitz, Stadt;DED41;221.05;247237;122248;124989;1118 354 | 14521;Erzgebirgskreis;DED42;1827.91;337696;165218;172478;185 355 | 14522;Mittelsachsen;DED43;2116.85;306185;152310;153875;145 356 | 14523;Vogtlandkreis;DED44;1412.42;227796;111055;116741;161 357 | 14524;Zwickau;DED45;949.78;317531;154978;162553;334 358 | 14612;Dresden, Stadt;DED21;328.48;554649;276729;277920;1689 359 | 14625;Bautzen;DED2C;2395.61;300880;148502;152378;126 360 | 14626;Görlitz;DED2D;2111.41;254894;124905;129989;121 361 | 14627;Meißen;DED2E;1454.59;242165;119304;122861;166 362 | 14628;Sächsische Schweiz-Osterzgebirge;DED2F;1654.19;245611;121219;124392;148 363 | 14713;Leipzig, Stadt;DED51;297.8;587857;288553;299304;1974 364 | 14729;Leipzig;DED52;1651.3;257763;126380;131383;156 365 | 14730;Nordsachsen;DED53;2028.56;197673;98218;99455;97 366 | 15001;Dessau-Roßlau, Stadt;DEE01;244.71;81237;39457;41780;332 367 | 15002;Halle (Saale), Stadt;DEE02;135.03;239257;115713;123544;1772 368 | 15003;Magdeburg, Landeshauptstadt;DEE03;201.01;238697;117828;120869;1187 369 | 15081;Altmarkkreis Salzwedel;DEE04;2293.36;83765;41748;42017;37 370 | 15082;Anhalt-Bitterfeld;DEE05;1453.82;159854;78326;81528;110 371 | 15083;Börde;DEE07;2366.91;171734;85660;86074;73 372 | 15084;Burgenlandkreis;DEE08;1413.75;180190;89353;90837;127 373 | 15085;Harz;DEE09;2104.72;214446;105101;109345;102 374 | 15086;Jerichower Land;DEE06;1576.94;89928;44781;45147;57 375 | 15087;Mansfeld-Südharz;DEE0A;1448.92;136249;66992;69257;94 376 | 15088;Saalekreis;DEE0B;1433.91;184582;91361;93221;129 377 | 15089;Salzlandkreis;DEE0C;1427.33;190560;93148;97412;134 378 | 15090;Stendal;DEE0D;2423.42;111982;55278;56704;46 379 | 15091;Wittenberg;DEE0E;1930.48;125840;61933;63907;65 380 | 16051;Erfurt, Stadt;DEG01;269.91;213699;103920;109779;792 381 | 16052;Gera, Stadt;DEG02;152.18;94152;45517;48635;619 382 | 16053;Jena, Stadt;DEG03;114.77;111407;55665;55742;971 383 | 16054;Suhl, Stadt;DEG04;103.03;34835;16960;17875;338 384 | 16055;Weimar, Stadt;DEG05;84.48;65090;31655;33435;770 385 | 16056;Eisenach, Stadt;DEG0N;104.17;42370;20874;21496;407 386 | 16061;Eichsfeld;DEG06;943.07;100380;50364;50016;106 387 | 16062;Nordhausen;DEG07;713.9;83822;41477;42345;117 388 | 16063;Wartburgkreis;DEG0P;1307.44;123025;61525;61500;94 389 | 16064;Unstrut-Hainich-Kreis;DEG09;979.69;102912;51119;51793;105 390 | 16065;Kyffhäuserkreis;DEG0A;1037.91;75009;37274;37735;72 391 | 16066;Schmalkalden-Meiningen;DEG0B;1210.73;122347;61186;61161;101 392 | 16067;Gotha;DEG0C;936.08;135452;67468;67984;145 393 | 16068;Sömmerda;DEG0D;806.86;69655;34762;34893;86 394 | 16069;Hildburghausen;DEG0E;938.42;63553;31766;31787;68 395 | 16070;Ilm-Kreis;DEG0F;843.71;108742;54633;54109;129 396 | 16071;Weimarer Land;DEG0G;804.48;81947;40645;41302;102 397 | 16072;Sonneberg;DEG0H;433.61;56196;27673;28523;130 398 | 16073;Saalfeld-Rudolstadt;DEG0I;1036.03;106356;52388;53968;103 399 | 16074;Saale-Holzland-Kreis;DEG0J;815.24;83051;41360;41691;102 400 | 16075;Saale-Orla-Kreis;DEG0K;1151.3;80868;40119;40749;70 401 | 16076;Greiz;DEG0L;845.98;98159;48326;49833;116 402 | 16077;Altenburger Land;DEG0M;569.4;90118;44138;45980;158 403 | -------------------------------------------------------------------------------- /blog_post/sampling.csv: -------------------------------------------------------------------------------- 1 | # stan_version_major = 2 2 | # stan_version_minor = 22 3 | # stan_version_patch = 1 4 | # model = covid19_model_model 5 | # method = sample (Default) 6 | # sample 7 | # num_samples = 1000 (Default) 8 | # num_warmup = 1000 (Default) 9 | # save_warmup = 0 (Default) 10 | # thin = 1 (Default) 11 | # adapt 12 | # engaged = 1 (Default) 13 | # gamma = 0.050000000000000003 (Default) 14 | # delta = 0.80000000000000004 (Default) 15 | # kappa = 0.75 (Default) 16 | # t0 = 10 (Default) 17 | # init_buffer = 75 (Default) 18 | # term_buffer = 50 (Default) 19 | # window = 25 (Default) 20 | # algorithm = hmc (Default) 21 | # hmc 22 | # engine = nuts (Default) 23 | # nuts 24 | # max_depth = 10 (Default) 25 | # metric = diag_e (Default) 26 | # metric_file = (Default) 27 | # stepsize = 1 (Default) 28 | # stepsize_jitter = 0 (Default) 29 | # id = 0 (Default) 30 | # data 31 | # file = covid19_model.data.R 32 | # init = covid19_model.init.R 33 | # random 34 | # seed = -1 (Default) 35 | # output 36 | # file = sampling.csv 37 | # diagnostic_file = (Default) 38 | # refresh = 100 (Default) 39 | lp__,accept_stat__,stepsize__,treedepth__,n_leapfrog__,divergent__,energy__,gamma,alpha0,beta,I0 40 | # Adaptation terminated 41 | # Step size = 0.183572 42 | # Diagonal elements of inverse mass matrix: 43 | # 0.0605232, 0.0044402, 0.019358, 0.0094208 44 | -286.6,0.975242,0.183572,3,15,0,286.825,0.141071,0.290888,0.00488945,343.352 45 | -285.374,0.986457,0.183572,4,15,0,287.224,0.151763,0.28532,0.00508511,371.299 46 | -285.63,0.984553,0.183572,5,31,0,286.001,0.124246,0.276692,0.004432,404.438 47 | -286.424,0.864225,0.183572,4,15,0,288.275,0.148314,0.26421,0.00440554,403.878 48 | -286.272,0.992039,0.183572,4,15,0,287.881,0.115909,0.290264,0.00479672,408.063 49 | -286.682,0.994137,0.183572,4,15,0,287.084,0.139582,0.29536,0.00537486,406.374 50 | -287.741,0.860434,0.183572,3,7,0,288.922,0.136265,0.298653,0.00550038,427.562 51 | -286.653,0.989214,0.183572,3,7,0,287.744,0.12891,0.290195,0.00545952,427.162 52 | -287.154,0.999686,0.183572,4,15,0,287.702,0.120499,0.300938,0.00561721,429.521 53 | -288.264,0.98368,0.183572,4,15,0,288.818,0.124311,0.307965,0.00586104,404.952 54 | -285.623,0.999806,0.183572,4,15,0,288.95,0.163296,0.264551,0.00430999,375.842 55 | -289.02,0.965543,0.183572,4,15,0,289.252,0.119862,0.260393,0.00291262,357.844 56 | -288.816,0.92958,0.183572,4,15,0,291.705,0.113086,0.264511,0.00382932,360.568 57 | -288.92,1,0.183572,3,7,0,289.561,0.12979,0.272908,0.00342906,357.053 58 | -288.969,0.993717,0.183572,4,15,0,290.038,0.163307,0.256137,0.00351391,389.133 59 | -286.975,0.990859,0.183572,4,15,0,291.774,0.134361,0.255888,0.00344358,370.203 60 | -286.318,0.981174,0.183572,4,15,0,287.488,0.1441,0.263821,0.00359013,347.857 61 | -287.221,0.993384,0.183572,4,31,0,288.373,0.11339,0.264712,0.00353544,371.393 62 | -285.061,0.998047,0.183572,4,15,0,288.262,0.147958,0.270865,0.00433524,360.302 63 | -286.289,0.908201,0.183572,3,11,0,287.589,0.149387,0.277833,0.00418216,344.857 64 | -286.213,0.978242,0.183572,4,15,0,288.519,0.1454,0.267,0.00369667,341.277 65 | -287.008,0.956122,0.183572,3,7,0,287.872,0.148825,0.253419,0.00373024,372.501 66 | -286.989,0.997573,0.183572,4,31,0,287.834,0.174941,0.282236,0.00465478,319.783 67 | -286.647,0.999962,0.183572,4,31,0,287.309,0.169526,0.27933,0.00461354,314.262 68 | -286.872,0.984011,0.183572,4,15,0,287.492,0.165439,0.25566,0.00410429,383.808 69 | -286.522,0.969866,0.183572,3,15,0,288.606,0.181778,0.265418,0.00394824,329.827 70 | -287.28,0.994838,0.183572,4,31,0,289.897,0.170369,0.294617,0.00563759,357.109 71 | -287.234,0.984313,0.183572,4,15,0,288.526,0.195362,0.284451,0.00547757,385.076 72 | -287.748,0.952049,0.183572,4,31,0,288.482,0.207832,0.283568,0.00540753,377.492 73 | -287.093,0.993969,0.183572,4,15,0,291.226,0.14761,0.299343,0.00569723,390.672 74 | -286.771,0.996093,0.183572,4,15,0,289.718,0.198831,0.283155,0.00531809,344.751 75 | -288.206,0.983492,0.183572,5,31,0,289.967,0.165396,0.246344,0.00309183,329.078 76 | -287.087,0.99331,0.183572,4,15,0,288.952,0.167321,0.256411,0.00358208,314.087 77 | -286.194,0.919521,0.183572,4,19,0,289.158,0.146961,0.264695,0.00430802,363.64 78 | -287.175,0.967712,0.183572,4,31,0,287.817,0.190755,0.264693,0.00407119,353.103 79 | -287.277,0.993007,0.183572,4,15,0,288.043,0.172996,0.256365,0.00402385,329.53 80 | -286.426,0.999078,0.183572,4,31,0,288.748,0.174801,0.279997,0.0048669,322.291 81 | -286.992,0.848731,0.183572,4,31,0,289.41,0.194246,0.28397,0.00541922,379.99 82 | -285.849,0.999905,0.183572,5,31,0,287.278,0.12533,0.272189,0.0039326,357.223 83 | -285.279,0.997732,0.183572,3,7,0,285.945,0.142879,0.268991,0.00414589,370.556 84 | -285.987,0.97172,0.183572,4,31,0,286.181,0.136613,0.290541,0.00500128,387.44 85 | -288.094,0.944475,0.183572,4,15,0,289.586,0.14403,0.259769,0.0043814,419.071 86 | -287.296,1,0.183572,2,3,0,288.33,0.150473,0.260382,0.00427444,419.039 87 | -288.15,0.993227,0.183572,4,23,0,290.672,0.169979,0.277671,0.00536275,439.09 88 | -289.116,0.586509,0.183572,5,47,0,293.436,0.137454,0.261142,0.00346505,304.08 89 | -288.375,0.849701,0.183572,3,7,0,291.868,0.153002,0.273209,0.00364098,315.311 90 | -288.309,0.926251,0.183572,3,7,0,290.706,0.13648,0.262844,0.00375993,318.168 91 | -288.889,1,0.183572,3,7,0,289.261,0.154665,0.26787,0.00334685,315.337 92 | -286.116,0.984027,0.183572,5,31,0,290.198,0.200402,0.273532,0.0048589,351.853 93 | -287.02,0.990323,0.183572,4,15,0,289.123,0.189586,0.268865,0.00499666,394.376 94 | -286.024,1,0.183572,4,15,0,287.57,0.178232,0.281266,0.00522985,378.978 95 | -286.06,0.877601,0.183572,4,15,0,289.014,0.14625,0.261734,0.00407323,388.177 96 | -286.24,0.994039,0.183572,5,31,0,288.554,0.136764,0.26496,0.00417725,405.673 97 | -285.725,0.958847,0.183572,4,15,0,287.607,0.121873,0.272034,0.00420252,388.097 98 | -286.568,0.974781,0.183572,4,15,0,287.51,0.119216,0.266327,0.00390697,404.114 99 | -286.44,0.946564,0.183572,4,15,0,288.512,0.159319,0.268538,0.00437574,400.01 100 | -286.884,0.989557,0.183572,4,19,0,291.091,0.178047,0.256336,0.00420497,353.711 101 | -290.014,0.939678,0.183572,3,15,0,291.552,0.21865,0.26503,0.0047095,410.323 102 | -287.013,0.992826,0.183572,3,15,0,293.575,0.118765,0.267211,0.00356173,382.452 103 | -286.047,0.996924,0.183572,4,15,0,287.555,0.130158,0.271076,0.00380849,349.013 104 | -285.967,0.958985,0.183572,4,15,0,287.033,0.137447,0.271807,0.00420848,338.079 105 | -285.895,0.996564,0.183572,4,15,0,288.091,0.162304,0.277844,0.00486545,394.852 106 | -285.592,0.996747,0.183572,4,15,0,286.237,0.154113,0.283638,0.00504172,389.596 107 | -286.008,0.995381,0.183572,4,31,0,286.975,0.173708,0.261377,0.00386887,334.943 108 | -285.765,0.878546,0.183572,4,23,0,288.882,0.118882,0.287792,0.00497073,400.406 109 | -285.804,0.999337,0.183572,4,15,0,286.108,0.128565,0.284247,0.0049055,417.421 110 | -288.11,0.888337,0.183572,4,15,0,290.548,0.104314,0.297265,0.00553285,473.691 111 | -289.226,0.783402,0.183572,4,15,0,291.098,0.10805,0.2896,0.00473922,474.143 112 | -286.389,0.997193,0.183572,4,15,0,289.534,0.112521,0.27885,0.00460693,404.149 113 | -286.028,0.883807,0.183572,4,23,0,288.688,0.175755,0.260492,0.00416105,338.643 114 | -285.375,0.998653,0.183572,4,31,0,286.275,0.130323,0.273203,0.00415878,361.99 115 | -287.68,0.907244,0.183572,3,11,0,288.662,0.117003,0.281154,0.00392236,336.989 116 | -286.388,0.982361,0.183572,3,7,0,288.802,0.125835,0.270576,0.00369622,353.06 117 | -287.67,0.920631,0.183572,3,15,0,291.101,0.175245,0.270973,0.00505308,361.579 118 | -285.791,1,0.183572,4,15,0,288.62,0.147672,0.264339,0.00425826,384.316 119 | -290.117,0.977692,0.183572,4,15,0,291.728,0.163149,0.249371,0.00385185,438.651 120 | -290.922,0.984021,0.183572,4,15,0,292.1,0.117674,0.269998,0.00324397,301.816 121 | -288.252,0.989605,0.183572,4,31,0,293.132,0.177757,0.253932,0.00320426,317.762 122 | -286.747,0.989551,0.183572,4,15,0,289.12,0.139626,0.26322,0.00344287,334.601 123 | -287.208,0.963733,0.183572,4,15,0,288.245,0.156094,0.26148,0.00342543,338.142 124 | -287.313,0.992986,0.183572,4,15,0,288.903,0.164097,0.251809,0.00369003,381.966 125 | -288.997,0.927615,0.183572,4,15,0,291.827,0.151818,0.255827,0.00406713,441.266 126 | -286.603,0.996711,0.183572,4,15,0,289.861,0.150077,0.271468,0.00457591,419.731 127 | -286.005,0.999964,0.183572,3,15,0,289.079,0.163956,0.258331,0.00398885,364.018 128 | -285.38,0.850683,0.183572,3,9,0,287.625,0.148574,0.266968,0.00417982,351.946 129 | -285.328,0.999016,0.183572,5,31,0,287.849,0.157206,0.269417,0.00438596,376.156 130 | -285.557,0.98224,0.183572,4,15,0,285.966,0.167929,0.269279,0.00421211,349.254 131 | -286.217,0.981202,0.183572,5,31,0,287.251,0.112959,0.276047,0.00441372,411.904 132 | -288.573,0.968263,0.183572,4,15,0,291.746,0.0951311,0.271476,0.00392797,441.966 133 | -289.507,0.998835,0.183572,4,15,0,291.015,0.231959,0.285976,0.00562272,320.881 134 | -289.921,0.925993,0.183572,3,7,0,291.138,0.219338,0.288859,0.00530501,311.728 135 | -287.694,1,0.183572,4,31,0,290.847,0.151254,0.256045,0.0041385,410.913 136 | -287.329,0.914167,0.183572,2,3,0,288.776,0.155862,0.258773,0.00416619,414.082 137 | -287.849,0.99116,0.183572,4,15,0,289.367,0.163345,0.278006,0.00435178,298.992 138 | -287.918,0.995942,0.183572,3,7,0,288.775,0.174012,0.279095,0.00459588,299.183 139 | -287.451,0.913305,0.183572,4,31,0,290.771,0.234769,0.272884,0.00512291,340.83 140 | -287.105,0.895654,0.183572,5,31,0,289.134,0.117985,0.265668,0.00411724,413.746 141 | -285.408,0.998458,0.183572,4,15,0,287.356,0.15776,0.274215,0.00444366,334.355 142 | -285.963,0.973871,0.183572,4,31,0,287.007,0.143072,0.272113,0.00408715,327.931 143 | -287.351,0.877798,0.183572,4,31,0,289.197,0.131906,0.280834,0.00399737,354.298 144 | -288.247,0.990954,0.183572,4,15,0,290.297,0.2076,0.257355,0.00454639,340.023 145 | -286.877,1,0.183572,4,31,0,288.773,0.106619,0.291187,0.00458995,388.273 146 | -287.964,0.953489,0.183572,5,31,0,291.355,0.105686,0.296554,0.00545733,421.579 147 | -287.841,0.925905,0.183572,2,3,0,288.819,0.116712,0.300975,0.00531349,432.135 148 | -286.805,0.97144,0.183572,3,15,0,290.332,0.134782,0.2881,0.00452543,359.543 149 | -286.515,0.978853,0.183572,3,15,0,287.361,0.157607,0.281558,0.00469735,384.194 150 | -287.191,0.999412,0.183572,4,31,0,289.139,0.104451,0.283736,0.00429626,422.273 151 | -287.57,0.997256,0.183572,4,31,0,289.092,0.235704,0.271239,0.00483473,335.641 152 | -292.151,0.984837,0.183572,3,7,0,292.741,0.303685,0.283419,0.00588154,345.414 153 | -289.75,0.95357,0.183572,4,15,0,292.855,0.275295,0.271667,0.00545869,345.593 154 | -290.651,0.962144,0.183572,2,7,0,291.145,0.283635,0.270595,0.00554555,348.104 155 | -285.674,0.999567,0.183572,4,15,0,291.658,0.154601,0.283888,0.00490769,379.415 156 | -286.014,0.997638,0.183572,3,15,0,287.113,0.138118,0.271835,0.00467,402.218 157 | -289.007,0.930142,0.183572,4,15,0,290.628,0.104145,0.306418,0.00560727,399.899 158 | -288.484,0.971711,0.183572,4,15,0,290.873,0.188757,0.24565,0.00385514,375.424 159 | -285.393,0.983504,0.183572,5,31,0,290.994,0.144867,0.266684,0.00413569,357.011 160 | -285.446,0.955017,0.183572,3,11,0,286.29,0.153119,0.267169,0.00439453,379.303 161 | -286.811,0.903008,0.183572,4,19,0,288.426,0.141159,0.264825,0.00445458,400.448 162 | -293.642,0.973571,0.183572,5,31,0,294.844,0.0883533,0.318723,0.00540602,423.518 163 | -289.148,0.956967,0.183572,4,15,0,297.643,0.0914119,0.290236,0.00449537,467.308 164 | -289.642,0.993573,0.183572,4,23,0,292.771,0.255104,0.277095,0.00503986,304.434 165 | -290.079,0.824916,0.183572,2,3,0,291.165,0.252155,0.27392,0.00523321,302.879 166 | -288.156,0.998914,0.183572,4,15,0,291.747,0.211643,0.269989,0.0047632,303.343 167 | -286.112,0.998294,0.183572,4,31,0,289.47,0.187681,0.281395,0.00518534,351.253 168 | -287.174,0.865269,0.183572,2,5,0,288.373,0.204403,0.284794,0.00547329,354.708 169 | -286.526,0.828611,0.183572,4,31,0,290.301,0.142154,0.282631,0.00492444,423.321 170 | -286.621,0.982316,0.183572,2,3,0,286.999,0.135696,0.281346,0.00519973,416.609 171 | -293.496,0.857347,0.183572,4,15,0,298.164,0.300529,0.26231,0.00500268,396.534 172 | -286.403,0.955807,0.183572,4,15,0,296.422,0.148016,0.288644,0.00483637,340.759 173 | -285.408,0.962699,0.183572,4,15,0,287.563,0.176061,0.273533,0.00475823,348.619 174 | -285.548,0.9604,0.183572,4,31,0,287.219,0.166337,0.283182,0.00507094,356.629 175 | -287.37,0.913747,0.183572,4,15,0,288.982,0.229057,0.265709,0.00486974,361.797 176 | -286.211,0.757763,0.183572,4,15,0,290.677,0.166542,0.260582,0.00375746,324.745 177 | -286.411,0.99052,0.183572,5,31,0,287.925,0.111606,0.29317,0.0051594,423.613 178 | -286.564,0.961773,0.183572,4,15,0,287.2,0.127512,0.295996,0.00530579,414.054 179 | -287.409,0.802266,0.183572,2,7,0,289.091,0.126615,0.293664,0.00563162,411.429 180 | -286.724,0.895508,0.183572,2,7,0,288.444,0.130638,0.298026,0.00551758,415.087 181 | -286.179,0.87533,0.183572,4,15,0,288.259,0.118861,0.270945,0.00420744,387.1 182 | -287.329,0.996418,0.183572,5,31,0,287.914,0.175107,0.286681,0.00536876,404.496 183 | -286.707,0.990556,0.183572,5,31,0,287.891,0.114867,0.284636,0.00471023,367.653 184 | -286.303,0.998048,0.183572,3,15,0,288.082,0.129239,0.289192,0.00496486,414.508 185 | -287.546,0.917256,0.183572,4,15,0,290.445,0.107065,0.273219,0.00428928,449.15 186 | -286.011,0.999431,0.183572,4,31,0,288.733,0.125365,0.266968,0.00380429,368.179 187 | -287.061,0.936604,0.183572,4,15,0,287.618,0.140043,0.259529,0.00413489,394.375 188 | -286.433,1,0.183572,4,15,0,287.81,0.156251,0.255878,0.0038471,358.8 189 | -286.292,0.937681,0.183572,3,7,0,287.391,0.158927,0.262181,0.00369621,348.591 190 | -285.682,0.994548,0.183572,5,31,0,288.767,0.119649,0.278853,0.00450602,406.849 191 | -285.037,0.997989,0.183572,4,23,0,286.779,0.158635,0.272978,0.00454632,356.494 192 | -285.566,0.993621,0.183572,3,15,0,286.037,0.141053,0.27631,0.0042536,338.958 193 | -287.609,0.994041,0.183572,4,31,0,288.264,0.136567,0.292411,0.00566257,451.812 194 | -287.03,0.759058,0.183572,3,15,0,293.19,0.113064,0.296784,0.00497131,404.36 195 | -287.013,0.999951,0.183572,4,31,0,288.772,0.199741,0.252882,0.0038054,331.201 196 | -286.232,0.996244,0.183572,5,31,0,288.218,0.132189,0.294104,0.00543695,391.251 197 | -285.979,0.989007,0.183572,4,31,0,287.162,0.121535,0.269902,0.00416574,392.422 198 | -285.136,0.998718,0.183572,4,15,0,286.868,0.138601,0.282097,0.00475085,380.389 199 | -286.093,0.931881,0.183572,5,31,0,286.47,0.16146,0.260945,0.00413904,347.029 200 | -285.812,0.989079,0.183572,3,15,0,288.295,0.147335,0.266165,0.00397801,334.582 201 | -285.456,0.999975,0.183572,3,15,0,286.025,0.163248,0.267225,0.00411337,349.784 202 | -285.071,0.991265,0.183572,4,31,0,285.818,0.135599,0.278459,0.00453409,366.604 203 | -285.371,0.985091,0.183572,3,15,0,286.542,0.165475,0.26837,0.00433492,338.901 204 | -285.915,0.948839,0.183572,5,31,0,287.191,0.124719,0.277998,0.00445763,412.052 205 | -286.176,0.979768,0.183572,5,31,0,287.075,0.183567,0.268289,0.00442721,367.836 206 | -288.897,0.862001,0.183572,3,7,0,289.823,0.187664,0.252505,0.00431032,356.371 207 | -290.37,0.996757,0.183572,4,31,0,294.245,0.114137,0.305538,0.00570086,367.747 208 | -288.311,1,0.183572,4,15,0,292.408,0.21363,0.271643,0.00494821,392.622 209 | -288.43,0.970381,0.183572,3,7,0,289.237,0.218725,0.270069,0.00530343,391.914 210 | -290.479,0.959889,0.183572,4,15,0,291.215,0.0858281,0.29173,0.00407575,393.699 211 | -288.746,0.990676,0.183572,3,7,0,291.715,0.0973985,0.286649,0.00396901,390.694 212 | -290.753,0.968224,0.183572,2,3,0,290.944,0.0862227,0.284811,0.00396253,375.894 213 | -288.867,0.984366,0.183572,4,31,0,293.523,0.140351,0.287972,0.00576256,453.321 214 | -286.486,0.913282,0.183572,4,31,0,292.832,0.194343,0.275148,0.00459701,334.019 215 | -286.838,0.930149,0.183572,4,31,0,290.906,0.172963,0.254016,0.00368758,326.857 216 | -289.291,0.991789,0.183572,4,31,0,293.105,0.0952117,0.273834,0.00339152,390.252 217 | -285.24,0.999808,0.183572,4,15,0,289.866,0.159598,0.278494,0.00490469,376.677 218 | -285.877,0.972524,0.183572,5,31,0,286.213,0.12576,0.29044,0.00490772,391.361 219 | -287.094,0.960502,0.183572,5,31,0,288.544,0.176716,0.256771,0.00357519,343.661 220 | -286.261,0.990529,0.183572,4,31,0,288.809,0.110821,0.281541,0.00454934,388.133 221 | -286.697,0.99247,0.183572,4,15,0,288.415,0.15333,0.275614,0.00499307,426.444 222 | -285.514,0.986523,0.183572,4,31,0,288.586,0.145966,0.271611,0.00426267,338.602 223 | -285.811,0.953803,0.183572,4,31,0,289.448,0.125001,0.281677,0.00490829,412.792 224 | -285.592,0.984291,0.183572,4,15,0,287.164,0.162702,0.281483,0.00496261,345.429 225 | -286.021,0.929004,0.183572,5,31,0,286.865,0.111351,0.280874,0.00438324,402.324 226 | -285.845,0.97795,0.183572,4,31,0,288.063,0.145292,0.268699,0.00384315,342.273 227 | -286.631,0.993127,0.183572,4,15,0,286.845,0.174652,0.258903,0.00398892,374.981 228 | -285.442,0.998872,0.183572,5,31,0,287.666,0.131275,0.279827,0.00469562,403.996 229 | -286.328,0.986345,0.183572,3,15,0,286.734,0.120963,0.296187,0.00531217,407.622 230 | -286.082,0.98161,0.183572,4,15,0,287.057,0.113622,0.290333,0.00502002,406.201 231 | -285.819,0.975374,0.183572,4,23,0,288.499,0.121167,0.276587,0.0041219,361.484 232 | -287.045,0.972057,0.183572,4,15,0,289.643,0.144531,0.2532,0.00360412,372.862 233 | -286.784,0.979469,0.183572,4,31,0,289.491,0.202821,0.266518,0.0047188,330.246 234 | -288.228,0.999526,0.183572,4,15,0,289.369,0.217947,0.251805,0.00364796,324.408 235 | -287.637,0.973932,0.183572,5,31,0,290.838,0.13559,0.29946,0.00530364,396.943 236 | -286.174,0.995704,0.183572,4,31,0,288.453,0.167857,0.260358,0.00416061,343.249 237 | -285.711,0.971614,0.183572,3,11,0,289.827,0.173774,0.264273,0.00409864,330.546 238 | -288.972,0.962809,0.183572,5,31,0,290.542,0.157222,0.301109,0.00622178,403.378 239 | -285.611,0.818518,0.183572,4,15,0,290.77,0.132935,0.278213,0.00445511,395.19 240 | -286.745,0.976058,0.183572,5,31,0,289.382,0.188948,0.272419,0.00504113,348.838 241 | -286.073,0.995996,0.183572,2,7,0,287.238,0.185294,0.275836,0.004732,359.435 242 | -285.98,0.998846,0.183572,2,7,0,286.283,0.187988,0.274794,0.00476335,360.077 243 | -286.073,0.996284,0.183572,4,23,0,286.562,0.18832,0.266792,0.00472896,366.609 244 | -285.834,0.700652,0.183572,2,3,0,289.903,0.191995,0.271943,0.00469847,353.207 245 | -286.025,0.967192,0.183572,4,31,0,287.145,0.155997,0.266934,0.00382253,335.607 246 | -286.21,0.990489,0.183572,4,31,0,289.28,0.148827,0.292404,0.00528155,384.728 247 | -287.402,0.95932,0.183572,4,15,0,288.049,0.125459,0.300823,0.00527386,391.316 248 | -287.1,0.991507,0.183572,4,15,0,288.155,0.144224,0.298433,0.00550007,395.203 249 | -287.253,0.987613,0.183572,5,31,0,289.519,0.111767,0.281828,0.00453997,447.847 250 | -285.603,0.999638,0.183572,4,31,0,288.311,0.148069,0.276731,0.00426116,344.996 251 | -285.441,0.989974,0.183572,2,7,0,285.92,0.150487,0.274473,0.00422931,348.316 252 | -285.399,0.99313,0.183572,3,7,0,285.831,0.154803,0.272316,0.00424757,335.141 253 | -285.794,0.998342,0.183572,4,31,0,286.249,0.152832,0.268393,0.00397365,328.176 254 | -286.495,0.994586,0.183572,4,15,0,286.826,0.165695,0.255352,0.00378251,367.016 255 | -286.375,0.994533,0.183572,4,15,0,287.164,0.14194,0.266181,0.00376175,325.851 256 | -285.024,0.992414,0.183572,4,31,0,287.978,0.14715,0.273751,0.00454971,371.239 257 | -285.345,0.963573,0.183572,3,15,0,285.942,0.149842,0.275462,0.0047886,371.557 258 | -285.736,0.991491,0.183572,4,15,0,286.336,0.151346,0.288232,0.00531452,380.364 259 | -285.148,0.981165,0.183572,4,15,0,286.49,0.140052,0.276334,0.00442106,374.778 260 | -285.231,0.997396,0.183572,3,15,0,285.671,0.16048,0.280117,0.00493635,369.94 261 | -285.309,0.995106,0.183572,4,31,0,285.738,0.146953,0.28046,0.00497134,389.417 262 | -285.891,0.934302,0.183572,5,31,0,286.433,0.150279,0.26261,0.00387109,338.132 263 | -287.184,0.98638,0.183572,4,15,0,287.967,0.120936,0.276472,0.00396477,331.963 264 | -286.552,0.995118,0.183572,3,15,0,288.264,0.150212,0.267605,0.00466489,407.227 265 | -285.749,1,0.183572,3,15,0,286.957,0.139324,0.274518,0.00437815,340.712 266 | -285.438,0.999245,0.183572,4,15,0,286.275,0.180775,0.270372,0.00455092,342.993 267 | -285.939,0.998427,0.183572,4,15,0,286.203,0.185852,0.260729,0.00410445,339.191 268 | -285.758,0.987455,0.183572,4,15,0,286.541,0.184113,0.26517,0.00438085,335.589 269 | -287.288,0.886237,0.183572,4,31,0,287.758,0.114473,0.268708,0.00406658,375.34 270 | -288.593,0.993541,0.183572,5,31,0,290.312,0.164444,0.252091,0.00302258,334.353 271 | -286.601,0.998095,0.183572,3,15,0,290.583,0.150469,0.25848,0.00385493,342.145 272 | -286.894,0.988649,0.183572,4,23,0,290.696,0.225979,0.26863,0.00481059,340.498 273 | -285.721,0.848526,0.183572,4,15,0,290.712,0.169756,0.27447,0.00445496,355.04 274 | -288.643,0.994049,0.183572,4,15,0,289.365,0.210043,0.263181,0.00383537,295.125 275 | -286.845,0.998367,0.183572,4,15,0,289.587,0.163295,0.256026,0.00382136,332.047 276 | -288.47,0.998496,0.183572,4,23,0,290.457,0.178069,0.297987,0.00564201,366.592 277 | -285.765,0.991838,0.183572,4,15,0,289.368,0.12928,0.289173,0.00486091,385.424 278 | -286.618,0.994037,0.183572,5,31,0,287.873,0.153585,0.254586,0.00353871,358.536 279 | -285.818,0.991815,0.183572,5,31,0,287.286,0.148451,0.285476,0.00529885,393.137 280 | -287.898,0.568149,0.183572,2,3,0,290.841,0.154197,0.291393,0.00504946,394.43 281 | -289.061,0.975996,0.183572,4,15,0,289.526,0.133516,0.301247,0.0053252,420.007 282 | -286.56,0.97447,0.183572,3,11,0,289.427,0.13778,0.283523,0.00528783,405.14 283 | -286.613,0.70349,0.183572,4,31,0,290.52,0.153316,0.264378,0.00452906,398.925 284 | -287.065,0.979056,0.183572,5,31,0,290.197,0.225801,0.267886,0.00482239,353.955 285 | -286.326,0.999,0.183572,4,31,0,287.441,0.113083,0.284872,0.00450759,367.668 286 | -286.909,0.959694,0.183572,2,3,0,287.071,0.114762,0.289478,0.00444629,370.793 287 | -286.426,0.996625,0.183572,4,15,0,287.172,0.199144,0.268065,0.00470656,371.087 288 | -287.712,0.998782,0.183572,4,15,0,288.768,0.125951,0.262408,0.00320934,336.208 289 | -286.478,1,0.183572,4,15,0,288.258,0.188112,0.255433,0.00397466,351.461 290 | -286.804,0.998602,0.183572,5,31,0,288.113,0.207942,0.27787,0.00509136,330.621 291 | -287.649,0.911713,0.183572,2,7,0,288.514,0.224779,0.279548,0.00525381,329.586 292 | -286.658,0.915933,0.183572,3,15,0,289.597,0.191973,0.27097,0.00466891,376.384 293 | -286.058,0.993016,0.183572,3,15,0,287.096,0.167623,0.27428,0.00458928,382.263 294 | -285.056,0.998633,0.183572,3,15,0,287.175,0.160967,0.274578,0.00460025,359.518 295 | -285.097,0.976681,0.183572,4,31,0,285.898,0.144425,0.278153,0.00478409,377.843 296 | -287.066,0.419504,0.183572,3,7,0,292.259,0.162163,0.281638,0.00454222,366.08 297 | -289.255,0.987152,0.183572,4,15,0,290.659,0.196773,0.266201,0.00369126,305.124 298 | -287.307,0.96999,0.183572,4,31,0,292.923,0.133756,0.294773,0.00537257,434.169 299 | -288.986,0.95064,0.183572,4,15,0,289.759,0.153584,0.303394,0.00571094,401.491 300 | -287.867,0.737498,0.183572,4,15,0,292.632,0.165614,0.296019,0.00591025,413.753 301 | -286.823,0.939903,0.183572,4,15,0,289.884,0.166357,0.274614,0.00516341,404.441 302 | -288.104,0.907632,0.183572,3,15,0,291.38,0.125033,0.29764,0.00584241,422.237 303 | -286.504,0.989842,0.183572,5,31,0,289.235,0.109639,0.275001,0.00424091,417.585 304 | -285.808,0.998518,0.183572,4,15,0,286.831,0.184059,0.27424,0.00479471,334.878 305 | -285.593,0.998966,0.183572,4,31,0,286.591,0.158433,0.284154,0.00518643,367.206 306 | -286.509,0.960324,0.183572,3,7,0,287.159,0.141218,0.292187,0.00510387,348.149 307 | -285.869,0.999334,0.183572,4,15,0,287.05,0.133885,0.292135,0.00514364,373.919 308 | -286.812,0.976691,0.183572,4,31,0,288.623,0.121063,0.284876,0.00430231,343.939 309 | -286.771,0.921627,0.183572,4,19,0,288.975,0.109808,0.281677,0.00447104,372.313 310 | -287.432,0.972003,0.183572,4,15,0,289.635,0.16817,0.284956,0.00563469,415.272 311 | -285.358,0.955201,0.183572,4,15,0,288.058,0.153279,0.279938,0.00468022,342.741 312 | -286.344,0.876694,0.183572,3,15,0,289.489,0.143499,0.27607,0.00457267,335.002 313 | -286.789,0.998145,0.183572,4,19,0,288.192,0.129208,0.29085,0.00524085,437.892 314 | -285.538,0.997125,0.183572,5,31,0,287.189,0.15916,0.267406,0.00420379,334.794 315 | -287.823,0.978776,0.183572,4,15,0,288.698,0.163197,0.253403,0.00383544,402.338 316 | -286.582,0.997945,0.183572,3,15,0,289.502,0.166231,0.254926,0.00388584,373.248 317 | -285.852,0.971212,0.183572,3,7,0,286.992,0.160948,0.260062,0.00388462,358.571 318 | -287.831,0.810689,0.183572,3,11,0,289.927,0.132628,0.271079,0.0036153,372.374 319 | -289.513,0.989553,0.183572,3,7,0,290.654,0.0957006,0.267253,0.00341055,379.308 320 | -288.203,1,0.183572,4,15,0,289.944,0.110744,0.265004,0.00333733,395.028 321 | -286.537,0.993551,0.183572,4,15,0,289.855,0.19089,0.259436,0.00389309,334.183 322 | -285.838,0.934472,0.183572,4,23,0,287.959,0.144463,0.28189,0.00449309,364.455 323 | -287.129,0.988403,0.183572,4,31,0,288.292,0.154411,0.25634,0.00333432,346.87 324 | -289.485,0.97553,0.183572,4,15,0,290.54,0.157489,0.24405,0.00365439,401.089 325 | -289.627,0.977446,0.183572,3,7,0,290.809,0.171977,0.245007,0.00367729,413.583 326 | -289.522,1,0.183572,4,15,0,289.933,0.168335,0.243902,0.00362112,409.117 327 | -287.701,0.972715,0.183572,4,15,0,291.625,0.194283,0.251244,0.00401799,378.404 328 | -286.161,0.869876,0.183572,4,15,0,289.998,0.183216,0.271008,0.0044548,317.206 329 | -285.597,0.999489,0.183572,4,31,0,286.907,0.132627,0.27872,0.00474623,410.792 330 | -286.118,0.97438,0.183572,4,15,0,286.913,0.131466,0.294369,0.00527329,379.085 331 | -286.015,0.981187,0.183572,4,15,0,286.936,0.149398,0.275258,0.00484012,413.433 332 | -287.093,0.988438,0.183572,4,15,0,288.629,0.145201,0.260617,0.00334634,325.36 333 | -287.618,0.930746,0.183572,4,23,0,290.673,0.164051,0.272142,0.00514448,403.973 334 | -285.912,0.954978,0.183572,3,15,0,289.031,0.129143,0.285804,0.00513474,418.587 335 | -286.598,0.916289,0.183572,4,31,0,288.82,0.134538,0.270411,0.00415055,410.77 336 | -285.749,0.968507,0.183572,2,7,0,288.081,0.12851,0.27028,0.00422504,399.207 337 | -285.599,0.972291,0.183572,4,15,0,286.803,0.162218,0.276127,0.00459437,331.388 338 | -290.846,0.5375,0.183572,2,3,0,291.819,0.183785,0.286508,0.00447786,329.77 339 | -286.499,0.862616,0.183572,3,15,0,294.539,0.121252,0.282959,0.00469885,359.341 340 | -285.929,0.988845,0.183572,3,7,0,287.287,0.11884,0.279943,0.00443819,365.896 341 | -286.452,0.990341,0.183572,4,15,0,287.579,0.204284,0.272479,0.0050243,365.298 342 | -286.736,0.983683,0.183572,4,31,0,287.405,0.21347,0.270475,0.00492102,334.279 343 | -286.442,0.99767,0.183572,4,15,0,288.252,0.185311,0.285663,0.0052993,351.719 344 | -288.35,0.914279,0.183572,5,31,0,289.217,0.101911,0.279131,0.00410564,447.034 345 | -288.639,0.952843,0.183572,4,23,0,292.829,0.232425,0.269051,0.00513154,327.847 346 | -287.177,0.622668,0.183572,2,3,0,291.693,0.217389,0.270146,0.00499147,332.972 347 | -289.054,0.998737,0.183572,4,31,0,289.698,0.114098,0.263184,0.00302092,372.324 348 | -288.532,0.924242,0.183572,5,31,0,293.12,0.208611,0.254236,0.00415224,311.317 349 | -288.089,0.996199,0.183572,4,15,0,289.373,0.198339,0.268503,0.00398518,311.987 350 | -288.047,0.978991,0.183572,5,31,0,290.246,0.187663,0.272256,0.00432012,292.116 351 | -291.555,0.945383,0.183572,5,31,0,292.606,0.17439,0.233436,0.00328901,399.164 352 | -288.516,0.999879,0.183572,4,15,0,293.018,0.129525,0.260119,0.00303371,322.353 353 | -288.092,0.975231,0.183572,3,7,0,289.076,0.133079,0.258786,0.0032121,320.977 354 | -286.721,0.983188,0.183572,4,15,0,289.314,0.200752,0.259687,0.00411629,350.612 355 | -286.486,0.999226,0.183572,3,7,0,286.844,0.196586,0.257375,0.00413225,352.627 356 | -286.039,0.845859,0.183572,4,31,0,289.861,0.137445,0.288161,0.00473395,366.108 357 | -285.566,0.990857,0.183572,4,15,0,286.694,0.157032,0.279315,0.0050445,392.114 358 | -285.58,0.995368,0.183572,4,15,0,286.378,0.145229,0.273218,0.00464171,401.424 359 | -287.55,0.945188,0.183572,5,31,0,288.06,0.110848,0.265183,0.00355096,367.844 360 | -288.327,0.9996,0.183572,3,7,0,288.627,0.116392,0.267872,0.00323248,362.21 361 | -285.715,0.991153,0.183572,4,31,0,290.539,0.153224,0.279147,0.0048343,397.376 362 | -285.205,0.7449,0.183572,2,7,0,289.817,0.137607,0.279994,0.00481084,377.627 363 | -285.838,0.935747,0.183572,4,15,0,286.439,0.140374,0.288864,0.00527092,377.016 364 | -285.556,0.969448,0.183572,4,31,0,287.665,0.141979,0.273259,0.00431694,387.094 365 | -286.84,0.963848,0.183572,4,15,0,288.43,0.116191,0.268113,0.00364574,386.143 366 | -285.794,0.937827,0.183572,4,15,0,289.489,0.15534,0.288817,0.00518238,364.817 367 | -285.591,0.998682,0.183572,4,31,0,287.441,0.139393,0.266766,0.00392134,366.701 368 | -288.493,0.878949,0.183572,5,31,0,291.802,0.236464,0.280765,0.00548054,331.377 369 | -286.414,0.996928,0.183572,4,15,0,289.456,0.159454,0.256533,0.0035635,345.078 370 | -285.404,0.994527,0.183572,4,31,0,286.826,0.161709,0.282526,0.00491648,354.999 371 | -285.464,0.961005,0.183572,3,7,0,285.801,0.16132,0.280096,0.00498756,355.092 372 | -285.714,0.987071,0.183572,4,15,0,286.461,0.160415,0.277865,0.00485743,392.653 373 | -288.261,0.67966,0.183572,3,15,0,292.461,0.139666,0.293844,0.0047326,362.862 374 | -286.536,1,0.183572,2,3,0,288.579,0.140256,0.29123,0.00485213,358.139 375 | -286.621,0.984728,0.183572,4,15,0,287.575,0.136723,0.278214,0.0047802,433.651 376 | -287.914,0.859228,0.183572,4,15,0,289.138,0.131102,0.295871,0.00499865,403.767 377 | -288.153,0.989439,0.183572,2,3,0,288.498,0.13243,0.295375,0.00494844,402.5 378 | -289.525,0.958036,0.183572,3,7,0,289.933,0.121827,0.295857,0.00464387,402.571 379 | -286.286,0.956311,0.183572,3,15,0,290.454,0.127658,0.287336,0.00507395,370.192 380 | -289.408,0.996078,0.183572,4,31,0,290.235,0.188641,0.238514,0.0030791,343.168 381 | -289.222,0.985191,0.183572,3,7,0,289.851,0.193837,0.240729,0.00317123,348.446 382 | -285.319,0.985496,0.183572,5,31,0,291.517,0.13793,0.270865,0.00436502,371.515 383 | -286.799,0.801167,0.183572,3,15,0,288.588,0.136024,0.285086,0.00435067,353.992 384 | -285.511,0.980248,0.183572,3,7,0,286.987,0.134535,0.281342,0.00458972,350.461 385 | -288.184,0.979824,0.183572,4,31,0,289.627,0.150361,0.246851,0.00305568,345.144 386 | -285.74,0.863356,0.183572,4,23,0,291.512,0.165762,0.265922,0.00426626,375.343 387 | -285.319,0.999394,0.183572,4,15,0,286.149,0.152724,0.279473,0.00488819,358.317 388 | -285.797,0.999357,0.183572,3,7,0,286.2,0.144717,0.285097,0.00468939,345.66 389 | -286.162,0.998568,0.183572,4,23,0,287.897,0.162969,0.264063,0.0037667,329.249 390 | -287.264,0.942812,0.183572,4,31,0,288.2,0.190148,0.260575,0.00421807,312.861 391 | -287.269,0.946517,0.183572,2,3,0,287.958,0.201587,0.265029,0.00401904,317.066 392 | -288.867,0.891474,0.183572,2,3,0,289.138,0.205083,0.267173,0.00392709,321.191 393 | -287.683,0.946437,0.183572,3,7,0,290.105,0.179941,0.265304,0.0043895,309.808 394 | -288.375,0.982526,0.183572,4,15,0,291.156,0.184991,0.268173,0.00451038,300.918 395 | -287.547,1,0.183572,5,31,0,289.453,0.157411,0.297672,0.00543225,357.352 396 | -285.399,0.998762,0.183572,3,7,0,287.573,0.157922,0.280835,0.00485745,376.63 397 | -285.82,0.967385,0.183572,4,15,0,286.333,0.156278,0.273932,0.00490982,386.42 398 | -286.025,0.999955,0.183572,4,23,0,287.042,0.170772,0.260586,0.00422136,350.016 399 | -289.905,0.97296,0.183572,4,15,0,291.091,0.160626,0.254915,0.00438696,449.418 400 | -286.724,0.998239,0.183572,4,15,0,290.344,0.11793,0.278708,0.00392773,354.736 401 | -286.769,0.999439,0.183572,5,31,0,289.205,0.180567,0.27106,0.00442782,307.875 402 | -286.068,0.999773,0.183572,4,15,0,287.152,0.172329,0.277274,0.00451656,324.671 403 | -285.398,0.986265,0.183572,4,15,0,286.745,0.177043,0.274196,0.00470154,343.827 404 | -286.095,0.943158,0.183572,4,15,0,287.542,0.200365,0.269783,0.0046577,330.76 405 | -285.201,0.993347,0.183572,5,31,0,286.949,0.128469,0.281053,0.00465186,381.205 406 | -285.577,0.994493,0.183572,4,15,0,286.199,0.128234,0.272089,0.0042749,395.846 407 | -285.535,0.979781,0.183572,5,31,0,286.317,0.125932,0.282835,0.00488522,396.58 408 | -287.643,0.971772,0.183572,4,15,0,288.241,0.16884,0.287739,0.00549094,422.059 409 | -286.63,0.949038,0.183572,4,19,0,290.14,0.143558,0.270118,0.00371693,344.144 410 | -286.769,0.997512,0.183572,3,7,0,287.301,0.143621,0.26239,0.00369748,324.299 411 | -286.068,0.864301,0.183572,2,7,0,288.835,0.150037,0.259279,0.00371441,345.497 412 | -286.731,0.996572,0.183572,4,31,0,288.57,0.181246,0.25637,0.00364886,323.725 413 | -286.597,0.983722,0.183572,4,31,0,288.716,0.148977,0.2946,0.00554117,401.997 414 | -286.381,0.916126,0.183572,4,31,0,289.051,0.167806,0.281705,0.00531758,366.406 415 | -285.73,1,0.183572,2,3,0,286.401,0.165681,0.282503,0.00521494,367.667 416 | -285.489,0.945564,0.183572,4,15,0,286.512,0.160371,0.281322,0.00472993,349.127 417 | -292.165,0.671611,0.183572,4,31,0,296.306,0.137188,0.241668,0.00234476,377.364 418 | -286.15,0.996928,0.183572,4,15,0,293.098,0.170082,0.262149,0.00421586,335.599 419 | -285.688,0.701685,0.183572,4,23,0,290.997,0.172183,0.279188,0.00501104,347.563 420 | -285.475,0.961117,0.183572,4,15,0,286.294,0.155272,0.278844,0.00502223,378.001 421 | -286.517,0.998574,0.183572,4,31,0,287.548,0.202402,0.259928,0.00442084,345.165 422 | -288.347,0.912827,0.183572,4,15,0,290.673,0.128172,0.290418,0.00440818,330.292 423 | -287.083,0.994293,0.183572,4,23,0,289.262,0.160159,0.283243,0.00506692,415.062 424 | -288.735,0.92049,0.183572,4,15,0,290.121,0.14735,0.292738,0.00527425,435.215 425 | -287.331,0.965075,0.183572,3,7,0,289.384,0.159302,0.289197,0.00569422,423.04 426 | -286.146,0.997139,0.183572,4,15,0,287.634,0.145951,0.291898,0.00547236,383.098 427 | -285.964,0.99901,0.183572,4,31,0,287.252,0.160578,0.259085,0.00376588,343.407 428 | -286.577,0.941732,0.183572,4,31,0,289.462,0.169417,0.255869,0.00386921,335.516 429 | -285.831,0.999872,0.183572,4,15,0,287.02,0.160064,0.263336,0.00385244,348.765 430 | -285.22,0.993857,0.183572,4,23,0,286.423,0.132285,0.28238,0.00467977,384.045 431 | -285.74,0.955432,0.183572,2,7,0,285.955,0.133711,0.28442,0.00465062,387.095 432 | -285.529,0.983756,0.183572,4,21,0,286.927,0.160785,0.270792,0.00434993,331.623 433 | -289.277,0.887373,0.183572,4,15,0,290.009,0.189184,0.259374,0.00393195,286.467 434 | -285.554,0.998388,0.183572,4,15,0,289.876,0.13304,0.26973,0.00410537,384.346 435 | -287.478,0.926892,0.183572,4,15,0,287.659,0.143489,0.269933,0.00420924,419.245 436 | -287.257,0.996599,0.183572,4,15,0,289.063,0.10411,0.283433,0.00409386,374.747 437 | -287.866,0.90363,0.183572,4,15,0,289.935,0.109606,0.281204,0.00459127,369.252 438 | -286.326,0.999917,0.183572,5,47,0,288.594,0.149995,0.28092,0.00460705,324.054 439 | -287.876,0.928801,0.183572,4,15,0,290.543,0.110404,0.273115,0.00402188,440.498 440 | -286.037,0.996028,0.183572,4,31,0,288.847,0.182365,0.278375,0.0048368,329.09 441 | -286.756,0.994849,0.183572,5,31,0,286.921,0.113041,0.276719,0.00455975,439.132 442 | -286.13,0.904018,0.183572,3,15,0,292.255,0.126227,0.279836,0.00490574,400.656 443 | -287.827,0.887652,0.183572,5,31,0,288.78,0.194225,0.262822,0.00455711,322.408 444 | -292.014,0.988415,0.183572,4,31,0,294.088,0.122915,0.247515,0.0024365,389.502 445 | -290.539,0.99649,0.183572,3,7,0,292.332,0.117998,0.247251,0.00265936,352.618 446 | -288.289,0.970244,0.183572,5,31,0,292.75,0.230858,0.27615,0.00550429,360.431 447 | -287.606,1,0.183572,4,23,0,290.222,0.211937,0.280344,0.00543338,380.893 448 | -287.592,0.999912,0.183572,4,15,0,288.562,0.217377,0.282969,0.00548707,348.181 449 | -286.381,0.95612,0.183572,4,15,0,288.972,0.161151,0.256458,0.00382085,342.647 450 | -285.807,0.988158,0.183572,3,11,0,286.989,0.145601,0.272452,0.00399261,344.146 451 | -286.478,0.9492,0.183572,2,3,0,286.865,0.140298,0.268473,0.0041235,332.374 452 | -285.693,0.999606,0.183572,4,15,0,286.737,0.175714,0.262366,0.00425579,348.935 453 | -286.253,0.975305,0.183572,3,15,0,287.47,0.161528,0.262895,0.00415986,388.741 454 | -287.683,0.997924,0.183572,4,15,0,288.755,0.0952506,0.294098,0.00494092,420.714 455 | -287.998,0.948863,0.183572,5,31,0,292.166,0.226199,0.269411,0.00465383,301.296 456 | -290.884,0.88209,0.183572,4,15,0,292.477,0.295484,0.257192,0.00454057,348.483 457 | -290.519,0.986356,0.183572,4,15,0,292.42,0.254748,0.252899,0.00479138,364.338 458 | -290.726,0.843824,0.183572,3,7,0,292.691,0.271336,0.264164,0.00445601,337.982 459 | -288.171,0.938308,0.183572,4,15,0,292.091,0.257755,0.265133,0.00478175,332.805 460 | -287.103,0.997397,0.183572,4,15,0,289.306,0.225998,0.272502,0.00503045,334.439 461 | -285.717,0.957154,0.183572,4,15,0,287.888,0.143082,0.267106,0.00419697,351.882 462 | -287.521,0.670021,0.183572,3,7,0,290.145,0.138881,0.273627,0.0038988,380.845 463 | -287.924,0.964123,0.183572,4,15,0,290.308,0.157882,0.290788,0.0048838,368.254 464 | -287.594,0.976325,0.183572,4,21,0,289.313,0.16692,0.271447,0.00406386,365.677 465 | -287.515,0.996494,0.183572,2,7,0,288.488,0.167094,0.27341,0.00414688,363.928 466 | -287.354,0.990697,0.183572,4,15,0,289.504,0.155379,0.253758,0.0036994,337.887 467 | -286.285,1,0.183572,3,7,0,287.304,0.164388,0.256278,0.00366455,343.016 468 | -286.715,0.906503,0.183572,5,31,0,288.828,0.162886,0.272923,0.00428776,308.951 469 | -289.696,0.916648,0.183572,4,15,0,293.344,0.130397,0.265577,0.00326541,299.029 470 | -289.843,0.766296,0.183572,3,7,0,293.126,0.141529,0.269445,0.00320107,302.677 471 | -288.068,0.955109,0.183572,4,15,0,291.435,0.159122,0.25742,0.00359869,305.197 472 | -287.299,1,0.183572,4,15,0,289.207,0.207454,0.252374,0.00398873,329.463 473 | -286.435,0.993885,0.183572,4,15,0,287.647,0.201165,0.260589,0.00419504,346.291 474 | -286.456,0.995875,0.183572,4,23,0,288.889,0.152665,0.272974,0.00469657,417.961 475 | -286.734,0.925426,0.183572,4,15,0,288.366,0.123558,0.278415,0.00402275,381.218 476 | -288.341,0.98964,0.183572,4,23,0,290.285,0.126376,0.280109,0.00417795,314.493 477 | -285.839,0.999869,0.183572,3,15,0,290.446,0.130678,0.285112,0.00454427,353.556 478 | -285.433,0.99806,0.183572,3,15,0,286.506,0.125863,0.282091,0.00478626,402.107 479 | -286.963,0.975515,0.183572,3,11,0,287.456,0.104946,0.290908,0.00462525,382.9 480 | -289.321,0.804661,0.183572,2,3,0,289.56,0.0975394,0.288641,0.00466622,372.758 481 | -286.945,0.951226,0.183572,5,47,0,290.623,0.155041,0.267189,0.00380617,308.146 482 | -286.014,0.876714,0.183572,4,31,0,291.073,0.15764,0.282222,0.00505484,401.459 483 | -286.253,1,0.183572,5,31,0,286.79,0.147466,0.260637,0.00368986,367.99 484 | -288.899,0.967292,0.183572,4,15,0,290.627,0.123344,0.284524,0.00441839,317.191 485 | -286.9,0.855864,0.183572,3,15,0,292.977,0.112918,0.286888,0.00435915,358.427 486 | -285.471,0.998502,0.183572,4,15,0,287.998,0.161836,0.264886,0.00428065,369.812 487 | -286.245,0.910407,0.183572,5,31,0,287.531,0.108521,0.28611,0.00455523,388.945 488 | -288.777,0.829204,0.183572,4,23,0,289.503,0.206737,0.254216,0.00428287,321.633 489 | -287.765,0.945725,0.183572,4,15,0,290.443,0.185454,0.27417,0.0044361,367.421 490 | -285.667,0.980929,0.183572,4,23,0,289.143,0.1561,0.264267,0.0039598,335.706 491 | -287.277,0.867937,0.183572,4,23,0,288.676,0.1457,0.286083,0.00481478,405.986 492 | -287.182,0.992689,0.183572,5,31,0,289.039,0.146406,0.266643,0.00349761,321.825 493 | -286.283,0.99774,0.183572,4,15,0,288.047,0.147484,0.276117,0.00498668,417.886 494 | -287.27,0.97834,0.183572,4,15,0,287.957,0.101306,0.275576,0.00399712,392.116 495 | -286.731,0.998733,0.183572,4,31,0,288.06,0.122282,0.273998,0.00464252,434.364 496 | -285.681,0.889307,0.183572,4,15,0,288.507,0.152395,0.281692,0.00477128,382.559 497 | -285.794,0.999087,0.183572,3,11,0,286.21,0.15428,0.282064,0.00517949,373.3 498 | -287.92,0.921,0.183572,4,31,0,288.641,0.104309,0.294188,0.00519128,397.862 499 | -287.964,0.996865,0.183572,4,31,0,290.647,0.127675,0.256802,0.00357174,414.68 500 | -288.486,0.983652,0.183572,4,15,0,289.626,0.129488,0.25008,0.00335082,396.499 501 | -288.562,0.99963,0.183572,4,31,0,290.063,0.210831,0.276277,0.0046222,295.717 502 | -287.357,0.851028,0.183572,4,15,0,291.761,0.238401,0.266527,0.00475596,333.124 503 | -287.706,0.998458,0.183572,5,31,0,289.223,0.106659,0.269574,0.00349386,369.804 504 | -287.045,0.90993,0.183572,4,31,0,290.8,0.190254,0.27287,0.00517857,395.028 505 | -285.571,1,0.183572,4,15,0,287.447,0.166837,0.267547,0.0045636,375.538 506 | -285.807,0.977849,0.183572,4,31,0,286.978,0.124664,0.27538,0.00458815,402.752 507 | -286.37,0.974447,0.183572,2,7,0,287.098,0.1251,0.273033,0.00460414,409.653 508 | -285.629,0.997632,0.183572,4,31,0,289.689,0.168096,0.263863,0.0040165,346.249 509 | -285.4,0.946254,0.183572,5,31,0,286.838,0.152255,0.264796,0.00411694,365.648 510 | -285.047,0.999124,0.183572,5,31,0,285.886,0.145643,0.27736,0.00459612,356.779 511 | -285.664,0.968613,0.183572,3,15,0,286.38,0.13702,0.283093,0.00449331,354.544 512 | -285.534,0.997352,0.183572,4,31,0,286.231,0.144271,0.283053,0.00482988,348.925 513 | -286.065,0.883624,0.183572,4,31,0,287.475,0.157882,0.268886,0.00415462,375.676 514 | -287.158,0.996404,0.183572,5,31,0,288.01,0.146482,0.257323,0.00339582,324.173 515 | -285.383,0.993682,0.183572,4,23,0,287.629,0.143332,0.277035,0.00469961,397.511 516 | -286.289,0.993254,0.183572,4,19,0,287.508,0.133074,0.263693,0.00397479,399.269 517 | -285.566,0.995755,0.183572,2,7,0,287.173,0.135233,0.268143,0.00408607,383.29 518 | -286.528,0.941304,0.183572,5,31,0,286.896,0.138014,0.271019,0.00408297,397.486 519 | -286.09,0.964286,0.183572,3,15,0,288.411,0.120714,0.277051,0.00467342,413.341 520 | -286.082,0.964519,0.183572,5,31,0,286.986,0.134199,0.284742,0.00512003,377.763 521 | -285.645,0.848487,0.183572,2,3,0,287.497,0.129662,0.284687,0.00501107,385.646 522 | -285.935,0.992103,0.183572,4,15,0,286.351,0.148568,0.287741,0.00531061,371.131 523 | -286.153,0.817889,0.183572,4,15,0,288.503,0.164445,0.285516,0.00507971,338.216 524 | -285.548,1,0.183572,4,15,0,286.226,0.151479,0.265262,0.00420993,379.668 525 | -285.993,0.988047,0.183572,4,31,0,288.916,0.190857,0.263379,0.00423147,328.54 526 | -285.731,0.999954,0.183572,4,15,0,286.277,0.167112,0.265195,0.00401427,328.939 527 | -287.608,0.942107,0.183572,4,31,0,289.731,0.114245,0.288865,0.00492295,458.47 528 | -286.55,0.972584,0.183572,4,15,0,288.672,0.137971,0.296254,0.00526444,377.059 529 | -287.878,0.847696,0.183572,3,7,0,289.061,0.122803,0.295174,0.00530194,359.331 530 | -287.88,0.916751,0.183572,5,31,0,289.24,0.144458,0.255446,0.00407114,401.626 531 | -285.619,0.973021,0.183572,3,15,0,290.222,0.135575,0.288091,0.00484805,369.576 532 | -287.536,0.969252,0.183572,3,7,0,288.26,0.135223,0.298374,0.00533054,352.194 533 | -288.735,0.809163,0.183572,5,31,0,290.909,0.128868,0.260799,0.00315009,314.89 534 | -287.18,0.912346,0.183572,4,15,0,290.778,0.12751,0.267043,0.00340649,343.548 535 | -286.559,0.999752,0.183572,5,31,0,288.469,0.129117,0.295622,0.00540338,378.739 536 | -288.102,0.842797,0.183572,4,15,0,290.473,0.117712,0.306644,0.00584533,412.295 537 | -287.574,0.907642,0.183572,5,31,0,290.005,0.110465,0.272841,0.00424818,450.269 538 | -286.743,0.977859,0.183572,3,7,0,288.025,0.118729,0.273191,0.00428687,431.775 539 | -289.784,0.887616,0.183572,4,31,0,293.744,0.188583,0.28253,0.0057341,447.856 540 | -289.477,0.989905,0.183572,4,15,0,292.195,0.119715,0.295823,0.00471968,329.22 541 | -291.471,0.995289,0.183572,4,15,0,292.054,0.139344,0.249394,0.00391957,473.306 542 | -289.066,0.999142,0.183572,3,7,0,293.02,0.143173,0.255168,0.00406221,444.818 543 | -287.615,0.976908,0.183572,3,7,0,290.426,0.14375,0.258042,0.00415914,417.244 544 | -287.115,0.999186,0.183572,4,31,0,290.305,0.175294,0.257588,0.00367289,309.012 545 | -285.667,0.993736,0.183572,4,31,0,289.489,0.127361,0.27141,0.00415578,392.576 546 | -285.263,0.946759,0.183572,3,15,0,287.282,0.138382,0.278356,0.00479484,391.716 547 | -288.15,0.905402,0.183572,4,15,0,289.627,0.0924837,0.29846,0.0051526,452.847 548 | -286.383,0.998876,0.183572,4,15,0,288.58,0.138807,0.283319,0.00514199,430.849 549 | -286.445,0.986771,0.183572,4,15,0,287.56,0.144925,0.293625,0.00533329,358.954 550 | -286.673,0.791525,0.183572,4,23,0,291.476,0.153581,0.257163,0.00343005,341.601 551 | -287.077,0.989427,0.183572,3,15,0,290.499,0.218978,0.262741,0.00472961,360.433 552 | -285.788,0.978144,0.183572,4,15,0,287.495,0.186095,0.274458,0.00485543,339.965 553 | -287.213,0.89193,0.183572,4,23,0,289.071,0.128905,0.286218,0.00464858,331.381 554 | -285.677,0.991497,0.183572,3,15,0,290.614,0.175594,0.276423,0.00460325,336.636 555 | -285.338,0.996772,0.183572,4,15,0,285.903,0.169902,0.27548,0.00481639,351.792 556 | -285.376,0.977065,0.183572,5,31,0,286.741,0.148148,0.270706,0.0041015,355.937 557 | -285.825,0.997591,0.183572,3,15,0,286.568,0.137649,0.278821,0.00450435,339.379 558 | -286.314,0.997571,0.183572,3,15,0,286.929,0.128547,0.278527,0.00404378,344.013 559 | -285.732,0.999925,0.183572,4,15,0,286.613,0.13667,0.268798,0.00402668,344.677 560 | -286.157,0.9961,0.183572,4,31,0,286.813,0.184795,0.257724,0.00400191,340.669 561 | -286.218,0.992841,0.183572,4,15,0,288.33,0.18468,0.261511,0.00404427,321.084 562 | -285.742,0.963193,0.183572,5,31,0,287.436,0.142749,0.277056,0.00491942,389.842 563 | -285.85,1,0.183572,5,31,0,287.157,0.1363,0.264565,0.00375999,357.213 564 | -285.109,0.994678,0.183572,4,15,0,286.862,0.153724,0.276272,0.00477421,375.364 565 | -286.856,0.97536,0.183572,4,15,0,287.951,0.102425,0.287574,0.00447181,408.593 566 | -286.653,0.997572,0.183572,4,31,0,288.131,0.197659,0.279619,0.00532666,355.243 567 | -287.334,0.770972,0.183572,5,31,0,290.273,0.194049,0.270616,0.00452321,302.694 568 | -288.348,0.946799,0.183572,4,15,0,289.792,0.235295,0.264019,0.00469312,371.263 569 | -288.457,0.994177,0.183572,4,15,0,291.074,0.23428,0.272183,0.00509486,314.351 570 | -287.984,1,0.183572,4,31,0,289.62,0.23759,0.269558,0.00495292,316.931 571 | -287.411,0.913612,0.183572,3,7,0,288.808,0.214646,0.27469,0.00467325,328.754 572 | -285.565,0.990693,0.183572,4,15,0,288.591,0.166656,0.275977,0.00470802,376.008 573 | -286.283,0.973083,0.183572,3,15,0,287.768,0.199302,0.276762,0.00511316,360.333 574 | -286.635,0.914015,0.183572,4,15,0,287.993,0.19921,0.277493,0.00490421,355.79 575 | -288.068,0.959628,0.183572,4,15,0,288.733,0.103881,0.272443,0.0039248,369.675 576 | -288.207,0.916373,0.183572,5,31,0,290.884,0.151257,0.28684,0.00440187,340.793 577 | -288.021,0.994712,0.183572,3,15,0,289.591,0.126337,0.27233,0.00424631,334.263 578 | -286.762,1,0.183572,3,7,0,289.621,0.136074,0.280452,0.00469769,336.968 579 | -286.712,0.878047,0.183572,4,23,0,289.308,0.148611,0.280036,0.00470025,324.664 580 | -286.269,0.999791,0.183572,4,15,0,286.969,0.142535,0.271241,0.00445562,415.348 581 | -286.069,0.999756,0.183572,4,15,0,286.576,0.137603,0.270967,0.00444613,414.48 582 | -285.763,0.997705,0.183572,4,31,0,286.948,0.148915,0.27271,0.00410774,329.424 583 | -286.082,0.940918,0.183572,4,31,0,287.997,0.129301,0.268674,0.00399767,349.88 584 | -286.088,0.997522,0.183572,4,31,0,287.889,0.146038,0.28458,0.00531581,395.576 585 | -285.918,0.804429,0.183572,2,3,0,287.671,0.148651,0.283828,0.0052613,386.162 586 | -285.657,1,0.183572,4,15,0,286.725,0.124593,0.287902,0.00479425,389.268 587 | -287.902,0.981767,0.183572,4,23,0,289.497,0.230367,0.263742,0.00490513,373.619 588 | -286.495,0.902731,0.183572,4,15,0,289.759,0.184823,0.285874,0.00525643,347.17 589 | -286.262,0.980066,0.183572,5,31,0,288.81,0.120889,0.268909,0.00400261,403.17 590 | -285.906,0.978241,0.183572,4,15,0,287.56,0.125815,0.269819,0.00405928,361.635 591 | -285.548,0.989605,0.183572,4,31,0,286.878,0.173035,0.26436,0.00420467,355.287 592 | -285.392,0.996608,0.183572,4,31,0,286.675,0.122307,0.281479,0.00456555,382.079 593 | -285.648,0.970106,0.183572,3,7,0,285.822,0.122579,0.282512,0.00449265,391.231 594 | -286.166,0.998311,0.183572,4,15,0,286.447,0.113753,0.282365,0.00440188,368.57 595 | -288.36,0.757102,0.183572,4,23,0,290.517,0.171965,0.283886,0.00462698,364.649 596 | -287.346,1,0.183572,2,3,0,288.591,0.17046,0.28163,0.0046023,362.822 597 | -285.235,1,0.183572,2,3,0,287.211,0.159487,0.278422,0.00490833,363.18 598 | -285.62,0.998296,0.183572,4,15,0,286.236,0.128002,0.285576,0.00464028,362.507 599 | -285.87,0.991379,0.183572,3,7,0,286.138,0.130036,0.287968,0.00477448,356.927 600 | -286.123,0.999635,0.183572,4,23,0,286.789,0.140567,0.286841,0.00525461,419.537 601 | -289.529,0.982196,0.183572,4,15,0,290.101,0.0851069,0.298541,0.00521604,495.697 602 | -289.133,0.97539,0.183572,4,15,0,290.504,0.105148,0.288851,0.0050662,503.76 603 | -288.275,0.995096,0.183572,4,15,0,289.703,0.109039,0.290857,0.00522095,487.109 604 | -286.762,0.794601,0.183572,4,15,0,291.399,0.107258,0.293177,0.0051299,410.689 605 | -287.794,0.971859,0.183572,4,31,0,290.218,0.178438,0.248377,0.00331761,344.443 606 | -286.771,0.980183,0.183572,4,15,0,289.083,0.158472,0.258452,0.00376282,378.99 607 | -287.793,0.976847,0.183572,4,31,0,289.845,0.103203,0.294632,0.00460801,403.482 608 | -288.052,0.988138,0.183572,2,3,0,288.149,0.104229,0.295341,0.00461102,404.878 609 | -287.327,0.911253,0.183572,4,15,0,289.948,0.134208,0.292076,0.00510952,424.832 610 | -287.407,0.988752,0.183572,5,31,0,290.706,0.195683,0.265099,0.00486749,356.544 611 | -288.862,0.999429,0.183572,5,31,0,290.156,0.10202,0.272785,0.00448313,454.23 612 | -286.064,0.880592,0.183572,4,23,0,291.485,0.144149,0.262701,0.00407304,392.061 613 | -285.082,0.999939,0.183572,4,15,0,286.277,0.160913,0.270621,0.00443275,355.602 614 | -285.312,0.991051,0.183572,4,31,0,285.557,0.130674,0.274129,0.00424002,362.705 615 | -285.181,0.993966,0.183572,4,31,0,286.441,0.140237,0.275836,0.00444115,352.981 616 | -288.122,0.73923,0.183572,2,7,0,289.381,0.135806,0.282625,0.00402394,352.876 617 | -289.14,0.967448,0.183572,3,11,0,289.831,0.148642,0.278673,0.00435866,413.547 618 | -287.432,0.986482,0.183572,2,3,0,289.915,0.142139,0.275937,0.00432001,410.364 619 | -285.941,0.981505,0.183572,5,31,0,288.51,0.147312,0.287528,0.00488451,346.125 620 | -285.048,0.997954,0.183572,4,15,0,286.301,0.142601,0.27745,0.00447497,360.621 621 | -285.093,0.997574,0.183572,3,15,0,285.393,0.163396,0.272862,0.00457008,360.938 622 | -286.826,0.862226,0.183572,2,3,0,287.098,0.155809,0.271404,0.00480899,358.876 623 | -287.106,0.996825,0.183572,4,15,0,289.032,0.154945,0.289864,0.00487246,362.292 624 | -286.008,0.991042,0.183572,3,15,0,289.446,0.138612,0.265737,0.00384637,377.106 625 | -285.768,0.995043,0.183572,4,19,0,286.903,0.165092,0.283333,0.00506695,346.06 626 | -286.161,0.860299,0.183572,4,31,0,287.814,0.147486,0.287118,0.00540569,389.032 627 | -285.962,0.999989,0.183572,4,15,0,286.685,0.147471,0.289277,0.00541177,394.761 628 | -285.617,0.982901,0.183572,4,31,0,287.344,0.158187,0.285452,0.00509803,355.167 629 | -285.616,0.9697,0.183572,4,31,0,286.339,0.170237,0.265425,0.00443926,354.256 630 | -287.249,0.838979,0.183572,3,15,0,288.657,0.127753,0.277234,0.00383805,363.362 631 | -289.099,0.898048,0.183572,2,3,0,289.542,0.129166,0.280227,0.00379728,369.966 632 | -288.226,0.935457,0.183572,3,11,0,291.131,0.142656,0.287141,0.00462798,398.504 633 | -288.43,0.960252,0.183572,3,7,0,290.454,0.109321,0.293336,0.00501923,362.817 634 | -291.74,0.641089,0.183572,4,15,0,292.839,0.162827,0.27702,0.00455714,444.745 635 | -288.926,0.945366,0.183572,4,15,0,293.55,0.160028,0.276993,0.00486044,445.22 636 | -292.448,0.982151,0.183572,4,15,0,294.249,0.142301,0.312779,0.00646313,372.564 637 | -288.68,0.996559,0.183572,4,15,0,293.481,0.168228,0.289894,0.00594391,401.174 638 | -288.096,0.975877,0.183572,4,31,0,290.612,0.10406,0.284661,0.00422635,429.751 639 | -287.477,1,0.183572,2,3,0,288.181,0.102001,0.284501,0.00429881,427.595 640 | -288.699,0.909249,0.183572,3,15,0,290.236,0.0987081,0.281873,0.00463899,402.643 641 | -288.618,0.957753,0.183572,4,31,0,290.904,0.176379,0.267973,0.00406296,380.582 642 | -287.068,0.993088,0.183572,4,19,0,290.469,0.139328,0.28098,0.00459818,415.732 643 | -287.372,0.874426,0.183572,2,3,0,289.39,0.123568,0.277502,0.00489781,399.21 644 | -285.367,0.962652,0.183572,2,3,0,287.876,0.127091,0.281283,0.00471812,399.71 645 | -287.737,0.909067,0.183572,4,31,0,291.405,0.182268,0.249577,0.00332024,321.683 646 | -285.543,0.984607,0.183572,4,23,0,289.241,0.134382,0.282931,0.00467124,391.363 647 | -285.848,0.891421,0.183572,2,7,0,287.812,0.133182,0.289241,0.00490754,388.245 648 | -287.984,0.989746,0.183572,5,31,0,289.949,0.150305,0.253341,0.00317881,362.263 649 | -290.83,0.994281,0.183572,4,15,0,291.317,0.187829,0.25056,0.00281984,294.252 650 | -290.306,0.916255,0.183572,4,23,0,294.472,0.176629,0.25813,0.00372702,401.296 651 | -288.483,0.991088,0.183572,3,15,0,292.821,0.129989,0.255439,0.0035624,348.685 652 | -287.622,1,0.183572,2,3,0,288.357,0.131676,0.25655,0.00354888,349.745 653 | -286.608,0.999977,0.183572,4,15,0,288.693,0.124439,0.263129,0.00356009,372.86 654 | -285.658,0.945034,0.183572,3,15,0,288.95,0.150114,0.265612,0.00424858,386.392 655 | -285.508,0.944273,0.183572,4,23,0,287.038,0.162369,0.264024,0.00406488,357.117 656 | -285.366,0.874642,0.183572,3,15,0,288.938,0.162817,0.27635,0.00464885,369.738 657 | -285.836,0.995523,0.183572,4,15,0,286.27,0.117627,0.279944,0.00429175,389.6 658 | -287.143,0.942857,0.183572,5,31,0,288.512,0.189504,0.286381,0.0053225,373.75 659 | -289.824,0.948706,0.183572,2,7,0,292.028,0.218534,0.291139,0.0061436,378.986 660 | -288.237,0.454933,0.183572,2,7,0,293.662,0.199461,0.28627,0.00524486,371.149 661 | -288.131,0.988233,0.183572,4,31,0,292.43,0.208632,0.277868,0.00524297,320.124 662 | -287.091,0.726608,0.183572,2,3,0,290.637,0.196415,0.281685,0.00491091,339.643 663 | -286.361,0.978121,0.183572,4,31,0,289.272,0.123561,0.287644,0.00452437,378.497 664 | -286.082,0.897211,0.183572,3,11,0,289.381,0.150415,0.27406,0.00491493,388.414 665 | -288.554,0.796863,0.183572,3,11,0,290.872,0.162483,0.273621,0.00450675,420.252 666 | -288.058,0.97388,0.183572,4,31,0,290.826,0.131543,0.261548,0.00322256,319.599 667 | -288.548,0.936791,0.183572,4,15,0,289.949,0.147208,0.253608,0.00336444,315.418 668 | -287.818,0.998251,0.183572,3,7,0,289.097,0.151538,0.255187,0.00327837,313.626 669 | -288.776,0.998178,0.183572,4,15,0,289.732,0.125086,0.251288,0.00291486,368.768 670 | -290.488,0.915403,0.183572,3,7,0,292.045,0.12492,0.2432,0.00273329,390.705 671 | -291.636,0.994958,0.183572,4,15,0,292.583,0.153433,0.235003,0.00290304,408.371 672 | -289.042,0.989054,0.183572,4,31,0,296.932,0.253504,0.255697,0.00455712,367.41 673 | -286.164,0.991296,0.183572,4,31,0,289.613,0.135626,0.27997,0.00451631,335.706 674 | -285.136,0.949069,0.183572,4,31,0,288.017,0.141864,0.282835,0.00477288,367.781 675 | -286.29,0.994969,0.183572,4,15,0,286.596,0.122879,0.27575,0.00451341,428.358 676 | -286.484,0.952072,0.183572,4,31,0,287.245,0.164593,0.279614,0.00441581,328.47 677 | -286.365,0.908957,0.183572,3,15,0,289.155,0.144225,0.282456,0.00435721,339.502 678 | -286.316,0.971824,0.183572,4,15,0,288.503,0.187831,0.278749,0.00519465,380.068 679 | -286.906,0.938091,0.183572,2,3,0,287.476,0.198081,0.276306,0.00528423,383.896 680 | -290.132,0.97413,0.183572,4,15,0,290.953,0.213608,0.290339,0.00617747,404.546 681 | -289.034,0.861425,0.183572,5,31,0,293.834,0.202172,0.241473,0.00360888,364.968 682 | -289.217,0.997288,0.183572,4,15,0,289.608,0.200489,0.241864,0.00365544,375.941 683 | -289.891,0.929624,0.183572,2,3,0,290.212,0.197147,0.239498,0.00369417,375.698 684 | -288.329,0.800309,0.183572,3,7,0,292.821,0.192756,0.250647,0.00345117,349.081 685 | -287.638,0.99777,0.183572,4,31,0,289.775,0.169861,0.285819,0.00536313,334.195 686 | -286.22,1,0.183572,4,19,0,288.548,0.164637,0.282611,0.00465934,336.403 687 | -287.514,0.919662,0.183572,4,15,0,287.976,0.170175,0.274559,0.00505484,345.258 688 | -286.341,0.903365,0.183572,3,15,0,289.556,0.155628,0.282215,0.00458752,366.25 689 | -286.489,0.854768,0.183572,4,23,0,291.315,0.19049,0.276696,0.00474622,356.623 690 | -286.556,0.983182,0.183572,4,15,0,287.255,0.170739,0.284972,0.00484525,347.679 691 | -285.757,0.936762,0.183572,2,3,0,287.554,0.164291,0.283918,0.00496545,343.145 692 | -285.578,0.851907,0.183572,4,19,0,288.142,0.126479,0.277817,0.00449963,404.403 693 | -287.266,0.997758,0.183572,4,15,0,287.735,0.112421,0.300841,0.00551413,437.383 694 | -287.286,0.997023,0.183572,3,7,0,287.465,0.115035,0.301053,0.0056417,433.166 695 | -285.827,0.995814,0.183572,5,31,0,288.929,0.184723,0.265889,0.0043164,327.909 696 | -286.647,0.926602,0.183572,3,7,0,286.832,0.1936,0.270814,0.00431016,328.224 697 | -285.178,0.992411,0.183572,4,15,0,286.867,0.164959,0.274764,0.00473856,356.135 698 | -286.026,0.93616,0.183572,4,15,0,286.188,0.171674,0.276879,0.00445912,337.876 699 | -285.171,0.994083,0.183572,3,7,0,286.077,0.158621,0.274424,0.00446767,343.186 700 | -285.671,0.97984,0.183572,4,31,0,286.246,0.151537,0.272974,0.00464514,400.073 701 | -286.054,0.962486,0.183572,3,15,0,287.262,0.169107,0.273165,0.00497893,390.171 702 | -286.172,1,0.183572,4,15,0,287.262,0.195094,0.278839,0.00512818,353.73 703 | -286.843,0.991132,0.183572,5,31,0,289.57,0.112466,0.268505,0.00367626,383.954 704 | -288.661,0.942964,0.183572,4,31,0,290.082,0.167962,0.249037,0.00305913,347.243 705 | -287.59,0.973181,0.183572,4,23,0,290.855,0.149783,0.25314,0.0038437,401.683 706 | -286.168,0.960224,0.183572,3,15,0,288.951,0.155206,0.26755,0.00463169,379.471 707 | -285.612,0.992132,0.183572,3,15,0,286.895,0.148631,0.281153,0.00461125,372.336 708 | -285.171,0.995098,0.183572,4,19,0,285.917,0.156518,0.267903,0.00422881,354.874 709 | -285.386,0.942205,0.183572,4,23,0,286.084,0.133901,0.2733,0.00414093,353.614 710 | -287.01,0.947578,0.183572,5,31,0,287.278,0.13247,0.272477,0.00365016,344.213 711 | -287.193,0.933638,0.183572,3,15,0,288.952,0.121584,0.269826,0.00429044,370.988 712 | -287.303,0.984399,0.183572,2,7,0,289.899,0.119182,0.281155,0.00392371,349.298 713 | -286.451,1,0.183572,4,15,0,287.667,0.11593,0.279968,0.00406844,359.347 714 | -285.517,0.99147,0.183572,4,15,0,287.555,0.14568,0.266485,0.00391752,354.266 715 | -286.747,0.980461,0.183572,4,15,0,287.097,0.138376,0.260944,0.00385649,401.743 716 | -285.918,0.985168,0.183572,3,7,0,287.031,0.138897,0.26258,0.00394113,380.057 717 | -286.425,0.934952,0.183572,5,31,0,287.141,0.168263,0.272744,0.00475972,334.57 718 | -285.491,1,0.183572,4,23,0,287.456,0.121072,0.284176,0.00463882,382.226 719 | -286.818,0.795413,0.183572,2,3,0,287.588,0.125074,0.290276,0.00461886,381.409 720 | -285.603,0.985653,0.183572,4,31,0,288.07,0.17115,0.279307,0.00473657,345.895 721 | -287.391,0.994475,0.183572,4,15,0,287.981,0.201715,0.275765,0.00486466,309.32 722 | -292.342,0.439635,0.183572,3,7,0,294.728,0.192801,0.258869,0.0045208,307.327 723 | -290.936,1,0.183572,3,7,0,293.092,0.188585,0.259766,0.00446457,308.854 724 | -285.425,0.984049,0.183572,4,19,0,291.541,0.150799,0.275831,0.00461176,388.495 725 | -286.226,0.986887,0.183572,3,15,0,287.682,0.144784,0.287276,0.0054111,393.128 726 | -285.831,1,0.183572,3,7,0,286.21,0.149247,0.288744,0.00530669,394.317 727 | -286.612,0.932085,0.183572,5,31,0,287.793,0.186777,0.260278,0.00389955,344.367 728 | -286.722,0.988258,0.183572,3,15,0,287.579,0.156982,0.277077,0.00413375,327.027 729 | -286.389,0.992374,0.183572,3,15,0,287.213,0.142963,0.266109,0.004166,342.076 730 | -285.745,0.999242,0.183572,3,15,0,287.512,0.149972,0.265069,0.00382218,349.55 731 | -285.794,0.954193,0.183572,4,31,0,288.073,0.117456,0.285195,0.00454904,388.482 732 | -285.477,0.999882,0.183572,4,15,0,286.099,0.124959,0.28362,0.00463485,368.999 733 | -287.511,0.949039,0.183572,3,7,0,287.984,0.110241,0.294129,0.00489575,365.193 734 | -287.053,0.905679,0.183572,4,31,0,289.219,0.134768,0.293547,0.00511261,410.278 735 | -287.247,0.986623,0.183572,2,3,0,287.773,0.129259,0.286816,0.00538996,405.484 736 | -287.481,0.930695,0.183572,4,19,0,289.489,0.144039,0.268283,0.00361735,361.396 737 | -286.489,1,0.183572,2,3,0,287.641,0.141957,0.265786,0.00364896,359.699 738 | -286.844,0.954901,0.183572,5,31,0,288.848,0.185811,0.282304,0.0049354,359.819 739 | -287.471,0.95554,0.183572,2,5,0,288.173,0.19254,0.28369,0.0050114,359.463 740 | -287.027,0.990165,0.183572,2,7,0,288.502,0.160045,0.27795,0.0050358,343.092 741 | -285.561,0.946136,0.183572,4,31,0,288.073,0.166896,0.277155,0.00494121,383.893 742 | -285.907,0.999083,0.183572,4,23,0,287.317,0.196156,0.26562,0.00444507,337.638 743 | -287.442,0.871827,0.183572,4,15,0,290.309,0.17351,0.265769,0.00437547,313.867 744 | -287.74,0.994829,0.183572,4,31,0,288.584,0.206973,0.274931,0.00449114,316.232 745 | -288.184,0.983387,0.183572,5,31,0,289.545,0.0936426,0.27854,0.00434181,444.493 746 | -286.139,0.86074,0.183572,4,15,0,292.639,0.109926,0.284902,0.00446765,391.102 747 | -285.848,0.999692,0.183572,4,15,0,286.61,0.116797,0.287189,0.00468182,379.713 748 | -285.471,0.996739,0.183572,4,23,0,287.385,0.127081,0.279465,0.00439969,359.481 749 | -285.738,0.891802,0.183572,3,15,0,288.593,0.156173,0.283631,0.00482124,369.677 750 | -285.987,0.97042,0.183572,4,23,0,286.723,0.166682,0.267972,0.00460464,351.131 751 | -285.487,1,0.183572,3,15,0,286.926,0.12801,0.271528,0.00410199,376.892 752 | -288.537,0.834095,0.183572,4,23,0,290.409,0.142787,0.260209,0.00370347,313.621 753 | -290.298,0.971488,0.183572,4,15,0,290.942,0.222658,0.250185,0.00447316,348.525 754 | -287.784,1,0.183572,4,15,0,292.347,0.188297,0.25148,0.00414981,380.807 755 | -287.291,0.998665,0.183572,4,15,0,289.016,0.166161,0.254012,0.00352264,317.438 756 | -288.971,0.996617,0.183572,3,11,0,290.094,0.174322,0.256793,0.0032049,293.238 757 | -287.528,0.995143,0.183572,4,15,0,289.658,0.156241,0.261201,0.00337254,310.767 758 | -287.102,0.99657,0.183572,3,7,0,288.381,0.151659,0.260793,0.00343829,316.132 759 | -287.449,0.934403,0.183572,4,15,0,289.711,0.140115,0.257128,0.00358739,334.496 760 | -286.468,1,0.183572,4,15,0,287.82,0.139259,0.257919,0.00369301,362.994 761 | -287.6,0.903609,0.183572,5,31,0,288.967,0.123567,0.279319,0.00420374,415.567 762 | -289.519,0.980716,0.183572,4,31,0,290.259,0.207649,0.260495,0.00438493,296.563 763 | -288.178,1,0.183572,2,3,0,289.599,0.204599,0.261307,0.0042905,300.002 764 | -286.112,0.996533,0.183572,4,23,0,288.82,0.122742,0.283865,0.00466536,416.428 765 | -286.053,0.986199,0.183572,5,31,0,287.054,0.193437,0.264425,0.00436526,354.286 766 | -285.529,0.997477,0.183572,4,31,0,286.424,0.134618,0.285091,0.00472531,356.002 767 | -286.843,0.922786,0.183572,4,15,0,288.69,0.183219,0.269492,0.00459502,390.046 768 | -286.747,0.993656,0.183572,4,15,0,287.661,0.161784,0.280757,0.00470515,316.201 769 | -290.046,0.932725,0.183572,4,15,0,290.913,0.215918,0.239356,0.00326173,349.624 770 | -290.325,0.893805,0.183572,5,31,0,295.025,0.123605,0.291172,0.00565909,397.172 771 | -286.068,1,0.183572,2,7,0,291.002,0.130698,0.289927,0.00533965,403.082 772 | -286.997,0.643968,0.183572,2,7,0,290.622,0.141993,0.288134,0.00554915,404.375 773 | -286.614,0.932941,0.183572,4,31,0,289.529,0.131444,0.292314,0.00495148,396.104 774 | -285.984,0.939443,0.183572,4,19,0,290.477,0.165167,0.274231,0.00453419,323.144 775 | -289.471,0.962506,0.183572,3,7,0,290.289,0.203689,0.274388,0.0046763,285.688 776 | -289.987,0.906031,0.183572,4,31,0,292.836,0.106639,0.285002,0.00466496,497.344 777 | -291.157,0.991136,0.183572,4,15,0,292.821,0.0801651,0.281766,0.00408955,498.048 778 | -285.02,0.999956,0.183572,4,15,0,291.975,0.144133,0.278245,0.00455466,361.869 779 | -287.182,0.97537,0.183572,4,15,0,288.5,0.111811,0.278585,0.00383194,359.881 780 | -286.902,0.999887,0.183572,4,31,0,288.083,0.193121,0.252726,0.00394725,353.973 781 | -285.517,0.981832,0.183572,3,15,0,288.048,0.145901,0.266116,0.00399997,345.78 782 | -286.524,0.989154,0.183572,5,31,0,286.986,0.164222,0.264726,0.00386423,312.241 783 | -286.157,0.91931,0.183572,4,15,0,287.936,0.189209,0.261922,0.00407578,341.217 784 | -286.566,0.990299,0.183572,4,31,0,287.075,0.154051,0.265607,0.00363724,327.002 785 | -286.557,0.976727,0.183572,4,23,0,290.35,0.173233,0.274127,0.00469695,320.169 786 | -288.051,0.903913,0.183572,2,3,0,288.133,0.17136,0.273449,0.00479447,316.502 787 | -287.063,0.994725,0.183572,4,23,0,289.074,0.156644,0.284519,0.00450985,344.303 788 | -288.324,0.989686,0.183572,4,15,0,291.412,0.117862,0.268064,0.00384333,436.851 789 | -285.652,0.999132,0.183572,4,15,0,288.685,0.146151,0.268419,0.0040027,367.336 790 | -285.424,0.986104,0.183572,5,31,0,286.296,0.174304,0.276435,0.00481908,345.749 791 | -289.258,0.721794,0.183572,4,27,0,289.808,0.188481,0.262113,0.00462345,324.906 792 | -290.292,1,0.183572,4,31,0,291.468,0.144081,0.244852,0.00315396,331.415 793 | -288.444,0.958573,0.183572,2,3,0,290.889,0.147096,0.247937,0.00318822,335.508 794 | -290.436,0.96947,0.183572,3,7,0,290.604,0.153083,0.247567,0.00280202,371.304 795 | -288.062,0.990284,0.183572,4,31,0,292.319,0.178257,0.272616,0.00399859,299.247 796 | -290.002,0.8221,0.183572,4,19,0,295.485,0.102608,0.281747,0.00508884,457.301 797 | -286.847,0.980504,0.183572,5,31,0,292.266,0.112014,0.280267,0.00398532,376.333 798 | -285.702,0.97258,0.183572,4,31,0,288.065,0.180792,0.268003,0.00467422,362.926 799 | -285.697,0.945244,0.183572,4,23,0,287.906,0.138363,0.283769,0.00477362,395.606 800 | -285.516,0.879379,0.183572,3,11,0,287.942,0.134501,0.282874,0.00453951,372.208 801 | -288.294,0.983308,0.183572,4,15,0,289.283,0.198005,0.250042,0.0041987,379.11 802 | -289.287,0.965223,0.183572,4,15,0,290.481,0.167567,0.280802,0.00481699,297.076 803 | -288.624,0.980434,0.183572,3,7,0,290.155,0.172512,0.286367,0.00471755,305.014 804 | -287.069,0.992737,0.183572,3,7,0,289.913,0.167775,0.287569,0.00498184,324.549 805 | -287.548,0.981314,0.183572,4,15,0,289.511,0.201029,0.258237,0.00439534,387.091 806 | -288.52,0.906834,0.183572,4,15,0,289.814,0.109666,0.275397,0.00353993,338.349 807 | -287.131,0.988597,0.183572,3,7,0,289.488,0.125981,0.268667,0.00352945,332.756 808 | -285.674,0.998083,0.183572,5,31,0,289.611,0.171466,0.279507,0.00512913,374.708 809 | -286.204,0.936067,0.183572,4,31,0,287.136,0.163605,0.262613,0.00386356,320.826 810 | -287.55,0.984673,0.183572,4,31,0,288.876,0.107581,0.268031,0.00351578,373.948 811 | -288.805,0.998993,0.183572,4,15,0,289.592,0.124053,0.251498,0.00338565,412.386 812 | -288.317,0.978275,0.183572,4,15,0,290.46,0.108743,0.26125,0.00322824,377.77 813 | -289.203,0.947814,0.183572,4,15,0,290.23,0.116448,0.25975,0.0032113,410.577 814 | -289.143,0.999494,0.183572,4,15,0,289.995,0.101439,0.261774,0.00326322,382.763 815 | -291.751,0.680138,0.183572,4,15,0,296.012,0.226306,0.26932,0.0041234,344.76 816 | -291.314,1,0.183572,2,3,0,292.28,0.225821,0.270129,0.00419497,344.611 817 | -285.502,0.967541,0.183572,3,15,0,293.101,0.167061,0.270254,0.00457041,344.441 818 | -285.983,0.931346,0.183572,3,15,0,286.603,0.170375,0.270526,0.00431758,365.13 819 | -287.095,0.934444,0.183572,3,15,0,290.598,0.113613,0.277538,0.00416151,350.337 820 | -286.159,0.959388,0.183572,4,15,0,288.052,0.123684,0.27127,0.00440375,396.759 821 | -285.771,0.92701,0.183572,2,7,0,287.316,0.127905,0.272372,0.00443138,383.787 822 | -288.82,0.698833,0.183572,2,7,0,289.392,0.136992,0.283491,0.00412897,376.076 823 | -287.386,0.923196,0.183572,3,7,0,290.828,0.123418,0.273479,0.00461194,381.012 824 | -287.851,1,0.183572,4,31,0,288.726,0.174407,0.25903,0.00449587,363.252 825 | -289.258,0.997569,0.183572,4,31,0,289.521,0.145857,0.263132,0.00372189,298.226 826 | -289.089,0.962791,0.183572,4,31,0,291.53,0.142916,0.269671,0.00329885,328.612 827 | -288.292,0.995179,0.183572,4,15,0,289.847,0.147398,0.256481,0.00328238,375.761 828 | -286.449,0.969471,0.183572,3,9,0,289.44,0.142665,0.261447,0.00357818,363.679 829 | -285.766,0.965427,0.183572,4,27,0,287.6,0.132375,0.267653,0.00421642,391.542 830 | -285.184,0.998895,0.183572,4,31,0,285.991,0.155121,0.270131,0.00424954,344.864 831 | -286.679,0.978892,0.183572,4,15,0,289.693,0.129541,0.262991,0.00394405,408.509 832 | -288.217,0.972394,0.183572,3,7,0,288.623,0.138964,0.258171,0.0038941,431.559 833 | -292.452,0.816056,0.183572,3,7,0,292.525,0.132536,0.250846,0.00413799,433.943 834 | -286.498,0.994295,0.183572,4,15,0,293.406,0.122954,0.287372,0.00460974,400.726 835 | -286.13,0.998744,0.183572,3,7,0,286.808,0.12203,0.291262,0.00488506,398.005 836 | -286.934,0.98515,0.183572,4,15,0,287.928,0.177147,0.283301,0.00552521,398.825 837 | -286.365,0.930175,0.183572,4,15,0,288.031,0.120383,0.290216,0.00465909,380.639 838 | -285.393,0.944842,0.183572,3,7,0,287.214,0.139454,0.278925,0.00486863,382.65 839 | -285.837,0.999569,0.183572,3,15,0,287.024,0.180101,0.277644,0.00491172,369.779 840 | -286.755,0.951416,0.183572,2,3,0,286.84,0.175506,0.273977,0.00514079,372.749 841 | -286.965,0.995202,0.183572,4,15,0,288.247,0.148256,0.290718,0.00482371,347.161 842 | -286.371,0.99053,0.183572,4,15,0,288.265,0.130533,0.285095,0.00475414,344.183 843 | -286.136,0.884121,0.183572,4,23,0,289.033,0.140391,0.27333,0.00408935,326.586 844 | -286.192,0.985759,0.183572,4,31,0,287.337,0.16015,0.266505,0.00384285,321.44 845 | -288.303,0.993293,0.183572,5,31,0,289.18,0.123114,0.252872,0.00333451,396.461 846 | -288.462,0.824359,0.183572,2,3,0,290.462,0.127072,0.257281,0.00326348,398.395 847 | -287.707,0.993902,0.183572,4,15,0,291.816,0.213139,0.26311,0.00458406,381.611 848 | -288.01,0.972919,0.183572,4,15,0,289.437,0.218201,0.274882,0.00494128,369.839 849 | -286.854,0.997432,0.183572,3,15,0,288.55,0.194538,0.270846,0.00499128,344.68 850 | -290.447,0.966253,0.183572,4,15,0,292.301,0.231229,0.249275,0.0033216,290.922 851 | -288.817,0.983168,0.183572,2,7,0,292.754,0.215293,0.250802,0.00344251,313.053 852 | -287.144,0.998644,0.183572,5,31,0,291.047,0.11429,0.292393,0.00511367,376.35 853 | -289.843,0.731518,0.183572,4,23,0,290.602,0.144101,0.273504,0.00422993,436.7 854 | -285.209,0.989651,0.183572,4,15,0,290.75,0.140779,0.284618,0.00494986,378.304 855 | -285.957,0.95333,0.183572,4,31,0,288.147,0.140975,0.283364,0.00470579,338.254 856 | -285.823,0.991927,0.183572,3,15,0,286.598,0.176412,0.273218,0.00494185,379.173 857 | -288.169,0.855167,0.183572,5,31,0,289.113,0.146811,0.269184,0.00344874,311.809 858 | -291.962,0.977214,0.183572,4,15,0,293.383,0.266926,0.262396,0.00540413,396.312 859 | -290.664,0.996877,0.183572,2,3,0,292.239,0.260426,0.264578,0.00522552,401.007 860 | -286.445,0.996841,0.183572,4,15,0,290.952,0.207771,0.263733,0.00462779,351.846 861 | -286.109,0.995596,0.183572,3,15,0,289.121,0.162132,0.259807,0.00404565,378.025 862 | -285.523,0.990166,0.183572,3,15,0,287.19,0.161651,0.263318,0.00411975,347.592 863 | -285.603,0.979351,0.183572,4,31,0,286.794,0.147294,0.279328,0.00502736,387.021 864 | -286.186,0.992418,0.183572,3,11,0,286.713,0.145794,0.291675,0.00508396,370.187 865 | -285.696,0.978794,0.183572,5,31,0,287.532,0.123391,0.273648,0.00412366,387.152 866 | -285.603,0.966182,0.183572,4,15,0,287.207,0.141034,0.284115,0.00473716,382.481 867 | -286.906,0.961845,0.183572,3,11,0,287.736,0.138449,0.295219,0.00528529,406.856 868 | -286.561,0.992167,0.183572,2,7,0,287.676,0.138458,0.292713,0.00518116,404.985 869 | -285.382,0.994577,0.183572,4,27,0,287.228,0.16296,0.270446,0.00445478,340.18 870 | -286.646,0.874021,0.183572,4,15,0,288.203,0.180251,0.269567,0.00448055,381.822 871 | -288.332,0.929467,0.183572,2,5,0,290.152,0.19918,0.266079,0.00455559,398.159 872 | -287.947,0.99998,0.183572,4,15,0,290.327,0.171369,0.255808,0.00380108,391.743 873 | -291.126,0.997142,0.183572,4,15,0,292.538,0.271481,0.259973,0.00462453,287.353 874 | -286.88,1,0.183572,4,15,0,292.687,0.207376,0.263609,0.00474147,370.177 875 | -287.335,0.808761,0.183572,4,27,0,289.611,0.146939,0.285873,0.0044403,327.418 876 | -290.928,0.96568,0.183572,4,15,0,292.841,0.16517,0.279793,0.00458538,282.258 877 | -289.346,0.855422,0.183572,3,7,0,293.396,0.181547,0.275701,0.00468913,291.137 878 | -287.245,0.986692,0.183572,3,7,0,290.144,0.189571,0.271236,0.00414897,320.61 879 | -286.986,0.984865,0.183572,3,7,0,288.664,0.213932,0.268551,0.00464896,314.5 880 | -286.032,0.879047,0.183572,5,31,0,291.449,0.145405,0.286953,0.00530269,411.624 881 | -286.527,0.869542,0.183572,5,31,0,288.942,0.119913,0.281412,0.00438831,412.567 882 | -286.302,0.969656,0.183572,4,15,0,288.097,0.12049,0.28433,0.00459681,354.926 883 | -285.447,0.979567,0.183572,4,15,0,287.531,0.134991,0.269361,0.00421353,385.302 884 | -286.991,0.932993,0.183572,3,11,0,288.227,0.111393,0.268889,0.00377153,403.951 885 | -289.51,0.997983,0.183572,5,31,0,290.216,0.133101,0.311546,0.00631039,417.93 886 | -293.302,0.673279,0.183572,5,31,0,295.549,0.141139,0.250858,0.00210141,314.611 887 | -287.689,0.972936,0.183572,4,31,0,294.662,0.202672,0.257302,0.00454066,356.922 888 | -288.168,0.954287,0.183572,4,15,0,290.524,0.112914,0.285856,0.00440773,337.732 889 | -288.403,0.831232,0.183572,2,3,0,290.434,0.111839,0.283669,0.00455094,346.906 890 | -289.747,0.955362,0.183572,4,31,0,292.71,0.121154,0.248924,0.00322766,376.128 891 | -287.715,0.95245,0.183572,4,23,0,293.11,0.152311,0.290156,0.00524417,329.838 892 | -286.584,0.982926,0.183572,5,31,0,288.2,0.146484,0.276929,0.00404602,328.629 893 | -288.703,0.884799,0.183572,3,7,0,291.332,0.1538,0.279279,0.00429587,294.716 894 | -287.595,0.995597,0.183572,3,7,0,289.544,0.160666,0.281711,0.00449588,306.235 895 | -285.645,0.979865,0.183572,3,7,0,289.553,0.172565,0.268362,0.00442409,332.957 896 | -285.51,0.964454,0.183572,5,63,0,286.564,0.13281,0.272533,0.00442138,398.627 897 | -285.123,0.912684,0.183572,3,15,0,286.753,0.152115,0.279857,0.00480746,375.033 898 | -285.241,0.833693,0.183572,3,7,0,287.585,0.127148,0.280896,0.00461117,378.312 899 | -287.189,0.939868,0.183572,4,31,0,288.2,0.190582,0.25503,0.00365502,338.36 900 | -285.889,0.978654,0.183572,4,31,0,289.663,0.169972,0.274674,0.00501953,383.178 901 | -286.593,0.983995,0.183572,5,31,0,287.292,0.19698,0.277183,0.00473951,326.89 902 | -286.853,0.980526,0.183572,4,15,0,288.115,0.201436,0.262061,0.0045919,376.695 903 | -287.436,0.920747,0.183572,3,15,0,292.076,0.134557,0.25553,0.00346616,347.59 904 | -289.716,0.999825,0.183572,5,31,0,290.095,0.143757,0.25124,0.00288099,304.674 905 | -286.206,0.990405,0.183572,4,31,0,291.018,0.14029,0.269976,0.00458554,380.046 906 | -287.544,0.879869,0.183572,3,15,0,288.312,0.136563,0.276993,0.00402172,382.965 907 | -287.58,0.985389,0.183572,4,23,0,288.916,0.142999,0.278739,0.00513228,373.932 908 | -286.029,0.864878,0.183572,5,31,0,290.351,0.124807,0.281009,0.0045364,411.817 909 | -287.344,0.961057,0.183572,2,7,0,289.799,0.130284,0.272264,0.00479915,435.773 910 | -287.79,0.998085,0.183572,4,23,0,291.596,0.194706,0.259478,0.00440152,397.665 911 | -289.325,0.982746,0.183572,4,15,0,290.654,0.174409,0.265342,0.00391461,282.233 912 | -288.628,1,0.183572,4,15,0,290.543,0.166417,0.246391,0.00345296,390.168 913 | -288.841,0.919007,0.183572,5,31,0,291.207,0.142185,0.271252,0.00435989,446.808 914 | -287.263,0.975814,0.183572,4,31,0,290.21,0.147318,0.282069,0.00462418,315.437 915 | -285.391,0.9355,0.183572,3,15,0,288.218,0.170691,0.265648,0.00426198,353.529 916 | -285.796,0.995219,0.183572,4,15,0,286.127,0.168335,0.262005,0.00416221,369.434 917 | -288.945,0.920727,0.183572,4,15,0,290.81,0.139048,0.307304,0.00610637,388.594 918 | -286.038,0.966704,0.183572,4,15,0,289.757,0.158501,0.280355,0.00521513,380.442 919 | -286.328,0.999218,0.183572,4,15,0,286.935,0.108166,0.287433,0.00460913,408.798 920 | -287.79,0.891117,0.183572,4,31,0,289.704,0.0972756,0.281036,0.00425955,390.971 921 | -286.622,0.992295,0.183572,4,15,0,288.471,0.135426,0.263354,0.00423025,393.675 922 | -286.187,0.912981,0.183572,4,23,0,288.539,0.142523,0.271917,0.00470421,416.433 923 | -285.669,0.99972,0.183572,4,23,0,286.832,0.134334,0.286304,0.00516722,403.759 924 | -286.791,0.797932,0.183572,4,23,0,289.359,0.127277,0.268035,0.00381869,336.16 925 | -285.495,0.97934,0.183572,4,23,0,287.743,0.13986,0.279658,0.00438414,360.734 926 | -286.77,0.934857,0.183572,4,31,0,289.808,0.134174,0.261703,0.00351959,374.011 927 | -286.561,0.991041,0.183572,4,31,0,287.589,0.165625,0.264193,0.00369986,326.499 928 | -288.598,0.901211,0.183572,2,7,0,289.469,0.187101,0.264655,0.00366723,328.371 929 | -286.407,0.973769,0.183572,3,7,0,289.182,0.188932,0.256921,0.00388941,332.211 930 | -285.527,0.999963,0.183572,5,31,0,286.888,0.124422,0.274642,0.00414953,369.027 931 | -285.348,0.998851,0.183572,4,31,0,286.334,0.135817,0.284834,0.00483484,363.741 932 | -286.777,0.92877,0.183572,4,15,0,287.013,0.1326,0.286856,0.00540391,415.973 933 | -288.691,0.982745,0.183572,4,15,0,289.407,0.111946,0.293831,0.00500096,352.724 934 | -288.818,0.977752,0.183572,4,15,0,291.058,0.169272,0.274544,0.00536054,442.882 935 | -288.646,0.948857,0.183572,4,15,0,289.69,0.170206,0.277883,0.00543474,446.086 936 | -286.922,0.974273,0.183572,4,15,0,290.54,0.139191,0.292597,0.00526529,349.566 937 | -287.776,0.937452,0.183572,4,15,0,289.107,0.148138,0.293549,0.00502893,329.315 938 | -287.583,0.998346,0.183572,4,15,0,289.852,0.126451,0.266983,0.00441906,443.479 939 | -286.638,0.99814,0.183572,5,31,0,288.818,0.14227,0.296297,0.00532111,367.807 940 | -286.749,0.988773,0.183572,4,23,0,288.749,0.170651,0.252623,0.00378638,362.947 941 | -287.082,0.802651,0.183572,3,15,0,290.42,0.195329,0.25593,0.00377096,339.889 942 | -287.198,0.934019,0.183572,3,15,0,290.559,0.145768,0.271394,0.00372064,314.689 943 | -287.912,0.994128,0.183572,4,15,0,289.298,0.189183,0.247883,0.00369977,369.889 944 | -287.133,0.99069,0.183572,4,15,0,289.659,0.195089,0.256619,0.00374134,312.307 945 | -287.414,0.957373,0.183572,4,15,0,288.358,0.204203,0.256773,0.00391527,348.795 946 | -287.533,0.986893,0.183572,2,3,0,287.965,0.209132,0.255913,0.00392305,347.125 947 | -286.927,0.996502,0.183572,4,31,0,290.633,0.121539,0.260942,0.00358052,376.393 948 | -285.164,0.998836,0.183572,3,15,0,288.772,0.160144,0.271381,0.00433306,345.493 949 | -285.168,0.9998,0.183572,4,15,0,285.272,0.152862,0.274178,0.00443861,343.882 950 | -285.734,0.986266,0.183572,5,31,0,287.024,0.139184,0.288932,0.00500333,359.316 951 | -287.482,0.932175,0.183572,4,31,0,290.127,0.22337,0.274916,0.00481289,324.046 952 | -286.246,0.993918,0.183572,4,15,0,288.253,0.192625,0.26326,0.0040932,328.02 953 | -285.559,0.984732,0.183572,5,31,0,287.292,0.178093,0.267184,0.00455302,363.266 954 | -285.484,0.986506,0.183572,4,15,0,286.446,0.144809,0.267371,0.0039501,356.83 955 | -286.483,0.970388,0.183572,5,31,0,286.765,0.185581,0.27127,0.00479814,330.648 956 | -288.321,0.988556,0.183572,3,15,0,289.575,0.231478,0.27565,0.00478517,319.271 957 | -286.345,0.984954,0.183572,3,15,0,290.89,0.163505,0.271063,0.00478105,352.736 958 | -285.592,0.95941,0.183572,4,23,0,288.143,0.148087,0.280856,0.00459771,373.066 959 | -285.863,0.958784,0.183572,2,3,0,286.421,0.147947,0.280821,0.004589,379.872 960 | -285.277,0.984919,0.183572,3,15,0,286.479,0.129966,0.27733,0.00451226,370.576 961 | -286.378,0.972968,0.183572,5,31,0,287.689,0.159839,0.271123,0.00402262,315.38 962 | -285.706,0.999923,0.183572,4,15,0,286.537,0.179568,0.26396,0.00426471,357.196 963 | -286.659,0.969894,0.183572,3,7,0,286.914,0.200719,0.259646,0.00421601,357.854 964 | -287.331,0.980782,0.183572,3,7,0,287.773,0.215414,0.25876,0.00426465,358.675 965 | -286.268,0.995262,0.183572,4,15,0,287.79,0.13971,0.279022,0.00450763,330.632 966 | -290.052,0.967832,0.183572,4,31,0,291.951,0.297521,0.256566,0.00470869,336.694 967 | -285.696,0.966903,0.183572,4,15,0,293.195,0.169754,0.264667,0.00402996,345.795 968 | -286.152,0.996386,0.183572,4,31,0,288.644,0.166158,0.281256,0.00510882,398.313 969 | -287.486,0.993141,0.183572,4,15,0,288.601,0.171649,0.256284,0.00338903,310.637 970 | -287.096,0.965972,0.183572,4,31,0,290.884,0.107476,0.281918,0.00428033,424.467 971 | -286.145,0.877327,0.183572,3,7,0,288.895,0.111753,0.281377,0.00447339,416.034 972 | -285.669,0.992747,0.183572,4,31,0,287.455,0.154654,0.280386,0.00475977,337.003 973 | -286.531,0.914052,0.183572,4,15,0,287.334,0.163581,0.259757,0.00387227,375.367 974 | -286.109,0.95164,0.183572,2,3,0,287.361,0.156155,0.258168,0.00392476,370.996 975 | -286.391,0.963166,0.183572,4,15,0,287.127,0.150759,0.268939,0.00376291,334.75 976 | -286.12,0.954336,0.183572,4,23,0,287.694,0.147208,0.280591,0.00516568,387.265 977 | -285.262,0.962653,0.183572,2,7,0,286.729,0.149593,0.281706,0.00501144,377.072 978 | -285.17,0.958349,0.183572,4,31,0,285.857,0.163502,0.274964,0.0047475,357.52 979 | -286.823,0.726106,0.183572,2,3,0,287.829,0.155208,0.272503,0.00477006,347.229 980 | -289.707,0.678013,0.183572,3,7,0,290.628,0.18582,0.27564,0.00436397,376.265 981 | -288.694,0.956209,0.183572,3,15,0,291.758,0.117134,0.270781,0.00436635,368.492 982 | -287.675,0.99962,0.183572,3,15,0,289.517,0.152815,0.277543,0.00490174,332.82 983 | -285.881,1,0.183572,4,15,0,288.095,0.191707,0.273842,0.00487771,341.81 984 | -286.355,0.989543,0.183572,4,15,0,287.916,0.171423,0.266709,0.00457353,397.229 985 | -285.802,0.965508,0.183572,4,15,0,287.568,0.147206,0.266232,0.00439971,386.011 986 | -286.558,0.952814,0.183572,3,15,0,287.645,0.165533,0.265112,0.00448589,404.271 987 | -285.712,0.979744,0.183572,4,15,0,287.72,0.135145,0.275365,0.00447157,404.851 988 | -285.914,0.991792,0.183572,2,3,0,286.074,0.132958,0.272779,0.00460897,409.264 989 | -286.074,0.991094,0.183572,4,23,0,288.118,0.185907,0.262064,0.00411422,349.712 990 | -285.174,0.998573,0.183572,3,11,0,286.362,0.15122,0.271781,0.00432953,345.373 991 | -285.141,0.865866,0.183572,3,15,0,287.588,0.144271,0.277271,0.00456351,379.489 992 | -285.073,0.993117,0.183572,4,23,0,285.365,0.15956,0.274597,0.00452926,350.767 993 | -285.493,0.98589,0.183572,4,15,0,286.698,0.170484,0.278978,0.00476066,344.155 994 | -285.676,0.989564,0.183572,5,31,0,285.9,0.170212,0.278152,0.00503191,355.505 995 | -286.073,0.989815,0.183572,3,11,0,287.548,0.180242,0.27782,0.00514929,357.015 996 | -286.311,0.954094,0.183572,4,19,0,286.952,0.13194,0.269883,0.00374247,362.934 997 | -286.832,0.994643,0.183572,4,31,0,287.676,0.199445,0.270263,0.00505154,359.609 998 | -287.221,0.95412,0.183572,4,27,0,288.362,0.181528,0.267317,0.00443216,309.813 999 | -287.357,0.883334,0.183572,4,31,0,290.818,0.13657,0.280617,0.00506472,366.89 1000 | -285.117,0.997059,0.183572,2,7,0,287.982,0.134204,0.281714,0.00469102,372.5 1001 | -285.637,0.994951,0.183572,4,31,0,286.085,0.142282,0.263769,0.00389196,360.072 1002 | -287.2,0.951447,0.183572,4,31,0,288.065,0.208866,0.254351,0.00385192,328.49 1003 | -286.222,0.9763,0.183572,5,31,0,289.107,0.142602,0.279608,0.00489283,422.524 1004 | -285.702,0.990678,0.183572,5,31,0,286.827,0.151714,0.280925,0.00451135,342.183 1005 | -286.05,0.971922,0.183572,4,31,0,288.252,0.122397,0.27352,0.00404489,353.229 1006 | -287.4,0.951139,0.183572,3,7,0,287.807,0.123518,0.279898,0.00388211,337.188 1007 | -287.191,0.996106,0.183572,4,15,0,288.501,0.165521,0.253291,0.00375126,382.882 1008 | -285.827,0.996218,0.183572,4,15,0,288.815,0.143025,0.262714,0.00405407,372.586 1009 | -286.796,0.997642,0.183572,4,15,0,287.423,0.145376,0.264682,0.00433065,419.599 1010 | -286.987,0.959423,0.183572,3,7,0,287.802,0.14366,0.261674,0.00410805,415.941 1011 | -287.74,0.998431,0.183572,4,15,0,288.815,0.128032,0.2564,0.00357581,408.755 1012 | -286.069,0.960582,0.183572,5,31,0,290.669,0.19382,0.26507,0.00457975,343.999 1013 | -286.861,0.854376,0.183572,3,15,0,288.22,0.187616,0.263019,0.00466379,357.798 1014 | -287.493,0.945717,0.183572,2,7,0,288.866,0.206282,0.262536,0.00448386,381.007 1015 | -288.809,0.955575,0.183572,4,15,0,290.382,0.198649,0.271783,0.0048371,302.71 1016 | -290.311,0.729813,0.183572,4,15,0,293.625,0.262226,0.270776,0.00457842,314.241 1017 | -289.628,0.997371,0.183572,4,15,0,291.814,0.216602,0.270491,0.00488944,297.211 1018 | -288.382,1,0.183572,2,3,0,289.647,0.226937,0.27285,0.00460367,301.173 1019 | -286.543,0.997106,0.183572,4,15,0,290.481,0.183688,0.271984,0.00483855,392.665 1020 | -286.209,1,0.183572,2,3,0,286.566,0.175409,0.270977,0.00493316,387.281 1021 | -285.034,0.996406,0.183572,3,15,0,287.594,0.153641,0.27353,0.0044905,367.14 1022 | -285.436,0.97018,0.183572,3,15,0,285.875,0.153364,0.271378,0.00454794,353.48 1023 | -285.917,0.962176,0.183572,4,31,0,286.598,0.1236,0.278203,0.00460319,374.292 1024 | -287.673,0.8493,0.183572,4,19,0,288.388,0.129415,0.280619,0.00401178,374.143 1025 | -285.395,0.926675,0.183572,3,15,0,291.801,0.135569,0.284464,0.00467063,367.11 1026 | -286.026,0.997935,0.183572,4,15,0,286.78,0.157299,0.285122,0.00481671,337.95 1027 | -286.07,0.980938,0.183572,4,15,0,287.225,0.184992,0.26809,0.00452193,371.32 1028 | -285.125,0.998871,0.183572,3,15,0,286.584,0.146665,0.270823,0.00437373,374.69 1029 | -286.301,0.965599,0.183572,4,31,0,287.146,0.14188,0.290601,0.00525844,411.082 1030 | -285.361,0.949201,0.183572,4,15,0,288.237,0.132607,0.277753,0.00462974,400.101 1031 | -286.583,0.936561,0.183572,4,31,0,287.642,0.143159,0.259468,0.00406152,383.537 1032 | -285.726,0.998554,0.183572,4,31,0,287.04,0.12902,0.277804,0.00470423,379.521 1033 | -286.915,0.855644,0.183572,2,7,0,288.752,0.123255,0.284907,0.00426213,375.479 1034 | -286.124,0.993443,0.183572,3,7,0,287.803,0.132292,0.27968,0.00416706,360.072 1035 | -286.252,0.979688,0.183572,4,19,0,287.543,0.118064,0.282139,0.0047034,375.254 1036 | -286.755,1,0.183572,4,31,0,288.826,0.139838,0.281796,0.00420743,334.081 1037 | -285.663,0.999239,0.183572,3,15,0,287.48,0.146708,0.266155,0.00384686,345.572 1038 | -285.821,0.989423,0.183572,4,31,0,286.299,0.148631,0.28778,0.00512989,391.812 1039 | -286.859,0.995433,0.183572,5,31,0,288.3,0.14847,0.257363,0.00354295,372.868 1040 | -290.877,0.998601,0.183572,4,31,0,292.724,0.169723,0.23673,0.00250325,334.74 1041 | -292.942,0.842778,0.183572,4,15,0,295.94,0.145323,0.24713,0.00226713,352.325 1042 | -290.945,0.982347,0.183572,3,11,0,294.285,0.154134,0.245679,0.00246932,338.498 1043 | -287.638,0.977545,0.183572,5,31,0,292.557,0.114542,0.288968,0.00537119,435.695 1044 | # 1045 | # Elapsed Time: 0.204412 seconds (Warm-up) 1046 | # 0.19322 seconds (Sampling) 1047 | # 0.397632 seconds (Total) 1048 | # 1049 | --------------------------------------------------------------------------------