Package: pyda
###############################################################################################################################################################   Copyright 2014 Kyle S. Hickmann and#                  The Administrators of the Tulane Educational Fund##   Licensed under the Apache License, Version 2.0 (the "License");#   you may not use this file except in compliance with the License.#   You may obtain a copy of the License at##       http://www.apache.org/licenses/LICENSE-2.0##   Unless required by applicable law or agreed to in writing, software#   distributed under the License is distributed on an "AS IS" BASIS,#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.#   See the License for the specific language governing permissions and#   limitations under the License.##############################################################################################################################################################pyda separates ensemble generation and filtering/analysis intoseparate class objects. These are then used together in anassimilation class object. This allows the user to code the ensemblegeneration, assimilation, and filtering/analysis stepsseparately. Allowing concentration on the element of the assimilationprocess they are interested in refining. This also allows a user tocode up their particular ensemble generation method and use theassimilation and filtering classes we have provided to perform theassimilation. If you have written a time-dependent simulation inpython then pyda will handle the data assimilation problem. There isminimal support for visualization and assimilation evaluation as well.This package includes:- Classes to generate an ensemble of runs from a simulation- Classes to perform various flavors of Ensemble Kalman filtering- Classes to perform various particle filtering and sequentialmonte carlo filtering- Classes to control interaction between ensemble generation, data,and analysis for data assimilation- Multiple examples to experiment with data assimilation- Functions to visualize data assimilation process occurring in the exmples- Functions to evaluate effectiveness of data assimilation process##########################################################################################Non-Standard Packages Used:Numpy and Matplotlib#############################################QUICK START:Just run>> python setup.py installThen, from the examples directory, try>> python SIR_enkf1.pyDirectory Structure:pyda1.0/MANIFEST.inLICENSEREADMEsetup.pyez_setup.pyexamples/SIR_enkf1.py:data/:figures/:pyda/__init__.pyanalysis_generator/__init__.pyanalysis_generator_class.py:kf/__init__.pyenkf1.py:pf/__init__.py:assimilation/__init__.pyassimilation_current.pydata_assimilation_class.py:ensemble_generator/__init__.pyensemble_generator_class.pySIRensemble.py:utilities/__init__.pyepiODElib.py:Description:------------examples directory:SIR_enkf1.py, an implementation of ensemble Kalman Filterdata assimilation using pyda. This serves as a basic exampleof how the pyda classes are used together with a simulation.pyda directory:This contains class files and helper module files in theutilities directory.analysis_generator:Here classes are defined to implement data assimilationfilters. The analysis classes are meant to be derived all fromthe AnalysisGeneratorClass defined inanalysis_generator_class.py. Data assimilation filters aredivided into Kalman Filter type and Particle Filter type.kf:An example of an Ensemble Kalman filter analysis class isdefined in enkf1.py. Other variants of Kalman filters are tobe included here.pf:Variants of particle filter and sequential monte carloanalysis schemes are meant to be included here.assimilation:Beyond generating ensembles and producing filtered analysisensembles data assimilation must control exactly how theseschemes interact with data. In this directory classes thathandle this are included. All data assimilation classes aremeant to be derived from the DataAssimilationClass defined indata_assimilation_class.py. DA_current defined inassimilation_current.py is an example of such a class.ensemble_generator:The user must already have software for simulation in place touse pyda. If this is the case then an ensemble generator classwill control how the simulation produces forecasts. Classesare all derived from EnsembleGeneratorClass which is definedin ensemble_generator_class.py. SIRensemble.py defines aspecific class to call on SIR epidemic simulation defined inthe epiODElib.py module under utilities/.utilities:This is a directory of helper modules. Currently this containsepiODEli.py which implements Runge-Kutta solvers for severaldifferential equation based epidemic models. This directoryalso contains a basic visualization module AssimilationVis.pywhich uses matplotlib to visualize ensemble and analysissolutions.