Commit a6146241 authored by Chris Jewell's avatar Chris Jewell
Browse files

Productionised and web-automated pipeline

CHANGES:

1. Introduced default unit traffic flow;
2. Removed old test data from data directory.  This now contains real static data only.
3. Brought README.md up to date.
4. Removed extraneous files from root project directory.
parent 6388c3c2
*~
__pycache__
poetry.lock
.ruffus_history.sqlite
# covid19uk: Bayesian stochastic spatial modelling for COVID-19 in the UK
## Files
This Python package implements a spatial stochastic SEIR model for COVID-19 in the UK,
using Local Authority District level positive test data, population data, and mobility
information. Details of the model implementation may be found in `doc/lancs_space_model_concept.pdf`.
* `covid` Python package
* `model_spec.py` defines the CovidUK model using `tfp.JointDistributionNamed`, plus helper functions
* `inference.py` demonstrates MCMC model fitting the model
* `simulate.py` demontrates simulating from the model
* `example_config.yaml` example configuration file containing data paths and MCMC settings
* `data` a directory containing example data (see below)
* `environment.yaml` conda description of the required environment. Create with `conda create -f environment.yaml`
8 `summary.py` python script to summarise MCMC results into a Geopkg file.
## Example data files
* `data/example_cases.csv` a file containing example case data for 43 local authorities in England collected and present of PHE's [website](https://coronavirus.data.gov.uk)
* `data/example_population.csv` a file containing local authority population data in the UK, taken from ONS prediction for December 2019
* `data/example_mobility.csv` inter local authority mobility matrix taken from UK Census 2011 commuting data
* `data/example_traffic_flow` a relative measure of traffic flow taken from mobility metrics from providers such as Google and Facebook. Data have been smoothed to represent a summary of the original data.
## Example workflow
## Workflow
The entire analysis chain, from case data through parameter inference and predictive
simulation to results summarised as long-format XLSX and geopackage documents.
The pipeline is run using the [`ruffus`](http://ruffus.org.uk) computational pipeline library.
The library relies heavily on [TensorFlow](https://tensorflow.org) and
[TensorFlow Probability](https://tensorflow.org/probability) machine learning libraries, and is
optimised for GPU acceleration (tested on NVIDIA K40 and V100 cards). This package also imports
an experimental library [`gemlib`](http://fhm-chicas-code.lancs.ac.uk/GEM/gemlib) hosted at Lancaster University.
This library is under active development as part of the [Wellcome Trust](https://wellcome.ac.uk) `GEM` project.
The pipeline gathers data from [the official UK Government website for data and insights on Coronavirus]
(https://coronavirus.data.gov.uk), together with population and mobility data taken from the [UK
Office for National Statistics Open Geography Portal](https://geoportal.statistics.gov.uk).
### Quickstart
```bash
$ conda env create --prefix=./env -f environment.txt
$ conda activate ./env
$ python inference.py
$ python summary.py
$ poetry install # Python dependencies
$ python -m covid.pipeline --config example_config.yaml --results-dir <output_dir>
```
The global pipeline configuration file `example_config.yaml` contains sections for pipeline
stages where required. See file for documentation.
### Model specification
The `covid.model_spec` module contains the model specified as a `tensorflow_probability.distributions.JointDistributionNamed`
instance `Covid19UK`. This module also contains a model version number, and constants such as the stoichiometry matrix
characterising the state transition model, an accompanying next generation matrix function, a function to assemble data
specific to the model, and a function to initialise censored event data explored by the MCMC inference algorithm.
### Pipeline stages
Each pipeline stage loads input and saves output to disc. This is inherent to the `ruffus` pipeline
architecture, and provides the possibility to run different stages of the pipeline manually, as well as
introspection of data passed between each stage.
1. Data assembly: `covid.tasks.assemble_data` downloads or loads data from various sources, clips
to the desired date range require needed, and bundles into a pickled Python dictionary `<output_dir>/pipeline_data.pkl`.
2. Inference: `covid.tasks.mcmc` runs the data augmentation MCMC algorithm described in the concept note, producing
a (large!) HDF5 file containing draws from the joint posterior distribution `posterior.hd5`.
3. Sample thinning: `covid.tasks.thin_posterior` further thins the posterior draws contained in the HDF5 file into a (much
smaller) pickled Python dictionary `<output_dir>/thin_samples.pkl`
4. Next generation matrix: `covid.tasks.next_generation_matrix` computes the posterior next generation matrix for the
epidemic, from which measures of Local Authority District level and National-level reproduction number can be derived.
This posterior is saved in `<output_dir>/ngm.pkl`.
5. National Rt: `covid.tasks.overall_rt` evaluates the dominant eigenvalue of the next generation matrix samples using
power iteration and Rayleigh Quotient method. The dominant eigenvalue of the inter-LAD next generation matrix gives the
national reproduction number estimate.
6. Prediction: `covid.tasks.predict` calculates the Bayesian predictive distribution of the epidemic given the observed
data and joint posterior distribution. This is used in two ways:
a. in-sample predictions are made for the latest 7 and 14 day time intervals in the observed data time window. These
are saved as `<output_dir>/insample7.pkl` and `<output_dir>/insample14.pkl` `xarray` data structures.
b. medium-term predictions are made by simulating forward 56 days from the last+1 day of the observed data time window. These is saved as `<output_dir>/medium_term.pkl` `xarray` data structure.
7. Summary output:
a. LAD-level reproduction number: `covid.tasks.summarize.rt` takes the column sums of the next generation matrix as the
LAD-level reproduction number. This is saved in `<output_dir>/rt_summary.csv`.
b. Incidence summary: `covid.tasks.summarize.infec_incidence` calculates mean and quantile information for the medium term prediction, `<output_dir>/infec_incidence_summary.csv`.
c. Prevalence summary: `covid.tasks.summarize.prevalence` calculated the predicted prevalence of COVID-19 infection
(model E+I compartments) at LAD level, `<output_dir>/prevalence_summary.csv`.
d. Population attributable risk fraction for infection: `covid.tasks.within_between` calculates the population
attributable fraction of within-LAD versus between-LAD infection risk, `<output_dir>/within_between_summary.csv`.
e. Case exceedance: `covid.tasks.case_exceedance` calculates the probability that observed cases in the last 7 and 14
days of the observed timeseries exceeding the predictive distribution. This highlights regions that are behaving
atypically given the model, `<output_dir>/exceedance_summary.csv`.
8. In-sample predictive plots: `covid.tasks.insample_predictive_timeseries` plots graphs of the in-sample predictive
distribution for the last 7 and 14 days within the observed data time window, `<output_dir>/insample_plots7` and
`<output_dir>/insample_plots14`.
9. Geopackage summary: `covid.tasks.summary_geopackage` assembles summary information into a `geopackage` GIS file,
`<output_dir>/prediction.pkg`.
10. Long format summary: `covid.tasks.summary_longformat` assembles reproduction number, observed data, in-sample, and medium-term
predictive incidence and prevalence (per 100000 people) into a long-format XLSX file.
## COVID-19 Lancaster University data statement
......@@ -40,3 +103,17 @@ UTLA: Upper Tier Local Authority
LAD: Local Authority District
### Files
* `covid` Python package
* `example_config.yaml` example configuration file containing data paths and MCMC settings
* `data` a directory containing example data (see below)
* `pyproject.py` a PEP518-compliant file describing the `poetry` build system and dependencies.
## Example data files
* `data/example_cases.csv` a file containing example case data for 43 local authorities in England collected and present of PHE's [website](https://coronavirus.data.gov.uk)
* `data/c2019modagepop.csv` a file containing local authority population data in the UK, taken from ONS prediction for December 2019. Local authorities [City of Westminster, City of London] and [Cornwall, Isles of Scilly] have been aggregated to meet commute data processing requirements.
* `data/mergedflows.csv` inter local authority mobility matrix taken from UK Census 2011 commuting data and aggregated up from Middle Super Output Area level (respecting aggregated LADs as above).
* `data/UK2019mod_pop.gpkg` a geopackage containing UK Local Authority Districts (2019) polygons together with population and areal metrics.
......@@ -56,6 +56,12 @@ def read_traffic_flow(
:param path: path to a traffic flow CSV with <date>,<Car> columns
:returns: a Pandas timeseries
"""
if path is None:
dates = np.arange(date_low, date_high, np.timedelta64(1, "D"))
return pd.DataFrame(np.ones(dates.shape[0], np.float64),
index=dates,
columns=["percent"])
commute_raw = pd.read_excel(
path, index_col="Date", skiprows=5, usecols=["Date", "Cars"]
)
......
......@@ -11,7 +11,7 @@ import covid.data as data
tfd = tfp.distributions
VERSION = 0.3
VERSION = 0.5.0
DTYPE = np.float64
STOICHIOMETRY = np.array([[-1, 1, 0, 0], [0, -1, 1, 0], [0, 0, -1, 1]])
......
#!/bin/bash
#$ -clear
#$ -jsv /usr/shared_apps/packages/sge-8.1.9-gpu/default/common/sge_request.jsv.2.0b
#$ -S /bin/bash
#$ -P chicas
#$ -q gpu
#$ -l ngpus=1
# -l ncpus=4
#$ -l h_vmem=64G
#$ -l h_rt=12:00:00
#$ -j y
#$ -cwd
. /etc/profile
. $HOME/.bash_profile
module add cuda/11.0
export XLA_FLAGS="--xla_gpu_cuda_data_dir=$CUDA_HOME"
echo Args: "$@"
poetry run python -m covid.pipeline "$@"
lad19cd,date,cases
E06000006,2020-06-16,0.0
E06000007,2020-06-16,4.0
E06000008,2020-06-16,2.0
E06000009,2020-06-16,3.0
E06000049,2020-06-16,19.0
E06000050,2020-06-16,8.0
E07000027,2020-06-16,1.0
E07000029,2020-06-16,0.0
E07000031,2020-06-16,1.0
E07000037,2020-06-16,1.0
E07000117,2020-06-16,5.0
E07000118,2020-06-16,3.0
E07000119,2020-06-16,2.0
E07000120,2020-06-16,1.0
E07000121,2020-06-16,0.0
E07000122,2020-06-16,6.0
E07000123,2020-06-16,8.0
E07000124,2020-06-16,0.0
E07000125,2020-06-16,1.0
E07000126,2020-06-16,1.0
E07000127,2020-06-16,1.0
E07000128,2020-06-16,0.0
E07000163,2020-06-16,2.0
E07000165,2020-06-16,9.0
E07000166,2020-06-16,0.0
E08000001,2020-06-16,4.0
E08000002,2020-06-16,11.0
E08000003,2020-06-16,24.0
E08000004,2020-06-16,36.0
E08000005,2020-06-16,14.0
E08000006,2020-06-16,3.0
E08000007,2020-06-16,0.0
E08000008,2020-06-16,11.0
E08000009,2020-06-16,1.0
E08000010,2020-06-16,6.0
E08000011,2020-06-16,1.0
E08000012,2020-06-16,3.0
E08000013,2020-06-16,1.0
E08000014,2020-06-16,3.0
E08000015,2020-06-16,4.0
E08000032,2020-06-16,56.0
E08000033,2020-06-16,7.0
E08000034,2020-06-16,17.0
E06000006,2020-06-17,0.0
E06000007,2020-06-17,2.0
E06000008,2020-06-17,4.0
E06000009,2020-06-17,2.0
E06000049,2020-06-17,9.0
E06000050,2020-06-17,5.0
E07000027,2020-06-17,1.0
E07000029,2020-06-17,0.0
E07000031,2020-06-17,1.0
E07000037,2020-06-17,0.0
E07000117,2020-06-17,1.0
E07000118,2020-06-17,0.0
E07000119,2020-06-17,3.0
E07000120,2020-06-17,2.0
E07000121,2020-06-17,1.0
E07000122,2020-06-17,1.0
E07000123,2020-06-17,5.0
E07000124,2020-06-17,0.0
E07000125,2020-06-17,1.0
E07000126,2020-06-17,4.0
E07000127,2020-06-17,1.0
E07000128,2020-06-17,3.0
E07000163,2020-06-17,3.0
E07000165,2020-06-17,7.0
E07000166,2020-06-17,0.0
E08000001,2020-06-17,5.0
E08000002,2020-06-17,5.0
E08000003,2020-06-17,21.0
E08000004,2020-06-17,9.0
E08000005,2020-06-17,9.0
E08000006,2020-06-17,5.0
E08000007,2020-06-17,0.0
E08000008,2020-06-17,6.0
E08000009,2020-06-17,4.0
E08000010,2020-06-17,1.0
E08000011,2020-06-17,1.0
E08000012,2020-06-17,7.0
E08000013,2020-06-17,0.0
E08000014,2020-06-17,8.0
E08000015,2020-06-17,13.0
E08000032,2020-06-17,43.0
E08000033,2020-06-17,1.0
E08000034,2020-06-17,17.0
E06000006,2020-06-18,4.0
E06000007,2020-06-18,6.0
E06000008,2020-06-18,12.0
E06000009,2020-06-18,3.0
E06000049,2020-06-18,6.0
E06000050,2020-06-18,11.0
E07000027,2020-06-18,0.0
E07000029,2020-06-18,1.0
E07000031,2020-06-18,1.0
E07000037,2020-06-18,4.0
E07000117,2020-06-18,5.0
E07000118,2020-06-18,6.0
E07000119,2020-06-18,0.0
E07000120,2020-06-18,2.0
E07000121,2020-06-18,3.0
E07000122,2020-06-18,10.0
E07000123,2020-06-18,5.0
E07000124,2020-06-18,0.0
E07000125,2020-06-18,0.0
E07000126,2020-06-18,2.0
E07000127,2020-06-18,1.0
E07000128,2020-06-18,1.0
E07000163,2020-06-18,4.0
E07000165,2020-06-18,7.0
E07000166,2020-06-18,0.0
E08000001,2020-06-18,7.0
E08000002,2020-06-18,4.0
E08000003,2020-06-18,18.0
E08000004,2020-06-18,18.0
E08000005,2020-06-18,27.0
E08000006,2020-06-18,3.0
E08000007,2020-06-18,12.0
E08000008,2020-06-18,30.0
E08000009,2020-06-18,5.0
E08000010,2020-06-18,1.0
E08000011,2020-06-18,0.0
E08000012,2020-06-18,6.0
E08000013,2020-06-18,4.0
E08000014,2020-06-18,1.0
E08000015,2020-06-18,21.0
E08000032,2020-06-18,107.0
E08000033,2020-06-18,5.0
E08000034,2020-06-18,41.0
E06000006,2020-06-19,0.0
E06000007,2020-06-19,3.0
E06000008,2020-06-19,6.0
E06000009,2020-06-19,2.0
E06000049,2020-06-19,9.0
E06000050,2020-06-19,8.0
E07000027,2020-06-19,2.0
E07000029,2020-06-19,0.0
E07000031,2020-06-19,0.0
E07000037,2020-06-19,1.0
E07000117,2020-06-19,5.0
E07000118,2020-06-19,3.0
E07000119,2020-06-19,0.0
E07000120,2020-06-19,1.0
E07000121,2020-06-19,0.0
E07000122,2020-06-19,8.0
E07000123,2020-06-19,13.0
E07000124,2020-06-19,0.0
E07000125,2020-06-19,0.0
E07000126,2020-06-19,3.0
E07000127,2020-06-19,1.0
E07000128,2020-06-19,6.0
E07000163,2020-06-19,0.0
E07000165,2020-06-19,9.0
E07000166,2020-06-19,1.0
E08000001,2020-06-19,13.0
E08000002,2020-06-19,2.0
E08000003,2020-06-19,25.0
E08000004,2020-06-19,17.0
E08000005,2020-06-19,13.0
E08000006,2020-06-19,5.0
E08000007,2020-06-19,5.0
E08000008,2020-06-19,12.0
E08000009,2020-06-19,9.0
E08000010,2020-06-19,7.0
E08000011,2020-06-19,3.0
E08000012,2020-06-19,4.0
E08000013,2020-06-19,2.0
E08000014,2020-06-19,4.0
E08000015,2020-06-19,5.0
E08000032,2020-06-19,62.0
E08000033,2020-06-19,7.0
E08000034,2020-06-19,17.0
E06000006,2020-06-20,3.0
E06000007,2020-06-20,4.0
E06000008,2020-06-20,10.0
E06000009,2020-06-20,1.0
E06000049,2020-06-20,11.0
E06000050,2020-06-20,2.0
E07000027,2020-06-20,0.0
E07000029,2020-06-20,0.0
E07000031,2020-06-20,1.0
E07000037,2020-06-20,1.0
E07000117,2020-06-20,1.0
E07000118,2020-06-20,2.0
E07000119,2020-06-20,1.0
E07000120,2020-06-20,1.0
E07000121,2020-06-20,0.0
E07000122,2020-06-20,5.0
E07000123,2020-06-20,13.0
E07000124,2020-06-20,2.0
E07000125,2020-06-20,0.0
E07000126,2020-06-20,0.0
E07000127,2020-06-20,2.0
E07000128,2020-06-20,4.0
E07000163,2020-06-20,3.0
E07000165,2020-06-20,3.0
E07000166,2020-06-20,2.0
E08000001,2020-06-20,3.0
E08000002,2020-06-20,3.0
E08000003,2020-06-20,15.0
E08000004,2020-06-20,9.0
E08000005,2020-06-20,20.0
E08000006,2020-06-20,6.0
E08000007,2020-06-20,8.0
E08000008,2020-06-20,10.0
E08000009,2020-06-20,3.0
E08000010,2020-06-20,5.0
E08000011,2020-06-20,1.0
E08000012,2020-06-20,3.0
E08000013,2020-06-20,2.0
E08000014,2020-06-20,5.0
E08000015,2020-06-20,7.0
E08000032,2020-06-20,54.0
E08000033,2020-06-20,4.0
E08000034,2020-06-20,22.0
E06000006,2020-06-21,1.0
E06000007,2020-06-21,2.0
E06000008,2020-06-21,8.0
E06000009,2020-06-21,5.0
E06000049,2020-06-21,8.0
E06000050,2020-06-21,6.0
E07000027,2020-06-21,2.0
E07000029,2020-06-21,0.0
E07000031,2020-06-21,1.0
E07000037,2020-06-21,1.0
E07000117,2020-06-21,2.0
E07000118,2020-06-21,1.0
E07000119,2020-06-21,0.0
E07000120,2020-06-21,1.0
E07000121,2020-06-21,3.0
E07000122,2020-06-21,6.0
E07000123,2020-06-21,5.0
E07000124,2020-06-21,2.0
E07000125,2020-06-21,0.0
E07000126,2020-06-21,1.0
E07000127,2020-06-21,1.0
E07000128,2020-06-21,2.0
E07000163,2020-06-21,0.0
E07000165,2020-06-21,1.0
E07000166,2020-06-21,0.0
E08000001,2020-06-21,5.0
E08000002,2020-06-21,2.0
E08000003,2020-06-21,17.0
E08000004,2020-06-21,21.0
E08000005,2020-06-21,28.0
E08000006,2020-06-21,4.0
E08000007,2020-06-21,7.0
E08000008,2020-06-21,8.0
E08000009,2020-06-21,1.0
E08000010,2020-06-21,1.0
E08000011,2020-06-21,1.0
E08000012,2020-06-21,7.0
E08000013,2020-06-21,2.0
E08000014,2020-06-21,3.0
E08000015,2020-06-21,4.0
E08000032,2020-06-21,56.0
E08000033,2020-06-21,1.0
E08000034,2020-06-21,18.0
E06000006,2020-06-22,0.0
E06000007,2020-06-22,4.0
E06000008,2020-06-22,5.0
E06000009,2020-06-22,1.0
E06000049,2020-06-22,6.0
E06000050,2020-06-22,3.0
E07000027,2020-06-22,0.0
E07000029,2020-06-22,1.0
E07000031,2020-06-22,1.0
E07000037,2020-06-22,2.0
E07000117,2020-06-22,2.0
E07000118,2020-06-22,0.0
E07000119,2020-06-22,1.0
E07000120,2020-06-22,0.0
E07000121,2020-06-22,0.0
E07000122,2020-06-22,8.0
E07000123,2020-06-22,6.0
E07000124,2020-06-22,2.0
E07000125,2020-06-22,1.0
E07000126,2020-06-22,3.0
E07000127,2020-06-22,0.0
E07000128,2020-06-22,0.0
E07000163,2020-06-22,0.0
E07000165,2020-06-22,8.0
E07000166,2020-06-22,1.0
E08000001,2020-06-22,12.0
E08000002,2020-06-22,2.0
E08000003,2020-06-22,11.0
E08000004,2020-06-22,13.0
E08000005,2020-06-22,18.0
E08000006,2020-06-22,4.0
E08000007,2020-06-22,4.0
E08000008,2020-06-22,7.0
E08000009,2020-06-22,3.0
E08000010,2020-06-22,1.0
E08000011,2020-06-22,0.0
E08000012,2020-06-22,3.0
E08000013,2020-06-22,2.0
E08000014,2020-06-22,2.0
E08000015,2020-06-22,4.0
E08000032,2020-06-22,41.0
E08000033,2020-06-22,3.0
E08000034,2020-06-22,10.0
E06000006,2020-06-23,3.0
E06000007,2020-06-23,4.0
E06000008,2020-06-23,10.0
E06000009,2020-06-23,2.0
E06000049,2020-06-23,10.0
E06000050,2020-06-23,3.0
E07000027,2020-06-23,0.0
E07000029,2020-06-23,0.0
E07000031,2020-06-23,4.0
E07000037,2020-06-23,0.0
E07000117,2020-06-23,3.0
E07000118,2020-06-23,1.0
E07000119,2020-06-23,1.0
E07000120,2020-06-23,0.0
E07000121,2020-06-23,1.0
E07000122,2020-06-23,6.0
E07000123,2020-06-23,4.0
E07000124,2020-06-23,1.0
E07000125,2020-06-23,1.0
E07000126,2020-06-23,1.0
E07000127,2020-06-23,2.0
E07000128,2020-06-23,2.0
E07000163,2020-06-23,0.0
E07000165,2020-06-23,7.0
E07000166,2020-06-23,0.0
E08000001,2020-06-23,15.0
E08000002,2020-06-23,3.0
E08000003,2020-06-23,18.0
E08000004,2020-06-23,12.0
E08000005,2020-06-23,2.0
E08000006,2020-06-23,3.0
E08000007,2020-06-23,8.0
E08000008,2020-06-23,3.0
E08000009,2020-06-23,1.0
E08000010,2020-06-23,1.0
E08000011,2020-06-23,6.0
E08000012,2020-06-23,11.0
E08000013,2020-06-23,3.0
E08000014,2020-06-23,7.0
E08000015,2020-06-23,5.0
E08000032,2020-06-23,43.0
E08000033,2020-06-23,3.0
E08000034,2020-06-23,21.0
E06000006,2020-06-24,3.0
E06000007,2020-06-24,2.0
E06000008,2020-06-24,8.0
E06000009,2020-06-24,1.0
E06000049,2020-06-24,5.0
E06000050,2020-06-24,3.0
E07000027,2020-06-24,1.0
E07000029,2020-06-24,0.0
E07000031,2020-06-24,1.0
E07000037,2020-06-24,4.0
E07000117,2020-06-24,1.0
E07000118,2020-06-24,1.0
E07000119,2020-06-24,0.0
E07000120,2020-06-24,0.0
E07000121,2020-06-24,2.0
E07000122,2020-06-24,2.0
E07000123,2020-06-24,4.0
E07000124,2020-06-24,1.0
E07000125,2020-06-24,0.0
E07000126,2020-06-24,1.0
E07000127,2020-06-24,3.0
E07000128,2020-06-24,1.0
E07000163,2020-06-24,1.0
E07000165,2020-06-24,7.0
E07000166,2020-06-24,1.0
E08000001,2020-06-24,6.0
E08000002,2020-06-24,4.0
E08000003,2020-06-24,16.0
E08000004,2020-06-24,10.0
E08000005,2020-06-24,8.0
E08000006,2020-06-24,2.0
E08000007,2020-06-24,4.0
E08000008,2020-06-24,11.0
E08000009,2020-06-24,1.0
E08000010,2020-06-24,1.0
E08000011,2020-06-24,6.0
E08000012,2020-06-24,3.0
E08000013,2020-06-24,0.0
E08000014,2020-06-24,3.0
E08000015,2020-06-24,5.0
E08000032,2020-06-24,42.0
E08000033,2020-06-24,9.0
E08000034,2020-06-24,19.0
E06000006,2020-06-25,1.0
E06000007,2020-06-25,1.0
E06000008,2020-06-25,6.0
E06000009,2020-06-25,6.0
E06000049,2020-06-25,10.0
E06000050,2020-06-25,11.0
E07000027,2020-06-25,0.0
E07000029,2020-06-25,0.0
E07000031,2020-06-25,0.0
E07000037,2020-06-25,2.0
E07000117,2020-06-25,2.0
E07000118,2020-06-25,2.0
E07000119,2020-06-25,0.0
E07000120,2020-06-25,0.0
E07000121,2020-06-25,0.0
E07000122,2020-06-25,1.0
E07000123,2020-06-25,3.0
E07000124,2020-06-25,0.0
E07000125,2020-06-25,1.0
E07000126,2020-06-25,1.0
E07000127,2020-06-25,2.0
E07000128,2020-06-25,1.0
E07000163,2020-06-25,1.0
E07000165,2020-06-25,1.0
E07000166,2020-06-25,1.0
E08000001,2020-06-25,9.0
E08000002,2020-06-25,2.0
E08000003,2020-06-25,16.0
E08000004,2020-06-25,17.0
E08000005,2020-06-25,11.0
E08000006,2020-06-25,4.0
E08000007,2020-06-25,2.0
E08000008,2020-06-25,7.0
E08000009,2020-06-25,1.0
E08000010,2020-06-25,2.0
E08000011,2020-06-25,3.0
E08000012,2020-06-25,4.0
E08000013,2020-06-25,1.0
E08000014,2020-06-25,0.0
E08000015,2020-06-25,8.0
E08000032,2020-06-25,43.0
E08000033,2020-06-25,4.0
E08000034,2020-06-25,12.0
E06000006,2020-06-26,0.0
E06000007,2020-06-26,2.0
E06000008,2020-06-26,3.0
E06000009,2020-06-26,4.0
E06000049,2020-06-26,8.0
E06000050,2020-06-26,4.0
E07000027,2020-06-26,0.0
E07000029,2020-06-26,0.0
E07000031,2020-06-26,0.0
E07000037,2020-06-26,1.0
E07000117,2020-06-26,4.0
E07000118,2020-06-26,0.0
E07000119,2020-06-26,0.0
E07000120,2020-06-26,0.0
E07000121,2020-06-26,1.0
E07000122,2020-06-26,1.0
E07000123,2020-06-26,2.0
E07000124,2020-06-26,1.0
E07000125,2020-06-26,0.0
E07000126,2020-06-26,2.0
E07000127,2020-06-26,4.0
E07000128,2020-06-26,2.0
E07000163,2020-06-26,0.0
E07000165,2020-06-26,4.0
E07000166,2020-06-26,1.0
E08000001,2020-06-26,17.0
E08000002,2020-06-26,1.0
E08000003,2020-06-26,14.0
E08000004,2020-06-26,9.0
E08000005,2020-06-26,14.0
E08000006,2020-06-26,5.0
E08000007,2020-06-26,0.0
E08000008,2020-06-26,4.0
E08000009,2020-06-26,1.0